/*
Theme Name: Portevia
Theme URI: https://portevia.org
Author: Nightframe Studio
Description: Landing page dla thrillera cyberszpiegowskiego Portevia — tajne operacje, agenci terenowi, skradziona sieć nadzoru.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: portevia
*/

/* ============================================================
   TOKENS — grafite frio + ciano de visão noturna + alerta carmesim.
   Convenção de nomes de classe deliberadamente diferente das
   outras temas desta rede (sem BEM de duplo underscore, prefixo
   nx- com hífen simples).
   ============================================================ */
:root{
  --nx-void:      #0B0E11;
  --nx-panel:     #12161B;
  --nx-panel-2:   #191F26;
  --nx-line:      #262E38;
  --nx-cyan:      #7FE7E0;
  --nx-cyan-dim:  #3C7A76;
  --nx-crimson:   #C23A3A;
  --nx-paper:     #E7ECEF;
  --nx-ink:       #8A96A3;

  --nx-f-display: 'Michroma', sans-serif;
  --nx-f-body:    'Manrope', sans-serif;
  --nx-f-mono:    'Fira Code', monospace;

  --nx-max: 1180px;
  --nx-edge: clamp(20px, 5vw, 64px);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0; background:var(--nx-void); color:var(--nx-paper);
  font-family:var(--nx-f-body); font-size:16px; line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }

h1,h2,h3,h4{
  font-family:var(--nx-f-display); font-weight:400; text-transform:uppercase;
  letter-spacing:.01em; line-height:1.2; margin:0 0 .5em; color:var(--nx-paper);
}
h1{ font-size:clamp(30px,4.6vw,58px); }
h2{ font-size:clamp(22px,3vw,36px); }
h3{ font-size:clamp(16px,1.8vw,20px); }
p{ margin:0 0 1em; color:var(--nx-ink); }

.nx-box{ max-width:var(--nx-max); margin:0 auto; padding:0 var(--nx-edge); }

.nx-label{
  font-family:var(--nx-f-mono); font-size:11.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--nx-cyan); display:inline-block; margin-bottom:14px;
}
.nx-label::before{ content:"[ "; color:var(--nx-ink); }
.nx-label::after{ content:" ]"; color:var(--nx-ink); }

/* painel estilo "documento redigido" — carimbo diagonal no canto */
.nx-doc{ position:relative; background:var(--nx-panel); border:1px dashed var(--nx-line); overflow:hidden; }
.nx-doc::after{
  content:"CLASSIFICADO"; position:absolute; top:14px; right:-38px; width:150px;
  background:var(--nx-crimson); color:var(--nx-void); font-family:var(--nx-f-mono); font-size:9px;
  letter-spacing:.1em; text-align:center; padding:3px 0; transform:rotate(38deg); opacity:.85;
}

/* divisor tipo forma de onda */
.nx-wave{ height:16px; display:flex; align-items:flex-end; gap:3px; overflow:hidden; opacity:.5; }
.nx-wave i{ display:block; flex:1; background:var(--nx-line); }

.nx-btn{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--nx-f-mono); font-size:12.5px; letter-spacing:.05em; text-transform:uppercase;
  padding:13px 26px; border:1px solid var(--nx-cyan); color:var(--nx-paper); background:transparent;
  transition:background .2s ease, color .2s ease;
}
.nx-btn:hover{ background:var(--nx-cyan); color:var(--nx-void); }
.nx-btn-alt{ border-color:var(--nx-crimson); }
.nx-btn-alt:hover{ background:var(--nx-crimson); color:var(--nx-paper); }
.nx-btn-solid{ background:var(--nx-cyan); color:var(--nx-void); }
.nx-btn-solid:hover{ background:var(--nx-paper); border-color:var(--nx-paper); }

/* ============================================================
   CABEÇALHO
   ============================================================ */
.nx-head{ position:sticky; top:0; z-index:50; background:rgba(11,14,17,.92); backdrop-filter:blur(6px); border-bottom:1px solid var(--nx-line); }
.nx-head-row{ display:flex; align-items:center; justify-content:space-between; height:74px; }
.nx-mark{ font-family:var(--nx-f-display); font-size:18px; text-transform:uppercase; letter-spacing:.04em; }
.nx-mark b{ color:var(--nx-cyan); font-weight:400; }
.nx-menu ul{ list-style:none; display:flex; gap:28px; margin:0; padding:0; }
.nx-menu a{ font-family:var(--nx-f-mono); font-size:12px; letter-spacing:.05em; text-transform:uppercase; color:var(--nx-ink); }
.nx-menu a:hover{ color:var(--nx-cyan); }
.nx-toggle{ display:none; background:none; border:0; color:var(--nx-paper); font-size:22px; }

@media (max-width:880px){
  .nx-menu{ position:fixed; inset:74px 0 0 0; background:var(--nx-void); transform:translateX(100%); transition:transform .25s ease; padding:32px var(--nx-edge); }
  .nx-menu.nx-open{ transform:translateX(0); }
  .nx-menu ul{ flex-direction:column; gap:20px; }
  .nx-toggle{ display:block; }
}

/* ============================================================
   ABERTURA — imagem à esquerda, texto à direita (invertido)
   ============================================================ */
.nx-open{ padding:56px 0 0; }
.nx-open-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:44px; align-items:center; }
.nx-open-art{ aspect-ratio:4/5; overflow:hidden; order:1; }
.nx-open-art img{ width:100%!important; height:100%!important; object-fit:cover!important; filter:grayscale(15%) contrast(1.05); }
.nx-open-copy{ order:2; }
.nx-open-tag{ font-family:var(--nx-f-mono); font-size:11.5px; color:var(--nx-crimson); border:1px solid var(--nx-line); padding:11px 15px; margin-bottom:24px; display:inline-flex; gap:14px; }
.nx-open-title em{ color:var(--nx-cyan); font-style:normal; }
.nx-open-desc{ max-width:480px; font-size:17px; }
.nx-open-cta{ display:flex; gap:16px; margin-top:26px; flex-wrap:wrap; }
.nx-open-nums{ display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--nx-line); margin-top:50px; }
.nx-open-nums div{ padding:20px var(--nx-edge); border-right:1px solid var(--nx-line); }
.nx-open-nums div:last-child{ border-right:0; }
.nx-open-nums b{ display:block; font-family:var(--nx-f-display); font-size:26px; color:var(--nx-cyan); font-weight:400; }
.nx-open-nums span{ font-family:var(--nx-f-mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--nx-ink); }

@media (max-width:880px){
  .nx-open-grid{ grid-template-columns:1fr; }
  .nx-open-art{ order:1; } .nx-open-copy{ order:2; }
  .nx-open-nums{ grid-template-columns:1fr; }
  .nx-open-nums div{ border-right:0; border-bottom:1px solid var(--nx-line); }
}

/* ============================================================
   TERMINAL DE DECIFRAGEM — widget de assinatura
   ============================================================ */
.nx-cipher{ padding:96px 0; }
.nx-cipher-panel{ padding:34px; margin-top:36px; }
.nx-cipher-screen{ font-family:var(--nx-f-mono); font-size:14.5px; line-height:1.8; min-height:120px; color:var(--nx-cyan); white-space:pre-wrap; }
.nx-cipher-meta{ display:flex; justify-content:space-between; align-items:center; margin-top:22px; flex-wrap:wrap; gap:14px; }
.nx-cipher-index{ font-family:var(--nx-f-mono); font-size:11px; color:var(--nx-ink); text-transform:uppercase; }

/* ============================================================
   MISSÃO CENTRAL — narrativa
   ============================================================ */
.nx-brief{ padding:90px 0; }
.nx-brief-quote{ font-family:var(--nx-f-display); font-size:clamp(19px,2.6vw,30px); text-transform:none; font-weight:400; color:var(--nx-paper); border-left:2px solid var(--nx-crimson); padding-left:24px; max-width:760px; margin:32px 0; }
.nx-brief-quote cite{ display:block; margin-top:14px; font-family:var(--nx-f-mono); font-size:12px; color:var(--nx-ink); font-style:normal; }

/* ============================================================
   ZONAS DE OPERAÇÃO — faixa de rolagem horizontal
   ============================================================ */
.nx-theatre{ padding:90px 0; }
.nx-theatre-strip{ display:flex; gap:18px; overflow-x:auto; padding:36px 0 14px; scroll-snap-type:x mandatory; }
.nx-theatre-card{ flex:0 0 260px; scroll-snap-align:start; padding:22px; }
.nx-theatre-code{ font-family:var(--nx-f-mono); font-size:10.5px; color:var(--nx-crimson); text-transform:uppercase; margin-bottom:8px; }

/* ============================================================
   ATIVOS DE CAMPO — separadores tipo pasta de processo
   ============================================================ */
.nx-assets{ padding:96px 0; }
.nx-asset{ border:1px solid var(--nx-line); margin-bottom:2px; }
.nx-asset-tab{ display:flex; align-items:center; justify-content:space-between; width:100%; padding:20px 24px; background:var(--nx-panel); border:0; text-align:left; color:var(--nx-paper); }
.nx-asset-tab-left{ display:flex; align-items:baseline; gap:16px; }
.nx-asset-code{ font-family:var(--nx-f-mono); font-size:11px; color:var(--nx-cyan); }
.nx-asset-name{ font-family:var(--nx-f-display); font-size:16px; text-transform:uppercase; }
.nx-asset-role{ font-family:var(--nx-f-mono); font-size:10.5px; color:var(--nx-ink); text-transform:uppercase; }
.nx-asset-plus{ font-family:var(--nx-f-mono); color:var(--nx-cyan); transition:transform .2s ease; }
.nx-asset.nx-expanded .nx-asset-plus{ transform:rotate(45deg); }
.nx-asset-body{ max-height:0; overflow:hidden; transition:max-height .35s ease; background:var(--nx-void); }
.nx-asset.nx-expanded .nx-asset-body{ max-height:420px; }
.nx-asset-body-in{ display:grid; grid-template-columns:170px 1fr; gap:26px; padding:24px; }
.nx-asset-photo{ aspect-ratio:3/4; overflow:hidden; }
.nx-asset-photo img{ width:100%!important; height:100%!important; object-fit:cover!important; }
.nx-asset-skills div{ display:flex; align-items:center; gap:10px; margin-bottom:8px; font-family:var(--nx-f-mono); font-size:11px; }
.nx-asset-skills span:first-child{ width:100px; color:var(--nx-ink); text-transform:uppercase; }
.nx-asset-track{ flex:1; height:5px; background:var(--nx-panel-2); position:relative; }
.nx-asset-fill{ position:absolute; inset:0 auto 0 0; background:var(--nx-cyan); }
@media (max-width:640px){ .nx-asset-body-in{ grid-template-columns:1fr; } }

/* ============================================================
   ARSENAL TÉCNICO
   ============================================================ */
.nx-gear{ padding:90px 0; }
.nx-gear-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--nx-line); margin-top:34px; }
.nx-gear-card{ background:var(--nx-void); padding:24px; }
@media (max-width:860px){ .nx-gear-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px){ .nx-gear-grid{ grid-template-columns:1fr; } }

/* ============================================================
   PLATAFORMAS
   ============================================================ */
.nx-avail{ padding:66px 0; text-align:center; }
.nx-avail-list{ display:flex; justify-content:center; gap:34px; flex-wrap:wrap; margin:28px 0; }
.nx-avail-badge{ font-family:var(--nx-f-mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase; border:1px solid var(--nx-line); padding:11px 20px; color:var(--nx-ink); }

/* ============================================================
   RELATÓRIOS DE CAMPO
   ============================================================ */
.nx-reports{ padding:96px 0; }
.nx-reports-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:18px; margin-top:34px; }
.nx-report{ padding:22px; }
.nx-report-top{ display:flex; justify-content:space-between; font-family:var(--nx-f-mono); font-size:10.5px; color:var(--nx-cyan); text-transform:uppercase; margin-bottom:10px; }

/* ============================================================
   TRANSMISSÕES
   ============================================================ */
.nx-feed{ padding:96px 0; }
.nx-feed-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--nx-line); margin-top:36px; }
.nx-feed-card{ background:var(--nx-void); padding:26px; }
.nx-feed-date{ font-family:var(--nx-f-mono); font-size:10.5px; color:var(--nx-crimson); text-transform:uppercase; }
@media (max-width:860px){ .nx-feed-grid{ grid-template-columns:1fr; } }

/* ============================================================
   RODAPÉ
   ============================================================ */
.nx-foot{ padding:52px 0 30px; border-top:1px solid var(--nx-line); margin-top:36px; }
.nx-foot-row{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:22px; }
.nx-foot-cols{ display:flex; gap:60px; flex-wrap:wrap; }
.nx-foot-col h4{ font-size:11px; color:var(--nx-ink); margin-bottom:13px; letter-spacing:.06em; text-transform:uppercase; }
.nx-foot-col ul{ list-style:none; margin:0; padding:0; }
.nx-foot-col li{ margin-bottom:7px; }
.nx-foot-col a{ font-family:var(--nx-f-mono); font-size:12.5px; color:var(--nx-ink); }
.nx-foot-col a:hover{ color:var(--nx-cyan); }
.nx-foot-bottom{ font-family:var(--nx-f-mono); font-size:10.5px; color:var(--nx-ink); margin-top:36px; border-top:1px solid var(--nx-line); padding-top:18px; }
.nx-foot-addr{ font-family:var(--nx-f-mono); font-size:11.5px; color:var(--nx-ink); line-height:1.8; }

/* ============================================================
   AVISO DE COOKIES
   ============================================================ */
.nx-gdpr{ position:fixed; left:0; right:0; bottom:0; z-index:100; background:var(--nx-panel); border-top:1px solid var(--nx-crimson); padding:16px var(--nx-edge); display:none; align-items:center; justify-content:space-between; gap:22px; flex-wrap:wrap; }
.nx-gdpr.nx-show{ display:flex; }
.nx-gdpr p{ font-family:var(--nx-f-mono); font-size:11.5px; color:var(--nx-ink); margin:0; max-width:620px; }
.nx-gdpr .nx-btn{ padding:9px 18px; }

/* ============================================================
   FORMULÁRIOS
   ============================================================ */
.nx-form-panel{ padding:36px; }
.nx-form-row{ margin-bottom:18px; }
.nx-form-row label{ display:block; font-family:var(--nx-f-mono); font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--nx-ink); margin-bottom:7px; }
.nx-form-row input, .nx-form-row textarea, .nx-form-row select{ width:100%; background:var(--nx-void); border:1px solid var(--nx-line); color:var(--nx-paper); padding:11px 13px; font-family:var(--nx-f-body); font-size:14.5px; }
.nx-form-row input:focus, .nx-form-row textarea:focus{ outline:2px solid var(--nx-cyan); outline-offset:2px; }
.nx-honeypot{ position:absolute; left:-9999px; }
.nx-flash{ font-family:var(--nx-f-mono); font-size:12.5px; padding:13px 17px; margin-bottom:22px; border:1px solid; }
.nx-flash-ok{ border-color:var(--nx-cyan); color:var(--nx-cyan); }
.nx-flash-err{ border-color:var(--nx-crimson); color:var(--nx-crimson); }

/* ============================================================
   CONTEÚDO GERAL
   ============================================================ */
.nx-subhead{ padding:56px 0 32px; }
.nx-body-wrap{ padding:56px 0; }
.nx-body-wrap .nx-box{ max-width:780px; }
.nx-body-wrap h2{ margin-top:1.4em; }
.nx-log-row{ display:flex; gap:26px; margin-bottom:32px; padding-bottom:32px; border-bottom:1px solid var(--nx-line); }
.nx-log-row b{ font-family:var(--nx-f-display); font-size:22px; color:var(--nx-cyan); min-width:80px; font-weight:400; }
.nx-fold{ border-bottom:1px solid var(--nx-line); padding:16px 0; }
.nx-fold summary{ cursor:pointer; font-family:var(--nx-f-display); font-size:15px; text-transform:uppercase; }

@media (prefers-reduced-motion: reduce){ *{ animation:none!important; transition:none!important; } html{ scroll-behavior:auto; } }
:focus-visible{ outline:2px solid var(--nx-cyan); outline-offset:3px; }

/* === Nightwire redesign / Portevia 2026 === */
.nx-home{overflow:hidden}.nx-intro{padding:86px 0 72px;position:relative}.nx-intro:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(177,232,230,.035) 1px,transparent 1px),linear-gradient(rgba(177,232,230,.025) 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(to bottom,#000,transparent)}
.nx-intro-stage{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.7fr);gap:clamp(48px,7vw,110px);align-items:center;position:relative}.nx-kicker{font-family:var(--nx-f-mono);font-size:10px;letter-spacing:.12em;color:var(--nx-crimson);margin-bottom:30px}.nx-pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--nx-crimson);margin-right:9px;box-shadow:0 0 0 5px rgba(182,73,60,.08)}
.nx-intro h1{font-family:var(--nx-f-display);font-size:clamp(48px,6.4vw,92px);line-height:.93;letter-spacing:-.045em;text-transform:uppercase;margin:0 0 30px;max-width:900px}.nx-intro h1 em{font-style:normal;color:var(--nx-cyan)}.nx-lead{font-size:17px;line-height:1.8;max-width:720px}.nx-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.nx-intro-meta{display:flex;gap:30px;flex-wrap:wrap;margin-top:42px;padding-top:22px;border-top:1px solid var(--nx-line);font-family:var(--nx-f-mono);font-size:10px;text-transform:uppercase;color:var(--nx-ink)}.nx-intro-meta b{color:var(--nx-paper);font-size:15px;margin-right:7px}
.nx-signal-card{border:1px solid var(--nx-line);background:#0c0f13;padding:12px;transform:rotate(1.2deg);box-shadow:0 30px 80px rgba(0,0,0,.25)}.nx-signal-top{display:flex;justify-content:space-between;padding:5px 3px 12px;font:9px var(--nx-f-mono);color:var(--nx-ink)}.nx-signal-top i{width:6px;height:6px;background:var(--nx-crimson);border-radius:50%}.nx-signal-visual{aspect-ratio:1/1.05;overflow:hidden;filter:saturate(.65) contrast(1.08)}.nx-signal-visual img{width:100%;height:100%;object-fit:cover}.nx-signal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--nx-line);margin-top:12px}.nx-signal-grid span{background:#0c0f13;padding:12px 8px;font:8px/1.5 var(--nx-f-mono);color:var(--nx-ink)}.nx-signal-grid b{color:var(--nx-cyan);font-weight:400}
.nx-case{padding:110px 0;border-top:1px solid var(--nx-line)}.nx-case-grid{display:grid;grid-template-columns:90px minmax(280px,.85fr) minmax(320px,1fr);gap:42px;align-items:start}.nx-case-index{font:56px var(--nx-f-display);color:rgba(177,232,230,.18)}.nx-case h2,.nx-section-head h2,.nx-decision h2,.nx-final h2{font-size:clamp(34px,4.4vw,64px);line-height:1.02;letter-spacing:-.035em;text-transform:none}.nx-case-story{columns:2;column-gap:34px}.nx-case-story p{break-inside:avoid;margin-top:0}
.nx-route{padding:100px 0;background:rgba(255,255,255,.012)}.nx-section-head{max-width:850px;margin-bottom:46px}.nx-route-list{border-top:1px solid var(--nx-line)}.nx-route-row{display:grid;grid-template-columns:54px 64px 180px 1fr 30px;gap:20px;align-items:center;padding:24px 10px;border-bottom:1px solid var(--nx-line);transition:background .2s,padding .2s}.nx-route-row:hover{background:rgba(177,232,230,.035);padding-left:18px}.nx-route-no,.nx-route-row>b,.nx-route-arrow{font:10px var(--nx-f-mono);color:var(--nx-ink)}.nx-route-row h3{margin:0;font-size:22px}.nx-route-row p{margin:0}.nx-route-arrow{color:var(--nx-cyan);font-size:17px}
.nx-operatives{padding:110px 0}.nx-operative-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.nx-operative{display:grid;grid-template-columns:180px 1fr;min-height:270px;border:1px solid var(--nx-line);background:var(--nx-panel);overflow:hidden}.nx-operative-img img{width:100%;height:100%;object-fit:cover;filter:saturate(.72)}.nx-operative-copy{padding:28px}.nx-operative-copy span{font:9px var(--nx-f-mono);color:var(--nx-crimson);text-transform:uppercase}.nx-operative-copy h3{font-size:28px;margin:13px 0}.nx-operative-copy p{margin:0}
.nx-decision{padding:110px 0;border-block:1px solid var(--nx-line)}.nx-decision-grid{display:grid;grid-template-columns:1fr .8fr;gap:80px;align-items:center}.nx-meter-panel{padding:30px;border:1px solid var(--nx-line);background:var(--nx-panel)}.nx-meter{display:grid;grid-template-columns:110px 1fr 32px;gap:15px;align-items:center;margin:22px 0;font:9px var(--nx-f-mono);color:var(--nx-ink)}.nx-meter i{height:4px;background:linear-gradient(90deg,var(--nx-cyan) var(--v),var(--nx-panel-2) var(--v));position:relative}.nx-meter b{color:var(--nx-paper)}.nx-meter-panel small{font:8px var(--nx-f-mono);color:var(--nx-ink)}
.nx-archive{padding:110px 0}.nx-timeline{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--nx-line)}.nx-timeline>div{padding:28px 22px;border-right:1px solid var(--nx-line);position:relative}.nx-timeline>div:before{content:"";position:absolute;top:-4px;left:22px;width:7px;height:7px;background:var(--nx-cyan)}.nx-timeline b{font:12px var(--nx-f-mono);color:var(--nx-crimson)}.nx-timeline h3{font-size:19px;margin:18px 0 10px}.nx-timeline p{font-size:13px;margin:0}
.nx-final{padding:120px 0}.nx-final-inner{max-width:900px;text-align:center}.nx-final .nx-actions{justify-content:center}.nx-final p{max-width:650px;margin-inline:auto}
@media(max-width:900px){.nx-intro-stage,.nx-case-grid,.nx-decision-grid{grid-template-columns:1fr}.nx-signal-card{max-width:520px;transform:none}.nx-case-index{display:none}.nx-operative-grid{grid-template-columns:1fr}.nx-timeline{grid-template-columns:1fr}.nx-timeline>div{border-right:0;border-bottom:1px solid var(--nx-line)}.nx-route-row{grid-template-columns:40px 50px 130px 1fr}.nx-route-arrow{display:none}}
@media(max-width:620px){.nx-intro{padding-top:48px}.nx-intro h1{font-size:44px}.nx-case-story{columns:1}.nx-route-row{grid-template-columns:38px 1fr;gap:8px}.nx-route-row>b{display:none}.nx-route-row h3{grid-column:2}.nx-route-row p{grid-column:2}.nx-operative{grid-template-columns:120px 1fr}.nx-operative-copy{padding:18px}.nx-signal-grid{grid-template-columns:1fr}.nx-case,.nx-route,.nx-operatives,.nx-decision,.nx-archive,.nx-final{padding:72px 0}}
