/* =========================================================================
   João Emanuel · Link in bio
   Sistema de design: tinta esverdeada + menta (cores da Moove), tema
   escuro único. Tipografia: Bricolage Grotesque (variável, eixos
   wght + wdth) para títulos e Instrument Sans para texto.
   Uma única folha de estilos, sem !important de remendo.
   ========================================================================= */

/* ---------- Fontes (hospedadas localmente, sem Google Fonts) ---------- */
@font-face{
  font-family:"Bricolage Grotesque";
  src:url("../fonts/bricolage-grotesque-latin-wdth-normal.woff2") format("woff2");
  font-weight:200 800;
  font-stretch:75% 100%;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Instrument Sans";
  src:url("../fonts/instrument-sans-latin-wght-normal.woff2") format("woff2");
  font-weight:400 700;
  font-style:normal;
  font-display:swap;
}

/* ---------- Tokens ---------- */
:root{
  --font-display:"Bricolage Grotesque", "Arial Narrow", system-ui, sans-serif;
  --font-text:"Instrument Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

  --mint:#3DF2BE;
  --gold:#F4C430;
  --ink:#061110;

  /* tema escuro (único) */
  --bg:#060C0B;
  --bg-raised:#0D1816;
  --text:#F2F0E9;
  --muted:#98ABA5;
  --line:rgba(242,240,233,.14);
  --accent:#3DF2BE;
  --on-accent:#04100D;
  --cta-hover:#F2F0E9;
  --on-cta-hover:#04100D;
  --wipe:#3DF2BE;
  --on-wipe:#04100D;
  --bg-slash:rgba(61,242,190,.13);
  --focus:#3DF2BE;

  --ease:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
  --skew:-16deg;

  --topbar-h:72px;
  --footer-h:84px;
  --gutter:clamp(20px, 5vw, 48px);
}

/* ---------- Reset e base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
*{ margin:0; }
html{
  background:var(--bg);
  color-scheme:dark;
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
}

body{
  min-height:100svh;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-text);
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
  overflow-x:clip;
  display:flex;
  flex-direction:column;
}
img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
::selection{ background:var(--mint); color:var(--ink); }

:focus-visible{ outline:2px solid var(--focus); outline-offset:3px; border-radius:6px; }

.sr-only{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
.skip-link{
  position:fixed; left:12px; top:-60px; z-index:1100;
  background:var(--mint); color:var(--ink);
  padding:10px 16px; border-radius:999px; font-weight:700;
  transition:top .25s var(--ease);
}
.skip-link:focus{ top:12px; }

/* ---------- Fundo: traços inclinados + ruído ---------- */
.bg{ position:fixed; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.bg__slash{
  position:absolute;
  background:var(--bg-slash);
  transform:skewX(var(--skew));
  will-change:transform;
}
.bg__slash--a{ width:34vw; min-width:180px; height:150vh; left:-6vw; top:-20vh; }
.bg__slash--b{ width:14vw; min-width:90px; height:150vh; right:6vw; top:-10vh; }
.bg__grain{
  position:absolute; inset:-10%;
  opacity:.06; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- Cortina de transição (pré-carregamento + troca de página) ---------- */
.curtain{ position:fixed; inset:0; z-index:900; pointer-events:none; display:none; }
html.js .curtain{ display:block; }
.curtain__layer{ position:absolute; top:0; bottom:0; left:-16vh; right:-16vh; display:flex; transform:skewX(var(--skew)); }
.curtain__strip{
  flex:1 0 0; margin-inline:-1px;
  transform-origin:50% 0%;
  transform:scaleY(1);
  will-change:transform;
}
.curtain__layer--mint .curtain__strip{ background:var(--mint); }
.curtain__layer--ink .curtain__strip{ background:var(--ink); }

/* ---------- Estrutura principal ---------- */
.stage{
  position:relative; z-index:1; flex:1;
  width:100%; max-width:1240px; margin-inline:auto;
  padding:calc(var(--topbar-h) + clamp(20px, 5svh, 44px)) var(--gutter) 56px;
  display:grid; grid-template-columns:minmax(0,1fr); gap:40px;
}
.stage--narrow{ max-width:760px; }

@media (min-width:1080px){
  .stage:not(.stage--narrow){
    grid-template-columns:minmax(0,1fr) minmax(0,500px);
    column-gap:clamp(48px, 7vw, 120px);
    padding-top:0; padding-bottom:0; align-items:start;
  }
  .stage:not(.stage--narrow) > .hero{ padding-block:calc(var(--topbar-h) + 24px) 40px; }
  .rail{ padding-block:calc(var(--topbar-h) + 10vh) 12vh; }
}
/* Telas com altura suficiente: hero fixo na lateral. A altura desconta o rodapé,
   então ao chegar no fim da página o hero não é empurrado nem invade o rodapé.
   Retrato e nome escalam pela altura disponível (--hv) para o conteúdo sempre caber. */
@media (min-width:1080px) and (min-height:760px){
  .stage:not(.stage--narrow) > .hero{
    --hv:max(80px, calc(100svh - 430px));
    position:sticky; top:0; height:calc(100svh - var(--footer-h));
    justify-content:center;
    padding-block:calc(var(--topbar-h) + clamp(24px, 5svh, 56px)) 24px;
  }
  .stage:not(.stage--narrow) > .hero .portrait{ width:min(64%, 280px, max(120px, calc(var(--hv) * .44))); }
  .stage:not(.stage--narrow) > .hero .name{ font-size:min(21.5cqw, 150px, max(52px, calc(var(--hv) * .25))); }
  .stage:not(.stage--narrow) > .hero .logo-disc{ width:min(46%, 180px, max(96px, calc(var(--hv) * .3))); }
}
@media (max-width:1079px){
  .stage:not(.stage--narrow){ max-width:600px; }
}

/* ---------- Hero ---------- */
.hero{ container-type:inline-size; display:flex; flex-direction:column; align-items:flex-start; min-width:0; }

.portrait{
  position:relative; width:min(64%, 300px); aspect-ratio:4/5; margin-bottom:calc(-1 * clamp(26px, 9cqw, 56px));
  perspective:900px;
}
.portrait__slash{
  position:absolute; inset:0; background:var(--mint);
  clip-path:polygon(14% 0, 100% 0, 86% 100%, 0 100%);
  transform:translate(-16px, -12px);
}
.portrait__frame{
  position:absolute; inset:0; overflow:hidden;
  clip-path:polygon(14% 0, 100% 0, 86% 100%, 0 100%);
  background:#A9ADAA;
}
.portrait__frame img{ width:100%; height:100%; object-fit:cover; object-position:50% 16%; transform-origin:50% 30%; }
.portrait__frame::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to top, var(--bg) 2%, transparent 52%);
}
.orbit{
  position:absolute; left:calc(100% - 38px); top:10%; width:clamp(92px, 30cqw, 124px); aspect-ratio:1;
  color:var(--text); z-index:3;
}
.orbit__ring{ width:100%; height:100%; }
.orbit__ring text{ font-family:var(--font-text); font-size:11.5px; font-weight:600; letter-spacing:.06em; fill:currentColor; }
.orbit__dot{
  position:absolute; left:50%; top:50%; width:14px; height:14px; margin:-7px 0 0 -7px;
  border-radius:50%; background:var(--mint);
  box-shadow:0 0 0 0 rgba(61,242,190,.6); animation:ping 2.2s var(--ease-io) infinite;
}
@keyframes ping{ 0%{ box-shadow:0 0 0 0 rgba(61,242,190,.55); } 70%,100%{ box-shadow:0 0 0 16px rgba(61,242,190,0); } }

.name{
  position:relative; z-index:2; width:100%;
  text-rendering:geometricPrecision;
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(54px, 21vw, 110px);
  font-size:min(21.5cqw, 150px);
  line-height:.9; letter-spacing:-.035em;
  margin-top:0;
}
.name__line{ display:block; white-space:nowrap; overflow:hidden; padding:.16em 0 .04em; margin:-.16em 0 -.04em; }
.name__char{
  display:inline-block; text-align:center;
  font-variation-settings:"wght" var(--w, 520), "wdth" var(--wd, 100);
}

.role{
  margin-top:22px; font-weight:600; font-size:clamp(15px, 4.2cqw, 18px); color:var(--text);
}
.role a{ background:linear-gradient(var(--mint),var(--mint)) 0 100%/100% 2px no-repeat; transition:background-size .4s var(--ease); }
.role a:hover{ background-size:100% 100%; color:var(--ink); }
.lede{ margin-top:10px; max-width:34ch; color:var(--muted); font-size:clamp(15px, 4.1cqw, 17px); line-height:1.55; }

/* CTA principal (WhatsApp) */
.cta{
  position:relative; isolation:isolate; overflow:hidden;
  display:flex; align-items:center; gap:14px; width:100%; max-width:460px;
  margin-top:28px; padding:11px 11px 11px 22px; min-height:68px;
  border-radius:999px; background:var(--accent); color:var(--on-accent);
  transition:color .4s var(--ease);
}
.cta::before{
  content:""; position:absolute; inset:0 -6%; z-index:-1;
  background:var(--cta-hover); transform:skewX(var(--skew)) translateX(-112%);
  transition:transform .6s var(--ease);
}
.cta__shine{
  position:absolute; top:0; bottom:0; left:0; width:38%; z-index:-1;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent);
  transform:translateX(-160%) skewX(var(--skew)); pointer-events:none;
}
.cta__icon{ flex:none; width:24px; height:24px; }
.cta__body{ flex:1; min-width:0; display:flex; flex-direction:column; line-height:1.15; }
.cta__label{ font-family:var(--font-display); font-weight:700; font-size:21px; letter-spacing:-.015em; }
.cta__desc{ font-size:13px; opacity:.78; margin-top:3px; }
.cta__arrow{
  flex:none; width:46px; height:46px; border-radius:50%;
  display:grid; place-items:center; background:var(--on-accent); color:var(--accent);
  transition:transform .5s var(--ease), background-color .4s, color .4s;
}
.cta__arrow svg{ width:18px; height:18px; }
@media (hover:hover){
  .cta:hover{ color:var(--on-cta-hover); }
  .cta:hover::before{ transform:skewX(var(--skew)) translateX(0); }
  .cta:hover .cta__arrow{ transform:rotate(-45deg); background:var(--on-cta-hover); color:var(--cta-hover); }
}
.cta:active{ transform:scale(.985); }

/* ---------- Coluna direita ---------- */
.rail{ display:flex; flex-direction:column; gap:clamp(44px, 8vh, 72px); min-width:0; }

/* Lista de links: linhas editoriais, sem cartões idênticos */
.links{ margin-inline:-14px; }
.links::before{ content:""; display:block; height:1px; margin-inline:14px; background:var(--line); }
.row{
  position:relative; isolation:isolate; overflow:hidden;
  display:flex; align-items:center; gap:16px;
  padding:20px 14px;
  transition:color .4s var(--ease);
}
.row::after{ content:""; position:absolute; left:14px; right:14px; bottom:0; height:1px; background:var(--line); transition:opacity .3s; }
.row:hover::after{ opacity:0; }
.row::before{
  content:""; position:absolute; inset:0 -8%; z-index:-1;
  background:var(--wipe); transform:skewX(var(--skew)) translateX(-112%);
  transition:transform .6s var(--ease);
}
.row__icon{
  flex:none; width:46px; height:46px; border-radius:50%;
  display:grid; place-items:center; border:1px solid var(--line);
  transition:border-color .4s, background-color .4s, transform .5s var(--ease);
}
.row__icon svg{ width:20px; height:20px; }
.row__body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.row__label{ font-family:var(--font-display); font-weight:650; font-size:clamp(22px, 6vw, 27px); line-height:1.1; letter-spacing:-.02em; }
.row__desc{ font-size:14px; color:var(--muted); line-height:1.35; transition:color .4s; }
.row__arrow{
  flex:none; width:40px; height:40px; border-radius:50%;
  display:grid; place-items:center; border:1px solid var(--line);
  transition:transform .5s var(--ease), background-color .4s, color .4s, border-color .4s;
}
.row__arrow svg{ width:16px; height:16px; }
@media (hover:hover){
  .row:hover{ color:var(--on-wipe); }
  .row:hover::before{ transform:skewX(var(--skew)) translateX(0); }
  .row:hover .row__desc{ color:inherit; opacity:.8; }
  .row:hover .row__icon{ border-color:currentColor; transform:rotate(-8deg) scale(1.06); }
  .row:hover .row__arrow{ transform:rotate(-45deg); background:var(--on-wipe); color:var(--wipe); border-color:var(--on-wipe); }
}
.row:active{ transform:scale(.99); }

/* Linhas de projeto (página Projetos) */
.row--project{ padding-block:24px; }
.row__num{
  flex:none; width:46px; font-family:var(--font-display); font-weight:700; font-size:15px;
  letter-spacing:.02em; color:var(--mint); font-variant-numeric:tabular-nums; transition:color .4s;
}
.row__domain{
  font-size:13px; font-weight:600; letter-spacing:.01em; color:var(--mint);
  overflow-wrap:anywhere; transition:color .4s;
}
@media (hover:hover){ .row--project:hover .row__num, .row--project:hover .row__domain{ color:inherit; } }
.rail > .cta{ margin-top:0; }

/* Faixa de serviços */
.marquee{
  margin-inline:calc(-1 * var(--gutter)); overflow:hidden;
  border-block:1px solid var(--line); padding-block:18px;
}
@media (min-width:1080px){ .marquee{ margin-inline:0; } }
.marquee__track{ display:flex; width:max-content; will-change:transform; }
.marquee__group{ display:flex; align-items:center; flex:none; }
.marquee__item{
  font-family:var(--font-display); font-weight:700; letter-spacing:-.03em;
  font-size:clamp(38px, 10vw, 58px); line-height:1; padding-inline:.35em; white-space:nowrap;
}
.marquee__item--ghost{ color:transparent; -webkit-text-stroke:1.5px var(--text); }
.marquee__sep{ flex:none; width:.55em; height:.55em; font-size:clamp(38px, 10vw, 58px); color:var(--mint); }

/* Números */
.stats{ display:grid; grid-template-columns:repeat(3,1fr); }
.stat{ padding:4px 14px; border-left:1px solid var(--line); }
.stat:first-child{ padding-left:0; border-left:0; }
.stat__num{
  display:block; font-family:var(--font-display); font-weight:800; line-height:1;
  font-size:clamp(40px, 11.5vw, 64px); letter-spacing:-.04em; font-variant-numeric:tabular-nums;
}
.stat__label{ display:block; margin-top:8px; font-size:13px; color:var(--muted); line-height:1.3; }

/* Quem sou */
.about__title{ font-family:var(--font-display); font-weight:700; font-size:clamp(28px, 7.5vw, 38px); line-height:1.05; letter-spacing:-.03em; }
.about__text{ margin-top:18px; font-size:clamp(19px, 5vw, 23px); line-height:1.4; letter-spacing:-.01em; max-width:34ch; }
.word{ display:inline-block; }

.btn{
  position:relative; isolation:isolate; overflow:hidden;
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 14px 14px 24px; border-radius:999px;
  border:1.5px solid var(--text); color:var(--text);
  font-family:var(--font-display); font-weight:700; font-size:16px;
  transition:color .4s var(--ease);
}
.btn::before{
  content:""; position:absolute; inset:0 -8%; z-index:-1;
  background:var(--text); transform:skewX(var(--skew)) translateX(-112%);
  transition:transform .6s var(--ease);
}
.btn__arrow{
  width:30px; height:30px; border-radius:50%; display:grid; place-items:center;
  background:var(--text); color:var(--bg); transition:transform .5s var(--ease), background-color .4s, color .4s;
}
.btn__arrow svg{ width:14px; height:14px; }
@media (hover:hover){
  .btn:hover{ color:var(--bg); }
  .btn:hover::before{ transform:skewX(var(--skew)) translateX(0); }
  .btn:hover .btn__arrow{ transform:rotate(-45deg); background:var(--bg); color:var(--text); }
}
.about .btn{ margin-top:26px; }

/* ---------- Rodapé ---------- */
.footer{
  position:relative; z-index:1; width:100%; max-width:1240px; margin-inline:auto;
  padding:28px var(--gutter) max(28px, env(safe-area-inset-bottom)); min-height:var(--footer-h);
  border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 24px;
  font-size:13px; color:var(--muted);
}
.footer__links{ display:flex; flex-wrap:wrap; gap:6px 20px; }
.footer a, .footer button{ color:var(--muted); text-decoration:underline; text-decoration-color:var(--line); text-underline-offset:4px; transition:color .25s, text-decoration-color .25s; }
.footer a:hover, .footer button:hover{ color:var(--text); text-decoration-color:var(--mint); }

/* ---------- Subpáginas ---------- */
.back{
  display:inline-flex; align-items:center; gap:8px; align-self:flex-start;
  padding:9px 16px 9px 12px; border-radius:999px; border:1px solid var(--line);
  font-weight:600; font-size:14px; transition:border-color .3s, background-color .3s, color .3s;
}
.back svg{ width:16px; height:16px; transition:transform .4s var(--ease); }
.back:hover{ border-color:var(--text); }
.back:hover svg{ transform:translateX(-3px); }

.page-title{
  font-family:var(--font-display); font-weight:750; line-height:.95; letter-spacing:-.035em;
  font-size:clamp(40px, 11.5vw, 78px);
}
.kicker{ color:var(--muted); font-size:15px; margin-top:16px; max-width:38ch; }

.hero--compact .portrait{ width:min(46%, 190px); margin-bottom:-18px; }
.hero--compact .name{ font-size:clamp(34px, 10vw, 52px); font-size:min(11cqw, 64px); line-height:.98; margin-top:6px; }
.hero--compact .name.name--xl{ font-size:clamp(54px, 21vw, 110px); font-size:min(21.5cqw, 150px); line-height:.9; }

.story p{
  font-size:clamp(20px, 5.2vw, 25px); line-height:1.42; letter-spacing:-.012em;
  padding-block:22px; border-top:1px solid var(--line); max-width:36ch;
}
.story p:first-child{ border-top:0; padding-top:0; }
.story + .cta{ margin-top:12px; }

.logo-disc{
  position:relative; width:min(46%, 180px); aspect-ratio:1; border-radius:50%; overflow:hidden;
  box-shadow:0 0 0 1px var(--line), 0 0 0 10px var(--bg), 0 0 0 11px var(--mint);
  margin-bottom:28px;
}
.logo-disc img{ width:100%; height:100%; object-fit:cover; }

/* ---------- Sobre mim: composição editorial ---------- */
.hero--about{ gap:28px; }
.figure{ margin:0; width:min(100%, 440px); }
.figure__art{ position:relative; aspect-ratio:4/5; margin:12px 0 0 16px; perspective:900px; }
.figure__art .portrait__frame::after{
  background:linear-gradient(to top, color-mix(in srgb, var(--bg) 60%, transparent), transparent 40%);
}
.figure__caption{
  display:flex; flex-direction:column; gap:2px; margin-top:22px; padding-top:14px;
  border-top:1px solid var(--line);
}
.figure__caption strong{ font-family:var(--font-display); font-weight:700; font-size:20px; letter-spacing:-.015em; }
.figure__caption span{ font-size:14px; color:var(--muted); }
.rail--about{ container-type:inline-size; gap:36px; }
.rail--about .page-title{ font-size:clamp(40px, 12vw, 64px); font-size:min(15.5cqw, 88px); }
@media (min-width:1080px){
  .rail--about{ padding-block:calc(var(--topbar-h) + clamp(12px, 3svh, 36px)) 12vh; }
}
@media (min-width:1080px) and (min-height:760px){
  .hero--about{ justify-content:flex-start; }
  .hero--about .figure{ width:min(100%, 440px, max(180px, calc((100svh - 400px) * .8))); }
}

/* ---------- Documento legal ---------- */
.doc h2{ font-family:var(--font-display); font-weight:700; font-size:clamp(22px, 5vw, 28px); letter-spacing:-.02em; line-height:1.15; margin:44px 0 12px; }
.doc h3{ font-family:var(--font-display); font-weight:650; font-size:18px; margin:26px 0 8px; letter-spacing:-.01em; }
.doc p, .doc li{ color:var(--muted); line-height:1.7; }
.doc p{ margin-bottom:12px; max-width:68ch; }
.doc strong{ color:var(--text); font-weight:600; }
.doc ul{ padding-left:20px; display:flex; flex-direction:column; gap:8px; margin-bottom:12px; max-width:68ch; }
.doc a{ color:var(--text); text-decoration:underline; text-decoration-color:var(--mint); text-decoration-thickness:2px; text-underline-offset:3px; }
.doc__updated{ color:var(--muted); font-size:14px; padding:6px 14px; border:1px solid var(--line); border-radius:999px; display:inline-block; }
.doc__table{ overflow-x:auto; margin:12px 0 18px; border:1px solid var(--line); border-radius:14px; }
.doc table{ width:100%; min-width:520px; border-collapse:collapse; font-size:14px; }
.doc th, .doc td{ text-align:left; padding:12px 14px; border-bottom:1px solid var(--line); vertical-align:top; color:var(--muted); }
.doc th{ color:var(--text); font-weight:600; background:var(--bg-raised); }
.doc tr:last-child td{ border-bottom:0; }
.doc td:first-child{ color:var(--text); font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:13px; }

/* ---------- Consentimento de cookies (LGPD) ---------- */
.cookie-consent{
  position:fixed; z-index:800;
  left:max(12px, env(safe-area-inset-left)); right:max(12px, env(safe-area-inset-right)); bottom:max(12px, env(safe-area-inset-bottom));
  max-width:420px; margin-left:auto;
  padding:20px; border-radius:20px;
  background:var(--bg-raised); border:1px solid var(--line);
  box-shadow:0 24px 60px -20px rgba(0,0,0,.55);
  visibility:hidden; opacity:0; transform:translateY(24px);
  transition:opacity .4s var(--ease), transform .6s var(--ease), visibility 0s .6s;
}
.cookie-consent.is-visible{ visibility:visible; opacity:1; transform:none; transition:opacity .4s var(--ease), transform .6s var(--ease); }
.cookie-consent h2{ font-family:var(--font-display); font-weight:700; font-size:20px; letter-spacing:-.015em; }
.cookie-consent p{ margin-top:6px; font-size:14px; color:var(--muted); line-height:1.5; }
.cookie-consent p a{ color:var(--text); text-decoration:underline; text-decoration-color:var(--mint); text-underline-offset:3px; }
.cookie-consent__actions{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:16px; }
.cbtn{
  min-height:46px; padding:0 16px; border-radius:999px; font-weight:700; font-size:14px;
  border:1.5px solid var(--text); transition:transform .3s var(--ease), background-color .3s, color .3s;
}
.cbtn:active{ transform:scale(.97); }
.cbtn--solid{ background:var(--text); color:var(--bg); }
.cbtn--outline{ background:transparent; color:var(--text); }
@media (hover:hover){ .cbtn--outline:hover{ background:var(--text); color:var(--bg); } .cbtn--solid:hover{ background:transparent; color:var(--text); } }
.cookie-textlink{ display:block; margin:12px auto 0; font-size:13px; font-weight:600; color:var(--muted); text-decoration:underline; text-underline-offset:4px; text-decoration-color:var(--line); }
.cookie-textlink:hover{ color:var(--text); text-decoration-color:var(--mint); }

.cookie-modal-overlay{
  position:fixed; inset:0; z-index:850; display:grid; place-items:end center;
  padding:12px; background:rgba(2,8,7,.66); backdrop-filter:blur(6px);
  visibility:hidden; opacity:0; transition:opacity .35s var(--ease), visibility 0s .35s;
}
.cookie-modal-overlay.is-visible{ visibility:visible; opacity:1; transition:opacity .35s var(--ease); }
@media (min-width:640px){ .cookie-modal-overlay{ place-items:center; } }
.cookie-modal{
  width:100%; max-width:520px; max-height:calc(100svh - 24px); overflow:auto;
  background:var(--bg-raised); border:1px solid var(--line); border-radius:24px; padding:24px;
  transform:translateY(30px) scale(.98); transition:transform .6s var(--ease);
}
.cookie-modal-overlay.is-visible .cookie-modal{ transform:none; }
.cookie-modal-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.cookie-modal-head h2{ font-family:var(--font-display); font-weight:700; font-size:24px; letter-spacing:-.02em; }
.cookie-modal-close{ width:40px; height:40px; border-radius:50%; border:1px solid var(--line); display:grid; place-items:center; flex:none; }
.cookie-modal-close svg{ width:18px; height:18px; }
.cookie-modal-intro{ margin-top:10px; font-size:14px; color:var(--muted); }
.cookie-modal-intro a{ color:var(--text); text-decoration:underline; text-decoration-color:var(--mint); text-underline-offset:3px; }
.cookie-cat{ padding:16px 0; border-bottom:1px solid var(--line); }
.cookie-cat-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.cookie-cat-title{ font-weight:600; }
.cookie-cat-tag{ margin-left:8px; font-size:11px; font-weight:600; color:var(--ink); background:var(--mint); padding:2px 8px; border-radius:999px; }
.cookie-cat-desc{ margin-top:6px; font-size:13.5px; color:var(--muted); line-height:1.5; }
.cookie-switch{ position:relative; flex:none; width:48px; height:28px; }
.cookie-switch input{ position:absolute; inset:0; width:100%; height:100%; opacity:0; margin:0; cursor:pointer; z-index:2; }
.cookie-switch input:disabled{ cursor:not-allowed; }
.cookie-switch-track{ position:absolute; inset:0; border-radius:999px; background:var(--line); transition:background-color .3s; }
.cookie-switch-thumb{ position:absolute; left:3px; top:3px; width:22px; height:22px; border-radius:50%; background:var(--text); transition:transform .4s var(--ease), background-color .3s; }
.cookie-switch input:checked ~ .cookie-switch-track{ background:var(--mint); }
.cookie-switch input:checked ~ .cookie-switch-track .cookie-switch-thumb{ transform:translateX(20px); background:var(--ink); }
.cookie-switch input:disabled ~ .cookie-switch-track{ opacity:.55; }
.cookie-switch input:focus-visible ~ .cookie-switch-track{ outline:2px solid var(--focus); outline-offset:3px; }
.cookie-modal-actions{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:20px; }

/* ---------- Movimento reduzido e sem JavaScript ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .curtain{ display:none !important; }
}
