/* Design REsource Hawaii - Frontline Web Designs
   v2. Archetype: Stacked Slab. Paper ground, rounded slabs inset from the
   viewport, floating pill nav, one ink band carrying the centerpiece.

   Two deliberate departures from the reference this was drawn from:
   - no tiled two-axis grid wallpaper (it reads as a generated-UI signature);
     paper grain carries the same tactility without the tell
   - the annotation red is darkened from #d93a2b to #c02f20, because the
     original measures 4.20:1 on this paper and fails AA */

:root{
  --paper:#f6f5f2;
  --paper-alt:#fafaf8;
  --card:#ffffff;
  --ink-surface:#0e0e0d;
  --ink-900:#111110;
  --ink-600:#6b6a66;
  --ink-400:#a3a29d;          /* 2.35:1 on paper: decoration only, never body text */
  --ink-on-dark:#f6f5f2;
  --anno:#c02f20;
  --hairline:#eceae4;

  --shadow-card:0 1px 2px rgba(17,17,16,.04), 0 8px 24px rgba(17,17,16,.06);
  --shadow-raised:0 2px 4px rgba(17,17,16,.06), 0 16px 40px rgba(17,17,16,.10);
  --shadow-pill:0 1px 2px rgba(17,17,16,.20), 0 6px 16px rgba(17,17,16,.16);
  --shadow-btn-hover:0 2px 8px rgba(17,17,16,.14), 0 16px 34px rgba(17,17,16,.20);
  --shadow-btn-press:0 1px 2px rgba(17,17,16,.26), 0 3px 8px rgba(17,17,16,.16);

  --ease:cubic-bezier(.22,1,.36,1);
  --dur:.2s;
  --dur-press:.11s;

  --radius-slab:32px;
  --radius-card:20px;
  --radius-tile:12px;
  --radius-pill:999px;
  --slab-gap:12px;
  --vm:20px;                  /* viewport margin */
  --slab-pad-x:64px;
  --wrap:1180px;
}

*{box-sizing:border-box}
html{scrollbar-gutter:stable;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  background-color:var(--paper);
  /* paper grain, not a tiled grid */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23g)' opacity='.03'/%3E%3C/svg%3E");
  color:var(--ink-900);
  font-family:Figtree,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  font-size:1.0625rem;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}

figure,blockquote,ul,ol,p{margin:0}
ul,ol{padding:0;list-style:none}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
::selection{background-color:var(--ink-900);color:var(--paper)}

h1,h2,h3{
  font-family:Figtree,sans-serif;font-weight:800;margin:0;
  letter-spacing:-0.028em;line-height:1.04;text-wrap:balance;
}
h1{font-size:4.25rem}
h2{font-size:2.75rem}
h3{font-size:1.375rem;line-height:1.22;letter-spacing:-0.018em}

.data{font-family:Doto,ui-monospace,monospace;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:0.01em}
.anno{
  font-family:Caveat,"Segoe Script",cursive;color:var(--anno);
  font-size:1.5rem;line-height:1.2;font-weight:600;
}
.label{font-size:0.8125rem;font-weight:600;letter-spacing:0.03em;color:var(--ink-600)}
.lede{font-size:1.25rem;line-height:1.58;color:var(--ink-600);max-width:36rem}
.muted{color:var(--ink-600)}

/* clip idiom, not left:-9999px: an off-screen element still has a 9999px-wide
   box, which reads as a horizontal bleed to any layout check */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--ink-900);color:var(--paper);padding:14px 20px;font-weight:600;text-decoration:none;border-radius:var(--radius-pill)}
.skip:focus{left:12px;top:12px}
:focus-visible{outline:2px solid var(--ink-900);outline-offset:3px}

/* ---------- floating pill nav ---------- */
/* no backdrop-filter: it would make this a containing block for the fixed drawer */
.navwrap{position:sticky;top:14px;z-index:60;padding:14px 20px 0;display:flex;justify-content:center}
.pillbar{
  display:flex;align-items:center;gap:8px;
  background:var(--card);border:1px solid rgba(17,17,16,.05);
  border-radius:var(--radius-pill);box-shadow:var(--shadow-card);
  padding:8px 8px 8px 22px;max-width:100%;
}
.wordmark{font-weight:800;font-size:0.9375rem;letter-spacing:-0.02em;text-decoration:none;color:var(--ink-900);white-space:nowrap;margin-right:14px}
.re{color:var(--anno)}
.nav{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}
.nav a{
  color:var(--ink-600);text-decoration:none;font-size:0.9375rem;font-weight:500;
  white-space:nowrap;padding:9px 14px;border-radius:var(--radius-pill);
  transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease);
}
.nav a:hover{color:var(--ink-900);background-color:#f2f0ea}
.nav a[aria-current="page"]{color:var(--ink-900);background-color:#f2f0ea}
/* restate every property .nav a sets, or its specificity strips the button */
.nav a.btn,.nav a.btn:hover{background-color:var(--ink-900);color:var(--ink-on-dark);padding:11px 20px}

/* ---------- buttons: the reference's lift/press ---------- */
.btn,.btn-ghost{
  display:inline-block;border-radius:var(--radius-pill);
  font-weight:600;font-size:0.9375rem;text-decoration:none;
  padding:14px 26px;border:1px solid transparent;cursor:pointer;
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur) var(--ease);
}
.btn{background-color:var(--ink-900);color:var(--ink-on-dark);box-shadow:var(--shadow-pill)}
.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-btn-hover)}
.btn:active{transform:translateY(1.5px);box-shadow:var(--shadow-btn-press);transition-duration:var(--dur-press)}
.btn-ghost{background-color:#f2f0ea;color:var(--ink-900);border-color:rgba(17,17,16,.05)}
.btn-ghost:hover{transform:translateY(-2px);box-shadow:var(--shadow-card);border-color:rgba(17,17,16,.1)}
.btn-ghost:active{transform:translateY(1.5px);box-shadow:none;transition-duration:var(--dur-press)}
.on-dark .btn{background-color:var(--paper);color:var(--ink-900)}
.on-dark .btn-ghost{background-color:#212120;color:var(--ink-on-dark);border-color:rgba(255,255,255,.14)}

.burger{
  display:none;background-color:#f2f0ea;border:1px solid rgba(17,17,16,.05);
  border-radius:var(--radius-pill);width:46px;height:44px;cursor:pointer;
  align-items:center;justify-content:center;flex:none;
}
.burger span{display:block;width:18px;height:1.5px;background-color:var(--ink-900);position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background-color:var(--ink-900)}
.burger span::before{top:-6px}
.burger span::after{top:6px}

/* fades in place; never translated off-canvas, so no body clip is needed */
.drawer{
  position:fixed;inset:0;z-index:80;background-color:var(--paper);
  opacity:0;pointer-events:none;transition:opacity .26s var(--ease);
  padding:104px 24px 40px;overflow-y:auto;
}
.drawer.open{opacity:1;pointer-events:auto}
.drawer a{display:block;color:var(--ink-900);text-decoration:none;font-weight:700;font-size:1.75rem;letter-spacing:-0.02em;padding:16px 0;border-bottom:1px solid var(--hairline)}
/* .drawer a (0,1,1) out-specifies .btn (0,1,0), so this must restate EVERY
   property .btn sets or the CTA renders ink-on-ink and vanishes */
.drawer a.btn,.drawer a.btn:hover{
  background-color:var(--ink-900);color:var(--ink-on-dark);
  border-bottom:0;margin-top:26px;font-size:1rem;padding:14px 26px;
  display:inline-block;text-align:center;
}
.drawer-x{position:absolute;top:24px;right:24px;background-color:#f2f0ea;border:1px solid rgba(17,17,16,.05);border-radius:var(--radius-pill);color:var(--ink-900);width:46px;height:46px;font-size:1.35rem;cursor:pointer;line-height:1}

/* ---------- slabs ---------- */
.slab{
  margin:0 20px var(--slab-gap);
  border-radius:var(--radius-slab);
  padding:96px 64px;
  background-color:var(--card);
  box-shadow:var(--shadow-card);
}
.slab-paper{background-color:var(--paper-alt)}
.slab-ink{background-color:var(--ink-surface);color:var(--ink-on-dark);box-shadow:var(--shadow-raised)}
.slab-ink h1,.slab-ink h2,.slab-ink h3{color:var(--ink-on-dark)}
.slab-ink .lede,.slab-ink .muted,.slab-ink .label{color:var(--ink-400)}
.slab-in{max-width:var(--wrap);margin:0 auto}
.slab-hero{padding:64px 64px 88px;text-align:center}

.sec-head{max-width:44rem;margin-bottom:52px}
.sec-head h2{margin-bottom:16px}
.sec-head p{color:var(--ink-600);font-size:1.125rem}
.slab-ink .sec-head p{color:var(--ink-400)}

/* ---------- hero ---------- */
.hero-h1{max-width:44rem;margin:0 auto 24px}
.hero-h1 .dim{color:var(--ink-600);display:block}
.hero-lede{font-size:1.25rem;line-height:1.55;color:var(--ink-600);max-width:34rem;margin:0 auto}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:34px}

.hero-plate{position:relative;max-width:920px;margin:64px auto 0}
/* no background or shadow of its own: a framed figure sitting inside a slab
   reads as a card inside a card. The image carries the depth instead. */
.plate{background-color:transparent;border-radius:var(--radius-card);padding:0}
.plate img{border-radius:var(--radius-tile);width:100%;box-shadow:var(--shadow-raised)}
.plate-cap{display:flex;justify-content:space-between;gap:14px;padding:14px 4px 0;flex-wrap:wrap}
.plate-cap b{font-size:0.875rem;font-weight:600}
.plate-cap span{font-size:0.875rem;color:var(--ink-600)}

/* the redline annotation: this build's repeating motif */
.anno-pin{position:absolute;right:-8px;top:-46px;text-align:left;pointer-events:none}
.anno-pin svg{display:block;margin-left:34px;margin-top:2px}

/* ---------- Doto data strip ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:72px;padding-top:40px;border-top:1px solid var(--hairline)}
.stat b{display:block;font-family:Doto,ui-monospace,monospace;font-weight:700;font-size:3.25rem;line-height:1;color:var(--ink-900);font-variant-numeric:tabular-nums}
.stat span{display:block;margin-top:10px;font-size:0.875rem;color:var(--ink-600)}
.slab-ink .stat b{color:var(--ink-on-dark)}
.slab-ink .stat span{color:var(--ink-400)}

/* ---------- work cards ---------- */
.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.work{
  display:block;width:100%;text-align:left;cursor:pointer;color:inherit;
  background-color:var(--card);border:1px solid rgba(17,17,16,.05);
  border-radius:var(--radius-card);padding:12px;
  box-shadow:var(--shadow-card);
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.work:hover{transform:translateY(-3px);box-shadow:var(--shadow-raised)}
.work:active{transform:translateY(0);transition-duration:var(--dur-press)}
.work-img{border-radius:var(--radius-tile);overflow:hidden;aspect-ratio:2.042 / 1;background-color:var(--paper-alt)}
.work-img img{width:100%;height:100%;object-fit:cover}
.work h3{font-size:1.0625rem;margin:14px 8px 0;letter-spacing:-0.015em}
.work .meta{margin:5px 8px 8px;font-size:0.8125rem;color:var(--ink-600);display:flex;justify-content:space-between;gap:10px}
.work .meta em{font-style:normal;font-family:Doto,monospace;font-weight:700}

.work-more{display:flex;justify-content:center;margin-top:44px}

/* portfolio page filters */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.filter{
  background-color:#f2f0ea;border:1px solid rgba(17,17,16,.05);color:var(--ink-600);
  font-size:0.875rem;font-weight:600;padding:11px 18px;cursor:pointer;
  border-radius:var(--radius-pill);
  transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease);
}
.filter:hover{color:var(--ink-900)}
.filter[aria-pressed="true"]{background-color:var(--ink-900);color:var(--ink-on-dark)}

/* ---------- THE PASSAGE (centerpiece, on the ink slab) ---------- */
.passage-grid{display:grid;grid-template-columns:360px 1fr;gap:56px;align-items:start}
.stages{position:relative;padding-left:30px}
.stages::before{content:"";position:absolute;left:6px;top:14px;bottom:14px;width:1px;background-color:rgba(255,255,255,.14)}
/* scaleY, not height: animating height thrashes layout */
.stage-fill{position:absolute;left:6px;top:14px;bottom:14px;width:1px;background-color:var(--paper);transform:scaleY(0);transform-origin:top;transition:transform .5s var(--ease)}
.stage{
  position:relative;display:block;width:100%;text-align:left;
  background-color:transparent;border:0;border-bottom:1px solid rgba(255,255,255,.09);
  color:var(--ink-400);padding:16px 0;cursor:pointer;
  font-family:Figtree,sans-serif;font-size:1.0625rem;font-weight:600;
  transition:color var(--dur) var(--ease);
}
.stage::before{content:"";position:absolute;left:-30px;top:24px;width:13px;height:13px;background-color:var(--ink-surface);border:1px solid rgba(255,255,255,.22);border-radius:50%;transition:background-color var(--dur) var(--ease)}
.stage:hover{color:var(--ink-on-dark)}
.stage[aria-selected="true"]{color:var(--ink-on-dark)}
.stage[aria-selected="true"]::before{background-color:var(--paper);border-color:var(--paper)}
.stage i{display:block;font-style:normal;font-family:Doto,monospace;font-weight:700;font-size:0.875rem;color:var(--ink-400);margin-bottom:2px}

.passage-panel{min-height:520px}
.passage-copy{font-size:1.625rem;line-height:1.28;font-weight:700;letter-spacing:-0.022em;color:var(--ink-on-dark);max-width:32rem;margin-bottom:10px}
.passage-sub{color:var(--ink-400);max-width:34rem;margin-bottom:28px}
.passage-shots{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
/* opaque, not rgba: a translucent surface cannot be graded for contrast,
   statically or by a probe. This is 5% white over the ink slab, resolved. */
.passage-shots .shot{background-color:#1a1a19;border-radius:var(--radius-tile);padding:8px}
.passage-shots .shot img{border-radius:8px;aspect-ratio:2.042 / 1;object-fit:cover;width:100%}
.passage-shots figcaption{margin-top:8px;padding:0 4px 2px;font-size:0.8125rem;color:var(--ink-400)}

/* the one stage with no photograph in the library gets a manifest, not an invented image */
.manifest{background-color:var(--paper);border-radius:var(--radius-card);padding:28px 30px;color:var(--ink-900)}
.manifest li{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--hairline);font-size:0.9375rem}
.manifest li:last-child{border-bottom:0}
.manifest li span{color:var(--ink-600)}
.manifest li b{font-weight:600;font-family:Doto,monospace}

.passage-anno{position:relative;margin-top:30px;padding-left:8px}
.passage-anno .anno{color:#ff8a7a}

/* ---------- services rows ---------- */
/* image-led rows: the old 1fr + 18rem grid left a near-empty right column,
   which was most of the dead space on the page */
.svc-row{display:grid;grid-template-columns:320px 1fr;gap:40px;align-items:start;padding:34px 0;border-bottom:1px solid var(--hairline)}
.svc-row:first-of-type{border-top:1px solid var(--hairline)}
.svc-row h3{margin-bottom:10px}
.svc-row p{color:var(--ink-600)}
.svc-shot{border-radius:var(--radius-tile);overflow:hidden;aspect-ratio:2.042 / 1;background-color:var(--paper-alt)}
.svc-shot img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.svc-row:hover .svc-shot img{transform:scale(1.04)}
.svc-cap{margin-top:8px;font-size:0.78rem;color:var(--ink-600)}
.svc-tags{display:flex;flex-wrap:wrap;gap:8px;align-content:start;margin-top:16px}
.svc-tags li{font-size:0.8125rem;font-weight:600;color:var(--ink-600);background-color:#f2f0ea;border-radius:var(--radius-pill);padding:7px 14px}

/* detail band: five real frames, captioned by project, asserting nothing
   about material that the photograph cannot carry on its own */
.band{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:56px}
.band figure{margin:0}
.band img{width:100%;border-radius:var(--radius-tile);aspect-ratio:1 / 1;object-fit:cover}
.band figcaption{margin-top:9px;font-size:0.78rem;color:var(--ink-600)}

/* three-up strip, used on Sourcing to carry the Bali work */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:44px}
.trio figure{margin:0}
.trio img{width:100%;border-radius:var(--radius-tile);aspect-ratio:2.042 / 1;object-fit:cover}
.trio figcaption{margin-top:9px;font-size:0.8125rem;color:var(--ink-600)}

/* closing call to action, given a real photograph instead of empty paper */
.cta-split{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center}
.cta-split h2{margin-bottom:18px}

.feature{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;margin-top:56px}
.feature h3{font-size:1.75rem;margin-bottom:14px}
.feature p{color:var(--ink-600);margin-bottom:22px}

/* ---------- materials ---------- */
.mat-list{border-top:1px solid var(--hairline)}
.mat{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:baseline;padding:24px 0;border-bottom:1px solid var(--hairline);transition:transform .3s var(--ease)}
.mat:hover{transform:translateX(12px)}   /* transform, not padding: no layout thrash */
.mat b{font-size:1.25rem;font-weight:700;letter-spacing:-0.02em}
.mat span{color:var(--ink-600);font-size:0.9375rem}

/* ---------- sister ---------- */
.sister{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.sister h2{font-size:2.125rem;margin-bottom:14px}
.sister p{color:var(--ink-600);margin-bottom:22px}

/* ---------- viewer ---------- */
.viewer{position:fixed;inset:0;z-index:90;background-color:var(--paper);opacity:0;pointer-events:none;transition:opacity .3s var(--ease);overflow-y:auto;padding:96px 24px 60px}
.viewer.open{opacity:1;pointer-events:auto}
.viewer-in{max-width:var(--wrap);margin:0 auto}
.viewer-x{position:fixed;top:24px;right:26px;z-index:92;background-color:var(--card);border:1px solid rgba(17,17,16,.06);border-radius:var(--radius-pill);color:var(--ink-900);width:48px;height:48px;font-size:1.4rem;cursor:pointer;line-height:1;box-shadow:var(--shadow-card)}
.viewer h2{margin-bottom:10px}
.viewer-meta{margin-bottom:34px;color:var(--ink-600);font-size:0.9375rem}
.viewer-shots{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.viewer-shots .plate{padding:10px}
.viewer-shots img{aspect-ratio:2.042 / 1;object-fit:cover}

/* ---------- form ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}
.field{margin-bottom:18px}
.field label{display:block;font-size:0.875rem;font-weight:600;color:var(--ink-600);margin-bottom:7px}
.field input,.field select,.field textarea{
  width:100%;background-color:var(--card);border:1px solid var(--hairline);
  color:var(--ink-900);padding:14px 16px;border-radius:var(--radius-tile);
  font-family:Figtree,sans-serif;font-size:1rem;transition:border-color var(--dur) var(--ease);
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink-900)}
.field textarea{min-height:150px;resize:vertical}
.info-block{border-top:1px solid var(--hairline);padding:20px 0}
.info-block b{display:block;font-size:0.8125rem;font-weight:700;color:var(--ink-900);margin-bottom:7px}
.info-block a{color:var(--ink-600);text-decoration:none;border-bottom:1px solid var(--hairline)}
.info-block a:hover{color:var(--ink-900);border-bottom-color:var(--ink-900)}
.note{background-color:var(--paper-alt);border:1px solid var(--hairline);border-radius:var(--radius-card);padding:18px 22px;margin-top:24px;color:var(--ink-600);font-size:0.9375rem}

/* ---------- footer ---------- */
.site-foot{margin:0 20px 20px;border-radius:var(--radius-slab);background-color:var(--ink-surface);color:var(--ink-on-dark);padding:72px 64px 34px}
.foot-in{max-width:var(--wrap);margin:0 auto}
.foot-top{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:46px;margin-bottom:48px}
.foot-tag{font-size:1.5rem;font-weight:700;letter-spacing:-0.022em;max-width:20rem;line-height:1.24}
.foot-h{font-size:0.8125rem;font-weight:700;color:var(--ink-400);margin-bottom:14px}
.foot-col a{display:block;color:var(--ink-400);text-decoration:none;padding:5px 0;font-size:0.9375rem}
.foot-col a:hover{color:var(--ink-on-dark)}
.foot-bot{border-top:1px solid rgba(255,255,255,.1);padding-top:24px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:0.875rem;color:var(--ink-400)}
.foot-bot a{color:var(--ink-400);text-decoration:none;border-bottom:1px solid transparent}
.foot-bot a:hover{color:var(--ink-on-dark);border-bottom-color:var(--ink-400)}

/* ---------- reveal (gated; a no-JS / headless / 0x0 viewport never blanks) ---------- */
html.js .rv{opacity:0;transform:translateY(12px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
html.js .rv.in{opacity:1;transform:none}    /* 0,3,1 out-specifies the 0,2,1 hide */

@media (prefers-reduced-motion:reduce){
  html.js .rv{opacity:1;transform:none;transition:none}
  .btn,.btn-ghost,.work,.mat,.stage-fill{transition:none}
  .btn:hover,.btn-ghost:hover,.work:hover{transform:none}
}

/* ---------- responsive ---------- */
@media (max-width:1120px){
  .nav{display:none}
  .burger{display:flex}
  .pillbar{padding:8px 8px 8px 20px;width:100%;justify-content:space-between}
  .wordmark{margin-right:0}
  h1{font-size:3.25rem}
  .passage-grid{grid-template-columns:1fr;gap:38px}
  .work-grid{grid-template-columns:repeat(2,1fr)}
  .slab{padding:76px 44px}
  .slab-hero{padding:52px 44px 72px}
  .site-foot{padding:60px 44px 30px}
}
@media (max-width:820px){
  h1{font-size:2.75rem}
  h2{font-size:2.125rem}
  .slab{padding:60px 28px;border-radius:26px}
  .slab-hero{padding:44px 28px 60px}
  .site-foot{padding:52px 28px 28px;border-radius:26px}
  .svc-row{grid-template-columns:1fr;gap:16px;padding:28px 0}
  .band{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:44px}
  .band figure:nth-child(n+4){display:none}
  .feature,.sister,.contact-grid,.cta-split{grid-template-columns:1fr;gap:28px}
  .trio{grid-template-columns:1fr;gap:14px;margin-top:34px}
  .stats{grid-template-columns:repeat(2,1fr);gap:26px;margin-top:52px}
  .foot-top{grid-template-columns:1fr 1fr;gap:32px}
  .anno-pin{position:static;margin-bottom:14px;text-align:center}
  .anno-pin svg{display:none}
}
@media (max-width:600px){
  h1{font-size:2.25rem}
  h2{font-size:1.75rem}
  .lede,.hero-lede{font-size:1.0625rem}
  .slab{margin:0 12px var(--slab-gap);padding:48px 20px;border-radius:22px}
  .slab-hero{padding:36px 20px 48px}
  .site-foot{margin:0 12px 12px;padding:44px 20px 24px;border-radius:22px}
  .navwrap{padding:12px 12px 0;top:10px}
  .work-grid,.passage-shots,.viewer-shots{grid-template-columns:1fr}
  .band{grid-template-columns:repeat(2,1fr)}
  .band figure:nth-child(n+3){display:none}
  .mat{grid-template-columns:1fr;gap:4px}
  .foot-top{grid-template-columns:1fr;gap:26px}
  .stat b{font-size:2.5rem}
  .hero-cta{gap:10px}
  .hero-cta .btn,.hero-cta .btn-ghost{width:100%;text-align:center}
  .viewer{padding:84px 16px 44px}
  .drawer{padding:96px 20px 32px}
  .manifest{padding:22px}
}
@media (max-width:380px){
  h1{font-size:2rem}
  .slab{margin:0 8px var(--slab-gap);padding:40px 16px}
  .slab-hero{padding:32px 16px 42px}
  .site-foot{margin:0 8px 8px;padding:38px 16px 22px}
  .stat b{font-size:2.125rem}
}

/* touch sizing only where a finger is the input */
@media (pointer:coarse){
  .nav a,.filter,.stage,.btn,.btn-ghost,.drawer a,.foot-col a,.work{min-height:44px}
  .filter,.btn,.btn-ghost{display:inline-flex;align-items:center;justify-content:center}
  .burger,.drawer-x,.viewer-x{min-width:46px;min-height:46px}
  .wordmark,.foot-bot a,.info-block a{display:inline-flex;align-items:center;min-height:44px}
}
