@font-face{font-family:"Fraunces";src:url(/landing/fonts/fraunces-latin-ext.woff2) format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Fraunces";src:url(/landing/fonts/fraunces-latin.woff2) format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Instrument Sans";src:url(/landing/fonts/instrument-sans-latin-ext.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Instrument Sans";src:url(/landing/fonts/instrument-sans-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* Open Sky in the Atelia brand. Token values are copied verbatim from interiorai-v3/app/tokens.css (Atelier theme);
   fonts are the same Fraunces + Instrument Sans as interiorai-v3/app/layout.js, self-hosted from the Google Fonts files. */
:root{
  /* themes: the landing page is always Washed Pebble (fixed copy of the app's default theme, app/tokens.css) */
  --color-bg:#EBE9E5;--color-surface:#F7F6F3;--color-surface-2:#E1E6E1;
  --color-text:#2B2523;--color-text-2:#5A524F;
  --color-accent:#7D6460;--color-accent-hover:#6A5350;--color-on-accent:#FFFFFF;
  --color-border:#D6D3CD;--color-border-strong:#8B8480;--color-focus:#2B2523;
  --stone-hi:#87706D;--stone-lo:#705A56;--sh:60 44 40;--dent:0 0 0;--shade:rgb(0 0 0 / .14);
  --font-display:'Fraunces',ui-sans-serif,system-ui,sans-serif;
  --font-ui:'Instrument Sans',ui-sans-serif,system-ui,sans-serif;
  --type-display-weight:380;--type-h1-weight:420;--type-h2-weight:600;--type-h3-weight:600;
  --radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:999px;--btn-radius:var(--radius-md);
  --motion-fast:120ms;--motion-base:200ms;--motion-slow:360ms;
  --motion-ease:cubic-bezier(0.2,0,0,1);--motion-enter:cubic-bezier(0.05,0.7,0.1,1);
  --focus-ring:0 0 0 3px var(--color-bg),0 0 0 5px var(--color-focus);
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;
  /* page-level scale (this page's own; the app has no landing-page ramp) */
  --s44:176px;
  --t-cap:.875rem;--t-body:1.0625rem;--t-lg:1.1875rem;--t-h3:1.25rem;
  --t-h2:clamp(2.25rem,4.6vw,4.25rem);--t-display:clamp(3.25rem,7.4vw,7.75rem);
  --pad:clamp(20px,4vw,56px);
  /* paper wash = --color-bg (Washed Pebble #EBE9E5) at varying alpha */
  --paper:235 233 229;
}
@media (prefers-reduced-motion:reduce){:root{--motion-fast:0ms;--motion-base:0ms;--motion-slow:0ms}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--color-bg)}
body{margin:0;background:var(--color-bg);color:var(--color-text);font:400 var(--t-body)/1.6 var(--font-ui);font-variant-numeric:lining-nums;-webkit-font-smoothing:antialiased}
img,video{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2,h3{margin:0;text-wrap:balance}
p{margin:0;text-wrap:pretty}
/* Display voice: Fraunces 380 (display) / 420 (h1). Optical size pinned to 56 (the brand's display size) for big type;
   smaller Fraunces keeps font-optical-sizing:auto, which equals its own size. Never opsz 144. */
.display{font-family:var(--font-display);font-weight:var(--type-display-weight);font-variation-settings:'opsz' 56;letter-spacing:-.01em}
/* UI headings: Instrument Sans 600, as the brand's h2/h3 tokens */
.ui-h{font-family:var(--font-ui);font-weight:var(--type-h2-weight);letter-spacing:-.01em}
:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}
.skip{position:absolute;left:var(--space-4);top:-80px;background:var(--color-text);color:var(--color-bg);padding:var(--space-3) var(--space-4);z-index:20;border-radius:var(--radius-md);text-decoration:none;font-weight:600}
.skip:focus{top:var(--space-4)}
[id]{scroll-margin-top:24px}
.tnum{font-variant-numeric:lining-nums tabular-nums}

/* header */
.nav{position:absolute;inset:0 0 auto;z-index:5;display:flex;align-items:center;gap:var(--space-6);padding:var(--space-5) var(--pad)}
/* wordmark: plain Fraunces type, no logo art */
.mark{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;margin:0 -8px;font-family:var(--font-display);font-weight:420;font-size:1.75rem;line-height:1;letter-spacing:-.01em;font-variation-settings:'opsz' 36;color:var(--color-text);text-decoration:none;border-radius:var(--radius-sm)}
.nav nav{margin-left:auto;display:flex;gap:var(--space-6)}
.nav nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;margin:0 -8px;border-radius:var(--radius-md);text-decoration:none;color:var(--color-text);font:500 .9375rem/1 var(--font-ui)}

/* primary button: brand accent, 10px radius, .btn.lg height */
.cta{display:inline-flex;align-items:center;gap:var(--space-2);min-height:52px;padding:0 28px;border-radius:var(--btn-radius);background:var(--color-accent);color:var(--color-on-accent);text-decoration:none;font:600 1rem/1 var(--font-ui);touch-action:manipulation;transition:background-color var(--motion-fast) var(--motion-ease),transform var(--motion-fast) var(--motion-ease)}
.cta span{transition:transform var(--motion-fast) var(--motion-ease)}
.cta:active{transform:translateY(1px) scale(.99)}
.cta:focus-visible{border-radius:var(--btn-radius)}
@media (hover:hover){
  .cta:hover{background:var(--color-accent-hover);color:var(--color-on-accent)}
  .cta:hover span{transform:translateX(3px)}
  .nav nav a:hover{text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--color-accent)}
  .ctl:hover{background:var(--color-surface)}
}

/* films */
.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* a daylight wash in the page colour (--paper), never a dark scrim: lifts the floor so the ink type reads */
.wash{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgb(var(--paper) / .6) 0%,rgb(var(--paper) / 0) 16%,rgb(var(--paper) / 0) 46%,rgb(var(--paper) / .8) 68%,rgb(var(--paper) / .97) 100%)}
.wash--left{background:linear-gradient(90deg,rgb(var(--paper) / .94) 0%,rgb(var(--paper) / .78) 42%,rgb(var(--paper) / 0) 78%)}
/* close: a light paper haze over the top of the sky (lightens only), so the ink heading reads on sky and maquette alike */
.wash--top{background:linear-gradient(180deg,rgb(var(--paper) / .5) 0%,rgb(var(--paper) / .28) 30%,rgb(var(--paper) / 0) 52%,rgb(var(--paper) / 0) 80%,rgb(var(--paper) / .35) 100%)}
.film-note{position:absolute;right:var(--pad);bottom:var(--space-5);z-index:2;display:flex;align-items:center;gap:var(--space-3);font-size:var(--t-cap);color:var(--color-text-2)}
.film-note>span{background:rgb(247 246 243 / .88);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill)}
/* film control: one surface fill + hairline, no shadow */
.ctl{min-height:44px;min-width:72px;padding:0 var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:rgb(247 246 243 / .88);color:var(--color-text);font:500 .875rem/1 var(--font-ui);cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--motion-ease)}
.ctl:focus-visible{border-radius:var(--radius-pill)}
.ctl--quiet{background:transparent;border-color:var(--color-border-strong)}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;background:var(--color-bg) url(/landing/video/attic-pair-poster.webp) 0% 50%/cover}
.hero-in{position:relative;z-index:2;width:100%;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--space-7);align-items:end;padding:0 var(--pad) calc(var(--space-8) + var(--space-5))}
.hero .bg{object-position:0% 50%}
.hero h1{font-size:var(--t-display);line-height:1}
.hero h1 span{display:block}
.hero-side{display:grid;gap:var(--space-5);justify-items:start;max-width:30rem;padding-bottom:var(--space-2)}
.hero-side p{font-size:var(--t-lg);line-height:1.55}

/* in this room: the real pieces in the hero, with shop prices */
.room{padding:var(--space-9) var(--pad) 0}
.room-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-6) var(--space-8);align-items:start}
.room h2{font-size:1.5rem;line-height:1.25;margin-bottom:var(--space-3)}
.room-lede{color:var(--color-text-2);max-width:36ch}
.room-body{display:grid;gap:var(--space-3)}
.room-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--color-border)}
.room-list li{border-bottom:1px solid var(--color-border)}
.room-list a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-1) var(--space-5);min-height:44px;padding:var(--space-4) 0;text-decoration:none}
.room-list a:focus-visible{border-radius:var(--radius-md)}
.rl-name{font-weight:600}
.rl-meta{grid-column:1;grid-row:2;font-size:var(--t-cap);color:var(--color-text-2);font-variant-numeric:lining-nums tabular-nums}
.rl-price{grid-column:2;grid-row:1;font-variant-numeric:lining-nums tabular-nums;font-weight:600}
.room-total{display:flex;justify-content:space-between;gap:var(--space-5);padding:var(--space-4) 0 0;font-weight:600;font-variant-numeric:lining-nums tabular-nums}
.room-note{font-size:var(--t-cap);color:var(--color-text-2)}
@media (hover:hover){.room-list a:hover .rl-name{text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--color-accent)}}
.room + .say{padding-top:var(--space-9)}

/* statement + viewer */
.say{padding:var(--s44) var(--pad) var(--space-9)}
.say h2{font-size:var(--t-h2);line-height:1.08;max-width:24ch}
.screen{margin:var(--space-8) 0 0}
.screen video{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius-md);background:var(--color-surface-2)}
.screen figcaption{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-3);font-size:var(--t-cap);color:var(--color-text-2)}

/* d102 Our process: Design Book chapters (proposal /workspace/atelia-process). Section-scoped tokens. */
.proc{--ease-out:cubic-bezier(.22,1,.36,1);--t-run:.6875rem;--t-ch:clamp(1.75rem,2.8vw,2.5rem);--paper-shadow:0 1px 2px rgb(var(--sh) / .06),0 14px 36px rgb(var(--sh) / .10)}
.proc{padding:var(--space-9) var(--pad) var(--s44);background:var(--color-surface)}
.proc-head{max-width:1328px;margin:0 auto var(--space-9)}
.proc-head h2{font-size:var(--t-h2);line-height:1.08}
.proc-head p{margin-top:var(--space-5);color:var(--color-text-2);font-size:var(--t-lg);max-width:34ch}

.chapters{list-style:none;margin:0 auto;padding:0;max-width:1328px;display:grid;gap:var(--space-9)}
.ch{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:var(--space-8);align-items:stretch}
/* the text column: a thin rule down its left edge, as on the Design Book band */
.ch-text{border-left:1px solid var(--color-border-strong);padding-left:var(--space-5);display:flex;flex-direction:column;justify-content:center}
.ch-run{font-size:var(--t-run);letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-2);line-height:1}
.ch h3{font-family:var(--font-display);font-weight:380;font-size:var(--t-ch);line-height:1.05;letter-spacing:-.01em;margin:var(--space-4) 0 var(--space-3)}
.ch p{color:var(--color-text-2);max-width:34ch}

/* the plate: a page lying on the warm grey panel */
.ch-plate{margin:0;background:var(--color-bg);border-radius:var(--radius-lg);padding:clamp(20px,4.4%,56px);display:grid;place-items:center}
.page{width:100%;background:var(--color-surface);border-radius:3px;box-shadow:var(--paper-shadow);padding:clamp(14px,3.2%,28px)}
.page img{width:100%;border-radius:2px;background:var(--color-bg)}
.cap{margin-top:var(--space-3);font-size:12px;line-height:1.45;color:var(--color-text-2)}

/* chapter 4: the book opens into a spread, built from the app's own .db-* styles */
.spread{display:grid;grid-template-columns:1fr 1fr;width:100%;background:var(--color-surface);border-radius:3px;box-shadow:var(--paper-shadow);position:relative}
.spread::after{content:"";position:absolute;inset:0 auto 0 50%;width:28px;transform:translateX(-50%);pointer-events:none;
  background:linear-gradient(90deg,transparent,rgb(var(--sh) / .07) 48%,rgb(var(--sh) / .10) 50%,rgb(var(--sh) / .07) 52%,transparent)}
.sp-pg{padding:clamp(14px,3.4%,28px) clamp(14px,3.6%,30px) clamp(18px,4%,32px);min-width:0}
.proc .db-run{display:flex;justify-content:space-between;gap:12px;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-2);line-height:1}
.proc .db-run span:first-child{flex:none}.proc .db-run span:last-child{text-align:right;line-height:1.3;margin-top:-.15em}
.proc .db-ch{font-family:var(--font-display);font-weight:380;font-size:clamp(18px,1.9vw,26px);line-height:1.05;letter-spacing:-.01em;margin:16px 0 3px}
.proc .db-sub{font-size:10.5px;color:var(--color-text-2);margin-bottom:12px}
.proc .db-lab{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-2);margin:16px 0 8px}
.proc .db-lab:first-of-type{margin-top:18px}
.proc .db-sw{display:flex;gap:5px}
.proc .db-sw div{flex:1;min-width:0}
.proc .db-sw i{display:block;height:clamp(30px,3.4vw,48px);border-radius:2px;box-shadow:inset 0 0 0 1px var(--color-border)}
.proc .db-sw span{display:block;margin-top:4px;font-size:8.5px;color:var(--color-text-2);letter-spacing:.02em}
.proc .db-it{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--color-border);font-size:10.5px;line-height:1.4}
.proc .db-it b{font-weight:600;color:var(--color-text)}
.proc .db-it span{display:block;color:var(--color-text-2);font-size:9.5px}
.proc .db-it em{font-style:normal;color:var(--color-text-2);font-size:9.5px;white-space:nowrap}
.sp-cap{font-size:9.5px;color:var(--color-text-2);margin-top:6px}

/* reveal: content is visible by default; only with JS and full motion does a plate rise once. Transform/opacity only, so no layout shift */
@media (prefers-reduced-motion:no-preference){
  .js .ch-plate{opacity:0;transform:translateY(12px);transition:opacity 600ms var(--ease-out),transform 700ms var(--ease-out)}
  .js .ch-plate.in{opacity:1;transform:none}
}

/* responsive */
@media (max-width:959px){
  .chapters{gap:var(--space-8)}
  .ch{grid-template-columns:minmax(0,1fr);gap:var(--space-5)}
  .ch-text{padding-left:var(--space-4)}
  .ch-plate{border-radius:var(--radius-md);padding:var(--space-4)}
}
@media (max-width:639px){
  .proc-head{margin-bottom:var(--space-8)}
  .spread{grid-template-columns:1fr}
  .spread::after{inset:50% 0 auto 0;width:auto;height:20px;transform:translateY(-50%);
    background:linear-gradient(180deg,transparent,rgb(var(--sh) / .07) 48%,rgb(var(--sh) / .10) 50%,rgb(var(--sh) / .07) 52%,transparent)}
  .proc .db-run,.proc .db-lab{font-size:9.5px}.proc .db-ch{font-size:22px}.proc .db-sub,.proc .db-it{font-size:12px}.proc .db-it span,.proc .db-it em,.sp-cap{font-size:11px}.proc .db-sw span{font-size:9.5px}
  .proc .db-sw i{height:40px}
}

/* band */
.band{position:relative;min-height:84svh;display:flex;align-items:center;overflow:hidden;background:var(--color-bg) url(/landing/video/floor-pair-poster.webp) center/cover}
.band-in{position:relative;z-index:2;padding:var(--space-9) var(--pad);max-width:44rem}
.band h2{font-size:var(--t-h2);line-height:1.08;margin-bottom:var(--space-5)}
.band p{font-size:var(--t-lg);line-height:1.55;max-width:36ch}

/* faq */
.faq{padding:var(--s44) var(--pad);display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-8)}
.faq h2{font-size:var(--t-h2);line-height:1.08}
.faq dl{margin:0}
.faq dl>div{padding-block:var(--space-5);border-top:1px solid var(--color-border)}
.faq dl>div:last-child{border-bottom:1px solid var(--color-border)}
.faq dt{font-size:var(--t-h3);line-height:1.3;margin-bottom:var(--space-2)}
.faq dd{margin:0;color:var(--color-text-2);max-width:52ch}

/* close: the maquette under open sky; type sits in the sky */
.close{position:relative;min-height:92svh;display:flex;align-items:flex-start;justify-content:center;text-align:center;overflow:hidden;background:#cfe0ef url(/landing/img/close-pair-1600.webp) center/cover}
.close-in{position:relative;z-index:2;display:grid;justify-items:center;gap:var(--space-6);padding:var(--space-8) var(--pad) var(--space-9)}
.close h2{font-size:clamp(2.75rem,5.6vw,5.75rem);line-height:1;max-width:16ch;color:var(--color-text)}
.foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-4);padding:var(--space-6) var(--pad) var(--space-7);font-size:var(--t-cap);color:var(--color-text-2);border-top:1px solid var(--color-border)}
.foot .mark{font-size:1.375rem}

/* the one entrance */
@media (prefers-reduced-motion:no-preference){
  .hero h1 span{animation:rise 1.1s var(--motion-enter) both}
  .hero h1 span+span{animation-delay:.12s}
  .hero-side{animation:fade .9s var(--motion-ease) .4s both}
}
@keyframes rise{from{opacity:0;transform:translateY(.22em)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

@media (max-width:820px){
  :root{--s44:96px}
  .nav nav{display:none}
  .mark{font-size:1.5rem}
  .hero-in{grid-template-columns:minmax(0,1fr);gap:var(--space-5);padding-bottom:calc(var(--space-8) + var(--space-6))}
  .hero-side p{font-size:var(--t-body)}
  .hero .bg{object-position:22% 50%}
  .hero{background-position:22% 50%}
  .wash{background:linear-gradient(180deg,rgb(var(--paper) / .6) 0%,rgb(var(--paper) / 0) 14%,rgb(var(--paper) / 0) 30%,rgb(var(--paper) / .95) 72%)}
  .cta{width:100%;justify-content:center}
  /* where the wash is near-solid paper the label needs no pill and wraps as a plain caption */
  .film-note{left:var(--pad);right:var(--pad);justify-content:space-between;bottom:var(--space-4)}
  .film-note>span{background:none;padding:0;font-size:.8125rem;line-height:1.4;max-width:28ch}
  .faq{grid-template-columns:minmax(0,1fr);gap:var(--space-6)}
  .room{padding-top:var(--space-8)}
  .room-in{grid-template-columns:minmax(0,1fr);gap:var(--space-5)}
  .screen video{aspect-ratio:4/3}
  .wash--left{background:linear-gradient(180deg,rgb(var(--paper) / .1) 0%,rgb(var(--paper) / .94) 62%)}
  .band{align-items:flex-end;min-height:90svh}
  .band-in{padding-bottom:calc(var(--space-8) + var(--space-5))}
  .close-in .cta{width:auto}
}

/* Worry Stone (themes, d9x): the primary button is a domed stone. Hover lifts 1px and its shadow spreads; press sinks into a
   thumb-sized dent (scale .97, 100 ms). Only transform and opacity animate (shadows live on ::before / ::after). */
.cta{position:relative;isolation:isolate;border-radius:var(--radius-pill);
  background:radial-gradient(120% 140% at 50% 0%,var(--stone-hi) 0%,var(--color-accent) 46%,var(--stone-lo) 100%);
  box-shadow:inset 0 1px 0 rgb(255 255 255 / .22),inset 0 -2px 2px -1px rgb(var(--dent) / .30),0 1px 1px rgb(var(--sh) / .32),0 4px 10px -4px rgb(var(--sh) / .45);
  transition:transform 180ms cubic-bezier(.22,1,.36,1)}
.cta::before,.cta::after{content:'';position:absolute;inset:0;border-radius:inherit;z-index:-1;pointer-events:none;opacity:0}
.cta::before{background:var(--shade);box-shadow:0 14px 26px -12px rgb(var(--sh) / .55),0 3px 6px -2px rgb(var(--sh) / .25);transition:opacity 180ms cubic-bezier(.22,1,.36,1)}
.cta::after{background:radial-gradient(70% 90% at 50% 60%,rgb(var(--dent) / 0) 40%,rgb(var(--dent) / .10) 100%),var(--shade);box-shadow:inset 0 2px 5px rgb(var(--dent) / .42),inset 0 -1px 0 rgb(255 255 255 / .14);transition:opacity 100ms cubic-bezier(.22,1,.36,1)}
@media (hover:hover){.cta:hover{background:radial-gradient(120% 140% at 50% 0%,var(--stone-hi) 0%,var(--color-accent) 46%,var(--stone-lo) 100%);transform:translateY(-1px)}.cta:hover::before{opacity:1}}
.cta:active{transform:translateY(1px) scale(.97);transition-duration:100ms;box-shadow:inset 0 1px 0 rgb(255 255 255 / .12)}
.cta:active::before{opacity:0}.cta:active::after{opacity:1}
.cta:focus-visible{border-radius:var(--radius-pill);box-shadow:var(--focus-ring)}
@media (prefers-reduced-motion:reduce){.cta,.cta:hover,.cta:active{transform:none;transition:none}.cta::before,.cta::after{transition:none}}

/* d92 landing copy: viewer body, journey sub-line, closing line, and the plain AI labels (EU AI Act Art. 50(4)): small text, no pill */
.say-body{color:var(--color-text-2);max-width:60ch;margin:var(--space-5) 0 var(--space-7);text-wrap:pretty}
.close-sub{margin:calc(-1 * var(--space-3)) 0 0;color:var(--color-text);font-size:var(--t-lg)}
.film-note>span.ai{background:none;padding:0;color:var(--color-text);font-weight:500;letter-spacing:.02em;text-shadow:0 0 2px rgb(var(--paper) / .95),0 0 10px rgb(var(--paper) / .9)}

/* d93 landing copy (t72u): the room lede is three short lines */
.room-lede{text-wrap:pretty}
.room-lede + .room-lede{margin-top:var(--space-3)}

/* d93 (t75u): the 'AI film' note is the film's one control: its text plus a small pause/play glyph, as quiet as the text */
.ai-film{display:inline-flex;align-items:center;gap:6px;min-height:32px;min-width:32px;margin:0 -8px;padding:0 8px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--color-text);font:inherit;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--motion-ease)}
.ai-film .ai{font-weight:500;letter-spacing:.02em;text-shadow:0 0 2px rgb(var(--paper) / .95),0 0 10px rgb(var(--paper) / .9)}
.ai-film .glyph{flex:none;width:11px;height:11px;fill:currentColor;filter:drop-shadow(0 0 1.5px rgb(var(--paper) / .95)) drop-shadow(0 0 6px rgb(var(--paper) / .8))}
.ai-film .g-play,.ai-film.is-paused .g-pause{display:none}
.ai-film.is-paused .g-play{display:inline}
.ai-film:focus-visible{border-radius:var(--radius-pill);box-shadow:var(--focus-ring)}
@media (hover:hover){.ai-film:hover{background:rgb(var(--paper) / .35)}}
@media (prefers-reduced-motion:reduce){.ai-film{transition:none}}

/* d104 From plan to model (#plan-model). Desktop: the plan fades into the 3D model as the figure scrolls up (JS sets --p).
   No JS or reduced motion: plan and model side by side. <=820px: one measured cutaway with tags from home.json. */
.rv-stage{position:relative;aspect-ratio:1528/1140;width:min(100%,calc((100svh - 120px) * 1.34),1100px);border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg)}
.rv-pane{position:absolute;inset:0}
.rv-pane img{display:block;width:100%;height:100%;object-fit:cover}
.rv-model{opacity:var(--p,0);will-change:opacity}
.rv-lab{position:absolute;left:var(--space-4);top:var(--space-4);font-size:var(--t-cap);color:var(--color-text-2);letter-spacing:.02em}
.rv-plan .rv-lab{opacity:calc(1 - var(--p,0))}
.rv:not(.is-live) .rv-stage{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);aspect-ratio:auto;width:100%;overflow:visible;background:none}
.rv:not(.is-live) .rv-pane{position:relative;inset:auto;opacity:1;aspect-ratio:1528/1140;border-radius:var(--radius-md);overflow:hidden}
.rv:not(.is-live) .rv-lab{opacity:1}
.rv-meta{font-variant-numeric:tabular-nums;white-space:nowrap}
.cut{display:none;position:relative}
.cut img{display:block;width:100%;height:auto;border-radius:var(--radius-md)}
.cut-dl{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--color-border-strong);stroke-width:2.5;vector-effect:non-scaling-stroke;pointer-events:none}
.cut-dim,.cut-room{position:absolute;transform:translate(-50%,-50%);color:var(--color-text);font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.25;text-align:center;pointer-events:none}
.cut-dim{padding:0 6px;background:var(--color-bg);font-size:.75rem;color:var(--color-text-2)}
.cut-dim--v{transform:translate(-50%,-50%) rotate(-90deg)}
.cut-room{font-size:.75rem;color:var(--color-text-2)}
.cut-room b{display:block;font-family:var(--font-display);font-weight:500;font-size:.875rem;color:var(--color-text)}
.cut-room--s{font-size:.625rem;line-height:1.2}
.cut-room--s b{font-size:.6875rem}
@media (max-width:820px){
  .rv-stage{display:none!important}
  .cut{display:block}
  .screen.rv figcaption{flex-direction:column;align-items:flex-start;gap:var(--space-1)}
}

/* d105 Plan, model, walk (#plan-model). The stage pins while you scroll; once it sits fully in view, scroll scrubs a rendered frame
   sequence: the walls rise from the plan to 2.90 m, then the view flies down to eye level. No JS or reduced motion: three stills. */
.pmw{display:flex;flex-direction:column}
.pmw-stills{order:2;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-3)}
.pmw-still{position:relative;border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg)}
.pmw-still img{display:block;width:100%;height:auto;aspect-ratio:1760/1100;object-fit:cover}
.pmw-lab{position:absolute;left:var(--space-3);top:var(--space-3);font-size:var(--t-cap);color:var(--color-text-2);letter-spacing:.02em}
.pmw-stage{display:none;position:relative;aspect-ratio:1760/1100;width:min(100%,calc((100svh - 140px) * 1.6),1100px);border-radius:var(--radius-md);overflow:hidden;background:#EBE9E5}
.pmw-cv{display:block;width:100%;height:100%}
.pmw-cap{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-3);font-size:var(--t-cap);color:var(--color-text-2);max-width:1100px}
.pmw-steps{display:none;gap:var(--space-4);margin:0 0 var(--space-2);padding:0;list-style:none;font-size:var(--t-cap);letter-spacing:.02em;color:var(--color-text-2)}
.pmw-steps li{opacity:.45;transition:opacity var(--motion-fast) var(--motion-ease)}
.pmw-steps li.is-on{opacity:1;color:var(--color-text)}
.pmw-tags{position:absolute;inset:0;pointer-events:none;opacity:var(--tg,0)}
.pmw-tag{position:absolute;transform:translate(-50%,-50%);padding:2px 6px;border-radius:4px;background:rgb(235 233 229 / .82);color:var(--color-text-2);font-size:.75rem;line-height:1.25;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
.pmw-tag b{display:block;font-family:var(--font-display);font-weight:500;font-size:.875rem;color:var(--color-text)}
.pmw-tag--s{font-size:.625rem;line-height:1.2}
.pmw-tag--s b{font-size:.6875rem}
.pmw.is-live .pmw-stills{display:none}
.pmw.is-live .pmw-stage{display:block}
.pmw.is-live .pmw-steps{display:flex}
.pmw.is-live .pmw-track{height:calc(var(--pinh,100svh) + 220svh)}
.pmw.is-live .pmw-pin{position:sticky;top:calc((100svh - var(--pinh,100svh)) / 2)}
@media (max-width:820px){
  .pmw-stills{grid-template-columns:1fr}
  .pmw-still img{aspect-ratio:1/1}
  .pmw-stage{aspect-ratio:1/1;width:min(100%,calc(100svh - 160px))}
  .pmw-cap{flex-direction:column;align-items:flex-start;gap:var(--space-1)}
  .pmw-tag{font-size:.625rem}
  .pmw-tag b{font-size:.75rem}
  .pmw-tag--s{font-size:.5625rem}
  .pmw-tag--s b{font-size:.625rem}
}
@media (prefers-reduced-motion:reduce){.pmw-steps li{transition:none}}
/* d106 From model to photo and film: 16:9 frames, a Photo layer that dissolves in at the end of the pin and a Film that plays once after the pin releases. */
.pmw-stills{grid-template-columns:repeat(2,1fr)}
.pmw-still img{aspect-ratio:16/9}
.pmw-stage{aspect-ratio:16/9;width:min(100%,calc((100svh - 140px) * 16 / 9),1100px)}
.pmw-photo,.pmw-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none}
.pmw-photo{opacity:var(--ph,0)}
.pmw-film{transition:opacity .6s var(--motion-ease)}
.pmw-film.is-on{opacity:1}
.pmw-tag.is-hid{display:none}
.pmw.is-live .pmw-track{height:calc(var(--pinh,100svh) + 300svh)}
@media (max-width:820px){
  .pmw-stills{grid-template-columns:1fr}
  .pmw-still img{aspect-ratio:1/1}
  .pmw-stage{aspect-ratio:1/1;width:min(100%,calc(100svh - 160px))}
}
@media (prefers-reduced-motion:reduce){.pmw-film{transition:none}}

/* d107 (JA): 'Every room tells a story' is one paragraph; it fills its column for a measure of about 60-68 characters per line at desktop */
.room-lede{max-width:none}

/* d110c Hold the film: the pin keeps the film centred for a hold zone after the walk, and while the film is due a centred snap point
   is where a resting scroll eases back to (main.js). A firm scroll still passes. Reduced motion has no pin, so no hold. */
.pmw-hold{display:none}
.pmw.is-live .pmw-track{position:relative;--hold:100svh;height:calc(var(--pinh,100svh) + 300svh + var(--hold))}
.pmw.is-live .pmw-hold{display:block;position:absolute;left:0;bottom:0;width:1px;height:var(--hold);pointer-events:none;visibility:hidden}
.pmw-snap{position:absolute;left:0;width:1px;top:calc(var(--hold) * .15 - var(--pinh,100svh));height:var(--pinh,100svh)}
@media (max-width:820px){.pmw.is-live .pmw-track{--hold:80svh}}

/* d111: quieter AI labels (text .55 of ink; stronger paper halo keeps >=3:1 over film and photo) */
.ai-film,.film-note>span.ai{color:rgb(43 37 35 / .55)}
.ai-film .ai,.film-note>span.ai{text-shadow:0 0 1px rgb(var(--paper)),0 0 3px rgb(var(--paper)),0 0 8px rgb(var(--paper) / .95),0 0 16px rgb(var(--paper) / .75)}
.ai-film .glyph{filter:drop-shadow(0 0 1px rgb(var(--paper))) drop-shadow(0 0 3px rgb(var(--paper))) drop-shadow(0 0 8px rgb(var(--paper) / .9))}
/* d111: item lists lost their size line; keep rows one steady height on phones */
@media (max-width:600px){.rl-meta{min-height:3.2em}}
/* d111: closing headline is longer; let it run on one line where it fits, balanced where it must wrap */
.close h2{max-width:none;text-wrap:balance}

/* d116 sharper pictures: 4K posters only for large, high-DPI screens */
@media (min-width: 1300px) and (min-resolution: 2dppx), (min-width: 2561px){.hero{background-image:url(/landing/video/attic-pair-poster-3840.webp)}.band{background-image:url(/landing/video/floor-pair-poster-3840.webp)}}
/* d138 (UI 10): closing section: the headline and CTA sit in the sky, clear of the arches; phones stack copy over the picture */
.close{min-height:100svh}
.close .bg{object-position:50% 100%}
.close-in{padding-top:clamp(var(--space-8),12vh,var(--space-9))}
@media (max-width:640px){
  .close{min-height:0;display:flex;flex-direction:column;align-items:stretch;background:#cfe0ef}
  .close-in{order:1;padding:var(--space-8) var(--pad) var(--space-6)}
  .close .bg{order:2;position:relative;inset:auto;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 100%}
  .close .wash{display:none}
  .close .film-note{order:3}
}
/* d138 (UI 14): AI labels: 44px touch target on touch screens; text-2 on the paper pill */
@media (pointer:coarse){.ai-film{min-height:44px}}
.film-note>span.ai{color:var(--color-text-2)}
/* d138b (UI 10): the photo's arches sit near its top edge, so on wide screens the photo is shown whole (16:9, bottom-anchored, no crop)
   under a sky band that matches its sky; the section grows so the CTA always clears the arches */
@media (min-width:641px){.close{background:rgb(52 116 167);min-height:max(100svh,calc(56.25vw + 190px))}
  .close .bg{top:auto;bottom:0;height:auto;aspect-ratio:16/9;object-position:50% 100%;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 8%);mask-image:linear-gradient(180deg,transparent 0,#000 8%)}}
