/* Bridge Capital Group — estilos do site */
/* fontes alojadas no próprio site (Geist e Geist Mono, Vercel, licença SIL OFL 1.1 — ver fonts/LICENSE-Geist.txt) */
@font-face{ font-family:"Geist"; src:url("../fonts/Geist-Variable.woff2") format("woff2"); font-weight:100 900; font-style:normal; font-display:swap; }
@font-face{ font-family:"Geist Mono"; src:url("../fonts/GeistMono-Variable.woff2") format("woff2"); font-weight:100 900; font-style:normal; font-display:swap; }
:root{
  --noite:#031426; --estrutural:#39A2FF; --violeta:#5E43FF; --coral:#FFAB8B;
  --branco:#F4F6F8; --bridge:#0163FE; --tinta:#0A1B2E; --muted:rgba(244,246,248,.62);
  --line:rgba(244,246,248,.18);
  --gx:clamp(20px,5vw,72px);            /* margem lateral única do site */
  --hy:calc(env(safe-area-inset-top,0px) + clamp(22px, 3.2vw, 56px));   /* distância do cabeçalho ao topo, proporcional ao ecrã */
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --noite:#031426; --branco:#F4F6F8; } }
:root[data-theme="dark"]{ --noite:#031426; --branco:#F4F6F8; }
html{ scroll-padding-top:env(safe-area-inset-top,0px); }
*,*::before,*::after{ box-sizing:inherit; }
html,body{ margin:0; background:var(--noite); color:var(--branco); }
body{
  font-family:"Archivo", "Helvetica Neue", Arial, sans-serif;
  font-stretch:100%; font-weight:400; line-height:1.5;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
#scene{ position:fixed; inset:0; width:100%; height:100%; display:block; z-index:0; }
.fallback #scene{ display:none; }
.fallback body, body.fallback{ background:radial-gradient(120% 80% at 60% 40%, #0b2d55 0%, var(--noite) 60%); }

/* Header */
header{
  position:fixed; top:0; left:0; right:0; z-index:20;
  padding:var(--hy) var(--gx) 0;
  display:flex; align-items:flex-start; justify-content:space-between; gap:24px;
  pointer-events:none;
}
header > *{ pointer-events:auto; }
.logo-plate{ display:block; line-height:0; padding-top:0; }
.logo-plate img{ width:clamp(177px,16.5vw,240px); height:auto; display:block; }
.lwrap{ position:relative; display:block; }
.logo-plate .lsvg{ display:block; width:clamp(177px,16.5vw,240px); height:auto; overflow:visible; }
.lsvg .lline{ filter:drop-shadow(0 0 2px rgba(57,162,255,.85)) drop-shadow(0 0 6px rgba(94,67,255,.45)); }
.lsvg .lline path{ vector-effect:non-scaling-stroke; stroke-width:1px; }
.lsvg .lstreak{ filter:drop-shadow(0 0 2px rgba(234,246,255,.9)) drop-shadow(0 0 5px rgba(57,162,255,.8)) drop-shadow(0 0 9px rgba(94,67,255,.5)); transition:opacity .35s ease; }
.logo-plate .ld{ display:none; }
body.reading-light .logo-plate .lwrap{ display:none; }
body.reading-light .logo-plate .ld{ display:block; }
header{ align-items:center; height:calc(var(--hy) + 52px); box-sizing:border-box; }   /* uma linha de 52 px: logo e menu centrados um no outro */
nav.main{ position:absolute; left:50%; transform:translateX(-50%); top:calc(env(safe-area-inset-top,0px) + 34px); display:flex; gap:clamp(18px,2.6vw,40px); }
nav.main a{
  color:var(--branco); text-decoration:none; font-size:11.5px; font-stretch:118%; text-transform:uppercase;
  letter-spacing:.2em; opacity:.8; padding:4px 0; position:relative;
}
nav.main a::after{ content:""; position:absolute; left:0; right:.2em; bottom:-4px; height:1px; background:var(--estrutural); transform:scaleX(0); transform-origin:left; transition:transform .35s ease; }
nav.main a:hover{ opacity:1; }
nav.main a:hover::after{ transform:scaleX(1); }
.hright{ display:flex; align-items:center; gap:clamp(14px,1.6vw,24px); }
.tagline{ margin:0; font-size:11px; line-height:1.75; font-stretch:118%; text-transform:uppercase; letter-spacing:.2em; color:var(--branco); opacity:.85; text-align:left; }
.vr{ width:1px; height:46px; background:var(--line); }
.lang{ display:flex; gap:3px; align-items:center; }
.lang button{ color:var(--branco); background:none; border:0; padding:4px 1px; cursor:pointer; font-family:inherit; font-size:11px; font-stretch:115%; letter-spacing:.14em; opacity:.6; }
.lang button:hover, .lang button[aria-pressed="true"]{ opacity:1; }
.lang span{ opacity:.3; font-size:11px; }
.hleft{ display:flex; align-items:center; gap:clamp(16px,1.8vw,26px); }
.vr-l{ height:34px; }
body.reading .vr-l{ opacity:1; }
.menu-lang{ margin-top:28px; padding-top:22px; border-top:1px solid var(--line); }
.menu-lang button{ font-size:13px; }
.burger{ width:52px; height:52px; border-radius:50%; border:1px solid rgba(244,246,248,.6); background:rgba(3,20,38,.2); display:grid; place-items:center; cursor:pointer; padding:0; transition:border-color .3s, background .3s; }
.burger span{ display:block; width:18px; height:1px; background:var(--branco); box-shadow:0 -6px 0 var(--branco), 0 6px 0 var(--branco); }
.burger:hover{ border-color:var(--estrutural); background:rgba(57,162,255,.08); }
nav.main, .tagline, .vr{ transition:opacity .4s ease; }
body.reading nav.main, body.reading .tagline, body.reading .vr{ opacity:0; pointer-events:none; }
body.reading-light .burger{ border-color:rgba(10,27,46,.5); }
body.reading-light .burger span{ background:var(--tinta); box-shadow:0 -6px 0 var(--tinta), 0 6px 0 var(--tinta); }

/* Menu em ecrã inteiro */
.menu{ position:fixed; inset:0; z-index:40; background:rgba(2,10,21,.94); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  display:grid; grid-template-columns:1.3fr 1fr; gap:6vw; padding:calc(env(safe-area-inset-top,0px) + 120px) clamp(24px,7vw,120px) 64px;
  opacity:0; visibility:hidden; transition:opacity .4s ease, visibility .4s; }
.menu.open{ opacity:1; visibility:visible; }
.menu ol{ list-style:none; margin:0; padding:0; }
.menu ol li{ border-top:1px solid var(--line); }
.menu ol button{ width:100%; display:flex; align-items:baseline; gap:24px; background:none; border:0; color:var(--branco); cursor:pointer; padding:16px 0; font-family:inherit; text-align:left; }
.menu ol button small{ font-size:12px; letter-spacing:.14em; opacity:.6; min-width:2.2em; }
.menu ol button span{ font-size:clamp(24px,2.8vw,40px); font-weight:300; font-stretch:115%; transition:color .3s, transform .3s; }
.menu ol button:hover span{ color:var(--estrutural); transform:translateX(6px); }
.menu .side{ display:flex; flex-direction:column; gap:14px; padding-top:18px; }
.menu .side a{ color:var(--branco); text-decoration:none; font-size:12px; letter-spacing:.2em; text-transform:uppercase; font-stretch:118%; opacity:.8; }
.menu .side a:hover{ opacity:1; color:var(--estrutural); }
.menu .close{ position:absolute; top:calc(env(safe-area-inset-top,0px) + 20px); right:clamp(16px,3vw,40px); }
.menu .close span{ box-shadow:none; transform:rotate(45deg); }
.menu .close span::after{ content:""; display:block; width:18px; height:1px; background:var(--branco); transform:rotate(90deg); }
.lang button[aria-pressed="true"]{ color:var(--estrutural); }
a:focus-visible, button:focus-visible{ outline:2px solid var(--estrutural); outline-offset:3px; border-radius:2px; }

/* Labels projected from the 3D scene */
#labels{ position:fixed; inset:0; z-index:12; pointer-events:none; }   /* acima do conteúdo, para as etiquetas receberem o rato */
.tag{
  position:absolute; left:0; top:0; pointer-events:auto;
  background:none; border:0; color:var(--branco); font-family:inherit; cursor:pointer;
  display:flex; flex-direction:column; align-items:flex-start; padding:4px 0 0;
  white-space:nowrap; transition:opacity .4s ease; opacity:0;
}
.tag .num{ font-size:11px; font-stretch:112%; letter-spacing:.14em; opacity:.75; margin-left:1px; }
.tag b{ font-weight:400; font-size:11.5px; font-stretch:112%; letter-spacing:.15em; text-transform:uppercase; margin:5px 0 11px; }
.tag .stem{ width:1px; height:46px; margin-left:8.5px; background:linear-gradient(rgba(244,246,248,.8), rgba(244,246,248,.45)); }
.tag .node{ width:18px; height:18px; border:1.5px solid rgba(244,246,248,.9); border-radius:50%; display:grid; place-items:center; transition:border-color .3s, box-shadow .3s; }
.tag .node i{ width:5px; height:5px; border-radius:50%; background:rgba(244,246,248,.85); transition:background .3s, box-shadow .3s, transform .3s; }
.tag:hover .node, .tag.on .node, .tag.lit .node{ border-color:var(--estrutural); }
.tag.on .node, .tag.lit .node{ border-color:#2f7dff; box-shadow:0 0 10px rgba(57,162,255,.6); }
.tag.on .node i, .tag.lit .node i{ background:#fff; transform:scale(2); box-shadow:0 0 8px 2px rgba(255,255,255,.7); }
.tag:hover .node i{ background:#cfe6ff; }
.tag.show{ opacity:.9; }
.tag:hover, .tag.on{ opacity:1; }
.tag:not(.show){ opacity:0 !important; pointer-events:none; }

/* Flow */
main{ position:relative; z-index:10; }
section{ position:relative; min-height:100vh; }
.wrap{ padding:0 var(--gx); }

.hero{ min-height:100vh; display:flex; align-items:center; padding-top:calc(var(--hy) + 70px); padding-bottom:230px; }
.hero h1{
  font-weight:300; font-stretch:118%; font-size:clamp(40px,5.2vw,82px);
  line-height:1.02; letter-spacing:-.015em; margin:0 0 28px; max-width:11ch;
}
.hero p{ max-width:40ch; color:var(--muted); font-size:clamp(15px,1.15vw,17px); margin:0 0 40px; }
.cta{
  display:inline-flex; align-items:center; gap:14px; color:var(--branco); text-decoration:none;
  font-size:15px; font-stretch:112%; border:1px solid var(--line); padding:14px 22px; border-radius:40px;
  background:rgba(3,20,38,.35); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
}
.cta:hover{ border-color:var(--estrutural); }
.cfbtn{ position:relative; overflow:hidden; isolation:isolate; }
.cfbtn span{ position:relative; z-index:1; }
.cfbtn .cfill{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.cfbtn .cfill path{ fill:var(--bridge); }
.cfbtn:hover{ border-color:transparent; }

/* Explorar: botão + instrução de navegação */
.explore{ display:flex; align-items:center; gap:22px; text-decoration:none; color:var(--branco); }
.explore .ring{ width:60px; height:60px; border-radius:50%; border:1px solid rgba(244,246,248,.7); display:grid; place-items:center; position:relative; transition:border-color .3s; flex:none; }
.explore .ring svg{ width:20px; height:20px; transition:transform .35s ease; }
.explore .ring::before{ content:""; position:absolute; inset:-1px; border-radius:50%; border:1px solid var(--estrutural); opacity:0; transform:scale(1); animation:ping 2.6s ease-out infinite; }
@keyframes ping{ 0%{ opacity:.7; transform:scale(1); } 70%,100%{ opacity:0; transform:scale(1.45); } }
.explore:hover .ring{ border-color:var(--estrutural); }
.explore:hover .ring svg{ transform:translateY(4px); }
.explore b{ display:block; font-weight:400; font-size:12px; letter-spacing:.24em; text-transform:uppercase; font-stretch:118%; }
.explore small{ display:block; margin-top:6px; font-size:13px; color:var(--muted); max-width:32ch; line-height:1.45; }

.hero-base{ position:absolute; left:0; right:0; bottom:0; padding:0 var(--gx) 34px; display:flex; align-items:flex-end; gap:clamp(16px,2vw,32px); transition:opacity .6s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
body.navigating .hero-base{ opacity:0; transform:translateY(12px); pointer-events:none; }
.scrollcue{ flex:none; width:70px; display:flex; flex-direction:column; gap:12px; font-size:10.5px; letter-spacing:.24em; text-transform:uppercase; font-stretch:118%; opacity:.8; padding-bottom:6px; align-self:stretch; justify-content:flex-end; }
.scrollcue i{ position:relative; width:1px; height:44px; background:rgba(244,246,248,.35); margin-left:4px; }
.scrollcue i::after{ content:""; position:absolute; left:-2px; top:0; width:5px; height:5px; border-radius:50%; background:#39A2FF; box-shadow:0 0 8px rgba(57,162,255,.9); animation:cue 2.2s ease-in-out infinite; }
@keyframes cue{
  0%{ top:0; opacity:0; background:#39A2FF; box-shadow:0 0 8px rgba(57,162,255,.9); }
  15%{ opacity:1; background:#39A2FF; }
  50%{ background:#9FD2FF; box-shadow:0 0 8px rgba(159,210,255,.8); }
  80%{ top:40px; opacity:1; background:#FFAB8B; box-shadow:0 0 9px rgba(255,171,139,.9); }
  100%{ top:44px; opacity:0; background:#FFAB8B; box-shadow:0 0 9px rgba(255,171,139,.9); } }
.areas-bar{ flex:1; display:grid; grid-template-columns:repeat(5, 1fr); border-left:1px solid var(--line); }
.areas-bar button{ text-align:left; background:none; border:0; border-right:1px solid var(--line); color:var(--branco); font-family:inherit; cursor:pointer; padding:4px clamp(12px,1.4vw,22px) 4px; display:grid; grid-template-columns:1fr auto; grid-template-rows:auto auto auto auto; column-gap:10px; }
.areas-bar button:last-child{ border-right:0; }
.areas-bar small{ grid-column:1; font-size:10.5px; letter-spacing:.16em; opacity:.7; }
.areas-bar b{ grid-column:1; font-weight:400; font-size:11.5px; letter-spacing:.18em; text-transform:uppercase; font-stretch:115%; margin:6px 0 8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.areas-bar em{ grid-column:1; display:block; height:2px; width:26px; background:rgba(244,246,248,.8); transition:width .4s ease, background .4s; }
.areas-bar span{ grid-column:1; font-style:normal; font-size:12px; line-height:1.5; color:var(--muted); margin-top:10px; letter-spacing:.02em; }
.areas-bar svg{ grid-column:2; grid-row:4; align-self:end; width:16px; height:16px; opacity:.75; transition:transform .3s, opacity .3s; }
.areas-bar em{ background:linear-gradient(90deg, rgba(244,246,248,.8), rgba(244,246,248,.8)); }
.areas-bar button:hover em, .areas-bar button.on em{ width:56px; background:linear-gradient(90deg, #39A2FF, #9FD2FF 55%, #FFAB8B); box-shadow:0 0 8px rgba(57,162,255,.45); }
.areas-bar button:hover svg{ transform:translateX(4px); opacity:1; }

.travel{ min-height:100vh; display:flex; align-items:flex-end; padding-bottom:12vh; }
.travel .name{
  font-weight:300; font-stretch:122%; font-size:clamp(34px,5.4vw,84px); line-height:1; margin:0;
  letter-spacing:-.01em; text-shadow:0 2px 30px rgba(3,20,38,.6);
}
.travel .mode{ display:block; margin-top:18px; color:rgba(244,246,248,.78); font-size:18px; font-stretch:110%; text-shadow:0 0 18px rgba(3,20,38,.9); }

.read{ min-height:240vh; }
.read .stick{ position:sticky; top:0; height:100vh; display:flex; align-items:stretch; }
.panel{
  width:min(58%, 860px); height:100%; display:flex; flex-direction:column; justify-content:center;
  padding:calc(env(safe-area-inset-top,0px) + 120px) clamp(24px,6vw,96px) 72px;
}
.read:not(.active) .panel{ visibility:hidden; }
.panel [data-st]{ opacity:0; will-change:transform, opacity; }
.panel h2 .w{ display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.1em; margin-bottom:-.1em; }
.panel h2 .wi{ display:inline-block; transform:translateY(110%); will-change:transform; }
.panel.light{ background:var(--branco); color:var(--tinta); }
.panel.blue{ background:var(--bridge); color:#fff; margin-left:auto; }
.panel.coral{ background:#FFAB8B; color:var(--tinta); }
.panel{ position:relative; }
.panel > *:not(.pfx){ position:relative; z-index:1; }
.panel .pfx{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; opacity:0; display:block; }
.panel.bld{ background:transparent !important; }
.panel .area{ font-size:14px; font-stretch:112%; margin:0 0 28px; opacity:.7; }
.panel h2{
  font-weight:300; font-stretch:116%; font-size:clamp(34px,4.6vw,72px); line-height:1.04;
  letter-spacing:-.015em; margin:0 0 32px; max-width:12ch;
}
.panel p.body{ font-size:clamp(16px,1.3vw,19px); max-width:40ch; margin:0 0 40px; line-height:1.6; }
.panel .next{
  align-self:flex-start; font:inherit; font-size:15px; font-stretch:112%; color:inherit; background:none;
  border:1px solid currentColor; border-radius:40px; padding:12px 20px; cursor:pointer; opacity:.85;
}
.panel .next:hover{ opacity:1; }
.panel.light .next:focus-visible{ outline-color:var(--bridge); }

.contact{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:calc(var(--hy) + 86px) var(--gx) 48px; box-sizing:border-box; }
.contact h2{
  font-weight:300; font-stretch:118%; font-size:clamp(38px,5.6vw,88px); line-height:1.02;
  letter-spacing:-.015em; margin:0 0 28px; max-width:12ch;
}
.contact .where{ display:flex; gap:28px; color:var(--muted); font-size:15px; margin:0 0 40px; flex-wrap:wrap; }

/* Progress rail */
.rail{
  position:fixed; right:max(14px, calc(var(--gx) - 54px)); top:50%; transform:translateY(-50%); z-index:15;
  display:flex; flex-direction:column; gap:14px; align-items:flex-end;
}
.rail button{
  display:flex; align-items:center; gap:12px; background:none; border:0; cursor:pointer; padding:2px 0;
  color:var(--branco); font:inherit; font-size:12px; font-stretch:110%;
}
.rail button span{ opacity:0; transform:translateX(6px); transition:opacity .3s, transform .3s; white-space:nowrap; }
.rail button:hover span, .rail button:focus-visible span{ opacity:.9; transform:none; }
.rail button.on span{ opacity:.9; transform:none; }
body.on-panel .rail button.on:not(:hover) span{ opacity:0; }   /* sobre os painéis de vidro o nome só aparece ao passar o rato */
.rail button i{ width:18px; height:1px; background:var(--branco); opacity:.4; transition:width .3s, opacity .3s, background .3s; }
.rail button.on i{ width:34px; opacity:1; background:var(--estrutural); }
body.reading .rail{ mix-blend-mode:difference; }
body.reading-blue .rail{ opacity:0; pointer-events:none; }

.proto-note{
  position:fixed; right:var(--gx); bottom:calc(env(safe-area-inset-bottom,0px) + 14px); z-index:15; margin:0;
  font-size:11.5px; color:var(--muted); font-stretch:105%;
}
body.reading .proto-note{ opacity:0; }

@media (max-width: 900px){ .tagline, .hright .vr{ display:none; } }
@media (max-width: 1180px){
  .areas-bar span{ display:none; }
}
@media (max-width: 980px){ nav.main{ display:none; } }
@media (max-width: 820px){
  .hero-base{ display:none; }
  .hero{ padding-bottom:12vh; align-items:flex-end; }
  .menu{ grid-template-columns:1fr; gap:32px; overflow:auto; }
  .panel{ width:100%; }
  .panel.blue{ height:calc(100% - 96px - env(safe-area-inset-top,0px)); margin-top:calc(96px + env(safe-area-inset-top,0px)); padding-top:56px; }
  .rail{ display:none; }
  .tag{ font-size:11.5px; }
}
body.reading-blue .lang button[aria-pressed="true"]{ color:#fff; text-decoration:underline; text-underline-offset:5px; }
@media (max-width: 820px){
  body.reading-light .lang button, body.reading-light .lang span{ color:var(--tinta); }
  body.reading-light .lang button[aria-pressed="true"]{ color:var(--bridge); }
}
@media (prefers-reduced-motion: reduce){
  .panel, .tag, .rail *{ transition:none !important; }
}
/* ===== Tipografia tech: Geist + Geist Mono ===== */
:root{ --mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace; }
body{ font-family:"Geist", "Helvetica Neue", Arial, sans-serif; }
.hero h1, .travel .name, .panel h2, .contact h2{ font-weight:300; letter-spacing:-.035em; }
nav.main a, .tagline, .lang button, .lang span, .tag .num, .tag b, .areas-bar small, .areas-bar b, .scrollcue,
.explore b, .panel .area, .rail button, .proto-note, .panel .next, .cta, .travel .mode, .snd, .menu small, .mhead, .mclose, .mlinks a, .mcta{
  font-family:var(--mono); letter-spacing:.06em;
}
.tag b, .areas-bar b, nav.main a, .tagline, .explore b, .scrollcue{ letter-spacing:.1em; }
.br::before{ content:"[ "; opacity:.55; } .br::after{ content:" ]"; opacity:.55; }

/* ===== Som ===== */
.snd{ display:flex; align-items:center; gap:10px; background:none; border:0; color:var(--branco); cursor:pointer; font-size:11px; text-transform:uppercase; opacity:.75; padding:4px 0; }
.snd:hover{ opacity:1; }
.snd i{ display:flex; align-items:flex-end; gap:2px; height:11px; }
.snd i b{ width:2px; height:3px; background:currentColor; transition:height .2s; }
.snd.on i b{ animation:eq 1s ease-in-out infinite; }
.snd.on i b:nth-child(2){ animation-delay:-.3s; } .snd.on i b:nth-child(3){ animation-delay:-.6s; } .snd.on i b:nth-child(4){ animation-delay:-.15s; }
@keyframes eq{ 0%,100%{ height:3px; } 50%{ height:11px; } }
@media (max-width: 820px){ body.reading-light .snd{ color:var(--tinta); } }

/* ===== Menu compacto ===== */
.menu{ position:fixed; inset:auto; top:calc(env(safe-area-inset-top,0px) + 14px); right:clamp(14px,2.6vw,36px); z-index:40;
  width:min(380px, calc(100vw - 28px)); display:block; padding:22px 24px 24px; border:1px solid rgba(57,162,255,.25);
  background:rgba(3,15,30,.86); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); border-radius:4px;
  opacity:0; visibility:hidden; transform:translateY(-8px); transition:opacity .3s ease, transform .3s ease, visibility .3s; }
.menu.open{ opacity:1; visibility:visible; transform:none; }
.mhead{ display:flex; justify-content:space-between; align-items:center; font-size:11px; text-transform:uppercase; opacity:.9; margin-bottom:18px; }
.mhead span{ opacity:.55; }
.mclose{ background:none; border:0; color:var(--branco); cursor:pointer; font-size:11px; text-transform:uppercase; padding:4px 0; }
.mclose:hover{ color:var(--estrutural); }
.menu ol{ list-style:none; margin:0 0 6px; padding:0; }
.menu ol li{ border-top:1px solid rgba(244,246,248,.1); }
.menu ol button{ width:100%; display:flex; align-items:center; gap:14px; background:none; border:0; color:var(--branco); cursor:pointer; padding:11px 0; font-family:inherit; text-align:left; }
.menu ol button small{ font-size:10.5px; opacity:.5; min-width:2.2em; transition:color .25s, opacity .25s; }
.menu ol button span{ font-size:17px; font-weight:300; transition:transform .25s, color .25s; }
.menu ol button:hover small{ color:var(--estrutural); opacity:1; }
.menu ol button:hover span{ transform:translateX(4px); color:#fff; }
.mlinks{ display:flex; flex-wrap:wrap; gap:6px 18px; padding:14px 0 18px; border-top:1px solid rgba(244,246,248,.1); }
.mlinks a{ color:var(--branco); opacity:.7; text-decoration:none; font-size:11px; text-transform:uppercase; }
.mlinks a:hover{ opacity:1; color:var(--estrutural); }
.mcta{ display:flex; justify-content:space-between; align-items:center; background:var(--bridge); color:#fff; text-decoration:none; font-size:12px; text-transform:uppercase; padding:14px 16px; border-radius:2px; transition:background .25s; }
.mcta:hover{ background:#1f78ff; }
.menu .menu-lang{ margin-top:16px; padding-top:0; border:0; }
/* ===== Carregamento: nada aparece até a fonte e a cidade estarem prontas ===== */
#scene{ transition:opacity 1.4s ease; }
body.loading #scene{ opacity:0; }
.rv{ transition:opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); transition-delay:var(--d, 0s); }
body.loading .rv{ opacity:0 !important; transform:translateY(14px); }
body.loading #labels, body.loading .rail, body.loading .areas-bar{ border-color:transparent; }
body.loading #labels, body.loading .rail{ opacity:0; }
.areas-bar{ transition:border-color .8s ease .8s; }
#labels, .rail{ transition:opacity .8s ease .9s; }
#loader{ position:fixed; inset:0; z-index:60; display:grid; place-items:center; pointer-events:none; transition:opacity .6s ease; }
#loader div{ font-family:var(--mono); text-transform:uppercase; }
@keyframes load{ 0%{ transform:translateX(-100%); } 100%{ transform:translateX(260%); } }
body.ready #loader{ opacity:0; }
/* carregamento: só o cartão com o nome, com a mesma luz a percorrer a borda do menu */
#loader{ background:var(--noite); }
#loader .lbox{ position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center; height:52px; padding:0 34px; border-radius:14px;
  font-size:12px; letter-spacing:.12em; color:var(--branco);
  background:linear-gradient(140deg, rgba(120,160,220,.16), rgba(10,22,40,.22) 45%, rgba(10,22,40,.34));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 0 0 1px rgba(255,255,255,.07), 0 24px 70px rgba(0,0,0,.3); }
#loader .lbox > span:last-child{ position:relative; z-index:1; }
#loader .edge{ position:absolute; inset:0; z-index:3; border-radius:inherit; padding:1.4px; overflow:hidden; pointer-events:none;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
#loader .edge.glow{ padding:6px; filter:blur(6px); opacity:.42; z-index:2; }
#loader .edge i{ position:absolute; left:50%; top:50%; width:1400px; height:1400px; margin:-700px 0 0 -700px; background:conic-gradient(from 0deg, transparent 0 58%, rgba(94,67,255,0) 60%, rgba(94,67,255,.9) 74%, #39A2FF 85%, #EAF6FF 92%, #FFAB8B 96.5%, transparent 99.5%);
  animation:edgeSpin 4.6s linear infinite; }
#loader .edge.glow i{ animation-delay:-.08s; }
@media (prefers-reduced-motion: reduce){ #loader .edge i{ animation:none; } #loader .edge{ opacity:.35; } }
@media (prefers-reduced-motion: reduce){ .rv{ transition:opacity .3s ease; } body.loading .rv{ transform:none; } }
/* ===== Botão de som: onda animada quando ligado, linha quando desligado ===== */
.hright{ gap:clamp(18px,2vw,30px); }
.snd{ display:flex; align-items:center; gap:12px; font-family:"Geist", sans-serif; font-size:14px; letter-spacing:0; text-transform:none; opacity:.9; }
.snd .wave{ width:36px; height:16px; overflow:hidden; }
.snd .wave path{ fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; vector-effect:non-scaling-stroke; }
.snd .wave g{ transform-origin:50% 50%; transform:scaleY(.04); transition:transform .5s cubic-bezier(.3,.7,.2,1); }
.snd.on .wave g{ transform:scaleY(1); }
.snd .wave path{ animation:waveX 1.1s linear infinite; animation-play-state:paused; }
.snd.on .wave path{ animation-play-state:running; }
@keyframes waveX{ from{ transform:translateX(0); } to{ transform:translateX(18px); } }

/* ===== Menu em cartão que se expande ===== */
.mslot{ width:300px; height:52px; flex:none; }
.mcard{ position:fixed; z-index:40; top:var(--hy); right:var(--gx); width:300px;
  border-radius:14px; color:var(--branco);
  background:linear-gradient(140deg, rgba(120,160,220,.16), rgba(10,22,40,.22) 45%, rgba(10,22,40,.34));
  backdrop-filter:blur(34px) saturate(1.5) brightness(.9); -webkit-backdrop-filter:blur(34px) saturate(1.5) brightness(.9);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 0 0 1px rgba(255,255,255,.07), 0 24px 70px rgba(0,0,0,.3); transition:width .55s cubic-bezier(.7,0,.2,1), border-radius .55s, background .4s; overflow:hidden; }
.mcard::before{ content:""; position:absolute; inset:0; pointer-events:none; opacity:.22; mix-blend-mode:overlay; z-index:0;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.mcard.open{ width:min(440px, calc(100vw - 32px)); border-radius:18px; background:linear-gradient(150deg, rgba(120,160,220,.14), rgba(8,18,34,.3) 40%, rgba(8,18,34,.42)); }
.mcard > *{ position:relative; z-index:1; }
.mtop{ position:relative; width:100%; height:52px; display:flex; align-items:center; justify-content:space-between; padding:0 20px 0 22px;
  background:none; border:0; color:inherit; cursor:pointer; font-family:var(--mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; }
.dots{ position:relative; width:16px; height:16px; transition:transform .55s cubic-bezier(.7,0,.2,1); }
.dots i{ position:absolute; width:3px; height:3px; border-radius:50%; background:currentColor; transition:transform .45s cubic-bezier(.7,0,.2,1), opacity .3s; }
.dots i:nth-child(1){ left:0; top:0; } .dots i:nth-child(2){ right:0; top:0; } .dots i:nth-child(3){ left:0; bottom:0; } .dots i:nth-child(4){ right:0; bottom:0; }
.mtop:hover .dots i:nth-child(1){ transform:translate(-2px,-2px); } .mtop:hover .dots i:nth-child(2){ transform:translate(2px,-2px); }
.mtop:hover .dots i:nth-child(3){ transform:translate(-2px,2px); } .mtop:hover .dots i:nth-child(4){ transform:translate(2px,2px); }
.mcard.open .dots{ transform:rotate(45deg); }
.mcard.open .dots i:nth-child(1){ transform:translate(6.5px,0); } .mcard.open .dots i:nth-child(4){ transform:translate(-6.5px,0); }
.mbody{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .6s cubic-bezier(.7,0,.2,1); }
.mcard.open .mbody{ grid-template-rows:1fr; }
.minner{ overflow:hidden; padding:0 22px; }
.minner::before{ content:""; display:block; height:1px; background:rgba(244,246,248,.12); margin-bottom:26px; }
.mcard ol{ list-style:none; margin:0; padding:0 0 18px; }
.mcard ol a, .mcard ol button{ display:flex; align-items:center; gap:16px; width:100%; background:none; border:0; padding:4px 0; cursor:pointer;
  font-family:"Geist", sans-serif; font-weight:400; font-size:clamp(26px,2.4vw,34px); letter-spacing:-.02em; line-height:1.18; color:rgba(244,246,248,.34); text-decoration:none; text-align:left;
  opacity:0; transform:translateY(12px); transition:color .3s, opacity .4s, transform .5s cubic-bezier(.2,.7,.2,1); }
.mcard ol i{ width:5px; height:5px; border-radius:50%; background:currentColor; flex:none; transition:background .3s, box-shadow .3s; }
.mcard ol a:hover, .mcard ol button:hover, .mcard ol .on{ color:#fff; }
.mcard ol .on i{ background:var(--estrutural); box-shadow:0 0 8px rgba(57,162,255,.9); }
.mcard.open ol a, .mcard.open ol button{ opacity:1; transform:none; }
.mcard.open ol li:nth-child(2) > *{ transition-delay:.04s; } .mcard.open ol li:nth-child(3) > *{ transition-delay:.08s; }
.mcard.open ol li:nth-child(4) > *{ transition-delay:.12s; } .mcard.open ol li:nth-child(5) > *{ transition-delay:.16s; }
.mcard.open ol li:nth-child(6) > *{ transition-delay:.2s; } .mcard.open ol li:nth-child(7) > *{ transition-delay:.24s; }
.mcard .mlinks{ display:flex; gap:20px; padding:16px 0 20px; border-top:1px solid rgba(244,246,248,.1); }
.mcard .mlinks a{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; opacity:.6; }
.mcard .mcta{ display:flex; justify-content:center; align-items:center; height:52px; margin-bottom:22px; border-radius:999px; background:rgba(244,246,248,.14); box-shadow:inset 0 1px 0 rgba(255,255,255,.15);
  color:var(--branco); font-family:"Geist", sans-serif; font-size:15px; letter-spacing:0; text-transform:none; text-decoration:none; transition:background .3s, color .3s; }
.mcard .mcta{ position:relative; overflow:hidden; isolation:isolate; }
.mcard .mcta span{ position:relative; z-index:1; }
.mcard .mcta .cfill{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.mcard .mcta .cfill path{ fill:var(--bridge); }
@media (max-width: 820px){ .mslot{ width:150px; } .mcard{ width:150px; } }
@media (max-width: 640px){
  .logo-plate .lsvg, .logo-plate img{ width:128px; }
  .hright{ gap:12px; }
  .langmin{ gap:6px; } .langmin button{ width:20px; font-size:10.5px; }
  .langmin[data-cur="en"] .ind{ transform:translateX(26px); } .langmin[data-cur="es"] .ind{ transform:translateX(52px); }
  .langmin .ind{ width:14px; left:3px; }
  .snd span{ display:none; } .snd .wave{ width:30px; }
  .mslot{ width:46px; height:46px; }
  .mcard{ width:46px; border-radius:12px; }
  .mcard .mtop{ height:46px; padding:0; justify-content:center; }
  .mcard .mlabel{ display:none; }
  .mcard.open{ width:calc(100vw - 2*var(--gx)); }
  .mcard.open .mtop{ justify-content:space-between; padding:0 18px 0 20px; }
  .mcard.open .mlabel{ display:inline; }
  header{ height:calc(var(--hy) + 46px); }
  .proto-note{ display:none; }
}
@media (max-width: 420px){ .snd span{ display:none; } }
@media (prefers-reduced-motion: reduce){ .mcard, .mbody, .mcard ol a, .mcard ol button, .dots, .dots i{ transition:none !important; } .snd .wave path{ animation:none; } }
/* ===== Luz que percorre a borda do menu (paleta Bridge) ===== */
.mcard > .edge{ position:absolute; inset:0; z-index:3; border-radius:inherit; padding:1.4px; overflow:hidden; pointer-events:none;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
.mcard > .edge.glow{ padding:6px; filter:blur(6px); opacity:.42; z-index:2; }
.mcard > .edge i{ position:absolute; left:50%; top:50%; width:1400px; height:1400px; margin:-700px 0 0 -700px;
  background:conic-gradient(from 0deg, transparent 0 58%, rgba(94,67,255,0) 60%, rgba(94,67,255,.9) 74%, #39A2FF 85%, #EAF6FF 92%, #FFAB8B 96.5%, transparent 99.5%);
  animation:edgeSpin 4.6s linear infinite; }
.mcard > .edge.glow i{ animation-delay:-.08s; }
@keyframes edgeSpin{ to{ transform:rotate(360deg); } }
.mcard:hover > .edge i{ animation-duration:2.6s; }
@media (prefers-reduced-motion: reduce){ .mcard > .edge i{ animation:none; } .mcard > .edge{ opacity:.35; } }
/* ===== Seletor de idioma em cápsula de vidro, com indicador que desliza ===== */
.langsw{ position:relative; display:flex; gap:0; padding:6px; border-radius:14px; overflow:hidden;
  background:linear-gradient(140deg, rgba(120,160,220,.16), rgba(10,22,40,.26) 50%, rgba(10,22,40,.36));
  backdrop-filter:blur(24px) saturate(1.4); -webkit-backdrop-filter:blur(24px) saturate(1.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 0 0 1px rgba(255,255,255,.08); }
.langsw::before{ content:""; position:absolute; z-index:0; inset:0; opacity:.2; mix-blend-mode:overlay; pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.langsw .ind{ opacity:1; position:absolute; z-index:1; left:6px; top:6px; width:44px; height:40px; border-radius:9px; background:var(--branco);
  box-shadow:0 0 0 1px rgba(255,255,255,.6), 0 0 16px rgba(57,162,255,.55), 0 0 34px rgba(94,67,255,.25);
  transition:transform .55s cubic-bezier(.65,-0.25,.25,1.3); }
.langsw[data-cur="en"] .ind{ transform:translateX(44px); }
.langsw[data-cur="es"] .ind{ transform:translateX(88px); }
.langsw button, body.reading-light .langsw button{ position:relative; z-index:2; width:44px; height:40px; padding:0; border-radius:9px; opacity:1;
  font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:rgba(244,246,248,.62); transition:color .35s ease; }
.langsw button:hover, body.reading-light .langsw button:hover{ color:#fff; }
.langsw button[aria-pressed="true"], body.reading-light .langsw button[aria-pressed="true"]{ color:var(--noite); text-decoration:none; }
@media (prefers-reduced-motion: reduce){ .langsw .ind{ transition:none; } }
/* ===== Idioma discreto, junto do som ===== */
.langmin{ position:relative; display:flex; gap:12px; align-items:center; padding:6px 0; }
.langmin button, body.reading-light .langmin button{ width:22px; padding:2px 0 5px; background:none; border:0; cursor:pointer; opacity:1;
  font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:rgba(244,246,248,.38); transition:color .3s ease; }
.langmin button:hover{ color:rgba(244,246,248,.85); }
.langmin button[aria-pressed="true"], body.reading-light .langmin button[aria-pressed="true"]{ color:#fff; }
.langmin .ind{ opacity:1; position:absolute; left:2px; bottom:0; width:18px; height:2px; border-radius:2px;
  background:linear-gradient(90deg, #39A2FF, #FFAB8B); box-shadow:0 0 8px rgba(57,162,255,.7), 0 0 6px rgba(255,171,139,.5); transition:transform .5s cubic-bezier(.65,-0.25,.25,1.3); }
.langmin[data-cur="en"] .ind{ transform:translateX(34px); }
.langmin[data-cur="es"] .ind{ transform:translateX(68px); }
@media (max-width: 820px){
  body.reading-light .langmin button{ color:rgba(10,27,46,.5); }
  body.reading-light .langmin button[aria-pressed="true"]{ color:var(--tinta); }
  body.reading-light .langmin .ind{ background:var(--tinta); box-shadow:none; }
}
@media (prefers-reduced-motion: reduce){ .langmin .ind{ transition:none; } }
.snd.on .wave path{ stroke:url(#sndGrad); stroke-width:1.8; filter:drop-shadow(0 0 3px rgba(57,162,255,.55)); }

/* ===== Links do menu: as letras acendem e apagam uma a uma, em ordem aleatória ===== */
.mcard ol a, .mcard ol button{ color:rgba(244,246,248,.34); }
.mcard ol a:hover, .mcard ol button:hover, .mcard ol .on{ color:rgba(244,246,248,.34); }
.mcard ol a, .mcard ol button{ font-size:clamp(19px,1.73vw,25px); text-transform:uppercase; letter-spacing:.01em; }
.mtxt{ position:relative; display:inline-block; }
.mtxt .dim{ color:rgba(244,246,248,.28); }
.mtxt .lit{ position:absolute; left:0; top:0; right:0; color:#fff; white-space:normal; pointer-events:none;   /* quebra as linhas igual à palavra por baixo */
  -webkit-mask-image:linear-gradient(90deg, transparent 0%, transparent 25%, #000 37.5%, #000 62.5%, transparent 75%, transparent 100%);
  mask-image:linear-gradient(90deg, transparent 0%, transparent 25%, #000 37.5%, #000 62.5%, transparent 75%, transparent 100%);
  -webkit-mask-size:400% 100%; mask-size:400% 100%; -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-position:100% 0; mask-position:100% 0; }
.mcard ol .hov i, .mcard ol .on i{ background:#fff; }
.mcard ol .on i{ background:var(--estrutural); box-shadow:0 0 8px rgba(57,162,255,.9); }
.sw{ display:inline-block; white-space:nowrap; }
.typing{ position:relative; }
.typing .sc{ opacity:0; }
.typing .sc.on{ opacity:1; }
.tcur{ position:absolute; left:0; top:0; width:max(2px, .06em); border-radius:1px; pointer-events:none;
  background:linear-gradient(180deg, #9FD2FF, #39A2FF 45%, #5E43FF);
  box-shadow:0 0 10px rgba(57,162,255,.9), 0 0 22px rgba(94,67,255,.5); transition:transform .07s linear; }
.tcur.blink{ animation:curBlink .55s steps(1) 3 forwards; }
@keyframes curBlink{ 0%{ opacity:1; } 50%{ opacity:0; } 100%{ opacity:0; } }

/* ===== Títulos em caixa alta, 15% menores ===== */
.hero h1, .travel .name, .panel h2, .contact h2{ text-transform:uppercase; letter-spacing:-.012em; }
.hero h1{ font-size:clamp(29px,3.76vw,60px); }
.travel .name{ font-size:clamp(25px,3.9vw,60px); }
.panel h2{ font-size:clamp(25px,3.3vw,52px); }
.contact h2{ font-size:clamp(27px,4.05vw,64px); }
/* ===== Contactos: painel de vidro com o fundo desfocado ===== */
.cglass{ position:relative; width:min(1180px, 100%); border-radius:18px; overflow:hidden; isolation:isolate;
  background:linear-gradient(150deg, rgba(120,160,220,.12), rgba(8,18,34,.32) 45%, rgba(8,18,34,.46));
  backdrop-filter:blur(38px) saturate(1.4) brightness(.85); -webkit-backdrop-filter:blur(38px) saturate(1.4) brightness(.85);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 0 0 1px rgba(255,255,255,.08), 0 30px 90px rgba(0,0,0,.35); }
.cglass::before{ content:""; position:absolute; inset:0; z-index:-1; opacity:.2; mix-blend-mode:overlay; pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.ccircle-old{ position:absolute; z-index:-1; width:min(640px, 70vw); aspect-ratio:1; border-radius:50%; border:1px solid rgba(244,246,248,.09);
  left:52%; top:42%; transform:translate(-50%,-50%); pointer-events:none; }
.ctop{ padding:clamp(32px,4vw,72px) 16px clamp(28px,3vw,52px) clamp(24px,6vw,100px); }
.cglass h2{ margin:0 0 clamp(20px,2.4vw,34px); max-width:none; }
.clead{ max-width:44ch; font-size:clamp(16px,1.35vw,20px); line-height:1.55; margin:0 0 22px; color:rgba(244,246,248,.9); }
.cask{ font-size:clamp(16px,1.35vw,20px); margin:0 0 36px; color:rgba(244,246,248,.9); }
.cbottom{ display:grid; grid-template-columns:1fr 1fr; border-top:1px solid rgba(244,246,248,.1); }
.cbottom > div{ padding:clamp(20px,2.4vw,36px) clamp(24px,6vw,100px); }
.cbottom > div + div{ border-left:1px solid rgba(244,246,248,.1); padding-left:clamp(24px,6vw,100px); }
.cbottom small{ display:block; font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:rgba(244,246,248,.5); margin-bottom:22px; }
.cbottom ul{ list-style:none; margin:0; padding:0; display:grid; gap:6px; font-size:15px; }
.cbottom a{ color:var(--branco); text-decoration:none; transition:color .25s; }
.cbottom a:hover{ color:var(--estrutural); }
@media (max-width: 700px){ .cbottom{ grid-template-columns:1fr; } .cbottom > div + div{ border-left:0; border-top:1px solid rgba(244,246,248,.1); padding-left:clamp(24px,8vw,120px); } }
/* ===== Contactos: grelha com globo, fechar, borda luminosa ===== */
.contact h2{ white-space:pre-line; }
.cgrid{ display:grid; grid-template-columns:1fr minmax(260px, .95fr); align-items:center; }
.cglobe{ display:flex; flex-direction:column; align-items:center; gap:18px; padding:clamp(24px,3vw,48px) clamp(20px,4vw,64px) clamp(24px,3vw,40px) 0; }
#globe{ display:block; cursor:grab; touch-action:none; }
#globe:active{ cursor:grabbing; }
.gpills{ position:relative; display:flex; padding:5px; border-radius:12px; overflow:hidden;
  background:linear-gradient(140deg, rgba(120,160,220,.14), rgba(10,22,40,.3)); box-shadow:inset 0 1px 0 rgba(255,255,255,.1), inset 0 0 0 1px rgba(255,255,255,.08); }
.gpills .gind{ position:absolute; z-index:0; left:5px; top:5px; width:92px; height:34px; border-radius:8px; background:var(--branco);
  box-shadow:0 0 14px rgba(57,162,255,.45); transition:transform .55s cubic-bezier(.65,-0.25,.25,1.3); }
.gpills[data-cur="br"] .gind{ transform:translateX(92px); }
.gpills[data-cur="ch"] .gind{ transform:translateX(184px); }
.gpills button{ position:relative; z-index:1; width:92px; height:34px; background:none; border:0; cursor:pointer; border-radius:8px;
  font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:rgba(244,246,248,.6); transition:color .35s; }
.gpills button:hover{ color:#fff; }
.gpills button[aria-pressed="true"]{ color:var(--noite); }
.cclose{ position:absolute; z-index:4; top:22px; right:26px; background:none; border:0; cursor:pointer; color:rgba(244,246,248,.75);
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; padding:6px 0; transition:color .25s; }
.cclose:hover{ color:#fff; }
.cglass{ transition:opacity .55s ease, transform .6s cubic-bezier(.7,0,.2,1), filter .55s ease; }
.cglass.closed{ opacity:0; transform:scale(.96) translateY(10px); filter:blur(6px); pointer-events:none; }
.creopen{ position:absolute; left:50%; bottom:clamp(48px,10vh,110px); transform:translateX(-50%); opacity:0; transition:opacity .5s ease .25s; }
.creopen.show{ opacity:1; }
.cglass > .edge, .pwpanel > .edge{ position:absolute; inset:0; z-index:3; border-radius:inherit; padding:1.4px; overflow:hidden; pointer-events:none;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
.cglass > .edge.glow, .pwpanel > .edge.glow{ padding:7px; filter:blur(7px); opacity:.4; z-index:2; }
.cglass > .edge i, .pwpanel > .edge i{ position:absolute; left:50%; top:50%; width:2800px; height:2800px; margin:-1400px 0 0 -1400px;
  background:conic-gradient(from 0deg, transparent 0 66%, rgba(94,67,255,0) 68%, rgba(94,67,255,.9) 79%, #39A2FF 88%, #EAF6FF 94%, #FFAB8B 97.5%, transparent 99.6%);
  animation:edgeSpin 7s linear infinite; }
@media (max-width: 900px){ .cgrid{ grid-template-columns:1fr; } .cglobe{ padding:0 16px 28px; align-items:center; } .gcap{ padding:0 8px; } }
@media (max-width: 640px){ .gpills .gind, .gpills button{ width:84px; } .gpills[data-cur="br"] .gind{ transform:translateX(84px); } .gpills[data-cur="ch"] .gind{ transform:translateX(168px); }
  body:not(.reading) header::before{ content:""; position:absolute; inset:0 0 -26px 0; z-index:-1; pointer-events:none; background:rgba(3,13,26,.82); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); -webkit-mask:linear-gradient(#000 62%, transparent); mask:linear-gradient(#000 62%, transparent); } }
@media (prefers-reduced-motion: reduce){ .cglass > .edge i, .pwpanel > .edge i{ animation:none; } .cglass, .creopen, .gpills .gind{ transition:none; } }
/* ===== Dica no cursor para ativar o som ===== */
#sndhint{ position:fixed; left:0; top:0; z-index:70; pointer-events:none; opacity:0; transition:opacity .35s ease; will-change:transform;
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:rgba(244,246,248,.85); white-space:nowrap;
  text-shadow:0 0 12px rgba(3,20,38,.9), 0 0 2px rgba(3,20,38,.8); }

#sndhint.show{ opacity:1; }
/* ===== Arrastar a cidade ===== */
body.cangrab main, body.cangrab main section{ cursor:grab; }
body.dragging, body.dragging *{ cursor:grabbing !important; user-select:none; -webkit-user-select:none; }
/* ===== Beta02 ===== */
.hero h1{ white-space:pre-line; max-width:none; }
.eyebrow{ margin:0 0 18px; font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
/* painel: número em degradê, passos ligados por uma linha de luz, serviços em chips */
.panel.light{ --pbg:#F4F6F8; } .panel.blue{ --pbg:#0163FE; } .panel.coral{ --pbg:#FFAB8B; }
.panel{ padding-top:calc(var(--hy) + 66px); padding-bottom:44px; }
.panel h2{ margin-bottom:22px; }
.panel p.body{ margin-bottom:30px; max-width:44ch; }
.panel .area{ display:flex; align-items:baseline; gap:12px; font-family:var(--mono); letter-spacing:.1em; text-transform:uppercase; font-size:12px; opacity:1; }
.pnum{ font-weight:500; font-size:13px; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); -webkit-background-clip:text; background-clip:text; color:transparent; }
.panel.blue .pnum{ background:linear-gradient(90deg, #9FD2FF, #FFAB8B); -webkit-background-clip:text; background-clip:text; }
.plbl{ display:block; font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; opacity:.6; margin-bottom:14px; }
.snodes{ list-style:none; margin:0 0 28px; padding:0; display:flex; justify-content:space-between; position:relative; max-width:420px; }
.snodes::before{ content:""; position:absolute; left:7px; right:7px; top:6px; height:2px; border-radius:2px; background:linear-gradient(90deg, #39A2FF, #5E43FF 52%, #FF8A5B); }
.snodes::after{ content:""; position:absolute; top:3px; left:2px; width:8px; height:8px; border-radius:50%; background:#fff; box-shadow:0 0 8px 2px rgba(159,210,255,.95), 0 0 16px 4px rgba(94,67,255,.45); animation:snode 3s cubic-bezier(.45,0,.55,1) infinite; }
@keyframes snode{ 0%{ left:2px; opacity:0; } 12%{ opacity:1; } 88%{ opacity:1; } 100%{ left:calc(100% - 10px); opacity:0; } }
.snodes li{ position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; gap:10px; font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; }
.snodes li:first-of-type{ align-items:flex-start; } .snodes li:last-of-type{ align-items:flex-end; }
.snodes li i{ width:14px; height:14px; border-radius:50%; background:var(--pbg); box-shadow:0 0 0 2px #39A2FF; }
.snodes li:nth-child(2) i{ box-shadow:0 0 0 2px #5E43FF; } .snodes li:nth-child(3) i{ box-shadow:0 0 0 2px #FF8A5B; }
.chips{ list-style:none; margin:0 0 32px; padding:0; display:flex; flex-wrap:wrap; gap:8px; max-width:560px; }
.chips li{ font-family:var(--mono); font-size:11px; letter-spacing:.05em; padding:7px 11px; border-radius:8px;
  border:1px solid color-mix(in srgb, currentColor 26%, transparent); background:color-mix(in srgb, currentColor 5%, transparent); }
/* Capital & Investimento */
.capital{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:calc(var(--hy) + 86px) var(--gx) 48px; box-sizing:border-box; }
.capital h2{ white-space:pre-line; text-transform:uppercase; font-weight:300; letter-spacing:-.012em; font-size:clamp(27px,4.05vw,64px); line-height:1.02; margin:0 0 22px; }
.caphead{ padding:clamp(28px,3vw,52px) clamp(24px,6vw,100px) clamp(20px,2.2vw,32px); }
.capgrid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3, 1fr); border-top:1px solid rgba(244,246,248,.1); }
.capgrid li{ position:relative; padding:20px clamp(20px,3vw,40px) 22px; display:flex; flex-direction:column; gap:8px; border-right:1px solid rgba(244,246,248,.1); border-bottom:1px solid rgba(244,246,248,.1); transition:background .35s ease; }
.capgrid li:nth-child(3n){ border-right:0; }
.capgrid li::before{ content:""; position:absolute; left:clamp(20px,3vw,40px); top:0; width:0; height:2px; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); transition:width .5s cubic-bezier(.2,.7,.2,1); }
.capgrid li:hover{ background:rgba(120,160,220,.06); }
.capgrid li:hover::before{ width:56px; }
.cnum{ font-family:var(--mono); font-size:12px; letter-spacing:.1em; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); -webkit-background-clip:text; background-clip:text; color:transparent; width:max-content; }
.capgrid b{ font-weight:400; font-size:clamp(16px,1.3vw,19px); }
.cline{ font-size:13.5px; line-height:1.5; color:var(--muted); }
.capfoot{ padding:clamp(18px,2.2vw,30px) clamp(24px,6vw,100px); }
.gcap{ margin:0; min-height:1.2em; font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); text-align:center; }
@media (max-width: 900px){ .capgrid{ grid-template-columns:1fr 1fr; } .capgrid li:nth-child(3n){ border-right:1px solid rgba(244,246,248,.1); } .capgrid li:nth-child(2n){ border-right:0; } }
@media (max-width: 560px){ .capgrid{ grid-template-columns:1fr; } .capgrid li{ border-right:0 !important; } }
@media (prefers-reduced-motion: reduce){ .snodes::after{ animation:none; opacity:0; } }
/* resultado no fim de cada painel */
.pres{ display:flex; gap:12px; align-items:flex-start; max-width:560px; margin:0 0 26px; padding:13px 16px; border-radius:10px;
  border:1px solid color-mix(in srgb, currentColor 22%, transparent); background:color-mix(in srgb, currentColor 4%, transparent); font-size:14px; line-height:1.5; }
.pres b{ display:block; font-weight:500; font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; margin-bottom:3px; opacity:.75; }
.ptarget{ flex:none; width:22px; height:22px; margin-top:2px; fill:none; stroke:url(#solGrad); stroke-width:1.5; }
.panel.blue .ptarget{ stroke:#fff; }
.panel .chips{ margin-bottom:22px; }
.panel h2{ font-size:clamp(24px,2.9vw,46px); }
@media (max-height: 840px){ .panel p.body{ font-size:15px; margin-bottom:20px; } .snodes{ margin-bottom:18px; } .chips li{ padding:5px 9px; } .pres{ padding:10px 14px; margin-bottom:18px; } }
/* Soluções de software */
.solucoes{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:calc(var(--hy) + 74px) var(--gx) 36px; box-sizing:border-box; }
.solwrap{ width:100%; }
.solucoes h2{ white-space:pre-line; text-transform:uppercase; font-weight:300; letter-spacing:-.012em; font-size:clamp(26px,3vw,48px); line-height:1.02; margin:0 0 18px; }
.solhead{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(20px,4vw,64px); align-items:end; margin-bottom:clamp(18px,2.2vw,30px); }
.solhead .eyebrow{ grid-column:1 / -1; margin-bottom:-6px; }
.solhead h2{ margin:0; }
.solhead .clead{ margin:0; font-size:clamp(15px,1.2vw,18px); text-shadow:0 0 14px rgba(3,20,38,.95), 0 0 30px rgba(3,20,38,.8); }
.solucoes h2{ text-shadow:0 0 30px rgba(3,20,38,.7); }
.solgrid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; }
.solgrid > li{ position:relative; overflow:hidden; isolation:isolate; padding:16px 20px 18px; border-radius:14px;
  background:linear-gradient(150deg, rgba(120,160,220,.12), rgba(8,18,34,.34) 45%, rgba(8,18,34,.48));
  backdrop-filter:blur(26px) saturate(1.3); -webkit-backdrop-filter:blur(26px) saturate(1.3);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1), inset 0 0 0 1px rgba(255,255,255,.07); transition:transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s; }
.solgrid > li::before{ content:""; position:absolute; left:22px; top:0; width:0; height:2px; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); transition:width .5s cubic-bezier(.2,.7,.2,1); }
.solgrid > li:hover{ transform:translateY(-3px); box-shadow:inset 0 1px 0 rgba(255,255,255,.14), inset 0 0 0 1px rgba(57,162,255,.25), 0 18px 40px rgba(0,0,0,.25); }
.solgrid > li:hover::before{ width:64px; }
.sico{ width:26px; height:26px; fill:none; stroke:url(#solGrad); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; margin-bottom:12px; filter:drop-shadow(0 0 6px rgba(57,162,255,.35)); }
.solgrid b{ display:block; font-family:var(--mono); font-weight:500; font-size:12px; letter-spacing:.1em; text-transform:uppercase; margin-bottom:4px; }
.ssub{ display:block; font-size:13px; color:var(--muted); margin-bottom:10px; }
.solgrid ul{ list-style:none; margin:0; padding:0; display:grid; gap:3px; }
.solgrid ul li{ position:relative; padding-left:14px; font-size:12.5px; line-height:1.45; color:rgba(244,246,248,.86); }
.solgrid ul li::before{ content:""; position:absolute; left:0; top:.6em; width:5px; height:5px; border-radius:50%; background:linear-gradient(135deg, #39A2FF, #FF8A5B); }
@media (max-width: 1000px){ .solgrid{ grid-template-columns:1fr 1fr; } .solhead{ grid-template-columns:1fr; } }
@media (max-width: 620px){ .solgrid{ grid-template-columns:1fr; } }
/* ===== Páginas em janela ===== */
html.pw-lock{ overflow:hidden; }
.pagewin{ position:fixed; inset:0; z-index:50; }
.pwback{ position:absolute; inset:0; background:rgba(2,10,21,.42); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); opacity:0; transition:opacity .5s ease; }
.pwpanel{ position:absolute; top:calc(var(--hy) + 70px); left:var(--gx); right:var(--gx); bottom:24px; border-radius:18px; overflow:hidden; isolation:isolate; display:flex; flex-direction:column;
  background:linear-gradient(150deg, rgba(120,160,220,.12), rgba(6,16,30,.62) 40%, rgba(6,16,30,.74));
  backdrop-filter:blur(36px) saturate(1.3); -webkit-backdrop-filter:blur(36px) saturate(1.3);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 0 0 1px rgba(255,255,255,.08), 0 30px 90px rgba(0,0,0,.45);
  opacity:0; transform:translateY(18px) scale(.985); filter:blur(4px); transition:opacity .5s ease, transform .6s cubic-bezier(.2,.7,.2,1), filter .5s ease; }
.pagewin.open .pwback{ opacity:1; }
.pagewin.open .pwpanel{ opacity:1; transform:none; filter:none; }
.pwbar{ flex:none; display:flex; justify-content:space-between; align-items:center; padding:20px clamp(24px,5vw,72px) 0; position:relative; z-index:4; }
.pwbar .cclose{ position:absolute; top:22px; right:26px; }
.pwbar{ padding-right:120px; }
.pwcrumb{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.pwscroll{ flex:1; overflow-y:auto; padding:clamp(18px,2.4vw,36px) clamp(24px,5vw,72px) 60px; scrollbar-width:thin; scrollbar-color:rgba(57,162,255,.5) transparent; position:relative; z-index:1; }
.pwscroll::-webkit-scrollbar{ width:6px; } .pwscroll::-webkit-scrollbar-thumb{ background:linear-gradient(#39A2FF,#5E43FF); border-radius:6px; }
.pwh{ white-space:pre-line; text-transform:uppercase; font-weight:300; letter-spacing:-.012em; font-size:clamp(28px,3.6vw,56px); line-height:1.02; margin:0 0 22px; }
.pwlead{ max-width:62ch; font-size:clamp(15px,1.25vw,18px); line-height:1.6; color:rgba(244,246,248,.88); margin:0; }
.pwsec{ margin-top:clamp(34px,4vw,56px); min-height:0; }
.pwgrid{ display:grid; gap:14px; }
.pwgrid.c3{ grid-template-columns:repeat(3, 1fr); } .pwgrid.c4{ grid-template-columns:repeat(4, 1fr); }
.gcard{ position:relative; padding:20px 22px 22px; border-radius:14px; background:rgba(120,160,220,.06);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), inset 0 0 0 1px rgba(255,255,255,.07); transition:transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s; }
.gcard::before{ content:""; position:absolute; left:22px; top:0; width:0; height:2px; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); transition:width .5s cubic-bezier(.2,.7,.2,1); }
.gcard:hover{ transform:translateY(-3px); box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 0 0 1px rgba(57,162,255,.25); }
.gcard:hover::before{ width:64px; }
.gcard b{ display:block; font-family:var(--mono); font-weight:500; font-size:12px; letter-spacing:.1em; text-transform:uppercase; margin:6px 0 4px; }
.gcard .cnum{ display:block; font-size:13px; }
.gcard ul{ list-style:none; margin:12px 0 0; padding:0; display:grid; gap:4px; }
.gcard ul li{ position:relative; padding-left:14px; font-size:13px; line-height:1.45; color:rgba(244,246,248,.86); }
.gcard ul li::before{ content:""; position:absolute; left:0; top:.6em; width:5px; height:5px; border-radius:50%; background:linear-gradient(135deg, #39A2FF, #FF8A5B); }
.gcard.brand .bname{ font-family:"Geist", sans-serif; font-weight:400; font-size:22px; letter-spacing:-.01em; text-transform:none; margin:0 0 4px; }
.pwico{ width:26px; height:26px; fill:none; stroke:url(#solGrad); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 6px rgba(57,162,255,.35)); }
.gcard.model{ display:flex; flex-direction:column; }
.gcard.model .pwcta{ margin-top:auto; align-self:flex-start; }
.gcard.model ul{ margin-bottom:20px; }
.pwgrid.flow{ gap:34px; }
.pwgrid.flow .gcard + .gcard::after{ content:"»"; position:absolute; left:-25px; top:50%; transform:translateY(-50%); font-size:22px; color:#39A2FF; text-shadow:0 0 10px rgba(57,162,255,.8); }
.pwres{ color:var(--branco); max-width:none; }
.pwchips li{ color:var(--branco); }
.pwfoot{ margin-top:clamp(34px,4vw,56px); }
/* linha do tempo do grupo */
.tline{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3, 1fr) minmax(260px, 1fr); position:relative; max-width:none; }
.tline li:nth-child(4){ padding-right:8px; }
.tline::before{ content:""; position:absolute; left:8px; width:calc(var(--tl-end, 75%) - 8px); top:7px; height:2px; border-radius:2px; background:linear-gradient(90deg, #39A2FF, #5E43FF 52%, #FF8A5B); }
.tline::after{ content:""; position:absolute; top:4px; left:4px; width:9px; height:9px; border-radius:50%; background:#fff; box-shadow:0 0 8px 2px rgba(159,210,255,.95), 0 0 18px 4px rgba(94,67,255,.45); animation:tnode 4.6s cubic-bezier(.45,0,.55,1) infinite; }
@keyframes tnode{ 0%{ left:4px; opacity:0; } 10%{ opacity:1; } 90%{ opacity:1; } 100%{ left:calc(var(--tl-end, 75%) - 4px); opacity:0; } }
.tline li{ position:relative; display:flex; flex-direction:column; gap:4px; padding-top:28px; }
.tline li i{ position:absolute; top:0; left:0; width:16px; height:16px; border-radius:50%; background:#081a30; box-shadow:0 0 0 2px #39A2FF; }
.tline li:nth-child(2) i{ box-shadow:0 0 0 2px #5E43FF; } .tline li:nth-child(3) i{ box-shadow:0 0 0 2px #C27BC9; }
.tline li:nth-child(4) i{ background:linear-gradient(135deg, #FFAB8B, #FF8A5B); box-shadow:0 0 0 2px #FF8A5B, 0 0 14px 3px rgba(255,138,91,.55); }
.tline li:nth-child(4) i::after{ content:""; position:absolute; inset:-2px; border-radius:50%; border:1.5px solid #FF8A5B; animation:nowPulse 2.4s ease-out infinite; }
@keyframes nowPulse{ 0%{ transform:scale(1); opacity:.8; } 100%{ transform:scale(2.4); opacity:0; } }
.tline li:nth-child(4) b{ background:linear-gradient(90deg, #FFAB8B, #FF8A5B); -webkit-background-clip:text; background-clip:text; }
.tline b{ font-family:var(--mono); font-weight:500; font-size:22px; letter-spacing:.04em; background:linear-gradient(90deg, #9FD2FF, #FFAB8B); -webkit-background-clip:text; background-clip:text; color:transparent; width:max-content; }
.tline span{ font-size:16px; } .tline em{ font-style:normal; font-size:13px; color:var(--muted); }
@media (max-width: 1000px){ .pwgrid.c3, .pwgrid.c4{ grid-template-columns:1fr 1fr; } .pwgrid.flow .gcard + .gcard::after{ display:none; } }
@media (max-width: 900px){ .tline{ grid-template-columns:1fr 1fr; row-gap:26px; } .tline::before, .tline::after{ display:none; } }
@media (max-width: 620px){ .pwgrid.c3, .pwgrid.c4{ grid-template-columns:1fr; } .pwpanel{ left:10px; right:10px; bottom:10px; } .tline{ grid-template-columns:1fr; gap:18px; } .tline::before, .tline::after{ display:none; } }
@media (prefers-reduced-motion: reduce){ .pwpanel, .pwback{ transition:none; } .tline::after{ animation:none; opacity:0; } .tline li:nth-child(4) i::after{ animation:none; opacity:0; } }
/* linha dos passos com contraste em cada cor de painel */
.panel.blue .snodes::before{ background:linear-gradient(90deg, #EAF6FF, #9FD2FF 50%, #FFAB8B); }
.panel.blue .snodes li i{ box-shadow:0 0 0 2px #EAF6FF; } .panel.blue .snodes li:nth-child(2) i{ box-shadow:0 0 0 2px #9FD2FF; } .panel.blue .snodes li:nth-child(3) i{ box-shadow:0 0 0 2px #FFAB8B; }
.panel.coral .snodes::before{ background:linear-gradient(90deg, #031426, #5E43FF 50%, #0163FE); }
.panel.coral .snodes li i{ box-shadow:0 0 0 2px #031426; } .panel.coral .snodes li:nth-child(2) i{ box-shadow:0 0 0 2px #5E43FF; } .panel.coral .snodes li:nth-child(3) i{ box-shadow:0 0 0 2px #0163FE; }
.panel.coral .snodes::after{ background:#fff; box-shadow:0 0 8px 2px rgba(255,255,255,.9), 0 0 16px 4px rgba(94,67,255,.5); }
/* botão "seguir": o mesmo preenchimento curvo do "Contactar a Bridge", na cor que contrasta com cada painel */
.panel .next.cfbtn span{ transition:color .35s ease; }
.panel.light .next .cfill path{ fill:var(--bridge); }  .panel.light .next:hover span, .panel.light .next:focus-visible span{ color:#fff; }
.panel.blue .next .cfill path{ fill:#FFAB8B; }        .panel.blue .next:hover span, .panel.blue .next:focus-visible span{ color:#031426; }
.panel.coral .next .cfill path{ fill:#031426; }       .panel.coral .next:hover span, .panel.coral .next:focus-visible span{ color:#fff; }
.panel .next.cfbtn:hover{ border-color:currentColor; opacity:1; }
.solgrid > li > .edge{ position:absolute; inset:0; z-index:3; border-radius:inherit; padding:1.4px; overflow:hidden; pointer-events:none; opacity:0; transition:opacity .45s ease;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
.solgrid > li > .edge.glow{ padding:6px; filter:blur(6px); z-index:2; }
.solgrid > li > .edge i{ position:absolute; left:50%; top:50%; width:1200px; height:1200px; margin:-600px 0 0 -600px;
  background:conic-gradient(from 0deg, transparent 0 58%, rgba(94,67,255,0) 60%, rgba(94,67,255,.9) 74%, #39A2FF 85%, #EAF6FF 92%, #FFAB8B 96.5%, transparent 99.5%);
  animation:edgeSpin 3.2s linear infinite; animation-play-state:paused; }
.solgrid > li:hover > .edge{ opacity:1; } .solgrid > li:hover > .edge.glow{ opacity:.45; }
.solgrid > li:hover > .edge i{ animation-play-state:running; }
.solgrid > li::before{ display:none; }   /* só a luz que envolve o cartão */
@media (prefers-reduced-motion: reduce){ .solgrid > li > .edge i{ animation:none; } }
/* 3) janelas com a altura do conteúdo */
.pwpanel{ bottom:auto; max-height:calc(100vh - var(--hy) - 94px); }
.pwscroll{ flex:1 1 auto; min-height:0; }
/* 4) barra das áreas: números em degradê e um pouco maior */
.areas-bar small{ font-size:12px; font-family:var(--mono); color:var(--branco); opacity:.85; width:max-content; }
.areas-bar b{ font-size:13px; margin:7px 0 9px; }
.areas-bar span{ font-size:13.5px; }
.areas-bar svg{ width:18px; height:18px; }
.areas-bar button{ padding-top:6px; padding-bottom:6px; }
/* caixas de informação dos painéis: luz ao passar o rato */
.chips li{ position:relative; overflow:hidden; transition:box-shadow .35s ease, background .35s ease, border-color .35s ease; cursor:default; }
.chips li::after{ content:""; position:absolute; inset:0; pointer-events:none; transform:translateX(-130%);
  background:linear-gradient(105deg, transparent 30%, rgba(255,255,255,.55) 48%, rgba(255,171,139,.35) 54%, transparent 70%); }
.chips li:hover::after{ transform:translateX(130%); transition:transform .9s cubic-bezier(.3,.6,.2,1); }
.chips li:hover{ border-color:currentColor; background:color-mix(in srgb, currentColor 10%, transparent); box-shadow:0 0 14px color-mix(in srgb, currentColor 30%, transparent); }
.panel.light .chips li:hover{ box-shadow:0 0 14px rgba(57,162,255,.45); border-color:#39A2FF; }
.pres{ position:relative; overflow:hidden; isolation:isolate; transition:background .35s ease; }
.pres > .edge{ position:absolute; inset:0; z-index:2; border-radius:inherit; padding:1.4px; overflow:hidden; pointer-events:none; opacity:0; transition:opacity .45s ease;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
.pres > .edge.glow{ padding:6px; filter:blur(6px); z-index:1; }
.pres > .edge i{ position:absolute; left:50%; top:50%; width:1400px; height:1400px; margin:-700px 0 0 -700px;
  background:conic-gradient(from 0deg, transparent 0 58%, rgba(94,67,255,0) 60%, rgba(94,67,255,.95) 74%, #39A2FF 85%, #EAF6FF 92%, #FFAB8B 96.5%, transparent 99.5%);
  animation:edgeSpin 3.2s linear infinite; animation-play-state:paused; }
.panel.blue .pres > .edge i{ background:conic-gradient(from 0deg, transparent 0 58%, rgba(255,255,255,0) 60%, rgba(94,67,255,.95) 74%, #EAF6FF 88%, #FFAB8B 96.5%, transparent 99.5%); }
.pres:hover > .edge{ opacity:1; } .pres:hover > .edge.glow{ opacity:.5; }
.pres:hover > .edge i{ animation-play-state:running; }
.pres:hover{ background:color-mix(in srgb, currentColor 8%, transparent); }
.pres > svg, .pres > span:not(.edge){ position:relative; z-index:3; }
@media (prefers-reduced-motion: reduce){ .pres > .edge i{ animation:none; } .chips li:hover::after{ transition:none; transform:none; opacity:0; } }
/* frase da hierarquia */
.pwkey{ margin:0; max-width:56ch; padding:6px 0 6px 20px; border-left:2px solid; border-image:linear-gradient(#39A2FF, #5E43FF, #FF8A5B) 1; font-size:clamp(17px,1.5vw,22px); line-height:1.5; color:#fff; }
.solnote{ margin:12px 0 0; font-family:var(--mono); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:#9FD2FF; text-shadow:0 0 14px rgba(3,20,38,.95); }
/* botão + link "Como começar" */
.pactions{ display:flex; align-items:center; gap:clamp(16px,2vw,28px); flex-wrap:wrap; }
.pstart{ position:relative; display:inline-flex; align-items:center; gap:8px; color:inherit; text-decoration:none; font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase; padding:6px 0; opacity:.85; }
.pstart svg{ width:14px; height:14px; transition:transform .3s ease; }
.pstart::after{ content:""; position:absolute; left:0; bottom:0; height:1.5px; width:0; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); transition:width .45s cubic-bezier(.2,.7,.2,1); }
.panel.blue .pstart::after{ background:linear-gradient(90deg, #EAF6FF, #FFAB8B); }
.panel.coral .pstart::after{ background:linear-gradient(90deg, #031426, #5E43FF); }
.pstart:hover{ opacity:1; } .pstart:hover::after{ width:100%; } .pstart:hover svg{ transform:translateX(4px); }
/* progresso no indicador lateral */
.rprog{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--muted); margin-bottom:6px; opacity:0; transition:opacity .4s ease; }
.rprog b{ font-weight:500; color:#fff; }
.rprog.show{ opacity:1; }
.tag.flip{ align-items:flex-end; text-align:right; }
.tag.flip .stem{ margin-left:0; margin-right:8.5px; }
.tag.flip .num{ margin-left:0; margin-right:1px; }
/* caixas dos painéis nunca encolhem; no telemóvel, painel compacto e com rolagem interna se for preciso */
.panel > *{ flex-shrink:0; }
@media (max-width: 640px){
  .panel{ padding:calc(var(--hy) + 58px) 20px 28px; justify-content:flex-start; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:none; }
  .panel::-webkit-scrollbar{ display:none; }
  .panel.blue{ padding-top:28px; }
  .panel .area{ margin-bottom:12px; }
  .panel h2{ font-size:26px; margin-bottom:14px; }
  .panel p.body{ font-size:15px; line-height:1.5; margin-bottom:18px; }
  .plbl{ margin-bottom:10px; }
  .snodes{ margin-bottom:16px; } .snodes li{ font-size:10px; gap:8px; }
  .chips{ gap:6px; margin-bottom:16px; } .chips li{ font-size:10px; padding:5px 8px; }
  .pres{ padding:11px 13px; font-size:13.5px; margin-bottom:16px; gap:10px; }
  .pres .ptarget{ width:20px; height:20px; }
  .pactions{ gap:12px 18px; }
  .panel .next{ padding:10px 16px; font-size:12.5px; }
}
/* ===== Luz que enche e esvazia cada ponto ===== */
.snodes::after, .tline::after{ display:none !important; }
.snodes li i, .tline li i{ --f:0; }
.snodes li:nth-child(1) i{ --nc:#39A2FF; } .snodes li:nth-child(2) i{ --nc:#5E43FF; } .snodes li:nth-child(3) i{ --nc:#FF8A5B; }
.panel.blue .snodes li:nth-child(1) i{ --nc:#EAF6FF; } .panel.blue .snodes li:nth-child(2) i{ --nc:#9FD2FF; } .panel.blue .snodes li:nth-child(3) i{ --nc:#FFAB8B; }
.panel.coral .snodes li:nth-child(1) i{ --nc:#031426; } .panel.coral .snodes li:nth-child(2) i{ --nc:#5E43FF; } .panel.coral .snodes li:nth-child(3) i{ --nc:#0163FE; }
.snodes li i{ background:color-mix(in srgb, var(--nc) calc(var(--f) * 100%), transparent) !important;
  box-shadow:0 0 0 2px var(--nc), 0 0 calc(var(--f) * 16px) calc(var(--f) * 3px) color-mix(in srgb, var(--nc) 70%, transparent) !important; }
.tline li:nth-child(1) i{ --nc:#39A2FF; } .tline li:nth-child(2) i{ --nc:#5E43FF; } .tline li:nth-child(3) i{ --nc:#C27BC9; } .tline li:nth-child(4) i{ --nc:#FF8A5B; }
.tline li:not(:nth-child(4)) i{ background:color-mix(in srgb, var(--nc) calc(var(--f) * 100%), transparent) !important;
  box-shadow:0 0 0 2px var(--nc), 0 0 calc(var(--f) * 18px) calc(var(--f) * 4px) color-mix(in srgb, var(--nc) 70%, transparent) !important; }
.tline li:nth-child(4) i{ box-shadow:0 0 0 2px #FF8A5B, 0 0 calc(14px + var(--f) * 14px) calc(3px + var(--f) * 4px) rgba(255,138,91,.55) !important; }
.runner{ position:absolute; z-index:2; width:8px; height:8px; margin:-4px 0 0 -4px; border-radius:50%; background:#fff; pointer-events:none;
  box-shadow:0 0 8px 2px rgba(159,210,255,.95), 0 0 16px 4px rgba(94,67,255,.45); opacity:0; will-change:left, opacity; }
@media (prefers-reduced-motion: reduce){ .runner{ display:none; } }
.snodes::before, .tline::before{ left:var(--x0, 7px) !important; right:auto !important; width:calc(var(--x1, 100%) - var(--x0, 7px)) !important;
  -webkit-mask-image:var(--lmask, none); mask-image:var(--lmask, none); -webkit-mask-composite:source-in; mask-composite:intersect; }
/* o ponto do meio fica sempre a meio da linha, qualquer que seja o tamanho das palavras */
.snodes li:nth-child(2){ position:absolute; left:50%; top:0; transform:translateX(-50%); }
/* a última palavra fica centrada por baixo do último ponto (o ponto continua no fim da linha) */
.snodes{ min-height:40px; }
.snodes li:last-of-type{ position:absolute; left:calc(100% - 7px); top:0; transform:translateX(-50%); align-items:center; white-space:nowrap; }
/* quebras de linha escolhidas no computador; no telemóvel o texto corre normalmente */
.clead.lines{ white-space:pre-line; max-width:none; }
@media (max-width: 640px){ .clead.lines{ white-space:normal; } }
/* contacto: título e texto mais acima */
@media (min-width: 901px){ .cgrid .ctop{ align-self:start; padding-top:clamp(40px,5.2vw,100px); } }
/* Capital: botão à direita do título, alinhado com a última linha do texto e com a coluna da direita */
.caphead{ display:grid; grid-template-columns:1fr auto; align-items:end; gap:24px 40px; padding-right:clamp(20px,3vw,40px); }
.caphead .clead{ margin-bottom:0; }
.capcta{ justify-self:end; padding-bottom:2px; }
@media (max-width: 760px){ .caphead{ grid-template-columns:1fr; } .capcta{ justify-self:start; } }
/* paragem do pilar: nome clicável e indicador "Ver conteúdo" */
.travel .name[data-go]{ cursor:pointer; transition:text-shadow .3s ease; }
.travel .name[data-go]:hover{ text-shadow:0 0 30px rgba(57,162,255,.55); }
.tgo{ display:inline-flex; align-items:center; gap:14px; margin-top:28px; padding:6px 0; background:none; border:0; cursor:pointer; color:#fff;
  font-family:var(--mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; text-shadow:0 0 14px rgba(3,20,38,.9); }
.tgo i{ position:relative; width:1px; height:34px; background:rgba(244,246,248,.6); box-shadow:0 0 6px rgba(3,20,38,.8); }
.tgo i::after{ content:""; position:absolute; left:-2px; top:0; width:5px; height:5px; border-radius:50%; animation:cue 2.2s ease-in-out infinite; }
.tgo span{ position:relative; }
.tgo span::after{ content:""; position:absolute; left:0; bottom:-4px; height:1.5px; width:0; background:linear-gradient(90deg, #39A2FF, #5E43FF 55%, #FF8A5B); transition:width .45s cubic-bezier(.2,.7,.2,1); }
.tgo:hover span::after{ width:100%; }
/* etiquetas da cidade: o ponto acende-se ao passar o rato (com o degradê da paleta) */
.tag{ cursor:pointer; }
.tag b, .tag .num{ text-shadow:0 0 2px rgba(3,20,38,.95), 0 0 10px rgba(3,20,38,.85); }   /* halo escuro: lê-se mesmo sobre torres claras */
.tag .node{ transition:border-color .6s ease, box-shadow .7s ease, background .7s ease; }
.tag .node i, .tag b, .tag .num, .tag .stem{ transition:background .7s ease, box-shadow .7s ease, transform .7s ease, color .7s ease, text-shadow .7s ease, opacity .7s ease; }
.tag:hover .node, .tag.glow .node{ border-color:#9FD2FF; background:rgba(57,162,255,.12);
  box-shadow:0 0 12px 1px rgba(57,162,255,.65), 0 0 24px 4px rgba(57,162,255,.25); }
.tag:hover .node i, .tag.glow .node i{ background:#fff; transform:scale(2.1); box-shadow:0 0 8px 2px rgba(255,255,255,.85); }
.tag:hover .stem, .tag.glow .stem{ background:linear-gradient(#9FD2FF, rgba(57,162,255,.25)); }
.tag:hover b, .tag.glow b{ color:#fff; text-shadow:0 0 14px rgba(57,162,255,.6); }
.tag:hover .num, .tag.glow .num{ opacity:1; color:#9FD2FF; }
/* indicador lateral: só o traço recebe o rato (o nome invisível já não tapa as etiquetas da cidade) */
.rail, .rail button{ pointer-events:none; }
.rail button i{ pointer-events:auto; position:relative; }
.rail button i::before{ content:""; position:absolute; inset:-9px -8px; }
/* Soluções: texto numa placa de vidro, igual aos cartões, alinhada com a base do título */
.solplate{ position:relative; overflow:hidden; isolation:isolate; align-self:end; padding:20px 24px 22px; border-radius:14px;
  background:linear-gradient(150deg, rgba(120,160,220,.12), rgba(8,18,34,.42) 45%, rgba(8,18,34,.58));
  backdrop-filter:blur(26px) saturate(1.3); -webkit-backdrop-filter:blur(26px) saturate(1.3);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1), inset 0 0 0 1px rgba(255,255,255,.07); }
.solplate::before{ content:""; position:absolute; inset:0; z-index:-1; opacity:.18; mix-blend-mode:overlay; pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.solhead .solplate .clead{ text-shadow:none; color:rgba(244,246,248,.92); }
.solplate .solnote{ text-shadow:none; }
/* a placa desce até ficar à mesma distância dos cartões que os cartões entre si (14 px) */
.solplate{ margin-bottom:calc(14px - clamp(18px,2.2vw,30px)); }
@media (max-width: 1000px){ .solplate{ margin-bottom:0; } }

/* aviso de e-mail copiado */
.mailtoast{ position:fixed; left:50%; bottom:calc(28px + env(safe-area-inset-bottom, 0px)); z-index:200; transform:translate(-50%, 12px);
  padding:12px 18px; border-radius:999px; background:rgba(3,20,38,.82); border:1px solid rgba(159,210,255,.28);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); color:#F4F6F8;
  font:400 12px/1.2 "Geist Mono", ui-monospace, monospace; letter-spacing:.08em; opacity:0; pointer-events:none;
  transition:opacity .35s ease, transform .35s ease; white-space:nowrap; }
.mailtoast.on{ opacity:1; transform:translate(-50%, 0); }

/* ---------- Formulário de contacto (janela) ---------- */
.cfwrap{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(32px,5vw,88px); align-items:start; }
.cfside{ position:sticky; top:0; }
.cfdirect{ margin-top:30px; }
.cfdirect .plbl{ margin-bottom:10px; }
.cfdirect a{ color:#F4F6F8; text-decoration:none; font-size:16px; border-bottom:1px solid rgba(57,162,255,.5); padding-bottom:2px; transition:border-color .3s, color .3s; }
.cfdirect a:hover{ color:#9FD2FF; border-color:#9FD2FF; }
.cfdirect ul{ list-style:none; margin:0; padding:0; font-size:15px; line-height:1.85; color:rgba(244,246,248,.82); }
.cform{ display:flex; flex-direction:column; gap:20px; padding:clamp(22px,2.6vw,36px); border-radius:16px;
  background:rgba(120,160,220,.06); border:1px solid rgba(159,210,255,.14); }
.cfrow{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.cff{ display:flex; flex-direction:column; gap:8px; min-width:0; }
.cff label, .cflbl{ font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:rgba(244,246,248,.72); }
.cff label i{ font-style:normal; color:#FF8A5B; }
.cff label em, .cflbl em{ font-style:normal; text-transform:none; letter-spacing:.04em; opacity:.6; }
.cff input:not([type=checkbox]), .cff textarea{ width:100%; box-sizing:border-box; font-family:inherit; font-size:16px; line-height:1.45; font-weight:400; color:#F4F6F8;
  background:rgba(3,20,38,.45); border:1px solid rgba(159,210,255,.2); border-radius:10px; padding:13px 14px; outline:none;
  transition:border-color .25s, box-shadow .25s, background .25s; -webkit-appearance:none; appearance:none; }
.cff textarea{ resize:vertical; min-height:130px; }
.cff input::placeholder, .cff textarea::placeholder{ color:rgba(244,246,248,.38); }
.cff input:hover, .cff textarea:hover{ border-color:rgba(159,210,255,.38); }
.cff input:focus-visible, .cff textarea:focus-visible{ border-color:#39A2FF; background:rgba(3,20,38,.6); box-shadow:0 0 0 3px rgba(57,162,255,.18), 0 0 18px rgba(94,67,255,.18); }
.cff.bad input, .cff.bad textarea{ border-color:#FF8A5B; }
.cferr{ min-height:0; font-size:12.5px; color:#FFAB8B; }
.cferr:empty{ display:none; }
.cfchips{ display:flex; flex-wrap:wrap; gap:8px; }
.cfchip{ font-family:var(--mono); font-size:11px; letter-spacing:.05em; padding:8px 12px; border-radius:8px; cursor:pointer; color:rgba(244,246,248,.85);
  background:rgba(3,20,38,.35); border:1px solid rgba(159,210,255,.22); transition:background .25s, border-color .25s, color .25s, box-shadow .25s; }
.cfchip:hover{ border-color:#9FD2FF; color:#fff; }
.cfchip[aria-pressed="true"]{ color:#fff; border-color:transparent;
  background:linear-gradient(rgba(3,20,38,.55), rgba(3,20,38,.55)) padding-box, linear-gradient(90deg,#5E43FF,#39A2FF,#FF8A5B) border-box;
  border:1px solid transparent; box-shadow:0 0 14px rgba(57,162,255,.28); }
.cfchip:focus-visible, .cflink:focus-visible, .cfcheck input:focus-visible + .cfbox{ outline:2px solid #39A2FF; outline-offset:2px; }
.cff label.cfcheck{ display:flex; gap:12px; align-items:flex-start; cursor:pointer; font-size:13.5px; line-height:1.55; color:rgba(244,246,248,.8); text-transform:none; letter-spacing:0; font-family:inherit; }
.cfcheck input{ position:absolute; opacity:0; width:1px; height:1px; }
.cfbox{ flex:none; width:18px; height:18px; margin-top:1px; border-radius:5px; border:1px solid rgba(159,210,255,.4); background:rgba(3,20,38,.45); position:relative; transition:background .2s, border-color .2s; }
.cfcheck input:checked + .cfbox{ background:#0163FE; border-color:#39A2FF; }
.cfcheck input:checked + .cfbox::after{ content:""; position:absolute; left:5.5px; top:2px; width:5px; height:9px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); }
.cfcons.bad .cfbox{ border-color:#FF8A5B; }
.cfpol{ color:#9FD2FF; text-decoration:underline; text-underline-offset:3px; }
.cfhp{ position:absolute !important; left:-9999px; width:1px; height:1px; opacity:0; }
.cfsend{ display:flex; align-items:center; gap:20px; flex-wrap:wrap; margin-top:4px; }
.cfsend small{ font-size:12px; color:rgba(244,246,248,.5); }
.cform.busy .cta{ opacity:.7; pointer-events:none; }
.cffail{ margin:0; font-size:13.5px; color:#FFAB8B; }
.cffail:empty{ display:none; }
.cffail a{ color:#FFAB8B; }
.cfok{ padding:clamp(28px,3vw,44px); border-radius:16px; background:rgba(120,160,220,.06); border:1px solid rgba(159,210,255,.14); }
.cfokico{ width:52px; height:52px; fill:none; stroke:#39A2FF; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 10px rgba(57,162,255,.55)); }
.cfokico path{ stroke:#fff; stroke-dasharray:30; stroke-dashoffset:30; animation:cfdraw .7s .25s ease forwards; }
@keyframes cfdraw{ to{ stroke-dashoffset:0; } }
.cfok p{ font-size:clamp(16px,1.35vw,19px); line-height:1.6; margin:22px 0 30px; color:rgba(244,246,248,.9); max-width:46ch; }
.cfokact{ display:flex; gap:22px; align-items:center; flex-wrap:wrap; }
.cflink{ background:none; border:0; padding:0; cursor:pointer; font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:rgba(244,246,248,.7); border-bottom:1px solid rgba(244,246,248,.3); padding-bottom:3px; }
.cflink:hover{ color:#fff; border-color:#9FD2FF; }
@media (max-width:900px){
  .cfwrap{ grid-template-columns:1fr; gap:28px; }
  .cfside{ position:static; }
  .cfside .cfdirect{ display:none; }
  .cfside .cfdirect:first-of-type{ display:block; margin-top:18px; }
}
@media (max-width:560px){ .cfrow{ grid-template-columns:1fr; } .cform{ padding:20px 16px; } }
@media (prefers-reduced-motion: reduce){ .cfokico path{ animation:none; stroke-dashoffset:0; } }

/* formulário: caixa mais compacta; lead com quebras definidas; barra das janelas afastada da borda */
.cfwrap{ grid-template-columns:minmax(0,1fr) minmax(0,560px); gap:clamp(32px,4vw,72px); }
.cform{ gap:16px; padding:clamp(20px,2vw,28px); }
.cfrow{ gap:16px; }
.cff{ gap:7px; }
.cff input:not([type=checkbox]), .cff textarea{ padding:10px 12px; font-size:15px; border-radius:9px; }
.cff textarea{ min-height:104px; }
.cfchips{ gap:6px; }
.cfchip{ padding:7px 10px; }
.cflead{ white-space:pre-line; }
.pwbar{ padding-top:clamp(28px,3vw,40px); }
.pwbar .cclose{ top:clamp(30px,3.1vw,42px); }
@media (max-width:900px){ .cfwrap{ grid-template-columns:1fr; } .cflead{ white-space:normal; } }

.cfwrap{ grid-template-columns:minmax(380px,1fr) minmax(0,780px); gap:clamp(28px,3.5vw,56px); }
@media (max-width:900px){ .cfwrap{ grid-template-columns:1fr; } }
.pwbar{ padding-top:30px; }
.pwbar .cclose{ top:24px; right:30px; }   /* texto do "fechar" a ~30 px do topo e da lateral */

/* formulário centrado entre o fim do texto e a borda direita */
.cfwrap{ grid-template-columns:auto minmax(0,1fr); gap:clamp(24px,5vw,72px); }
.cform{ width:100%; max-width:780px; justify-self:center; box-sizing:border-box; }
@media (max-width:900px){ .cfwrap{ grid-template-columns:1fr; } .cform{ max-width:none; } }
/* coluna do texto com largura fixa (evita o texto partido palavra a palavra); formulário ocupa o resto */
.cfwrap{ grid-template-columns:clamp(280px,28vw,400px) minmax(0,1fr); }
.cfside{ min-width:0; }
.cform{ max-width:none; justify-self:stretch; }
@media (max-width:900px){ .cfwrap{ grid-template-columns:1fr; } }
/* política de privacidade */
.ppwrap{ max-width:860px; }
.ppback{ display:inline-block; margin-bottom:28px; }
.pwfoot .ppback{ margin:0; }
.ppnote{ font-family:var(--mono); font-size:11px; letter-spacing:.08em; color:#FFAB8B; margin:-6px 0 18px; }
.ppsec h3{ font-weight:400; text-transform:uppercase; letter-spacing:.01em; font-size:clamp(17px,1.5vw,21px); margin:0 0 14px; color:#F4F6F8; }
.ppsec p, .ppul{ font-size:15px; line-height:1.65; color:rgba(244,246,248,.86); margin:0 0 12px; max-width:72ch; }
.ppsec a, .ppwrap .pwlead a{ color:#9FD2FF; }
.ppul{ padding-left:18px; } .ppul li{ margin-bottom:6px; } .ppul li::marker{ color:#39A2FF; }
.ppph{ color:#FFAB8B; background:rgba(255,138,91,.1); border-radius:4px; padding:0 4px; }
.pptw{ overflow-x:auto; margin:6px 0 16px; border-radius:12px; border:1px solid rgba(159,210,255,.16); }
.pptab{ width:100%; border-collapse:collapse; font-size:14px; line-height:1.5; min-width:520px; }
.pptab th{ text-align:left; font-family:var(--mono); font-weight:400; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:rgba(244,246,248,.7);
  background:rgba(3,20,38,.5); padding:11px 14px; border-bottom:1px solid rgba(159,210,255,.16); }
.pptab td{ padding:11px 14px; vertical-align:top; color:rgba(244,246,248,.88); border-bottom:1px solid rgba(159,210,255,.08); }
.pptab tr:last-child td{ border-bottom:0; }

/* "Voltar ao formulário": pílula com contorno no degradê da marca */
.cflink.ppback{ display:inline-flex; align-items:center; gap:8px; padding:10px 18px; border-radius:999px; text-decoration:none;
  color:#F4F6F8; border:1px solid transparent; border-bottom:1px solid transparent;
  background:linear-gradient(#0B1A33, #0B1A33) padding-box, linear-gradient(90deg,#5E43FF,#39A2FF,#FF8A5B) border-box;
  box-shadow:0 0 14px rgba(57,162,255,.18); transition:box-shadow .3s, background .3s, color .3s; }
.cflink.ppback:hover{ color:#fff; box-shadow:0 0 22px rgba(57,162,255,.4);
  background:linear-gradient(#0E2A5C, #0E2A5C) padding-box, linear-gradient(90deg,#5E43FF,#39A2FF,#FF8A5B) border-box; }
.cflink.ppback:focus-visible{ outline:2px solid #39A2FF; outline-offset:3px; }

/* ===== Acessibilidade ===== */
/* contraste mínimo de leitura (WCAG AA, 4,5:1) nas etiquetas pequenas dos painéis e no seletor de idioma */
.panel.light .plbl{ opacity:.68; }
.panel.coral .plbl, .panel.coral .pres b{ opacity:.82; }
.panel.blue .plbl, .panel.blue .pres b, .panel.blue .pstart{ opacity:1; }
.langmin button{ color:rgba(244,246,248,.62); }
body.reading-blue .langmin button{ color:rgba(255,255,255,.96); }
/* saltar para o conteúdo: invisível até receber foco pelo teclado */
.skip{ position:fixed; left:16px; top:12px; z-index:100; padding:10px 16px; border-radius:10px; background:var(--branco); color:var(--tinta);
  font-family:var(--mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase; text-decoration:none; transform:translateY(-160%); transition:transform .2s ease; }
.skip:focus{ transform:none; outline:2px solid var(--estrutural); outline-offset:3px; }
main:focus{ outline:none; }   /* destino do "saltar para o conteúdo": recebe o foco sem moldura */

/* ===== Compatibilidade ===== */
/* no celular, 100vh é a altura sem a barra do navegador: os painéis e as janelas ficavam com o fundo escondido atrás dela.
   100dvh é a altura realmente visível (navegadores sem suporte ficam com o 100vh de cima) */
@supports (height:100dvh){
  .read .stick{ height:100dvh; }
  .pwpanel{ max-height:calc(100dvh - var(--hy) - 94px); }
}
/* cabeçalho em ecrãs estreitos: logo, idiomas, som e menu sem se sobreporem (Android de 360 px, iPhone SE de 320 px) */
@media (max-width: 400px){
  header{ gap:12px; } .hright{ gap:8px; }
  .logo-plate .lsvg, .logo-plate img{ width:112px; }
}
@media (max-width: 350px){
  .logo-plate .lsvg, .logo-plate img{ width:100px; }
  .hright{ gap:6px; } .snd .wave{ width:24px; } .langmin{ gap:4px; }
  .langmin[data-cur="en"] .ind{ transform:translateX(26px); } .langmin[data-cur="es"] .ind{ transform:translateX(52px); }   /* botões de 22 px + 4 px */
}
/* painéis dos pilares no celular: com rolagem interna, ao chegar ao fim do painel o gesto continua para a página
   (com "contain", nos painéis que ocupam o ecrã todo o dedo ficava preso dentro do painel) */
@media (max-width: 640px){ .panel{ overscroll-behavior:auto; } }
/* ecrãs baixos e largos (celular na horizontal): o layout de computador não cabia em ~390 px de altura.
   Painéis compactos com rolagem interna, abertura sem a barra dos pilares e menu com rolagem, como no celular na vertical */
@media (max-height: 520px) and (min-width: 641px){
  .hero{ padding-top:calc(var(--hy) + 56px); padding-bottom:24px; }
  .hero h1{ font-size:30px; margin-bottom:12px; } .hero p{ font-size:14px; margin-bottom:16px; } .hero .eyebrow{ margin-bottom:10px; }
  .hero-base{ display:none; }
  .panel{ padding:calc(var(--hy) + 64px) clamp(24px,4vw,56px) 20px; justify-content:flex-start; overflow-y:auto; scrollbar-width:none; }
  .panel::-webkit-scrollbar{ display:none; }
  .panel .area{ margin-bottom:10px; }
  .panel h2{ font-size:26px; margin-bottom:12px; }
  .panel p.body{ font-size:14px; line-height:1.5; margin-bottom:14px; }
  .snodes{ margin-bottom:12px; } .chips{ margin-bottom:12px; } .pres{ padding:9px 12px; margin-bottom:12px; }
  .minner{ max-height:calc(100vh - var(--hy) - 72px); overflow-y:auto; }
}
@supports (height:100dvh){ @media (max-height: 520px) and (min-width: 641px){ .minner{ max-height:calc(100dvh - var(--hy) - 72px); } } }
/* computadores com ecrã baixo (portáteis 1280×650, 1366×657): o texto dos painéis subia para baixo do logo e cortava no fundo.
   Espaçamentos mais compactos e, se mesmo assim não couber, rolagem interna a partir do topo (nunca por baixo do cabeçalho) */
@media (max-height: 760px) and (min-height: 521px) and (min-width: 641px){
  .panel{ padding-top:calc(var(--hy) + 70px); padding-bottom:28px; justify-content:safe center; overflow-y:auto; scrollbar-width:none; }
  .panel::-webkit-scrollbar{ display:none; }
  .panel .area{ margin-bottom:14px; }
  .panel h2{ font-size:clamp(24px,2.6vw,38px); margin-bottom:18px; }
  .panel p.body{ margin-bottom:16px; }
  .snodes{ margin-bottom:14px; } .chips{ margin-bottom:14px; } .pres{ margin-bottom:14px; }
}
@media (min-width: 821px){ body.reading-light .langmin button{ color:rgba(244,246,248,.62); } }   /* idiomas sobre a cidade enquanto se lê um painel claro: mesmo contraste que no resto */
/* idiomas e som sobre um painel claro (ver hdrOnPanel no código) */
body .langmin button.on-light{ color:rgba(10,27,46,.7); }
body .langmin button.on-light[aria-pressed="true"]{ color:var(--tinta); }
.langmin button.on-light[aria-pressed="true"] ~ .ind{ background:var(--tinta); box-shadow:none; }
body .snd.on-light{ color:var(--tinta); }
/* ainda mais compacto até 700 px de altura (ex.: portátil com zoom do Windows a 125%, site dentro de outra página):
   o painel inteiro, com o resultado e os botões, cabe sem rolagem interna */
@media (max-height: 700px) and (min-height: 521px) and (min-width: 641px){
  .panel{ padding-top:calc(var(--hy) + 74px); padding-bottom:8px; }
  .panel .area{ margin-bottom:10px; }
  .panel h2{ font-size:clamp(24px,2.2vw,32px); margin-bottom:14px; }
  .panel p.body{ font-size:15px; max-width:56ch; margin-bottom:12px; }
  .plbl{ margin-bottom:8px; }
  .snodes{ margin-bottom:10px; } .chips{ margin-bottom:10px; } .panel .chips li{ padding:4px 9px; }
  .pres{ font-size:14px; padding:9px 13px; margin-bottom:10px; }
}

/* ===== Janela dos painéis =====
   O conteúdo do painel vive numa "janela" (.pin) que rola por dentro. O que sobe desvanece e fica invisível na linha do
   cabeçalho, para nunca passar por baixo do logo, do idioma ou do menu; enquanto houver mais conteúdo em baixo,
   o fundo também desvanece. O painel fica só com a cor e a animação de construção.
   --pt / --pb: o espaço de cima e de baixo, com os mesmos valores que o painel tinha em cada tamanho de ecrã. */
.panel{ --pt:calc(var(--hy) + 66px); --pb:44px; --hb:calc(var(--hy) + 52px); }   /* --hb: fundo do cabeçalho (o texto fica invisível acima disto) */
@media (max-width: 820px){ .panel.blue{ --pt:56px; --hb:0px; } }   /* no celular o painel azul começa abaixo do cabeçalho */
@media (max-width: 640px){ .panel{ --pt:calc(var(--hy) + 58px); --pb:28px; --hb:calc(var(--hy) + 46px); } .panel.blue{ --pt:28px; --hb:0px; } }
@media (max-height: 520px) and (min-width: 641px){ .panel{ --pt:calc(var(--hy) + 64px); --pb:20px; } }
@media (max-height: 760px) and (min-height: 521px) and (min-width: 641px){ .panel{ --pt:calc(var(--hy) + 70px); --pb:28px; } }
@media (max-height: 700px) and (min-height: 521px) and (min-width: 641px){ .panel{ --pt:calc(var(--hy) + 74px); --pb:8px; } }
@media (min-height: 761px) and (min-width: 641px){ .panel{ justify-content:safe center; } }
.panel{ --px:clamp(24px,6vw,96px); }
@media (max-width: 640px){ .panel{ --px:20px; } }
@media (max-height: 520px) and (min-width: 641px){ .panel{ --px:clamp(24px,4vw,56px); } }
/* a margem lateral fica dentro da janela: o que sai um pouco para os lados (círculos dos passos e o brilho deles,
   o último rótulo no celular) tem espaço e só é cortado na borda do painel, como antes */
.panel, .panel.blue{ padding:0; overflow:hidden; }
.panel > .pin{
  flex:1 1 auto; min-height:0; display:flex; flex-direction:column; justify-content:inherit;
  overflow-y:auto; scrollbar-width:none; padding:var(--pt) var(--px) var(--pb); --fb:0px;
  -webkit-mask-image:linear-gradient(to bottom, transparent 0, transparent var(--hb), #000 max(calc(var(--hb) + 10px), calc(var(--pt) - 2px)), #000 calc(100% - var(--fb)), transparent 100%);
          mask-image:linear-gradient(to bottom, transparent 0, transparent var(--hb), #000 max(calc(var(--hb) + 10px), calc(var(--pt) - 2px)), #000 calc(100% - var(--fb)), transparent 100%);
}
.panel > .pin::-webkit-scrollbar{ display:none; }
.panel > .pin > *{ flex-shrink:0; }
.panel > .pin.more{ --fb:44px; }
/* seletor de idioma a cavalo entre o painel claro e a cidade: placa de vidro escuro por trás (ver hdrOnPanel) */
.langmin{ transition:background-color .3s ease; border-radius:10px; }
.langmin.straddle{ background:rgba(3,20,38,.88); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  padding-left:10px; padding-right:10px; margin-left:-10px; margin-right:-10px; }
.langmin.straddle .ind{ left:12px; }
body .langmin.straddle button{ color:rgba(244,246,248,.8); } body .langmin.straddle button[aria-pressed="true"]{ color:#fff; }
/* último passo no celular: o círculo fica no mesmo sítio (fim da linha) e o rótulo alinha à direita, a terminar aí —
   centrado, palavras compridas ("Recuperar", "Controlar") passavam a borda do painel */
@media (max-width: 640px){ .snodes li:last-of-type{ transform:translateX(calc(-100% + 7px)); align-items:flex-end; } }
/* formulário: aviso de privacidade informativo (substitui a caixa "aceito"; decisão do cliente, RGPD art. 6.º, 1, f) */
.cfnotice{ margin:0; font-size:13.5px; line-height:1.55; color:rgba(244,246,248,.8); }
