/* Font tự chứa — không phụ thuộc Google Fonts */
@font-face{font-family:'Crimson Pro';font-style:italic;font-weight:300;font-display:swap;src:url('fonts/crimson-pro-300-italic-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Crimson Pro';font-style:italic;font-weight:300;font-display:swap;src:url('fonts/crimson-pro-300-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Crimson Pro';font-style:italic;font-weight:300;font-display:swap;src:url('fonts/crimson-pro-300-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Crimson Pro';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/crimson-pro-300-italic-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Crimson Pro';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/crimson-pro-300-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Crimson Pro';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/crimson-pro-300-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/crimson-pro-300-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/crimson-pro-300-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/crimson-pro-300-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/crimson-pro-300-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/crimson-pro-300-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/crimson-pro-300-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/crimson-pro-300-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/crimson-pro-300-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Crimson Pro';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/crimson-pro-300-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/jetbrains-mono-400-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/jetbrains-mono-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/jetbrains-mono-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/jetbrains-mono-400-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/jetbrains-mono-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/jetbrains-mono-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/work-sans-300-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/work-sans-300-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/work-sans-300-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/work-sans-300-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/work-sans-300-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/work-sans-300-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/work-sans-300-normal-vietnamese.woff2') format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/work-sans-300-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/work-sans-300-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* A8 STUDIO — PHÙ SA / ALLUVIUM
   Design system. Six values, one accent. Three faces, all carrying Vietnamese. */

:root{
  /* Bảng "Trầm ấm" — không thêm sắc, chỉ thêm chiều sâu.
     Giấy ngả kem · mực ngả nâu · nền tối là xanh rừng sâu, cùng gốc logo. */
  --bone:#F5F2E9; --paper:#ECE7DA; --silt:#D8D2C2;
  --river:#6E6A62; --slate:#494540; --ink:#1A1714; --deep:#14251B;
  --gold:#A8813F;               /* nhấn quý — dưới 1% diện tích */
  --brand:#2A7E40;              /* logo */

  --display:"Crimson Pro",Georgia,"Times New Roman",serif;
  --text:"Work Sans",-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --data:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;

  --max:1560px;
  --gut:clamp(18px,4vw,56px);
  --sec:clamp(64px,8vw,144px);
  --rule:1px solid rgba(26,23,20,.15);
  --ease:cubic-bezier(.22,.68,.24,1);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--bone);color:var(--ink);
  font-family:var(--text);font-weight:380;
  font-size:clamp(15px,.36vw + 14px,17px);line-height:1.65;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{display:block;max-width:100%;height:auto}
figure{margin:0}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}

/* ── language toggle ─────────────────────────────────────── */
[data-lang="vi"] .en{display:none}
[data-lang="en"] .vi{display:none}

/* ── layout ──────────────────────────────────────────────── */
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,1.6vw,26px)}
.section{padding-block:var(--sec)}
.rule{border:0;border-top:var(--rule);margin:0}

/* ── type ────────────────────────────────────────────────── */
.display{font-family:var(--display);font-weight:400;line-height:1.06;letter-spacing:-.015em}
h1.display{font-size:clamp(38px,6.4vw,92px)}
h2.display{font-size:clamp(28px,3.6vw,54px)}
h3.display{font-size:clamp(21px,1.9vw,30px)}
.lede{font-family:var(--display);font-size:clamp(20px,1.8vw,30px);line-height:1.38;font-weight:300;color:var(--slate)}
.body p{max-width:62ch;color:var(--slate)}
.meta{font-family:var(--data);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--river);font-weight:400}
.meta--gold{color:var(--ink)}
.eyebrow{font-family:var(--data);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--river);margin:0 0 clamp(18px,2vw,34px)}
.num{font-family:var(--data);font-size:11px;letter-spacing:.14em;color:var(--river)}

/* ── header ──────────────────────────────────────────────── */
.hdr{position:fixed;inset:0 0 auto;z-index:60;padding-block:22px;
  transition:padding .4s var(--ease),background .4s var(--ease),backdrop-filter .4s var(--ease)}
.hdr__in{display:flex;align-items:center;justify-content:space-between;gap:24px}
.hdr.is-stuck{padding-block:12px;background:rgba(245,242,233,.92);backdrop-filter:saturate(1.2) blur(10px);
  border-bottom:var(--rule)}
.hdr.is-over{color:var(--bone)}
.hdr.is-over .lang button{color:var(--bone)}
.hdr.is-over.is-stuck .lang button{color:var(--ink)}
.hdr.is-over .lang button.on{color:var(--bone)}
.hdr.is-over.is-stuck .lang button.on{color:var(--ink)}
.hdr.is-over.is-stuck{color:var(--ink)}
.brand{display:flex;align-items:center;gap:12px}
.brand__mark{display:block;width:38px;height:38px;transition:width .4s var(--ease),height .4s var(--ease)}
.brand__wm{font-family:var(--data);font-size:13px;letter-spacing:.26em;font-weight:500}
.hdr.is-stuck .brand__mark{width:32px;height:32px}
.hdr.is-over .brand__wm{color:var(--bone)}
.hdr.is-over.is-stuck .brand__wm{color:var(--ink)}
.hdr.nav-open .brand__wm{color:var(--ink)}
@media(max-width:760px){.brand__mark{width:34px;height:34px}.brand__wm{font-size:12px;letter-spacing:.22em}}
.ftr__logo{display:block;width:104px;height:104px}
.nav{display:flex;gap:clamp(18px,2.4vw,38px);align-items:center}
.nav a{font-family:var(--data);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  position:relative;padding-block:4px;opacity:.78;transition:opacity .3s}
.nav a:hover,.nav a[aria-current]{opacity:1}
.nav a[aria-current]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor}
.lang{display:flex;gap:6px;align-items:center;font-family:var(--data);font-size:11px;letter-spacing:.1em}
.lang button{background:none;border:0;cursor:pointer;padding:2px 3px;opacity:.45;transition:opacity .3s}
.lang button.on{opacity:1;color:var(--ink)}
.lang span{opacity:.3}
.nav__toggle{display:none;background:none;border:0;cursor:pointer;font-family:var(--data);font-size:11px;letter-spacing:.16em}

/* ── hero ────────────────────────────────────────────────── */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;background:var(--deep)}
.hero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.9}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,37,27,.60) 0%,rgba(20,37,27,.26) 14%,
    rgba(20,37,27,.08) 34%,rgba(20,37,27,.46) 70%,rgba(20,37,27,.82) 100%)}
.hero__in{position:relative;z-index:2;width:100%;padding-bottom:clamp(48px,7vw,104px);color:var(--bone)}
.hero h1{margin:0;max-width:16ch;color:var(--bone)}
.hero h1.long{font-size:clamp(29px,4.3vw,62px);max-width:21ch;line-height:1.12}
.hero__sub{margin:clamp(18px,2vw,30px) 0 0;max-width:44ch;color:rgba(244,241,234,.78);font-size:15px}
.hero__meta{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:clamp(20px,2.4vw,34px);color:rgba(244,241,234,.62)}
.scroll-cue{position:absolute;left:var(--gut);bottom:18px;z-index:2;color:rgba(244,241,234,.5)}

/* ── reveal ──────────────────────────────────────────────── */
.rv{opacity:0;transform:translateY(18px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* ── figures / blur-up ───────────────────────────────────── */
.fig{position:relative;overflow:hidden;background:var(--silt)}
.fig img{width:100%;transition:transform 1.2s var(--ease),filter .7s var(--ease),opacity .7s var(--ease)}
.fig img[data-lqip]{filter:blur(14px);transform:scale(1.04)}
.fig img.loaded{filter:none}
.fig figcaption{margin-top:10px}
a.fig-link{display:block}
a.fig-link .fig img{will-change:transform}
a.fig-link:hover .fig img{transform:scale(1.035)}

/* ── statement block ─────────────────────────────────────── */
.stmt,.stmt__k,.stmt__b{grid-column:1/-1}
@media(min-width:900px){
  .stmt__k{grid-column:1/4}
  .stmt__b{grid-column:5/12}
}

/* ── works index (editorial, not cards) ──────────────────── */
.works{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(26px,4vw,72px) clamp(14px,1.6vw,26px)}
.work{grid-column:1/-1}
.work__t{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-top:14px}
.work__t h3{margin:0}
.work__lead{margin:6px 0 0;max-width:52ch;color:var(--slate);font-size:15px}
@media(min-width:900px){
  .work.p0{grid-column:1/13}
  .work.p1{grid-column:1/8}
  .work.p2{grid-column:8/13;align-self:end}
  .work.p3{grid-column:4/13}
  .work.p4{grid-column:1/6}
  .work.p5{grid-column:7/13;align-self:end}
}
.work.p0 .fig{aspect-ratio:21/9}
.work.p1 .fig,.work.p3 .fig{aspect-ratio:16/10}
.work.p2 .fig,.work.p4 .fig,.work.p5 .fig{aspect-ratio:4/3}
.work .fig img{height:100%;object-fit:cover}

/* ── index list (all works) ──────────────────────────────── */
.idx{border-top:var(--rule)}
.idx__row{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,1.6vw,26px);
  padding-block:clamp(20px,2.4vw,34px);border-bottom:var(--rule);align-items:center}
.idx__n{grid-column:1/2}
.idx__t{grid-column:2/7}
.idx__l{grid-column:7/10}
.idx__y{grid-column:10/13;text-align:right}
.idx__row:hover{background:var(--paper)}

/* ── chapters (project detail) ───────────────────────────── */
.chap{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(20px,3vw,48px);
  align-items:center;margin-block:clamp(48px,7vw,120px)}
.chap__txt,.chap__img{grid-column:1/-1}
@media(min-width:900px){
  .chap__txt{grid-column:1/5}
  .chap__img{grid-column:6/13}
  .chap.flip .chap__txt{grid-column:9/13}
  .chap.flip .chap__img{grid-column:1/8;grid-row:1}
  .chap.full .chap__txt{grid-column:1/6}
  .chap.full .chap__img{grid-column:1/13;grid-row:2;margin-top:12px}
}
.chap__img img{width:100%;display:block}
.chap h3{margin:0 0 14px;font-family:var(--data);font-size:12px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--river);font-weight:500;line-height:1.5}
.chap p{margin:0;color:var(--slate)}

/* ── project gallery (all images) ────────────────────────── */
.gal{display:grid;grid-template-columns:1fr;gap:clamp(12px,1.6vw,22px)}
@media(min-width:640px){.gal{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.gal{grid-template-columns:1fr 1fr 1fr}}
.gal__i{position:relative;overflow:hidden;background:var(--silt);aspect-ratio:4/3}
.gal__i img{width:100%;height:100%;object-fit:cover;
  transition:filter .7s var(--ease),transform 1.1s var(--ease)}
.gal__i img[data-lqip]{filter:blur(14px);transform:scale(1.04)}
.gal__i img.loaded{filter:none}
.gal__i:hover img{transform:scale(1.03)}
@media(min-width:1100px){
  .gal__i:nth-child(7n+1){grid-column:span 2;aspect-ratio:16/9}
}

/* ── key information ─────────────────────────────────────── */
.keys{border-top:var(--rule)}
.keys__row{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;
  padding-block:14px;border-bottom:var(--rule)}
.keys__k{grid-column:1/4}
.keys__v{grid-column:4/13;color:var(--slate)}
.keys__v.pending{color:var(--river);font-style:italic}

/* ── next project ────────────────────────────────────────── */
.next{position:relative;display:block;overflow:hidden;background:var(--deep)}
.next img{width:100%;height:clamp(300px,46vh,560px);object-fit:cover;opacity:.72;
  transition:transform 1.4s var(--ease),opacity .6s}
.next:hover img{transform:scale(1.04);opacity:.62}
.next::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,37,27,.12) 40%,rgba(20,37,27,.78) 100%)}
.next__in{position:absolute;inset:auto 0 0;padding:var(--gut);color:var(--bone);z-index:2}

.sec--dark .eyebrow,.sec--dark .num,.sec--dark .meta--gold{color:#9C998F}
.sec--dark .shead{border-top-color:rgba(245,242,233,.22)}
.sec--dark .lede{color:rgba(244,241,234,.82)}
/* ── standard section header ─────────────────────────────── */
.shead{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,1.6vw,26px);
  align-items:baseline;border-top:var(--rule);padding-top:18px;
  margin-bottom:clamp(26px,3.2vw,52px)}
.shead__n{grid-column:1/3}
.shead__t{grid-column:1/-1;margin:6px 0 0;font-size:clamp(23px,2.2vw,34px)}
.shead__a{grid-column:1/-1;margin-top:4px}
@media(min-width:900px){
  .shead__n{grid-column:1/2}
  .shead__t{grid-column:2/8;margin:0}
  .shead__a{grid-column:8/13;margin:0;text-align:right}
}
section[id]{scroll-margin-top:88px}
.crumb{margin:0 0 clamp(14px,1.6vw,22px);color:rgba(244,241,234,.62)}
.crumb a{border-bottom:1px solid rgba(244,241,234,.3);padding-bottom:1px}
.crumb a:hover{color:var(--bone)}

/* ── full-bleed image band ───────────────────────────────── */
.band{position:relative;margin-block:clamp(48px,7vw,110px)}
.band__img{position:relative;overflow:hidden;background:var(--silt)}
.band__img img{width:100%;height:clamp(280px,52vh,620px);object-fit:cover;
  transition:filter .8s var(--ease),transform 1.2s var(--ease)}
.band__img img[data-lqip]{filter:blur(16px);transform:scale(1.04)}
.band__img img.loaded{filter:none}
.band figcaption{margin-top:11px}
.band--tall .band__img img{height:clamp(340px,68vh,760px)}

/* ── works: category sections + archive ──────────────────── */
.cat-head{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,1.6vw,26px);
  align-items:baseline;border-top:var(--rule);padding-top:18px;
  margin-bottom:clamp(24px,3vw,44px)}
.cat-head__n{grid-column:1/-1}
.cat-head__t{grid-column:1/-1}
.cat-head__b{grid-column:1/-1;color:var(--slate);margin:8px 0 0;font-size:15px;max-width:54ch}
@media(min-width:900px){
  .cat-head__n{grid-column:1/2}
  .cat-head__t{grid-column:2/6}
  .cat-head__b{grid-column:6/13;margin:0}
}
.cat-head__t h2{margin:0;font-size:clamp(23px,2.2vw,34px)}
.arch{border-top:var(--rule)}
.arch__row{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(10px,1.6vw,26px);
  padding-block:15px;border-bottom:var(--rule);align-items:baseline}
.arch__t{grid-column:1/6;font-family:var(--display);font-size:clamp(17px,1.3vw,21px)}
.arch__l{grid-column:6/9}
.arch__y{grid-column:9/13;text-align:right}
@media(max-width:760px){
  .arch__row{padding-block:13px}
  .arch__t{grid-column:1/-1}
  .arch__l{grid-column:1/7;margin-top:4px}
  .arch__y{grid-column:7/13;margin-top:4px;text-align:right}
}

/* ── contact detail list ─────────────────────────────────── */
.detail{border-top:var(--rule)}
.detail__row{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;
  padding-block:14px;border-bottom:var(--rule)}
.detail__k{grid-column:1/5}
.detail__v{grid-column:5/13;color:var(--slate)}
.detail__v.pending{color:var(--river);font-style:italic}
.checklist{list-style:none;margin:0;padding:0}
.checklist li{position:relative;padding-left:26px;margin-bottom:12px;color:var(--slate);max-width:52ch}
.checklist li::before{content:"";position:absolute;left:0;top:.68em;width:12px;height:1px;background:var(--brand)}

/* ── figures band (company overview) ─────────────────────── */
.figs{display:grid;grid-template-columns:repeat(12,1fr);gap:0;border-top:1px solid rgba(245,242,233,.18)}
.fig-cell{grid-column:span 6;padding:clamp(20px,2.4vw,32px) clamp(14px,1.8vw,28px) clamp(20px,2.4vw,32px) 0;
  border-bottom:1px solid rgba(245,242,233,.18)}
@media(min-width:760px){.fig-cell{grid-column:span 4}}
@media(min-width:1180px){.fig-cell{grid-column:span 2}}
.fig-cell .n{display:block;font-family:var(--display);font-weight:300;
  font-size:clamp(28px,3vw,46px);line-height:1;color:var(--bone)}
.fig-cell .n.sm{font-size:clamp(19px,1.7vw,26px);line-height:1.2;padding-block:calc((clamp(28px,3vw,46px) - clamp(19px,1.7vw,26px))/2)}
.fig-cell .k{display:block;margin-top:10px;font-family:var(--data);font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:rgba(244,241,234,.55);max-width:20ch}
.geo{display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:16px}
.geo span{font-family:var(--data);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  border:1px solid rgba(26,23,20,.22);padding:7px 12px;color:var(--slate)}

/* ── people ──────────────────────────────────────────────── */
.people{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(24px,3vw,44px)}
.person{grid-column:1/-1;border-top:var(--rule);padding-top:16px}
@media(min-width:760px){.person{grid-column:span 4}.person.lead{grid-column:span 4}}
.portrait{position:relative;overflow:hidden;background:#d8d5cd;aspect-ratio:4/5;margin-bottom:16px}
.portrait img{width:100%;height:100%;object-fit:cover;
  transition:filter .7s var(--ease),transform 1.2s var(--ease)}
.portrait img[data-lqip]{filter:blur(14px);transform:scale(1.04)}
.portrait img.loaded{filter:none}
.portrait--none{display:flex;align-items:flex-end;padding:14px}
.portrait--none span{font-family:var(--data);font-size:11px;letter-spacing:.16em;
  color:rgba(22,21,15,.42)}
.person h4{margin:0;font-family:var(--display);font-size:clamp(19px,1.5vw,26px);font-weight:400}
.person p{margin:10px 0 0;color:var(--slate);font-size:15px}
.person .meta{margin-top:5px;display:block}

/* ── board (leadership) ──────────────────────────────────── */
.board{display:grid;grid-template-columns:1fr;gap:clamp(20px,3vw,48px);align-items:start}
@media(min-width:820px){.board{grid-template-columns:minmax(240px,1fr) 2fr}}
.board__img .portrait{margin-bottom:0}
.board__b h3{margin:0;font-size:clamp(26px,2.6vw,40px)}
.board__b .meta{display:block;margin-top:8px}
.board__b p{color:var(--slate);max-width:64ch;margin:18px 0 0}
.bq{margin:22px 0 0;padding-left:18px;border-left:1px solid var(--ink);
  font-family:var(--display);font-size:clamp(17px,1.5vw,23px);line-height:1.45;color:var(--ink);max-width:52ch}

/* six-up people grid */
@media(min-width:760px){.people--six .person{grid-column:span 4}}
@media(min-width:1100px){.people--six .person{grid-column:span 2}}
.people--six .person h4{font-size:clamp(16px,1.15vw,19px)}
.people--six .person p{font-size:13.5px;line-height:1.55}
.people--six .person .meta{font-size:10px;letter-spacing:.1em;line-height:1.5}

/* ── numbered lists (principles / process / capabilities) ─ */
.cards{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(20px,2.6vw,40px)}
.card{grid-column:1/-1;border-top:var(--rule);padding-top:16px}
@media(min-width:760px){.card{grid-column:span 4}}
@media(min-width:1180px){.cards.c4 .card{grid-column:span 3}}
.card h4{margin:8px 0 8px;font-family:var(--display);font-weight:400;font-size:clamp(20px,1.6vw,27px)}
.card p{margin:0;color:var(--slate);font-size:15px}

/* ── form ────────────────────────────────────────────────── */
.form{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(16px,2vw,28px)}
.field{grid-column:1/-1;display:flex;flex-direction:column;gap:8px}
@media(min-width:760px){.field.half{grid-column:span 6}}
.field input,.field select,.field textarea{
  background:transparent;border:0;border-bottom:1px solid rgba(22,21,15,.28);
  padding:10px 0;font-size:16px;transition:border-color .3s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-bottom-color:var(--brand)}
.field textarea{resize:vertical;min-height:110px}
.btn{justify-self:start;grid-column:1/-1;background:var(--ink);color:var(--bone);border:0;
  padding:15px 34px;font-family:var(--data);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  cursor:pointer;transition:background .3s}
.btn:hover{background:var(--deep)}
.note{font-size:13px;color:var(--river);grid-column:1/-1}

/* ── footer ──────────────────────────────────────────────── */
.ftr{background:var(--deep);color:var(--bone);padding-block:clamp(52px,6vw,92px) 30px}
.ftr a:hover{color:var(--bone)}
.ftr .meta{color:rgba(244,241,234,.5)}
.ftr__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(28px,3.4vw,48px) clamp(14px,1.6vw,26px)}
.ftr__c{grid-column:1/-1}
.ftr__line{margin:9px 0 0;font-size:15px}
.ftr .logo--mark{color:var(--bone)}
@media(min-width:760px){
  .ftr__c--brand{grid-column:1/7}
  .ftr__c--nav{grid-column:7/10}
  .ftr__c--reach{grid-column:10/13}
}
@media(min-width:900px){
  .ftr__c--brand{grid-column:1/6}
  .ftr__c--nav{grid-column:7/10}
  .ftr__c--reach{grid-column:10/13}
}
.ftr__bot{display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:space-between;
  margin-top:clamp(40px,5vw,72px);padding-top:20px;border-top:1px solid rgba(245,242,233,.18)}

/* ── mobile ──────────────────────────────────────────────── */
@media(max-width:760px){
  .nav{position:fixed;top:0;left:0;right:0;height:100svh;background:var(--bone);color:var(--ink);
    flex-direction:column;justify-content:center;align-items:flex-start;
    padding-inline:var(--gut);gap:26px;
    opacity:0;visibility:hidden;pointer-events:none;
    transform:translateY(-14px);
    transition:opacity .45s var(--ease),transform .55s var(--ease),visibility .45s;z-index:70}
  .nav.open{opacity:1;visibility:visible;pointer-events:auto;transform:none}
  .nav a{font-family:var(--display);font-size:30px;letter-spacing:0;text-transform:none;opacity:1}
  .nav a[aria-current]::after{display:none}
  .brand{position:relative;z-index:80}
  .hdr.nav-open,.hdr.nav-open .brand,.hdr.nav-open .nav__toggle{color:var(--ink)}
  .hdr.is-over .nav{color:var(--ink)}
  .hdr.is-over .nav .lang button{color:var(--ink)}
  .nav .lang{margin-top:14px;font-size:12px}
  .nav__toggle{display:block;z-index:80}
  .hero{min-height:88svh}
  .idx__t{grid-column:2/13}
  .idx__l{grid-column:2/10;margin-top:4px}
  .idx__y{grid-column:10/13}
  .keys__k{grid-column:1/6}
  .keys__v{grid-column:6/13}
  .chap.full .chap__img{margin-top:20px}
}

/* ══════════════════════════════════════════════════════════
   PROJECT PAGE — editorial structure
   hero ▸ title ▸ meta ▸ image ▸ quote ▸ image ▸ captioned
   sequence ▸ images ▸ drawings ▸ images ▸ credits ▸ next
   ═══════════════════════════════════════════════════════ */
.pj-hero{width:100%;background:var(--silt);overflow:hidden}
.pj-hero img{width:100%;height:clamp(360px,86vh,940px);object-fit:cover;display:block;
  transition:filter .8s var(--ease)}
.pj-hero img[data-lqip]{filter:blur(16px)}
.pj-hero img.loaded{filter:none}

.pj-head{padding-block:clamp(30px,4.4vw,64px) clamp(20px,2.4vw,34px)}
.pj-head h1{font-family:var(--display);font-weight:400;margin:0;
  font-size:clamp(34px,5.6vw,86px);line-height:1.02;letter-spacing:-.018em}
.pj-head .loc{margin:clamp(10px,1.2vw,18px) 0 0;font-size:clamp(15px,1.15vw,19px);color:var(--slate)}

.pj-meta{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,34px);
  border-top:var(--rule);padding-top:clamp(18px,2.2vw,30px);
  padding-bottom:clamp(34px,5vw,80px)}
@media(min-width:760px){.pj-meta{grid-template-columns:repeat(4,1fr)}}
.pj-meta dt{font-family:var(--data);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--river);margin:0}
.pj-meta dd{margin:9px 0 0;font-size:15px;line-height:1.5}
.pj-meta dd.pending{color:var(--river);font-style:italic}

.pj-img{margin-block:clamp(30px,4.4vw,72px);background:var(--silt);overflow:hidden}
.pj-img img{width:100%;display:block;transition:filter .8s var(--ease)}
.pj-img img[data-lqip]{filter:blur(16px)}
.pj-img img.loaded{filter:none}
.pj-img--bleed{margin-inline:calc(var(--gut) * -1)}

.pj-quote{padding-block:clamp(40px,6vw,104px);margin:0}
.pj-quote p{font-family:var(--display);font-weight:300;margin:0;
  font-size:clamp(23px,3.1vw,46px);line-height:1.22;letter-spacing:-.012em;
  max-width:19ch}
@media(min-width:900px){.pj-quote p{max-width:17ch}}
.pj-quote .by{display:block;margin-top:clamp(18px,2vw,30px);
  font-family:var(--data);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--river)}


/* captioned sequence — the narrative carrier */
.car{margin-block:clamp(34px,5vw,86px)}
.car__track{display:flex;gap:clamp(14px,2vw,30px);overflow-x:auto;
  scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.car__track::-webkit-scrollbar{display:none}
.car__s{flex:0 0 100%;scroll-snap-align:start;min-width:0}
@media(min-width:1000px){.car__s{flex-basis:calc(50% - clamp(7px,1vw,15px))}}
.car__s figure{margin:0}
.car__im{background:var(--silt);overflow:hidden;aspect-ratio:16/10}
.car__im img{width:100%;height:100%;object-fit:cover;display:block;transition:filter .8s var(--ease)}
.car__im img[data-lqip]{filter:blur(14px)}
.car__im img.loaded{filter:none}
.car__cap{margin:14px 0 0;font-size:14.5px;line-height:1.6;color:var(--slate);max-width:56ch}
.car__cap b{color:var(--ink);font-weight:500;letter-spacing:.05em}
.car__bar{display:flex;align-items:center;gap:16px;margin-top:clamp(16px,2vw,26px);
  border-top:var(--rule);padding-top:14px}
.car__count{font-family:var(--data);font-size:10.5px;letter-spacing:.14em;color:var(--river)}
.car__nav{margin-left:auto;display:flex;gap:8px}
.car__nav button{background:none;border:1px solid rgba(26,23,20,.24);cursor:pointer;
  width:38px;height:38px;font-size:14px;color:var(--ink);transition:background .3s,border-color .3s}
.car__nav button:hover{background:var(--ink);color:var(--bone);border-color:var(--ink)}
.car__nav button[disabled]{opacity:.3;cursor:default}
.car__nav button[disabled]:hover{background:none;color:var(--ink);border-color:rgba(26,23,20,.24)}

/* drawings — plain uppercase labels, light ground */
.dwg .car__im{background:#fff;aspect-ratio:16/10}
.dwg .car__im img{object-fit:contain}
.dwg .car__cap{font-family:var(--data);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink)}
.dwg-wait{border:1px dashed rgba(26,23,20,.28);padding:clamp(26px,4vw,56px);text-align:center}
.dwg-wait p{margin:0;color:var(--river);max-width:52ch;margin-inline:auto;font-size:14.5px}
.dwg-wait .mono{font-family:var(--data);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink);display:block;margin-bottom:12px}

/* credits */
.cred{display:grid;grid-template-columns:1fr;gap:clamp(20px,2.6vw,40px);
  border-top:var(--rule);padding-top:clamp(24px,3vw,44px)}
@media(min-width:700px){.cred{grid-template-columns:1fr 1fr}}
@media(min-width:1080px){.cred{grid-template-columns:repeat(3,1fr)}}
.cred__g h4{margin:0 0 10px;font-family:var(--data);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--river);font-weight:400}
.cred__g p{margin:0 0 5px;font-size:15px}
.cred__g p.pending{color:var(--river);font-style:italic}

/* ── image slots sized to the files behind them ────────────
   hero 2600px → full bleed · gallery 2000px → paired ≤660 CSS
   thumb 1400px → small cards only. Never stretch past source. */
.pj-pair{display:grid;grid-template-columns:1fr;gap:clamp(12px,1.6vw,24px);
  margin-block:clamp(30px,4.4vw,72px)}
@media(min-width:760px){.pj-pair{grid-template-columns:1fr 1fr}}
.pj-pair figure{margin:0;background:var(--silt);overflow:hidden;aspect-ratio:4/3}
.pj-pair img{width:100%;height:100%;object-fit:cover;display:block;transition:filter .8s var(--ease)}
.pj-pair img[data-lqip]{filter:blur(14px)}
.pj-pair img.loaded{filter:none}
/* one image alone, offset — asymmetry without over-scaling */
.pj-solo{margin-block:clamp(30px,4.4vw,72px);max-width:1000px}
.pj-solo--right{margin-left:auto}
.pj-solo figure{margin:0;background:var(--silt);overflow:hidden}
.pj-solo img{width:100%;display:block;transition:filter .8s var(--ease)}
.pj-solo img[data-lqip]{filter:blur(14px)}
.pj-solo img.loaded{filter:none}

/* ══ HOME = project grid. No hero, no prose. Projects first. ══ */
.page-top{padding-top:clamp(96px,11vw,150px)}
.filters{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:baseline;
  border-bottom:var(--rule);padding-bottom:16px;margin-bottom:clamp(24px,3vw,44px)}
.filters button{background:none;border:0;cursor:pointer;padding:0;
  font-family:var(--data);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--river);transition:color .25s}
.filters button:hover{color:var(--ink)}
.filters button.on{color:var(--ink)}
.filters button.on::before{content:"";display:inline-block;width:9px;height:1px;
  background:var(--ink);vertical-align:middle;margin-right:7px}
.filters .lbl{font-family:var(--data);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink);margin-right:6px}

.pgrid{display:grid;grid-template-columns:1fr;gap:clamp(26px,3vw,46px) clamp(14px,1.8vw,28px)}
@media(min-width:640px){.pgrid{grid-template-columns:1fr 1fr}}
@media(min-width:1080px){.pgrid{grid-template-columns:repeat(3,1fr)}}
.pcard{display:block}
.pcard__im{background:var(--silt);overflow:hidden;aspect-ratio:4/3}
.pcard__im img{width:100%;height:100%;object-fit:cover;display:block;
  transition:filter .7s var(--ease),transform 1.1s var(--ease)}
.pcard__im img[data-lqip]{filter:blur(14px)}
.pcard__im img.loaded{filter:none}
.pcard:hover .pcard__im img{transform:scale(1.03)}
.pcard h3{font-family:var(--display);font-weight:400;font-size:clamp(18px,1.4vw,23px);
  margin:14px 0 0;line-height:1.2}
.pcard .loc{margin:5px 0 0;font-size:14px;color:var(--river)}
.pcard[hidden]{display:none}

/* people page */
.lead-card{display:grid;grid-template-columns:1fr;gap:clamp(22px,3vw,52px);align-items:end;
  padding-bottom:clamp(34px,4.4vw,70px);border-bottom:var(--rule)}
@media(min-width:860px){.lead-card{grid-template-columns:minmax(0,1fr) 1.25fr}}
.lead-card .portrait{margin:0}
.lead-card h2{font-family:var(--display);font-weight:400;margin:0;
  font-size:clamp(28px,3.4vw,50px);line-height:1.05}
.lead-card .role{display:block;margin-top:10px;font-family:var(--data);font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--river)}
.lead-card blockquote{margin:clamp(22px,2.6vw,40px) 0 0;padding-left:20px;
  border-left:1px solid var(--ink);font-family:var(--display);font-weight:300;
  font-size:clamp(19px,1.9vw,28px);line-height:1.3;max-width:26ch}
.roster{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,38px);
  margin-top:clamp(34px,4.4vw,70px)}
@media(min-width:760px){.roster{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1180px){.roster{grid-template-columns:repeat(6,1fr)}}
.roster .portrait{margin-bottom:12px}
.roster h4{font-family:var(--display);font-weight:400;font-size:16px;margin:0;line-height:1.25}
.roster .role{display:block;margin-top:5px;font-family:var(--data);font-size:9.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--river);line-height:1.5}

/* section lead sits under its own title, not adrift in the middle */
.slead{grid-column:1/-1;margin:0 0 clamp(22px,2.8vw,40px);max-width:58ch}
@media(min-width:900px){.slead{grid-column:2/9}}

/* ══ Rõ nghĩa: dãy bước ≠ tập hợp hạng mục ══════════════════
   Trước đây cả hai đều là "số nhỏ + tiêu đề", nên 09/04/04/02
   (số lượng dự án) trông y hệt 01/02/03 (thứ tự bước). */

/* DÃY BƯỚC — hàng ngang, số dẫn đầu, đọc từ trên xuống */
.steps{border-top:var(--rule)}
.steps__r{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;
  padding-block:clamp(16px,2vw,26px);border-bottom:var(--rule);align-items:baseline}
@media(min-width:820px){
  .steps__r{grid-template-columns:44px minmax(180px,1.1fr) 2fr;gap:0 clamp(20px,3vw,54px)}
}
.steps__n{font-family:var(--data);font-size:11px;letter-spacing:.14em;color:var(--river)}
.steps__t{font-family:var(--display);font-weight:400;font-size:clamp(18px,1.5vw,24px);line-height:1.25}
.steps__b{margin:0;color:var(--slate);font-size:14.5px;max-width:54ch;grid-column:2/-1}
@media(min-width:820px){.steps__b{grid-column:3/4}}

/* TẬP HỢP HẠNG MỤC — không đánh số; số lượng đi cùng tiêu đề */
.set{display:grid;grid-template-columns:1fr;gap:clamp(20px,2.6vw,40px)}
@media(min-width:700px){.set{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}}
@media(min-width:1080px){.set{grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}}
.set__i{border-top:var(--rule);padding-top:16px}
.set__h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.set__h h4{margin:0;font-family:var(--display);font-weight:400;
  font-size:clamp(19px,1.6vw,25px);line-height:1.2}
.set__c{font-family:var(--data);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--river);white-space:nowrap}
.set__i p{margin:10px 0 0;color:var(--slate);font-size:14.5px}

/* đoạn dẫn của mục: canh trái cùng nội dung bên dưới */
.slead{grid-column:1/-1;margin:0 0 clamp(22px,2.8vw,40px);max-width:58ch}
@media(min-width:900px){.slead{grid-column:1/8}}

/* ══ TRANG CHỦ — hero toàn màn hình, slogan, lời studio ══════ */
.hhero{position:relative;width:100%;height:clamp(420px,92vh,1000px);
  background:var(--deep);overflow:hidden}
.hhero>img{width:100%;height:100%;object-fit:cover;display:block}
.hhero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,37,27,.44) 0%,rgba(20,37,27,.05) 28%,
    rgba(20,37,27,.30) 52%,rgba(20,37,27,.64) 76%,rgba(20,37,27,.88) 100%)}
.hhero__in{position:absolute;inset:auto 0 0;z-index:2;padding-bottom:clamp(34px,5vw,76px);
  color:var(--bone)}
.hhero__meta{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0 0 clamp(16px,2vw,26px);
  font-family:var(--data);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(245,242,233,.72)}
.hhero h1{font-family:var(--display);font-weight:400;color:var(--bone);margin:0;
  font-size:clamp(27px,4.1vw,60px);line-height:1.1;letter-spacing:-.014em;max-width:21ch}
.hhero__cap{margin:clamp(18px,2.2vw,30px) 0 0;font-family:var(--data);font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:rgba(245,242,233,.6)}

.hstate{padding-block:clamp(52px,7vw,116px)}
.hstate__g{display:grid;grid-template-columns:1fr;gap:clamp(20px,3vw,48px)}
@media(min-width:900px){.hstate__g{grid-template-columns:minmax(0,1fr) 2fr}}
.hstate__k{font-family:var(--data);font-size:10.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--river);margin:0}
.hstate p{margin:0 0 1.15em;color:var(--slate);max-width:64ch}
.hstate p:first-of-type{font-family:var(--display);font-weight:300;color:var(--ink);
  font-size:clamp(19px,1.85vw,27px);line-height:1.4}
.hstate p:last-of-type{margin-bottom:0}

/* dự án chưa có thuyết minh: nói thẳng, không bịa nội dung */
.pj-note{margin:clamp(34px,5vw,80px) 0;max-width:56ch;color:var(--slate);font-size:15.5px}
.pj-note .mono{display:block;font-family:var(--data);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink);margin-bottom:12px}

/* ── ba dự án tuyển chọn trên trang chủ — khổ lớn, lệch trục ── */
.feats{display:grid;grid-template-columns:1fr;gap:clamp(34px,4.6vw,80px)}
.feat{display:grid;grid-template-columns:1fr;gap:clamp(14px,2vw,34px);align-items:end}
@media(min-width:900px){
  .feat{grid-template-columns:1.9fr 1fr}
  .feat:nth-child(even){grid-template-columns:1fr 1.9fr}
  .feat:nth-child(even) .feat__im{order:2}
  .feat:nth-child(even) .feat__b{order:1}
}
.feat__im{margin:0;background:var(--silt);overflow:hidden;aspect-ratio:16/10}
.feat__im img{width:100%;height:100%;object-fit:cover;display:block;
  transition:filter .8s var(--ease),transform 1.2s var(--ease)}
.feat__im img[data-lqip]{filter:blur(14px)}
.feat__im img.loaded{filter:none}
.feat:hover .feat__im img{transform:scale(1.03)}
.feat__b h3{font-family:var(--display);font-weight:400;margin:8px 0 0;
  font-size:clamp(22px,2.1vw,32px);line-height:1.15}
.feat__m{margin:8px 0 0;font-family:var(--data);font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--river)}
.feat__l{margin:14px 0 0;color:var(--slate);font-size:14.5px;max-width:44ch}

/* Liên hệ — bảng thay cho gạch đầu dòng */
.brief{border-top:var(--rule)}
.brief__r{display:grid;grid-template-columns:1fr;gap:4px;padding-block:clamp(15px,1.9vw,24px);
  border-bottom:var(--rule)}
@media(min-width:760px){
  .brief__r{grid-template-columns:minmax(190px,1fr) 2.2fr;gap:0 clamp(24px,4vw,64px);align-items:baseline}
}
.brief__k{font-family:var(--display);font-weight:400;font-size:clamp(17px,1.4vw,22px);line-height:1.3}
.brief__v{margin:0;color:var(--slate);font-size:14.5px;max-width:56ch}
.form{margin-top:clamp(6px,1vw,14px)}

/* ── Đội ngũ: lưới khảm, một khối lớn bên trái ─────────────── */
.pmosaic{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.4vw,20px);
  margin-top:clamp(22px,3vw,44px)}
@media(min-width:760px){.pmosaic{grid-template-columns:repeat(4,1fr)}}
.pcell .portrait{margin:0;aspect-ratio:1/1}
.pcell__t{padding-top:12px}
.pcell__t h4{margin:0;font-family:var(--display);font-weight:400;
  font-size:clamp(15px,1.2vw,19px);line-height:1.25}
.pcell__t .role{display:block;margin-top:5px;font-family:var(--data);font-size:9.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--river);line-height:1.55}
@media(min-width:760px){
  .pcell--lead{grid-row:span 2}
  .pcell--lead .portrait{aspect-ratio:auto;height:calc(100% - 62px);min-height:300px}
  .pcell--lead .pcell__t h4{font-size:clamp(20px,1.7vw,27px)}
  .pcell--lead .pcell__t .role{font-size:10.5px}
}

/* ── Hệ đánh số: mục lớn dùng serif to, bước nhỏ dùng mono ── */
.shead__n{font-family:var(--display)!important;font-weight:300;font-size:clamp(20px,1.9vw,30px);
  color:var(--gold);letter-spacing:0;line-height:1;text-transform:none}
@media(min-width:900px){.shead__t{margin-left:0}}
.shead--page{grid-template-columns:1fr auto;align-items:baseline}
.shead--page .shead__t{grid-column:1;font-size:clamp(28px,3.4vw,48px)}
.shead--page .shead__a{grid-column:2;text-align:right;margin:0}

/* ── bìa trang chủ: video, ảnh là lớp dự phòng ─────────────── */
.hhero__v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.hhero__p{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:0}
.hhero img.hhero__p{height:100%}
@media (prefers-reduced-motion:reduce){.hhero__v{display:none}}

/* ── Nguyên tắc thiết kế: từ khoá tiếng Anh dẫn, tiêu đề, diễn giải ── */
.prin{border-top:var(--rule)}
.prin__i{display:grid;grid-template-columns:1fr;gap:4px 0;
  padding-block:clamp(20px,2.6vw,34px);border-bottom:var(--rule)}
@media(min-width:900px){
  .prin__i{grid-template-columns:minmax(190px,1fr) minmax(220px,1.1fr) 2fr;
    gap:0 clamp(24px,3.4vw,60px);align-items:baseline}
}
.prin__k{font-family:var(--data);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--river);line-height:1.6}
.prin__i h4{margin:0;font-family:var(--display);font-weight:400;
  font-size:clamp(19px,1.6vw,25px);line-height:1.22}
.prin__i p{margin:0;color:var(--slate);font-size:14.5px;max-width:56ch}
@media(max-width:899px){
  .prin__i h4{margin-top:6px}
  .prin__i p{margin-top:8px}
}

/* ── Đầu trang trên ảnh: dải mờ riêng để chữ luôn đọc được ── */
.hdr.is-over::before{content:"";position:absolute;inset:0 0 auto;height:230%;
  background:linear-gradient(180deg,rgba(12,22,16,.90) 0%,rgba(12,22,16,.72) 34%,
    rgba(12,22,16,.36) 66%,rgba(12,22,16,0) 100%);pointer-events:none;z-index:-1}
.hdr.is-over.is-stuck::before{display:none}
/* bóng chữ mảnh: vô hình trên nền tối, cứu chữ trên nền sáng */
.hdr.is-over .brand__wm,
.hdr.is-over .nav a,
.hdr.is-over .lang button,
.hdr.is-over .nav__toggle{text-shadow:0 1px 10px rgba(20,37,27,.55),0 0 2px rgba(20,37,27,.35)}
.hdr.is-over.is-stuck .brand__wm,
.hdr.is-over.is-stuck .nav a,
.hdr.is-over.is-stuck .lang button,
.hdr.is-over.is-stuck .nav__toggle{text-shadow:none}

/* ── Ký hiệu nét: ngôn ngữ bản vẽ, không phải icon giao diện ── */
.mk{width:50px;height:50px;display:block;color:var(--ink);opacity:1;flex:0 0 50px}

/* dãy bước có ký hiệu — giữ nguyên layout ngang */
/* màn hình hẹp: tiêu đề một dòng, mô tả xuống dòng — mọi dòng cùng lề trái */
.steps--mk .steps__r{grid-template-columns:1fr;gap:7px 0}
.steps--mk .steps__t{font-size:clamp(17px,4.4vw,21px)}
.steps--mk .steps__b{grid-column:1/-1}
.steps--mk .steps__r .mk{display:none}
@media(min-width:820px){
  .steps--mk .steps__r{grid-template-columns:50px minmax(190px,1.05fr) 2fr;
    gap:0 clamp(20px,3vw,52px);align-items:center}
  .steps--mk .steps__r .mk{display:block}
  .steps--mk .steps__b{grid-column:3/4}
}

/* bảng "gửi gì" có ký hiệu */
.brief__r .mk{display:none}
@media(min-width:760px){
  .brief__r{grid-template-columns:50px minmax(170px,1fr) 2.2fr;
    gap:0 clamp(20px,3vw,48px);align-items:center}
  .brief__r .mk{display:block}
}

/* thẻ nguyên tắc: ký hiệu đặt trên tiêu đề */
.set__i .mk{margin-bottom:16px;opacity:1}

/* ── Vành Phạm vi công việc: hiện ở khổ rộng, danh sách ở khổ hẹp ── */
.ring{display:none}
.steps-fallback{display:block}
@media(min-width:900px){
  .ring{display:block;max-width:660px;margin:clamp(20px,3vw,44px) auto 0}
  .ring__svg{width:100%;height:auto;display:block}
  .steps-fallback{display:none}
}
