/* ===== PREMIUM LAYER ===== */

/* film-grain + vignette atmosphere */
.grain{position:fixed;inset:0;z-index:9;pointer-events:none;opacity:.045;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.vignette{position:fixed;inset:0;z-index:8;pointer-events:none;box-shadow:inset 0 0 240px 70px rgba(0,0,0,.5)}

/* hero load-in reveal */
body.preload .hn-thin,body.preload .hn-bold,body.preload .hero-nav,body.preload .tb-name{opacity:0}
.hn-thin{transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.hn-bold{transition:opacity 1.1s ease .12s,transform 1.1s cubic-bezier(.2,.7,.2,1) .12s}
.hero-nav{transition:opacity 1s ease .3s}
.tb-name{transition:opacity 1s ease .5s}
body.preload .hn-thin{transform:translateY(26px)}
body.preload .hn-bold{transform:translateY(26px)}

/* full-bleed landscape band */
.band{position:relative;height:84vh;min-height:460px;overflow:hidden;background:#000}
.band-img{position:absolute;inset:-5% 0;background-size:cover;background-position:50% 42%;will-change:transform}
/* stacked diptych bands — shallower frames, cropped from the top so her face always stays in */
.band-half{height:58vh;min-height:380px}
.band-half + .band-half{margin-top:3px}
.band::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.14),rgba(0,0,0,.12) 55%,rgba(0,0,0,.4))}
.band-cap{position:absolute;left:40px;bottom:34px;z-index:2;font-family:'Montserrat',sans-serif;
  font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:rgba(255,255,255,.82)}

/* featured campaign film */
.film{position:relative;height:92vh;min-height:540px;overflow:hidden;background:#000}
.film video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.28),rgba(0,0,0,.12) 42%,rgba(0,0,0,.6))}
.film-cap{position:absolute;left:40px;right:40px;bottom:42px;z-index:2}
.film-kicker{font-family:'Montserrat',sans-serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.72);margin-bottom:12px}
.film-title{font-weight:200;font-size:clamp(30px,5.2vw,56px);color:#fff;line-height:1}

/* client logos */
.logos{display:flex;align-items:center;gap:46px;flex-wrap:wrap}
.logo-img{height:24px;width:auto;filter:brightness(0) invert(1);opacity:.82;transition:opacity .3s}
.logo-img:hover{opacity:1}
.logo-txt{font-weight:200;font-size:clamp(26px,4vw,34px);letter-spacing:.01em;color:#f4f4f4}

/* lightbox */
.shot{cursor:zoom-in}
.lb{position:fixed;inset:0;z-index:120;background:rgba(6,6,6,.95);display:flex;align-items:center;justify-content:center;
  padding:34px;opacity:0;visibility:hidden;transition:opacity .35s ease}
.lb.open{opacity:1;visibility:visible}
.lb img{max-width:92vw;max-height:88vh;object-fit:contain;box-shadow:0 40px 90px rgba(0,0,0,.6);
  transform:scale(.95);transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.lb.open img{transform:scale(1)}
.lb-close{position:absolute;top:22px;right:30px;width:34px;height:34px;cursor:pointer;opacity:.75;transition:opacity .2s}
.lb-close:hover{opacity:1}
.lb-close::before,.lb-close::after{content:"";position:absolute;top:50%;left:50%;width:22px;height:1.5px;background:#fff}
.lb-close::before{transform:translate(-50%,-50%) rotate(45deg)}
.lb-close::after{transform:translate(-50%,-50%) rotate(-45deg)}

@media (max-width:600px){
  .band-cap,.film-cap{left:22px;right:22px}
  .band{height:66vh}.film{height:74vh}
}
@media (prefers-reduced-motion:reduce){
  body.preload .hn-thin,body.preload .hn-bold,body.preload .hero-nav,body.preload .tb-name{opacity:1;transform:none}
  .marquee-track{animation:none!important}
}

/* hero role / location line */
.hero-role{font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(255,255,255,.8);margin:-12px 0 24px}

/* section numbers (magazine pacing) */
.sec-num{font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.16em;color:var(--muted);margin-right:14px}

/* about lead */
.about-lead{font-weight:200;font-size:clamp(22px,2.7vw,32px);line-height:1.34;color:#f4f4f4;letter-spacing:.004em;margin-top:14px}
.about-lead + .bio{margin-top:13px;font-size:16px;color:#b6b6b6}

/* split About: sticky portrait left, story scrolls right (about -> measurements -> bookings) */
.about-split{display:grid;grid-template-columns:1fr 1fr;background:#0a0a0a;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.as-left{position:relative}
/* the About portrait IS her body from the takeover landscape — position must match TPX/TPY in premium.js */
.as-photo{position:sticky;top:0;height:100vh;background-image:url("img/land1.jpg");background-size:cover;background-position:60% 35%}

/* takeover runway — ONE pinned scene: the landscape grows card -> full page,
   docks her body into the left half, then the About/Connect column scrolls up on the right.
   JS (body.take-on) drives it; without JS/motion it renders as a static split section. */
.take-runway{position:relative}
.take-stage{position:relative;background:#0a0a0a}
.take-frame{position:relative;overflow:hidden;background:#0a0a0a}
.take-pic{position:absolute;inset:0;background-image:url("img/land1.jpg");background-size:cover;
  background-position:60% 40%;background-repeat:no-repeat;will-change:left,top,width,height}
/* 2.5D: her cutout floats on its own depth plane above the inpainted background */
.take-cut{display:none;position:absolute;background-image:url("img/land1-cut.webp");background-size:100% 100%;
  background-repeat:no-repeat;pointer-events:none;will-change:transform}
body.take-on .take-pic{background-image:url("img/land1-back.webp");background-size:100% 100%}
body.take-on .take-cut{display:block}
.take-cap{display:none;position:absolute;left:5vw;bottom:5vh;font-family:'Montserrat',sans-serif;font-weight:500;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.75)}
.take-right{position:relative}
.tr-track{padding:9vh 6vw 12vh;display:flex;flex-direction:column;gap:7vh}
/* ALL page headlines: hairline caps, wide-tracked — the same voice as the drawn wordmark */
.sec-head .sec-title,.tr-track .sec-title{font-weight:200;letter-spacing:.2em;text-transform:uppercase;color:#fff}
.sec-head .sec-title{font-size:clamp(26px,3.2vw,50px)}
.tr-track .sec-title{font-size:clamp(32px,3.9vw,60px);margin-bottom:14px}

/* current-section underline + the bubble/pop target in the bar */
.db-links a{display:inline-block;position:relative}
.db-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1px;background:#fff}
@keyframes navpop{0%{transform:scale(1.42)}40%{transform:scale(1.85)}70%{transform:scale(.92)}100%{transform:scale(1)}}
.db-links a.popped{animation:navpop .55s cubic-bezier(.3,1.4,.4,1)}

/* ===== MEGA FOOTER: the drawn wordmark, enormous, spanning the page bottom ===== */
.mega{padding:80px 40px 26px;background:#0a0a0a;border-top:1px solid var(--line)}
.mg-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px;margin-bottom:7vh}
.mg-top .mg-mid{margin-bottom:0}
.mg-nav{display:flex;gap:28px;flex-wrap:wrap;font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.18em;text-transform:uppercase}
.mg-nav a,.mg-bot a{color:rgba(255,255,255,.72);transition:color .3s ease}
.mg-nav a:hover,.mg-bot a:hover{color:#ffe2d1}
.mg-soc{display:flex;gap:18px}
.mg-soc svg{width:20px;height:20px;fill:rgba(255,255,255,.85);transition:fill .3s ease}
.mg-soc a:hover svg{fill:#ffe2d1}
.mg-mid{display:flex;align-items:center;gap:36px;flex-wrap:wrap;margin-bottom:6vh}
.mg-mail{font-weight:200;font-size:clamp(20px,2.4vw,34px);color:#fff;border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:6px;transition:color .3s ease,border-color .3s ease}
.mg-mail:hover{color:#ffe2d1;border-color:#ffe2d1}
.mg-mark{display:flex;align-items:flex-end;justify-content:space-between;width:100%;margin-top:2vh}
.mg-mark svg{display:block;overflow:visible;height:10.8vw;width:auto}
.mg-mark svg.mg2{height:9.8vw}
.mg-mark path{fill:none;stroke:rgba(255,255,255,.92);stroke-linecap:round;stroke-linejoin:round;stroke-width:5.5;transition:stroke .4s ease}
.mg-mark svg.mg2 path{stroke-width:9}
.mg-mark:hover path{stroke:#ffe2d1}
.mg-gap{width:2.6vw}
.mg-bot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;margin-top:30px;
  font-family:'Montserrat',sans-serif;font-weight:500;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#666}
.mg-blinks{display:flex;gap:22px}

/* studio credit — a whisper, in her own monoline language */
.eyzon{display:inline-flex;align-items:center;gap:8px;opacity:.42;transition:opacity .35s ease;
  font-family:'Montserrat',sans-serif;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#fff}
.eyzon:hover{opacity:1}
.ez-by{color:rgba(255,255,255,.55);letter-spacing:.16em}
.ez-mark{width:17px;height:17px;display:block;flex:0 0 17px}
.ez-mark path,.ez-mark circle{fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;transition:stroke .35s ease}
.eyzon:hover .ez-mark path,.eyzon:hover .ez-mark circle{stroke:#ffe2d1}
.ez-name{letter-spacing:.26em}
a.eyzon{text-decoration:none}

/* landscape frames keep their native orientation — full-width rows in the grid */
.shot-land{aspect-ratio:3/2;grid-column:1 / -1}
/* face-safe crops: bias every grid crop toward the top of the frame */
.shot img{object-position:50% 22%}
/* tetris reveals: each tile falls from its own height/angle (vars set per-tile by JS) */
.grid .reveal:not(.in),.grid-2 .reveal:not(.in){transform:var(--rv,translateY(34px) scale(.985))}
/* static fallback: split layout */
body:not(.take-on) .take-stage{display:grid;grid-template-columns:1fr 2fr;min-height:100vh}
/* JS-driven pinned mode */
body.take-on .take-stage{position:sticky;top:0;height:100vh;overflow:hidden}
body.take-on .take-frame{position:absolute}
/* one FLAT photo until the dock: the depth layers only exist while docking */
body.take-on .take-pic{inset:auto;background-image:url("img/land1.jpg");background-size:100% 100%}
.take-back{display:none;position:absolute;background-image:url("img/land1-back.webp");background-size:100% 100%;
  background-repeat:no-repeat;opacity:0;pointer-events:none}
body.take-on .take-back{display:block}
body.take-on .take-cut{opacity:0}
body.take-on .take-cap{display:block}
body.take-on .take-right{position:absolute;left:33.333%;right:0;top:0;bottom:0;overflow:hidden;opacity:0}
.as-right{padding:18vh 7vw;display:flex;flex-direction:column;gap:24vh}
.as-sub{font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:18px}
.as-mail{display:inline-block;font-weight:200;font-size:clamp(20px,2.2vw,32px);color:#fff;
  border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:6px;transition:border-color .25s ease}
.as-mail:hover{border-color:#fff}
.as-note{margin-top:16px;font-size:14px;color:var(--muted)}
.as-links{display:flex;flex-direction:column;gap:12px;margin-top:28px;max-width:360px}

/* editorial flows straight into the takeover — no dead gap */
#editorial{padding-bottom:5vh}

/* anchors land below the fixed bar */
#work,#about,#recent,#editorial,#connect{scroll-margin-top:74px}

/* current-section highlight in the bar */
.hl.active{color:#fff}
.hl.active::after{transform:scaleX(1)}
.db-links a.active{color:#fff}
@media (max-width:900px){
  .about-split{grid-template-columns:1fr}
  .as-photo{position:relative;height:62vh}
  .as-right{padding:64px 24px;gap:96px}
}

/* measurements folded into About */
.about-specs{display:grid;grid-template-columns:repeat(3,1fr);gap:13px 24px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.as-k{display:block;font-family:'Montserrat',sans-serif;font-weight:500;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.as-v{font-size:15px;color:#eaeaea}
@media (max-width:600px){.about-specs{grid-template-columns:repeat(2,1fr)}}

/* named case studies */
.case{margin-bottom:78px}
.case:last-child{margin-bottom:0}
.case-head{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;margin-bottom:26px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.case-num{font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.16em;color:var(--muted)}
.case-title{font-weight:200;font-size:clamp(26px,4vw,40px);letter-spacing:.01em;flex:1}
.case-meta{font-family:'Montserrat',sans-serif;font-weight:500;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.case-logo{height:30px;width:auto;filter:brightness(0) invert(1);opacity:.9}
.case-note{font-size:15px;color:var(--muted);margin-top:12px}

/* landscape bands grow as they enter the viewport (scale driven by JS) */
.band{will-change:transform}

/* download button (comp card) */
.btn-dl{display:inline-block;padding:15px 30px;border:1px solid rgba(255,255,255,.6);border-radius:100px;
  font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:#fff;transition:background-color .2s ease,color .2s ease}
.btn-dl:hover{background:#fff;color:#0a0a0a}
.dl-wrap{margin-top:34px}

/* kinetic marquee */
.marquee{overflow:hidden;white-space:nowrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:26px 0;background:#0a0a0a}
.marquee-track{display:inline-block;will-change:transform;animation:marq 28s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track span{font-weight:200;font-size:clamp(22px,3.4vw,38px);letter-spacing:.04em;text-transform:uppercase;color:#f2f2f2}
.marquee-track .mk-dot{color:#5f5f5f;padding:0 24px}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

html{scroll-behavior:smooth}
/* drawn-out, luxurious pacing on all scroll reveals */
.reveal{transition-duration:1.3s}
/* ===== DOCKING HERO ===== */
/* fixed bar — blank at first, name then links fade/dock in on scroll (opacities set by JS) */
.dockbar{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;
  padding:20px 40px;background:rgba(10,10,10,0);border-bottom:1px solid rgba(255,255,255,0);pointer-events:none}
.db-left{display:flex;gap:16px;opacity:0}
.db-left a,.db-links a,.db-name{pointer-events:auto}
.db-ico{width:20px;height:20px;opacity:.85}
.db-ico svg{width:100%;height:100%;display:block;fill:#fff}
.db-name{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);opacity:0;
  font-family:'Poppins',sans-serif;font-weight:400;font-size:14px;letter-spacing:.32em;text-transform:uppercase;color:#fff;white-space:nowrap}
.db-links{display:flex;gap:26px;opacity:0}
.db-links a{font-family:'Montserrat',sans-serif;font-weight:500;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.8)}
.db-links a:hover{color:#fff}

/* sticky-photo runway */
.hero-runway{position:relative;height:220vh}
.hero-stage{position:sticky;top:0;height:100vh;overflow:hidden}
/* layered hero: EMPTY backdrop first -> white marker draws her outline -> she appears inside it.
   Sequenced by JS adding body.her-in when the stroke completes. */
.hero-photo{position:absolute;inset:0;background:#0c0c0c;will-change:filter,transform;overflow:hidden}
.hp-back,.hp-cut,.hp-orig{position:absolute;inset:0;background-size:cover;background-position:50% 9%}
.hp-back{background-image:url("img/hero-empty.webp");animation:fadein 1s ease backwards}
.hp-orig{background-image:url("img/hero.jpg");opacity:0;transition:opacity 1.2s ease .75s}
.hp-cut{background-image:url("img/hero-cut.webp");opacity:0;transition:opacity .9s ease}
.hp-draw{position:absolute;pointer-events:none;z-index:3;transition:opacity .8s ease}
.hp-draw path{fill:none;stroke:#fff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;opacity:.92}
body.her-in .hp-cut{opacity:1}
body.her-in .hp-orig{opacity:1}
body.her-in .hp-draw{opacity:0;transition:opacity .8s ease .5s}
.hero-stage .hero-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.22),rgba(0,0,0,.1) 46%,rgba(0,0,0,.5))}
.hero-center{position:absolute;left:5vw;bottom:5vh;right:auto;top:auto;z-index:2;display:flex;flex-direction:column;
  align-items:flex-start;text-align:left;will-change:transform,opacity}
/* ONE name element for the whole journey: hero lockup -> docked bar wordmark (FLIP morph, JS-driven) */
.morph-name{line-height:.8;text-transform:uppercase;color:#fff;margin:0;z-index:62;transform-origin:0 0;
  will-change:transform;cursor:pointer}
body.morph .morph-name{position:fixed;left:0;top:0}
body.morph .db-name{visibility:hidden}   /* stays in layout as the letters' landing template */
/* nav lives only in the banner — it appears once the name has fully docked */
/* per-letter flight: each letter is its own FLIP element */
.ml{display:inline-block;transform-origin:0 0}
#dbName .bl,#dbName .bl-sp{display:inline-block}
/* fixed containers sit at 0,0 — only the letters/links themselves may catch clicks */
body.morph .morph-name,body.morph .hero-links{pointer-events:none}
body.morph .morph-name .ml,body.morph .hero-links a{pointer-events:auto}
/* the DRAWN wordmark: every letter is hand-drawn vector strokes grown from the Λ.
   KAILA hairline; TRINITI same alphabet, heavier stroke, stepped right. */
.mn-thin,.mn-bold{display:flex;align-items:flex-end}
.mn-thin{gap:.9vw;position:relative;z-index:2}
.mn-thin .ml svg{height:clamp(48px,11.5vw,150px)}
.mn-thin .ml svg path{stroke-width:5.5}
.mn-bold{gap:.62vw;margin-top:1.1vw;margin-left:7.5vw}
.mn-bold .ml svg{height:clamp(30px,7.2vw,94px)}
.mn-bold .ml svg path{stroke-width:10}
.ml svg{display:block;overflow:visible}
/* strokes start undrawn (dash-hidden) — JS draws them on like the marker draws her */
.ml svg path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:520;stroke-dashoffset:520}
@keyframes fadein{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.ml svg path{stroke-dasharray:none;stroke-dashoffset:0}}
/* the role line is the FINALE of the intro — hidden until everything else has drawn */
.hero-role{font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.8);margin:7vh 0 0;opacity:0;transition:opacity 1.4s ease}
body.role-in .hero-role{opacity:1}

/* bottom-right credits: her clients + representation, arriving with the finale */
.hero-credits{position:absolute;right:5vw;bottom:5vh;z-index:2;display:flex;flex-direction:column;align-items:flex-end;gap:16px;opacity:0;transition:opacity 1.4s ease .3s}
.hc-row{display:flex;align-items:center;gap:18px}
.hc-label{font-family:'Montserrat',sans-serif;font-weight:500;font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:rgba(255,255,255,.45)}
.hc-d1{font-weight:400;font-size:15px;color:rgba(255,255,255,.9)}
.hc-ce{height:15px;width:auto;filter:brightness(0) invert(1);opacity:.9}
.hc-vv{font-weight:700;font-size:15px;letter-spacing:.01em;text-transform:lowercase;color:rgba(255,255,255,.9)}
.hc-shp{font-family:'Montserrat',sans-serif;font-weight:500;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.85)}
.hc-tmg{height:34px;width:auto;opacity:.9}
@media (max-width:700px){.hero-credits{display:none}}
@media (prefers-reduced-motion:reduce){.hero-role,.hero-credits{opacity:1}}
.hero-links{display:flex;gap:22px;flex-wrap:wrap;justify-content:flex-start;margin-top:26px}
.hl{font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(255,255,255,.88);position:relative;padding-bottom:4px}
.hl::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:left;transition:transform .4s ease}
.hl:hover::after{transform:scaleX(1)}
.hero-stage .scroll-cue{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:2;
  font-family:'Montserrat',sans-serif;font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.6);animation:bob 2.4s ease-in-out infinite}

@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(6px)}}
/* materialize on load — CSS-driven so it never depends on JS */
@keyframes centerIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes pagein{from{opacity:0}to{opacity:1}}
/* fill-mode "backwards" (NOT both/forwards): once the intro finishes, the animation
   releases the element so the JS scroll transforms can take over */
.hero-center{animation:centerIn 1.1s cubic-bezier(.2,.7,.2,1) .55s backwards}
body{animation:pagein .7s ease backwards}

/* connect / links section on the page */
.connect{max-width:520px;margin:0 auto;text-align:center}
.connect .sec-title{margin-bottom:30px}
.connect-links{display:flex;flex-direction:column;gap:13px}
.cl-btn{display:block;padding:16px 22px;border:1px solid rgba(255,255,255,.55);border-radius:100px;
  font-family:'Montserrat',sans-serif;font-weight:500;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#fff;
  transition:background-color .2s ease,color .2s ease,transform .15s ease}
.cl-btn:hover{background:#fff;color:#0a0a0a}
.cl-btn:active{transform:scale(.985)}

@media (max-width:600px){.dockbar{padding:16px 22px}}

/* ============================================================
   MOBILE (<=820px): the desktop choreography is replaced, not shrunk.
   JS adds body.is-mobile and skips morph/absorption/pinned-takeover.
   ============================================================ */
.nav-toggle{display:none;position:relative;z-index:82;width:34px;height:34px;border:0;background:none;padding:0;cursor:pointer}
.nav-toggle span{position:absolute;left:6px;right:6px;height:1.5px;background:#fff;transition:transform .35s ease,opacity .25s ease}
.nav-toggle span:nth-child(1){top:12px}
.nav-toggle span:nth-child(2){top:20px}
body.menu-open .nav-toggle span:nth-child(1){transform:translateY(4px) rotate(45deg)}
body.menu-open .nav-toggle span:nth-child(2){transform:translateY(-4px) rotate(-45deg)}
.menu-sheet{position:fixed;inset:0;z-index:80;background:#0a0a0a;display:flex;flex-direction:column;
  justify-content:center;padding:0 28px;opacity:0;pointer-events:none;transition:opacity .4s ease}
body.menu-open .menu-sheet{opacity:1;pointer-events:auto}
.menu-sheet a{display:block;padding:14px 0;font-weight:200;font-size:clamp(30px,9vw,44px);letter-spacing:.14em;
  text-transform:uppercase;color:#fff;border-bottom:1px solid rgba(255,255,255,.09)}
.menu-sheet .ms-mail{font-size:15px;letter-spacing:.08em;text-transform:none;color:rgba(255,255,255,.7);border:0;margin-top:26px}

/* second bar (mobile): section links get their own row instead of a menu */
.subbar{display:none;position:fixed;left:0;right:0;z-index:59;
  background:rgba(10,10,10,.94);border-bottom:1px solid rgba(255,255,255,.07);
  overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;opacity:0}
.subbar::-webkit-scrollbar{display:none}
.subbar{display:flex;justify-content:space-between}
.subbar a{flex:0 0 auto;padding:12px 9px;font-family:'Montserrat',sans-serif;font-weight:500;
  font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.62);
  border-bottom:1px solid transparent;transition:color .3s ease,border-color .3s ease}
@media (max-width:359px){.subbar a{font-size:9px;letter-spacing:.06em;padding:12px 7px}}
.subbar a.active{color:#fff;border-bottom-color:#fff}

@media (max-width:820px){
  html,body{overflow-x:hidden}
  /* bar one: icons left, compact wordmark centered. bar two: the sections. */
  .dockbar{padding:14px 18px}
  .db-links{display:none}
  .nav-toggle{display:none}
  .subbar{display:block}
  /* anchors clear BOTH bars */
  #work,#about,#recent,#editorial,#connect{scroll-margin-top:118px}
  .db-left{gap:14px}
  .db-ico{width:18px;height:18px}
  .db-name{font-size:11px;letter-spacing:.24em}
  body.is-mobile .db-name{visibility:visible}
  /* hero: nothing may exceed the viewport */
  .hero-center{left:22px;right:22px;bottom:5vh}
  .mn-thin .ml svg{height:clamp(42px,15vw,86px)}
  .mn-bold .ml svg{height:clamp(26px,9.4vw,54px)}
  .mn-thin{gap:1.6vw}.mn-bold{gap:1.1vw;margin-left:12vw;margin-top:2vw}
  .hero-role{font-size:10px;letter-spacing:.14em;margin:4vh 0 0;max-width:100%}
  /* takeover renders as a normal stacked section (JS never pins it on mobile) */
  .take-runway{height:auto!important}
  .take-stage{display:block!important;position:static!important;height:auto!important}
  .take-frame{position:relative!important;left:auto!important;top:auto!important;
    width:100%!important;height:62vh!important;overflow:hidden}
  .take-pic{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
    background-image:url("img/land1.jpg")!important;background-size:cover!important;background-position:60% 30%!important}
  .take-back,.take-cut,.take-cap{display:none!important}
  .take-right{position:static!important;left:auto!important;width:auto!important;opacity:1!important}
  .tr-track{transform:none!important;padding:8vh 22px 10vh;gap:9vh}
  .sec-head .sec-title{font-size:clamp(22px,7vw,34px);letter-spacing:.14em}
  .tr-track .sec-title{font-size:clamp(26px,8vw,38px);letter-spacing:.14em}
  /* mega footer: wrap the giant mark instead of squeezing it */
  .mega{padding:56px 22px 22px}
  .mg-top{flex-direction:column;align-items:flex-start;gap:26px;margin-bottom:5vh}
  .mg-mid{flex-direction:column;align-items:flex-start;gap:22px}
  .mg-mark{flex-wrap:wrap;justify-content:flex-start;gap:2px 4px}
  .mg-mark svg{height:15vw}
  .mg-mark svg.mg2{height:13.5vw}
  .mg-gap{width:100%;height:0}
  .mg-bot{flex-direction:column;align-items:flex-start;gap:10px}
  /* connect page */
  .c-body{padding:104px 22px 22px}
  .c-grid{flex-direction:column;gap:30px}
  .c-list{min-width:0;width:100%;flex:1 1 auto}
  .c-giant{flex-wrap:wrap;justify-content:flex-start;gap:2px 4px}
  .c-giant svg{height:15vw}.c-giant svg.mg2{height:13.5vw}
  .c-gap{width:100%;height:0}
  .cbar{padding:14px 18px}
  .cbar .db-links{display:none}
}
@media (max-width:820px) and (orientation:landscape){
  .take-frame{height:80vh!important}
}
@media (prefers-reduced-motion:reduce){
  .hero-photo,.hero-center,body{animation:none!important}
}
