/* Hanine — studio site. One sheet. Tokens first, then components, in page order. */

:root{
  --paper:#F6F5F1; --paper-2:#FFFFFF; --paper-3:#ECEAE4;
  --ink:#141418; --graphite:#5E5E66; --mute:#8A8A93; --hairline:#DFDCD5;
  --ledger:#1E7F5C; --ledger-2:#166A4C; --ledger-soft:#E3F1EA; --ledger-bright:#4CC38A;
  --amber:#B4690E; --amber-soft:#FBEFD9;
  --night:#121214; --night-2:#1B1B1F; --night-3:#232329; --night-ink:#EDEBE6; --night-graphite:#A3A3AB; --night-hairline:#2C2C33;

  --display:"Familjen Grotesk",ui-sans-serif,system-ui,sans-serif;
  --sans:"Instrument Sans",ui-sans-serif,system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --r-card:26px; --r-tile:20px; --r-pill:999px;
  --shadow:0 1px 2px rgba(20,20,24,.05),0 14px 40px -12px rgba(20,20,24,.12);
  --shadow-lg:0 2px 4px rgba(20,20,24,.06),0 32px 72px -20px rgba(20,20,24,.22);
  --ease:cubic-bezier(.22,1,.36,1);
  --gutter:clamp(16px,4.5vw,56px); --maxw:1240px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}
img,video,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}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
::selection{background:var(--ledger);color:#fff}
:focus-visible{outline:2px solid var(--ledger);outline-offset:3px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}

/* Type ------------------------------------------------------------------ */
.t-display{font-family:var(--display);font-weight:600;letter-spacing:-.035em;line-height:.98;text-wrap:balance}
.t-hero{font-size:clamp(44px,7.4vw,112px)}
.t-statement{font-family:var(--display);font-weight:600;font-size:clamp(32px,4.6vw,64px);line-height:1.02;letter-spacing:-.03em;text-wrap:balance;max-width:18ch}
.t-sub{font-family:var(--display);font-weight:600;font-size:clamp(24px,2.6vw,34px);line-height:1.1;letter-spacing:-.02em;text-wrap:balance}
.t-lede{font-size:clamp(18px,1.5vw,21px);line-height:1.5;color:var(--graphite);max-width:58ch;text-wrap:pretty}
.t-label{font:600 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--graphite)}
.t-mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px}
.lit{color:var(--ledger)}
.band-dark .lit{color:var(--ledger-bright)}
.label-row{display:flex;flex-wrap:wrap;gap:0 14px;align-items:center}
.label-row li+li::before{content:"";display:inline-block;width:1px;height:10px;background:var(--hairline);margin-right:14px;vertical-align:-1px}
.band-dark .label-row li+li::before{background:var(--night-hairline)}

/* Buttons ---------------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;gap:10px;height:50px;padding:0 22px;border-radius:var(--r-pill);font:500 15px/1 var(--sans);letter-spacing:-.005em;transition:transform .25s var(--ease),background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);white-space:nowrap}
.btn:active{transform:scale(.98)}
.btn-primary{background:var(--ink);color:#fff}
.btn-primary:hover{background:var(--ledger)}
.btn-ghost{border:1px solid var(--hairline);background:transparent;color:var(--ink)}
.btn-ghost:hover{border-color:var(--ink)}
.band-dark .btn-primary{background:#fff;color:var(--ink)}
.band-dark .btn-primary:hover{background:var(--ledger-bright);color:var(--ink)}
.band-dark .btn-ghost{border-color:var(--night-hairline);color:var(--night-ink)}
.band-dark .btn-ghost:hover{border-color:var(--night-ink)}
.btn .arr{transition:transform .25s var(--ease)}
.btn:hover .arr{transform:translateX(3px)}
.btns{display:flex;flex-wrap:wrap;gap:12px}

/* Nav -------------------------------------------------------------------- */
.nav{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:50;display:flex;align-items:center;gap:6px;padding:6px 6px 6px 16px;border-radius:var(--r-pill);background:rgba(246,245,241,.72);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border:1px solid rgba(20,20,24,.08);box-shadow:0 1px 0 rgba(255,255,255,.6) inset,0 10px 30px -14px rgba(20,20,24,.25);transition:box-shadow .3s var(--ease),transform .3s var(--ease)}
.nav.is-hidden{transform:translate(-50%,-120%)}
.nav .mark{font-family:var(--display);font-weight:700;letter-spacing:-.03em;font-size:19px;display:flex;align-items:center;gap:9px;margin-right:12px}
.mark-dot{width:9px;height:9px;border-radius:50%;background:var(--ledger);box-shadow:0 0 0 3px var(--ledger-soft)}
.nav-links{display:flex;gap:2px}
.nav-links a{padding:9px 12px;border-radius:var(--r-pill);font-size:14.5px;font-weight:500;color:var(--graphite);transition:color .2s,background .2s}
.nav-links a:hover,.nav-links a.is-active{color:var(--ink);background:rgba(20,20,24,.06)}
.nav .btn{height:38px;padding:0 16px;font-size:14px}
@media (max-width:760px){.nav-links{display:none}.nav{left:var(--gutter);right:var(--gutter);transform:none;justify-content:space-between}.nav.is-hidden{transform:translateY(-120%)}}

/* Reveal ----------------------------------------------------------------- */
.rv{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.rv.in{opacity:1;transform:none}
.rv[data-d="1"]{transition-delay:.08s}.rv[data-d="2"]{transition-delay:.16s}.rv[data-d="3"]{transition-delay:.24s}.rv[data-d="4"]{transition-delay:.32s}.rv[data-d="5"]{transition-delay:.4s}

/* Hero ------------------------------------------------------------------- */
.hero{padding:clamp(120px,16vh,168px) 0 0;position:relative}
.hero-chip{display:inline-flex;align-items:center;gap:10px;height:34px;padding:0 14px 0 10px;border-radius:var(--r-pill);background:var(--paper-2);border:1px solid var(--hairline);font:500 13px/1 var(--sans);color:var(--graphite);box-shadow:var(--shadow)}
.hero-chip i{width:8px;height:8px;border-radius:50%;background:var(--ledger);position:relative}
.hero-chip i::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1.5px solid var(--ledger);animation:ring 2.2s var(--ease) infinite}
@keyframes ring{0%{transform:scale(.5);opacity:.8}80%,100%{transform:scale(1.7);opacity:0}}
.hero h1{margin:26px 0 0;max-width:12ch}
.hero-row{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:end;margin-top:34px}
.hero .t-lede{max-width:46ch}
@media (max-width:860px){.hero-row{grid-template-columns:1fr;gap:26px}}

/* Hero bento */
.bento{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:clamp(300px,34vw,440px);gap:16px;margin-top:56px}
.tile{position:relative;overflow:hidden;border-radius:var(--r-card);background:var(--paper-2);border:1px solid var(--hairline);box-shadow:var(--shadow);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.tile:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.tile--2{grid-column:span 2}
.tile-media{position:absolute;inset:0}
.tile-tag{position:absolute;left:14px;bottom:14px;z-index:3;display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 12px 0 8px;border-radius:var(--r-pill);background:rgba(246,245,241,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(20,20,24,.08);font:500 12.5px/1 var(--sans);color:var(--ink);white-space:nowrap;max-width:calc(100% - 28px);overflow:hidden;text-overflow:ellipsis}
.tile-tag img{height:14px;width:auto}
.tile-tag .q{color:var(--graphite)}
.tile--dark{background:var(--night);border-color:var(--night-2);color:var(--night-ink)}
.tile--dark .tile-tag{background:rgba(27,27,31,.8);border-color:rgba(255,255,255,.1);color:var(--night-ink)}
/* window frame, peeking from bottom-left */
.win{position:absolute;left:8%;right:-6%;top:12%;bottom:-8%;border-radius:16px 16px 0 0;background:#fff;border:1px solid var(--hairline);box-shadow:var(--shadow-lg);overflow:hidden;transform:translateZ(0)}
.win-bar{height:34px;display:flex;align-items:center;gap:8px;padding:0 14px;background:rgba(246,245,241,.9);border-bottom:1px solid var(--hairline);font:500 11.5px/1 var(--sans);color:var(--graphite)}
.win-bar .dots{display:flex;gap:5px}.win-bar .dots i{width:9px;height:9px;border-radius:50%;background:var(--hairline)}
.win-bar .url{margin-left:6px;height:20px;padding:0 10px;border-radius:6px;background:#fff;border:1px solid var(--hairline);display:flex;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--mute)}
.win video,.win img{width:100%;height:auto}
/* phone frame, peeking from bottom */
.phone{position:absolute;left:50%;bottom:-14%;width:min(272px,78%);transform:translateX(-50%);aspect-ratio:390/844;container-type:inline-size}
.phone-screen{position:relative;width:100%;height:100%;border:3.4cqw solid #0C0C0E;border-radius:14cqw;overflow:hidden;background:#fff;box-shadow:var(--shadow-lg),0 0 0 1px rgba(0,0,0,.35)}
.phone-screen video,.phone-screen img{width:100%;height:100%;object-fit:cover;object-position:top}
.phone-island{position:absolute;top:2.4cqw;left:50%;transform:translateX(-50%);width:30cqw;height:8.2cqw;border-radius:999px;background:#0C0C0E;z-index:2}
.phone-sbar{position:absolute;top:0;left:0;right:0;height:12cqw;display:flex;align-items:center;justify-content:space-between;padding:0 7cqw;font:600 3.6cqw/1 var(--sans);color:#000;z-index:2;pointer-events:none}
.phone-sbar b{display:flex;gap:1cqw;align-items:flex-end}.phone-sbar b i{width:1cqw;background:#000;border-radius:1px;display:inline-block}
.tile--dark .phone-sbar{color:#fff}.tile--dark .phone-sbar b i{background:#fff}
/* hero entrance */
.tile.rv{transform:translateY(28px) scale(.985)}
.tile.rv.in{transform:none}
@media (max-width:1023px){.bento{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:clamp(280px,46vw,420px)}.tile--2{grid-column:span 2}}
@media (max-width:560px){.bento{grid-template-columns:1fr;grid-auto-rows:clamp(300px,84vw,400px)}.tile--2{grid-column:span 1}}

/* Logo strip ------------------------------------------------------------- */
.strip{margin-top:42px;padding:22px 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);overflow:hidden;position:relative}
.strip::before,.strip::after{content:"";position:absolute;top:0;bottom:0;width:120px;z-index:2;pointer-events:none}
.strip::before{left:0;background:linear-gradient(90deg,var(--paper),transparent)}
.strip::after{right:0;background:linear-gradient(-90deg,var(--paper),transparent)}
.strip-track{display:flex;width:max-content;animation:marquee 34s linear infinite}
.strip:hover .strip-track{animation-play-state:paused}
.strip-track ul{display:flex;align-items:center;gap:56px;padding-right:56px}
.strip-track li{display:flex;align-items:center;gap:10px;color:var(--graphite);font:600 15px/1 var(--display);letter-spacing:-.01em;white-space:nowrap;opacity:.85}
.strip-track li img{height:20px;width:auto;filter:grayscale(1) contrast(1.1);opacity:.75}
.strip-track li .mz{display:flex;align-items:center;gap:7px}.strip-track li .mz img{height:18px;filter:none;opacity:1}
@keyframes marquee{to{transform:translate3d(-50%,0,0)}}

/* Stats ------------------------------------------------------------------ */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:56px}
.stat{padding:26px 26px 24px;border-radius:var(--r-tile);background:var(--paper-2);border:1px solid var(--hairline)}
.stat-n{font-family:var(--display);font-weight:600;font-size:clamp(38px,4vw,56px);letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.stat-n small{font-size:.55em;letter-spacing:-.02em;margin-left:2px;color:var(--ledger)}
.stat-l{margin-top:10px;color:var(--graphite);font-size:14.5px;line-height:1.4}
.stat-w{margin-top:2px;font:500 11.5px/1 var(--mono);color:var(--mute);letter-spacing:.02em}
@media (max-width:860px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Sections --------------------------------------------------------------- */
.sec{padding:clamp(88px,11vw,150px) 0}
.sec-head{display:grid;grid-template-columns:1fr;gap:18px;max-width:900px}
.sec-head .t-lede{margin-top:8px}
.band-dark{background:var(--night);color:var(--night-ink)}
.band-dark .t-lede{color:var(--night-graphite)}
.band-dark .t-label{color:var(--night-graphite)}

/* Thesis + rail ------------------------------------------------------------ */
.thesis{border-radius:40px 40px 0 0;margin-top:clamp(72px,9vw,120px)}
.rail-wrap{margin-top:56px;padding:28px 0 10px;border-top:1px solid var(--night-hairline)}
.rail{position:relative;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:0}
.rail::before{content:"";position:absolute;left:0;right:0;top:9px;height:1px;background:var(--night-hairline)}
.rail-tok{position:absolute;top:4px;left:0;width:11px;height:11px;border-radius:50%;background:var(--night-ink);box-shadow:0 0 0 4px rgba(237,235,230,.14);animation:tok 16s linear infinite;z-index:2}
@keyframes tok{0%{left:0%}42%{left:42%}44%{left:42%}70%{left:70%}72%{left:70%}88%{left:88%}92%{left:88%;background:var(--ledger-bright);box-shadow:0 0 0 4px rgba(76,195,138,.25)}100%{left:100%;background:var(--ledger-bright);box-shadow:0 0 0 4px rgba(76,195,138,.25)}}
.rail li{position:relative;padding-top:26px;font:500 13.5px/1.2 var(--sans);color:var(--night-graphite);opacity:.45;animation:stamp 16s linear infinite}
.rail li::before{content:"";position:absolute;top:6px;left:0;width:7px;height:7px;border-radius:50%;background:var(--night-graphite)}
.rail li .ts{display:block;margin-top:6px;font:400 11.5px/1 var(--mono);color:var(--night-graphite);opacity:0;animation:ts 16s linear infinite}
.rail li.money{color:var(--ledger-bright)}
.rail li.money::before{background:var(--ledger-bright)}
.rail li:nth-child(1){animation-delay:0s}.rail li:nth-child(2){animation-delay:2.2s}.rail li:nth-child(3){animation-delay:4.4s}.rail li:nth-child(4){animation-delay:6.6s}.rail li:nth-child(5){animation-delay:8.8s}.rail li:nth-child(6){animation-delay:11s}.rail li:nth-child(7){animation-delay:13.2s}.rail li:nth-child(8){animation-delay:15.2s}
.rail li .ts{animation-delay:inherit}
@keyframes stamp{0%{opacity:.45}1%{opacity:1}95%{opacity:1}100%{opacity:.45}}
@keyframes ts{0%{opacity:0;transform:translateY(3px)}2%{opacity:.8;transform:none}95%{opacity:.8}100%{opacity:0}}
.thesis-points{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;margin-top:64px}
.thesis-points h3{font:600 19px/1.3 var(--display);letter-spacing:-.01em;margin-bottom:8px}
.thesis-points p{color:var(--night-graphite);font-size:15.5px;line-height:1.55}
@media (max-width:860px){.rail{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:34px}.rail::before{display:none}.rail-tok{display:none}.thesis-points{grid-template-columns:1fr;gap:28px}}

/* Work ------------------------------------------------------------------- */
.cases{display:grid;gap:22px;margin-top:64px}
.case{display:grid;grid-template-columns:1.15fr 1fr;border-radius:var(--r-card);background:var(--paper-2);border:1px solid var(--hairline);box-shadow:var(--shadow);overflow:hidden;min-height:560px}
.case:nth-child(even){grid-template-columns:1fr 1.15fr}
.case:nth-child(even) .case-media{order:2}
.case-media{position:relative;background:var(--paper-3);overflow:hidden;min-height:420px}
.case-media .win{left:8%;right:-10%;top:14%;bottom:-6%}
.case-media .phone{width:min(300px,62%);bottom:-10%}
.case-media .win-hero{left:6%;right:6%;top:50%;bottom:auto;transform:translateY(-50%);border-radius:16px}
.case-copy{padding:clamp(28px,4vw,52px);display:flex;flex-direction:column;gap:22px;justify-content:center}
.case-brand{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.case-brand img{height:22px;width:auto}
.case-brand .mz{display:flex;align-items:center;gap:9px;font:800 20px/1 var(--display);letter-spacing:-.02em}
.case-brand .mz img{height:26px}
.case-brand .mz span{color:var(--amber)}
.case-brand .bl{font:700 18px/1 var(--display);letter-spacing:.06em}
.case-brand .bl small{display:block;font:600 11px/1 var(--sans);letter-spacing:.2em;margin-top:3px;color:var(--graphite)}
.case-brand .num{font:500 12px/1 var(--mono);color:var(--mute);letter-spacing:.06em}
.case h3{font:600 clamp(26px,2.6vw,36px)/1.08 var(--display);letter-spacing:-.025em;text-wrap:balance}
.case .t-lede{font-size:16.5px}
.facts{display:grid;gap:12px;border-top:1px solid var(--hairline);padding-top:18px}
.facts div{display:grid;grid-template-columns:118px 1fr;gap:14px;font-size:14.5px;line-height:1.5}
.facts dt{font:600 11.5px/1.6 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--graphite);padding-top:2px}
.facts dd{margin:0}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border-radius:var(--r-pill);background:var(--paper);border:1px solid var(--hairline);font:500 12.5px/1 var(--sans);color:var(--graphite)}
.chip.live{background:var(--ledger-soft);border-color:transparent;color:var(--ledger-2)}
.chip.live i{width:6px;height:6px;border-radius:50%;background:var(--ledger)}
.chip.beta{background:var(--amber-soft);border-color:transparent;color:var(--amber)}
.chip img{height:13px;width:auto}
.case-note{position:absolute;left:14px;top:14px;z-index:3;font:500 11.5px/1 var(--mono);color:var(--graphite);background:rgba(246,245,241,.85);backdrop-filter:blur(8px);padding:7px 10px;border-radius:8px;border:1px solid rgba(20,20,24,.06)}
.film{margin-top:22px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:24px;padding:30px clamp(24px,3vw,40px);border-radius:var(--r-card);background:var(--night);color:var(--night-ink)}
.film h3{font:600 clamp(22px,2.2vw,28px)/1.15 var(--display);letter-spacing:-.02em}
.film p{color:var(--night-graphite);margin-top:6px;font-size:15.5px}
@media (max-width:980px){.case,.case:nth-child(even){grid-template-columns:1fr;min-height:0}.case:nth-child(even) .case-media{order:0}.case-media{min-height:360px}.film{grid-template-columns:1fr}}

/* Patterns (illustrations) -------------------------------------------------- */
.patterns{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:minmax(300px,auto);gap:16px;margin-top:56px}
.pat{position:relative;overflow:hidden;border-radius:var(--r-card);background:var(--paper-2);border:1px solid var(--hairline);box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.pat:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.pat--3{grid-column:span 3}.pat--2{grid-column:span 2}.pat--4{grid-column:span 4}
.pat-copy{padding:26px 110px 0 26px;z-index:2}
.pat-copy h3{font:600 21px/1.2 var(--display);letter-spacing:-.015em}
.pat-copy p{margin-top:8px;color:var(--graphite);font-size:15px;line-height:1.5;max-width:44ch}
.pat-media{position:relative;flex:1;min-height:220px;margin-top:18px;overflow:hidden}
.pat-media .win{left:8%;right:-4%;top:6%;bottom:-4%}
.pat-media .phone{width:min(220px,60%);bottom:-26%}
.pat-media .mockimg{position:absolute;left:8%;right:-4%;top:8%;border-radius:14px 14px 0 0;border:1px solid var(--hairline);box-shadow:var(--shadow-lg);overflow:hidden;background:#fff}
.pat-media .mockimg video{width:100%;height:auto}
.pat .ill{position:absolute;right:14px;top:14px;z-index:3;font:500 11px/1 var(--mono);color:var(--mute);background:var(--paper);padding:6px 9px;border-radius:7px;border:1px solid var(--hairline);letter-spacing:.04em}
@media (max-width:980px){.patterns{grid-template-columns:repeat(2,minmax(0,1fr))}.pat--3,.pat--2,.pat--4{grid-column:span 1}}
@media (max-width:560px){.patterns{grid-template-columns:1fr}}

/* How we work -------------------------------------------------------------- */
.how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:56px}
.how li{padding:28px 26px 30px;border-radius:var(--r-tile);background:var(--night-2);border:1px solid var(--night-hairline);transition:border-color .3s var(--ease),transform .5s var(--ease)}
.how li:hover{border-color:rgba(237,235,230,.25);transform:translateY(-3px)}
.how .ic{width:40px;height:40px;border-radius:12px;background:var(--night-3);display:grid;place-items:center;color:var(--ledger-bright);margin-bottom:20px}
.how .ic svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.how h3{font:600 19px/1.3 var(--display);letter-spacing:-.01em}
.how p{margin-top:8px;color:var(--night-graphite);font-size:15px;line-height:1.55}
@media (max-width:860px){.how{grid-template-columns:1fr}}

/* Team --------------------------------------------------------------------- */
.leads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:56px}
.lead{border-radius:var(--r-card);background:var(--paper-2);border:1px solid var(--hairline);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}
.lead-photo{position:relative;aspect-ratio:5/3.4;background:var(--night);color:var(--night-ink);overflow:hidden}
.lead-photo img{width:100%;height:100%;object-fit:cover}
.lead-photo .ini{position:absolute;inset:0;display:grid;place-items:center;font:600 clamp(64px,7vw,96px)/1 var(--display);letter-spacing:-.05em;color:var(--night-ink)}
.lead-photo .ini::after{content:"";position:absolute;left:24px;right:24px;bottom:24px;height:1px;background:var(--night-hairline)}
.lead-photo .role-tag{position:absolute;left:18px;top:18px;font:500 11px/1 var(--mono);letter-spacing:.06em;color:var(--night-graphite)}
.lead-body{padding:26px 26px 28px;display:flex;flex-direction:column;gap:14px;flex:1}
.lead-n{font:600 24px/1.15 var(--display);letter-spacing:-.02em}
.lead-r{font:500 14.5px/1.4 var(--sans);color:var(--ledger-2);margin-top:4px}
.lead p{font-size:15px;line-height:1.55;color:var(--graphite)}
.lead p.lead-hook{font:600 18px/1.3 var(--display);letter-spacing:-.01em;color:var(--ink);text-wrap:balance}
.lead p.for{margin-top:auto;padding-top:16px;border-top:1px solid var(--hairline);color:var(--ink)}
.lead p.for strong{font-weight:600}
.support{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;margin-top:40px}
.support li{border-top:1px solid var(--hairline);padding-top:14px}
.support .r{font:600 14.5px/1.35 var(--sans)}
.support .c{font-size:13.5px;line-height:1.45;color:var(--graphite);margin-top:4px}
@media (max-width:1023px){.leads{grid-template-columns:1fr}.lead-photo{aspect-ratio:16/7}.support{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.support{grid-template-columns:1fr}}

/* Close ---------------------------------------------------------------------- */
.close{border-radius:40px 40px 0 0;padding-bottom:clamp(40px,6vw,80px)}
.close .t-statement{max-width:16ch}
.close-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:end}
.close-card{padding:28px;border-radius:var(--r-tile);background:var(--night-2);border:1px solid var(--night-hairline)}
.close-card dl{display:grid;gap:12px;margin:0}
.close-card div{display:grid;grid-template-columns:110px 1fr;gap:12px;font-size:14.5px}
.close-card dt{color:var(--night-graphite)}.close-card dd{margin:0}
.close-card dd a{border-bottom:1px solid var(--night-hairline)}
.close-card dd a:hover{border-color:var(--night-ink)}
@media (max-width:860px){.close-grid{grid-template-columns:1fr}}
.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:clamp(56px,8vw,96px);padding-top:24px;border-top:1px solid var(--night-hairline);font-size:13.5px;color:var(--night-graphite)}
.foot .mark{color:var(--night-ink);font-family:var(--display);font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}
.foot ul{display:flex;gap:20px}
.foot a:hover{color:var(--night-ink)}

/* Reduced motion ------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none;transition:none}
  .strip-track{animation:none}.strip{overflow-x:auto}
  .rail-tok,.hero-chip i::after{animation:none}
  .rail li,.rail li .ts{animation:none;opacity:1}
  .tile,.pat,.how li,.btn{transition:none}
}

/* =====================================================================
   Work index, case studies, services, industries (multi-page additions)
   ===================================================================== */
.wrap--wide{max-width:1440px}

/* Logos and wordmarks */
.logo-img{height:30px;width:auto}
.logo-word{font:700 22px/1 var(--display);letter-spacing:.02em;display:inline-flex;align-items:baseline;gap:8px}
.logo-word small{font:500 13px/1 var(--sans);letter-spacing:.02em;color:var(--graphite)}
.logo-serif{font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:30px;letter-spacing:-.01em}
.logo-mazi{display:inline-flex;align-items:center;gap:10px;font:800 24px/1 var(--display);letter-spacing:-.02em}
.logo-mazi img{height:30px;width:auto}.logo-mazi b{color:#C99A2E}

/* Stage: a brand-coloured surface that frames windows and phones */
.stage{position:relative;overflow:hidden;background:var(--stage);border-radius:var(--r-card);isolation:isolate}
.stage::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 0%,rgba(255,255,255,.14),transparent 60%);z-index:0;pointer-events:none}
.stage--dark::before{background:radial-gradient(120% 80% at 50% 0%,rgba(255,255,255,.4),transparent 60%)}
.stage--card{aspect-ratio:16/10.5}
.stage--hero{aspect-ratio:16/8.2;border-radius:34px;margin-top:56px}
.stage .win{z-index:1;left:7%;right:7%;top:9%;bottom:-3%;border-color:rgba(255,255,255,.12);box-shadow:0 30px 80px -20px rgba(0,0,0,.45)}
.stage .win img,.stage .win video{width:100%;height:auto;display:block}
.stage .win.st-win--with-phone{right:20%}
.stage .st-phone{left:auto;right:6%;bottom:-16%;transform:none;width:21%;z-index:2}
.stage--hero .st-phone{width:17%;right:8%}
.st-phones{position:absolute;inset:0;display:flex;justify-content:center;align-items:flex-start;gap:4%;padding-top:7%;z-index:1}
.st-phones .phone{position:relative;left:auto;bottom:auto;transform:none;width:26%;flex:0 0 auto}
.stage--hero .st-phones .phone{width:19%}
.st-phones .st-ph--1{margin-top:6%}

/* Work hero + filters */
.whero{padding:clamp(130px,17vh,180px) 0 0}
.whero h1{margin-top:22px;max-width:13ch}
.whero .t-lede{margin-top:28px}
.wlist{padding:56px 0 clamp(96px,11vw,150px)}
.filters{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:22px;border-bottom:1px solid var(--hairline)}
.filter{height:40px;padding:0 15px;border-radius:var(--r-pill);border:1px solid var(--hairline);background:var(--paper-2);font:500 14px/1 var(--sans);color:var(--graphite);transition:background .2s,color .2s,border-color .2s}
.filter span{font:500 11.5px/1 var(--mono);color:var(--mute);margin-left:4px}
.filter:hover{border-color:var(--ink);color:var(--ink)}
.filter.is-on{background:var(--ink);border-color:var(--ink);color:#fff}
.filter.is-on span{color:rgba(255,255,255,.6)}
.filter-status{margin:18px 4px 0;color:var(--mute)}
.wgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 28px;margin-top:28px}
.wcard{display:flex;flex-direction:column;gap:22px;color:inherit}
.wcard .stage{transition:transform .6s var(--ease),box-shadow .6s var(--ease);box-shadow:var(--shadow)}
.wcard:hover .stage{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.wcard:hover .stage .win{transform:translateY(-6px)}
.stage .win,.stage .phone{transition:transform .8s var(--ease)}
.wcard:hover .stage .st-phone{transform:translateY(-12px)}
.wcard-body{display:flex;flex-direction:column;gap:10px;padding:0 4px}
.wcard-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.wcard-client{font:600 15px/1 var(--display);letter-spacing:-.01em}
.wcard-tags{display:flex;flex-wrap:wrap;gap:6px}
.wcard-tags span{font:500 11.5px/1 var(--mono);letter-spacing:.02em;color:var(--graphite);padding:6px 8px;border-radius:7px;background:var(--paper-3)}
.wcard h3{font:600 clamp(24px,2.3vw,32px)/1.1 var(--display);letter-spacing:-.025em;text-wrap:balance;max-width:24ch}
.wcard p{color:var(--graphite);font-size:16px;line-height:1.5;max-width:52ch}
.wcard-more{display:inline-flex;align-items:center;gap:8px;margin-top:4px;font:500 14.5px/1 var(--sans);color:var(--ink)}
.wcard-more .arr{transition:transform .25s var(--ease)}
.wcard:hover .wcard-more .arr,.next:hover .wcard-more .arr{transform:translateX(4px)}
.wcard--feature{grid-column:1/-1}
.wcard--feature .stage--card{aspect-ratio:16/7.4}
.wcard--feature .stage .win{left:10%;right:10%}
.wcard--feature .stage .win.st-win--with-phone{right:26%}
.wcard--feature .stage .st-phone{width:15%;right:9%}
.wcard--feature h3{font-size:clamp(28px,3.2vw,44px);max-width:22ch}
.wcard.is-hidden{display:none}
@media (max-width:860px){.wgrid{grid-template-columns:1fr;gap:48px}.wcard--feature .stage--card{aspect-ratio:16/10.5}.filters{flex-wrap:nowrap;overflow-x:auto;margin:0 calc(var(--gutter)*-1);padding-left:var(--gutter);padding-right:var(--gutter);scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.filter{flex:0 0 auto}}

/* Case study */
.cs-hero{padding:clamp(120px,15vh,160px) 0 0}
.crumb{display:flex;gap:10px;font:500 13.5px/1 var(--sans);color:var(--graphite)}
.crumb a:hover{color:var(--ink)}
.cs-brand{margin-top:34px;min-height:32px;display:flex;align-items:center}
.cs-title{font-size:clamp(38px,5.6vw,84px);margin-top:20px;max-width:17ch}
.cs-hero .t-lede{margin-top:26px;max-width:62ch}
.cs-meta{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:28px;margin:64px 0 0;padding:28px 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}
.cs-meta dt{font:600 11.5px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:12px}
.cs-meta dd{margin:0;font-size:15px;line-height:1.55}
.cs-meta dd .sub{display:block;color:var(--graphite)}
.cs-meta dd a{border-bottom:1px solid var(--hairline)}
.cs-meta dd a:hover{border-color:var(--ink)}
.cs-meta .chip{margin-right:8px}
.chip.proto{background:var(--paper-3);border-color:transparent;color:var(--graphite)}
.live-link{font-size:14px;font-weight:500}
@media (max-width:980px){.cs-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cs-stats{margin-top:28px}
.stats--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.stats--2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:860px){.stats--3{grid-template-columns:1fr}}
.cs-sec{padding-top:clamp(72px,9vw,120px)}
.cs-row{display:grid;grid-template-columns:260px 1fr;gap:48px;align-items:start}
.cs-k{font:600 13px/1.3 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--graphite);position:sticky;top:96px;display:flex;flex-direction:column;gap:10px}
.cs-k span{font:500 13px/1 var(--mono);color:var(--ledger);letter-spacing:.04em}
.prose p{font-size:clamp(19px,1.6vw,23px);line-height:1.5;letter-spacing:-.005em;max-width:40ch;text-wrap:pretty}
.prose p+p{margin-top:20px}
.prose .chips{margin-top:12px}
.cs-built{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.cs-built li{padding:26px 26px 28px;border-radius:var(--r-tile);background:var(--paper-2);border:1px solid var(--hairline)}
.cs-built .n{font:500 12px/1 var(--mono);color:var(--ledger)}
.cs-built h3{font:600 20px/1.25 var(--display);letter-spacing:-.015em;margin-top:16px}
.cs-built p{margin-top:8px;color:var(--graphite);font-size:15.5px;line-height:1.55}
@media (max-width:980px){.cs-row{grid-template-columns:1fr;gap:22px}.cs-k{position:static;flex-direction:row;align-items:baseline}}
@media (max-width:640px){.cs-built{grid-template-columns:1fr}}

/* Gallery */
.cs-gallery{display:grid;gap:clamp(48px,6vw,88px);padding-top:clamp(80px,10vw,140px)}
.gfig{display:flex;flex-direction:column;gap:16px}
.gfig figcaption{font-size:14.5px;color:var(--graphite);max-width:70ch}
.gfig .win,.pair .win{position:relative;left:auto;right:auto;top:auto;bottom:auto;border-radius:16px;box-shadow:var(--shadow-lg)}
.gfig .win img,.gfig .win video{width:100%;height:auto;display:block}
.win--tall .tall-view{height:min(78vh,760px);overflow:hidden;position:relative}
.win--tall .tall-view img{width:100%;height:auto;will-change:transform}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media (max-width:760px){.pair{grid-template-columns:1fr}}
.phones-row{display:flex;justify-content:center;align-items:flex-start;gap:clamp(14px,3vw,40px);padding:clamp(40px,6vw,80px) clamp(16px,4vw,48px);border-radius:var(--r-card);background:var(--stage);position:relative;overflow:hidden;isolation:isolate}
.phones-row::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 70% at 50% 0%,rgba(255,255,255,.16),transparent 60%);z-index:-1}
.phones-row .phone{position:relative;left:auto;bottom:auto;transform:none;width:min(290px,30%);flex:0 1 auto}
.phones-row--1 .phone{width:min(320px,70%)}
.phones-row .phone:nth-child(2){margin-top:clamp(20px,4vw,56px)}
@media (max-width:640px){.phones-row{gap:10px}}

/* The hard part */
.cs-hard{margin-top:clamp(96px,11vw,150px);padding:clamp(80px,10vw,140px) 0;position:relative;overflow:hidden}
.cs-hard::before{content:"";position:absolute;inset:0;background:var(--stage);opacity:.55}
.cs-hard--tint::before{opacity:.09}
.cs-hard .wrap{position:relative}
.cs-hard .cs-k{position:static;color:var(--night-graphite)}
.cs-hard .cs-k span{color:var(--ledger-bright)}
.cs-hard blockquote{margin:24px 0 0;font:500 clamp(28px,3.6vw,52px)/1.12 var(--display);letter-spacing:-.025em;max-width:26ch;text-wrap:balance}

/* Next project */
.cs-next{padding:clamp(80px,10vw,130px) var(--gutter) clamp(80px,10vw,130px)}
.next{display:grid;grid-template-columns:1fr 1.2fr;gap:40px;align-items:center;padding:clamp(24px,3vw,40px);border-radius:34px;background:var(--paper-2);border:1px solid var(--hairline);box-shadow:var(--shadow);transition:box-shadow .5s var(--ease),transform .5s var(--ease)}
.next:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}
.next-client{font:600 15px/1 var(--display);margin-top:16px}
.next h2{font:600 clamp(26px,2.8vw,40px)/1.08 var(--display);letter-spacing:-.025em;margin-top:12px;text-wrap:balance}
.next .wcard-more{margin-top:22px}
@media (max-width:860px){.next{grid-template-columns:1fr}}

/* Site footer CTA (inner pages) */
.sitefoot{border-radius:40px 40px 0 0;padding:clamp(88px,10vw,140px) 0 clamp(40px,6vw,64px)}
.sitefoot-cta{display:flex;flex-direction:column;gap:32px}
.sitefoot-cta .t-statement{max-width:20ch}

/* Home: services */
.services{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:56px}
.svc{padding:30px 28px 30px;border-radius:var(--r-tile);background:var(--paper-2);border:1px solid var(--hairline);display:flex;flex-direction:column;gap:12px;transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.svc:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.svc .ic{width:42px;height:42px;border-radius:12px;background:var(--ledger-soft);color:var(--ledger-2);display:grid;place-items:center}
.svc .ic svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.svc h3{font:600 20px/1.25 var(--display);letter-spacing:-.015em;margin-top:8px}
.svc p{color:var(--graphite);font-size:15px;line-height:1.55}
.svc .seen{margin-top:auto;padding-top:14px;border-top:1px solid var(--hairline);font:500 12px/1.5 var(--mono);color:var(--mute)}
@media (max-width:980px){.services{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.services{grid-template-columns:1fr}}

/* Home: industries */
.inds{margin-top:48px;border-top:1px solid var(--hairline)}
.inds li a{display:grid;grid-template-columns:72px 1fr auto;align-items:center;gap:18px;padding:24px 4px;border-bottom:1px solid var(--hairline);transition:padding .35s var(--ease),color .2s}
.inds .ind-n{font:500 13px/1 var(--mono);color:var(--mute)}
.inds .ind-l{font:600 clamp(24px,3vw,40px)/1.1 var(--display);letter-spacing:-.025em}
.inds .arr{font-size:22px;color:var(--mute);transition:transform .3s var(--ease),color .2s}
.inds li a:hover{padding-left:16px;color:var(--ledger-2)}
.inds li a:hover .arr{transform:translateX(6px);color:var(--ledger)}

/* Home: featured work grid */
.feat{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 28px;margin-top:56px}
@media (max-width:860px){.feat{grid-template-columns:1fr;gap:48px}}
.sec-head--row{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;max-width:none}
.sec-head--row>div{max-width:820px;display:grid;gap:18px}
@media (max-width:860px){.sec-head--row{flex-direction:column;align-items:flex-start}}

@media (prefers-reduced-motion:reduce){
  .wcard .stage,.wcard .stage .win,.stage .phone,.next,.svc,.inds li a{transition:none}
  .win--tall .tall-view{overflow:auto}
}

@media (max-width:700px){
  .stage--hero{aspect-ratio:4/3.5;border-radius:24px;margin-top:40px}
  .stage--hero .st-phones .phone{width:34%}
  .stage--hero .st-phone{width:27%;right:5%}
  .stage--hero .win.st-win--with-phone{right:14%;left:5%}
  .stage--card .st-phones .phone{width:31%}
  .stage--card .st-phone{width:25%}
}
