/* JMD Web Design — premium dark studio system (redesign4)
   Brand-derived: near-black ground, mint-green accent (from the JMD mark).
   Display: Sora. Text: Hanken Grotesk. Labels/numbers: IBM Plex Mono.
   Token-driven; every legacy class restyled for the dark theme. */

:root{
  /* ground + surfaces */
  --bg:#0a0d0c; --bg-2:#0d1110; --surface:#111615; --surface-2:#171e1b;
  /* text */
  --ink:#eef1ee; --ink-2:#a4ada8; --ink-3:#79837d;
  /* lines */
  --line:rgba(236,244,239,.09); --line-2:rgba(236,244,239,.18);
  /* brand green */
  --accent:#3ecf8e; --accent-2:#59db9f; --accent-ink:#06100b; --accent-dim:rgba(62,207,142,.13);

  /* --- legacy aliases so existing markup renders in the dark system --- */
  --paper:var(--bg); --paper-2:var(--bg-2); --card:var(--surface);
  --rule:var(--line); --rule-2:var(--line-2);
  --accent-ink-hover:var(--accent-2); --blue:var(--accent); --blue-hover:var(--accent-2);
  --canvas:var(--bg-2); --wash:var(--surface); --hairline:var(--line); --ember:var(--accent);

  --disp:"Sora",system-ui,sans-serif;
  --text:"Hanken Grotesk",system-ui,-apple-system,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;
  --sf:var(--text);
  --gut:clamp(20px,6vw,88px); --max:1180px; --maxw:1180px;
  --ease:cubic-bezier(.2,0,0,1);
  color-scheme:dark;
}
*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
body{overflow-x:clip;background:var(--bg);color:var(--ink);
  font:400 clamp(1.02rem,.5vw + .92rem,1.16rem)/1.62 var(--text);
  letter-spacing:-.006em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}
img,svg{max-width:100%;display:block}
::selection{background:var(--accent);color:var(--accent-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.skip{position:absolute;left:-9999px;top:10px}
.skip:focus{left:14px;background:var(--accent);color:var(--accent-ink);padding:10px 14px;border-radius:5px;z-index:80;font-weight:600}

/* ---- type ---- */
h1,h2,h3{font-family:var(--disp);font-weight:600;letter-spacing:-.025em;line-height:1.04;color:var(--ink)}
h1{font-size:clamp(2.85rem,7vw,5.4rem);letter-spacing:-.035em;line-height:1.0}
h2{font-size:clamp(2rem,4.2vw,3.35rem);letter-spacing:-.028em;line-height:1.04}
h3{font-size:clamp(1.25rem,1.9vw,1.55rem);letter-spacing:-.018em;line-height:1.14}
.lede{font-size:clamp(1.16rem,1.5vw,1.4rem);line-height:1.5;color:var(--ink-2);letter-spacing:-.012em;max-width:42ch}
.label,.eyebrow{font:500 .76rem/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.num{font-variant-numeric:tabular-nums lining-nums;font-family:var(--mono)}
.accent-txt{color:var(--accent)}

/* ---- buttons / links ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:52px;padding:0 28px;border-radius:7px;
  font:600 1.01rem/1 var(--text);cursor:pointer;border:1.5px solid var(--accent);background:var(--accent);color:var(--accent-ink);white-space:nowrap;
  transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease),transform .14s var(--ease),box-shadow .2s var(--ease);
  box-shadow:0 0 0 0 var(--accent-dim)}
.btn:hover{background:var(--accent-2);border-color:var(--accent-2);transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.99)}
.btn.sm{min-height:42px;padding:0 18px;font-size:.94rem;border-radius:6px}
.btn-blue{background:var(--accent);color:var(--accent-ink)}.btn-blue:hover{background:var(--accent-2)}
.btn-ghost,.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-2);box-shadow:none}
.btn-ghost:hover,.btn.ghost:hover{background:transparent;color:var(--accent);border-color:var(--accent);transform:translateY(-1px);box-shadow:none}
.tlink,.arrow-link{display:inline-flex;align-items:center;gap:.4em;font-weight:600;color:var(--accent);
  text-decoration:underline;text-underline-offset:.24em;text-decoration-thickness:1.5px;text-decoration-color:color-mix(in srgb,var(--accent) 36%,transparent)}
.tlink:hover,.arrow-link:hover{text-decoration-color:var(--accent)}
.tlink .ar{transition:transform .2s var(--ease)}.tlink:hover .ar{transform:translateX(3px)}

/* ---- ribbon + nav ---- */
.ribbon{background:var(--bg-2);color:var(--ink-2);font-size:.88rem;letter-spacing:-.004em;text-align:center;padding:10px 16px;border-bottom:1px solid var(--line)}
.ribbon b{font-weight:600;color:var(--ink)}.ribbon a{color:var(--accent);text-underline-offset:.2em;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.ribbon a:hover{text-decoration-color:var(--accent)}
.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:saturate(1.3) blur(14px);-webkit-backdrop-filter:saturate(1.3) blur(14px);border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--max);margin-inline:auto;padding:14px var(--gut);display:flex;align-items:center;justify-content:space-between}
.brand{display:inline-flex;align-items:center;line-height:0}
.brand img{display:block;height:27px;width:auto}
.foot-brand img{height:48px}
@media (max-width:760px){.brand img{height:24px}}
.nav-links{display:flex;align-items:center;gap:clamp(18px,2.6vw,34px)}
.nav-links a:not(.btn){font-weight:500;font-size:.98rem;color:var(--ink-2);position:relative;padding:4px 0;transition:color .2s var(--ease)}
.nav-links a:not(.btn):hover{color:var(--ink)}
.nav-links a:not(.btn)::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1.5px;background:var(--accent);transition:right .25s var(--ease)}
.nav-links a:not(.btn):hover::after,.nav-links a[aria-current]:not(.btn)::after{right:0}
.nav-links a[aria-current]:not(.btn){color:var(--accent)}
.burger{display:none;position:relative;z-index:70;background:none;border:0;width:44px;height:44px;cursor:pointer;flex-direction:column;gap:5px;align-items:center;justify-content:center}
.burger span{width:22px;height:2px;background:var(--ink);transition:transform .25s var(--ease),opacity .2s var(--ease)}
.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-scrim{position:fixed;inset:0;z-index:55;background:rgba(5,8,7,.6);opacity:0;visibility:hidden;transition:opacity .3s var(--ease),visibility 0s linear .3s}
body.nav-open .nav-scrim{opacity:1;visibility:visible;transition:opacity .3s var(--ease)}
body.nav-open .nav{z-index:60}
@media(min-width:761px){.nav-scrim{display:none}}

/* ---- bands / section heads ---- */
.band{padding-block:clamp(72px,11vw,146px)}
.band.tight{padding-block:clamp(54px,8vw,96px)}
.band.alt,.band.gray{background:var(--bg-2)}
.band.ink{background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sec-head{max-width:20ch;text-wrap:balance}
.sec-lede{margin-top:18px;max-width:52ch;color:var(--ink-2);font-size:clamp(1.06rem,1.4vw,1.26rem);letter-spacing:-.012em}

/* ---- hero ---- */
.hero{padding-top:clamp(44px,6vw,84px);padding-bottom:clamp(30px,5vw,56px)}
.hero .label,.hero .eyebrow{margin-bottom:24px;display:block}
.hero h1{max-width:15ch}
.hero h1 .dot{color:var(--accent)}
.hero .sub{margin:26px 0 0;font-size:clamp(1.16rem,1.6vw,1.44rem);line-height:1.45;color:var(--ink-2);max-width:38ch;letter-spacing:-.014em}
.hero-cta{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:36px}

/* ---- showcase ---- */
.showcase{padding-bottom:clamp(56px,8vw,104px)}
.frame{border:1px solid var(--line-2);border-radius:14px;overflow:hidden;background:var(--surface);
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset,0 50px 110px -56px rgba(0,0,0,.85),0 0 0 1px rgba(0,0,0,.4)}
.frame .bar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg-2)}
.frame .bar i{width:11px;height:11px;border-radius:50%;background:var(--line-2)}
.frame .bar .u{margin-left:12px;font:500 .8rem/1 var(--mono);color:var(--ink-3)}
.frame img{width:100%;height:auto}
.showcase figcaption{margin-top:20px;display:flex;gap:10px 18px;flex-wrap:wrap;align-items:baseline}
.showcase figcaption .t{font-weight:600;color:var(--ink)}.showcase figcaption .m{color:var(--ink-3);font-size:.94rem}

/* crafted dark UI preview (home showcase) */
.uiprev{background:var(--surface);display:grid;grid-template-columns:200px 1fr;min-height:clamp(300px,44vw,460px)}
.uiprev .side{border-right:1px solid var(--line);padding:clamp(18px,2vw,26px) clamp(14px,1.6vw,20px);display:flex;flex-direction:column;gap:14px;background:var(--bg-2)}
.uiprev .side .brandrow{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.uiprev .side .brandrow b{width:18px;height:18px;border-radius:5px;background:var(--accent);display:block;flex:none}
.uiprev .side .brandrow span{height:9px;width:62px;border-radius:3px;background:var(--line-2)}
.uiprev .side i{display:block;height:9px;border-radius:3px;background:var(--line)}
.uiprev .side i:nth-child(2){width:84%}.uiprev .side i:nth-child(3){width:66%;background:color-mix(in srgb,var(--accent) 40%,var(--line))}
.uiprev .side i:nth-child(4){width:74%}.uiprev .side i:nth-child(5){width:58%}.uiprev .side i:nth-child(6){width:70%}
.uiprev .main{padding:clamp(20px,2.4vw,30px);display:flex;flex-direction:column;gap:clamp(14px,1.8vw,20px)}
.uiprev .top{display:flex;justify-content:space-between;align-items:center}
.uiprev .top .h{font:600 clamp(.95rem,1.4vw,1.15rem)/1 var(--disp);letter-spacing:-.02em;color:var(--ink)}
.uiprev .top .pill{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 18px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font:600 .8rem/1 var(--text)}
.uiprev .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(10px,1.4vw,16px)}
.uiprev .stat{border:1px solid var(--line);border-radius:10px;padding:clamp(12px,1.4vw,18px);background:var(--bg-2);display:flex;flex-direction:column;gap:9px}
.uiprev .stat b{font:600 clamp(1.1rem,1.8vw,1.7rem)/1 var(--disp);color:var(--ink);letter-spacing:-.02em}
.uiprev .stat b.g{color:var(--accent)}
.uiprev .stat .cap{font:500 .62rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.uiprev .chart{flex:1;min-height:clamp(96px,14vw,154px);border:1px solid var(--line);border-radius:10px;background:var(--bg-2);position:relative;overflow:hidden}
.uiprev .chart svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.chart-area{fill:url(#cg)}
.chart-line{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 5px rgba(62,207,142,.55))}
.chart-dot{fill:var(--accent);filter:drop-shadow(0 0 6px var(--accent))}
html.js .chart-line{stroke-dasharray:1200;stroke-dashoffset:1200}
html.js .chart-dot{opacity:0}
html.js .showcard.in .chart-line{transition:stroke-dashoffset 1.5s var(--ease) .35s;stroke-dashoffset:0}
html.js .showcard.in .chart-dot{transition:opacity .45s ease 1.5s;opacity:1}
@media(prefers-reduced-motion:reduce){html.js .chart-line{stroke-dashoffset:0;transition:none}html.js .chart-dot{opacity:1;transition:none}}
@media(max-width:640px){.uiprev{grid-template-columns:1fr}.uiprev .side{display:none}}

/* ---- services: editorial schedule (home) ---- */
.schedule{margin-top:clamp(30px,4vw,54px);border-top:1px solid var(--line-2)}
.srow{display:grid;grid-template-columns:3.5rem minmax(0,1fr) minmax(0,1.05fr);gap:clamp(14px,3vw,48px);
  padding:clamp(24px,3vw,38px) 0;border-bottom:1px solid var(--line);align-items:baseline;transition:background .2s var(--ease)}
.srow:hover{background:rgba(236,244,239,.035)}
.srow .no{font-family:var(--mono);font-size:1.05rem;color:var(--accent);font-weight:500}
.srow h3{color:var(--ink)}
.srow .sd{color:var(--ink-2);font-size:1.04rem;line-height:1.5}
.srow .sd .k{display:block;font:500 .72rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
@media (max-width:720px){.srow{grid-template-columns:2.4rem 1fr;row-gap:12px}.srow .sd{grid-column:1/-1}.srow:hover{background:none}}

/* ---- services: alternating detail rows (services page .svc) ---- */
.svc{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,70px);align-items:center}
.svc:nth-child(even) .svc-art{order:-1}
.svc + .svc{margin-top:clamp(48px,8vw,104px)}
.svc .k{font:500 .72rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.svc h2{margin-top:14px;max-width:16ch}
.svc p{margin-top:16px;color:var(--ink-2);font-size:1.08rem;line-height:1.5;max-width:42ch}
.svc ul{margin:22px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:9px}
.svc li{font-size:.88rem;font-weight:500;border:1px solid var(--line-2);border-radius:999px;padding:8px 15px;color:var(--ink-2)}
.svc-art{border:1px solid var(--line-2);border-radius:14px;aspect-ratio:5/4;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--surface)}
.a-sky,.a-citrus,.a-blush,.a-star{background:var(--surface)}
.svc-art svg{width:42%;height:auto}
@media(max-width:820px){.svc{grid-template-columns:1fr}.svc:nth-child(even) .svc-art{order:0}}

/* ---- steps / process ---- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,22px);margin-top:clamp(34px,4vw,54px)}
.step{border:1px solid var(--line);border-radius:12px;padding:clamp(22px,2.4vw,30px);background:var(--surface);transition:border-color .2s,transform .2s var(--ease)}
.step:hover{border-color:var(--line-2);transform:translateY(-3px)}
.step .n{font:500 .72rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.step h3{margin-top:12px}
.step p{margin-top:8px;color:var(--ink-2);font-size:.99rem}
@media(max-width:820px){.steps{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.steps{grid-template-columns:1fr}}

/* ---- feature statement ---- */
.feature h2{max-width:18ch}
.feature p{margin-top:20px;max-width:52ch;color:var(--ink-2)}
.pillrow,.ownrow{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.chip,.ownrow span{border:1px solid var(--line-2);border-radius:999px;padding:9px 16px;font-size:.9rem;color:var(--ink-2);background:color-mix(in srgb,var(--surface) 60%,transparent)}
.band.ink .chip,.band.ink .ownrow span{border-color:var(--line-2);color:var(--ink)}

/* ---- work ---- */
.work{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,56px);margin-top:clamp(34px,4vw,56px)}
@media (max-width:820px){.work{grid-template-columns:1fr;gap:clamp(34px,8vw,52px)}}
.wcard{color:inherit;display:block;text-align:left}
.wshot{border:1px solid var(--line-2);border-radius:12px;overflow:hidden;background:var(--surface);aspect-ratio:16/10;
  box-shadow:0 40px 80px -52px rgba(0,0,0,.9);transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.wcard:hover .wshot{transform:translateY(-5px);border-color:color-mix(in srgb,var(--accent) 40%,var(--line-2));box-shadow:0 46px 90px -50px rgba(0,0,0,.9)}
.wshot img{width:100%;height:100%;object-fit:cover;object-position:top}
.wmeta{margin-top:18px;padding:0}
.wmeta .k{display:block;font:500 .72rem/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:9px}
.wmeta h3{margin-bottom:8px}
.wmeta p{margin:0;color:var(--ink-2);font-size:1rem;line-height:1.5;max-width:42ch}
.wmeta .go{display:inline-block;margin-top:12px;font-weight:600;color:var(--accent)}
.wcard:hover .wmeta .go{text-decoration:underline;text-underline-offset:.2em}

/* ---- finishes (if used) ---- */
.finishes{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.4vw,18px);margin-top:clamp(34px,4vw,54px)}
.finish{border:1px solid var(--line-2);border-radius:12px;aspect-ratio:3/4;padding:18px;display:flex;align-items:flex-end;background:var(--surface)}
.finish span{font-size:.8rem;font-weight:600;color:var(--ink-3)}
.f-sky,.f-citrus,.f-blush,.f-star{background:var(--surface)}
@media(max-width:820px){.finishes{grid-template-columns:repeat(2,1fr)}}

/* ---- studio ---- */
.studio-grid{display:grid;grid-template-columns:clamp(200px,26vw,300px) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
@media (max-width:720px){.studio-grid{grid-template-columns:1fr;gap:28px}}
.studio-grid .portrait{width:100%;aspect-ratio:1;object-fit:cover;object-position:center 22%;border-radius:12px;border:1px solid var(--line-2);
  box-shadow:0 40px 80px -50px rgba(0,0,0,.9)}
.studio-grid h2{max-width:16ch}
.studio-grid p{margin-top:18px;max-width:50ch;color:var(--ink-2)}
.studio-grid .sig{margin-top:18px;font-weight:600;color:var(--ink)}
.studio-grid .sig .num{color:var(--accent);font-weight:500}

/* ---- article / long-form ---- */
.article-hero{padding-top:clamp(46px,7vw,84px);padding-bottom:clamp(14px,3vw,26px)}
.article-hero .eyebrow,.article-hero .label{display:block;margin-bottom:16px}
.article-hero h1{font-size:clamp(2.3rem,5.6vw,3.9rem);max-width:20ch}
.article-hero .dek{margin-top:clamp(16px,2vw,22px);max-width:48ch;color:var(--ink-2);font-size:clamp(1.12rem,1.6vw,1.36rem);line-height:1.42;letter-spacing:-.012em}
.article-hero .meta{margin-top:18px;color:var(--ink-3);font-size:.88rem;font-family:var(--mono)}
.crumbs{color:var(--ink-3);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;padding-top:14px;font-weight:500;font-family:var(--mono)}
.crumbs a{color:var(--ink-2)}.crumbs a:hover{color:var(--accent)}

.prose{max-width:720px;margin:0 auto;padding-top:clamp(24px,4vw,44px)}
.prose>*+*{margin-top:1.1em}
.prose h2{font-family:var(--disp);font-weight:600;font-size:clamp(1.55rem,3vw,2.2rem);line-height:1.12;letter-spacing:-.022em;margin-top:1.9em;scroll-margin-top:80px}
.prose h3{font-family:var(--disp);font-weight:600;font-size:clamp(1.22rem,2vw,1.5rem);line-height:1.2;margin-top:1.5em}
.prose p,.prose li{font-size:clamp(1.04rem,1.2vw,1.16rem);line-height:1.68;color:var(--ink-2)}
.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1.5px;text-decoration-color:color-mix(in srgb,var(--accent) 34%,transparent)}
.prose a:hover{text-decoration-color:var(--accent)}
.prose strong{font-weight:700;color:var(--ink)}
.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.5em}
.prose ul{list-style:none;padding-left:0}
.prose ul>li{position:relative;padding-left:1.4em}
.prose ul>li::before{content:"";position:absolute;left:.1em;top:.62em;width:7px;height:7px;border-radius:2px;background:var(--accent)}
.prose blockquote{margin:1.6em 0;padding:4px 0 6px 22px;border-left:2px solid var(--accent);color:var(--ink);font-family:var(--disp);font-size:clamp(1.3rem,2.2vw,1.7rem);font-weight:500;line-height:1.3;letter-spacing:-.018em}
.prose .callout,.callout{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:clamp(22px,3vw,32px);margin:1.6em 0}
.prose .callout p,.prose .callout li{color:var(--ink-2)}
.prose table{width:100%;border-collapse:collapse;margin:1.4em 0;font-size:.99rem}
.prose th,.prose td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.prose th{font-weight:700;color:var(--ink);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;font-family:var(--mono)}
.prose td{color:var(--ink-2)}
.prose hr{border:0;border-top:1px solid var(--line);margin:2em 0}
.prose img{border-radius:12px;margin:1.5em auto;border:1px solid var(--line)}
.prose figure{margin:1.6em 0}.prose figure img{margin:0}
.prose figcaption{margin-top:10px;font-size:.83rem;color:var(--ink-3);text-align:center;font-family:var(--mono)}

/* ---- simple pages (404 / thanks) ---- */
.simple{padding-block:clamp(90px,16vw,190px);max-width:760px;margin-inline:auto}
.simple .eyebrow,.simple .label{display:block;margin-bottom:16px}
.simple h1{max-width:18ch}
.simple p{margin-top:20px;max-width:46ch;color:var(--ink-2);font-size:clamp(1.12rem,1.6vw,1.36rem)}
.simple .hero-cta{margin-top:30px}

/* ---- case study ---- */
.case-shot{border:1px solid var(--line-2);border-radius:14px;overflow:hidden;margin-top:clamp(26px,4vw,44px);box-shadow:0 50px 100px -56px rgba(0,0,0,.9)}
.case-shot img{width:100%}
.case-body{max-width:720px;margin:0 auto}

/* ---- booking page ---- */
.booker{max-width:900px;margin:clamp(28px,4vw,46px) auto 0;border:1px solid var(--line-2);border-radius:14px;overflow:hidden;background:var(--surface)}
.booker .wbar{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line);font-size:.84rem;font-weight:600;color:var(--ink-2);background:var(--bg-2)}
.booker .wbar i{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}
.book-frame{width:100%;height:640px;border:0;display:block;background:#fff}
.formwrap{max-width:720px;margin:clamp(44px,7vw,80px) auto 0}
.formhead{font-family:var(--disp);font-weight:600;font-size:clamp(1.8rem,3.6vw,2.5rem);line-height:1.08;letter-spacing:-.028em;max-width:18ch}
.formsub{color:var(--ink-2);margin-top:14px;max-width:44ch;font-size:clamp(1.02rem,1.3vw,1.18rem)}
#quote{margin-top:clamp(28px,4vw,42px)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{margin-top:16px}
.field label{display:block;font-size:.86rem;font-weight:600;color:var(--ink);margin-bottom:8px}
.field .req{color:var(--accent)}
.field input,.field select,.field textarea{width:100%;background:var(--bg-2);color:var(--ink);border:1.5px solid var(--line-2);border-radius:8px;
  padding:13px 15px;font-family:var(--text);font-size:1.01rem;transition:border-color .2s,box-shadow .2s}
.field textarea{min-height:130px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.field .hint{display:block;margin-top:8px;font-size:.8rem;color:var(--ink-3)}
.field .msg{display:none;margin-top:7px;font-size:.8rem;color:#ff6b6b}
.field.err input,.field.err select,.field.err textarea{border-color:#ff6b6b}
.field.err .msg{display:block}
.filerow input[type=file]{font-size:.86rem;color:var(--ink-2)}
.filerow input[type=file]::file-selector-button{font-family:var(--text);font-size:.84rem;font-weight:600;color:var(--accent-ink);background:var(--accent);border:0;border-radius:6px;padding:9px 16px;margin-right:12px;cursor:pointer}
.honey{position:absolute;left:-9999px}
.submit{width:100%;margin-top:24px;font-size:1.01rem;font-weight:600;color:var(--accent-ink);background:var(--accent);border:1.5px solid var(--accent);border-radius:7px;padding:16px 26px;cursor:pointer;transition:background .25s,transform .14s var(--ease)}
.submit:hover{background:var(--accent-2);border-color:var(--accent-2);transform:translateY(-1px)}
.formnote{margin-top:16px;font-size:.8rem;color:var(--ink-3)}
.formnote a{color:var(--accent)}
.contact{margin-top:clamp(40px,6vw,64px);color:var(--ink-2);font-size:1rem}
.contact a{color:var(--accent)}
.orline{margin:clamp(34px,5vw,52px) auto 0;color:var(--ink-3);font-size:.78rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;font-family:var(--mono)}
@media(max-width:620px){.two{grid-template-columns:1fr}.book-frame{height:720px}}

/* ---- faq ---- */
.faq{max-width:760px;margin:clamp(28px,4vw,46px) auto 0;border-top:1px solid var(--line-2)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:20px;align-items:center;
  padding:22px 0;font-family:var(--disp);font-weight:500;font-size:clamp(1.12rem,1.5vw,1.36rem);letter-spacing:-.018em;color:var(--ink);transition:color .2s}
.faq summary:hover{color:var(--accent)}
.faq summary::-webkit-details-marker{display:none}
.faq summary .plus,.faq summary .pl{position:relative;width:18px;height:18px;flex:none}
.faq summary .plus::before,.faq summary .plus::after,.faq summary .pl::before,.faq summary .pl::after{content:"";position:absolute;background:var(--accent);inset:0;margin:auto}
.faq summary .plus::before,.faq summary .pl::before{width:18px;height:1.5px}
.faq summary .plus::after,.faq summary .pl::after{width:1.5px;height:18px;transition:transform .25s var(--ease)}
.faq details[open] summary .plus::after,.faq details[open] summary .pl::after{transform:scaleY(0)}
.faq .a{padding:0 0 24px;max-width:64ch;color:var(--ink-2)}
.faq .a a{color:var(--accent)}

/* ---- close ---- */
.close .hero-cta{margin-top:28px}
.close .alt{margin-top:22px;max-width:48ch;color:var(--ink-2)}
.close .alt a{color:var(--accent)}

/* ---- footer ---- */
footer{background:var(--bg-2);border-top:1px solid var(--line)}
.foot-in,footer>.wrap{max-width:var(--max);margin-inline:auto;padding:clamp(40px,6vw,72px) var(--gut)}
.foot-top{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(0,1fr));gap:36px 24px;padding-bottom:36px;border-bottom:1px solid var(--line)}
.foot-top p{margin:16px 0 0;color:var(--ink-2);max-width:34ch;font-size:.98rem}
.foot-col .label{display:block;margin-bottom:14px;color:var(--ink-3)}
.foot-col a{display:block;color:var(--ink-2);padding:5px 0;transition:color .18s}
.foot-col a:hover{color:var(--accent)}
.foot-bot{display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between;padding-top:26px;color:var(--ink-3);font-size:.86rem;font-family:var(--mono)}
.foot-links{display:flex;flex-wrap:wrap;gap:10px 22px;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:18px}
.foot-links a{color:var(--ink-2);font-weight:500}.foot-links a:hover{color:var(--accent)}
footer>.wrap>div:last-child{color:var(--ink-3);font-size:.86rem}
@media (max-width:720px){.foot-top{grid-template-columns:1fr 1fr}.foot-top>div:first-child{grid-column:1/-1}}

/* ---- reveal (no-JS safe) ---- */
.rv{opacity:1;transform:none}
html.js .rv{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
html.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html.js .rv{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ---- mobile nav ---- */
@media (max-width:760px){
  .burger{display:flex}
  .nav-links{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(82vw,320px);overflow-y:auto;flex-direction:column;align-items:flex-start;gap:4px;
    background:var(--bg-2);border-left:1px solid var(--line-2);padding:88px 28px 28px;transform:translateX(100%);visibility:hidden;
    transition:transform .3s var(--ease),visibility 0s linear .3s;box-shadow:-40px 0 80px -40px rgba(0,0,0,.9);z-index:60}
  .nav-links.open{transform:none;visibility:visible;transition:transform .3s var(--ease),visibility 0s}
  .nav-links a:not(.btn){font-size:1.3rem;font-family:var(--disp);font-weight:500;color:var(--ink);padding:14px 0;width:100%;border-bottom:1px solid var(--line)}
  .nav-links a:not(.btn)::after{display:none}
  .nav-links .btn{margin-top:16px;width:100%;justify-content:center}
  body.nav-open{overflow:hidden}
}

/* ---- home: selected-work text strip (screenshots live on /work) ---- */
.worklist{margin-top:clamp(30px,4vw,54px);border-top:1px solid var(--line-2)}
.worklist a{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;gap:clamp(14px,3vw,40px);align-items:baseline;
  padding:clamp(22px,2.8vw,34px) 0;border-bottom:1px solid var(--line);color:inherit;transition:background .2s var(--ease)}
.worklist a:hover{background:rgba(236,244,239,.035)}
.worklist a:hover h3{color:var(--accent)}
.worklist .wl-name h3{margin:0;transition:color .2s}
.worklist .wl-name .k{display:block;font:500 .7rem/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.worklist .wl-desc{color:var(--ink-2);font-size:1rem;line-height:1.5}
.worklist .wl-go{font-weight:600;color:var(--accent);white-space:nowrap}
@media(max-width:720px){.worklist a{grid-template-columns:1fr;gap:10px}.worklist a:hover{background:none}.worklist .wl-go{margin-top:4px}}
