/* ============================================================================
   ANDRÉ WITHOEFT — PORTFÓLIO · EDIÇÃO MINIMAL
   System: quiet editorial. Instrument Serif display + Hanken Grotesk.
   Warm paper, near-black ink, monochrome. Color comes from the work.
   Lots of air. Only the essential.
   ========================================================================== */

:root{
  --serif: "Instrument Serif", Georgia, "Times New Roman", serif;
  --sans:  "Hanken Grotesk", system-ui, -apple-system, sans-serif;

  --paper:   #FEFDFB;
  --surface: #FFFFFF;
  --ink:     #1A1915;
  --ink-2:   #54514A;
  --muted:   #97938A;
  --line:    #E7DFCD;
  --line-2:  #D8CFB9;

  --accent:  var(--ink);            /* monochrome by default */

  --maxw: 1180px;
  --pad: clamp(22px, 6vw, 96px);
  --sp: 1;

  --ease: cubic-bezier(.22,.61,.21,1);
}

/* Tone variants (Tweaks) */
html[data-tone="warm"]{ --paper:#FEFDFB; --line:#EAE5D8; --line-2:#DAD4C4; }
html[data-tone="cool"]{ --paper:#F7F8FA; --line:#E7E9EE; --line-2:#D7DAE2; --ink:#15171B; --ink-2:#4C5059; --muted:#8E929B; }
html[data-tone="bright"]{ --paper:#FFFFFF; --line:#ECEAE3; --line-2:#DDDAD0; }

/* Accent variants (very sparing — dot + small marks only) */
html[data-accent="sage"]{ --accent:oklch(0.58 0.06 150); }
html[data-accent="clay"]{ --accent:oklch(0.50 0.11 42); }

/* Density */
html[data-density="airy"]{ --sp:1.22; }
html[data-density="cozy"]{ --sp:.84; }

/* ----- Reset --------------------------------------------------------------- */
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--sans); font-size:18px; line-height:1.6; font-weight:400;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  transition:background .5s var(--ease), color .5s var(--ease);
}
img{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; cursor:pointer; background:none; border:0; }
h1,h2,h3,h4,p{ margin:0; }
::selection{ background:var(--ink); color:var(--paper); }

/* ----- Primitives ---------------------------------------------------------- */
.wrap{ max-width:var(--maxw); margin:0 auto; padding-inline:var(--pad); }

.label{
  font-family:var(--sans); font-size:12px; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--muted);
}

.serif{ font-family:var(--serif); font-weight:400; line-height:.98; letter-spacing:-.005em; }
.serif em, em.it{ font-style:italic; }

.lead{ font-size:clamp(19px,1.9vw,23px); line-height:1.55; color:var(--ink-2); max-width:30ch; }
.muted{ color:var(--muted); }

/* link with quiet underline grow */
.ln{ position:relative; color:var(--ink); white-space:nowrap; }
.ln::after{
  content:""; position:absolute; left:0; right:0; bottom:-2px; height:1px;
  background:currentColor; transform:scaleX(var(--u,0)); transform-origin:left;
  transition:transform .4s var(--ease);
}
.ln:hover{ --u:1; }
.ln .ar{ display:inline-block; transition:transform .35s var(--ease); }
.ln:hover .ar{ transform:translateX(4px); }

/* copy-email button (reuses .ln underline) */
.ln-copy{ background:none; border:0; font:inherit; cursor:pointer; color:var(--ink); display:inline-flex; align-items:center; gap:9px; padding:0; -webkit-tap-highlight-color:transparent; }
.ln-copy-ico{ position:relative; display:inline-flex; width:17px; height:17px; flex:none; color:var(--muted); transition:color .3s var(--ease); }
.ln-copy:hover .ln-copy-ico{ color:var(--ink); }
.ln-copy-ico svg{ position:absolute; inset:0; width:17px; height:17px; transition:opacity .25s var(--ease), transform .25s var(--ease); }
.ln-copy-ico .ic-check{ opacity:0; transform:scale(.6); color:var(--ink); }
.ln-copy.is-copied .ln-copy-ico .ic-copy{ opacity:0; transform:scale(.6); }
.ln-copy.is-copied .ln-copy-ico .ic-check{ opacity:1; transform:none; }
.copy-toast{ font-family:var(--sans); font-size:13.5px; color:var(--muted); white-space:nowrap; opacity:0; transform:translateX(-6px); transition:opacity .3s var(--ease), transform .3s var(--ease); pointer-events:none; margin-left:-18px; }
.copy-toast.is-show{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .ln-copy-ico svg, .copy-toast{ transition:opacity .2s linear; } }

/* secondary button */
.btn-sec{
  display:inline-flex; align-items:center; gap:7px;
  font-family:var(--sans); font-size:13px; font-weight:600; letter-spacing:.01em;
  padding:9px 16px; border:1px solid var(--line-2); border-radius:999px;
  color:var(--ink); background:transparent; white-space:nowrap;
  transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease);
}
.btn-sec .ar{ display:inline-block; transition:transform .35s var(--ease); }
.btn-sec:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); transform:translateY(-1px); }
.btn-sec:hover .ar{ transform:translateX(3px); }

/* availability dot */
.avail{ display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-2); }
.avail .dot{
  width:7px; height:7px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent);
  animation:pulse 2.6s var(--ease) infinite;
}
@keyframes pulse{ 0%{ box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 50%,transparent);} 70%{ box-shadow:0 0 0 7px transparent;} 100%{ box-shadow:0 0 0 0 transparent;} }

/* ----- Header -------------------------------------------------------------- */
.top{
  position:fixed; inset:0 0 auto 0; z-index:50; height:68px;
  display:flex; align-items:center;
  background:color-mix(in srgb, var(--paper) 72%, transparent);
  -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
  border-bottom:1px solid transparent; transition:border-color .4s, background .4s;
}
.top.is-scrolled{ border-bottom-color:var(--line); }
.top .wrap{ display:flex; align-items:center; justify-content:space-between; width:100%; }
.top-name{ font-family:"Space Grotesk", var(--sans); font-weight:700; font-size:16px; letter-spacing:-.01em; text-transform:lowercase; white-space:nowrap; display:inline-flex; align-items:center; gap:7px; }
.brand-logo{ height:21px; width:auto; display:block; flex:none; }
.top-name span{ color:var(--muted); font-weight:400; }
.top-right{ display:flex; align-items:center; gap:22px; }
@media (max-width:560px){ .top-right .avail{ display:none; } }

/* ----- Language switch ----------------------------------------------------- */
.lang-switch{ display:inline-flex; align-items:center; gap:7px; font-family:var(--sans); font-size:12.5px; font-weight:600; letter-spacing:.08em; user-select:none; }
.lang-opt{ text-transform:uppercase; color:var(--ink); opacity:.42; padding:2px 1px; transition:opacity .25s var(--ease); }
.lang-opt:hover{ opacity:.7; }
.lang-opt[aria-pressed="true"]{ opacity:1; cursor:default; }
.lang-sep{ color:var(--muted); opacity:.55; font-weight:400; }
.ov-bar-right{ display:inline-flex; align-items:center; gap:22px; }
@media (max-width:560px){ .lang-switch{ font-size:11.5px; gap:6px; } .top-right{ gap:16px; } }

/* ----- Reveal -------------------------------------------------------------- */
.rv{ opacity:0; transform:translateY(16px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.rv.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .rv{ opacity:1; transform:none; } .avail .dot{ animation:none; } }

/* ============================================================================
   HOME — HERO
   ========================================================================== */
.hero{ padding-top:clamp(120px,20vh,220px); padding-bottom:clamp(70px,11vh,140px); }
.hero-label{ margin-bottom:clamp(34px,6vh,64px); }
.hero-title{
  --rot-ease:cubic-bezier(.4,0,.2,1);
  font-family:var(--serif); font-weight:400; letter-spacing:-.01em;
  font-size:clamp(28px,4.3vw,56px); line-height:1.1; text-wrap:pretty;
  max-width:34ch;
}
.hero-title em{ font-style:italic; }

/* rotating headline — inline "slot-machine" (top + opacity keep it in text flow,
   so the cycling phrase joins "tenho projetado" on the same line and wraps naturally) */
/* Static lead-in: the project serif (default family), regular. */
.hero-static{
  display:inline;
  font-family:var(--serif); font-weight:400; font-style:normal;
  letter-spacing:-.01em;
}
.hero-rotator{ display:inline; }
/* Dynamic phrase: same serif family, italic. */
.hero-rotator .hero-phrase{
  display:inline; position:relative; top:0;
  font-family:var(--serif); font-style:italic; font-weight:400;
  letter-spacing:0;
  transition:top .5s var(--rot-ease), opacity .5s var(--rot-ease);
  will-change:top, opacity;
}
.hero-rotator .hero-phrase.is-out{ top:-.42em; opacity:0; }
.hero-rotator .hero-phrase.is-pre{ top:.42em; opacity:0; transition:none; }
@media (prefers-reduced-motion: reduce){
  .hero-rotator .hero-phrase{ transition:opacity .35s linear; }
  .hero-rotator .hero-phrase.is-out,
  .hero-rotator .hero-phrase.is-pre{ top:0; }
}
.hero-foot{
  margin-top:clamp(44px,7vh,76px);
  display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between;
  gap:36px;
}
.hero-foot .lead{ max-width:58ch; font-size:clamp(16px,1.45vw,18px); line-height:1.5; }
.hero-cta{ display:flex; align-items:center; gap:10px; font-size:16px; }

/* ============================================================================
   SECTIONS
   ========================================================================== */
.section{ padding-block:clamp(72px,11vh,140px); border-top:1px solid var(--line); }
#trabalho{ border-top:0; }
.sec-head{
  display:flex; align-items:baseline; gap:16px;
  margin-bottom:clamp(40px,6vh,72px);
}
.sec-head .idx{ font-family:var(--sans); font-size:12px; color:var(--muted); font-weight:600; letter-spacing:.1em; }

/* ----- Work list ----------------------------------------------------------- */
.work{ border-top:1px solid var(--line); }
.work-row{
  display:grid; grid-template-columns:auto auto 1fr auto; align-items:center;
  gap:clamp(18px,3vw,40px);
  padding-block:clamp(24px,3.8vh,44px);
  border-bottom:1px solid var(--line);
  transition:padding-left .5s var(--ease);
}
.work-row:hover{ padding-left:14px; }
.work-num{ font-family:var(--sans); font-size:13px; color:var(--muted); font-weight:600; letter-spacing:.08em; }
.work-cover{
  width:clamp(104px,11vw,144px); aspect-ratio:16/10; border-radius:12px; overflow:hidden;
  background:var(--surface); border:1px solid var(--line); flex:none;
}
.work-cover img{ width:100%; height:100%; object-fit:cover; object-position:center; transition:transform .6s var(--ease); }
.work-row:hover .work-cover img{ transform:scale(1.05); }
.work-cover.blur img{ filter:blur(2px) saturate(.82); transform:scale(1.04); }
.work-cover.blur{ position:relative; }
.work-lock{ position:absolute; inset:0; display:grid; place-items:center; color:var(--muted); z-index:2; pointer-events:none; }
.work-lock svg{ width:30px; height:30px; }
@media (max-width:680px){ .work-lock svg{ width:24px; height:24px; } }
.work-main{ display:flex; flex-direction:column; gap:9px; }
.work-client{ font-family:var(--sans); font-size:12.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.work-title{
  font-family:var(--serif); font-weight:400; letter-spacing:-.01em;
  font-size:clamp(28px,3.8vw,48px); line-height:1.02; color:var(--ink);
}
.work-title em{ font-style:italic; }
.work-meta{ display:flex; align-items:center; gap:14px; }
.work-year{ font-family:var(--sans); font-size:13px; color:var(--muted); letter-spacing:.04em; white-space:nowrap; }
.work-arrow{
  width:46px; height:46px; border-radius:50%; border:1px solid var(--line-2);
  display:grid; place-items:center; color:var(--ink); flex:none;
  transition:background .4s var(--ease), color .4s var(--ease), border-color .4s, transform .4s var(--ease);
}
.work-arrow svg{ width:17px; height:17px; transition:transform .4s var(--ease); }
.work-row:hover .work-arrow{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.work-row:hover .work-arrow svg{ transform:translate(2px,-2px); }
.work-row.is-locked .work-title{ color:var(--ink); }
.lock-tag{
  font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); display:inline-flex; align-items:center; gap:6px;
}
.lock-tag svg{ width:13px; height:13px; }
@media (max-width:680px){
  .work-row{ grid-template-columns:auto 1fr auto; gap:16px; }
  .work-num{ display:none; }
  .work-cover{ width:84px; }
  .work-row:hover{ padding-left:8px; }
}

/* ----- About --------------------------------------------------------------- */
.about-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(40px,7vw,110px); align-items:start; }
.about-statement{ font-family:var(--serif); font-weight:400; font-size:clamp(26px,3.2vw,42px); line-height:1.12; letter-spacing:-.01em; text-wrap:pretty; }
.about-statement em{ font-style:italic; }
.about-body{ margin-top:26px; color:var(--ink-2); font-size:17px; max-width:46ch; }
.tline{ display:flex; flex-direction:column; }
.tline-row{ display:grid; grid-template-columns:1fr auto; gap:18px; align-items:center; padding-block:16px; border-bottom:1px solid var(--line); }
.tline-head{ font-family:var(--sans); font-size:12px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin:0 0 2px; }
.tline-head:not(:first-child){ margin-top:36px; }
.tline-head + .tline-row{ border-top:1px solid var(--line); }
.tline-head + .tline-item{ border-top:1px solid var(--line); }
.tline-left{ display:flex; align-items:center; gap:16px; }
.tline-icon{ width:46px; height:46px; display:block; flex:none; border-radius:11px; object-fit:cover; }
.tline-co{ font-family:var(--sans); font-weight:600; font-size:17px; }
.tline-role{ display:block; color:var(--muted); font-size:14px; font-weight:400; margin-top:2px; }
.tline-year{ font-family:var(--sans); font-size:13px; color:var(--muted); letter-spacing:.04em; white-space:nowrap; }

/* expandable experience item */
.tline-item{ border-bottom:1px solid var(--line); }
.tline-item > .tline-row{ border-bottom:0; }
.tline-toggle{ background:none; border:0; font:inherit; color:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; padding:6px 2px; margin:-6px -2px; }
.tline-meta{ display:flex; flex-direction:column; align-items:flex-end; gap:8px; }
.tline-more{ display:inline-flex; align-items:center; gap:6px; font-family:var(--sans); font-size:13px; font-weight:600; color:var(--ink-2); letter-spacing:.01em; white-space:nowrap; }
.tline-chev{ width:15px; height:15px; flex:none; transition:transform .3s ease; }
.tline-toggle:hover{ color:var(--ink); }
.tline-item[data-open] .tline-chev{ transform:rotate(180deg); }
.tline-detail{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .35s ease; }
.tline-item[data-open] .tline-detail{ grid-template-rows:1fr; }
.tline-detail-inner{ overflow:hidden; }
.tline-detail-inner p{ margin:0; padding:0 0 18px 62px; color:var(--ink-2); font-size:15px; line-height:1.5; max-width:52ch; text-wrap:pretty; }
.tline-detail-inner p:first-child{ padding-top:0; }
.tline-detail-inner p:not(:last-child){ padding-bottom:12px; }
.tline-detail-inner ul{ margin:0; padding:0 0 18px 62px; list-style:none; display:flex; flex-direction:column; gap:9px; }
.tline-detail-inner li{ position:relative; padding-left:18px; color:var(--ink-2); font-size:15px; line-height:1.5; max-width:52ch; text-wrap:pretty; }
.tline-detail-inner li::before{ content:""; position:absolute; left:1px; top:.6em; width:5px; height:5px; border-radius:50%; background:var(--muted); }
@media (max-width:760px){ .tline-detail-inner p{ padding-left:0; } .tline-detail-inner ul{ padding-left:18px; } }
@media (max-width:760px){ .about-grid{ grid-template-columns:1fr; gap:48px; } }

/* ============================================================================
   FOOTER / CONTACT
   ========================================================================== */
.foot{ border-top:1px solid var(--line); padding-block:clamp(80px,13vh,170px); }
.foot-title{
  font-family:var(--serif); font-weight:400; letter-spacing:-.01em;
  font-size:clamp(44px,7vw,104px); line-height:.98;
}
.foot-title em{ font-style:italic; }
.foot-links{ margin-top:clamp(36px,6vh,60px); display:flex; flex-direction:column; align-items:flex-start; gap:14px; font-size:17px; }
.foot-row{ display:flex; flex-wrap:wrap; align-items:center; gap:14px 32px; }
.foot-bottom{
  margin-top:clamp(56px,9vh,100px); padding-top:24px; border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px;
  font-family:var(--sans); font-size:13px; color:var(--muted); letter-spacing:.02em;
}

/* ============================================================================
   CASE PAGES
   ========================================================================== */
.case-top-back{ display:inline-flex; align-items:center; gap:9px; font-family:var(--sans); font-weight:500; font-size:14px; }
.case-top-back .ar{ display:inline-block; transition:transform .35s var(--ease); }
.case-top-back:hover .ar{ transform:translateX(-4px); }

.case-hero{ padding-top:clamp(120px,18vh,200px); padding-bottom:clamp(40px,6vh,72px); }
.case-client{ margin-bottom:clamp(26px,4vh,40px); }
.case-title{
  font-family:var(--serif); font-weight:400; letter-spacing:-.012em;
  font-size:clamp(40px,6.6vw,96px); line-height:.97; text-wrap:balance; max-width:17ch;
}
.case-title em{ font-style:italic; }
.case-outcome{ margin-top:clamp(30px,4.5vh,46px); font-size:clamp(19px,1.9vw,23px); line-height:1.5; color:var(--ink-2); max-width:54ch; }
.case-outcome b{ font-weight:600; color:var(--ink); }

.case-meta{
  margin-top:clamp(40px,6vh,68px);
  display:grid; grid-template-columns:repeat(3,1fr); gap:28px;
  border-top:1px solid var(--line); padding-top:30px;
}
.case-meta .cell .k{ font-family:var(--sans); font-size:11.5px; font-weight:600; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; }
.case-meta .cell .v{ font-family:var(--sans); font-size:16px; color:var(--ink); }
@media (max-width:680px){ .case-meta{ grid-template-columns:1fr; gap:20px; } }

/* figures */
.case-note{ padding-top:clamp(48px,7vh,90px); }
.case-note p{ font-family:var(--serif); font-weight:400; font-size:clamp(22px,2.6vw,34px); line-height:1.22; letter-spacing:-.005em; color:var(--ink); max-width:24ch; text-wrap:balance; }
.case-note p em{ font-style:italic; }
.case-note .sub{ font-family:var(--sans); font-size:17px; line-height:1.6; color:var(--ink-2); max-width:50ch; margin-top:22px; }
.figs{ padding-block:clamp(56px,9vh,120px); display:flex; flex-direction:column; gap:clamp(48px,8vh,110px); }
.fig{ display:flex; flex-direction:column; gap:18px; }
.fig-frame{
  background:var(--surface); border:1px solid var(--line);
  border-radius:22px; overflow:hidden; padding:clamp(18px,3vw,48px);
}
.fig-frame.flush{ padding:0; }
.fig-frame img{ width:100%; height:auto; }
.ph-box{ width:100%; display:grid; place-items:center; text-align:center; padding:24px; line-height:1.55;
  background:repeating-linear-gradient(135deg, color-mix(in srgb,var(--line) 34%, var(--surface)) 0 11px, var(--surface) 11px 22px);
  color:var(--muted); font-family:ui-monospace,"SF Mono",Menlo,monospace; font-size:12px; letter-spacing:.05em; text-transform:uppercase; }
.fig-video{ width:100%; height:auto; display:block; aspect-ratio:4 / 3; object-fit:cover; background:var(--paper); }
.fig-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(16px,2.5vw,28px); }
.fig-grid-3{ grid-template-columns:repeat(3,1fr); }
@media (max-width:680px){ .fig-grid{ grid-template-columns:1fr; } .fig-grid-3{ grid-template-columns:1fr; } }

/* editorial split block */
.case-split{ display:grid; grid-template-columns:.85fr 1fr; gap:clamp(32px,6vw,80px); align-items:center; padding-block:clamp(48px,8vh,110px); }
.case-split-img img{ width:100%; height:auto; display:block; border-radius:22px; }
.case-split-img img.no-round{ border-radius:0; }
.case-split-text p{ font-family:var(--serif); font-weight:400; font-size:clamp(22px,2.6vw,34px); line-height:1.22; letter-spacing:-.005em; color:var(--ink); max-width:18ch; text-wrap:balance; }
.case-split-text p em{ font-style:italic; }
.case-split-text .sub{ font-family:var(--sans); font-weight:400; font-size:17px; line-height:1.6; color:var(--ink-2); max-width:46ch; margin-top:22px; }
@media (max-width:680px){ .case-split{ grid-template-columns:1fr; gap:32px; } }
/* reversed split: text first, media second */
.case-split.rev{ grid-template-columns:1fr .85fr; }
/* constrained media (thin screens / portrait videos) sitting beside text */
.case-split:has(.case-split-media){ align-items:flex-start; }
.case-split-media{ max-width:360px; }
.case-split:not(.rev) .case-split-media{ margin-right:auto; }
.case-split.rev .case-split-media{ margin-left:auto; }
.case-split-media img, .case-split-media video{ width:100%; height:auto; display:block; border-radius:22px; }
.case-split-media .fig-frame.flush{ border-radius:22px; }
.case-split-media .fig-frame.flush img{ border-radius:0; }
.case-split-cap{ font-family:var(--sans); font-size:13.5px; line-height:1.5; color:var(--muted); margin-top:16px; max-width:42ch; }
.case-split-cap i{ font-style:italic; }
.case-split-text .eyebrow{ margin-bottom:18px; }
/* portrait / natural-ratio video */
.fig-video.tall{ aspect-ratio:auto; object-fit:contain; }
/* impact KPI */
.kpi{ display:flex; align-items:baseline; gap:16px; margin-top:30px; padding-top:26px; border-top:1px solid var(--line); max-width:46ch; }
.kpi-num{ font-family:var(--serif); font-style:italic; font-size:clamp(40px,5vw,60px); line-height:.9; color:var(--ink); flex:none; }
.kpi-lab{ font-family:var(--sans); font-size:15px; line-height:1.5; color:var(--ink-2); }
.fig-cap{ font-family:var(--sans); font-size:14px; color:var(--muted); max-width:60ch; padding-left:2px; }
.fig-cap b{ color:var(--ink-2); font-weight:600; margin-right:6px; }

/* locked note */
.locked{ display:flex; gap:18px; align-items:flex-start; border:1px solid var(--line-2); border-radius:10px; padding:clamp(22px,3vw,34px); background:color-mix(in srgb,var(--surface) 60%, var(--paper)); max-width:64ch; }
.locked svg{ width:22px; height:22px; flex:none; color:var(--ink-2); margin-top:2px; }
.locked .lt{ font-family:var(--sans); font-weight:600; font-size:15px; margin-bottom:6px; }
.locked p{ font-size:15px; color:var(--ink-2); }
.fig-frame.blur img{ filter:blur(14px) saturate(.5); transform:scale(1.04); }
.fig-frame.blur{ position:relative; }

/* ============================================================================
   GATE DE ACESSO — bloco de conteúdo confidencial
   ========================================================================== */
.gate{ position:relative; max-width:600px; border:1px solid var(--line-2); border-radius:0 22px 22px 0; background:color-mix(in srgb,var(--surface) 72%, var(--paper)); padding:clamp(28px,4vw,48px); overflow:hidden; }
.gate-rule{ position:absolute; inset:0 auto 0 0; width:2px; background:var(--ink); opacity:.82; }
.gate-panel{ animation:gateIn .42s var(--ease) both; }
@keyframes gateIn{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
.gate-head{ display:flex; align-items:center; gap:14px; }
.gate-lock{ width:40px; height:40px; flex:none; display:grid; place-items:center; border:1px solid var(--line-2); border-radius:50%; color:var(--ink); }
.gate-lock svg{ width:18px; height:18px; }
.gate-kicker{ font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin:0 0 3px; }
.gate-title{ font-family:var(--serif); font-style:italic; font-size:clamp(24px,3vw,32px); line-height:1; color:var(--ink); margin:0; }
.gate-desc{ font-family:var(--sans); font-size:15.5px; line-height:1.62; color:var(--ink-2); max-width:48ch; margin:22px 0 0; }

.gate-form, .gate-passform{ margin-top:30px; }
.gate-grid{ display:grid; grid-template-columns:1fr 1fr; gap:20px 24px; }
@media (max-width:560px){ .gate-grid{ grid-template-columns:1fr; } }
.gate-field{ display:flex; flex-direction:column; gap:8px; }
.gate-field label{ font-family:var(--sans); font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-2); }
.gate-field input{
  font-family:var(--sans); font-size:15.5px; color:var(--ink); background:transparent;
  border:0; border-bottom:1px solid var(--line-2); padding:9px 2px; width:100%;
  border-radius:0; transition:border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.gate-field input::placeholder{ color:var(--muted); opacity:.7; }
.gate-field input:focus{ outline:none; border-bottom-color:var(--ink); box-shadow:0 1px 0 0 var(--ink); }
.gate-field input:user-invalid{ border-bottom-color:oklch(0.55 0.18 25); box-shadow:0 1px 0 0 oklch(0.55 0.18 25); }
.gate-hp{ position:absolute; left:-9999px; width:1px; height:1px; opacity:0; }
.gate-pass-wrap{ position:relative; display:flex; align-items:center; }
.gate-pass-wrap input{ padding-right:38px; }
.gate-eye{ position:absolute; right:0; bottom:6px; width:30px; height:30px; display:grid; place-items:center; background:none; border:0; padding:0; cursor:pointer; color:var(--muted); transition:color .2s var(--ease); }
.gate-eye:hover{ color:var(--ink); }
.gate-eye:focus-visible{ outline:1px solid var(--ink); outline-offset:2px; }
.gate-eye svg{ width:18px; height:18px; }
.gate-eye .eye-hide{ display:none; }
.gate-eye[aria-pressed="true"] .eye-show{ display:none; }
.gate-eye[aria-pressed="true"] .eye-hide{ display:block; }

.gate-actions{ display:flex; align-items:center; gap:24px; flex-wrap:wrap; margin-top:30px; }
.gate-submit{
  font-family:var(--sans); font-size:14px; font-weight:600; letter-spacing:.01em;
  color:var(--paper); background:var(--ink); border:1px solid var(--ink); border-radius:999px;
  padding:13px 26px; cursor:pointer; display:inline-flex; align-items:center; gap:10px;
  transition:background .2s var(--ease), transform .2s var(--ease), opacity .2s var(--ease);
}
.gate-submit span{ transition:transform .25s var(--ease); }
.gate-submit:hover span{ transform:translateX(4px); }
.gate-submit:hover{ background:color-mix(in srgb,var(--ink) 84%, var(--paper)); }
.gate-submit:disabled{ opacity:.55; cursor:default; }
.gate-submit:disabled span{ transform:none; }
.gate-alt{
  font-family:var(--sans); font-size:14px; color:var(--ink-2); background:none; border:0; cursor:pointer;
  padding:4px 0; border-bottom:1px solid var(--line-2); transition:color .2s var(--ease), border-color .2s var(--ease);
}
.gate-alt:hover{ color:var(--ink); border-bottom-color:var(--ink); }

.gate-error, .gate-formerror{ font-family:var(--sans); font-size:13px; color:oklch(0.52 0.19 25); margin:4px 0 0; }
.gate-formerror{ margin-top:18px; }

.gate-sent-mark{ font-family:var(--sans); font-size:22px; color:var(--ink); width:44px; height:44px; display:grid; place-items:center; border:1px solid var(--line-2); border-radius:50%; margin:0 0 20px; }
.gate-sent{ font-family:var(--serif); font-style:italic; font-size:clamp(22px,2.8vw,30px); line-height:1.25; color:var(--ink); max-width:30ch; margin:0; text-wrap:balance; }

/* conteúdo revelado */
.gate-reveal{ animation:gateReveal .6s var(--ease) both; }
@keyframes gateReveal{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
.gate-unlocked{ color:var(--ink-2); margin:0 0 24px; }
.gate-unlocked::before{ content:""; display:inline-block; width:7px; height:7px; border-radius:50%; background:oklch(0.58 0.10 150); margin-right:9px; vertical-align:middle; }
.gate-intro{ max-width:54ch; margin:0 0 clamp(40px,6vh,72px); }
.gate-intro p.label{
  font-family:var(--sans); font-size:12px; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--muted);
  line-height:1.4; margin:0 0 18px; text-wrap:wrap;
}
.gate-intro p{ font-family:var(--serif); font-size:clamp(24px,3.2vw,36px); line-height:1.22; color:var(--ink); margin:0; text-wrap:balance; }
.gate-intro p em{ font-style:italic; }
.gate-intro .sub{ font-family:var(--sans); font-size:16px; line-height:1.64; color:var(--ink-2); margin-top:20px; max-width:60ch; }
.gate-list{ list-style:none; margin:24px 0 0; padding:0; display:flex; flex-direction:column; gap:14px; max-width:60ch; }
.gate-list li{ font-family:var(--sans); font-size:16px; line-height:1.64; color:var(--ink-2); padding-left:20px; position:relative; }
.gate-list li::before{ content:""; position:absolute; left:0; top:11px; width:5px; height:5px; border-radius:50%; background:var(--line-2); }
.gate-list li b{ color:var(--ink); font-weight:600; }
.gate-metrics{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,3vw,40px); margin-top:clamp(40px,6vh,72px); padding-top:34px; border-top:1px solid var(--line); }
@media (max-width:680px){ .gate-metrics{ grid-template-columns:1fr; gap:24px; } }
.gate-metric-num{ display:block; font-family:var(--serif); font-style:italic; font-size:clamp(40px,5vw,58px); line-height:.9; color:var(--ink); }
.gate-metric-lab{ display:block; font-family:var(--sans); font-size:14px; line-height:1.5; color:var(--ink-2); margin-top:12px; max-width:30ch; }
.gate-passform.shake{ animation:gateShake .4s var(--ease); }
@keyframes gateShake{ 0%,100%{ transform:translateX(0); } 20%{ transform:translateX(-7px); } 40%{ transform:translateX(6px); } 60%{ transform:translateX(-4px); } 80%{ transform:translateX(3px); } }
@media (prefers-reduced-motion: reduce){ .gate-panel, .gate-reveal{ animation:none !important; } .gate-passform.shake{ animation:none; } }

/* next case */
.case-next{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  border-top:1px solid var(--line); padding-block:clamp(44px,7vh,80px);
}
.case-next .nk{ font-family:var(--sans); font-size:12px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-bottom:12px; }
.case-next .nt{ font-family:var(--serif); font-weight:400; font-size:clamp(28px,4vw,52px); line-height:1.02; letter-spacing:-.01em; }
.case-next:hover .work-arrow{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.case-next:hover .work-arrow svg{ transform:translate(2px,-2px); }

/* ============================================================================
   OVERLAY (alternative case presentation)
   ========================================================================== */
.work-row[role="button"]{ cursor:pointer; }
body.ov-lock{ overflow:hidden; }

.ov{
  position:fixed; inset:0; z-index:80; background:var(--paper);
  display:flex; flex-direction:column;
  transform:translateY(100%); transition:transform .55s var(--ease);
  visibility:hidden;
}
.ov.open{ transform:none; visibility:visible; }
.ov-bar{
  flex:none; height:64px; display:flex; align-items:center; justify-content:space-between;
  padding-inline:var(--pad); border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--paper) 80%, transparent);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
}
.ov-id{ display:inline-flex; align-items:center; gap:8px; font-family:"Space Grotesk", var(--sans); font-weight:700; text-transform:lowercase; font-size:15px; letter-spacing:-.01em; }
.ov-id .brand-logo{ height:19px; }
.ov-close{ display:inline-flex; align-items:center; gap:9px; font-family:var(--sans); font-size:13px; font-weight:600; }
.ov-close .esc{ color:var(--muted); font-weight:400; }
.ov-close .x{ display:inline-grid; place-items:center; width:26px; height:26px; border-radius:50%; border:1px solid var(--line-2); transition:background .3s var(--ease), color .3s var(--ease), border-color .3s; }
.ov-close:hover .x{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.ov-progress{ position:absolute; left:0; top:64px; height:2px; width:0; background:var(--accent); transition:width .1s linear; z-index:2; }
.ov-scroll{ flex:1; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }

.ov-doc{ display:none; }
.ov-doc.active{ display:block; }
.ov .case-hero{ padding-top:clamp(52px,8vh,96px); }
.ov .case-next{ cursor:pointer; }

/* ============================================================================
   TRIPLACE — process blocks (research, charts, ideation, prototyping)
   ========================================================================== */

/* section eyebrow + intro pair reused inside .case-note already; add a quote band */
.tp-quote{
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  padding-block:clamp(36px,6vh,68px); margin-top:clamp(40px,6vh,72px);
  display:grid; grid-template-columns:1fr auto; gap:clamp(28px,5vw,72px); align-items:center;
}
.tp-quote blockquote{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(26px,3.6vw,46px); line-height:1.16; letter-spacing:-.01em;
  color:var(--ink); max-width:22ch; text-wrap:balance;
}
.tp-quote cite{
  display:block; font-style:normal; font-family:var(--sans);
  font-size:12px; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted); margin-top:0; max-width:18ch; text-align:right; line-height:1.5;
}
@media (max-width:680px){
  .tp-quote{ grid-template-columns:1fr; gap:22px; align-items:start; }
  .tp-quote cite{ text-align:left; margin-top:4px; }
}

/* research questions */
.tp-questions{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(24px,3vw,44px); margin-top:clamp(34px,5vh,56px); }
.tp-q{ display:block; }
.tp-q .qi{ font-family:var(--serif); font-style:italic; font-size:26px; color:var(--muted); line-height:1; display:block; padding-bottom:16px; margin-bottom:18px; border-bottom:1px solid var(--line); }
.tp-q .q{ font-family:var(--serif); font-size:clamp(19px,1.6vw,23px); line-height:1.25; color:var(--ink); }
.tp-q .r{ font-family:var(--sans); font-size:14.5px; line-height:1.55; color:var(--ink-2); margin-top:10px; }
@media (max-width:680px){ .tp-questions{ grid-template-columns:1fr; gap:26px; } .tp-q .qi{ padding-bottom:12px; margin-bottom:14px; } }

/* stat cards */
.tp-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:clamp(36px,5vh,60px); }
.tp-stat{
  border:1px solid var(--line); border-radius:16px; background:var(--surface);
  padding:24px 22px 22px; display:flex; flex-direction:column; gap:12px; min-height:150px;
}
.tp-stat .n{ font-family:var(--serif); font-weight:400; font-size:clamp(40px,4.6vw,58px); line-height:.82; letter-spacing:-.01em; color:var(--ink); }
.tp-stat .l{ font-family:var(--sans); font-size:13.5px; line-height:1.45; color:var(--ink-2); margin-top:auto; }
.tp-stats.insights{ grid-template-columns:repeat(2,1fr); gap:16px; margin-top:14px; }
.tp-stats.insights .tp-stat{ flex-direction:row; gap:22px; align-items:flex-start; min-height:0; padding:26px 26px; }
.tp-stat .ic{ flex:none; width:38px; height:38px; color:var(--muted); }
.tp-stat .ic svg{ width:100%; height:100%; }
.tp-stat .body .n{ font-size:clamp(34px,3.6vw,46px); }
.tp-stat .body .l{ margin-top:10px; max-width:34ch; }
@media (max-width:860px){ .tp-stats{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .tp-stats{ grid-template-columns:1fr; } .tp-stats.insights{ grid-template-columns:1fr; } }

/* charts */
.tp-chart{ margin-top:clamp(34px,5vh,54px); }
.tp-chart .ch-q{ font-family:var(--serif); font-style:italic; font-size:clamp(18px,2vw,23px); color:var(--ink); margin-bottom:26px; }
.tp-bars{ display:grid; gap:11px; }
.tp-bar-row{ display:grid; grid-template-columns:74px 1fr 52px; align-items:center; gap:18px; }
.tp-bar-row .k{ font-family:var(--sans); font-size:13.5px; color:var(--ink-2); white-space:nowrap; }
.tp-bar-track{ height:13px; border-radius:999px; background:color-mix(in srgb, var(--line) 60%, var(--surface)); overflow:hidden; }
.tp-bar-fill{ height:100%; width:0; border-radius:999px; background:var(--line-2); transition:width 1.05s var(--ease); }
.tp-chart.grown .tp-bar-fill{ width:var(--w); }
.tp-bar-row.hi .tp-bar-fill{ background:var(--ink); }
.tp-bar-row .v{ font-family:var(--sans); font-size:13.5px; font-weight:500; color:var(--ink); text-align:right; font-variant-numeric:tabular-nums; }
.tp-bar-row.hi .v{ color:var(--ink); }
.tp-bar-row:not(.hi) .k, .tp-bar-row:not(.hi) .v{ color:var(--muted); }
.tp-chart-note{ font-family:var(--sans); font-size:14.5px; line-height:1.55; color:var(--ink-2); margin-top:24px; max-width:56ch; }
.tp-chart-note b{ color:var(--ink); font-weight:600; }
.tp-legend{ display:flex; gap:22px; margin-top:20px; flex-wrap:wrap; }
.tp-legend span{ display:inline-flex; align-items:center; gap:8px; font-family:var(--sans); font-size:12.5px; color:var(--muted); }
.tp-legend i{ width:13px; height:13px; border-radius:4px; display:inline-block; }

/* single big stat (36,1%) */
.tp-bigstat{ margin-top:clamp(34px,5vh,54px); display:grid; grid-template-columns:auto 1fr; gap:clamp(28px,5vw,64px); align-items:center; }
.tp-bigstat .big{ font-family:var(--serif); font-weight:400; font-size:clamp(64px,10vw,128px); line-height:.8; letter-spacing:-.02em; color:var(--ink); }
.tp-bigstat .gauge{ max-width:560px; }
.tp-bigstat .gauge .gtrack{ height:16px; border-radius:999px; background:color-mix(in srgb, var(--line) 60%, var(--surface)); overflow:hidden; }
.tp-bigstat .gauge .gfill{ height:100%; width:0; border-radius:999px; background:var(--ink); transition:width 1.1s var(--ease); }
.tp-bigstat.grown .gauge .gfill{ width:var(--w); }
.tp-bigstat .gauge .gl{ font-family:var(--sans); font-size:14.5px; line-height:1.5; color:var(--ink-2); margin-top:16px; max-width:48ch; }
@media (max-width:680px){ .tp-bigstat{ grid-template-columns:1fr; gap:18px; } }

/* process steps (ideation, prototyping) */
.tp-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(28px,4vw,52px); margin-top:clamp(36px,5vh,58px); }
.tp-step{ border-top:1px solid var(--line-2); padding-top:22px; }
.tp-step .si{ font-family:"Space Grotesk", var(--sans); font-size:13px; font-weight:700; color:var(--muted); letter-spacing:.02em; }
.tp-step h4{ font-family:var(--sans); font-weight:600; font-size:17px; color:var(--ink); margin:14px 0 10px; }
.tp-step p{ font-family:var(--sans); font-size:15px; line-height:1.6; color:var(--ink-2); }
@media (max-width:760px){ .tp-steps{ grid-template-columns:1fr; gap:30px; } }

/* findings — two-up serif statements */
.tp-findings{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,5vw,72px); margin-top:clamp(34px,5vh,54px); }
.tp-finding p{ font-family:var(--serif); font-weight:400; font-size:clamp(20px,2.2vw,28px); line-height:1.24; color:var(--ink); text-wrap:balance; }
.tp-finding p em{ font-style:italic; }
.tp-finding .fl{ font-family:var(--sans); font-size:14.5px; line-height:1.55; color:var(--ink-2); margin-top:14px; max-width:40ch; }
@media (max-width:680px){ .tp-findings{ grid-template-columns:1fr; gap:28px; } }
