
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --orange:#FF3C00; --orange-dk:#E23500;
  --ink:#141310; --ink-2:#1c1a16;
  --paper:#F3F0E9; --cloud:#FFFFFF;
  --ash:#6d6a62; --ash-2:#94908663;
  --line:rgba(20,19,16,.14);
  --line-dk:rgba(255,255,255,.16);
  --disp:'Archivo Expanded',system-ui,sans-serif;
  --body:'Archivo',system-ui,sans-serif;
  --mono:'Space Mono',ui-monospace,monospace;
  --ease:cubic-bezier(.22,.61,.36,1);
  --gut:clamp(20px,5vw,72px);
}
html{scroll-behavior:smooth;font-size:clamp(17px, 16px + 0.35vw, 19px)}
body{background:var(--paper);color:var(--ink);font-family:var(--body);
  font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,svg{display:block}
::selection{background:var(--orange);color:#fff}

.wrap{max-width:1320px;margin:0 auto;padding-inline:var(--gut)}
.mono{font-family:var(--mono);font-weight:400;letter-spacing:.16em;text-transform:uppercase}

/* ---- registration cross motif (brand signature) ---- */
.reg{position:absolute;width:20px;height:20px;color:var(--orange);pointer-events:none}
.reg::before,.reg::after{content:"";position:absolute;background:currentColor}
.reg::before{left:50%;top:0;width:1.5px;height:100%;transform:translateX(-50%)}
.reg::after{top:50%;left:0;height:1.5px;width:100%;transform:translateY(-50%)}

/* ---------- NAV ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;display:flex;align-items:center;
  justify-content:space-between;padding:18px var(--gut);
  transition:padding .4s var(--ease)}
/* The blurred bar lives on ::before, NOT on .nav itself. backdrop-filter on .nav
   would make it a containing block for the position:fixed mobile menu, trapping
   the drawer inside the header. */
.nav::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;
  background:color-mix(in srgb,var(--paper) 86%,transparent);
  backdrop-filter:blur(12px) saturate(1.2);
  -webkit-backdrop-filter:blur(12px) saturate(1.2);
  border-bottom:1px solid var(--line);
  transition:opacity .4s var(--ease);pointer-events:none}
.nav.scrolled::before{opacity:1}
.nav.scrolled{padding-top:12px;padding-bottom:12px}
.nav-logo{display:flex;align-items:center;gap:11px}
.nav-logo .cj-mark{height:42px;width:auto;color:var(--ink);transition:color .3s}
.nav-logo:hover .cj-mark{color:var(--orange)}
.nav-links{display:flex;align-items:center;gap:34px}
.nav-links a{font-family:var(--mono);font-size:.82rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink);position:relative;padding:4px 0}
.nav-links a .u{position:absolute;left:0;bottom:0;height:1.5px;width:100%;
  background:var(--orange);transform:scaleX(0);transform-origin:right;
  transition:transform .35s var(--ease)}
.nav-links a:hover .u{transform:scaleX(1);transform-origin:left}
.nav-cta{background:var(--ink);color:var(--paper)!important;padding:9px 18px!important;
  border-radius:2px;overflow:hidden}
.nav-cta:hover{background:var(--orange)}
.nav-status{display:flex;align-items:center;gap:8px}
.dot{width:7px;height:7px;border-radius:50%;background:var(--orange);
  box-shadow:0 0 0 0 var(--orange);animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,60,0,.5)}70%{box-shadow:0 0 0 7px rgba(255,60,0,0)}100%{box-shadow:0 0 0 0 rgba(255,60,0,0)}}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:6px}
.burger span{width:24px;height:2px;background:var(--ink);transition:.3s}

/* ---------- HERO ---------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;
  justify-content:center;padding-top:120px;padding-bottom:56px;overflow:hidden}
.hero .reg{opacity:0;animation:regIn .8s var(--ease) 1.2s forwards}
@keyframes regIn{to{opacity:1}}
.hero-eyebrow{display:flex;align-items:center;gap:14px;margin-bottom:30px;
  font-size:.74rem;color:var(--ink)}
.hero-eyebrow .idx{color:var(--orange)}
.hero-eyebrow .ln{flex:0 0 54px;height:1px;background:var(--ink);opacity:.4}
/* Sized so "Print. Social. Web." always fits on ONE line.
   The line measures ~10.83em wide, so font-size must stay under
   (available width / 10.83). With a ~19px root, min(7.8vw,5.6rem) keeps it on one line from 300px up,
   including desktop where .wrap caps content at ~1176px. */
.hero h1{font-family:var(--disp);font-weight:800;line-height:1.0;
  font-size:min(7.8vw,5.6rem);letter-spacing:-.01em;max-width:100%}
.hero h1 .lead{display:block;font-weight:600;color:var(--ink)}
.psw{display:flex;flex-wrap:nowrap;white-space:nowrap;gap:.26em;margin-top:.04em}
.psw span{color:var(--ink);transition:color .5s var(--ease);position:relative}
.psw span.on{color:var(--orange)}
.hero-sub{max-width:44ch;margin-top:34px;font-size:clamp(1.02rem,1.6vw,1.24rem);
  color:var(--ash);line-height:1.55}
.hero-sub b{color:var(--ink);font-weight:600}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:40px}
.btn{--bg:var(--ink);--fg:var(--paper);position:relative;display:inline-flex;
  align-items:center;gap:10px;padding:15px 26px;border-radius:2px;overflow:hidden;
  font-family:var(--mono);font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;
  border:1.5px solid var(--ink);color:var(--fg);background:var(--bg);isolation:isolate}
.btn .arw{transition:transform .35s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--orange);
  transform:translateY(101%);transition:transform .4s var(--ease)}
.btn:hover::before{transform:translateY(0)}
.btn:hover{border-color:var(--orange);color:#fff}
.btn:hover .arw{transform:translate(4px,-4px)}
.btn.ghost{--bg:transparent;--fg:var(--ink);border-color:var(--ink)}
.scroll-cue{position:absolute;bottom:26px;left:var(--gut);display:flex;
  align-items:center;gap:12px;color:var(--ash);font-size:.68rem}
.scroll-cue .bar{width:44px;height:1px;background:var(--ink);opacity:.4;position:relative;overflow:hidden}
.scroll-cue .bar::after{content:"";position:absolute;inset:0;background:var(--orange);
  transform:translateX(-100%);animation:sweep 2.4s var(--ease) infinite}
@keyframes sweep{50%{transform:translateX(0)}100%{transform:translateX(101%)}}

/* reveal on load: masked lines */
.rise{overflow:hidden;display:block;padding-bottom:.22em;margin-bottom:-.22em}
/* .rise>* forces display:block; re-assert flex for the Print/Social/Web line
   so the words keep their gap and can wrap on narrow screens. */
.rise>.psw{display:flex}
.rise>*{display:block;transform:translateY(110%);opacity:0;
  animation:riseIn .9s var(--ease) forwards}
@keyframes riseIn{to{transform:translateY(0);opacity:1}}

/* ---------- MARQUEE ---------- */
.marquee{background:var(--ink);color:var(--paper);padding:15px 0;overflow:hidden;
  white-space:nowrap;border-block:1px solid var(--ink)}
.marquee-track{display:inline-flex;gap:44px;animation:scrollx 26s linear infinite;will-change:transform}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track span{font-family:var(--disp);font-weight:700;font-size:1.05rem;
  letter-spacing:.03em;display:inline-flex;align-items:center;gap:44px}
.marquee-track span::after{content:"";width:9px;height:9px;background:var(--orange);
  border-radius:50%;display:inline-block}
@keyframes scrollx{to{transform:translateX(-50%)}}

/* ---------- SECTION SHELL ---------- */
.sec{padding-block:clamp(72px,11vw,140px);position:relative}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;
  gap:30px;margin-bottom:52px;flex-wrap:wrap}
.sec-tag{display:flex;align-items:center;gap:12px;font-size:.72rem;color:var(--ash);margin-bottom:16px}
.sec-tag .idx{color:var(--orange)}
.sec-tag .ln{width:34px;height:1px;background:var(--orange)}
.sec-title{font-family:var(--disp);font-weight:800;line-height:1.08;
  font-size:clamp(2.1rem,5.4vw,4rem);letter-spacing:-.01em}
.sec-title em{font-style:normal;color:var(--orange)}
.sec-link{font-family:var(--mono);font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;
  display:inline-flex;align-items:center;gap:9px;padding-bottom:4px;border-bottom:1.5px solid var(--ink);
  transition:gap .3s var(--ease),color .3s,border-color .3s}
.sec-link:hover{gap:15px;color:var(--orange);border-color:var(--orange)}

/* ---------- WORK GRID ---------- */
.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tile{position:relative;border:1px solid var(--line);background:var(--cloud);
  border-radius:3px;overflow:hidden;cursor:pointer;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .4s}
.tile:hover{transform:translateY(-6px);box-shadow:0 22px 50px -20px rgba(20,19,16,.42);border-color:var(--ink)}
.tile-canvas{aspect-ratio:4/3;position:relative;overflow:hidden}
.tile-canvas svg{width:100%;height:100%;transition:transform .7s var(--ease)}
.tile:hover .tile-canvas svg{transform:scale(1.045)}
.tile.swap .swap-layer{opacity:0}
.swap-layer{transition:opacity .55s var(--ease)}
.tile-meta{padding:17px 18px 19px;display:flex;flex-direction:column;gap:7px;
  border-top:1px solid var(--line);background:var(--cloud);position:relative;z-index:2}
.tile-cat{font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--orange)}
.tile-title{font-family:var(--disp);font-weight:700;font-size:1.16rem;line-height:1.05;
  display:flex;align-items:center;justify-content:space-between;gap:10px}
.tile-title .arw{color:var(--ash);transition:transform .35s var(--ease),color .35s}
.tile:hover .tile-title .arw{color:var(--orange);transform:translate(3px,-3px)}
.tile-desc{font-size:.9rem;color:var(--ash);line-height:1.5}
.work-foot{display:flex;align-items:center;gap:10px;margin-top:26px;
  font-size:.72rem;color:var(--ash)}
.work-foot .dot{width:6px;height:6px}

/* ---------- SERVICES ---------- */
.serv-sec{background:var(--paper)}
.serv{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--ink)}
.serv-col{padding:36px 30px 40px;border-bottom:1px solid var(--ink);
  border-right:1px solid var(--line);position:relative;transition:background .4s}
.serv-col:last-child{border-right:0}
.serv-col:hover{background:var(--cloud)}
.serv-num{font-family:var(--mono);font-size:.72rem;color:var(--orange);letter-spacing:.14em}
.serv-h{font-family:var(--disp);font-weight:800;font-size:1.7rem;margin:20px 0 12px;
  display:flex;align-items:center;gap:12px}
.serv-h .sq{width:12px;height:12px;background:var(--orange);flex:0 0 auto}
.serv-col p{color:var(--ash);font-size:.98rem;line-height:1.6}
.serv-list{margin-top:18px;display:flex;flex-wrap:wrap;gap:7px}
.serv-list li{list-style:none;font-family:var(--mono);font-size:.64rem;letter-spacing:.06em;
  text-transform:uppercase;border:1px solid var(--line);padding:5px 9px;border-radius:2px;color:var(--ink)}

/* ---------- PITCH (dark) ---------- */
.pitch{background:var(--ink);color:var(--paper);position:relative;overflow:hidden}
.pitch .ghost{position:absolute;right:-6%;top:50%;transform:translateY(-50%);
  height:150%;color:rgba(255,255,255,.035);pointer-events:none}
.pitch .reg{color:var(--orange)}
.pitch-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:end;position:relative;z-index:2}
.pitch h2{font-family:var(--disp);font-weight:800;line-height:1.12;
  font-size:clamp(2.2rem,5.2vw,4.1rem);letter-spacing:-.01em}
.pitch h2 em{font-style:normal;color:var(--orange)}
.pitch p{color:#c9c5bc;margin-top:26px;max-width:52ch;font-size:1.06rem}
.facts{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line-dk)}
.fact{display:flex;justify-content:space-between;gap:16px;padding:15px 0;
  border-bottom:1px solid var(--line-dk);align-items:baseline}
.fact dt{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#8f8b82}
.fact dd{font-family:var(--disp);font-weight:700;font-size:1.02rem;text-align:right}
.fact dd em{font-style:normal;color:var(--orange)}

/* ---------- CONTACT ---------- */
.contact{background:var(--paper)}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,70px);align-items:start}
.contact-lead{font-size:clamp(1.05rem,1.6vw,1.2rem);color:var(--ash);max-width:40ch;margin-top:20px}
.contact-lead b{color:var(--ink);font-weight:600}
.channels{margin-top:38px;border-top:1px solid var(--line)}
.channel{display:flex;align-items:center;gap:18px;padding:16px 4px;border-bottom:1px solid var(--line);
  transition:padding-left .35s var(--ease),background .35s}
.channel:hover{padding-left:14px;background:color-mix(in srgb,var(--cloud) 70%,transparent)}
.channel .k{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--orange);flex:0 0 74px}
.channel .v{font-family:var(--disp);font-weight:600;font-size:1.04rem}
.channel .arw{margin-left:auto;color:var(--ash);transition:transform .3s,color .3s}
.channel:hover .arw{color:var(--orange);transform:translate(3px,-3px)}

.form{background:var(--cloud);border:1px solid var(--line);border-radius:4px;padding:clamp(22px,3vw,34px)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.field label{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ash)}
.field label .req{color:var(--orange)}
.field input,.field select,.field textarea{font-family:var(--body);font-size:.98rem;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:2px;padding:12px 13px;
  outline:none;transition:border-color .3s,box-shadow .3s;width:100%}
.field textarea{resize:vertical;min-height:120px}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--orange);
  box-shadow:0 0 0 3px rgba(255,60,0,.12)}
.form-submit{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:6px}
.form-note{font-size:.78rem;color:var(--ash);max-width:26ch}
.form-msg{font-family:var(--mono);font-size:.74rem;letter-spacing:.04em;color:var(--orange);
  min-height:1.2em;margin-top:14px}

/* ---------- FOOTER ---------- */
.foot{background:var(--ink);color:var(--paper);padding-block:52px 30px}
.foot-top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;
  padding-bottom:38px;border-bottom:1px solid var(--line-dk)}
.foot-brand .cj-mark{height:46px;color:var(--orange)}
.foot-brand p{color:#a29e95;margin-top:16px;max-width:30ch;font-size:.94rem}
.foot-nav{display:flex;gap:60px;flex-wrap:wrap}
.foot-col h5{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;
  color:#8f8b82;margin-bottom:14px}
.foot-col a{display:block;padding:6px 0;color:var(--paper);font-size:.96rem;transition:color .3s,padding-left .3s}
.foot-col a:hover{color:var(--orange);padding-left:6px}
.foot-bot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding-top:24px;font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;
  text-transform:uppercase;color:#8f8b82}
.foot-bot a:hover{color:var(--orange)}
.to-top{display:inline-flex;align-items:center;gap:8px;color:var(--paper)}
.to-top:hover{color:var(--orange)}

/* ---------- scroll reveal ---------- */
[data-rise]{opacity:0;transform:translateY(30px);
  transition:opacity .8s var(--ease),transform .8s var(--ease)}
[data-rise].in{opacity:1;transform:none}

/* ---------- PORTFOLIO PAGE ---------- */
.pf-hero{padding-top:150px;padding-bottom:20px}
.pf-hero h1{font-family:var(--disp);font-weight:900;font-size:clamp(2.8rem,9vw,7rem);
  line-height:1.02;letter-spacing:-.02em}
.pf-hero h1 em{font-style:normal;color:var(--orange)}
.pf-intro{max-width:50ch;color:var(--ash);margin-top:24px;font-size:clamp(1rem,1.5vw,1.18rem)}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-top:44px;
  padding-bottom:26px;border-bottom:1px solid var(--line)}
.filter{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  padding:9px 16px;border:1px solid var(--line);border-radius:2px;background:transparent;
  color:var(--ink);cursor:pointer;transition:.3s}
.filter:hover{border-color:var(--ink)}
.filter.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.filter .n{color:var(--orange);margin-left:6px}
.filter.active .n{color:var(--paper);opacity:.6}
.pf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;padding-top:36px}
.pf-card{opacity:0;transform:translateY(24px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.pf-card.in{opacity:1;transform:none}
.pf-card.hide{display:none}

/* ---------- MODAL ---------- */
.modal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:20px}
.modal.open{display:grid}
.modal-back{position:absolute;inset:0;background:rgba(20,19,16,.66);backdrop-filter:blur(4px);
  opacity:0;transition:opacity .4s}
.modal.open .modal-back{opacity:1}
.modal-card{position:relative;background:var(--paper);max-width:860px;width:100%;
  max-height:88vh;overflow:auto;border-radius:5px;transform:translateY(24px) scale(.98);
  opacity:0;transition:transform .45s var(--ease),opacity .45s}
.modal.open .modal-card{transform:none;opacity:1}
.modal-canvas{aspect-ratio:16/9;overflow:hidden;border-bottom:1px solid var(--line)}
.modal-canvas svg{width:100%;height:100%}
.modal-body{padding:clamp(24px,4vw,44px)}
.modal-cat{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--orange)}
.modal-body h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.8rem,4vw,2.8rem);margin:12px 0 18px;line-height:1}
.modal-body p{color:var(--ash);max-width:60ch;margin-bottom:16px}
.modal-specs{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.modal-specs span{font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid var(--line);padding:6px 11px;border-radius:2px}
.modal-close{position:absolute;top:14px;right:14px;z-index:3;width:42px;height:42px;border-radius:50%;
  border:0;background:var(--ink);color:var(--paper);cursor:pointer;font-size:1.1rem;
  display:grid;place-items:center;transition:.3s}
.modal-close:hover{background:var(--orange);transform:rotate(90deg)}

/* ---------- RESPONSIVE ---------- */
@media(max-width:960px){
  .work-grid,.pf-grid{grid-template-columns:repeat(2,1fr)}
  .serv{grid-template-columns:1fr}
  .serv-col{border-right:0}
  .pitch-grid,.contact-grid{grid-template-columns:1fr;gap:40px}
  .nav-links{position:fixed;top:0;right:0;bottom:0;left:auto;width:min(80vw,320px);
    height:100vh;height:100dvh;overflow-y:auto;overscroll-behavior:contain;
    flex-direction:column;
    align-items:flex-start;justify-content:center;gap:26px;background:var(--ink);padding:40px;
    transform:translateX(100%);transition:transform .45s var(--ease);z-index:110}
  .nav-links.open{transform:none}
  .nav-links a{color:var(--paper);font-size:1.05rem}
  .nav-links .nav-cta{color:var(--ink)!important;background:var(--orange)}
  .burger{display:flex;position:relative;z-index:120}
  .burger span{transition:transform .35s var(--ease),opacity .25s var(--ease)}
  .burger[aria-expanded="true"] span{background:var(--paper)}
  .burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .burger[aria-expanded="true"] span:nth-child(2){opacity:0}
  .burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .nav-status{display:none}
}
@media(max-width:600px){
  .work-grid,.pf-grid{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  body{font-size:1rem}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  .rise>*{transform:none;opacity:1}
  [data-rise]{opacity:1;transform:none}
}

/* ===== real image covers in tiles ===== */
.tile-canvas img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;transition:transform .7s var(--ease)}
.tile:hover .tile-canvas img{transform:scale(1.045)}
img{-webkit-user-drag:none;user-drag:none}
.tile-badge{position:absolute;top:10px;left:10px;z-index:3;display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;
  background:var(--orange);color:#fff;padding:5px 9px;border-radius:2px}
.tile-canvas{position:relative}

/* ===== DETAIL PAGE ===== */
.detail{padding-top:118px}
.detail-back{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:.72rem;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ash);margin-bottom:30px;transition:gap .3s,color .3s}
.detail-back:hover{gap:15px;color:var(--orange)}
.detail-head{display:grid;grid-template-columns:1.25fr .75fr;gap:44px;align-items:end;
  padding-bottom:42px;border-bottom:1px solid var(--line)}
.detail-cat{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--orange);margin-bottom:14px}
.detail-title{font-family:var(--disp);font-weight:800;font-size:clamp(2.4rem,6vw,4.4rem);line-height:1.06;letter-spacing:-.01em}
.detail-long{color:var(--ash);font-size:clamp(1rem,1.4vw,1.14rem);line-height:1.62}
.detail-specs{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.detail-specs span{font-family:var(--mono);font-size:.63rem;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid var(--line);padding:6px 11px;border-radius:2px;color:var(--ink)}

.gallery{display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px;padding-block:42px}
.gallery figure{margin:0;flex:1 1 100%;align-self:flex-start;border:1px solid var(--line);background:var(--cloud);
  border-radius:4px;overflow:hidden;line-height:0;opacity:0;transform:translateY(24px);
  transition:opacity .7s var(--ease),transform .7s var(--ease)}
.gallery figure.in{opacity:1;transform:none}
.gallery figure.por{flex:1 1 300px;max-width:calc(50% - 10px)}
.gallery img{width:100%;height:auto;display:block}
@media(max-width:640px){.gallery figure.por{max-width:100%}}

.proj-nav{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);
  padding-block:32px;flex-wrap:wrap}
.proj-nav a{display:flex;flex-direction:column;gap:5px;max-width:46%}
.proj-nav a .mono{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ash)}
.proj-nav a .t{font-family:var(--disp);font-weight:700;font-size:1.15rem;transition:color .3s}
.proj-nav a:hover .t{color:var(--orange)}
.proj-nav .nxt{margin-left:auto;text-align:right;align-items:flex-end}

.detail-cta{background:var(--ink);color:var(--paper)}
.detail-cta .pitch-grid{align-items:center}

/* ===== FLIPBOOK (reusable) ===== */
.fb{margin-block:14px}
.fb-viewport{position:relative;width:100%;max-width:1120px;margin:0 auto;aspect-ratio:1.414;
  perspective:2400px;background:#0b0b0b;border-radius:5px;overflow:hidden;
  box-shadow:0 34px 70px -28px rgba(20,19,16,.55);touch-action:pan-y;cursor:grab;user-select:none}
.fb-viewport:active{cursor:grabbing}
.fb-viewport img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;
  backface-visibility:hidden;-webkit-backface-visibility:hidden}
.fb-viewport img.fb-side-right{object-position:right center}
.fb-viewport img.fb-side-left{object-position:left center}
.fb-viewport img.fb-side-center{object-position:center}
.fb-under{z-index:1}
.fb-current{z-index:2}
.fb-flip{position:absolute;inset:0;z-index:3;transform-style:preserve-3d;transform-origin:left center;
  will-change:transform;display:none;box-shadow:2px 0 12px rgba(0,0,0,.25)}
.fb-flip .fb-shade{position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0;
  background:linear-gradient(90deg,rgba(255,255,255,.06) 0%,rgba(0,0,0,0) 42%,rgba(0,0,0,.32) 100%)}
.fb-anim{transition:transform .55s var(--ease)}
.fb-bar{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:22px;flex-wrap:wrap}
.fb-btn{width:46px;height:46px;border-radius:50%;border:1.5px solid var(--ink);background:transparent;
  color:var(--ink);font-size:1.4rem;cursor:pointer;display:grid;place-items:center;transition:.25s;line-height:1}
.fb-btn:hover:not(:disabled){background:var(--ink);color:var(--paper)}
.fb-btn:disabled{opacity:.28;cursor:default}
.fb-count{font-family:var(--mono);font-size:.8rem;letter-spacing:.14em;min-width:66px;text-align:center}
.fb-dl{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  display:inline-flex;align-items:center;gap:8px;padding:12px 18px;border:1.5px solid var(--orange);
  color:var(--orange);border-radius:2px;transition:.25s}
.fb-dl:hover{background:var(--orange);color:#fff}
.fb-hint{text-align:center;font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;color:var(--ash);margin-top:14px}

@media(max-width:820px){.detail-head{grid-template-columns:1fr;gap:22px}}

/* ===== detail sub-heading ===== */
.detail-sub{font-family:var(--disp);font-weight:800;font-size:1.35rem;letter-spacing:.01em;margin:46px 0 2px}

/* ===== website live preview (device frames) ===== */
.wf{margin-block:8px}
.wf-stage{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap}
.wf-device{margin:0}
.wf-desk{flex:1 1 520px;min-width:280px;border:1px solid var(--line);border-radius:9px;overflow:hidden;
  background:#fff;box-shadow:0 26px 54px -28px rgba(20,19,16,.42)}
.wf-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#ece9e3;border-bottom:1px solid var(--line)}
.wf-dots{display:flex;gap:6px}
.wf-dots i{width:9px;height:9px;border-radius:50%;background:#cfcbc2}
.wf-url{font-family:var(--mono);font-size:.64rem;letter-spacing:.03em;color:#8a857b;background:#fff;
  border:1px solid var(--line);border-radius:20px;padding:4px 13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70%}
.wf-desk .wf-screen{position:relative;height:470px;overflow:hidden;background:#fff}
.wf-phone{flex:0 0 250px;position:relative;border:10px solid #141310;border-radius:36px;overflow:hidden;
  background:#141310;box-shadow:0 26px 54px -28px rgba(20,19,16,.5)}
.wf-phone .wf-screen{position:relative;height:512px;overflow:hidden;background:#fff;border-radius:24px}
.wf-notch{position:absolute;top:10px;left:50%;transform:translateX(-50%);width:78px;height:19px;
  background:#141310;border-radius:0 0 13px 13px;z-index:5}
.wf-screen iframe{position:absolute;top:0;left:0;border:0;transform-origin:top left;background:#fff;z-index:2}
.wf-load{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:22px;
  font-family:var(--mono);font-size:.68rem;line-height:1.5;letter-spacing:.04em;color:var(--ash);z-index:1}
.wf-cap{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ash);
  text-align:center;margin-top:9px}
.wf-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:24px}
.wf-note{font-family:var(--mono);font-size:.63rem;line-height:1.6;letter-spacing:.04em;color:var(--ash);max-width:48ch}
@media(max-width:660px){.wf-phone{flex-basis:220px}.wf-desk .wf-screen{height:400px}}

/* ===== website preview: static screenshot + QR fallback (blocked embeds) ===== */
.wf-desk .wf-screen.wf-static{overflow:auto}
.wf-static img{width:100%;height:auto;display:block}
.wf-qr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;background:#fff}
.wf-qr-img{width:150px;height:150px;image-rendering:pixelated}
.wf-qr-label{font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-align:center;line-height:1.7}

/* Lock page scroll while the mobile menu drawer is open */
body.menu-open{overflow:hidden}
/* Tap-outside backdrop for the mobile drawer */
.nav-backdrop{position:fixed;inset:0;z-index:90;background:rgba(20,19,16,.5);
  opacity:0;pointer-events:none;transition:opacity .35s var(--ease)}
.nav-backdrop.show{opacity:1;pointer-events:auto}
@media(min-width:961px){.nav-backdrop{display:none}}
