@import url("fonts.css");

/* =========================================================================
   GOOGH STUDIO — sistema visual
   Tema MESCLADO: cada <section> declara .sec--light ou .sec--dark e
   redefine as variáveis de superfície. Todos os componentes herdam.
   ========================================================================= */

:root{
  /* --- cores da marca (fixas nos dois temas) --- */
  --blue:#1B6EF3;  --blue-ink:#0B4FC4;
  --red:#E8453C;
  --yellow:#F2B01E;
  --green:#22A45D;
  --purple:#8A3FD1;
  --orange:#F2740B;

  /* --- tema claro (default) --- */
  --bg:#FFFFFF;
  --bg-soft:#F7F8FA;
  --surface:#FFFFFF;
  --surface-2:#FBFCFD;
  --ink:#0C1424;
  --ink-2:#1F2937;
  --muted:#5B6676;
  --faint:#8A93A1;
  --line:#E7EAEF;
  --line-strong:#D6DBE3;
  --shadow:0 1px 2px rgba(12,20,36,.04), 0 8px 24px rgba(12,20,36,.05);
  --shadow-lg:0 2px 4px rgba(12,20,36,.05), 0 18px 44px rgba(12,20,36,.10);
  --accent-on-bg:var(--blue);

  /* --- métrica --- */
  --wrap:1240px;
  --gutter:24px;
  --radius:14px;
  --radius-lg:20px;
  --sec-pad:clamp(64px, 8vw, 108px);
  --ease:cubic-bezier(.22,.61,.36,1);

  --font-display:"Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-text:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --header-h:76px;
}

/* ---------- superfícies escuras ---------- */
.sec--dark,
.theme-dark{
  --bg:#0B0D11;
  --bg-soft:#101318;
  --surface:#14181E;
  --surface-2:#191E25;
  --ink:#F4F6F9;
  --ink-2:#E2E6EC;
  --muted:#9AA4B1;
  --faint:#727C89;
  --line:#242A32;
  --line-strong:#333B45;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px rgba(0,0,0,.35);
  --shadow-lg:0 2px 6px rgba(0,0,0,.45), 0 24px 60px rgba(0,0,0,.5);
  --accent-on-bg:#5B95FF;
}

/* =========================== base =========================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 16px)}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }

body{
  margin:0;
  font-family:var(--font-text);
  font-size:16px; line-height:1.62;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

img,svg,video{max-width:100%; height:auto; display:block}
a{color:inherit; text-decoration:none}
button{font:inherit; color:inherit; cursor:pointer}
ul{margin:0; padding:0; list-style:none}
h1,h2,h3,h4{margin:0; font-family:var(--font-display); font-weight:700; line-height:1.1; letter-spacing:-.02em; color:var(--ink)}
p{margin:0}
:focus-visible{outline:2px solid var(--blue); outline-offset:3px; border-radius:6px}
/* precisa vencer os display:grid/flex dos componentes */
[hidden]{display:none !important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.wrap{width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gutter)}

/* =========================== seções =========================== */
.sec{
  position:relative;
  background:var(--bg);
  color:var(--ink);
  padding-block:var(--sec-pad);
}
.sec--soft{background:var(--bg-soft)}
.sec--tight{padding-block:clamp(44px,5vw,68px)}

/* costura entre um bloco claro e um escuro — fio nas 4 cores da marca */
.seam{
  height:3px; border:0; margin:0;
  background:linear-gradient(90deg,
    var(--blue) 0 25%, var(--red) 25% 50%,
    var(--yellow) 50% 75%, var(--green) 75% 100%);
}

.kicker{
  display:inline-block;
  font-family:var(--font-display); font-weight:600;
  font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--accent-on-bg);
  margin-bottom:14px;
}
.sec-head{max-width:660px; margin-bottom:clamp(32px,4vw,52px)}
.sec-head--center{margin-inline:auto; text-align:center}
.sec-head h2{font-size:clamp(1.75rem,3.4vw,2.5rem)}
.sec-head p{margin-top:14px; color:var(--muted); font-size:1.03rem}
.sec-head--row{display:flex; align-items:flex-end; justify-content:space-between; gap:24px; max-width:none}

.link-more{
  font-family:var(--font-display); font-weight:600; font-size:.9rem;
  color:var(--accent-on-bg); white-space:nowrap;
  display:inline-flex; align-items:center; gap:8px;
}
.link-more svg{transition:transform .3s var(--ease)}
.link-more:hover svg{transform:translateX(4px)}

/* =========================== botões =========================== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--font-display); font-weight:600; font-size:.94rem;
  padding:14px 24px; border-radius:10px; border:1px solid transparent;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease),
             background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease);
  white-space:nowrap;
}
.btn svg{flex:none; transition:transform .3s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn:hover svg.i-arrow{transform:translateX(4px)}

.btn--primary{background:var(--blue); color:#fff; box-shadow:0 6px 18px rgba(27,110,243,.28)}
.btn--primary:hover{background:var(--blue-ink); box-shadow:0 10px 26px rgba(27,110,243,.34)}

.btn--ghost{background:transparent; color:var(--ink); border-color:var(--line-strong)}
.btn--ghost:hover{border-color:var(--accent-on-bg); color:var(--accent-on-bg)}

.btn--plain{padding:14px 0; background:none; color:var(--ink)}
.btn--plain .play{
  width:42px; height:42px; border-radius:50%; flex:none;
  display:grid; place-items:center;
  border:1px solid var(--line-strong); color:var(--accent-on-bg);
  transition:border-color .25s var(--ease), background-color .25s var(--ease), color .25s var(--ease);
}
.btn--plain:hover .play{border-color:var(--blue); background:var(--blue); color:#fff}

.btn--wide{width:100%}
.btn--sm{padding:11px 18px; font-size:.86rem}

/* =========================== header =========================== */
.header{
  position:sticky; top:0; z-index:70;
  background:color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter:saturate(160%) blur(14px);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid transparent;
  transition:box-shadow .3s var(--ease), border-color .3s var(--ease), background-color .3s var(--ease);
}
.header.is-stuck{
  box-shadow:0 1px 0 rgba(12,20,36,.06), 0 8px 24px rgba(12,20,36,.06);
  border-bottom-color:var(--line);
  background:color-mix(in srgb, var(--bg) 96%, transparent);
}
.theme-dark .header.is-stuck{box-shadow:0 1px 0 rgba(255,255,255,.05), 0 10px 30px rgba(0,0,0,.5)}
.header-in{display:flex; align-items:center; gap:28px; height:var(--header-h)}

.nav{display:flex; align-items:center; gap:4px; margin-left:auto}
.nav > ul{display:flex; align-items:center; gap:2px}
.nav a{
  position:relative; display:inline-flex; align-items:center;
  font-family:var(--font-display); font-weight:500; font-size:.85rem;
  letter-spacing:.03em; text-transform:uppercase;
  color:var(--muted); padding:10px 13px; border-radius:8px;
  transition:color .2s var(--ease);
}
.nav .m-cta{display:none}
.nav a::after{
  content:""; position:absolute; left:13px; right:13px; bottom:4px; height:2px;
  border-radius:2px; background:var(--blue);
  transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease);
}
.nav a:hover{color:var(--ink)}
.nav a:hover::after,
.nav a[aria-current="page"]::after{transform:scaleX(1)}
.nav a[aria-current="page"]{color:var(--ink); font-weight:600}

/* dropdown serviços */
.has-sub{position:relative; display:flex; align-items:center}
.has-sub > a{display:inline-flex; align-items:center; gap:6px}
.has-sub > a svg{transition:transform .25s var(--ease)}
.submenu{
  position:absolute; top:calc(100% + 6px); left:0; min-width:232px;
  background:var(--surface); border:1px solid var(--line); border-radius:12px;
  box-shadow:var(--shadow-lg); padding:8px;
  opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .22s var(--ease), transform .22s var(--ease), visibility .22s;
}
.has-sub:hover .submenu, .has-sub:focus-within .submenu{opacity:1; visibility:visible; transform:none}
.has-sub:hover > a svg{transform:rotate(180deg)}
.submenu a{
  display:flex; align-items:center; gap:10px; width:100%;
  text-transform:none; letter-spacing:0; font-size:.9rem; padding:9px 12px;
  border-radius:8px; color:var(--ink-2); font-weight:500;
}
.submenu a::after{display:none}
.submenu a:hover{background:var(--bg-soft); color:var(--ink)}
.submenu .dot{width:7px; height:7px; border-radius:50%; flex:none}

.header-cta{margin-left:8px; border-color:color-mix(in srgb, var(--blue) 42%, transparent)}
.header-cta svg{color:var(--blue)}
.header-cta:hover{border-color:var(--blue); background:color-mix(in srgb, var(--blue) 7%, transparent); color:var(--ink)}
.burger{
  display:none; width:44px; height:44px; border:1px solid var(--line-strong);
  background:transparent; border-radius:10px; place-items:center; margin-left:auto;
}
.burger span{display:block; width:18px; height:2px; background:var(--ink); border-radius:2px; position:relative; transition:background-color .2s}
.burger span::before,.burger span::after{content:""; position:absolute; left:0; width:18px; height:2px; background:var(--ink); border-radius:2px; transition:transform .3s var(--ease)}
.burger span::before{top:-6px} .burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-6px) rotate(-45deg)}

/* =========================== logo =========================== */
.logo{display:inline-flex; flex-direction:column; gap:2px; line-height:1}
.logo-mark{display:flex; align-items:center; gap:1px}
.logo-mark span{
  font-family:var(--font-display); font-weight:700; font-size:1.62rem;
  letter-spacing:-.03em;
}
.logo-mark .l1{color:var(--blue)}
.logo-mark .l2{color:var(--red)}
.logo-mark .l4{color:var(--green)}
.logo-mark .l5{color:var(--blue)}
.logo-iris{width:1.44em; height:1.44em; margin:0 .01em; flex:none}
.logo-sub{
  font-family:var(--font-display); font-weight:500; font-size:.55rem;
  letter-spacing:.42em; text-transform:uppercase; color:var(--faint);
  padding-left:2px;
}
.logo--lg .logo-mark span{font-size:2rem}
.logo--lg .logo-sub{font-size:.62rem}

/* =========================== hero =========================== */
.hero{position:relative; background:var(--bg); overflow:hidden}
.hero::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(720px 420px at 8% -8%, rgba(27,110,243,.07), transparent 62%),
    radial-gradient(620px 400px at 96% 8%, rgba(242,176,30,.07), transparent 60%);
}
.hero-in{
  position:relative;
  display:grid; grid-template-columns:minmax(0,45fr) minmax(0,55fr);
  gap:clamp(28px,4vw,60px); align-items:center;
  padding-block:clamp(48px,6vw,84px);
}
.hero-eyebrow{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px;
  font-family:var(--font-display); font-weight:600;
  font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  margin-bottom:22px;
}
.hero-eyebrow i{font-style:normal}
.hero-eyebrow .sep{color:var(--line-strong)}
.hero-eyebrow .e1{color:var(--blue)}
.hero-eyebrow .e2{color:var(--red)}
.hero-eyebrow .e3{color:var(--yellow)}
.hero-eyebrow .e4{color:var(--green)}

.hero h1{
  font-size:clamp(2.15rem,5.4vw,4rem);
  font-weight:800; letter-spacing:-.035em; line-height:1.02;
  text-transform:uppercase;
}
.hero h1 .rainbow span{display:inline-block}
.hero h1 .rainbow .c1{color:var(--blue)}
.hero h1 .rainbow .c2{color:var(--red)}
.hero h1 .rainbow .c3{color:var(--yellow)}
.hero h1 .rainbow .c4{color:var(--green)}
.hero h1 .rainbow .c5{color:var(--blue)}
.hero h1 .rainbow .c6{color:var(--red)}

.hero-lead{margin-top:22px; max-width:44ch; color:var(--muted); font-size:1.05rem}
.hero-actions{display:flex; flex-wrap:wrap; align-items:center; gap:12px 22px; margin-top:32px}

.hero-shortcuts{
  display:flex; flex-wrap:wrap; gap:clamp(16px,2.4vw,30px);
  margin-top:clamp(30px,3.4vw,42px);
  padding-top:24px; border-top:1px solid var(--line);
}
.shortcut{display:flex; flex-direction:column; align-items:center; gap:9px; min-width:60px}
.shortcut svg{width:22px; height:22px; transition:transform .3s var(--ease)}
.shortcut span{
  font-family:var(--font-display); font-weight:600; font-size:.63rem;
  letter-spacing:.11em; text-transform:uppercase; color:var(--muted);
  transition:color .25s var(--ease);
}
.shortcut:hover svg{transform:translateY(-3px)}
.shortcut:hover span{color:var(--ink)}

/* mídia do hero + slider */
.hero-media{position:relative; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-lg)}
.hero-slides{position:relative; aspect-ratio:16/10.4}
.hero-slide{
  position:absolute; inset:0; opacity:0; visibility:hidden;
  transition:opacity .9s var(--ease), visibility .9s;
}
.hero-slide.is-active{opacity:1; visibility:visible}
.hero-slide img{width:100%; height:100%; object-fit:cover}
.hero-slide figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:44px 22px 18px;
  background:linear-gradient(to top, rgba(6,8,12,.78), transparent);
  color:#fff; font-family:var(--font-display); font-weight:600;
  font-size:.74rem; letter-spacing:.14em; text-transform:uppercase;
}
.hero-dots{
  position:absolute; left:0; right:0; bottom:16px; z-index:2;
  display:flex; justify-content:center; gap:9px;
}
.hero-dots button{
  width:9px; height:9px; padding:0; border-radius:50%; border:0;
  background:rgba(255,255,255,.45); transition:background-color .3s var(--ease), width .3s var(--ease);
}
.hero-dots button[aria-selected="true"]{background:#fff; width:26px; border-radius:5px}

/* =========================== cards de serviço =========================== */
.grid-services{
  display:grid; gap:18px;
  grid-template-columns:repeat(auto-fit, minmax(178px,1fr));
}
.card-svc{
  position:relative; overflow:hidden;
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius); padding:26px 22px 28px;
  text-align:center;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.card-svc::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:var(--c,var(--blue)); transform:scaleX(0);
  transition:transform .35s var(--ease);
}
.card-svc:hover{transform:translateY(-4px); box-shadow:var(--shadow-lg); border-color:var(--line-strong)}
.card-svc:hover::after{transform:scaleX(1)}
.card-svc .ico{
  width:52px; height:52px; margin:0 auto 16px; border-radius:13px;
  display:grid; place-items:center;
  color:var(--c,var(--blue));
  background:color-mix(in srgb, var(--c,var(--blue)) 12%, transparent);
}
.card-svc .ico svg{width:25px; height:25px}
.card-svc h3{
  font-size:.82rem; letter-spacing:.11em; text-transform:uppercase;
  margin-bottom:10px; font-weight:700;
}
.card-svc p{color:var(--muted); font-size:.88rem; line-height:1.55}

/* =========================== portfólio =========================== */
.grid-portfolio{display:grid; grid-template-columns:repeat(5,1fr); gap:14px}
.pf{
  position:relative; display:block; overflow:hidden;
  border-radius:var(--radius); aspect-ratio:3/4; background:var(--bg-soft);
}
.pf img{width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease)}
.pf::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to top, rgba(6,8,12,.72), rgba(6,8,12,.06) 52%, transparent);
  opacity:0; transition:opacity .4s var(--ease);
}
.pf figcaption{
  position:absolute; left:16px; right:16px; bottom:14px; z-index:2;
  color:#fff; font-family:var(--font-display); font-weight:600;
  font-size:.72rem; letter-spacing:.13em; text-transform:uppercase;
  opacity:0; transform:translateY(8px);
  transition:opacity .4s var(--ease), transform .4s var(--ease);
}
.pf:hover img{transform:scale(1.05)}
.pf:hover::after, .pf:hover figcaption{opacity:1}
.pf:hover figcaption{transform:none}

/* =========================== nosso espaço =========================== */
.space{display:grid; grid-template-columns:minmax(0,42fr) minmax(0,58fr); gap:clamp(28px,4vw,56px); align-items:center}
.feat-list{display:grid; gap:14px; margin:28px 0 30px}
.feat{display:flex; gap:14px; align-items:flex-start}
.feat .ico{
  width:38px; height:38px; flex:none; border-radius:10px; display:grid; place-items:center;
  color:var(--c,var(--blue)); background:color-mix(in srgb, var(--c,var(--blue)) 13%, transparent);
}
.feat .ico svg{width:19px; height:19px}
.feat h4{font-size:.94rem; margin-bottom:2px; letter-spacing:-.01em}
.feat p{color:var(--muted); font-size:.86rem; line-height:1.5}

.mosaic{
  position:relative;
  display:grid; gap:12px;
  grid-template-columns:1fr 1fr;
  grid-template-areas:"a b" "c d";
}
.mosaic figure{margin:0; border-radius:var(--radius); overflow:hidden; background:var(--bg-soft)}
.mosaic figure:nth-child(1){grid-area:a}
.mosaic figure:nth-child(2){grid-area:b}
.mosaic figure:nth-child(3){grid-area:c}
.mosaic figure:nth-child(4){grid-area:d}
.mosaic img{width:100%; height:100%; object-fit:cover; aspect-ratio:16/10; transition:transform .8s var(--ease)}
.mosaic figure:hover img{transform:scale(1.04)}
.mosaic-badge{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); z-index:3;
  background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:14px 22px; box-shadow:var(--shadow-lg);
  display:flex; align-items:center; gap:13px; white-space:nowrap;
}
.mosaic-badge .ico{width:34px; height:34px; border-radius:9px; display:grid; place-items:center; color:var(--blue); background:color-mix(in srgb,var(--blue) 13%, transparent)}
.mosaic-badge .ico svg{width:17px;height:17px}
.mosaic-badge strong{display:block; font-family:var(--font-display); font-size:1.28rem; font-weight:700; letter-spacing:-.02em; line-height:1.1}
.mosaic-badge small{color:var(--muted); font-size:.76rem}

/* =========================== públicos =========================== */
.grid-paths{display:grid; gap:16px; grid-template-columns:repeat(auto-fit,minmax(212px,1fr))}
.path{
  display:flex; flex-direction:column; gap:9px;
  padding:24px 22px; border-radius:var(--radius);
  background:var(--surface); border:1px solid var(--line);
  transition:transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.path:hover{transform:translateY(-3px); border-color:var(--c,var(--blue)); box-shadow:var(--shadow)}
.path .tag{
  font-family:var(--font-display); font-weight:600; font-size:.66rem;
  letter-spacing:.13em; text-transform:uppercase; color:var(--c,var(--blue));
}
.path h3{font-size:1.02rem; letter-spacing:-.015em}
.path p{color:var(--muted); font-size:.88rem; line-height:1.55; flex:1}
.path .go{
  display:inline-flex; align-items:center; gap:7px; margin-top:6px;
  font-family:var(--font-display); font-weight:600; font-size:.83rem; color:var(--ink);
}
.path .go svg{transition:transform .3s var(--ease)}
.path:hover .go svg{transform:translateX(4px)}

/* =========================== números / parceiros =========================== */
.stats{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:8px; border:1px solid var(--line); border-radius:var(--radius);
  background:var(--surface); overflow:hidden;
}
.stat{padding:26px 18px; text-align:center; border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat .n{
  font-family:var(--font-display); font-weight:700; font-size:1.9rem;
  letter-spacing:-.03em; color:var(--c,var(--blue)); line-height:1.1;
}
.stat .l{font-size:.8rem; color:var(--muted); margin-top:4px}

.partners{display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:clamp(26px,5vw,64px)}
.partners img{height:30px; width:auto; filter:grayscale(1); opacity:.55; transition:filter .3s var(--ease), opacity .3s var(--ease)}
.partners img:hover{filter:none; opacity:1}

/* =========================== CTA final =========================== */
.cta-final{text-align:center}
.cta-final h2{font-size:clamp(1.85rem,4vw,2.9rem); max-width:16ch; margin-inline:auto; text-transform:uppercase; font-weight:800; letter-spacing:-.03em}
.cta-final p{margin:18px auto 0; max-width:52ch; color:var(--muted); font-size:1.02rem}
.cta-actions{display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:32px}
/* quando o CTA escuro desemboca direto no rodapé escuro, corta o vão duplo */
.sec--dark.cta-final + .footer{padding-top:clamp(30px,3vw,44px)}
.sec--dark.cta-final{padding-bottom:clamp(44px,4.5vw,66px)}

/* =========================== formulário =========================== */
.field{display:block; margin-bottom:12px}
.field > span{
  display:block; font-family:var(--font-display); font-weight:600;
  font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); margin-bottom:7px;
}
.input, .field input, .field select, .field textarea{
  width:100%; padding:13px 15px; font:inherit; font-size:.94rem;
  color:var(--ink); background:var(--surface);
  border:1px solid var(--line-strong); border-radius:10px;
  transition:border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.field textarea{resize:vertical; min-height:110px}
.field select{appearance:none; background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%); background-position:calc(100% - 19px) 22px, calc(100% - 14px) 22px; background-size:5px 5px,5px 5px; background-repeat:no-repeat}
.input::placeholder, .field input::placeholder, .field textarea::placeholder{color:var(--faint)}
.input:focus, .field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(27,110,243,.15);
}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:12px}
.form-note{font-size:.78rem; color:var(--faint); margin-top:10px}
.form-msg{margin-top:12px; font-size:.88rem; padding:12px 14px; border-radius:10px; display:none}
.form-msg.ok{display:block; background:color-mix(in srgb,var(--green) 12%,transparent); color:var(--green)}
.form-msg.err{display:block; background:color-mix(in srgb,var(--red) 12%,transparent); color:var(--red)}

/* =========================== footer =========================== */
.footer{background:var(--bg); color:var(--ink); padding-top:clamp(56px,6vw,80px)}
.footer-grid{
  display:grid; gap:clamp(28px,4vw,48px);
  grid-template-columns:minmax(0,1.5fr) minmax(0,.85fr) minmax(0,1fr) minmax(0,1.5fr);
}
.footer h4{
  font-size:.74rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink); margin-bottom:18px; font-weight:700;
}
.footer-about p{color:var(--muted); font-size:.9rem; margin:18px 0 22px; max-width:36ch}
.footer-links li{margin-bottom:10px}
.footer-links a{color:var(--muted); font-size:.9rem; transition:color .2s var(--ease)}
.footer-links a:hover{color:var(--accent-on-bg)}
.socials{display:flex; gap:9px}
.socials a{
  width:38px; height:38px; border-radius:10px; display:grid; place-items:center;
  border:1px solid var(--line); color:var(--muted);
  transition:color .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease), background-color .25s var(--ease);
}
.socials a:hover{transform:translateY(-2px); color:#fff; border-color:transparent; background:var(--c,var(--blue))}
.socials svg{width:17px; height:17px}
.footer-bottom{
  margin-top:clamp(40px,5vw,60px); padding-block:22px;
  border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:10px 24px; justify-content:space-between; align-items:center;
  font-size:.8rem; color:var(--faint);
}
.footer-bottom .heart{color:var(--red)}

/* =========================== whatsapp flutuante =========================== */
.wa{
  position:fixed; right:18px; bottom:18px; z-index:80;
  width:56px; height:56px; border-radius:50%;
  display:grid; place-items:center; color:#fff;
  background:#25D366; box-shadow:0 8px 24px rgba(37,211,102,.4);
  transition:transform .25s var(--ease), box-shadow .25s var(--ease);
}
.wa:hover{transform:scale(1.07); box-shadow:0 12px 30px rgba(37,211,102,.5)}
.wa svg{width:29px; height:29px}

/* =========================== páginas internas =========================== */
.page-hero{position:relative; overflow:hidden; padding-block:clamp(46px,6vw,76px)}
.page-hero::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(680px 400px at 12% -12%, color-mix(in srgb,var(--c,var(--blue)) 10%, transparent), transparent 62%);
}
.page-hero-in{position:relative; max-width:760px}
.page-hero h1{font-size:clamp(1.95rem,4.6vw,3.2rem); text-transform:uppercase; font-weight:800; letter-spacing:-.032em}
.page-hero p{margin-top:18px; color:var(--muted); font-size:1.05rem; max-width:56ch}
.crumbs{display:flex; gap:8px; align-items:center; font-size:.8rem; color:var(--faint); margin-bottom:18px}
.crumbs a:hover{color:var(--accent-on-bg)}

/* Aviso de inauguração. O espaço físico ainda está em obra: toda página que vende
   uso do estúdio precisa dizer a partir de quando, senão o visitante liga achando
   que pode vir hoje. É <div> e não <p> de propósito — `.page-hero p` tem
   especificidade maior e sobrescreveria a fonte e a cor daqui. */
.abertura{
  display:inline-flex; align-items:center; gap:12px;
  max-width:62ch;
  /* cantos de cartão, não de cápsula: o texto sempre ocupa duas linhas nas
     larguras reais do hero, e cápsula de 65px de altura vira uma pastilha enorme */
  margin-top:24px; padding:13px 22px 13px 18px; border-radius:var(--radius);
  border:1px solid color-mix(in srgb, var(--c,var(--blue)) 34%, transparent);
  background:color-mix(in srgb, var(--c,var(--blue)) 8%, transparent);
  font-size:.88rem; line-height:1.45; color:var(--ink);
}
/* O selo "EM BREVE" faz o trabalho que a bolinha fazia, e diz o que ela não dizia. */
.abertura em{
  flex:none; font-style:normal; font-family:var(--font-display); font-weight:700;
  font-size:.64rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--c,var(--blue));
  padding-right:12px; margin-right:2px;
  border-right:1px solid color-mix(in srgb, var(--c,var(--blue)) 28%, transparent);
}
.abertura b{font-weight:600}
.abertura span{color:var(--muted)}
/* Quando o texto passa de uma linha o formato de cápsula deixa de fazer sentido:
   vira um bloco alto de cantos redondos demais. Aí o selo sobe para o topo. */
@media (max-width:640px){
  .abertura{
    display:flex; flex-direction:column; align-items:flex-start; gap:8px;
    border-radius:var(--radius); padding:14px 18px;
  }
  .abertura em{border-right:0; padding-right:0}
}
.hero-copy .abertura{margin-top:26px}

.grid-cards{display:grid; gap:18px; grid-template-columns:repeat(auto-fit,minmax(252px,1fr))}
.card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding:26px 24px;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.card:hover{transform:translateY(-3px); box-shadow:var(--shadow); border-color:var(--line-strong)}
.card h3{font-size:1.05rem; margin-bottom:10px; letter-spacing:-.015em}
.card p{color:var(--muted); font-size:.9rem}
.card ul.ticks{margin-top:14px; display:grid; gap:8px}
.card ul.ticks li{position:relative; padding-left:22px; font-size:.88rem; color:var(--muted)}
.card ul.ticks li::before{
  content:""; position:absolute; left:0; top:.52em; width:11px; height:6px;
  border-left:2px solid var(--c,var(--blue)); border-bottom:2px solid var(--c,var(--blue));
  transform:rotate(-45deg);
}
.card .price{
  font-family:var(--font-display); font-weight:700; font-size:1.4rem;
  letter-spacing:-.02em; margin:14px 0 4px; color:var(--ink);
}
.card .price small{display:block; font-family:var(--font-text); font-weight:400; font-size:.78rem; color:var(--faint); letter-spacing:0}

/* O preço ancora no rodapé do card. Sem isso, cards com número diferente de
   bullets deixam os valores em alturas diferentes e a tabela para de ler em linha. */
.card{display:flex; flex-direction:column}
.card .price{margin-top:auto; padding-top:14px}

/* Escada de locação: os 5 degraus precisam caber na mesma linha, senão o quinto
   fica órfão embaixo e a progressão de preço deixa de ser óbvia. */
@media (min-width:1080px){
  .grid-cards--5{grid-template-columns:repeat(5,1fr); gap:14px}
  .grid-cards--5 .card{padding:22px 18px}
  .grid-cards--5 .card h3{font-size:.97rem}
  .grid-cards--5 .card p{font-size:.84rem}
  .grid-cards--5 .card ul.ticks li{font-size:.82rem; padding-left:19px}
  .grid-cards--5 .card .price{font-size:1.3rem}
}

/* placeholder de conteúdo pendente de validação */
.pending{
  border:1px dashed var(--line-strong); border-radius:var(--radius);
  padding:22px 24px; background:var(--bg-soft); color:var(--muted); font-size:.9rem;
}
.pending strong{
  display:inline-block; font-family:var(--font-display); font-size:.68rem;
  letter-spacing:.13em; text-transform:uppercase; color:var(--orange);
  margin-bottom:6px;
}

/* FAQ */
.faq{display:grid; gap:10px; max-width:800px}
.faq details{
  background:var(--surface); border:1px solid var(--line);
  border-radius:12px; padding:2px 20px;
  transition:border-color .25s var(--ease);
}
.faq details[open]{border-color:var(--line-strong)}
.faq summary{
  list-style:none; cursor:pointer; padding:16px 26px 16px 0; position:relative;
  font-family:var(--font-display); font-weight:600; font-size:.96rem;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:""; position:absolute; right:0; top:calc(50% - 4px);
  width:8px; height:8px; border-right:2px solid var(--muted); border-bottom:2px solid var(--muted);
  transform:rotate(45deg); transition:transform .3s var(--ease);
}
.faq details[open] summary::after{transform:rotate(-135deg)}
.faq .a{padding:0 0 18px; color:var(--muted); font-size:.92rem}

.gallery{display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.gallery figure{margin:0; border-radius:var(--radius); overflow:hidden; background:var(--bg-soft)}
.gallery img{width:100%; aspect-ratio:16/10; object-fit:cover; transition:transform .7s var(--ease)}
.gallery figure:hover img{transform:scale(1.04)}

.split{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:clamp(28px,4vw,52px); align-items:center}

.steps{display:grid; gap:16px; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); counter-reset:s}
.step{position:relative; padding:24px 22px; border-radius:var(--radius); background:var(--surface); border:1px solid var(--line)}
.step::before{
  counter-increment:s; content:counter(s,decimal-leading-zero);
  font-family:var(--font-display); font-weight:700; font-size:1.5rem;
  color:var(--c,var(--blue)); display:block; margin-bottom:10px; letter-spacing:-.03em;
}
.step h3{font-size:.97rem; margin-bottom:7px}
.step p{color:var(--muted); font-size:.87rem}

/* =========================== animação de entrada =========================== */
.reveal{opacity:0; transform:translateY(18px); transition:opacity .7s var(--ease), transform .7s var(--ease)}
.reveal.is-in{opacity:1; transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1 !important; transform:none !important; transition:none}
  *{animation-duration:.001ms !important; transition-duration:.001ms !important}
}

/* =========================== responsivo =========================== */
@media (max-width:1080px){
  .grid-portfolio{grid-template-columns:repeat(3,1fr)}
  .grid-portfolio .pf:nth-child(4),
  .grid-portfolio .pf:nth-child(5){grid-column:span 1}
  .footer-grid{grid-template-columns:1fr 1fr}
  .footer-about{grid-column:1 / -1}
}

@media (max-width:940px){
  :root{--header-h:66px}
  .nav, .header-cta{display:none}
  .burger{display:grid}

  .nav.is-open{
    display:flex; flex-direction:column; align-items:stretch; gap:2px;
    position:absolute; top:var(--header-h); left:0; right:0;
    background:var(--bg); border-bottom:1px solid var(--line);
    padding:14px var(--gutter) 22px; box-shadow:var(--shadow-lg);
    max-height:calc(100vh - var(--header-h)); overflow-y:auto;
  }
  .nav.is-open a{padding:13px 4px; font-size:.92rem}
  .nav.is-open a::after{display:none}
  .nav.is-open .has-sub{position:static}
  .nav.is-open .submenu{
    position:static; opacity:1; visibility:visible; transform:none;
    box-shadow:none; border:0; border-left:2px solid var(--line);
    border-radius:0; margin:2px 0 8px 6px; padding:0 0 0 10px;
  }
  .nav.is-open .submenu a{padding:9px 4px}
  .nav > ul{flex-direction:column; align-items:stretch; gap:0}
  .nav.is-open .m-cta{display:inline-flex; margin-top:12px}

  .hero-in{grid-template-columns:1fr; padding-block:36px 44px}
  .hero-media{order:2}
  .hero-copy{order:1}
  .hero-shortcuts{order:3; justify-content:space-between; gap:12px}
  .hero-slides{aspect-ratio:16/11}

  .space{grid-template-columns:1fr}
  .mosaic-badge{position:static; transform:none; margin-top:12px; grid-column:1/-1; justify-content:center}
  .mosaic{grid-template-areas:"a b" "c d"}

  .sec-head--row{flex-direction:column; align-items:flex-start; gap:12px}
}

@media (max-width:640px){
  :root{--gutter:20px}
  body{font-size:15.5px}
  .grid-services{grid-template-columns:1fr 1fr; gap:12px}
  .card-svc{padding:22px 14px}
  .card-svc .ico{width:44px;height:44px;margin-bottom:12px}
  .card-svc .ico svg{width:21px;height:21px}
  .card-svc p{font-size:.82rem}

  /* portfólio vira carrossel horizontal */
  .grid-portfolio{
    display:flex; gap:12px; overflow-x:auto; scroll-snap-type:x mandatory;
    margin-inline:calc(var(--gutter) * -1); padding-inline:var(--gutter);
    padding-bottom:6px; -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .grid-portfolio::-webkit-scrollbar{display:none}
  .pf{flex:0 0 70%; scroll-snap-align:start}
  .pf::after, .pf figcaption{opacity:1}
  .pf figcaption{transform:none}

  .mosaic{grid-template-columns:1fr; grid-template-areas:"a" "b" "c" "d"}
  .form-row{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
  .stat{border-right:0; border-bottom:1px solid var(--line)}
  .stat:last-child{border-bottom:0}
  .hero-shortcuts{gap:10px}
  .shortcut{min-width:0; flex:1}
  .shortcut span{font-size:.58rem; letter-spacing:.07em}
  .wa{right:14px; bottom:14px; width:52px; height:52px}
  .btn{padding:13px 20px}
}

@media print{
  .header,.wa,.hero-dots{display:none}
  .sec--dark{--bg:#fff;--ink:#000;--muted:#444}
}
