@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-latin-ext-wght-normal.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}
/* ============================================================
   MONSERRO — Independent media company
   Editorial static site · shared stylesheet
   ============================================================ */

/* ---------- Tokens ---------- */
:root{
  --paper:#EDEBE4;      /* warm bone */
  --ink:#0B0B0B;        /* near black */
  --muted:#8B8578;      /* warm grey */
  --line:#CFC9BC;       /* hairline on paper */
  --signal:#F03A17;     /* ember — used sparingly */

  /* role tokens (flipped inside .invert) */
  --bg:var(--paper);
  --fg:var(--ink);
  --hair:var(--line);
  --dim:var(--muted);

  --maxw:1600px;
  --pad:clamp(18px,4.4vw,72px);
  --grain:.05;

  --serif:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;
  --sans:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:"SFMono-Regular",ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;
}
.invert{
  --bg:#0B0B0B;
  --fg:#EDEBE4;
  --hair:#2A2A28;
  --dim:#8F897E;
  --grain:.08;
  background:var(--bg);
  color:var(--fg);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
::selection{background:var(--signal);color:#fff}

/* ---------- Utilities ---------- */
.container{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.section{background:var(--bg);color:var(--fg);position:relative}
.pad-y{padding-top:clamp(56px,10vh,140px);padding-bottom:clamp(56px,10vh,140px)}
.serif{font-family:var(--serif)}
.mono{font-family:var(--mono)}
.kicker{font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim);font-weight:500}
.reg{font-family:var(--sans);vertical-align:super;font-size:.32em;letter-spacing:0;color:var(--signal)}
.hr{height:1px;background:var(--hair);border:0;width:100%}
/* Reveals are progressive enhancement: hidden state only applies once JS
   adds .reveal-ready to <html>. If JS fails, all content stays visible. */
html.reveal-ready .reveal{opacity:0;transform:translateY(26px);transition:opacity 1s cubic-bezier(.22,1,.36,1),transform 1s cubic-bezier(.22,1,.36,1)}
html.reveal-ready .reveal.is-in{opacity:1;transform:none}

/* Blocks the editor has marked as deleted (applied server-side on public pages) */
.mns-hidden{display:none !important}

/* ---------- Grain overlay ---------- */
.grain{position:relative}
.grain::after{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:2;mix-blend-mode:overlay;opacity:var(--grain);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- Cinematic plates (image placeholders) ----------
   Replace .plate blocks with <img>/<video> later; keep the
   .plate wrapper for aspect-ratio + grain. See README. */
.plate{position:relative;overflow:hidden;background:#111;isolation:isolate}
.plate .fill{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.02);transition:transform 1.6s cubic-bezier(.22,1,.36,1);filter:grayscale(1) contrast(1.05)}
/* Uploaded photos (editor) fill their slot with a cinematic B&W treatment */
.plate img.fill,.hero .bg img.fill{object-fit:cover;width:100%;height:100%}
.plate .vig{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,0) 45%,rgba(0,0,0,.5))}
.plate .plabel{position:absolute;left:16px;bottom:14px;z-index:3;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:rgba(237,235,228,.72)}
.plate--a .fill{background:radial-gradient(120% 120% at 68% 22%,#5a5a5a 0%,#2b2b2b 42%,#0c0c0c 100%)}
.plate--b .fill{background:linear-gradient(155deg,#4c4c4c 0%,#232323 46%,#0a0a0a 100%)}
.plate--c .fill{background:linear-gradient(200deg,#606060 0%,#2e2e2e 40%,#101010 100%)}
.plate--d .fill{background:radial-gradient(130% 100% at 30% 80%,#565656 0%,#262626 46%,#0b0b0b 100%)}
.plate--e .fill{background:linear-gradient(120deg,#3f3f3f 0%,#1a1a1a 60%,#050505 100%)}
.plate--f .fill{background:radial-gradient(100% 120% at 75% 15%,#6a6a6a 0%,#333 40%,#0d0d0d 100%)}
a.hoverplate:hover .fill,.hoverplate:hover .fill{transform:scale(1.06)}

/* ============================================================
   HEADER / NAV
   ============================================================ */
.site-head{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 var(--pad);height:66px;
  color:var(--fg);
  transition:background .5s ease,color .5s ease,border-color .5s ease;
  border-bottom:1px solid transparent;mix-blend-mode:difference;
}
/* mix-blend-mode difference makes the bar legible over light or dark;
   its own color is bone so it inverts against content. */
.site-head, .site-head a, .site-head button{color:#EDEBE4}
.site-head.solid{mix-blend-mode:normal;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-color:var(--line)}
.site-head.solid, .site-head.solid a, .site-head.solid button{color:var(--ink)}
.wordmark{font-family:var(--sans);font-weight:700;font-size:18px;letter-spacing:.02em}
.wordmark .reg{color:var(--signal)}
.mainnav{display:flex;gap:clamp(14px,2vw,34px);align-items:center}
.mainnav a{font-size:12px;letter-spacing:.16em;font-weight:500;opacity:.85;transition:opacity .25s;position:relative;padding:4px 0}
.mainnav a:hover{opacity:1}
.mainnav a.is-current{opacity:1}
.mainnav a.is-current::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1.5px;background:var(--signal)}
.mainnav a.ext{opacity:.85}
.menu-toggle{display:none;background:none;border:1px solid currentColor;border-radius:2px;font-size:11px;letter-spacing:.16em;padding:7px 12px;cursor:pointer;font-family:var(--sans)}

/* Mobile menu overlay */
.mobile-menu{
  position:fixed;inset:0;z-index:99;background:#0B0B0B;color:#EDEBE4;
  display:flex;flex-direction:column;justify-content:center;gap:6px;padding:var(--pad);
  transform:translateY(-100%);transition:transform .6s cubic-bezier(.76,0,.24,1);
}
.mobile-menu.open{transform:none}
.mobile-menu a{font-family:var(--serif);font-size:clamp(34px,11vw,68px);line-height:1.06;letter-spacing:-.01em}
.mobile-menu a .i{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--signal);vertical-align:super;margin-right:12px}
.mobile-menu .mm-foot{margin-top:auto;display:flex;gap:22px;font-family:var(--sans);font-size:12px;letter-spacing:.16em;color:#8F897E}
.mm-close{position:absolute;top:22px;right:var(--pad);background:none;border:0;color:#EDEBE4;font-size:12px;letter-spacing:.16em;cursor:pointer;font-family:var(--sans)}
@media(max-width:860px){
  .mainnav{display:none}
  .menu-toggle{display:inline-block}
}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;height:100svh;min-height:600px;color:#EDEBE4;overflow:hidden}
.hero .bg{position:absolute;inset:0;z-index:0}
.hero .bg .fill{position:absolute;inset:0;background:radial-gradient(130% 110% at 60% 30%,#4a4a4a 0%,#202020 44%,#070707 100%);filter:grayscale(1);animation:heroZoom 30s ease-in-out infinite alternate}
@keyframes heroZoom{from{transform:scale(1.04)}to{transform:scale(1.18) translate3d(-2%,-2%,0)}}
.hero .scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.05) 40%,rgba(0,0,0,.55))}
.hero-inner{position:relative;z-index:3;height:100%;display:flex;flex-direction:column;justify-content:center;padding:0 var(--pad);max-width:var(--maxw);margin:0 auto}
.hero .word{font-family:var(--sans);font-weight:700;letter-spacing:-.02em;line-height:.9;font-size:clamp(58px,17vw,290px)}
.hero .word .reg{font-size:.16em;vertical-align:super;color:var(--signal)}
.hero .micro{margin-top:clamp(18px,3vh,34px);font-family:var(--sans);font-size:clamp(13px,1.4vw,17px);letter-spacing:.04em;color:rgba(237,235,228,.9);line-height:1.7}
.hero .micro b{font-weight:600}
.hero-bottom{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:0 var(--pad) 20px;max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;align-items:flex-end;gap:20px}
.hero-bottom .exists{font-family:var(--serif);font-style:italic;font-style:italic;font-size:clamp(15px,1.6vw,20px);color:rgba(237,235,228,.85)}
.hero .scrolldot{display:flex;align-items:center;gap:10px;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(237,235,228,.75)}
.hero .scrolldot .d{width:6px;height:6px;border-radius:50%;background:var(--signal);animation:pulse 2.4s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.6)}}

/* Category ticker */
.ticker{border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);overflow:hidden;white-space:nowrap;background:var(--bg);color:var(--fg)}
.ticker-track{display:inline-flex;gap:0;padding:14px 0;animation:tick 34s linear infinite;will-change:transform}
.ticker-track span{font-family:var(--sans);font-size:13px;letter-spacing:.22em;text-transform:uppercase;padding:0 26px;color:var(--fg)}
.ticker-track span i{color:var(--signal);font-style:normal;margin-left:26px}
@keyframes tick{to{transform:translateX(-50%)}}

/* ============================================================
   SECTION HEADER (shared)
   ============================================================ */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-bottom:clamp(24px,4vh,44px);border-bottom:1px solid var(--hair)}
.sec-head h2{font-family:var(--serif);font-weight:400;font-size:clamp(28px,4.4vw,60px);letter-spacing:-.01em;line-height:.98}
.sec-head .rt{font-family:var(--sans);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);text-align:right}

/* ============================================================
   THE FRONT PAGE
   ============================================================ */
.frontpage .fp-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(20px,2.4vw,40px);margin-top:clamp(30px,5vh,60px)}
.entry{grid-column:span 4;display:flex;flex-direction:column;border-top:1px solid var(--hair);padding-top:16px}
.entry.lead{grid-column:span 8;grid-row:span 2}
.entry.wide{grid-column:span 8}
.entry .emeta{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.entry .emeta .cat{color:var(--fg)}
.entry .emeta .num{color:var(--signal)}
.entry .eplate{margin:16px 0;border-radius:2px}
.entry.lead .eplate{aspect-ratio:16/9}
.entry .eplate{aspect-ratio:4/3}
.entry h3{font-family:var(--serif);font-weight:400;letter-spacing:-.01em;line-height:1.05;font-size:clamp(20px,2vw,28px);transition:color .3s}
.entry.lead h3{font-size:clamp(30px,4.6vw,68px);line-height:1.0}
.entry .foot{margin-top:12px;font-family:var(--sans);font-size:12px;letter-spacing:.06em;color:var(--dim)}
.entry:hover h3{color:var(--signal)}
.entry.textonly{padding-bottom:18px}
@media(max-width:1000px){
  .entry{grid-column:span 6}
  .entry.lead,.entry.wide{grid-column:span 12}
}
@media(max-width:620px){
  .entry,.entry.lead,.entry.wide{grid-column:span 12}
  .entry.lead h3{font-size:clamp(28px,9vw,40px)}
}

/* ============================================================
   SELECTED WORK
   ============================================================ */
.work-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(20px,2.4vw,44px);margin-top:clamp(30px,5vh,60px)}
.wk{grid-column:span 6;display:block}
.wk.tall{grid-column:span 6}
.wk.full{grid-column:span 12}
.wk .wkplate{border-radius:2px}
.wk.full .wkplate{aspect-ratio:16/8}
.wk .wkplate{aspect-ratio:3/2}
.wk.tall .wkplate{aspect-ratio:4/5}
.wk .wkmeta{display:flex;justify-content:space-between;gap:16px;align-items:baseline;margin-top:14px;padding-bottom:16px;border-bottom:1px solid var(--hair)}
.wk .wkmeta h3{font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.2vw,32px);letter-spacing:-.01em;line-height:1.02;transition:color .3s}
.wk .wkmeta .yr{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--dim);white-space:nowrap}
.wk .wktag{font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-top:8px}
.wk .wktag .cs{color:var(--signal)}
.wk:hover h3{color:var(--signal)}
@media(max-width:760px){.wk,.wk.tall,.wk.full{grid-column:span 12}}

/* ============================================================
   MONSERRO UNIVERSE
   ============================================================ */
.universe .uni-lead{font-family:var(--serif);font-weight:400;font-size:clamp(22px,3.4vw,46px);line-height:1.16;letter-spacing:-.01em;max-width:22ch;margin-top:clamp(28px,4vh,48px)}
.universe .uni-lead .signal{color:var(--signal)}
.uni-tree{margin-top:clamp(40px,7vh,80px);border-top:1px solid var(--hair)}
.uni-node{display:grid;grid-template-columns:40px 1.4fr 1fr auto;gap:clamp(14px,2.4vw,40px);align-items:baseline;padding:clamp(20px,3vh,30px) 0;border-bottom:1px solid var(--hair)}
.uni-node .un{font-family:var(--mono);font-size:12px;color:var(--dim)}
.uni-node .uname{font-family:var(--serif);font-size:clamp(20px,2.4vw,32px);letter-spacing:-.01em}
.uni-node .udesc{font-family:var(--sans);font-size:14px;color:var(--dim);max-width:38ch}
.uni-node .ustatus{font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);text-align:right;white-space:nowrap}
.uni-node.active .uname{color:var(--fg)}
.uni-node.reserved .uname{color:var(--dim);letter-spacing:.06em}
.uni-node .redact{background:currentColor;color:var(--dim);border-radius:1px}
.uni-node .ustatus .live{color:var(--signal)}
@media(max-width:760px){
  .uni-node{grid-template-columns:1fr;gap:8px}
  .uni-node .ustatus{text-align:left}
}

/* ============================================================
   INDEX / ARCHIVE
   ============================================================ */
.index-intro{max-width:60ch;font-family:var(--sans);font-size:clamp(15px,1.5vw,18px);color:var(--dim);margin-top:20px}
.index-filters{display:flex;flex-wrap:wrap;gap:8px;margin:clamp(30px,5vh,50px) 0 8px}
.index-filters button{font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;background:none;border:1px solid var(--hair);color:var(--dim);border-radius:100px;padding:8px 15px;cursor:pointer;transition:.25s}
.index-filters button:hover{color:var(--fg);border-color:var(--fg)}
.index-filters button.active{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.index-list{margin-top:10px;border-top:1px solid var(--hair)}
.ix{display:grid;grid-template-columns:64px 1fr 150px 70px;gap:clamp(12px,2vw,30px);align-items:baseline;
  padding:clamp(15px,2vh,20px) 0;border-bottom:1px solid var(--hair);font-family:var(--mono);
  transition:padding-left .45s cubic-bezier(.22,1,.36,1),background .3s}
.ix .ixn{font-size:12px;color:var(--signal);letter-spacing:.1em}
.ix .ixt{font-family:var(--serif);font-size:clamp(17px,1.8vw,24px);letter-spacing:-.005em;line-height:1.1}
.ix .ixc{font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.ix .ixy{font-size:12px;color:var(--dim);text-align:right}
.ix:hover{padding-left:14px}
.ix .redact{background:var(--dim);color:transparent;border-radius:1px;padding:0 2px}
@media(max-width:760px){
  .ix{grid-template-columns:44px 1fr auto;gap:12px}
  .ix .ixc{display:none}
}

/* ============================================================
   JOURNAL
   ============================================================ */
.jrn-list{margin-top:clamp(30px,5vh,60px);border-top:1px solid var(--hair)}
.jrow{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(20px,4vw,70px);align-items:center;padding:clamp(28px,5vh,56px) 0;border-bottom:1px solid var(--hair)}
.jrow:nth-child(even) .jrplate{order:2}
.jrplate{aspect-ratio:16/10;border-radius:2px}
.jrow .jmeta{display:flex;gap:12px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.jrow .jmeta .cat{color:var(--signal)}
.jrow h3{font-family:var(--serif);font-weight:400;font-size:clamp(24px,3.4vw,48px);line-height:1.04;letter-spacing:-.01em;margin-top:16px;transition:color .3s}
.jrow p{font-family:var(--sans);color:var(--dim);font-size:15px;margin-top:16px;max-width:46ch}
.jrow .rd{margin-top:22px;font-family:var(--sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;display:inline-flex;gap:10px;border-bottom:1px solid currentColor;padding-bottom:5px;transition:gap .3s,color .3s}
.jrow:hover h3{color:var(--signal)}
.jrow .rd:hover{gap:18px;color:var(--signal)}
@media(max-width:820px){
  .jrow,.jrow:nth-child(even) .jrplate{grid-template-columns:1fr;order:0}
  .jrplate{order:-1 !important}
}

/* ============================================================
   COMPANY / ABOUT
   ============================================================ */
.company-hero{padding-top:clamp(120px,20vh,240px)}
.company-hero .big{font-family:var(--serif);font-weight:400;font-size:clamp(30px,6vw,92px);line-height:1.04;letter-spacing:-.02em;max-width:16ch}
.company-hero .big .signal{color:var(--signal)}
.company-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,110px);margin-top:clamp(50px,9vh,110px)}
.company-cols p{font-family:var(--sans);font-size:clamp(15px,1.5vw,19px);color:var(--fg);max-width:52ch}
.company-cols p+p{margin-top:20px}
.company-cols .muted{color:var(--dim)}
.company-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:clamp(56px,10vh,120px);border-top:1px solid var(--hair);padding-top:36px}
.company-facts .f .t{font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-bottom:12px}
.company-facts .f .v{font-family:var(--serif);font-size:clamp(20px,2.2vw,30px);letter-spacing:.01em}
@media(max-width:760px){.company-cols{grid-template-columns:1fr;gap:24px}.company-facts{grid-template-columns:1fr;gap:24px}}

/* Page hero (interior pages) */
.page-hero{padding-top:clamp(120px,20vh,220px)}
.page-hero .ph-kicker{margin-bottom:22px}
.page-hero h1{font-family:var(--serif);font-weight:400;font-size:clamp(40px,9vw,150px);line-height:.92;letter-spacing:-.02em}
.page-hero h1 .reg{color:var(--signal)}
.page-hero .ph-sub{font-family:var(--sans);font-size:clamp(14px,1.4vw,18px);color:var(--dim);max-width:52ch;margin-top:26px}

/* ============================================================
   FOOTER
   ============================================================ */
.site-foot{position:relative;background:#0B0B0B;color:#EDEBE4;padding:clamp(60px,10vh,120px) var(--pad) 40px}
.site-foot .fin{max-width:var(--maxw);margin:0 auto}
.site-foot .fmark{font-family:var(--sans);font-weight:700;font-size:clamp(48px,14vw,190px);letter-spacing:-.03em;line-height:.82}
.site-foot .fmark .reg{color:var(--signal);font-size:.16em;vertical-align:super}
.site-foot .fline{font-family:var(--serif);font-style:italic;font-style:italic;font-size:clamp(16px,2vw,24px);color:#B7B1A6;margin-top:26px;max-width:34ch}
.site-foot .frow{display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;margin-top:clamp(48px,8vh,90px);padding-top:28px;border-top:1px solid #2A2A28}
.site-foot .fnav{display:flex;gap:28px;flex-wrap:wrap}
.site-foot .fnav a{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#EDEBE4;opacity:.85;transition:.25s}
.site-foot .fnav a:hover{opacity:1;color:var(--signal)}
.site-foot .flegal{font-family:var(--sans);font-size:11px;letter-spacing:.06em;color:#7C766B;line-height:1.7}

/* ============================================================
   MOTION PREFERENCES
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  *{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  .reveal,html.reveal-ready .reveal{opacity:1 !important;transform:none !important}
  .hero .bg .fill{animation:none}
}

/* ============================================================
   V2 — BRANDING COMPANY (NL / EN)
   Added on top of the original design system; tokens unchanged.
   ============================================================ */

/* Language switch (header + mobile menu) */
.langsw{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;margin-left:6px}
.langsw a{opacity:.55;padding:4px 2px;font-size:11px;letter-spacing:.14em}
.langsw a:hover,.langsw a.on{opacity:1}
.langsw a.on{border-bottom:1.5px solid var(--signal)}
.langsw>span{opacity:.4}
.mobile-menu .mm-foot{align-items:center;flex-wrap:wrap}

/* Buttons */
.cta-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(24px,4vh,40px)}
.cta{display:inline-flex;align-items:center;gap:10px;font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;padding:15px 24px;border-radius:2px;background:var(--signal);color:#fff;border:1px solid var(--signal);transition:background .25s,color .25s,gap .3s,border-color .25s}
.cta:hover{gap:16px;background:transparent;color:var(--signal)}
.cta.ghost{background:transparent;color:inherit;border-color:currentColor}
.cta.ghost:hover{color:var(--signal);border-color:var(--signal)}
.tlink{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;border-bottom:1px solid var(--signal);padding-bottom:5px;transition:color .25s}
.tlink:hover{color:var(--signal)}

/* Hero (headline version) */
.hero .kick{font-family:var(--sans);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:rgba(237,235,228,.8);margin-bottom:clamp(16px,3vh,28px)}
.hero .headline{font-family:var(--serif);font-weight:400;font-size:clamp(42px,8.6vw,150px);line-height:.96;letter-spacing:-.02em;max-width:14ch}
.hero .headline .signal{color:var(--signal)}
.hero .lead{margin-top:clamp(18px,3vh,32px);max-width:54ch;font-size:clamp(15px,1.5vw,20px);line-height:1.55;color:rgba(237,235,228,.92)}
.hero .cta-row{margin-top:clamp(22px,4vh,38px)}

/* Home: four service blocks */
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,2.4vw,40px);margin-top:clamp(30px,5vh,60px)}
.svc{border-top:1px solid var(--hair);padding-top:16px;display:flex;flex-direction:column;gap:12px}
.svc .sn{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--signal)}
.svc h3{font-family:var(--serif);font-weight:400;font-size:clamp(22px,2.2vw,32px);line-height:1.05;letter-spacing:-.01em}
.svc p{font-family:var(--sans);font-size:14.5px;color:var(--dim);line-height:1.55}
@media(max-width:1000px){.svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.svc-grid{grid-template-columns:1fr}}

/* Audience chips */
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(28px,5vh,48px)}
.chips span{font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--hair);border-radius:100px;padding:9px 16px;color:var(--dim)}

/* Services page: rows */
.svc-row{display:grid;grid-template-columns:90px 1fr 1.2fr;gap:clamp(16px,3vw,50px);padding:clamp(28px,5vh,50px) 0;border-bottom:1px solid var(--hair);align-items:start}
.svc-row:first-child{border-top:1px solid var(--hair)}
.svc-row .rn{font-family:var(--mono);font-size:12px;color:var(--signal);letter-spacing:.1em;padding-top:8px}
.svc-row h3{font-family:var(--serif);font-weight:400;font-size:clamp(26px,3.2vw,46px);line-height:1.02;letter-spacing:-.01em}
.svc-row .rd p{font-family:var(--sans);font-size:clamp(15px,1.4vw,18px);max-width:52ch}
.dl{list-style:none;margin-top:18px;display:grid;gap:8px}
.dl li{font-family:var(--sans);font-size:14px;color:var(--dim);padding-left:18px;position:relative}
.dl li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:1.5px;background:var(--signal)}
@media(max-width:860px){.svc-row{grid-template-columns:1fr;gap:12px}}

/* Work page: case studies */
.case{padding:clamp(40px,7vh,80px) 0;border-bottom:1px solid var(--hair)}
.case:first-of-type{border-top:1px solid var(--hair)}
.case .cplate{aspect-ratio:16/8;border-radius:2px}
.case .chead{display:flex;justify-content:space-between;gap:16px;align-items:baseline;flex-wrap:wrap;margin-top:22px}
.case h2{font-family:var(--serif);font-weight:400;font-size:clamp(30px,4.6vw,68px);line-height:1;letter-spacing:-.015em}
.case .yr{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--dim)}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.tags span{font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--hair);border-radius:100px;padding:7px 14px;color:var(--dim)}
.ccols{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,70px);margin-top:clamp(28px,5vh,52px)}
.ccols h4{font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--signal);font-weight:600;margin-bottom:12px}
.ccols p{font-family:var(--sans);font-size:15px;line-height:1.6;max-width:44ch}
.ccols .dl{margin-top:0}
@media(max-width:860px){.ccols{grid-template-columns:1fr}}

/* Process rows reuse .uni-node; keep the outcome word readable */
.uni-node .ustatus{color:var(--signal)}
@media(min-width:761px){
  .uni-tree .uni-node{grid-template-columns:40px 1.2fr 1.2fr 110px}
}

/* V3: no menu; light "Our work" band with a signal divider */
.work-section{position:relative;border-top:4px solid var(--signal)}
.contact-band{border-top:0}
.site-head{justify-content:flex-start}

/* Hero cinemagraph */
.herofix{position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;overflow:hidden;background:#070707;pointer-events:none}
.herovid{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:fill;background:#070707;will-change:transform;transform:translate3d(0,0,0)}
@keyframes heroSink{to{transform:translate3d(0,var(--sink,0px),0)}}
@supports (animation-timeline:scroll()){
  .herovid{animation:heroSink linear both;animation-timeline:scroll(root block);animation-range:0px var(--hh,100vh)}
}
.herograin{position:absolute;inset:-128px;background:url(../media/grain.png) 0 0/256px 256px;opacity:.26;will-change:transform;animation:grainJump .9s steps(1) infinite}
@keyframes grainJump{0%{transform:translate3d(0,0,0)}17%{transform:translate3d(-71px,43px,0)}34%{transform:translate3d(38px,-96px,0)}50%{transform:translate3d(-112px,-27px,0)}67%{transform:translate3d(84px,71px,0)}84%{transform:translate3d(-23px,105px,0)}}
@media (prefers-reduced-motion:reduce){.herograin{animation:none}}
.hero.has-vid .bg .fill{display:none}
.hero.has-vid .bg{background:transparent}
.hero.has-vid .hero-inner{justify-content:flex-start;padding-top:clamp(86px,15vh,170px)}
.hero.has-vid .scrim{background:linear-gradient(90deg,rgba(0,0,0,.55),rgba(0,0,0,.15) 58%,rgba(0,0,0,0) 100%),linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,0) 30%)}

/* Work: scroll-through videos of the built websites */
.case .cplate.has-casevid,.wk .wkplate.has-casevid{aspect-ratio:3/2;background:#0b0b0b}
.plate .casevid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;display:block;background:#0b0b0b}
.has-casevid .fill,.has-casevid .vig{display:none}
.has-casevid .plabel{background:rgba(11,11,11,.72);padding:5px 9px;border-radius:2px}

/* what we do (homepage) */
.what-lead{font-size:clamp(22px,3.2vw,40px);line-height:1.14;letter-spacing:-.015em;font-weight:400;max-width:30ch;margin:clamp(26px,5vh,52px) 0 clamp(34px,6vh,64px)}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--hair)}
.pillar{padding:26px 28px 30px 0;border-right:1px solid var(--hair)}
.pillar + .pillar{padding-left:28px}
.pillar:last-child{border-right:0}
.pillar .pn{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--dim)}
.pillar h3{font-size:clamp(22px,2.2vw,30px);font-weight:400;letter-spacing:-.01em;margin:14px 0 10px}
.pillar p{font-size:15px;line-height:1.55;color:var(--dim);max-width:30ch}
.what-note{margin-top:clamp(26px,4vh,44px);font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
@media (max-width:760px){
  .pillars{grid-template-columns:1fr}
  .pillar,.pillar + .pillar{padding:22px 0 24px;border-right:0;border-bottom:1px solid var(--hair)}
  .pillar:last-child{border-bottom:0}
}
