/* Cleanfinity — website, day edition (October 2026).
   Light, photography-led and quiet: navy type on white, a serif for headlines,
   real photographs doing the persuading. Green (Leaf) is a small accent only. */

:root{
  --navy:#09192B;
  --navy-2:#0E2134;
  --navy-3:#163150;
  --ink:#09192B;
  --body:#334458;
  --muted:#5B6B7D;
  --paper:#FAF9F7;
  --card:#FFFFFF;
  --stone:#F1EEE9;
  --stone-2:#E7E2DA;
  --line:#E3DED6;
  --line-dark:rgba(255,255,255,.16);
  --link:#1E63C4;
  --leaf:#62BF3D;
  --leaf-deep:#3E8F22;

  --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
  --sans:"Instrument Sans","Helvetica Neue",Arial,system-ui,sans-serif;
  --wide:"Archivo","Helvetica Neue",Arial,sans-serif;

  --gutter:clamp(16px,4vw,48px);
  --col:1240px;
  --pad:clamp(64px,8vw,120px);
  --hdr:76px;
  --r:4px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--hdr) + 16px)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
body{margin:0;background:var(--paper);color:var(--body);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
img,video{display:block;max-width:100%;height:auto}
figure{margin:0}
p{margin:0}
a{color:var(--link);text-underline-offset:3px}
a:hover{color:var(--navy)}
:focus-visible{outline:2px solid var(--link);outline-offset:3px}
h1,h2,h3,h4{margin:0;color:var(--ink);font-family:var(--serif);font-weight:500;letter-spacing:-.012em;line-height:1.12;text-wrap:balance}
h1{font-size:clamp(2.5rem,5.4vw,4.4rem);line-height:1.05;letter-spacing:-.02em}
h2{font-size:clamp(1.9rem,3.4vw,2.9rem)}
h3{font-size:1.32rem;line-height:1.25}
.skip{position:absolute;left:-9999px;top:0;z-index:300;background:var(--navy);color:#fff;padding:12px 20px;text-decoration:none}
.skip:focus{left:8px;top:8px}

/* ---------- Primitives ---------- */
.wrap{max-width:var(--col);margin-inline:auto;position:relative}
.band{padding:var(--pad) var(--gutter)}
.band.stone{background:var(--stone)}
.band.navy{background:var(--navy);color:rgba(255,255,255,.78)}
.band.navy h2,.band.navy h3{color:#fff}
.band.tight{padding-block:clamp(40px,5vw,64px)}
.eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.eyebrow::before{content:"";width:28px;height:2px;background:var(--leaf)}
.navy .eyebrow{color:rgba(255,255,255,.7)}
.lede{font-size:clamp(1.06rem,1.4vw,1.2rem);line-height:1.65;max-width:60ch;color:var(--body)}
.navy .lede{color:rgba(255,255,255,.78)}
.muted{color:var(--muted)}
.head{display:grid;gap:16px;max-width:820px;margin-bottom:clamp(36px,4.5vw,60px)}
.head.split{max-width:none;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:16px clamp(24px,6vw,96px)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border-radius:var(--r);font-family:var(--sans);font-weight:600;font-size:.98rem;letter-spacing:.005em;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background .18s,color .18s,border-color .18s;white-space:nowrap}
.btn .ar{transition:transform .18s}
.btn:hover .ar{transform:translateX(3px)}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--navy-3);color:#fff}
.btn-light{background:#fff;color:var(--navy)}
.btn-light:hover{background:var(--stone-2);color:var(--navy)}
.btn-outline{border-color:var(--navy);color:var(--navy);background:transparent}
.btn-outline:hover{background:var(--navy);color:#fff}
.btn-outline-light{border-color:rgba(255,255,255,.6);color:#fff}
.btn-outline-light:hover{background:#fff;color:var(--navy);border-color:#fff}
.btn-sm{min-height:44px;padding:0 20px;font-size:.92rem}
.cta-row{display:flex;flex-wrap:wrap;gap:12px}
.more{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--navy);text-decoration:none;border-bottom:2px solid var(--leaf);padding-bottom:3px;justify-self:start}
.more:hover{color:var(--navy);border-color:var(--navy)}
.navy .more{color:#fff}
.navy .more:hover{border-color:#fff}

/* ---------- Hero ---------- */
.hero{position:relative;min-height:min(84vh,780px);display:flex;align-items:flex-end;color:#fff;background:var(--navy);overflow:hidden}
.hero-media,.hero-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(9,25,43,.92) 0%,rgba(9,25,43,.78) 34%,rgba(9,25,43,.25) 68%,rgba(9,25,43,.1) 100%),linear-gradient(0deg,rgba(9,25,43,.55) 0%,rgba(9,25,43,0) 40%)}
.hero-in{position:relative;z-index:1;width:100%;max-width:calc(var(--col) + 2*var(--gutter));margin-inline:auto;padding:clamp(72px,10vw,140px) var(--gutter) clamp(48px,6vw,80px)}
.hero-copy{max-width:640px;display:grid;gap:24px}
.hero h1{color:#fff}
.hero .lede{color:rgba(255,255,255,.86)}
.hero .eyebrow{color:rgba(255,255,255,.8)}
.hero-cap{position:absolute;left:var(--gutter);bottom:18px;z-index:1;font-size:.78rem;color:rgba(255,255,255,.7)}

/* Page hero (inner pages): text on white, photo beside */
.phero{padding:clamp(48px,6vw,88px) var(--gutter) clamp(48px,6vw,88px);background:var(--paper)}
.phero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(28px,5vw,72px);align-items:center}
.phero-copy{display:grid;gap:22px}
.crumb{font-size:.84rem;color:var(--muted)}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--navy);text-decoration:underline}
.phero-img img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* ---------- Clients band ---------- */
.clients{border-bottom:1px solid var(--line);padding:26px var(--gutter)}
.clients-in{max-width:var(--col);margin-inline:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 40px}
.clients-in>p{font-size:.95rem;color:var(--muted)}
.clients .logos{display:flex;align-items:center;gap:clamp(24px,4vw,48px)}
.clients .logos img{height:30px;width:auto}
.clients .vt{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:1.15rem;color:var(--navy);letter-spacing:-.01em}
.clients .vt img{height:30px;border-radius:6px}
.cf-reviews-mini{font-size:.95rem;color:var(--muted)}
.cf-reviews-mini strong{color:var(--ink)}
.cf-reviews-mini a{color:var(--ink)}
.cf-reviews-mini .cf-rv-stars{color:#E8A317}

/* ---------- Intro + figures ---------- */
.intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,6vw,96px);align-items:start}
.intro .statement{font-family:var(--serif);font-size:clamp(1.55rem,2.6vw,2.2rem);line-height:1.3;color:var(--ink);letter-spacing:-.01em;margin-top:18px}
.intro-r{display:grid;gap:20px;padding-top:8px}
.figures{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-top:clamp(48px,6vw,80px);border-top:1px solid var(--line)}
.fig{padding:26px 20px 4px 0}
.fig+.fig{padding-left:20px;border-left:1px solid var(--line)}
.fig b{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,3.6vw,3rem);line-height:1;color:var(--navy);letter-spacing:-.02em}
.fig b small{font-size:.45em;margin-left:4px;color:var(--muted);font-family:var(--sans);font-weight:500;letter-spacing:0}
.fig span{display:block;margin-top:12px;font-weight:600;color:var(--ink);font-size:.95rem}
.fig em{display:block;font-style:normal;color:var(--muted);font-size:.86rem;line-height:1.5;margin-top:2px}

/* ---------- Services ---------- */
.svcs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 24px}
.svc{display:flex;flex-direction:column;text-decoration:none;color:var(--body);background:#fff;border:1px solid var(--line);transition:box-shadow .2s,transform .2s}
.svc:hover{box-shadow:0 18px 40px rgba(9,25,43,.1);transform:translateY(-2px);color:var(--body)}
.svc .ph{aspect-ratio:3/2;overflow:hidden;background:var(--stone-2)}
.svc .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.svc:hover .ph img{transform:scale(1.04)}
.svc-body{padding:22px 22px 24px;display:grid;gap:10px;flex:1;align-content:start}
.svc-body p{font-size:.96rem}
.svc .go{margin-top:6px;font-weight:600;color:var(--navy);font-size:.94rem}
.svc .go::after{content:" →";color:var(--leaf-deep)}

/* ---------- Sectors ---------- */
.sectors{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:20px}
.sector{position:relative;min-height:440px;display:flex;align-items:flex-end;overflow:hidden;color:#fff;text-decoration:none;background:var(--navy)}
.sector img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s}
.sector:hover img{transform:scale(1.04)}
.sector::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(9,25,43,.9) 0%,rgba(9,25,43,.25) 55%,rgba(9,25,43,.05) 100%)}
.sector-body{position:relative;z-index:1;padding:28px;display:grid;gap:8px}
.sector-body h3{color:#fff;font-size:1.6rem}
.sector-body p{color:rgba(255,255,255,.82);font-size:.95rem}
.sector-body .go{font-weight:600;font-size:.94rem;color:#fff;margin-top:4px}
.sector-body .go::after{content:" →";color:var(--leaf)}
.sector:hover{color:#fff}

/* ---------- People ---------- */
.people{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:center}
.people-img img{width:100%;aspect-ratio:4/5;object-fit:cover}
.people-img figcaption{margin-top:10px;font-size:.84rem;color:var(--muted)}
.people-copy{display:grid;gap:20px}
.ticks{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:0;border-top:1px solid var(--line)}
.ticks li{position:relative;padding:15px 0 15px 34px;border-bottom:1px solid var(--line);color:var(--ink);font-weight:600}
.ticks li::before{content:"";position:absolute;left:2px;top:21px;width:14px;height:8px;border-left:2px solid var(--leaf-deep);border-bottom:2px solid var(--leaf-deep);transform:rotate(-45deg)}
.ticks li span{display:block;color:var(--muted);font-size:.92rem;font-weight:400}
.navy .ticks{border-color:var(--line-dark)}
.navy .ticks li{color:#fff;border-color:var(--line-dark)}
.navy .ticks li span{color:rgba(255,255,255,.66)}
.navy .ticks li::before{border-color:var(--leaf)}
.films{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:clamp(48px,6vw,80px)}
.film{display:grid;gap:12px;align-content:start}
.film-box{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--stone-2)}
.film-box video,.film-box img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film figcaption{font-size:.92rem;color:var(--muted)}
.film figcaption b{display:block;color:var(--ink);font-weight:600}
.clip-btn{position:absolute;right:12px;bottom:12px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.92);color:var(--navy);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.clip-btn svg{width:14px;height:14px}

/* ---------- Steps (navy band) ---------- */
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:1px solid var(--line-dark)}
.step{padding:28px 24px 8px 0}
.step+.step{padding-left:24px;border-left:1px solid var(--line-dark)}
.step .n{font-family:var(--serif);font-size:2.4rem;line-height:1;color:var(--leaf)}
.step h3{margin-top:18px;font-size:1.2rem}
.step p{margin-top:10px;font-size:.95rem;color:rgba(255,255,255,.72)}
.record-note{margin-top:clamp(36px,4vw,56px);padding-top:28px;border-top:1px solid var(--line-dark);display:flex;flex-wrap:wrap;gap:16px 40px;align-items:center;justify-content:space-between}
.record-note p{max-width:70ch}

/* ---------- Cases ---------- */
.case-feat{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);text-decoration:none;color:var(--body);background:var(--navy);margin-bottom:24px}
.case-feat .ph{position:relative;min-height:460px;overflow:hidden}
.case-feat .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s}
.case-feat:hover .ph img{transform:scale(1.03)}
.case-feat-body{padding:clamp(28px,3.6vw,48px);display:grid;gap:16px;align-content:center;color:rgba(255,255,255,.8)}
.case-feat-body h3{color:#fff;font-size:clamp(1.7rem,2.6vw,2.2rem)}
.case-feat-body .eyebrow{color:rgba(255,255,255,.7)}
.case-feat .outcome{font-size:1.06rem}
.case-meta{font-size:.86rem;color:rgba(255,255,255,.6)}
.case-feat .more{color:#fff}
.case-feat:hover{color:inherit}
.case-feat.rev{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr)}
.case-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.case{display:flex;flex-direction:column;text-decoration:none;color:var(--body)}
.case .ph{aspect-ratio:4/5;overflow:hidden;background:var(--stone-2)}
.case .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.case:hover .ph img{transform:scale(1.04)}
.case-body{padding-top:16px;display:grid;gap:6px}
.case-body .tag{font-size:.74rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.case-body h3{font-size:1.18rem}
.case:hover h3{color:var(--link)}
.case .outcome{font-size:.94rem;line-height:1.55}
.case .rt{font-size:.84rem;color:var(--muted)}

/* ---------- Before / after ---------- */
.bas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.ba{background:#fff;border:1px solid var(--line)}
.ba-stage{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--stone-2);touch-action:pan-y;cursor:ew-resize;user-select:none;-webkit-user-select:none}
.ba-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.ba-after{clip-path:inset(0 0 0 var(--x,50%))}
.ba-tag{position:absolute;top:12px;font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:5px 10px;background:#fff;color:var(--navy);pointer-events:none}
.ba-tag.l{left:12px}.ba-tag.r{right:12px}
.ba-line{position:absolute;top:0;bottom:0;left:var(--x,50%);width:2px;margin-left:-1px;background:#fff;pointer-events:none}
.ba-line::after{content:"";position:absolute;top:50%;left:50%;width:42px;height:42px;margin:-21px 0 0 -21px;border-radius:50%;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2309192B' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l-6 6 6 6M15 6l6 6-6 6'/%3E%3C/svg%3E") center/20px no-repeat;box-shadow:0 4px 16px rgba(0,0,0,.25)}
.ba-range{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:ew-resize}
.ba-body{padding:18px 20px 22px}
.ba-body h3{font-size:1.12rem}
.ba-body p{color:var(--muted);font-size:.92rem;margin-top:4px}

/* ---------- Offer ---------- */
.offer{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:center}
.offer-img img{width:100%;aspect-ratio:4/5;object-fit:cover}
.offer-img figcaption{margin-top:10px;font-size:.84rem;color:var(--muted)}
.offer-copy{display:grid;gap:20px}
.olist{list-style:none;margin:6px 0 0;padding:0;counter-reset:o;display:grid;border-top:1px solid var(--line)}
.olist li{counter-increment:o;display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}
.olist li::before{content:counter(o,decimal-leading-zero);font-family:var(--serif);font-size:1.3rem;color:var(--leaf-deep);line-height:1.3}
.olist b{display:block;color:var(--ink);font-weight:600}
.olist span{color:var(--muted);font-size:.95rem}
.small-print{font-size:.88rem;color:var(--muted)}

/* ---------- Reviews (cf-reviews.js) ---------- */
.cf-reviews{padding:var(--pad) var(--gutter);background:var(--stone)}
.cf-rv-in{max-width:var(--col);margin:0 auto}
.cf-rv-top{margin-bottom:30px;display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:10px 24px}
.cf-rv-h{margin:0;font-family:var(--serif);font-weight:500;font-size:clamp(1.9rem,3.4vw,2.9rem);color:var(--ink);line-height:1.12}
.cf-rv-sum{margin:0;color:var(--muted)}
.cf-rv-sum strong{color:var(--ink)}
.cf-rv-flag{width:100%;margin:6px 0 0;font-size:.85rem;font-weight:600;color:#A33A2B}
.cf-rv-stars{color:#E8A317;letter-spacing:1px}
.cf-rv-dim{color:var(--line)}
.cf-rv-vp{overflow:hidden;margin-inline:-12px}
.cf-rv-track{display:flex;transition:transform .45s cubic-bezier(.4,0,.2,1);will-change:transform}
.cf-rv-card{flex:0 0 33.3333%;margin:0;padding:0 12px;display:flex;flex-direction:column;background:#fff;background-clip:content-box}
.cf-rv-head{display:flex;align-items:center;gap:12px;padding:26px 28px 0}
.cf-rv-text{margin:0;padding:16px 28px 28px;font-family:var(--serif);font-size:1.08rem;line-height:1.6;color:var(--ink);flex:1}
@media(max-width:899px){.cf-rv-card{flex-basis:50%}}
@media(max-width:559px){.cf-rv-card{flex-basis:100%}}
.cf-rv-av{width:40px;height:40px;flex:0 0 40px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:700}
.cf-rv-name{font-weight:600;color:var(--ink);line-height:1.2}
.cf-rv-meta{font-size:.84rem;color:var(--muted);margin-top:2px;display:flex;gap:8px;align-items:center}
.cf-rv-ctl{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px}
.cf-rv-dots{display:flex;gap:8px}
.cf-rv-dot{width:9px;height:9px;padding:0;border-radius:50%;border:1px solid var(--navy);background:transparent;cursor:pointer}
.cf-rv-dot.on{background:var(--navy)}
.cf-rv-arrows{display:flex;gap:8px}
.cf-rv-btn{width:46px;height:46px;border-radius:50%;border:1px solid var(--navy);background:transparent;color:var(--navy);font-size:16px;cursor:pointer;line-height:1}
.cf-rv-btn:hover{background:var(--navy);color:#fff}
.cf-rv-all{margin:20px 0 0}

/* ---------- Founder ---------- */
.founder{display:grid;grid-template-columns:minmax(0,.4fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:start;max-width:1080px;margin-inline:auto}
.founder blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.4rem,2.4vw,1.95rem);line-height:1.4;color:var(--ink);letter-spacing:-.01em}
.founder .sig{margin-top:28px;display:flex;align-items:center;gap:18px}
.founder .sig img{height:54px;width:auto}
.founder .sig span{font-size:.92rem;color:var(--muted);line-height:1.45}
.founder .sig b{color:var(--ink);display:block}

/* ---------- Homes lane ---------- */
.lane{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:center}
.lane-copy{display:grid;gap:20px}
.lane-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}
.seq{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:clamp(40px,5vw,64px)}
.seq figure{display:grid;gap:10px;align-content:start}
.seq img{width:100%;aspect-ratio:3/4;object-fit:cover}
.seq .k{font-size:.74rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.seq p{color:var(--body);font-size:.92rem}
.seq-note{margin-top:22px;font-size:.92rem;color:var(--muted);padding-top:16px;border-top:1px solid var(--line)}
.case-grid.homes{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(40px,5vw,64px)}

/* ---------- Gallery ---------- */
.mason{columns:4 230px;column-gap:16px}
.mason a{display:block;break-inside:avoid;margin-bottom:18px;text-decoration:none}
.mason .im{overflow:hidden;background:var(--stone-2)}
.mason img{width:100%;height:auto;transition:transform .6s}
.mason a:hover img{transform:scale(1.03)}
.mason span{display:block;padding:8px 0 0;font-size:.82rem;color:var(--muted)}

/* ---------- Pricing duo ---------- */
.duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.duo>div{padding:clamp(28px,3.6vw,48px);background:#fff;border:1px solid var(--line);display:grid;gap:16px;align-content:start}
.duo h2{font-size:clamp(1.6rem,2.6vw,2.2rem)}

/* ---------- FAQ ---------- */
.faq-grid{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:clamp(28px,6vw,96px);align-items:start}
.faq-side{display:grid;gap:18px}
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:22px 48px 22px 0;position:relative;font-family:var(--serif);font-size:1.2rem;color:var(--ink);line-height:1.35}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before,.faq summary::after{content:"";position:absolute;right:8px;top:50%;width:16px;height:2px;background:var(--navy);transition:transform .2s}
.faq summary::after{transform:rotate(90deg)}
.faq details[open] summary::after{transform:rotate(0)}
.faq .a{padding:0 0 24px;max-width:68ch}

/* ---------- Final + form ---------- */
.final{background:var(--navy);padding:var(--pad) var(--gutter);color:rgba(255,255,255,.8)}
.final-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,6vw,96px);align-items:start}
.final-copy{display:grid;gap:20px}
.final h2{color:#fff}
.final .lede{color:rgba(255,255,255,.8)}
.final .eyebrow{color:rgba(255,255,255,.7)}
.final .contact-lines{margin-top:8px;display:grid;gap:8px;padding-top:24px;border-top:1px solid var(--line-dark)}
.final .contact-lines a{color:#fff;font-weight:600;text-decoration:none}
.final .contact-lines a:hover{text-decoration:underline}
.final .cf-reviews-mini{color:rgba(255,255,255,.75)}
.final .cf-reviews-mini a,.final .cf-reviews-mini strong{color:#fff}
.frm{background:#fff;padding:clamp(24px,3.4vw,40px);display:grid;gap:16px;color:var(--body);box-shadow:0 30px 70px rgba(0,0,0,.25)}
.frm-h{font-family:var(--serif);font-size:1.5rem;color:var(--ink);line-height:1.2}
.frm .row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fld{display:grid;gap:6px}
.fld label{font-size:.88rem;font-weight:600;color:var(--ink)}
.fld label small{color:var(--muted);font-weight:400}
.fld input,.fld select,.fld textarea{width:100%;min-height:50px;padding:12px 14px;border-radius:var(--r);border:1px solid #C9D2DC;background:#fff;color:var(--ink);font:inherit;font-size:16px}
.fld textarea{min-height:100px;resize:vertical}
.fld select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235B6B7D' stroke-width='2.2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:18px;padding-right:40px}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(9,25,43,.12)}
.fld input::placeholder,.fld textarea::placeholder{color:#8A97A6}
.consent{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;font-size:.86rem;color:var(--muted);align-items:start}
.consent input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--navy)}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.frm .btn{width:100%}
.frm-foot{font-size:.86rem;color:var(--muted)}

/* ---------- Gentle reveal (content is visible without JS) ---------- */
.js .rv{opacity:0;transform:translateY(14px);transition:opacity .8s ease,transform .8s ease}
.js .rv.in{opacity:1;transform:none}

/* ---------- Responsive ---------- */
@media (max-width:1120px){
  .figures{grid-template-columns:repeat(3,minmax(0,1fr))}
  .fig:nth-child(4){padding-left:0;border-left:0}
  .fig:nth-child(n+4){border-top:1px solid var(--line);margin-top:20px}
  .case-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .step:nth-child(3){padding-left:0;border-left:0}
  .step:nth-child(n+3){border-top:1px solid var(--line-dark);margin-top:24px}
  .sectors{grid-template-columns:1fr 1fr}
  .sectors .sector:first-child{grid-column:1/-1}
}
@media (max-width:860px){
  body{font-size:16.5px}
  .hero{min-height:0}
  .hero::after{background:linear-gradient(0deg,rgba(9,25,43,.96) 0%,rgba(9,25,43,.85) 50%,rgba(9,25,43,.3) 100%)}
  .hero-in{padding-top:clamp(200px,52vw,340px)}
  .hero-cap{display:none}
  .intro,.people,.offer,.lane,.final-grid,.faq-grid,.founder,.duo,.head.split,.phero-grid,.case-feat,.case-feat.rev{grid-template-columns:minmax(0,1fr)}
  .case-feat .ph{min-height:0;aspect-ratio:4/3;order:-1}
  .svcs,.bas,.films{grid-template-columns:minmax(0,1fr)}
  .svcs{gap:20px}
  .films .film:nth-child(n+2){display:none}
  .sectors{grid-template-columns:minmax(0,1fr)}
  .sector{min-height:300px}
  .founder{gap:20px}
  .rail{display:grid;grid-auto-flow:column;grid-template-columns:none!important;grid-auto-columns:80%;overflow-x:auto;scroll-snap-type:x mandatory;gap:16px;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);scrollbar-width:none}
  .rail::-webkit-scrollbar{display:none}
  .rail>*{scroll-snap-align:start}
  .seq{grid-auto-columns:72%}
  .mason{columns:2;column-gap:10px}
  .mason a{margin-bottom:12px}
  .mason a:nth-child(n+9){display:none}
}
@media (max-width:620px){
  .figures{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fig,.fig+.fig{padding:22px 12px 4px 0;border-left:0;margin-top:0}
  .fig:nth-child(even){padding-left:16px;border-left:1px solid var(--line)}
  .fig:nth-child(n+3){border-top:1px solid var(--line)}
  .fig:last-child{grid-column:1/-1;padding-left:0;border-left:0}
  .steps{grid-template-columns:minmax(0,1fr)}
  .step,.step+.step{padding:24px 0 8px;border-left:0;margin-top:0}
  .step+.step{border-top:1px solid var(--line-dark)}
  .frm .row2{grid-template-columns:minmax(0,1fr)}
  .clients-in{justify-content:flex-start}
  .clients .logos img{height:26px}
  .cta-row .btn{flex:1 1 100%}
}

/* =====================================================================
   Editorial layer (17 Oct 2026): film opening, the night story,
   editorial service list, magazine feature, bigger type.
   ===================================================================== */
.display{font-family:var(--serif);font-weight:500;letter-spacing:-.03em;line-height:.98;font-size:clamp(3rem,9vw,8.4rem);color:inherit}
.statement-xl{font-family:var(--serif);font-weight:400;font-size:clamp(1.8rem,3.9vw,3.5rem);line-height:1.16;letter-spacing:-.02em;color:var(--ink);max-width:22ch}
.statement-xl em{font-style:italic;color:var(--muted)}
.kicker{font-size:.8rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase}

/* ---------- Film opening ---------- */
.film-hero{position:relative;height:calc(100svh - var(--hdr) - 34px);min-height:560px;max-height:980px;background:var(--navy);color:#fff;overflow:hidden;display:flex;align-items:flex-end}
.film-hero .poster,.film-hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film-hero .poster img{width:100%;height:100%;object-fit:cover}
.film-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(9,25,43,.92) 0%,rgba(9,25,43,.55) 38%,rgba(9,25,43,.08) 70%),linear-gradient(90deg,rgba(9,25,43,.55) 0%,rgba(9,25,43,0) 60%)}
.film-hero-in{position:relative;z-index:1;width:100%;max-width:calc(var(--col) + 2*var(--gutter));margin-inline:auto;padding:0 var(--gutter) clamp(28px,4vw,48px)}
.film-hero h1{font-size:clamp(3.2rem,9.2vw,8.8rem);line-height:.95;letter-spacing:-.035em;color:#fff;max-width:11ch}
.film-hero .lede{color:rgba(255,255,255,.88);margin-top:24px;max-width:52ch}
.film-hero .cta-row{margin-top:30px}
.film-hero .eyebrow{color:rgba(255,255,255,.85);margin-bottom:22px}
.film-meta{margin-top:clamp(32px,5vw,56px);padding-top:18px;border-top:1px solid rgba(255,255,255,.22);display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:.86rem;color:rgba(255,255,255,.7)}
.film-toggle{display:inline-flex;align-items:center;gap:10px;background:none;border:0;color:#fff;font:inherit;font-weight:600;cursor:pointer;padding:6px 0}
.film-toggle svg{width:14px;height:14px}

/* ---------- Statement + clients ---------- */
.lead-in{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px 64px;align-items:end}
.lead-in .side{display:grid;gap:18px;justify-items:start;max-width:340px}
.trust-row{margin-top:clamp(48px,6vw,80px);padding-top:28px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 40px}
.trust-row .logos{display:flex;align-items:center;gap:40px}
.trust-row .logos img{height:30px;width:auto}
.trust-row .vt{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:1.15rem;color:var(--navy)}
.trust-row .vt img{height:30px;border-radius:6px}
.sector-links{display:flex;flex-wrap:wrap;gap:8px 28px;font-weight:600}
.sector-links a{color:var(--navy);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:2px}
.sector-links a:hover{border-color:var(--navy)}

/* ---------- The night story ---------- */
.story{background:var(--navy);color:rgba(255,255,255,.8);padding:var(--pad) var(--gutter)}
.story-head{max-width:var(--col);margin:0 auto clamp(48px,6vw,88px);display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:24px 64px;align-items:end}
.story-head h2{font-size:clamp(2.8rem,7vw,6.4rem);line-height:.95;letter-spacing:-.03em;color:#fff}
.story-head p{color:rgba(255,255,255,.75);font-size:1.1rem}
.story-grid{max-width:var(--col);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,6vw,96px)}
.story-media{position:sticky;top:calc(var(--hdr) + 32px);height:calc(100vh - var(--hdr) - 64px);max-height:760px}
.story-media figure{position:absolute;inset:0;opacity:0;transition:opacity .7s ease}
.story-media figure.on{opacity:1}
.story-media img,.story-media video{width:100%;height:100%;object-fit:cover}
.story-steps{list-style:none;margin:0;padding:0}
.story-step{min-height:72vh;display:flex;flex-direction:column;justify-content:center;padding:24px 0;border-top:1px solid rgba(255,255,255,.16);opacity:.38;transition:opacity .5s}
.story-step.on{opacity:1}
.story-step:first-child{border-top:0}
.story-step .n{font-family:var(--serif);font-size:1.1rem;color:var(--leaf)}
.story-step h3{color:#fff;font-size:clamp(2rem,3.6vw,3.2rem);line-height:1.04;letter-spacing:-.02em;margin-top:14px}
.story-step p{margin-top:18px;font-size:1.06rem;max-width:44ch;color:rgba(255,255,255,.78)}
.story-step .inline{display:none}
.story-end{max-width:var(--col);margin:clamp(48px,6vw,80px) auto 0;padding-top:28px;border-top:1px solid rgba(255,255,255,.16);display:flex;flex-wrap:wrap;gap:16px 40px;justify-content:space-between;align-items:center}

/* ---------- Editorial service list ---------- */
.svc-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.svc-row{position:relative;border-bottom:1px solid var(--line)}
.svc-row a{display:grid;grid-template-columns:72px minmax(0,1.1fr) minmax(0,1fr) 40px;gap:24px;align-items:center;padding:30px 0;text-decoration:none;color:var(--body)}
.svc-row .n{font-family:var(--serif);color:var(--muted);font-size:1.05rem}
.svc-row h3{font-size:clamp(1.6rem,3vw,2.6rem);line-height:1.05;letter-spacing:-.02em;transition:transform .35s}
.svc-row p{font-size:.98rem;color:var(--muted)}
.svc-row .arr{font-size:1.4rem;color:var(--navy);transition:transform .3s}
.svc-row .thumb{position:absolute;right:120px;top:50%;width:260px;aspect-ratio:4/3;transform:translateY(-50%) scale(.92);opacity:0;pointer-events:none;transition:opacity .3s,transform .4s;z-index:2;box-shadow:0 24px 50px rgba(9,25,43,.25)}
.svc-row .thumb img{width:100%;height:100%;object-fit:cover}
@media (hover:hover) and (min-width:1121px){
  .svc-row a:hover h3{transform:translateX(10px)}
  .svc-row a:hover .arr{transform:translateX(6px)}
  .svc-row:hover .thumb{opacity:1;transform:translateY(-50%) scale(1)}
  .svc-row a:hover p{opacity:0}
}

/* ---------- Magazine feature ---------- */
.feature{position:relative;background:var(--paper)}
.feature-img{position:relative;height:clamp(420px,72vh,760px);overflow:hidden}
.feature-img img{width:100%;height:100%;object-fit:cover}
.feature-panel{position:relative;max-width:var(--col);margin:-200px auto 0;padding:0 var(--gutter);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.feature-card{grid-column:2;background:#fff;padding:clamp(28px,4vw,56px);box-shadow:0 30px 70px rgba(9,25,43,.14);display:grid;gap:18px}
.feature-card .big{font-family:var(--serif);font-size:clamp(3rem,6vw,5.2rem);line-height:.95;letter-spacing:-.03em;color:var(--navy)}
.feature-card .big-cap{font-size:.92rem;color:var(--muted);margin-top:12px}
.feature-card h3{font-size:clamp(1.6rem,2.6vw,2.2rem)}
.more-cases{max-width:var(--col);margin:clamp(56px,7vw,96px) auto 0;padding:0 var(--gutter);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}

/* ---------- Before/after, varied ---------- */
.bas.mixed{grid-template-columns:1.4fr 1fr;grid-template-rows:auto auto}
.bas.mixed .ba:first-child{grid-row:span 2}
.bas.mixed .ba:first-child .ba-stage{aspect-ratio:4/5}
.bas.mixed .ba:not(:first-child) .ba-stage{aspect-ratio:16/10}

/* ---------- Big figures ---------- */
.big-figs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:clamp(56px,7vw,96px);border-top:1px solid var(--ink)}
.big-figs div{padding:26px 24px 0 0}
.big-figs div+div{padding-left:24px;border-left:1px solid var(--line)}
.big-figs b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(3rem,6vw,5.4rem);line-height:.9;letter-spacing:-.04em;color:var(--navy)}
.big-figs b small{font-size:.38em;letter-spacing:0;margin-left:4px;color:var(--muted)}
.big-figs span{display:block;margin-top:14px;font-weight:600;color:var(--ink)}
.big-figs em{display:block;font-style:normal;font-size:.88rem;color:var(--muted)}
.pull{margin-top:clamp(40px,5vw,64px);padding:clamp(24px,3vw,36px) 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 48px;align-items:end}
.pull blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.3rem,2.2vw,1.75rem);line-height:1.4;color:var(--ink);font-style:italic;max-width:46ch}
.pull .sig{display:flex;align-items:center;gap:14px}
.pull .sig img{height:48px;width:auto}
.pull .sig span{font-size:.9rem;color:var(--muted);line-height:1.4}
.pull .sig b{display:block;color:var(--ink)}

/* ---------- Photo strip ---------- */
.strip-wrap{overflow:hidden}
.photo-strip{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x proximity;padding:0 var(--gutter) 8px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.photo-strip a{flex:0 0 auto;width:clamp(220px,24vw,320px);scroll-snap-align:start;text-decoration:none}
.photo-strip .im{aspect-ratio:3/4;overflow:hidden;background:var(--stone-2)}
.photo-strip img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.photo-strip a:hover img{transform:scale(1.04)}
.photo-strip span{display:block;padding-top:8px;font-size:.82rem;color:var(--muted)}

/* ---------- Homes band ---------- */
.homes-band{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(28px,5vw,72px);align-items:center}
.homes-band img{width:100%;aspect-ratio:4/3;object-fit:cover}
.homes-links{list-style:none;margin:6px 0 0;padding:0;border-top:1px solid var(--line)}
.homes-links a{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);font-weight:600}
.homes-links a span{font-weight:400;color:var(--muted);font-size:.92rem;text-align:right}
.homes-links a:hover{color:var(--link)}

/* ---------- Final offer ---------- */
.final .olist{border-color:var(--line-dark)}
.final .olist li{border-color:var(--line-dark)}
.final .olist li::before{color:var(--leaf)}
.final .olist b{color:#fff}
.final .olist span{color:rgba(255,255,255,.66)}
.final h2.display{font-size:clamp(2.8rem,6vw,5.2rem);color:#fff}

@media (max-width:1120px){
  .svc-row a{grid-template-columns:56px minmax(0,1fr) 32px}
  .svc-row p{grid-column:2;grid-row:2;margin-top:-12px}
  .svc-row .arr{grid-column:3;grid-row:1}
  .svc-row .thumb{display:none}
  .big-figs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .big-figs div:nth-child(3){padding-left:0;border-left:0}
  .big-figs div:nth-child(n+3){border-top:1px solid var(--line);margin-top:24px}
}
@media (max-width:860px){
  .film-hero{height:auto;min-height:calc(100svh - var(--hdr) - 34px)}
  .film-hero-in{padding-top:22vh}
  .film-hero .lede{margin-top:16px;font-size:1rem}
  .film-hero .cta-row{margin-top:22px}
  .film-meta{margin-top:24px}
  .film-hero::after{background:linear-gradient(0deg,rgba(9,25,43,.95) 0%,rgba(9,25,43,.7) 45%,rgba(9,25,43,.15) 80%)}
  .film-meta span:first-child{max-width:24ch}
  .lead-in,.story-head,.homes-band,.pull{grid-template-columns:minmax(0,1fr)}
  .story-grid{grid-template-columns:minmax(0,1fr)}
  .story-media{display:none}
  .story-step{min-height:0;opacity:1;padding:36px 0}
  .story-step .inline{display:block;margin-bottom:22px;aspect-ratio:4/5;overflow:hidden;position:relative}
  .story-step .inline img,.story-step .inline video{width:100%;height:100%;object-fit:cover}
  .feature-img{height:56vh}
  .feature-panel{margin-top:-80px;grid-template-columns:minmax(0,1fr)}
  .feature-card{grid-column:1}
  .more-cases{grid-template-columns:none}
  .bas.mixed{grid-template-columns:none}
  .bas.mixed .ba .ba-stage,.bas.mixed .ba:first-child .ba-stage,.bas.mixed .ba:not(:first-child) .ba-stage{aspect-ratio:1/1}
  .bas.mixed .ba:first-child{grid-row:auto}
}
@media (max-width:620px){
  .svc-row a{grid-template-columns:40px minmax(0,1fr) 24px;gap:14px;padding:22px 0}
  .big-figs div,.big-figs div+div{padding:22px 12px 0 0;border-left:0}
  .big-figs div:nth-child(even){padding-left:16px;border-left:1px solid var(--line)}
}


/* =====================================================================
   Documentary layer (17 Oct 2026, v4): warm, clean, story-led.
   Modelled on the Puente section: captioned photographs, short honest copy.
   ===================================================================== */
.band.white{background:var(--card)}
.label{font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--leaf-deep)}

/* Opening: headline left, one captioned film panel right */
.open{padding:clamp(40px,6vw,96px) var(--gutter) clamp(56px,7vw,104px)}
.open-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(32px,6vw,96px);align-items:end}
.open h1{font-size:clamp(3rem,7.6vw,7rem);line-height:.96;letter-spacing:-.035em;margin-top:22px}
.open .lede{margin-top:26px;max-width:50ch}
.open .cta-row{margin-top:32px}
.open-proof{margin-top:clamp(36px,5vw,56px);padding-top:22px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:14px 36px}
.open-proof .logos{display:flex;align-items:center;gap:28px}
.open-proof .logos img{height:26px;width:auto}
.open-proof .vt{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--navy)}
.open-proof .vt img{height:26px;border-radius:5px}

.capfig{position:relative}
.capfig .frame{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--stone-2)}
.capfig .frame img,.capfig .frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.capfig .cap{position:relative;margin:-64px 20px 0 -28px;background:var(--card);padding:20px 22px;box-shadow:0 18px 40px rgba(9,25,43,.10);max-width:360px;display:grid;gap:6px}
.capfig .cap b{font-family:var(--serif);font-weight:500;font-size:1.15rem;color:var(--ink);line-height:1.3}
.capfig .cap span{font-size:.88rem;color:var(--muted)}
.capfig .cap.right{margin:-64px -28px 0 auto}
.capfig .ctl{position:absolute;right:14px;top:14px;z-index:2;display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.92);border:0;border-radius:999px;padding:8px 14px;font:inherit;font-size:.82rem;font-weight:600;color:var(--navy);cursor:pointer}
.capfig .ctl svg{width:12px;height:12px}

/* Documentary cards, Puente-style */
.docs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.doc{background:var(--card);display:flex;flex-direction:column}
.doc .ph{aspect-ratio:4/3;overflow:hidden;background:var(--stone-2);position:relative}
.doc .ph img,.doc .ph video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.doc-body{padding:20px 22px 24px;display:grid;gap:8px;align-content:start}
.doc-body h3{font-size:1.3rem;line-height:1.25}
.doc-body p{font-size:.95rem;color:var(--body)}

/* Walk the floor */
.fx{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:32px;align-items:start}
.fx-plan{background:var(--card);border:1px solid var(--line);padding:18px}
.fx-plan svg{width:100%;height:auto;display:block}
.room{cursor:pointer;outline:none}
.room rect.r{fill:#fff;stroke:var(--navy);stroke-width:2;transition:fill .25s}
.room text{font-family:var(--sans);font-size:15px;font-weight:600;fill:var(--navy);pointer-events:none}
.room text.sub{font-size:11px;font-weight:600;fill:var(--muted);letter-spacing:.1em}
.room .furn{fill:none;stroke:#B9C2CD;stroke-width:1.5;pointer-events:none}
.room:hover rect.r,.room:focus-visible rect.r,.room.on rect.r{fill:var(--tint)}
.room.on rect.r{stroke-width:3}
.room:focus-visible rect.r{stroke:var(--link)}
.fx-hint{margin-top:12px;font-size:.9rem;color:var(--muted)}
.legend{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:16px;font-size:.88rem;color:var(--ink)}
.legend span{display:inline-flex;align-items:center;gap:8px}
.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.fx-panel{background:var(--card);border:1px solid var(--line);position:sticky;top:calc(var(--hdr) + 20px)}
.fx-ph{aspect-ratio:4/3;overflow:hidden;background:var(--stone-2);position:relative}
.fx-ph img{width:100%;height:100%;object-fit:cover}
.fx-swatches{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr}
.fx-swatches div{display:flex;align-items:flex-end;padding:16px;color:#fff;font-weight:600;font-size:.92rem}
.fx-body{padding:22px 24px 26px;display:grid;gap:14px}
.fx-code{display:inline-flex;align-items:center;gap:10px;font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.fx-code i{width:14px;height:14px;border-radius:3px;display:inline-block}
.fx-body h3{font-size:1.6rem}
.fx-body ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.fx-body li{padding:10px 0 10px 26px;border-bottom:1px solid var(--line);position:relative;font-size:.95rem;color:var(--ink)}
.fx-body li::before{content:"";position:absolute;left:2px;top:16px;width:12px;height:7px;border-left:2px solid var(--leaf-deep);border-bottom:2px solid var(--leaf-deep);transform:rotate(-45deg)}
.fx-body .why{font-size:.92rem;color:var(--muted)}
.proof5{margin-top:clamp(40px,5vw,64px);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:1px solid var(--ink)}
.proof5 div{padding:20px 18px 0 0}
.proof5 div+div{padding-left:18px;border-left:1px solid var(--line)}
.proof5 b{display:block;font-family:var(--serif);font-weight:500;font-size:1.8rem;color:var(--navy);line-height:1}
.proof5 span{display:block;margin-top:10px;font-size:.92rem;color:var(--ink)}

/* Who we are */
.who{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,6vw,96px);align-items:center}
.who-copy{display:grid;gap:18px}
.who-copy h2{font-size:clamp(2.3rem,4.6vw,4rem);letter-spacing:-.03em}
.who-copy blockquote{margin:10px 0 0;padding-left:22px;border-left:2px solid var(--leaf);font-family:var(--serif);font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.45;color:var(--ink)}
.who-copy .sig{display:flex;align-items:center;gap:14px}
.who-copy .sig img{height:46px;width:auto}
.who-copy .sig span{font-size:.9rem;color:var(--muted);line-height:1.4}
.who-copy .sig b{display:block;color:var(--ink)}
.founders{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:6px}
.founders div{border-top:1px solid var(--line);padding-top:12px}
.founders b{display:block;color:var(--ink)}
.founders span{font-size:.88rem;color:var(--muted)}

@media (max-width:1120px){
  .docs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .proof5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .proof5 div:nth-child(4){padding-left:0;border-left:0}
  .proof5 div:nth-child(n+4){border-top:1px solid var(--line);margin-top:18px}
}
@media (max-width:860px){
  .open-grid,.fx,.who{grid-template-columns:minmax(0,1fr)}
  .capfig .cap,.capfig .cap.right{margin:-48px 12px 0 12px;max-width:none}
  .fx-panel{position:static}
  .docs{grid-template-columns:none}
  .proof5{grid-template-columns:minmax(0,1fr)}
  .proof5 div,.proof5 div+div{padding:14px 0;border-left:0;border-top:0;margin-top:0;border-bottom:1px solid var(--line)}
}

/* Sectors hub and careers: compact lists inside the two-column panels */
ul.plain{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
ul.plain li{position:relative;padding-left:18px;font-size:.95rem;color:var(--body);line-height:1.5}
ul.plain li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--line)}
ul.plain.tick li::before{width:11px;height:6px;border-radius:0;background:none;border-left:2px solid var(--leaf-deep);border-bottom:2px solid var(--leaf-deep);transform:rotate(-45deg);top:.45em}
.steps-light{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--ink)}
.steps-light div{padding:22px 22px 0 0}
.steps-light div+div{padding-left:22px;border-left:1px solid var(--line)}
.steps-light b{display:block;font-family:var(--serif);font-weight:500;font-size:1.9rem;color:var(--navy);line-height:1}
.steps-light h3{margin-top:14px;font-size:1.15rem}
.steps-light p{margin-top:8px;font-size:.95rem}
@media (max-width:860px){
  .steps-light{grid-template-columns:minmax(0,1fr)}
  .steps-light div,.steps-light div+div{padding:18px 0;border-left:0;border-bottom:1px solid var(--line)}
  .who-copy .founders{grid-template-columns:minmax(0,1fr)!important}
}

/* ---------- The Infinite Standard ---------- */
.std-hero{padding:clamp(48px,7vw,112px) var(--gutter) clamp(56px,7vw,104px);text-align:center}
.std-hero .crumb{text-align:left;max-width:var(--col);margin:0 auto}
.std-mark{width:92px;height:auto;margin:clamp(28px,4vw,48px) auto 0}
.std-hero h1{margin:26px auto 0;font-size:clamp(3.2rem,8.4vw,7.6rem);line-height:.95;letter-spacing:-.035em;max-width:12ch}
.std-hero .lede{margin:28px auto 0;max-width:56ch}
.std-hero .cta-row{justify-content:center;margin-top:32px}
.promises{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.promise{display:grid;grid-template-columns:72px minmax(0,.8fr) minmax(0,1.2fr);gap:24px;align-items:baseline;padding:30px 0;border-bottom:1px solid var(--line)}
.promise .pn{font-family:var(--serif);font-size:1.6rem;color:var(--leaf-deep)}
.promise .usual{color:var(--muted);text-decoration:line-through;text-decoration-color:rgba(91,107,125,.45);font-size:1.02rem}
.promise .usual span{display:block;text-decoration:none;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:6px;color:var(--muted)}
.promise .ours h3{font-size:clamp(1.6rem,2.8vw,2.3rem);letter-spacing:-.02em;line-height:1.08}
.promise .ours p{margin-top:8px;font-size:1rem}
.std-rooms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.std-room{background:var(--card);border:1px solid var(--line);padding:24px 24px 26px;display:grid;gap:12px;align-content:start}
.std-room-h{display:flex;align-items:center;gap:10px}
.std-room-h i{width:14px;height:14px;border-radius:3px;display:inline-block}
.std-room h3{font-size:1.45rem}
.std-two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,72px);margin-top:clamp(48px,6vw,80px);padding-top:clamp(36px,4vw,56px);border-top:1px solid var(--ink)}
.std-two>div{display:grid;gap:14px;align-content:start}
.std-two h3{font-size:clamp(1.6rem,2.6vw,2.1rem)}
.std-colours{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:0;border-top:1px solid var(--line)}
.std-colours li{display:grid;grid-template-columns:22px 70px minmax(0,1fr);gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);color:var(--ink)}
.std-colours i{width:16px;height:16px;border-radius:4px}
.std-steps{margin:6px 0 0;padding:0;list-style:none;counter-reset:s;border-top:1px solid var(--line)}
.std-steps li{counter-increment:s;display:grid;grid-template-columns:40px minmax(0,1fr);gap:8px;padding:12px 0;border-bottom:1px solid var(--line);color:var(--ink)}
.std-steps li::before{content:counter(s,decimal-leading-zero);font-family:var(--serif);color:var(--leaf-deep)}
@media (max-width:1120px){.std-rooms{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){
  .promise{grid-template-columns:44px minmax(0,1fr);gap:8px 14px}
  .promise .ours{grid-column:2}
  .std-rooms,.std-two{grid-template-columns:minmax(0,1fr)}
}
@media print{
  .final,.std-hero .cta-row,.cf-reviews{display:none!important}
  .rv{opacity:1!important;transform:none!important}
  .std-room,.promise{break-inside:avoid}
  .band,.std-hero{padding-block:28px!important}
}

/* Homepage brand band */
.std-band-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(20px,4vw,48px);align-items:center;margin-bottom:clamp(36px,5vw,64px)}
.std-band-head img{width:clamp(84px,9vw,128px);height:auto}
.std-band-head h2{font-size:clamp(2.6rem,6vw,5.4rem);letter-spacing:-.035em;line-height:.98;margin-top:12px}
.std-band-head .lede{margin-top:16px}
.std-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line-dark)}
.std-grid li{padding:26px 26px 28px 0;border-bottom:1px solid var(--line-dark)}
.std-grid li:not(:nth-child(3n+1)){padding-left:26px;border-left:1px solid var(--line-dark)}
.std-grid span{font-family:var(--serif);color:var(--leaf);font-size:1.1rem}
.std-grid b{display:block;margin-top:10px;font-family:var(--serif);font-weight:500;font-size:clamp(1.35rem,2vw,1.7rem);color:#fff;line-height:1.15}
.std-grid p{margin-top:8px;font-size:.95rem;color:rgba(255,255,255,.72)}
@media (max-width:860px){
  .std-band-head{grid-template-columns:minmax(0,1fr)}
  .std-grid{grid-template-columns:minmax(0,1fr)}
  .std-grid li,.std-grid li:not(:nth-child(3n+1)){padding:20px 0;border-left:0}
}

/* =====================================================================
   Art direction v5 (18 Oct 2026)
   One type system at real scale: tight heavy sans for headlines, serif
   italic for the one word that matters. Editorial section numbering.
   Photographs unmask on scroll. The infinity line as the brand device.
   ===================================================================== */
body{counter-reset:sec}
h1,h2,h3{font-family:var(--sans);font-weight:600;letter-spacing:-.04em}
h1{line-height:.9}
h2{font-size:clamp(2.6rem,6.2vw,5.8rem)!important;line-height:.94;letter-spacing:-.045em!important}
h3{letter-spacing:-.02em;font-weight:600}
h1 em,h2 em,h3 em,.statement-xl em,.big em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.025em}
.statement-xl{font-family:var(--sans);font-weight:500;letter-spacing:-.035em;font-size:clamp(2rem,4.4vw,4rem);line-height:1.08;max-width:24ch}
.statement-xl em{color:var(--muted)}

/* Editorial index: every section label is numbered */
.eyebrow{gap:14px;color:var(--ink);font-size:.74rem;letter-spacing:.14em}
.eyebrow::before{counter-increment:sec;content:counter(sec,decimal-leading-zero);width:auto;height:auto;background:none;font-family:var(--serif);font-style:italic;font-size:1.05rem;letter-spacing:0;text-transform:none;color:var(--leaf-deep)}
.navy .eyebrow,.final .eyebrow{color:#fff}
.navy .eyebrow::before,.final .eyebrow::before{color:var(--leaf)}

/* Opening */
.hx{padding:clamp(20px,3vw,40px) 0 0}
.hx-top{display:flex;justify-content:space-between;gap:16px;font-size:.82rem;color:var(--muted);padding:0 0 16px;border-bottom:1px solid var(--line)}
.hx-top b{color:var(--ink);font-weight:600}
.hx-h{margin:clamp(28px,5vw,72px) 0 0;font-size:clamp(3.8rem,12.4vw,12.6rem);line-height:.86;letter-spacing:-.06em}
.hx-h em{letter-spacing:-.035em}
.hx-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px 48px;align-items:end;margin-top:clamp(28px,4vw,52px)}
.hx-row .lede{max-width:46ch}
.hx-media{margin:clamp(40px,6vw,88px) 0 0;position:relative;overflow:hidden}
.hx-media img{width:100%;height:clamp(340px,58vw,880px);object-fit:cover;object-position:center 55%;display:block}
.js .hx-media img{animation:hx-in 1.6s cubic-bezier(.2,.7,.1,1) both}
@keyframes hx-in{from{clip-path:inset(14% 6% 0 6%);transform:scale(1.06)}to{clip-path:inset(0);transform:none}}
.hx-cap{display:flex;justify-content:space-between;gap:16px;padding:14px 0 0;font-size:.84rem;color:var(--muted)}
.hx-cap b{color:var(--ink);font-weight:600}
.hx-proof{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 40px;padding:clamp(28px,4vw,44px) 0;border-bottom:1px solid var(--line)}
.hx-proof .logos{display:flex;align-items:center;gap:36px}
.hx-proof .logos img{height:28px;width:auto}
.hx-proof .vt{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:1.1rem;color:var(--navy)}
.hx-proof .vt img{height:28px;border-radius:6px}

/* Photographs unmask as they enter */
.js .rv .frame,.js .rv .ph,.js .rv.ph,.js .feature-img,.js .people-img img{clip-path:inset(10% 0 0 0);transition:clip-path 1.2s cubic-bezier(.2,.7,.1,1)}
.js .rv.in .frame,.js .rv.in .ph,.js .rv.in.ph,.js .feature-img.in,.js .people-img.in img{clip-path:inset(0)}
.js .rv .frame img,.js .rv .ph img{transform:scale(1.08);transition:transform 1.6s cubic-bezier(.2,.7,.1,1)}
.js .rv.in .frame img,.js .rv.in .ph img{transform:none}

/* The infinity line: drawn once, as the section arrives */
.inf{position:absolute;pointer-events:none;overflow:visible}
.inf path{fill:none;stroke-width:1.2;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 3.2s cubic-bezier(.45,.05,.2,1)}
.inf.in path{stroke-dashoffset:0}
.std-band{position:relative;overflow:hidden}
.std-band .inf{right:-6%;top:6%;width:min(70vw,980px)}
.std-band .inf path{stroke:rgba(255,255,255,.16)}
.std-band .wrap{position:relative;z-index:1}
.std-hero{position:relative;overflow:hidden}
.std-hero .inf{left:50%;top:clamp(60px,9vw,120px);width:min(96vw,1300px);transform:translateX(-50%)}
.std-hero .inf path{stroke:rgba(9,25,43,.14)}
.std-hero .wrap{position:relative;z-index:1}
.std-hero h1{font-size:clamp(3.6rem,11vw,10.6rem);max-width:none;line-height:.88;letter-spacing:-.06em}

/* Section rhythm: more air, larger headings */
.head{margin-bottom:clamp(44px,6vw,88px)}
.head.split{align-items:end}
.who-copy h2,.people-copy h2{font-size:clamp(2.4rem,5vw,4.6rem)!important}
.std-band-head h2{font-size:clamp(3rem,7.4vw,7rem)!important}
.final h2.display{font-size:clamp(3rem,7vw,6.4rem)!important;letter-spacing:-.05em!important}
.open h1{font-size:clamp(3.4rem,8.8vw,8.6rem);letter-spacing:-.055em}
.feature-card h3{font-size:clamp(1.8rem,3vw,2.6rem)}
.feature-card .big{font-family:var(--sans);font-weight:600;letter-spacing:-.05em}
.svc-row h3{font-size:clamp(1.8rem,3.6vw,3.2rem);letter-spacing:-.04em}
.promise .ours h3{font-size:clamp(1.8rem,3.4vw,2.8rem)}

@media (max-width:860px){
  .hx-row{grid-template-columns:minmax(0,1fr)}
  .hx-top span:last-child{display:none}
  .hx-cap{flex-direction:column;gap:2px}
  .std-band .inf{width:140vw;right:-40%;top:2%}
}
@media (prefers-reduced-motion:reduce){
  .js .hx-media img{animation:none}
  .inf path{stroke-dashoffset:0;transition:none}
}
.hx>.wrap{max-width:calc(var(--col) + 2*var(--gutter));padding-inline:var(--gutter)}
.std-grid b{font-family:var(--sans);font-weight:600;letter-spacing:-.025em;font-size:clamp(1.4rem,2.2vw,1.85rem)}
.std-grid span{font-style:italic}
.doc-body h3,.case-body h3,.std-room h3,.ba-body h3{letter-spacing:-.025em}

/* Where we're going: roadmap */
.road-band{background:linear-gradient(180deg,var(--navy) 0%,#0B1F35 100%)}
.road{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;position:relative}
.road::before{content:"";position:absolute;left:0;right:0;top:9px;height:1px;background:var(--line-dark)}
.road li{position:relative;padding:40px 22px 0 0;display:grid;gap:8px;align-content:start}
.road li::before{content:"";position:absolute;left:0;top:3px;width:13px;height:13px;border-radius:50%;background:var(--navy);border:2px solid var(--leaf)}
.road li.live::before{background:var(--leaf)}
.road li.dev::before{border-color:var(--signal,#358EF2);background:var(--navy)}
.road li.soon::before{border-color:#8DB9F7;background:var(--navy)}
.road .st{justify-self:start;font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:5px 9px;border-radius:999px;background:rgba(98,191,61,.16);color:#9BE07A}
.road .dev .st{background:rgba(53,142,242,.18);color:#8DB9F7}
.road .soon .st{background:rgba(141,185,247,.14);color:#C9DDFB}
.road .when{font-size:.84rem;color:rgba(255,255,255,.55)}
.road b{font-family:var(--sans);font-weight:600;font-size:1.3rem;letter-spacing:-.02em;color:#fff;line-height:1.2;margin-top:4px}
.road p{font-size:.94rem;color:rgba(255,255,255,.72)}
@media (max-width:1120px){
  .road{grid-template-columns:minmax(0,1fr);gap:0}
  .road::before{left:6px;right:auto;top:0;bottom:0;width:1px;height:auto}
  .road li{padding:0 0 32px 36px}
  .road li::before{top:4px}
}

/* =====================================================================
   Motion layer (award-level, iPhone-safe). Paired with assets/motion.js.
   ===================================================================== */
/* Headlines: words rise from behind a mask */
.wsplit .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em}
.wsplit .w>span{display:inline-block;transform:translate3d(0,108%,0);transition:transform 1s cubic-bezier(.16,1,.3,1)}
.wsplit.in .w>span{transform:none}
.wsplit em .w>span,.wsplit .w em{font-style:italic}

/* Intro: the loop draws, the curtain lifts */
.intro{display:none}
html.intro-on .intro{display:flex;position:fixed;inset:0;z-index:1000;background:var(--paper);align-items:center;justify-content:center;flex-direction:column;gap:22px;transition:transform .7s cubic-bezier(.76,0,.24,1)}
html.intro-on body{overflow:hidden}
html.intro-out .intro{transform:translate3d(0,-100%,0)}
.intro svg{width:min(42vw,240px);overflow:visible}
.intro path{fill:none;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:intro-draw 1s cubic-bezier(.65,0,.35,1) .1s forwards}
.intro path.a{stroke:var(--leaf)}.intro path.b{stroke:#358EF2}
.intro span{font-family:var(--sans);font-weight:600;font-size:clamp(1.4rem,3vw,1.9rem);letter-spacing:-.04em;color:var(--navy);opacity:0;animation:intro-word .6s ease .55s forwards}
@keyframes intro-draw{to{stroke-dashoffset:0}}
@keyframes intro-word{to{opacity:1}}

/* Hero image opens out to the full width as you scroll */
.hx-media{--open:0}
.hx-media img{animation:none!important;clip-path:inset(0 calc((1 - var(--open)) * 4%) round calc((1 - var(--open)) * 14px));transform:scale(calc(1.08 - var(--open) * .08));transform-origin:center 30%;will-change:transform}
html:not(.ready) .hx-media img{clip-path:inset(0 4% round 14px)}

/* Marquee: the standard, on a loop */
.marquee{overflow:hidden;border-block:1px solid var(--line);background:var(--card);padding:22px 0;position:relative}
.marquee-track{display:flex;width:max-content;animation:marquee 46s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee span{display:inline-flex;align-items:center;gap:28px;padding-right:28px;font-family:var(--sans);font-weight:600;font-size:clamp(1.5rem,3.4vw,2.8rem);letter-spacing:-.035em;color:var(--navy);white-space:nowrap}
.marquee span em{font-family:var(--serif);font-weight:400;font-style:italic;color:var(--muted)}
.marquee i{display:inline-block;width:46px;height:22px;background:url(/assets/cf-mark-96.webp) center/contain no-repeat}
@keyframes marquee{to{transform:translate3d(-50%,0,0)}}

/* The work: pinned, scrolling sideways on desktop; a native swipe on phones */
.hpin-intro{display:grid;gap:18px;max-width:560px}
@media (min-width:1024px){
  .hpin.on{padding:0;position:relative}
  .hpin.on .hpin-sticky{position:sticky;top:var(--hdr);height:calc(100vh - var(--hdr));overflow:hidden;display:flex;align-items:center}
  .hpin.on .hpin-track{display:flex;align-items:center;gap:clamp(24px,3vw,48px);padding:0 var(--gutter);will-change:transform}
  .hpin.on .hpin-intro{flex:0 0 min(42vw,560px);padding-right:clamp(20px,4vw,64px)}
  .hpin.on .docs{display:flex;gap:clamp(20px,2.4vw,36px);margin:0;padding:0;overflow:visible}
  .hpin.on .doc{flex:0 0 clamp(300px,28vw,440px)}
  .hpin.on .doc .ph{aspect-ratio:4/5}
  .hpin.on .hpin-bar{position:absolute;left:var(--gutter);right:var(--gutter);bottom:28px;height:2px;background:var(--line)}
  .hpin.on .hpin-bar i{display:block;height:100%;background:var(--navy);transform-origin:left;transform:scaleX(var(--prog,0))}
}
.hpin-bar{display:none}
@media (min-width:1024px){.hpin.on .hpin-bar{display:block}}
@media (max-width:1023px){
  .hpin .hpin-intro{margin-bottom:clamp(32px,6vw,56px);max-width:none}
}

/* Cursor (fine pointers only; created by motion.js) */
.cursor{position:fixed;left:0;top:0;z-index:2000;pointer-events:none;width:0;height:0}
.cursor::before{content:"";position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:var(--navy);transform:scale(0);transition:transform .3s cubic-bezier(.16,1,.3,1),background .3s}
.cursor.on::before{transform:scale(1)}
.cursor.link::before{transform:scale(3.2);background:rgba(9,25,43,.12)}
.cursor.big::before{transform:scale(8.4);background:var(--navy)}
.cursor span{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.02em;color:#fff;white-space:nowrap;opacity:0;transition:opacity .2s}
.cursor.big span{opacity:1}
.btn-primary,.btn-light{transition:transform .35s cubic-bezier(.16,1,.3,1),background .18s,color .18s,border-color .18s}

@media (prefers-reduced-motion:reduce){
  .wsplit .w>span{transform:none;transition:none}
  .marquee-track{animation:none}
  .hx-media img{clip-path:none;transform:none}
  html.intro-on .intro{display:none}
}

/* Two before/after pairs, side by side at equal size */
.bas.mixed.two{grid-template-columns:1fr 1fr;grid-template-rows:auto}
.bas.mixed.two .ba:first-child{grid-row:auto}
.bas.mixed.two .ba .ba-stage,.bas.mixed.two .ba:not(:first-child) .ba-stage{aspect-ratio:1/1}
@media (max-width:860px){.bas.mixed.two{grid-template-columns:none}.bas.mixed.two .ba .ba-stage{aspect-ratio:1/1}}
.std-band-head{grid-template-columns:minmax(0,1fr)}
.std-band-head h2{font-size:clamp(2.6rem,5.6vw,5.4rem)!important}
/* Footer column headings stay small labels, not display headlines */
.sh-ft .sh-ft-h,footer .sh-ft-h{font-size:.8rem!important;line-height:1.3!important;letter-spacing:.14em!important}

/* Use the whole screen on laptops and desktops (pairs with the root scale in shell.css) */
:root{--gutter:clamp(16px,4.4vw,80px);--col:1600px}
body{font-size:1.0625rem}
.hpin-intro,.hpin.on .hpin-intro{max-width:none}
.hpin.on .hpin-intro{flex:0 0 min(40vw,40rem)}
.hpin.on .doc{flex:0 0 clamp(300px,27vw,34rem)}
@media (max-width:860px){body{font-size:16.5px}}
@media (min-width:861px){.fld input,.fld select,.fld textarea{font-size:1rem}}
/* Laptop and desktop: larger reading sizes so the page fills the screen */
@media (min-width:861px){
  .lede{font-size:clamp(1.06rem,1.28vw,1.45rem)}
  .hx .lede{max-width:54ch}
  .hx-row{gap:clamp(32px,5vw,96px)}
}
/* Laptop and up: the headline runs edge to edge on one line */
@media (min-width:1024px){
  .hx-h{white-space:nowrap;font-size:calc((min(100vw, var(--col) + 2*var(--gutter)) - 2*var(--gutter)) / 8.5)!important;line-height:.95}
  .hx-h em{display:inline!important}
}

/* ---------- Clarity: contrast, sizes, buttons, section separation ---------- */
:root{--body:#25364A;--muted:#475769;--paper:#F4F1EC;--line:#DDD7CD}
/* Buttons: bigger, and the main action in Leaf green (the brand colour reserved for actions) */
.btn{min-height:56px;padding:0 30px;font-size:1.05rem;font-weight:600}
.btn-primary{background:var(--leaf);color:var(--navy);font-weight:700}
.btn-primary:hover{background:#56AE33;color:var(--navy)}
.btn-outline{border-width:1.5px}
.final .btn-primary,.frm .btn-primary{background:var(--leaf);color:var(--navy)}
/* Small print that is still easy to read */
.label{font-size:.8rem}
.hx-top,.hx-cap{font-size:.92rem}
.doc-body p,.case-body p,.ba-body p,.svc-row p{font-size:1rem;line-height:1.6}
.photo-strip span{font-size:.92rem}
.muted{color:var(--muted)}
/* Laptop: the photo gallery is a tidy grid, not a strip that runs off the edge */
@media (min-width:861px){
  .hpin{padding:var(--pad) var(--gutter)}
  .hpin .hpin-sticky,.hpin .hpin-track{max-width:var(--col);margin-inline:auto}
  .hpin .hpin-intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:end;gap:clamp(24px,4vw,64px)}
  .hpin .hpin-intro .eyebrow{grid-column:1/-1}
}

/* Clarity: nothing important is set smaller than easy reading size on a laptop */
@media (min-width:861px){
  .hpin .hpin-intro{margin-bottom:clamp(40px,5vw,80px)!important}
  .svc-row p,.case-body .outcome,.ba-body p,.homes-band .lede,.who-copy .lede,.people-copy .lede{font-size:1.05rem}
  .fx-body li,#fx-list li{font-size:1rem}
  .fx-hint,.legend,.legend span,.fx-panel .why,.who-copy p.muted,.people-copy p.muted,#walk-the-floor p.muted{font-size:.95rem}
  .proof5 span,.road p,.big-figs em,.ticks li span,.homes-links span,.olist span,.founders span,.contact-lines span,.case-body .tag{font-size:.95rem}
  .road b,.ticks li,.olist b,.big-figs>div>span{font-size:1.08rem}
  .std-grid p{font-size:1rem;color:rgba(255,255,255,.82)}
  .std-grid b{font-size:clamp(1.4rem,1.9vw,1.9rem)}
  .cap b{font-size:1rem}
  .frm label{font-size:.92rem}
  .frm-h{font-size:1.35rem}
  .cf-rv-text{font-size:1.05rem}
}
/* One headline style everywhere: sans, with the italic serif accent */
.final h2,.final h2.display,.cf-rv-h{font-family:var(--sans)!important;font-weight:600;letter-spacing:-.045em;line-height:.98}
.final h2 em{font-family:var(--serif);font-weight:400;font-style:italic;letter-spacing:-.03em}
.cf-rv-h{font-size:clamp(2.6rem,6.2vw,5.8rem)!important}
.frm-h{font-family:var(--sans)!important;font-weight:600;letter-spacing:-.02em}

/* Buildings carousel: swipe on phones, arrows on laptops; starts aligned with the page column */
.ps-wrap{position:relative}
.photo-strip{scroll-behavior:smooth;scrollbar-width:none;padding-left:max(var(--gutter),calc((100vw - var(--col))/2));padding-right:var(--gutter);scroll-padding-left:max(var(--gutter),calc((100vw - var(--col))/2))}
.photo-strip::-webkit-scrollbar{display:none}
.photo-strip a{width:clamp(240px,26vw,420px)}
.ps-ctl{display:flex;justify-content:flex-end;gap:10px;max-width:var(--col);margin:20px auto 0;padding:0 var(--gutter);box-sizing:content-box}
.ps-ctl button{width:52px;height:52px;border-radius:50%;border:1.5px solid var(--navy);background:transparent;color:var(--navy);font-size:1.2rem;cursor:pointer;transition:background .2s,color .2s}
.ps-ctl button:hover{background:var(--navy);color:#fff}
.ps-ctl button:disabled{opacity:.3;cursor:default;background:transparent;color:var(--navy)}
@media (max-width:860px){.ps-ctl{display:none}}
/* Headline word masks: room for tight letter-spacing and italic overhangs, so no letter edge is ever shaved */
.wsplit .w{padding:0 .16em .16em;margin:0 -.16em -.16em}
.docs.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:860px){.docs.three{grid-template-columns:none}}

/* ---------- Components for the rebuilt inner pages ---------- */
.proofbar{padding:22px var(--gutter);border-block:1px solid var(--line);background:var(--card)}
.proofbar .wrap{max-width:var(--col);display:flex;flex-wrap:wrap;align-items:center;gap:14px 36px}
.proofbar .logos{display:flex;align-items:center;gap:28px}
.proofbar .logos img{height:26px;width:auto}
.proofbar .vt{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--ink);font-size:1.1rem}
.proofbar p{margin:0;color:var(--body);font-size:1rem;flex:1 1 320px}
.cases-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,2.4vw,36px)}
.cases-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.4vw,32px)}
.case-lg{display:flex;flex-direction:column;text-decoration:none;color:inherit;background:rgba(255,255,255,.04);border:1px solid var(--line-dark)}
.case-lg .ph{aspect-ratio:16/10;overflow:hidden}
.case-lg .ph img,.cases-3 .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.case-lg:hover .ph img,.cases-3 .case:hover .ph img{transform:scale(1.03)}
.case-lg-body{padding:clamp(20px,2.4vw,32px);display:grid;gap:10px}
.case-lg-body h3{font-size:clamp(1.5rem,2.2vw,2rem);color:#fff;margin:0}
.case-lg-body p{margin:0;color:rgba(255,255,255,.82);font-size:1.05rem}
.case-lg-body .label{color:var(--leaf)}
.case-lg-body .more{color:#fff;margin-top:6px}
.cases-3 .ph{aspect-ratio:4/3;overflow:hidden}
.trio{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--ink)}
.trio li{padding:clamp(22px,2.6vw,36px) clamp(18px,2.2vw,32px) clamp(22px,2.6vw,36px) 0;display:grid;gap:12px;align-content:start}
.trio li+li{padding-left:clamp(18px,2.2vw,32px);border-left:1px solid var(--line)}
.trio span{font-family:var(--serif);font-style:italic;color:var(--leaf-deep);font-size:1.1rem}
.trio h3{margin:0;font-size:clamp(1.3rem,1.8vw,1.7rem);letter-spacing:-.02em}
.trio p{margin:0;font-size:1.05rem;color:var(--body)}
.plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,24px);margin-bottom:clamp(28px,3vw,44px)}
.plan{background:var(--card);border:1px solid var(--line);padding:clamp(22px,2.4vw,32px);display:grid;gap:10px;align-content:start}
.plan.mid{border:2px solid var(--navy)}
.plan h3{margin:0;font-size:clamp(1.4rem,2vw,1.8rem);letter-spacing:-.02em}
.plan p{margin:0;font-size:1.02rem;color:var(--body)}
.ptable{overflow-x:auto;background:var(--card);border:1px solid var(--line)}
.ptable table{width:100%;border-collapse:collapse;font-size:1.02rem}
.ptable th,.ptable td{padding:15px clamp(10px,1.4vw,20px);border-bottom:1px solid var(--line);text-align:center}
.ptable thead th{font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);font-weight:700;background:var(--stone)}
.ptable thead th:first-child,.ptable tbody th{text-align:left;font-weight:500;color:var(--ink)}
.ptable thead th:first-child{letter-spacing:.1em}
.ptable td:nth-child(3),.ptable th:nth-child(3){background:rgba(9,25,43,.035)}
.ptable .short{display:none}
.pm.y{color:var(--leaf-deep);font-weight:700;font-size:1.15rem}
.pm.o{color:var(--link);font-size:.92rem;font-weight:600}
.pm.n{color:#9AA5B1}
.statement-sm{font-family:var(--serif);font-style:italic;font-size:clamp(1.4rem,2.4vw,2.2rem);line-height:1.3;color:var(--ink);margin:clamp(28px,3vw,44px) 0 0;max-width:36ch}
.std-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.sect-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.sect-list a{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr) auto;gap:clamp(16px,3vw,48px);align-items:center;padding:clamp(20px,2.4vw,32px) 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.sect-list h3{margin:0;font-size:clamp(1.4rem,2.4vw,2.2rem);letter-spacing:-.03em}
.sect-list p{margin:0;font-size:1.05rem;color:var(--body)}
.sect-list .arr{font-size:1.4rem;color:var(--ink);transition:transform .3s}
.sect-list a:hover .arr{transform:translateX(6px)}
.pill-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(24px,3vw,40px)}
.pill-links a{display:inline-flex;align-items:center;min-height:46px;padding:0 20px;border:1.5px solid var(--line);border-radius:999px;color:var(--ink);text-decoration:none;font-weight:600;font-size:.98rem}
.pill-links a:hover{border-color:var(--ink)}
.steps-light.five{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.steps-light.five{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:860px){
  .cases-2,.cases-3,.trio,.plans,.std-grid.two,.steps-light.five{grid-template-columns:minmax(0,1fr)}
  .trio li,.trio li+li{padding:22px 0;border-left:0}
  .trio li+li{border-top:1px solid var(--line)}
  .sect-list a{grid-template-columns:minmax(0,1fr) auto}
  .sect-list p{grid-column:1/-1;grid-row:2}
  .ptable .full{display:none}
  .ptable .short{display:inline}
  .ptable table{font-size:.95rem}
  .ptable th,.ptable td{padding:13px 6px}
  .ptable thead th{font-size:.7rem;letter-spacing:.04em}
  .ptable tbody th{padding-left:12px}
  .pm.o{font-size:.78rem}
  .proofbar .wrap{gap:12px 24px}
}
/* Headings get the room they need: wider heading column, calmer sizes on inner pages */
@media (min-width:861px){
  .head.split{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)!important;align-items:end}
  .open h1{font-size:clamp(2.8rem,5.2vw,5.6rem)!important;line-height:.98}
  .open .lede{font-size:clamp(1.1rem,1.35vw,1.45rem)}
}
@media (min-width:861px){
  .open-grid{align-items:center!important}
  .open .capfig .frame{max-height:min(68vh,640px);overflow:hidden}
  .open .capfig .frame img{width:100%;height:100%;max-height:min(68vh,640px);object-fit:cover}
}

/* ---------- Price estimator ---------- */
.est{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(24px,4vw,64px);align-items:start}
.est-qs{display:grid;gap:clamp(24px,2.6vw,36px)}
.est-q h3{display:flex;align-items:baseline;gap:12px;margin:0 0 6px;font-size:clamp(1.25rem,1.7vw,1.6rem);letter-spacing:-.02em}
.est-q h3 span{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--leaf-deep);font-size:1rem}
.est-hint{margin:0 0 12px;color:var(--muted);font-size:.95rem}
.est-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.est-chip{min-height:48px;padding:10px 18px;border:1.5px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font:inherit;font-size:1rem;font-weight:500;cursor:pointer;text-align:left;transition:border-color .15s,background .15s,color .15s}
.est-chip:hover{border-color:var(--ink)}
.est-chip[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.est-side{position:sticky;top:calc(var(--hdr) + 24px)}
.est-res,.est-empty{background:var(--card);border:1px solid var(--line);padding:clamp(22px,2.6vw,36px);display:grid;gap:12px}
.est-res:not([hidden])+.est-empty{display:none}
.est-empty p{margin:0;color:var(--muted);font-size:1.05rem}
.est-h{margin:0;font-size:clamp(1.6rem,2.4vw,2.2rem);letter-spacing:-.03em}
.est-p,.est-w{margin:0;font-size:1.05rem;color:var(--body)}
.est-band{border-block:1px solid var(--line);padding:14px 0;display:grid;gap:6px}
.est-fig{margin:0;font-size:clamp(1.8rem,3vw,2.6rem);font-weight:600;letter-spacing:-.03em;color:var(--ink);line-height:1.1}
.est-fig small{display:block;font-size:.9rem;font-weight:500;letter-spacing:0;color:var(--muted);margin-top:4px}
.est-sub{margin:0;font-size:.95rem;color:var(--body)}
.est-cta{justify-self:start;margin-top:6px}
.est-note{margin:0;font-size:.85rem;color:var(--muted)}
@media (max-width:860px){.est{grid-template-columns:minmax(0,1fr)}.est-side{position:static}.est-chip{width:100%}}

/* ---------- Industries hub and sector pages ---------- */
.ind-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,32px)}
.ind{display:flex;flex-direction:column;text-decoration:none;color:inherit;background:var(--card);border:1px solid var(--line);transition:border-color .2s,transform .3s}
.ind:hover{border-color:var(--ink)}
.ind .ph{aspect-ratio:4/3;overflow:hidden}
.ind .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.ind:hover .ph img{transform:scale(1.03)}
.ind-body{padding:clamp(20px,2.2vw,28px);display:grid;gap:10px;align-content:start;flex:1}
.ind-body h2{font-size:clamp(1.35rem,1.8vw,1.75rem)!important;letter-spacing:-.025em!important;line-height:1.1!important;margin:0}
.ind-body p{margin:0;font-size:1.02rem;color:var(--body)}
.ind-body .more{margin-top:auto;padding-top:6px}
.press{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));border-top:1px solid var(--ink)}
.press li{display:grid;gap:10px;padding:clamp(18px,2vw,28px) clamp(16px,1.8vw,24px) clamp(18px,2vw,28px) 0;border-bottom:1px solid var(--line);font-size:clamp(1.1rem,1.4vw,1.3rem);font-weight:500;color:var(--ink);line-height:1.35}
.press span{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--leaf-deep);font-size:1rem}
.open .eyebrow{display:inline-flex}
@media (max-width:1100px){.ind-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.ind-grid{grid-template-columns:minmax(0,1fr)}}
.ind-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--ink)}
.ind-links a{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:clamp(18px,2vw,26px) clamp(4px,1vw,16px) clamp(18px,2vw,26px) 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);font-size:clamp(1.15rem,1.6vw,1.5rem);font-weight:600;letter-spacing:-.02em}
.ind-links i{font-style:normal;transition:transform .3s}
.ind-links a:hover i{transform:translateX(6px)}
@media (max-width:860px){.ind-links{grid-template-columns:minmax(0,1fr)}}
.steps-light.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:860px){.steps-light.three{grid-template-columns:minmax(0,1fr)}}

/* ---------- Tile depth: hover lift, image zoom, drawn underline, gentle tilt (laptops), press (phones) ---------- */
.ind,.case,.case-lg,.doc,.plan,.photo-strip a,.trio li,.press li{--lift:0px;--rx:0deg;--ry:0deg;--mx:0px;--my:0px;position:relative;transform:perspective(900px) translateY(var(--lift)) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s cubic-bezier(.2,.7,.2,1),border-color .25s,background .25s;will-change:transform}
.ind .ph img,.case .ph img,.case-lg .ph img,.doc .ph img,.photo-strip .im img{transform:translate3d(var(--mx),var(--my),0) scale(1.001);transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.ind::after,.case-lg::after,.doc::after,.plan::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--leaf);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.7,.2,1);z-index:2}
.case .case-body h3,.ind-body h2{transition:color .25s}
@media (hover:hover) and (pointer:fine){
  .ind:hover,.case:hover,.case-lg:hover,.doc:hover,.plan:hover,.photo-strip a:hover{--lift:-8px;box-shadow:0 30px 60px -28px rgba(9,25,43,.38),0 10px 22px -14px rgba(9,25,43,.18);z-index:3}
  .case:hover{box-shadow:none}
  .case:hover .ph{box-shadow:0 30px 60px -28px rgba(9,25,43,.4),0 10px 22px -14px rgba(9,25,43,.2)}
  .ind:hover .ph img,.case:hover .ph img,.case-lg:hover .ph img,.doc:hover .ph img,.photo-strip a:hover .im img{transform:translate3d(var(--mx),var(--my),0) scale(1.07)}
  .ind:hover::after,.case-lg:hover::after,.doc:hover::after,.plan:hover::after{transform:scaleX(1)}
  .ind:hover .more,.case-lg:hover .more{gap:14px}
  .case:hover .case-body h3,.ind:hover .ind-body h2{color:var(--link)}
  .plan:hover{border-color:var(--navy)}
  .trio li:hover,.press li:hover{--lift:-4px}
  .trio li:hover span,.press li:hover span{color:var(--leaf)}
  .sect-list a,.ind-links a{transition:background .3s,padding .35s cubic-bezier(.2,.7,.2,1)}
  .sect-list a:hover,.ind-links a:hover{background:var(--card);padding-left:clamp(12px,1.4vw,20px)}
  .std-grid li{transition:background .3s}
  .std-grid li:hover{background:rgba(255,255,255,.05)}
  .more{transition:gap .3s cubic-bezier(.2,.7,.2,1)}
  .more:hover{gap:14px}
}
.photo-strip a span{transition:color .25s}
.photo-strip a:hover span{color:var(--ink)}
/* Phones: a light press so tiles still feel physical */
@media (hover:none){
  .ind:active,.case:active,.case-lg:active,.doc:active,.plan:active,.photo-strip a:active{--lift:0px;transform:scale(.985);transition-duration:.12s}
}
@media (prefers-reduced-motion:reduce){
  .ind,.case,.case-lg,.doc,.plan,.photo-strip a,.trio li,.press li{transform:none!important;transition:none!important}
  .ind .ph img,.case .ph img,.case-lg .ph img,.doc .ph img,.photo-strip .im img{transform:none!important}
}
/* Tile depth must win over the scroll-reveal end state */
:is(.ind,.case,.case-lg,.doc,.photo-strip a){--z:1}
@media (hover:hover) and (pointer:fine){:is(.ind,.case,.case-lg,.doc,.photo-strip a):hover{--z:1.07}}
html.js :is(.ind.rv.in,.case.rv.in,.case-lg.rv.in,.doc.rv.in,.plan.rv.in,.rv.in .ind,.rv.in .case,.rv.in .case-lg,.rv.in .doc,.rv.in .plan,.rv.in .trio li,.trio.rv.in li,.press.rv.in li){transform:perspective(900px) translateY(var(--lift)) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s cubic-bezier(.2,.7,.2,1),border-color .25s,background .25s,opacity .8s ease}
html.js :is(.ind.rv.in,.case.rv.in,.case-lg.rv.in,.doc.rv.in,.rv.in .ind,.rv.in .case,.rv.in .case-lg,.rv.in .doc) .ph img,:is(.ind,.case,.case-lg,.doc) .ph img,.photo-strip .im img{transform:translate3d(var(--mx),var(--my),0) scale(var(--z))}
@media (prefers-reduced-motion:reduce){html.js :is(.ind,.case,.case-lg,.doc,.plan,.trio li,.press li){transform:none!important}}

/* ---------- About and story components ---------- */
.chips-proof{list-style:none;margin:clamp(22px,2.6vw,32px) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.chips-proof li{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--card);font-size:.92rem;font-weight:600;color:var(--ink)}
.chips-proof li::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--leaf)}
.big-figs.five{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.big-figs.five{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.big-figs.five{grid-template-columns:repeat(2,minmax(0,1fr))}}
.reel{justify-self:center;width:min(100%,380px)}
.reel video{width:100%;height:auto;aspect-ratio:9/16;display:block;background:#000;box-shadow:0 40px 80px -30px rgba(0,0,0,.6)}
.story-2{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(28px,6vw,96px);align-items:start}
.prose p{font-size:clamp(1.08rem,1.3vw,1.3rem);line-height:1.7;color:var(--body);margin:0 0 1.1em;max-width:62ch}
.prose .pull{font-family:var(--serif);font-style:italic;font-size:clamp(1.4rem,2.2vw,2rem);line-height:1.35;color:var(--ink);border-left:3px solid var(--leaf);padding-left:clamp(16px,2vw,28px);margin:1.4em 0}
.founder-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(18px,2.4vw,32px)}
.fcard{background:var(--card);border:1px solid var(--line);padding:clamp(24px,3vw,44px);display:grid;gap:12px;align-content:start}
.fcard h3{margin:0;font-size:clamp(1.8rem,3vw,2.8rem);letter-spacing:-.035em}
.fcard p{margin:0;font-size:1.05rem;color:var(--body)}
.timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:relative}
.timeline::before{content:"";position:absolute;left:0;right:0;top:9px;height:2px;background:var(--line)}
.timeline li{position:relative;padding:36px clamp(12px,1.6vw,24px) 0 0;display:grid;gap:8px;align-content:start}
.timeline li::before{content:"";position:absolute;left:0;top:2px;width:16px;height:16px;border-radius:50%;background:var(--card);border:3px solid var(--leaf)}
.timeline .when{font-family:var(--serif);font-style:italic;color:var(--leaf-deep);font-size:1rem}
.timeline h3{margin:0;font-size:clamp(1.15rem,1.5vw,1.4rem);letter-spacing:-.02em}
.timeline p{margin:0;font-size:1rem;color:var(--body)}
.std-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.duo-text{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(32px,6vw,96px);align-items:start}
.duo-text p{font-size:clamp(1.05rem,1.2vw,1.2rem);line-height:1.7;color:var(--body);margin:18px 0 0}
.cred-wrap{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(24px,4vw,64px);align-items:start}
.cred{background:var(--navy);color:#fff;padding:clamp(26px,3.2vw,48px);display:grid;gap:14px}
.cred h3{margin:0;color:#fff;font-size:clamp(1.8rem,3vw,2.8rem);letter-spacing:-.035em}
.cred p{margin:0;color:rgba(255,255,255,.84);font-size:1.05rem}
.cred .label{color:var(--leaf)}
.cred .muted{color:rgba(255,255,255,.66)!important}
.cred dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:rgba(255,255,255,.14);margin:6px 0}
.cred dl div{background:var(--navy);padding:14px 16px 14px 0}
.cred dt{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.cred dd{margin:4px 0 0;font-weight:600;color:#fff}
.cases-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(18px,2vw,28px)}
.cases-4 .ph{aspect-ratio:4/5;overflow:hidden}
.cases-4 .ph img{width:100%;height:100%;object-fit:cover}
@media (max-width:1100px){.timeline{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:36px}.std-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.cases-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){
  .story-2,.founder-cards,.duo-text,.cred-wrap{grid-template-columns:minmax(0,1fr)}
  .story-2>div:empty{display:none}
  .timeline{grid-template-columns:minmax(0,1fr);padding-left:28px}
  .timeline::before{left:7px;right:auto;top:0;bottom:0;width:2px;height:auto}
  .timeline li{padding:0 0 28px}
  .timeline li::before{left:-28px;top:4px}
  .std-grid.four{grid-template-columns:minmax(0,1fr)}
  .cred dl{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:560px){.cases-4{grid-template-columns:minmax(0,1fr)}}
:is(.cases-4 .case){--z:1}
.big-figs b span{display:inline;margin:0;font-weight:inherit;color:inherit;font-size:inherit}
.big-figs b small{display:inline}
/* Room tabs (Homes) */
.room-tabs{background:var(--card);border:1px solid var(--line)}
.rt-list{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--line);overflow-x:auto}
.rt-list button{flex:1 0 auto;min-height:58px;padding:0 clamp(16px,2vw,28px);background:none;border:0;border-bottom:3px solid transparent;font:inherit;font-weight:600;font-size:1.02rem;color:var(--muted);cursor:pointer;transition:color .2s,border-color .2s,background .2s}
.rt-list button:hover{color:var(--ink);background:var(--paper)}
.rt-list button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--leaf)}
.rt-panel{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:clamp(20px,3vw,48px);padding:clamp(22px,3vw,40px)}
.rt-panel[hidden]{display:none}
.rt-panel ul{margin:12px 0 0;padding:0;list-style:none;display:grid;gap:8px}
.rt-panel li{font-size:1rem;color:var(--body);line-height:1.5}
.rt-panel ul:not(.tick) li{padding-left:16px;position:relative}
.rt-panel ul:not(.tick) li::before{content:"";position:absolute;left:0;top:.65em;width:6px;height:1.5px;background:var(--muted)}
.plan .more{margin-top:8px}
@media (max-width:860px){.rt-panel{grid-template-columns:minmax(0,1fr)}.rt-list{flex-wrap:nowrap}.rt-list button{flex:0 0 auto}}
.est [hidden],.est-res[hidden],.est-band[hidden],.est-q[hidden]{display:none!important}
.story-2 h2{font-size:clamp(2.2rem,3.8vw,3.8rem)!important}
/* Contact */
.contact-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,28px)}
.ccard{display:grid;gap:10px;align-content:start;padding:clamp(22px,2.6vw,36px);background:var(--paper);border:1px solid var(--line);text-decoration:none;color:inherit;position:relative;transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s,border-color .25s}
.ccard b{font-size:clamp(1.3rem,2vw,1.9rem);letter-spacing:-.025em;color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.ccard p{margin:0;color:var(--body);font-size:1rem}
.ccard::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--leaf);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover) and (pointer:fine){.ccard:hover{transform:translateY(-6px);box-shadow:0 30px 60px -28px rgba(9,25,43,.35);border-color:var(--ink)}.ccard:hover::after{transform:scaleX(1)}}
.fc-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:6px}
.final-grid.light{align-items:start}
@media (max-width:860px){.contact-cards{grid-template-columns:minmax(0,1fr)}}
.fldhint{margin:8px 0 0;font-size:.9rem;color:var(--link)}

/* ---------- Case studies ---------- */
.case-dl{display:flex;flex-wrap:wrap;gap:0;margin:clamp(22px,2.6vw,32px) 0 0;border-top:1px solid var(--line)}
.case-dl div{padding:12px 28px 0 0}
.case-dl dt{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600}
.case-dl dd{margin:4px 0 0;font-weight:600;color:var(--ink)}
.case-blocks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:clamp(28px,5vw,80px)}
.case-blocks h3{margin:0 0 14px;font-size:clamp(1.4rem,2vw,1.9rem);letter-spacing:-.025em}
.case-blocks p{font-size:clamp(1.05rem,1.2vw,1.2rem);line-height:1.7;color:var(--body);margin:0 0 1em;max-width:60ch}
.case-note{margin-top:22px;font-size:.95rem;max-width:72ch}
.bas.mixed.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.bas.mixed.three .ba:first-child{grid-row:auto}
.bas.mixed.three .ba .ba-stage,.bas.mixed.three .ba:not(:first-child) .ba-stage{aspect-ratio:4/5}
.docs.two-up{grid-template-columns:repeat(2,minmax(0,1fr))}
.stage-tabs .rt-list{background:var(--card);border:1px solid var(--line);margin-bottom:clamp(20px,2.4vw,32px)}
.rt-list .n{display:inline-grid;place-items:center;min-width:24px;height:24px;margin-left:10px;padding:0 6px;border-radius:999px;background:var(--stone);color:var(--ink);font-size:.8rem;font-weight:700}
.rt-list button[aria-selected="true"] .n{background:var(--leaf);color:var(--navy)}
.gal-blurb{margin:0 0 18px;font-family:var(--serif);font-style:italic;font-size:clamp(1.2rem,1.8vw,1.6rem);color:var(--ink)}
.gal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.2vw,18px)}
.gal-i{display:grid;gap:8px;text-decoration:none;color:var(--body);cursor:zoom-in}
.gal-ph{display:block;aspect-ratio:4/5;overflow:hidden;background:var(--stone-2);position:relative}
.gal-ph img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.gal-ph::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(9,25,43,.35),transparent 45%);opacity:0;transition:opacity .35s}
.gal-cap{font-size:.92rem;line-height:1.4}
@media (hover:hover) and (pointer:fine){.gal-i:hover .gal-ph img{transform:scale(1.06)}.gal-i:hover .gal-ph::after{opacity:1}.gal-i:hover .gal-cap{color:var(--ink)}}
.scope-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,80px)}
.scope-2 .ticks{margin-top:12px}
ul.cross{list-style:none;margin:12px 0 0;padding:0;border-top:1px solid var(--line)}
ul.cross li{padding:14px 0 14px 28px;border-bottom:1px solid var(--line);position:relative;color:var(--body)}
ul.cross li::before{content:"–";position:absolute;left:4px;color:var(--muted)}
@media (max-width:1100px){.gal{grid-template-columns:repeat(3,minmax(0,1fr))}.bas.mixed.three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.scope-2,.docs.two-up,.bas.mixed.three{grid-template-columns:minmax(0,1fr)}.gal{grid-template-columns:repeat(2,minmax(0,1fr))}.bas.mixed.three .ba .ba-stage{aspect-ratio:1/1}}

/* Lightbox */
.lb{position:fixed;inset:0;z-index:500;background:rgba(5,7,10,.94);display:grid;grid-template-rows:auto 1fr auto;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.lb.on{opacity:1;visibility:visible}
.lb-top{display:flex;justify-content:space-between;align-items:center;padding:14px clamp(14px,2vw,28px);color:rgba(255,255,255,.8);font-size:.95rem}
.lb-stage{position:relative;display:grid;place-items:center;padding:0 clamp(56px,7vw,110px);min-height:0}
.lb-stage img{max-width:100%;max-height:calc(100vh - 150px);object-fit:contain;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.lb-cap{padding:14px clamp(14px,2vw,28px) 22px;text-align:center;color:#fff;font-size:1.02rem}
.lb button{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:50%;width:52px;height:52px;font-size:1.3rem;cursor:pointer;transition:background .2s}
.lb button:hover{background:rgba(255,255,255,.22)}
.lb-prev,.lb-next{position:absolute;top:50%;transform:translateY(-50%)}
.lb-prev{left:clamp(8px,2vw,28px)}.lb-next{right:clamp(8px,2vw,28px)}
@media (max-width:640px){.lb-stage{padding:0 8px}.lb-prev,.lb-next{top:auto;bottom:-66px;transform:none}.lb-prev{left:16px}.lb-next{right:16px}.lb-cap{padding-bottom:84px}}
/* Projects index */
.filter{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:clamp(24px,3vw,40px)}
.filter button{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border:1.5px solid var(--line);border-radius:999px;background:var(--card);font:inherit;font-weight:600;color:var(--ink);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.filter button:hover{border-color:var(--ink)}
.filter button[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.filter .n{margin-left:8px;opacity:.7;font-size:.88rem}
.case-feature{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);text-decoration:none;color:inherit;background:var(--navy);margin-bottom:clamp(24px,3vw,40px);overflow:hidden;position:relative;transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s}
.case-feature .ph{min-height:420px;overflow:hidden}
.case-feature .ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.case-feature-body{padding:clamp(28px,3.4vw,52px);display:grid;gap:14px;align-content:center;color:#fff}
.case-feature-body h2{color:#fff;font-size:clamp(1.8rem,2.8vw,2.8rem)!important;line-height:1.05!important;margin:0}
.case-feature-body .big{font-size:clamp(2.4rem,4.4vw,4.4rem);font-weight:600;letter-spacing:-.04em;line-height:.95;margin:6px 0}
.case-feature-body p{margin:0;color:rgba(255,255,255,.84);font-size:1.05rem}
.case-feature-body .label{color:var(--leaf)}
.case-feature-body .more{color:#fff;margin-top:6px}
@media (hover:hover) and (pointer:fine){.case-feature:hover{transform:translateY(-6px);box-shadow:0 40px 80px -36px rgba(9,25,43,.55)}.case-feature:hover .ph img{transform:scale(1.04)}.case-feature:hover .more{gap:14px}}
.cases-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,32px)}
.cases-grid .ph{aspect-ratio:4/3;overflow:hidden}
.cases-grid .ph img{width:100%;height:100%;object-fit:cover}
[data-route].is-out{display:none!important}
@media (max-width:1100px){.cases-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.case-feature{grid-template-columns:minmax(0,1fr)}.case-feature .ph{min-height:0;aspect-ratio:4/3}}
@media (max-width:560px){.cases-grid{grid-template-columns:minmax(0,1fr)}}
/* Two- and four-column navy grids: borders follow their own column count */
@media (min-width:861px){
  .std-grid.two li:not(:nth-child(3n+1)),.std-grid.four li:not(:nth-child(3n+1)){padding-left:0;border-left:0}
  .std-grid.two li:nth-child(2n){padding-left:26px;border-left:1px solid var(--line-dark)}
  .std-grid.four li:not(:nth-child(4n+1)){padding-left:26px;border-left:1px solid var(--line-dark)}
}
@media (min-width:861px) and (max-width:1100px){
  .std-grid.four li:not(:nth-child(4n+1)){padding-left:0;border-left:0}
  .std-grid.four li:nth-child(2n){padding-left:26px;border-left:1px solid var(--line-dark)}
}

/* ---------- Documents: policies, guides, accessibility ---------- */
.doc-open h1{max-width:20ch}
.doc-open .lede{max-width:62ch;margin-top:20px}
.doc-layout{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:clamp(32px,6vw,96px);align-items:start}
.doc-layout.no-toc{grid-template-columns:minmax(0,1fr)}
.doc-toc{position:sticky;top:calc(var(--hdr) + 28px);max-height:calc(100vh - var(--hdr) - 56px);overflow:auto}
.doc-toc ol{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line)}
.doc-toc a{display:grid;grid-template-columns:30px 1fr;gap:8px;padding:11px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--body);font-size:.95rem;line-height:1.35;transition:color .2s,padding .3s}
.doc-toc a:hover,.doc-toc a.on{color:var(--ink);padding-left:6px}
.doc-toc a.on .pnum{color:var(--leaf-deep)}
.doc-toc .pnum{font-family:var(--serif);font-style:italic;color:var(--muted)}
.doc-prose{max-width:72ch;font-size:clamp(1.05rem,1.15vw,1.18rem);line-height:1.75;color:var(--body)}
.doc-prose h2{display:flex;gap:14px;align-items:baseline;font-size:clamp(1.6rem,2.4vw,2.3rem)!important;line-height:1.15!important;letter-spacing:-.025em!important;margin:clamp(44px,5vw,64px) 0 16px;scroll-margin-top:calc(var(--hdr) + 24px)}
.doc-prose h2:first-child{margin-top:0}
.doc-prose h2 .pnum{font-family:var(--serif);font-style:italic;font-weight:400;font-size:.6em;color:var(--leaf-deep)}
.doc-prose h3{font-size:1.25rem;margin:28px 0 10px;letter-spacing:-.015em}
.doc-prose p{margin:0 0 1.1em}
.doc-prose ul,.doc-prose ol{margin:0 0 1.2em;padding-left:1.2em}
.doc-prose li{margin:.35em 0}
.doc-prose a{color:var(--link)}
.doc-prose .pdl{display:grid;grid-template-columns:minmax(0,.4fr) minmax(0,1fr);gap:0;margin:0 0 1.4em;border-top:1px solid var(--line)}
.doc-prose .pdl dt{padding:14px 16px 14px 0;border-bottom:1px solid var(--line);font-weight:600;color:var(--ink)}
.doc-prose .pdl dd{margin:0;padding:14px 0;border-bottom:1px solid var(--line)}
.doc-prose .pnote{padding:18px 22px;background:var(--paper);border-left:3px solid var(--leaf);font-size:1rem}
.doc-prose .g-cta{display:inline-flex;gap:8px;font-weight:600;color:var(--navy);text-decoration:none;border-bottom:2px solid var(--leaf);padding-bottom:2px}
.doc-prose .faq{margin-top:8px}
.doc-prose .g-index{display:grid;gap:12px;margin-top:8px}
.doc-prose .g-card{display:grid;gap:6px;padding:18px 20px;border:1px solid var(--line);background:var(--card);text-decoration:none;color:var(--body);transition:border-color .2s,transform .3s}
.doc-prose .g-card:hover{border-color:var(--ink);transform:translateY(-3px)}
.doc-prose .g-card h3{margin:0;color:var(--ink)}
.doc-prose .g-card p{margin:0;font-size:.98rem}
.doc-prose .g-card-c{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--leaf-deep);font-weight:700}
.doc-prose table{width:100%;border-collapse:collapse;margin:0 0 1.4em;font-size:.98rem}
.doc-prose th,.doc-prose td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.doc-signoff{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,64px);background:var(--card);border:1px solid var(--line);padding:clamp(24px,3.4vw,48px)}
.doc-signoff h3{margin:0 0 14px;font-size:1.3rem}
.doc-signoff dl{display:grid;grid-template-columns:minmax(0,.45fr) minmax(0,1fr);margin:0;border-top:1px solid var(--line)}
.doc-signoff dt{padding:11px 12px 11px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:.95rem}
.doc-signoff dd{margin:0;padding:11px 0;border-bottom:1px solid var(--line);font-weight:600;color:var(--ink)}
.doc-signoff .dl-note{margin:14px 0 0;font-size:.92rem;color:var(--muted)}
.doc-signoff .sig-img{height:72px;width:auto;display:block;margin:6px 0}
.doc-signoff .sig-rule{height:1px;background:var(--line);margin:6px 0 10px;max-width:320px}
.doc-signoff .sig-name{font-weight:700;color:var(--ink)}
.doc-signoff .sig-role{color:var(--muted);font-size:.95rem}
.doc-signoff .dl-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.gcards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,1.8vw,24px)}
.gcard{position:relative;display:grid;gap:10px;align-content:start;padding:clamp(22px,2.6vw,34px) clamp(22px,2.6vw,34px) clamp(22px,2.6vw,34px);background:var(--paper);border:1px solid var(--line);text-decoration:none;color:inherit;transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s,border-color .25s}
.gcard h2{font-size:clamp(1.3rem,1.8vw,1.7rem)!important;line-height:1.15!important;letter-spacing:-.02em!important;margin:0;padding-right:36px}
.gcard p{margin:0;color:var(--body);font-size:1.02rem}
.gcard-r{font-size:.88rem;color:var(--muted)}
.gcard .arr{position:absolute;top:clamp(22px,2.6vw,34px);right:clamp(22px,2.6vw,34px);font-size:1.3rem;color:var(--ink);transition:transform .3s}
.gcard::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--leaf);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover) and (pointer:fine){.gcard:hover{transform:translateY(-6px);box-shadow:0 30px 60px -28px rgba(9,25,43,.35);border-color:var(--ink);background:var(--card)}.gcard:hover::after{transform:scaleX(1)}.gcard:hover .arr{transform:translateX(6px)}}
@media (max-width:960px){.doc-layout{grid-template-columns:minmax(0,1fr)}.doc-toc{position:static;max-height:none}.doc-signoff{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){.gcards{grid-template-columns:minmax(0,1fr)}.doc-prose .pdl,.doc-signoff dl{grid-template-columns:minmax(0,1fr)}.doc-prose .pdl dt{border-bottom:0;padding-bottom:2px}.doc-prose .pdl dd{padding-top:0}}
@media print{.doc-toc,.final,.band.navy{display:none!important}.doc-layout{display:block}}
/* Service pages */
.prose-lead{font-size:clamp(1.2rem,1.7vw,1.6rem);line-height:1.5;color:var(--ink);margin:0 0 20px;max-width:40ch}
.vs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin:0 0 24px}
.vs div{background:var(--card);padding:18px 20px}
.vs div:last-child{background:var(--navy)}
.vs dt{font-weight:700;color:var(--ink)}
.vs div:last-child dt{color:#fff}
.vs dd{margin:6px 0 0;font-size:.98rem;color:var(--body)}
.vs div:last-child dd{color:rgba(255,255,255,.82)}
.trio.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.duo-text.on-navy p{color:rgba(255,255,255,.84)}
.docs.five{grid-template-columns:repeat(5,minmax(0,1fr))}
.gal.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.timeline.four{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.trio.four,.docs.five{grid-template-columns:repeat(2,minmax(0,1fr))}.trio.four li:nth-child(3){padding-left:0;border-left:0}.timeline.four{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:36px}}
@media (max-width:860px){.trio.four,.docs.five,.vs,.timeline.four{grid-template-columns:minmax(0,1fr)}.gal.three{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- Compliance, social value, Pulse ---------- */
.cards-6{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,24px)}
.kcard{position:relative;display:grid;gap:10px;align-content:start;padding:clamp(22px,2.6vw,34px);background:var(--card);border:1px solid var(--line);transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s,border-color .25s}
.kcard h3{margin:0;font-size:clamp(1.25rem,1.7vw,1.6rem);letter-spacing:-.02em}
.kcard p{margin:0;font-size:1.02rem;color:var(--body)}
.kcard::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--leaf);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover) and (pointer:fine){.kcard:hover{transform:translateY(-6px);box-shadow:0 30px 60px -28px rgba(9,25,43,.3);border-color:var(--ink)}.kcard:hover::after{transform:scaleX(1)}}
.doclist2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(24px,4vw,64px);border-top:1px solid var(--ink)}
.doclist2 a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px;padding:18px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:padding .35s cubic-bezier(.2,.7,.2,1),background .3s}
.doclist2 .t{font-weight:600;color:var(--ink);font-size:1.08rem}
.doclist2 .s{grid-column:1;color:var(--muted);font-size:.95rem}
.doclist2 .dl{grid-column:2;grid-row:1/span 2;align-self:center;font-size:.9rem;font-weight:600;color:var(--leaf-deep);white-space:nowrap}
.doclist2 i{font-style:normal;display:inline-block;transition:transform .3s}
@media (hover:hover) and (pointer:fine){.doclist2 a:hover{padding-left:12px;background:var(--card)}.doclist2 a:hover i{transform:translateX(5px)}}
.timeline.on-navy::before{background:rgba(255,255,255,.18)}
.timeline.on-navy li::before{background:var(--navy)}
.timeline.on-navy h3{color:#fff}
.timeline.on-navy p{color:rgba(255,255,255,.8)}
.timeline.on-navy .when{color:var(--leaf)}
.sv-list{display:grid;border-top:1px solid var(--ink)}
.sv-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(24px,5vw,80px);padding:clamp(32px,4vw,56px) 0;border-bottom:1px solid var(--line)}
.sv-row h2{font-size:clamp(1.9rem,3.4vw,3.2rem)!important;line-height:1.02!important;margin-top:14px}
.ppn{display:grid;grid-template-columns:minmax(0,.55fr) minmax(0,1.45fr);gap:clamp(20px,4vw,64px);padding:clamp(24px,3vw,40px) 0;border-top:1px solid rgba(255,255,255,.16)}
.ppn-h h3{margin:8px 0 0;color:#fff;font-size:clamp(1.8rem,3vw,2.6rem);letter-spacing:-.035em}
.ppn-h .label{color:var(--leaf)}
.ppn-rows{display:grid;gap:0}
.ppn-r{display:grid;grid-template-columns:52px minmax(0,1fr);gap:16px;padding:18px 0;border-bottom:1px solid rgba(255,255,255,.12)}
.ppn-r:first-child{padding-top:0}
.ppn-k{font-family:var(--serif);font-style:italic;color:var(--leaf);font-size:1.15rem}
.ppn-r b{color:#fff;font-size:1.15rem}
.ppn-r p{margin:6px 0 0;color:rgba(255,255,255,.82);font-size:1.02rem;line-height:1.6}
.ppn-r .ppn-note{color:rgba(255,255,255,.62);font-size:.95rem;font-style:italic}
.ind-links.one{grid-template-columns:minmax(0,1fr)}
.rec-panel{background:var(--navy);color:#fff;padding:clamp(22px,2.6vw,34px);box-shadow:0 40px 80px -36px rgba(9,25,43,.5)}
.rec-hd{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.16);font-size:.95rem;color:rgba(255,255,255,.75)}
.rec-hd b{color:var(--leaf);letter-spacing:.12em;text-transform:uppercase;font-size:.8rem}
.rec-panel dl{margin:0}
.rec-panel dl div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.1)}
.rec-panel dt{color:#fff;font-weight:600}
.rec-panel dd{margin:0;color:rgba(255,255,255,.7);font-size:.95rem;text-align:right}
.rec-note{margin:14px 0 0;font-size:.85rem;color:rgba(255,255,255,.6)}
.room-tabs.on-navy{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.14)}
.room-tabs.on-navy .rt-list{border-color:rgba(255,255,255,.14)}
.room-tabs.on-navy .rt-list button{color:rgba(255,255,255,.65)}
.room-tabs.on-navy .rt-list button:hover{color:#fff;background:rgba(255,255,255,.06)}
.room-tabs.on-navy .rt-list button[aria-selected="true"]{color:#fff}
.rec-tab{grid-template-columns:1.3fr 1fr 1fr 1fr}
.rec-tab h3{margin:0 0 10px;color:#fff;font-size:clamp(1.3rem,1.8vw,1.7rem)}
.rec-tab p{margin:6px 0 0;color:rgba(255,255,255,.8);font-size:1rem;line-height:1.6}
.rec-tab .label{color:var(--leaf)}
@media (max-width:1100px){.cards-6{grid-template-columns:repeat(2,minmax(0,1fr))}.rec-tab{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.cards-6,.doclist2,.sv-row,.ppn,.rec-tab{grid-template-columns:minmax(0,1fr)}.rec-panel dl div{grid-template-columns:minmax(0,1fr)}.rec-panel dd{text-align:left}}

/* ---------- The Site Audit offer ---------- */
.offer{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(28px,5vw,88px);align-items:start;background:var(--card);border:1px solid var(--line);padding:clamp(26px,4vw,64px);position:relative}
.offer::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--leaf)}
.offer-l{display:grid;gap:18px;align-content:start}
.offer-l h2{margin:0}
.offer-l .cta-row{margin-top:6px}
.offer-r{margin:0;display:grid;border-top:1px solid var(--ink)}
.offer-r div{display:grid;grid-template-columns:minmax(0,.36fr) minmax(0,1fr);gap:16px;padding:clamp(16px,1.8vw,24px) 0;border-bottom:1px solid var(--line)}
.offer-r dt{font-weight:700;color:var(--ink);font-size:1.02rem}
.offer-r dd{margin:0;color:var(--body);font-size:clamp(1.02rem,1.15vw,1.15rem);line-height:1.6}
.offer-scarce,.frm-scarce{display:flex;align-items:center;gap:10px;margin:0;font-weight:600;color:var(--ink);font-size:.98rem}
.offer-scarce span,.frm-scarce span{width:9px;height:9px;border-radius:50%;background:var(--leaf);box-shadow:0 0 0 4px rgba(98,191,61,.2);flex:none}
.cta-note{margin:14px 0 0;max-width:58ch;font-size:.95rem;line-height:1.55;color:var(--body)}
.cta-note b{color:var(--ink)}
.final .cta-note,.band.navy .cta-note{color:rgba(255,255,255,.78)}
.final .cta-note b,.band.navy .cta-note b{color:#fff}
.hx-row .cta-note{grid-column:2;justify-self:end;text-align:right;margin-top:-4px}
.frm-offer{list-style:none;margin:0 0 6px;padding:14px 16px;background:var(--paper);border-left:3px solid var(--leaf);display:grid;gap:6px}
.frm-offer li{position:relative;padding-left:22px;font-size:.95rem;color:var(--ink);line-height:1.45}
.frm-offer li::before{content:"✓";position:absolute;left:0;top:0;color:var(--leaf-deep);font-weight:700}
.frm-scarce{font-size:.9rem;margin:0 0 10px}
@media (max-width:860px){.offer{grid-template-columns:minmax(0,1fr)}.offer-r div{grid-template-columns:minmax(0,1fr);gap:4px}.hx-row .cta-note{grid-column:auto;justify-self:start;text-align:left}}
/* Small phones: long single words in document titles never push the page sideways */
@media (max-width:420px){.doc-open h1{font-size:clamp(2rem,9.6vw,2.5rem)!important;letter-spacing:-.03em!important}}

/* ---------- Homepage hero: the film of the work ---------- */
.hf{padding-bottom:clamp(40px,5vw,80px)}
.hf-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(32px,5vw,96px);align-items:center}
.hf-copy{display:grid;gap:clamp(18px,2vw,28px);align-content:start}
.hf .hx-top{grid-column:auto}
@media (min-width:1024px){.hf .hx-h.hf-h{white-space:normal!important;font-size:clamp(4rem,7.6vw,9rem)!important;line-height:.9;margin:0}}
.hf .hf-h em{display:block!important}
.hf .lede{max-width:52ch;margin:0}
.hf .hx-proof{border-top:1px solid var(--line);padding-top:18px;margin-top:6px}
.hf-film{position:relative;margin:0;justify-self:end;width:min(100%,calc(min(76vh,780px) * 9 / 16));--py:0px}
.hf-depth{position:absolute;inset:0;transform:translate(18px,18px);border:1.5px solid var(--leaf);z-index:0;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.hf-frame{position:relative;z-index:1;aspect-ratio:9/16;overflow:hidden;background:var(--navy);box-shadow:0 40px 80px -36px rgba(9,25,43,.55);transform:translate3d(0,var(--py),0)}
.hf-frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hf-play{position:absolute;left:16px;bottom:16px;width:52px;height:52px;border-radius:50%;border:0;background:rgba(9,25,43,.72);color:#fff;display:grid;place-items:center;cursor:pointer}
.hf-play svg{width:20px;height:20px}
.hf-play[hidden]{display:none}
.hf-cap{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:center;margin-top:30px}
.hf-inf{width:64px;height:auto;overflow:visible}
.hf-inf path{fill:none;stroke-width:3.2;stroke-linecap:round}
.hf-inf .t{stroke:var(--line)}
.hf-inf .p{stroke:var(--leaf);stroke-dasharray:1;stroke-dashoffset:1}
.hf-txt{display:grid;gap:2px}
.hf-now{font-weight:600;color:var(--ink);font-size:1.02rem;min-height:1.4em;transition:opacity .35s}
.hf-now.swap{opacity:0}
.hf-txt span{font-size:.88rem;color:var(--muted)}
@media (hover:hover) and (pointer:fine){.hf-film:hover .hf-depth{transform:translate(26px,26px)}}
@media (max-width:860px){
  .hf-grid{grid-template-columns:minmax(0,1fr)}
  .hf-film{justify-self:stretch;width:auto;margin-right:18px}
  .hf-frame{aspect-ratio:4/5}
  .hf-depth{transform:translate(12px,12px)}
}
@media (prefers-reduced-motion:reduce){.hf-depth,.hf-frame{transition:none;transform:none}}
.hf .hx-top{grid-column:1/-1;margin-bottom:-8px}
.hf-film{width:min(100%,calc(min(64vh,700px) * 9 / 16))}
.hf-depth{inset:0 0 auto 0;aspect-ratio:9/16}
@media (max-width:860px){.hf-film{width:auto}.hf-depth{aspect-ratio:4/5}}
@media (min-width:861px){.hf-film{width:min(100%,calc(min(58vh,660px) * 9 / 16))}}

/* ---------- Homepage hero v2: big headline, four panels of the work ---------- */
.hfx{padding-bottom:clamp(28px,4vw,56px)}
.hfx-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(20px,4vw,64px);align-items:end;margin-top:clamp(20px,2.6vw,36px)}
.hfx-row .lede{margin:0;max-width:46ch;font-size:clamp(1.1rem,1.4vw,1.45rem)}
.hfx-act{display:grid;gap:12px;justify-items:end}
.hfx-offer{display:flex;align-items:center;gap:10px;margin:0;font-size:.95rem;color:var(--body);text-align:right}
.hfx-offer span{width:9px;height:9px;border-radius:50%;background:var(--leaf);box-shadow:0 0 0 4px rgba(98,191,61,.2);flex:none}
.hfx-panels{display:flex;gap:clamp(8px,.9vw,14px);height:clamp(440px,70vh,780px);margin:clamp(28px,3.4vw,48px) 0 0;padding:0 var(--gutter)}
.pnl{position:relative;flex:1 1 0;min-width:0;overflow:hidden;background:var(--navy);cursor:pointer;transition:flex-grow .8s cubic-bezier(.2,.7,.2,1);outline-offset:4px}
.pnl.on{flex-grow:2.6}
.pnl img,.pnl video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1),opacity .5s}
.pnl video{opacity:0}
.pnl.playing video{opacity:1}
.pnl:not(.on) img{transform:scale(1.06)}
.pnl::after{content:"";position:absolute;inset:auto 0 0 0;height:46%;background:linear-gradient(to top,rgba(5,7,10,.72),rgba(5,7,10,0));pointer-events:none}
.pnl-cap{position:absolute;left:clamp(14px,1.6vw,24px);right:clamp(14px,1.6vw,24px);bottom:clamp(18px,2vw,28px);z-index:1;display:grid;gap:4px;color:#fff}
.pnl-n{font-family:var(--serif);font-style:italic;color:var(--leaf);font-size:1rem}
.pnl-cap b{font-size:clamp(1.05rem,1.5vw,1.6rem);font-weight:600;letter-spacing:-.02em;line-height:1.15}
.pnl-cap span:last-child{font-size:.92rem;color:rgba(255,255,255,.8);max-height:0;opacity:0;overflow:hidden;transition:opacity .5s,max-height .5s}
.pnl.on .pnl-cap span:last-child{max-height:3em;opacity:1}
.pnl-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--leaf);transform:scaleX(var(--pp,0));transform-origin:left;z-index:2}
.pnl:not(.on) .pnl-bar{opacity:0}
@media (max-width:1100px) and (min-width:861px){.pnl:not(.on) .pnl-cap b{font-size:.98rem}}
@media (max-width:860px){
  .hfx-row{grid-template-columns:minmax(0,1fr)}
  .hfx-act{justify-items:stretch}
  .hfx-offer{text-align:left}
  .hfx-panels{height:auto;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:4px}
  .hfx-panels::-webkit-scrollbar{display:none}
  .pnl,.pnl.on{flex:0 0 78vw;aspect-ratio:4/5;scroll-snap-align:center}
  .pnl:not(.on) img{transform:none}
  .pnl-cap span:last-child{max-height:3em;opacity:1}
}
@media (prefers-reduced-motion:reduce){.pnl,.pnl img{transition:none}}

/* ---------- Puente: its own colour, a deep coffee-farm green from the mark ---------- */
.band.puente{background:#10281B;color:#fff;--line:rgba(255,255,255,.16)}
.band.puente h2,.band.puente h3{color:#fff}
.band.puente .eyebrow{color:#9FD98A}
.band.puente .eyebrow::before{color:var(--leaf)}
.band.puente .lede,.band.puente .prose p,.band.puente .duo-text p{color:rgba(255,255,255,.84)}
.band.puente .prose .pull{color:#fff;border-left-color:var(--leaf)}
.band.puente a{color:#BFE8AF}
.band.puente .more{color:#fff}
.band.puente .doc{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12)}
.band.puente .doc-body h3{color:#fff}
.band.puente .doc-body p{color:rgba(255,255,255,.78)}
.band.puente .doc-body .label{color:#9FD98A}
.band.puente .capfig .cap{background:#fff}
.puente-fig .frame{aspect-ratio:4/5}
.puente-fig .frame img{width:100%;height:100%;object-fit:cover}
@media (min-width:1024px){.hfx .hx-h{font-size:calc((min(100vw, var(--col) + 2*var(--gutter)) - 2*var(--gutter)) / 8.62)!important}}
/* Hero fits the laptop screen: headline, buttons and the whole film strip visible without scrolling */
@media (min-width:861px){
  .hfx{padding-top:clamp(16px,2.4vh,28px)}
  .hfx .hx-h{margin-top:clamp(18px,3.4vh,44px)}
  .hfx-panels{margin-top:clamp(20px,3vh,36px);height:clamp(280px,calc(100svh - 312px - 16.5vw),720px)}
}
@media (max-width:860px){
  .hfx-offer{align-items:flex-start}
  .hfx-offer span{margin-top:.5em}
}
/* Film strip lines up with the headline and buttons on wide screens */
@media (min-width:861px){.hfx-panels{max-width:calc(var(--col) + 2*var(--gutter));margin-inline:auto}}
/* Wide screens: the content column matches the header and footer (1600px) instead of framing a 1240px strip */
:root{--col:min(1600px, calc(100vw - 2*var(--gutter)))}
/* Laptop hero: headline, buttons and film strip together fill exactly one screen, whatever its size */
@media (min-width:861px){
  .hfx-fold{display:flex;flex-direction:column;min-height:calc(100svh - var(--sh-hdr,76px) - clamp(16px,2.4vh,28px))}
  .hfx-panels{flex:1 1 auto;height:auto;min-height:280px;max-height:820px;width:100%;margin-bottom:clamp(14px,2vh,24px)}
}
/* Opening photos fill their column instead of shrinking to a narrow portrait */
@media (min-width:861px){
  .open .capfig .frame{aspect-ratio:auto;width:100%;height:min(70vh,700px);max-height:none}
  .open .capfig .frame img{max-height:none}
}
/* Film strip runs the full width of the screen, like the earlier full-bleed hero photo */
@media (min-width:861px){.hfx-panels{max-width:none;margin-inline:0;padding:0;gap:6px}}
/* Calmer type on laptops and big monitors: body text stays easy to read, section headlines stop growing past a comfortable size.
   The homepage hero headline is unaffected and still fills the width. */
@media (min-width:861px){
  html{font-size:clamp(16px,calc(11px + .4vw),18px)}
  main h2:not(.display){font-size:min(4.2vw,76px)!important;line-height:1.02}
  .final h2.display{font-size:min(5vw,92px)!important}
  .open h1{font-size:min(6vw,100px)!important}
  .big-figs b{font-size:min(5vw,80px)}
}
/* Phones: before/after pairs stack one under the other, each full width, instead of a sideways rail that looks cut off */
@media (max-width:860px){
  .bas.rail{display:grid;grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:minmax(0,1fr)!important;overflow:visible;margin-inline:0;padding-inline:0;gap:28px;scroll-snap-type:none}
}
@media (min-width:861px){
  main .lede{font-size:max(1.05rem,min(1.3vw,21px))!important}
  .hfx-row .lede{font-size:max(1.1rem,min(1.4vw,23px))!important}
}
