@font-face{font-family:"Plex Mono";src:url(../_shared/fonts/plexmono-normal-500-latin.woff2) format("woff2");font-weight:500;font-display:block}
:root{
  --blue:#0b4fb3;--blue-d:#062f73;--yellow:#ffd400;--ink:#0a1630;--white:#f6f8fb;
  --display:Futura,"Futura PT","Avenir Next",system-ui,sans-serif;
  --ui:"Avenir Next","Avenir",-apple-system,system-ui,sans-serif;
  --mono:"Plex Mono",ui-monospace,Menlo,monospace;
  --pad:24px;--bottom:36px;--navh:64px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
html.reel{scroll-behavior:auto}
html.reel *{user-select:none;-webkit-user-select:none}
body{margin:0;background:var(--blue-d);color:#fff;font:400 16px/1.45 var(--ui);overflow-x:hidden;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}

.bg{position:fixed;inset:0;z-index:0;background:
  radial-gradient(90% 55% at 50% 40%,#2b74dc 0%,#145cc4 30%,#0a48a4 58%,#063a86 82%,#042c68 100%)}
#gl{position:fixed;inset:0;width:100vw;height:100vh;z-index:1;display:block}
#fx{position:fixed;inset:0;width:100vw;height:100vh;z-index:2;pointer-events:none;overflow:visible}
#tags{position:fixed;inset:0;z-index:3;pointer-events:none}
.grain{position:fixed;inset:-50%;z-index:4;pointer-events:none;opacity:.07;mix-blend-mode:overlay}

/* nav */
.nav{position:fixed;left:0;right:0;top:0;height:var(--navh);z-index:20;display:flex;align-items:center;gap:28px;
  padding:0 var(--pad);padding-top:calc(var(--navh) - 64px)}
.brand{font:700 25px/1 var(--display);letter-spacing:.06em;color:#fff}
.links{display:none;gap:26px;font:500 14px/1 var(--ui);color:rgba(255,255,255,.82)}
.links a:hover{color:#fff}
.icons{margin-left:auto;display:flex;gap:6px}
.icons button{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;position:relative;transition:background .2s}
.icons button:hover{background:rgba(255,255,255,.12)}
.icons svg{width:22px;height:22px;fill:none;stroke:#fff;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.bag i{position:absolute;right:3px;top:4px;min-width:17px;height:17px;border-radius:9px;background:var(--yellow);color:var(--ink);
  font:700 10px/17px var(--ui);text-align:center;font-style:normal;transform:scale(0);transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.bag i.on{transform:scale(1)}
.nav.solid{background:rgba(246,248,251,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}

/* type */
.eyebrow{margin:0 0 12px;font:500 11.5px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.78);
  display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:8px;height:8px;background:var(--yellow);border-radius:1px}
.eyebrow.dark{color:#3d4b66}
.mono{font-family:var(--mono)}
h1,h2{font-family:var(--display);font-weight:700;margin:0;letter-spacing:-.025em;line-height:.94}
h1{font-size:64px}
.lede{margin:14px 0 0;font:500 17px/1.4 var(--ui);color:rgba(255,255,255,.84);max-width:30ch}
.btn{display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 24px;border-radius:999px;font:600 15.5px/1 var(--ui);
  letter-spacing:.005em;transition:transform .25s cubic-bezier(.3,1.5,.5,1),background .25s,box-shadow .25s}
.btn.y{background:var(--yellow);color:var(--ink);box-shadow:0 10px 28px -12px rgba(255,212,0,.65),inset 0 -2px 0 rgba(0,0,0,.08)}
.btn.y:hover{transform:translateY(-2px)}
.btn.y:active,.btn.y.press{transform:scale(.94)}
.btn.ghost{color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.45)}
.btn.ghost:hover{box-shadow:inset 0 0 0 1.5px #fff}
.btn.big{height:56px;padding:0 30px;font-size:17px}
.ctas{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}

/* hero */
#hero{position:relative;height:100vh;height:100svh;min-height:600px;z-index:5;pointer-events:none}
#hero a,#hero button{pointer-events:auto}
.kicker{position:absolute;left:var(--pad);top:calc(var(--navh) + 18px);margin:0;font:500 11px/1 var(--mono);letter-spacing:.16em;
  text-transform:uppercase;color:rgba(255,255,255,.7);display:flex;gap:9px;align-items:center}
.kicker span{width:7px;height:7px;border-radius:50%;background:var(--yellow);box-shadow:0 0 0 4px rgba(255,212,0,.18)}
.hero-copy{position:absolute;left:var(--pad);right:var(--pad);bottom:var(--bottom);height:250px}
.state{position:absolute;left:0;right:0;bottom:0}
.s-steps,.s-product{opacity:0;visibility:hidden}
.bar{display:flex;gap:5px;margin:4px 0 20px;max-width:320px}
.bar i{flex:1;height:4px;border-radius:2px;background:rgba(255,255,255,.22);transition:background .15s}
.bar i.on{background:var(--yellow)}
.steps-title{margin:0;font:700 46px/.98 var(--display);letter-spacing:-.025em}
#stepLabel{font-weight:500;color:#fff}
.pname{font-size:76px;letter-spacing:.005em;line-height:.88}
.row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:4px}
.row .ctas{margin-top:14px}
.swatches{display:flex;gap:8px;margin-top:14px}
.swatches i{width:22px;height:22px;border-radius:50%;background:var(--c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15),0 0 0 2px rgba(255,255,255,0)}
.swatches i.on{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15),0 0 0 2px var(--blue),0 0 0 4px #fff}

/* rooms */
#rooms{position:relative;height:260vh;z-index:5;pointer-events:none}
#rooms .sticky{position:sticky;top:0;height:100vh;height:100svh}
.rooms-copy{position:absolute;left:var(--pad);right:var(--pad);bottom:var(--bottom)}
.rooms-copy h2{font-size:44px}
.chips{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap;pointer-events:auto}
.chips span{height:34px;padding:0 15px;display:inline-flex;align-items:center;border-radius:999px;font:600 13.5px/1 var(--ui);
  color:rgba(255,255,255,.86);box-shadow:inset 0 0 0 1.3px rgba(255,255,255,.32)}
.chips span.on{background:#fff;color:var(--ink);box-shadow:none}
.count{margin:16px 0 0;font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.count b{color:var(--yellow);font-weight:500}

/* tags */
.tag{position:absolute;left:0;top:0;will-change:transform,opacity}
.tag .dot{position:absolute;left:-6px;top:-6px;width:12px;height:12px;border-radius:50%;background:var(--yellow);
  box-shadow:0 0 0 3px rgba(255,255,255,.95),0 3px 10px rgba(0,0,0,.3)}
.tag .lbl{position:absolute;left:14px;top:-17px;white-space:nowrap;display:flex;align-items:baseline;gap:7px;height:34px;padding:0 13px;
  align-items:center;border-radius:999px;background:rgba(255,255,255,.96);color:var(--ink);box-shadow:0 10px 26px -10px rgba(3,20,60,.55);
  transform-origin:0 50%}
.tag.left .lbl{left:auto;right:14px;transform-origin:100% 50%}
.tag b{font:700 13.5px/1 var(--display);letter-spacing:.04em}
.tag span{font:500 12.5px/1 var(--ui);color:#5a6680}

/* everyone */
#everyone{position:relative;z-index:6;background:var(--white);color:var(--ink);min-height:100vh;padding:120px var(--pad) 90px}
#everyone .wrap{max-width:1180px;margin:0 auto}
#everyone h2{font-size:46px;max-width:12ch}
.intro{margin:18px 0 26px;font:500 17px/1.45 var(--ui);color:#3d4b66;max-width:34ch}
.dims{list-style:none;margin:0;padding:0;display:grid;gap:0;border-top:1px solid #d9dfe9}
.dims li{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;column-gap:16px;padding:14px 0;border-bottom:1px solid #d9dfe9;align-items:center}
.dims svg{grid-row:span 2;width:40px;height:40px;fill:none;stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.dims b{font:700 21px/1.1 var(--display);letter-spacing:-.01em}
.dims span{font:500 14.5px/1.35 var(--ui);color:#4c5873}

/* cta */
#cta{position:relative;z-index:5;height:100vh;height:100svh;pointer-events:none}
#cta a,#cta button{pointer-events:auto}
.cta-copy{position:absolute;left:var(--pad);right:var(--pad);bottom:var(--bottom)}
.cta-copy h2{font-size:50px}

footer{position:relative;z-index:6;background:#03183d;color:rgba(255,255,255,.7);padding:48px var(--pad) 60px;font-size:14px}
footer .cols{max-width:1180px;margin:0 auto;display:flex;flex-wrap:wrap;gap:30px;justify-content:space-between}
footer b{font:700 22px/1 var(--display);letter-spacing:.06em;color:#fff}
footer p{margin:12px 0 0}
footer nav{display:flex;gap:22px;flex-wrap:wrap}

/* wide screens: copy left, 3D right */
@media (min-width:900px){
  :root{--pad:56px;--bottom:auto;--navh:76px}
  .links{display:flex}
  h1{font-size:clamp(64px,6.4vw,104px)}
  .hero-copy{top:50%;bottom:auto;transform:translateY(-42%);width:min(640px,46vw);right:auto;height:420px}
  .state{top:0;bottom:auto}
  .steps-title{font-size:64px}
  .pname{font-size:120px}
  .rooms-copy{top:50%;bottom:auto;transform:translateY(-50%);width:min(560px,40vw);right:auto}
  .rooms-copy h2{font-size:clamp(48px,4.4vw,68px)}
  /* desktop: Democratic Design is a white panel on the left, the finished room stays in view on the right */
  #everyone{background:transparent;padding:0;min-height:100vh;display:flex;pointer-events:none}
  #everyone .wrap{margin:0;width:min(640px,46vw);background:var(--white);padding:150px 56px 70px;pointer-events:auto;
    box-shadow:30px 0 80px -30px rgba(2,20,60,.45);display:flex;flex-direction:column;justify-content:center}
  #everyone h2{font-size:clamp(44px,4vw,60px);max-width:13ch;text-wrap:balance}
  .dims li{padding:13px 0}
  .dims svg{width:40px;height:40px}
  .dims li::after{right:auto;left:24px;top:8px;margin-top:0}
  .cta-copy{top:50%;bottom:auto;transform:translateY(-50%);width:min(660px,46vw);right:auto}
  .cta-copy h2{font-size:clamp(52px,5vw,80px)}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.tag.hint .lbl{background:var(--yellow);padding:0 15px}
.tag.hint b{font:600 13.5px/1 var(--ui);letter-spacing:.01em}
.nav.solid .brand{color:var(--ink)}
.nav.solid .icons svg{stroke:var(--ink)}
.nav.solid .links{color:#3d4b66}
.dims li{will-change:transform,opacity}
.nav.scrolled{background:rgba(4,36,92,.82);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);box-shadow:0 1px 0 rgba(255,255,255,.08)}
.nav.solid{box-shadow:0 1px 0 rgba(10,22,48,.08)}
#start{position:relative;overflow:hidden}
#start .t2{display:none;align-items:center;gap:8px}
#start .t2 svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
#start.done{background:#fff}
#start.done .t1{display:none}
#start.done .t2{display:inline-flex}
/* phones: Democratic Design is a bottom sheet over the room, so the room stays on screen */
@media (max-width:899px){
  #everyone{background:transparent;padding:0;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}
  #everyone .wrap{background:var(--white);border-radius:28px 28px 0 0;padding:26px var(--pad) 40px;pointer-events:auto;
    box-shadow:0 -20px 60px -20px rgba(2,20,60,.45)}
  #everyone h2{font-size:31px;max-width:none;text-wrap:balance}
  .dims li::after{right:auto;left:20px;top:3px;margin-top:0;width:19px;height:19px;background-size:14px}
  #everyone .intro{margin:10px 0 12px;font-size:14.5px}
  .dims li{padding:8px 0;grid-template-columns:34px 1fr;column-gap:12px}
  .dims svg{width:30px;height:30px}
  .dims b{font-size:17px}
  .dims span{font-size:13px}
}
.dims li{position:relative}
.dims li::after{content:"";position:absolute;right:0;top:50%;width:22px;height:22px;margin-top:-11px;border-radius:50%;background:var(--yellow) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='m5 10.5 3.2 3.2L15 6.6' fill='none' stroke='%230a1630' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat;
  transform:scale(var(--ck,0))}

/* real homes: graded photos with shoppable hotspots */
#homes{position:relative;z-index:6;background:var(--white);color:var(--ink);padding:110px var(--pad) 90px;min-height:100vh}
#homes .wrap{max-width:1240px;margin:0 auto}
#homes h2{font-size:46px;max-width:14ch;text-wrap:balance}
#homes .intro{margin:14px 0 26px}
.shots{display:grid;gap:14px;grid-template-columns:1fr}
.shot{position:relative;margin:0;border-radius:22px;overflow:hidden;aspect-ratio:4/5;background:#dfe5ee;isolation:isolate;
  box-shadow:0 30px 60px -36px rgba(8,30,80,.55)}
.shot img{position:absolute;left:0;top:-6%;width:100%;height:112%;object-fit:cover;display:block;
  filter:saturate(.9) contrast(1.06) brightness(1.02);will-change:transform}
.shot::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:soft-light;
  background:linear-gradient(160deg,rgba(255,236,200,.18),rgba(11,79,179,.32))}
.shot::after{content:"";position:absolute;inset:auto 0 0 0;height:38%;z-index:1;pointer-events:none;
  background:linear-gradient(to top,rgba(4,24,60,.62),rgba(4,24,60,0))}
.shot figcaption{position:absolute;left:20px;right:20px;bottom:18px;z-index:2;color:#fff;font:600 15px/1.3 var(--ui)}
.shot figcaption b{display:block;font:700 22px/1 var(--display);letter-spacing:.03em;margin-bottom:5px}
.hot{position:absolute;z-index:3;left:var(--x);top:var(--y);width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;
  display:grid;place-items:center;pointer-events:auto}
.hot i{width:18px;height:18px;border-radius:50%;background:var(--yellow);box-shadow:0 0 0 4px rgba(255,255,255,.95),0 6px 18px rgba(0,0,0,.35)}
.hot::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,255,255,.85);transform:scale(var(--pulse,1));opacity:var(--po,0)}
.hot span{position:absolute;left:36px;top:50%;transform:translateY(-50%) scale(var(--hl,0));transform-origin:0 50%;white-space:nowrap;
  height:30px;padding:0 12px;border-radius:999px;background:#fff;color:var(--ink);font:700 12.5px/30px var(--display);letter-spacing:.04em}
.nav.solid{background:rgba(246,248,251,.92)}
/* product card: bottom sheet on phones, floating card on desktop */
#pcard{position:fixed;z-index:30;left:12px;right:12px;bottom:12px;border-radius:24px;background:#fff;color:var(--ink);padding:14px;display:grid;
  grid-template-columns:96px 1fr;gap:14px;align-items:center;box-shadow:0 30px 80px -20px rgba(3,20,60,.55);visibility:hidden}
#pcard .th{width:96px;height:96px;border-radius:16px;background-size:cover;background-position:center}
#pcard b{display:block;font:700 22px/1 var(--display);letter-spacing:.03em}
#pcard .sub{display:block;margin:4px 0 10px;font:500 14px/1.3 var(--ui);color:#4c5873}
#pcard .btn{height:44px;padding:0 20px;font-size:15px}
#pcard .btn .ok{display:none}
#pcard.added .btn{background:var(--ink);color:#fff;box-shadow:none}
#pcard.added .btn .go{display:none}
#pcard.added .btn .ok{display:inline}
@media (min-width:900px){
  #homes{padding:150px var(--pad) 110px}
  #homes h2{font-size:clamp(48px,4.4vw,68px)}
  .shots{grid-template-columns:repeat(3,1fr);gap:22px}
  #pcard{left:auto;right:40px;bottom:40px;width:420px}
}
h1,h2{text-wrap:balance}
@media (max-width:899px){ .cta-copy h2{font-size:37px} .rooms-copy h2{font-size:35px} }
/* inside the Reel's phone: keep buttons and labels clear of the browser's floating address pill */
html.dev-mobile{--bottom:84px}
html.dev-mobile #pcard{bottom:96px}
html.dev-mobile #everyone .wrap{padding-bottom:84px}
