/* ============================================================================
   KALLAVY SIGNAL — folha única do site institucional (proposta 2).
   Direção: Swiss design · editorial technology · precisão. Grid de 12 colunas,
   linhas de 1px, labels técnicos em mono, muito espaço. Light mode protagonista.
   Tokens no :root; dark = azul-marinho profundo. Sem gradiente decorativo,
   sem partícula, sem glow. Ver site-signal/DESIGN.md.
   ============================================================================ */

/* ---------- fontes (self-hosted: a CSP da casa só aceita font-src 'self') ---------- */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/fonts/inter-latin-wght-normal.woff2) format("woff2-variations");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url(/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url(/fonts/jetbrains-mono-latin-ext-400-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;
  src:url(/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}

/* ---------- tokens ---------- */
:root{
  --bg:#F7F9FC; --bg-2:#FFFFFF; --bg-3:#EDF1F6;
  --ink:#0F1B2D; --ink-2:#3E4C60; --ink-3:#5F6E84;
  --line:#D8DFE9; --line-2:#B9C4D3;
  --accent:#2E73EA;       /* azul Kallavy — gráfico (linhas, marcadores, ≥3:1) */
  --accent-ink:#255FCB;   /* azul quando vira TEXTO (5,9:1 sobre o fundo) */
  --accent-soft:#E4EDFB;
  --cyan:#4AF3F8;         /* só detalhe: um ponto, um cursor, uma marca de status */
  --on-accent:#FFFFFF;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --maxw:1360px; --gutter:clamp(20px,4vw,56px); --gap:24px;
  --ease:cubic-bezier(.2,.6,.2,1); --t:.24s;
  --hdr:64px;
}
:root[data-theme="dark"]{
  --bg:#0B1622; --bg-2:#101E2C; --bg-3:#16283A;
  --ink:#EEF3F8; --ink-2:#B3C0CF; --ink-3:#8595A8;
  --line:#22384E; --line-2:#345069;
  --accent:#4A8AF5; --accent-ink:#79ADFF; --accent-soft:#132A47;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0B1622; --bg-2:#101E2C; --bg-3:#16283A;
    --ink:#EEF3F8; --ink-2:#B3C0CF; --ink-3:#8595A8;
    --line:#22384E; --line-2:#345069;
    --accent:#4A8AF5; --accent-ink:#79ADFF; --accent-soft:#132A47;
  }
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%}
body{margin:0; background:var(--bg); color:var(--ink); font-family:var(--sans); font-size:1.0625rem; line-height:1.6;
  letter-spacing:-.006em; -webkit-font-smoothing:antialiased; font-feature-settings:"cv11","ss01","tnum"}
img,svg{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
button{font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer}
p{margin:0}
h1,h2,h3,h4{margin:0; font-weight:500; letter-spacing:-.03em; line-height:1.05; text-wrap:balance}
::selection{background:var(--accent); color:var(--on-accent)}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px}
.sr{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0}

/* ---------- tipografia ---------- */
.d1{font-size:clamp(2.5rem,5.4vw,4.75rem); line-height:1.0; letter-spacing:-.035em; font-weight:500}
.d2{font-size:clamp(2rem,3.6vw,3.25rem); line-height:1.06; letter-spacing:-.032em; font-weight:500}
.d3{font-size:clamp(1.5rem,2.2vw,2rem); line-height:1.15; letter-spacing:-.025em; font-weight:500}
.h4{font-size:1.25rem; line-height:1.3; letter-spacing:-.015em; font-weight:500}
.lead{font-size:clamp(1.125rem,1.5vw,1.375rem); line-height:1.5; color:var(--ink-2); text-wrap:pretty}
.p{color:var(--ink-2); text-wrap:pretty}
.p+.p{margin-top:1em}
.small{font-size:.9375rem}
.mono,.lab,.num{font-family:var(--mono); font-weight:400; letter-spacing:.02em; font-feature-settings:normal}
.lab{font-size:.75rem; text-transform:uppercase; letter-spacing:.12em; color:var(--ink-3)}
.lab b{font-weight:500; color:var(--accent-ink)}
.lab.ink{color:var(--ink)}
.eyebrow{display:flex; align-items:center; gap:14px; margin-bottom:28px}
.eyebrow::after{content:""; flex:1; height:1px; background:var(--line)}
.accent{color:var(--accent-ink)}
.muted{color:var(--ink-3)}
em{font-style:italic}

/* ---------- grid & layout ---------- */
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter)}
.g{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:var(--gap)}
.c1{grid-column-end:span 1}.c2{grid-column-end:span 2}.c3{grid-column-end:span 3}.c4{grid-column-end:span 4}.c5{grid-column-end:span 5}.c6{grid-column-end:span 6}.c7{grid-column-end:span 7}.c8{grid-column-end:span 8}.c9{grid-column-end:span 9}.c10{grid-column-end:span 10}.c11{grid-column-end:span 11}.c12{grid-column-end:span 12}
.s2{grid-column-start:2}.s3{grid-column-start:3}.s4{grid-column-start:4}.s5{grid-column-start:5}.s7{grid-column-start:7}.s8{grid-column-start:8}.s9{grid-column-start:9}.s10{grid-column-start:10}
.sec{border-top:1px solid var(--line); padding:clamp(64px,8vw,120px) 0}
.sec-tight{padding:clamp(40px,5vw,72px) 0}
.rule{border-top:1px solid var(--line)}
.rule-2{border-top:1px solid var(--line-2)}
.stack>*+*{margin-top:var(--gap)}
.flow>*+*{margin-top:1em}
@media(max-width:900px){
  .g{column-gap:16px; row-gap:16px}
  .c1,.c2,.c3,.c4,.c5,.c6,.c7,.c8,.c9,.c10,.c12{grid-column:1/-1}
  .m6{grid-column:span 6}
  .s2,.s3,.s4,.s5,.s7,.s8,.s9,.s10{grid-column-start:1}
}

/* ---------- links & botões ---------- */
.arr{display:inline-flex; align-items:center; gap:8px; font-weight:500; color:var(--accent-ink)}
.arr i,.btn i{font-style:normal; display:inline-block; transition:transform var(--t) var(--ease)}
.arr:hover i,.btn:hover i,.cap:hover .arr i,.cap:focus-within .arr i{transform:translateX(4px)}
.btn{display:inline-flex; align-items:center; gap:10px; height:48px; padding:0 22px; font-weight:500; font-size:.9375rem;
  border:1px solid var(--ink); color:var(--ink); border-radius:2px; transition:background var(--t),color var(--t),border-color var(--t)}
.btn:hover{background:var(--bg-3)}
.btn-primary{background:var(--ink); color:var(--bg); border-color:var(--ink)}
.btn-primary:hover{background:var(--accent); border-color:var(--accent); color:var(--on-accent)}
.btn-accent{background:var(--accent); border-color:var(--accent); color:var(--on-accent)}
.btn-accent:hover{background:var(--accent-ink); border-color:var(--accent-ink)}
.btn-sm{height:38px; padding:0 14px; font-size:.875rem}
.btn-lg{height:56px; padding:0 28px; font-size:1rem}
.ctas{display:flex; gap:12px; flex-wrap:wrap}

/* ---------- header ---------- */
.hdr{position:sticky; top:0; z-index:50; background:color-mix(in srgb,var(--bg) 86%,transparent); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line)}
.hdr .g{height:var(--hdr); align-items:center; row-gap:0}
.brand{display:flex; align-items:center; gap:10px; font-weight:600; letter-spacing:-.02em; font-size:1.0625rem; grid-column:span 3}
.brand img{width:22px; height:22px; object-fit:contain}
.brand .sec-now{font-family:var(--mono); font-size:.6875rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); margin-left:14px; padding-left:14px; border-left:1px solid var(--line);
  min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; transition:opacity var(--t)}
.brand .sec-now:empty{display:none}
.nav{grid-column:span 6; display:flex; gap:clamp(16px,2.2vw,34px); justify-content:center}
.nav a{position:relative; display:inline-flex; align-items:baseline; gap:8px; font-size:.9375rem; color:var(--ink-2); padding:6px 0; transition:color var(--t)}
.nav a .n{font-family:var(--mono); font-size:.6875rem; color:var(--ink-3); letter-spacing:.06em; transition:color var(--t)}
.nav a::after{content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--ink); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease)}
.nav a:hover{color:var(--ink)} .nav a:hover::after{transform:scaleX(1)}
.nav a[aria-current="page"]{color:var(--ink)} .nav a[aria-current="page"] .n{color:var(--accent-ink)} .nav a[aria-current="page"]::after{transform:scaleX(1); background:var(--accent)}
.hdr-r{grid-column:span 3; display:flex; align-items:center; justify-content:flex-end; gap:18px}
.hdr-r .lnk{font-size:.9375rem; color:var(--ink-2); display:inline-flex; gap:6px; align-items:center; transition:color var(--t)}
.hdr-r .lnk:hover{color:var(--ink)}
.hdr-r .lnk i{font-style:normal; transition:transform var(--t) var(--ease)}
.hdr-r .lnk:hover i{transform:translate(2px,-2px)}
.hdr-r .lnk.pl:hover i{transform:translateX(4px)}
.tgl{width:36px; height:36px; display:grid; place-items:center; border:1px solid var(--line); border-radius:2px; color:var(--ink-2); transition:border-color var(--t),color var(--t)}
.tgl:hover{border-color:var(--line-2); color:var(--ink)}
.tgl svg{width:15px; height:15px}
.ico-moon{display:none}
:root[data-theme="dark"] .ico-sun{display:none} :root[data-theme="dark"] .ico-moon{display:block}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .ico-sun{display:none} :root:not([data-theme="light"]) .ico-moon{display:block} }
:root[data-theme="light"] .ico-sun{display:block} :root[data-theme="light"] .ico-moon{display:none}
.logo-dark{display:none}
:root[data-theme="dark"] .logo-light{display:none} :root[data-theme="dark"] .logo-dark{display:block}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .logo-light{display:none} :root:not([data-theme="light"]) .logo-dark{display:block} }
:root[data-theme="light"] .logo-light{display:block} :root[data-theme="light"] .logo-dark{display:none}
.burger{display:none; width:40px; height:40px; place-items:center; border:1px solid var(--line); border-radius:2px}
.burger span{display:block; width:16px; height:1.5px; background:var(--ink); transition:transform .3s var(--ease),opacity .2s}
.burger span+span{margin-top:4px}
body.menu-open .burger span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
@media(max-width:1023px){
  .nav,.hdr-r .lnk,.hdr-r .tgl{display:none}
  .brand{grid-column:span 6} .brand .sec-now{display:none}
  .hdr-r{grid-column:span 6}
  .burger{display:grid}
}
/* menu mobile: tela cheia, uma lista numerada, nada mais */
.mm{position:fixed; inset:var(--hdr) 0 0; z-index:49; background:var(--bg); padding:24px var(--gutter) 40px; display:flex; flex-direction:column;
  opacity:0; pointer-events:none; transform:translateY(-6px); transition:opacity .28s var(--ease),transform .28s var(--ease); overflow:auto}
body.menu-open .mm{opacity:1; pointer-events:auto; transform:none}
.mm a.mi{display:grid; grid-template-columns:44px 1fr auto; align-items:baseline; padding:18px 0; border-bottom:1px solid var(--line); font-size:1.75rem; letter-spacing:-.03em; font-weight:500}
.mm a.mi .n{font-family:var(--mono); font-size:.75rem; color:var(--ink-3)}
.mm a.mi[aria-current="page"] .n{color:var(--accent-ink)}
.mm a.mi i{font-style:normal; color:var(--ink-3); font-size:1.1rem}
.mm .mm-foot{margin-top:auto; padding-top:28px; display:grid; gap:12px}
.mm .mm-foot .row{display:flex; justify-content:space-between; align-items:center; gap:12px}
@media(min-width:1024px){ .mm{display:none} }

/* ---------- hero ---------- */
.hero{padding:clamp(56px,7vw,112px) 0 clamp(48px,6vw,96px); position:relative}
.hero .idx{margin-bottom:clamp(28px,4vw,56px)}
.hero .d1{max-width:12ch}
.hero .lead{max-width:52ch; margin:28px 0 36px}
.hero-diag{align-self:center}
@media(max-width:900px){ .hero-diag{margin-top:32px} }

/* ---------- diagramas (SVG) ---------- */
.diag{width:100%; height:auto; font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase}
.diag .bx{fill:var(--bg-2); stroke:var(--line-2); stroke-width:1}
.diag .bx.k{fill:var(--ink); stroke:var(--ink)}
.diag .tx{fill:var(--ink); font-weight:500}
.diag .tx.on{fill:var(--bg)}
.diag .tx.dim{fill:var(--ink-3); font-weight:400}
.diag .ln{fill:none; stroke:var(--line-2); stroke-width:1; transition:stroke var(--t)}
.diag .ln.a{stroke:var(--accent)}
.diag .dot{fill:var(--accent)} .diag .dot.c{fill:var(--cyan)}
.diag .node:hover ~ .ln,.diag .node:hover .bx{stroke:var(--accent)}
.diag .node{cursor:default}
.diag .node:hover .bx:not(.k){stroke:var(--accent)}
.diag .arrow{fill:var(--line-2)}
.diag .arrow.a{fill:var(--accent)}
.diag .draw{stroke-dasharray:var(--len,600); stroke-dashoffset:var(--len,600); transition:stroke-dashoffset 1.1s var(--ease)}
.diag.in .draw{stroke-dashoffset:0}
.diag .fade{opacity:0; transition:opacity .5s var(--ease)}
.diag.in .fade{opacity:1}
.diag .pulse{transform-origin:center; transform-box:fill-box; animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
.diag-cap{margin-top:12px; display:flex; justify-content:space-between; gap:12px}

/* ---------- manifesto ---------- */
.manif .d2{max-width:16ch}
.manif .side{padding-top:10px}

/* ---------- capability rows ---------- */
.caps{border-top:1px solid var(--line-2)}
.cap{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); align-items:start; padding:28px 0 0; border-bottom:1px solid var(--line); position:relative; color:inherit;
  transition:background var(--t)}
.cap:hover,.cap:focus-within{background:color-mix(in srgb,var(--bg-2) 60%,transparent)}
.cap .n{grid-column:span 1; font-family:var(--mono); font-size:.8125rem; color:var(--ink-3); padding-top:6px}
.cap .t{grid-column:span 4; font-size:clamp(1.375rem,2vw,1.875rem); letter-spacing:-.025em; font-weight:500; line-height:1.1}
.cap .d{grid-column:span 5; color:var(--ink-2); padding-top:4px}
.cap .arr{grid-column:span 2; justify-self:end; padding-top:6px}
.cap-more{grid-column:1/-1; display:grid; grid-template-rows:0fr; transition:grid-template-rows .45s var(--ease)}
.cap-more>*{display:block; overflow:hidden; min-height:0}
.cap:hover .cap-more,.cap:focus-within .cap-more,.cap.open .cap-more{grid-template-rows:1fr}
.cap-more .in{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); padding:20px 0 32px}
.cap-more .in .diag{grid-column:2/span 6}
.cap-more .in .note{grid-column:8/span 5; font-size:.9375rem; color:var(--ink-2)}
.cap-pad{height:28px; grid-column:1/-1}
.cap:hover .cap-pad,.cap:focus-within .cap-pad,.cap.open .cap-pad{height:0}
@media(max-width:900px){
  .cap{column-gap:12px; padding-top:20px}
  .cap .n{grid-column:span 2} .cap .t{grid-column:span 10} .cap .d{grid-column:2/span 11} .cap .arr{grid-column:2/span 11; justify-self:start}
  .cap-more .in .diag{grid-column:1/-1} .cap-more .in .note{grid-column:1/-1}
}

/* ---------- metrics ---------- */
.mets{display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line-2); border-left:1px solid var(--line)}
.met{padding:28px 24px 32px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); min-height:200px; display:flex; flex-direction:column; gap:14px}
.met .n{font-family:var(--mono); font-size:.75rem; color:var(--ink-3)}
.met .v{font-size:clamp(2.25rem,4vw,3.5rem); letter-spacing:-.04em; line-height:1; font-weight:500; margin-top:auto; font-feature-settings:"tnum"}
.met .v.ph{color:var(--ink-3); font-family:var(--mono); font-size:1.25rem; letter-spacing:.02em; font-weight:400}
.met .l{color:var(--ink-2); font-size:.9375rem}
.met .st{font-family:var(--mono); font-size:.6875rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); display:flex; gap:8px; align-items:center}
.met .st::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--line-2)}
.met .st.ok::before{background:var(--cyan)}
@media(max-width:900px){ .mets{grid-template-columns:1fr 1fr} }
@media(max-width:520px){ .mets{grid-template-columns:1fr} }

/* ---------- case studies ---------- */
.case{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:24px; padding:40px 0 48px; border-top:1px solid var(--line)}
.case:first-of-type{border-top:1px solid var(--line-2)}
.case .who{grid-column:span 3}
.case .who .cl{font-size:1.375rem; font-weight:500; letter-spacing:-.02em; margin-top:8px}
.case .who .sec{font-size:.9375rem; color:var(--ink-2); border:0; padding:0; margin-top:4px}
.case .blk{grid-column:span 3}
.case .blk p{margin-top:10px; color:var(--ink-2); font-size:.9375rem}
.case .ph{color:var(--ink-3); font-family:var(--mono); font-size:.8125rem}
.case .ph::before{content:"[ "} .case .ph::after{content:" ]"}
@media(max-width:900px){ .case .who,.case .blk{grid-column:span 12} }

/* ---------- foto placeholder (nunca inventar rosto) ---------- */
.ph-img{position:relative; background:var(--bg-3); border:1px solid var(--line); overflow:hidden; aspect-ratio:4/5}
.ph-img.w{aspect-ratio:3/2} .ph-img.sq{aspect-ratio:1}
.ph-img::before{content:""; position:absolute; inset:0; background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px); background-size:24px 24px; opacity:.6}
.ph-img .tag{position:absolute; left:12px; bottom:12px; font-family:var(--mono); font-size:.6875rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); background:var(--bg); padding:4px 8px; border:1px solid var(--line)}
.ph-img .xy{position:absolute; right:12px; top:12px; font-family:var(--mono); font-size:.6875rem; color:var(--ink-3)}
.ph-img img{width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease)}
.ph-img:hover img{transform:scale(1.025)}
.crosshair{position:absolute; width:14px; height:14px; pointer-events:none}
.crosshair::before,.crosshair::after{content:""; position:absolute; background:var(--line-2)}
.crosshair::before{left:0; right:0; top:50%; height:1px} .crosshair::after{top:0; bottom:0; left:50%; width:1px}
.crosshair.tl{top:-7px; left:-7px} .crosshair.br{bottom:-7px; right:-7px}

/* ---------- lista de definições (origin/mission/...) ---------- */
.defs{border-top:1px solid var(--line-2)}
.def{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); padding:32px 0; border-bottom:1px solid var(--line)}
.def .k{grid-column:span 3; display:flex; gap:14px; align-items:baseline}
.def .k .n{font-family:var(--mono); font-size:.75rem; color:var(--ink-3)}
.def .k .t{font-family:var(--mono); font-size:.8125rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink)}
.def .v{grid-column:5/span 7; color:var(--ink-2)}
.def .v .big{font-size:clamp(1.25rem,1.8vw,1.625rem); line-height:1.3; color:var(--ink); letter-spacing:-.02em; margin-bottom:12px}
@media(max-width:900px){ .def .k,.def .v{grid-column:span 12} .def .v{margin-top:12px} }

/* ---------- timeline ---------- */
.tl{display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line-2)}
.tl .ev{padding:24px 24px 32px 0; border-right:1px solid var(--line); position:relative}
.tl .ev:last-child{border-right:0}
.tl .ev::before{content:""; position:absolute; top:-1px; left:0; width:24px; height:1px; background:var(--accent)}
.tl .ev .y{font-family:var(--mono); font-size:.8125rem; color:var(--accent-ink)}
.tl .ev .t{font-weight:500; margin-top:10px; letter-spacing:-.015em}
.tl .ev p{color:var(--ink-2); font-size:.9375rem; margin-top:6px}
.tl .ev.ph .y,.tl .ev.ph .t{color:var(--ink-3)}
@media(max-width:900px){ .tl{grid-template-columns:1fr 1fr} .tl .ev:nth-child(2n){border-right:0} }
@media(max-width:520px){ .tl{grid-template-columns:1fr} .tl .ev{border-right:0; border-bottom:1px solid var(--line)} }

/* ---------- matriz de soluções ---------- */
.mx-wrap{overflow-x:auto}
.mx{width:100%; border-collapse:collapse; min-width:640px}
.mx th,.mx td{border-bottom:1px solid var(--line); padding:18px 12px; text-align:center; font-weight:400}
.mx thead th{font-family:var(--mono); font-size:.6875rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); border-bottom:1px solid var(--line-2); padding-bottom:14px}
.mx th:first-child,.mx td:first-child{text-align:left; padding-left:0}
.mx tbody th{font-weight:500; letter-spacing:-.01em}
.mx tbody th small{display:block; font-weight:400; color:var(--ink-3); font-size:.8125rem; margin-top:2px}
.mx .o,.mx-leg .o{display:inline-block; width:10px; height:10px; border-radius:50%; background:var(--accent)}
.mx .o.h,.mx-leg .o.h{background:var(--line-2)}
.mx tr:hover td,.mx tr:hover th{background:color-mix(in srgb,var(--bg-2) 70%,transparent)}
.mx-leg{display:flex; gap:22px; margin-top:14px}
.mx-leg span{display:inline-flex; align-items:center; gap:8px}

/* ---------- processo (método) ---------- */
.proc{display:grid; grid-template-columns:repeat(6,1fr); border-top:1px solid var(--line-2); position:relative}
.step{padding:22px 16px 26px 0; border-right:1px solid var(--line); text-align:left; position:relative; display:flex; flex-direction:column; gap:10px; transition:background var(--t)}
.step:last-child{border-right:0}
.step .n{font-family:var(--mono); font-size:.75rem; color:var(--ink-3)}
.step .t{font-weight:500; letter-spacing:.06em; font-size:.875rem; font-family:var(--mono); text-transform:uppercase}
.step .s{font-size:.875rem; color:var(--ink-3)}
.step::before{content:""; position:absolute; top:-1px; left:0; height:1px; width:0; background:var(--accent); transition:width .5s var(--ease)}
.step[aria-selected="true"]::before{width:100%}
.step[aria-selected="true"] .n{color:var(--accent-ink)}
.step:hover{background:color-mix(in srgb,var(--bg-2) 70%,transparent)}
.step .ar{position:absolute; right:-7px; top:26px; color:var(--line-2); font-size:.8rem; background:var(--bg); padding:0 2px}
.step:last-child .ar{display:none}
.proc-panel{margin-top:40px; display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:24px}
.proc-panel[hidden]{display:none}
.proc-panel .h{grid-column:span 5}
.proc-panel .b{grid-column:span 6; color:var(--ink-2)}
.proc-panel ul{margin:16px 0 0; padding:0; list-style:none; display:grid; gap:8px}
.proc-panel li{display:flex; gap:12px; font-size:.9375rem}
.proc-panel li::before{content:"—"; color:var(--accent-ink); flex:none}
@media(max-width:900px){
  .proc{grid-template-columns:1fr}
  .step{border-right:0; border-bottom:1px solid var(--line); padding:18px 0}
  .step .ar{right:auto; left:14px; top:auto; bottom:-8px; transform:rotate(90deg)}
  .proc-panel .h,.proc-panel .b{grid-column:span 12}
}

/* ---------- equipe (grid editorial irregular) ---------- */
.team{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:40px}
.member{display:flex; flex-direction:column; gap:12px; text-align:left}
.member .meta{display:flex; justify-content:space-between; gap:12px; align-items:baseline; border-top:1px solid var(--line); padding-top:12px}
.member .nm{font-weight:500; letter-spacing:-.015em}
.member .rl{font-family:var(--mono); font-size:.6875rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
.member .arr{font-size:.9375rem}
.team .t1{grid-column:span 5}.team .t2{grid-column:7/span 3}.team .t3{grid-column:10/span 3}
.team .t4{grid-column:span 3}.team .t5{grid-column:4/span 4}.team .t6{grid-column:9/span 4}
.team .txt{grid-column:7/span 6; align-self:end; padding-bottom:12px}
@media(max-width:900px){ .team [class*="t"]{grid-column:span 6} .team .txt{grid-column:span 12} }
dialog.person{border:1px solid var(--line-2); background:var(--bg); color:var(--ink); padding:0; max-width:min(720px,calc(100% - 32px)); width:100%; border-radius:2px}
dialog.person::backdrop{background:color-mix(in srgb,var(--ink) 55%,transparent)}
dialog.person .in{display:grid; grid-template-columns:5fr 7fr; gap:28px; padding:28px}
dialog.person .cl{position:absolute; top:12px; right:12px; width:36px; height:36px; display:grid; place-items:center; border:1px solid var(--line); border-radius:2px; background:var(--bg)}
dialog.person dl{margin:18px 0 0; display:grid; gap:10px}
dialog.person dt{font-family:var(--mono); font-size:.6875rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
dialog.person dd{margin:2px 0 0; color:var(--ink-2); font-size:.9375rem}
@media(max-width:640px){ dialog.person .in{grid-template-columns:1fr} }

/* ---------- formulário editorial ---------- */
.form{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:36px}
.fld{display:flex; flex-direction:column; gap:10px; grid-column:span 6}
.fld.full{grid-column:span 12}
.fld label{font-family:var(--mono); font-size:.6875rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); display:flex; justify-content:space-between}
.fld label .n{color:var(--ink-3)}
.fld input,.fld textarea,.fld select{font:inherit; color:var(--ink); background:transparent; border:0; border-bottom:1px solid var(--line-2); border-radius:0; padding:10px 0; font-size:1.125rem; letter-spacing:-.01em; outline:0; transition:border-color var(--t)}
.fld textarea{resize:vertical; min-height:120px; line-height:1.5}
.fld input:focus,.fld textarea:focus,.fld select:focus{border-bottom-color:var(--accent)}
.fld input::placeholder,.fld textarea::placeholder{color:var(--ink-3)}
.fld select{appearance:none; -webkit-appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%); background-position:calc(100% - 12px) 55%,calc(100% - 7px) 55%; background-size:5px 5px; background-repeat:no-repeat; padding-right:28px}
.fld select option{color:#0F1B2D; background:#fff}
.form .send{grid-column:span 12; display:flex; align-items:center; gap:24px; flex-wrap:wrap}
.form .msg{font-family:var(--mono); font-size:.8125rem; color:var(--ink-3)}
.form .msg.ok{color:var(--accent-ink)} .form .msg.err{color:#B3261E}
:root[data-theme="dark"] .form .msg.err{color:#FF8A80}
.hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
@media(max-width:700px){ .fld{grid-column:span 12} }

/* ---------- CTA final ---------- */
.cta-end{border-top:1px solid var(--line-2); padding:clamp(56px,7vw,104px) 0}
.cta-end .d2{max-width:18ch}

/* ---------- rodapé ---------- */
.ftr{border-top:1px solid var(--line-2); padding:48px 0 32px; font-size:.9375rem}
.ftr .g{row-gap:36px}
.ftr .col h4{font-family:var(--mono); font-size:.6875rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); font-weight:400; margin-bottom:14px}
.ftr ul{list-style:none; margin:0; padding:0; display:grid; gap:9px}
.ftr a{color:var(--ink-2); transition:color var(--t)} .ftr a:hover{color:var(--ink)}
.ftr .idx a{display:inline-flex; gap:10px; align-items:baseline} .ftr .idx .n{font-family:var(--mono); font-size:.6875rem; color:var(--ink-3)}
.ftr .addr{color:var(--ink-2); line-height:1.65; margin-top:14px}
.ftr .bottom{margin-top:40px; padding-top:20px; border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-family:var(--mono); font-size:.6875rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-3)}
@media(pointer:coarse){ .ftr ul{gap:0} .ftr ul a{display:inline-block; padding:10px 0} }

/* ---------- páginas legais ---------- */
.legal{max-width:76ch}
.legal h2{font-size:1.375rem; letter-spacing:-.02em; margin:44px 0 12px; padding-top:22px; border-top:1px solid var(--line)}
.legal h3{font-size:1.0625rem; margin:24px 0 8px; font-weight:500}
.legal p,.legal li{color:var(--ink-2); font-size:1rem}
.legal p{margin:0 0 12px} .legal ul,.legal ol{padding-left:22px; margin:0 0 14px}
.legal a{color:var(--accent-ink); text-decoration:underline; text-underline-offset:3px}
.legal .toc{border:1px solid var(--line); padding:20px 22px; margin:28px 0 8px; font-size:.9375rem}
.legal .toc ol{margin:8px 0 0; padding-left:20px; columns:2; column-gap:32px}
.legal .toc a{text-decoration:none}
.legal .toc a:hover{text-decoration:underline}
.legal .lastmod{font-family:var(--mono); font-size:.75rem; color:var(--ink-3); letter-spacing:.08em; text-transform:uppercase}
@media(max-width:640px){ .legal .toc ol{columns:1} }

/* ---------- utilidades ---------- */
.rv{opacity:0; transform:translateY(8px); transition:opacity .6s var(--ease),transform .6s var(--ease)}
.rv.in{opacity:1; transform:none}
.coords{font-family:var(--mono); font-size:.6875rem; letter-spacing:.08em; color:var(--ink-3)}
.mark{display:inline-block; width:6px; height:6px; background:var(--cyan); margin-right:8px; vertical-align:middle}
.pill{display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line-2); padding:4px 10px; font-family:var(--mono); font-size:.6875rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-2); border-radius:2px}
.list-lined{list-style:none; margin:0; padding:0}
.list-lined li{display:grid; grid-template-columns:44px 1fr; gap:12px; padding:14px 0; border-bottom:1px solid var(--line); color:var(--ink-2)}
.list-lined li .n{font-family:var(--mono); font-size:.75rem; color:var(--ink-3); padding-top:4px}
.list-lined li b{display:block; color:var(--ink); font-weight:500; margin-bottom:2px}
.arch{border:1px solid var(--line); padding:24px; background:var(--bg-2)}
:root[data-theme="dark"] .arch{background:transparent}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .arch{background:transparent} }
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important; transition-duration:.001ms!important}
  html{scroll-behavior:auto} .rv{opacity:1; transform:none} .diag .draw{stroke-dashoffset:0} .diag .fade{opacity:1}
}
