/* ============================================================
   QUAD — shared stylesheet (plain CSS, no build step)
   Tokens + base + nav/footer + shared bits + Home page.
   Per README design tokens. Lowercase headlines are intentional.
   ============================================================ */

/* ---------- fonts (self-hosted, latin, swap) ---------- */
@font-face{font-family:'Clash Display';src:url('assets/fonts/clash-display-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:'Clash Display';src:url('assets/fonts/clash-display-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:'General Sans';src:url('assets/fonts/general-sans-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'General Sans';src:url('assets/fonts/general-sans-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}
@font-face{font-family:'General Sans';src:url('assets/fonts/general-sans-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap;}
/* Space Grotesk is a variable font (400..700) — one file covers all weights */
@font-face{font-family:'Space Grotesk';src:url('assets/fonts/space-grotesk-var-latin.woff2') format('woff2-variations');font-weight:400 700;font-style:normal;font-display:swap;}

/* ---------- tokens ---------- */
:root{
  --ink:#141118; --paper:#FAF7F2; --card:#1D1824; --muted:#8A8494;
  --pulse:#FF3D00; --social:#FF2E88; --focus:#3D5AFE; --nest:#E2725B;
  --pulse-acc:#FFD600; --social-acc:#7C4DFF; --focus-acc:#00E5C7; --nest-acc:#F5C97B;
  --bg-pulse:#1A0E0A; --bg-social:#190A14; --bg-focus:#0A0E1E; --bg-nest:#F6EFE6;
  --font-display:'Clash Display',ui-sans-serif,sans-serif;
  --font-body:'General Sans',ui-sans-serif,sans-serif;
  --font-mono:'Space Grotesk',ui-monospace,monospace;
  --focus-ring:#FFD600;
}

/* ---------- base ---------- */
html,body{margin:0;padding:0;background:var(--ink);}
body{font-family:var(--font-body);color:var(--paper);-webkit-font-smoothing:antialiased;}
a{color:var(--paper);text-decoration:none;}
a:hover{opacity:.85;}
img{display:block;}
[hidden]{display:none!important;} /* author display rules otherwise beat the UA [hidden] style */
::selection{background:var(--social);color:var(--paper);}
:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px;}

.eyebrow{margin:0;font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.tabular{font-variant-numeric:tabular-nums;}

/* solid dorm-colored shield silhouette — replaces the large crest emblems */
:root{--shield:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 262'%3E%3Cpath d='M120 16 C176 16 206 34 206 88 L206 152 C206 206 172 234 120 246 C68 234 34 206 34 152 L34 88 C34 34 64 16 120 16 Z'/%3E%3C/svg%3E");}
.shield{display:inline-block;background:currentColor;-webkit-mask:var(--shield) center/contain no-repeat;mask:var(--shield) center/contain no-repeat;}
.shield--pulse{color:var(--pulse);} .shield--social{color:var(--social);} .shield--focus{color:var(--focus);} .shield--nest{color:var(--nest);}

@keyframes breathe{from{transform:scale(1)}to{transform:scale(1.045)}}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ============================================================
   NAV (injected by quad.js) + FOOTER
   ============================================================ */
.quad-nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:18px 40px;background:rgba(20,17,24,.45);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(250,247,242,.08);}
.quad-nav__brand{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:-.02em;color:var(--paper);}
.quad-nav__links{display:flex;align-items:center;gap:32px;font-size:16px;font-weight:500;}
.quad-nav__links a{color:rgba(250,247,242,.7);}
.quad-nav__links a.is-active{color:var(--paper);}
.quad-nav__book{white-space:nowrap;padding:10px 24px;border-radius:999px;box-shadow:inset 0 0 0 1.5px var(--paper);
  color:var(--paper)!important;font-weight:600;transition:background .25s,color .25s;}
.quad-nav__book:hover{background:var(--paper);color:var(--ink)!important;opacity:1;}

/* light variant (Nest) */
.quad-nav--light{background:rgba(246,239,230,.55);border-bottom-color:rgba(20,17,24,.1);}
.quad-nav--light .quad-nav__brand{color:var(--ink);}
.quad-nav--light .quad-nav__links a{color:rgba(20,17,24,.6);}
.quad-nav--light .quad-nav__links a.is-active{color:var(--ink);}
.quad-nav--light .quad-nav__book{box-shadow:inset 0 0 0 1.5px var(--ink);color:var(--ink)!important;}
.quad-nav--light .quad-nav__book:hover{background:var(--ink);color:var(--paper)!important;}

/* dorms dropdown */
.quad-nav__item{position:relative;display:flex;align-items:center;}
.quad-nav__toplink{display:inline-flex;align-items:center;gap:6px;}
.quad-nav__toplink::after{content:'▾';font-size:11px;opacity:.7;transition:transform .25s;}
.quad-nav__item:hover .quad-nav__toplink::after,
.quad-nav__item:focus-within .quad-nav__toplink::after{transform:rotate(180deg);}
.quad-nav__menu{position:absolute;top:calc(100% + 12px);left:50%;transform:translateX(-50%) translateY(6px);
  display:flex;flex-direction:column;gap:2px;min-width:172px;padding:8px;border-radius:16px;
  background:rgba(29,24,36,.97);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.12),0 14px 34px rgba(0,0,0,.38);
  opacity:0;visibility:hidden;transition:opacity .22s,transform .22s,visibility .22s;z-index:60;}
.quad-nav__menu::before{content:"";position:absolute;top:-12px;left:0;right:0;height:12px;} /* bridge hover gap */
.quad-nav__item:hover .quad-nav__menu,
.quad-nav__item:focus-within .quad-nav__menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.quad-nav__menuitem{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:11px;font-size:15px;font-weight:600;
  color:rgba(250,247,242,.85)!important;transition:background .2s,color .2s;white-space:nowrap;}
.quad-nav__menuitem:hover{background:rgba(250,247,242,.08);color:var(--paper)!important;opacity:1;}
.quad-nav__menuitem .shield{width:12px;height:13px;flex-shrink:0;}
.quad-nav--light .quad-nav__menu{background:rgba(255,253,248,.98);box-shadow:inset 0 0 0 1.5px rgba(20,17,24,.1),0 14px 34px rgba(20,17,24,.14);}
.quad-nav--light .quad-nav__menuitem{color:rgba(20,17,24,.8)!important;}
.quad-nav--light .quad-nav__menuitem:hover{background:rgba(20,17,24,.06);color:var(--ink)!important;}
@media (prefers-reduced-transparency: reduce){
  .quad-nav__menu{backdrop-filter:none;-webkit-backdrop-filter:none;background:#1D1824;}
  .quad-nav--light .quad-nav__menu{background:#FFFDF8;}
}

.quad-footer{border-top:1px solid rgba(250,247,242,.1);padding:44px 64px;display:flex;justify-content:space-between;
  align-items:center;gap:24px;flex-wrap:wrap;background:var(--ink);}
.quad-footer__brand{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.02em;}
.quad-footer__note{margin:0;font-size:14px;color:var(--muted);}
.quad-footer--light{background:var(--bg-nest);color:var(--ink);border-top-color:rgba(20,17,24,.12);}
.quad-footer--light .quad-footer__note{color:rgba(20,17,24,.6);}

@media (prefers-reduced-transparency: reduce){
  .quad-nav{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--ink);}
  .quad-nav--light{background:var(--bg-nest);}
}

/* ============================================================
   SECTION DIVIDERS (SVG path + traveling crest)
   ============================================================ */
.divider{position:relative;background:var(--ink);height:120px;}
.divider svg{position:absolute;inset:0;width:100%;height:100%;display:block;}
.divider__traveler{position:absolute;top:0;left:0;width:30px;height:33px;opacity:0;will-change:transform;}

/* ============================================================
   SHARED BUTTONS
   ============================================================ */
.btn{display:inline-flex;align-items:center;gap:10px;border-radius:999px;font-weight:600;cursor:pointer;
  transition:background .25s,color .25s,box-shadow .25s;text-align:center;}
.btn--solid{padding:18px 36px;background:var(--paper);color:var(--ink);font-size:18px;}
.btn--solid:hover{background:var(--ink);color:var(--paper);box-shadow:inset 0 0 0 2px var(--paper);opacity:1;}
.btn--ink{padding:16px 34px;background:var(--ink);color:var(--paper);font-size:17px;}
.btn--ink:hover{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink);opacity:1;}

/* ============================================================
   HOME — hero
   ============================================================ */
.home-hero{display:flex;min-height:100vh;}
.home-hero__text{width:44%;display:flex;flex-direction:column;justify-content:center;gap:28px;
  padding:140px 24px 64px 64px;box-sizing:border-box;}
.home-hero__title{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(56px,6.6vw,96px);
  line-height:1.02;letter-spacing:-.02em;text-wrap:balance;}
.home-hero__accent{white-space:nowrap;padding-bottom:6px;
  background-image:linear-gradient(90deg,#FF3D00 0 25%,#FF2E88 25% 50%,#3D5AFE 50% 75%,#E2725B 75% 100%);
  background-size:100% 7px;background-position:0 100%;background-repeat:no-repeat;transition:color .35s;}
.home-hero__lede{margin:0;max-width:42ch;font-size:18px;line-height:1.55;color:rgba(250,247,242,.72);}

.home-hero__panels{width:56%;display:flex;min-height:100vh;overflow:hidden;}
.panel{position:relative;overflow:hidden;display:block;flex:1 1 0;transition:flex .55s cubic-bezier(.3,.9,.3,1);}
.panel--pulse{background:var(--bg-pulse);}
.panel--social{background:var(--bg-social);}
.panel--focus{background:var(--bg-focus);}
.panel--nest{background:var(--bg-nest);}
.panel:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px;}
.panel__img{position:absolute;inset:0;animation:breathe 9s ease-in-out infinite alternate;}
.panel__img img{width:100%;height:100%;object-fit:cover;}
.panel--pulse .panel__img{animation-delay:0s;}
.panel--social .panel__img{animation-delay:1.6s;}
.panel--focus .panel__img{animation-delay:3.2s;}
.panel--nest .panel__img{animation-delay:4.8s;}
.panel__shade{position:absolute;inset:0;background:linear-gradient(to top,rgba(20,17,24,.75) 0%,rgba(20,17,24,0) 45%);}
.panel__flood{position:absolute;inset:0;opacity:0;transition:opacity .45s;}
.panel--pulse .panel__flood{background:linear-gradient(to top,var(--pulse) 0%,rgba(255,61,0,0) 75%);}
.panel--social .panel__flood{background:linear-gradient(to top,var(--social) 0%,rgba(255,46,136,0) 75%);}
.panel--focus .panel__flood{background:linear-gradient(to top,var(--focus) 0%,rgba(61,90,254,0) 75%);}
.panel--nest .panel__flood{background:linear-gradient(to top,var(--nest) 0%,rgba(226,114,91,0) 75%);}
.panel__label{position:absolute;left:20px;bottom:20px;display:flex;align-items:center;gap:12px;}
.panel__label img{width:40px;height:44px;}
.panel__label span{font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--paper);}

/* hover choreography (pure CSS via :has) — desktop only */
@media (min-width:900px){
  .home-hero__panels:hover .panel{flex:.82 1 0;}
  .home-hero__panels .panel:hover{flex:2.1 1 0;}
  .panel:hover .panel__flood{opacity:.8;}
  .home-hero:has(.panel--pulse:hover) .home-hero__accent{color:var(--pulse);background-image:linear-gradient(90deg,var(--pulse),var(--pulse));}
  .home-hero:has(.panel--social:hover) .home-hero__accent{color:var(--social);background-image:linear-gradient(90deg,var(--social),var(--social));}
  .home-hero:has(.panel--focus:hover) .home-hero__accent{color:var(--focus);background-image:linear-gradient(90deg,var(--focus),var(--focus));}
  .home-hero:has(.panel--nest:hover) .home-hero__accent{color:var(--nest);background-image:linear-gradient(90deg,var(--nest),var(--nest));}
}

/* ============================================================
   HOME — vibe check teaser
   ============================================================ */
.teaser{background:var(--ink);padding:110px 40px;display:flex;flex-wrap:wrap;gap:72px;align-items:center;justify-content:center;}
.teaser__intro{display:flex;flex-direction:column;gap:20px;max-width:480px;}
.teaser__h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(36px,3.9vw,56px);line-height:1.05;letter-spacing:-.02em;}
.gauge{position:relative;width:300px;height:168px;margin-top:24px;}
.gauge img{position:absolute;width:36px;height:39px;opacity:.5;transition:opacity .4s,transform .4s;}
.gauge__pulse{left:26px;top:52px;} .gauge__social{left:92px;top:6px;}
.gauge__focus{left:172px;top:6px;} .gauge__nest{left:238px;top:52px;}
.gauge img.is-leader{opacity:1;transform:scale(1.18);}
.gauge__needle{position:absolute;left:148px;bottom:8px;width:4px;height:104px;border-radius:2px;background:var(--paper);
  transform-origin:50% 100%;transition:transform .6s cubic-bezier(.3,1.2,.4,1);transform:rotate(0deg);}
.gauge__hub{position:absolute;left:141px;bottom:1px;width:18px;height:18px;border-radius:50%;background:var(--paper);}

.teaser__panel{width:460px;max-width:100%;min-height:380px;position:relative;}
.quiz-card{background:var(--card);border-radius:24px;padding:36px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.12);
  display:flex;flex-direction:column;gap:22px;transition:transform .35s ease,opacity .35s ease;}
.quiz-card.is-flying{transform:translate(56px,-10px) rotate(6deg);opacity:0;}
.quiz-dots{display:flex;gap:8px;}
.quiz-dots span{width:24px;height:4px;border-radius:2px;background:rgba(250,247,242,.2);}
.quiz-dots span.on{background:var(--paper);}
.quiz-card h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:30px;line-height:1.15;letter-spacing:-.01em;}
.quiz-answers{display:flex;flex-direction:column;gap:12px;}
.quiz-answers button{appearance:none;border:none;cursor:pointer;background:transparent;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.25);
  border-radius:14px;padding:16px 20px;color:var(--paper);font-family:var(--font-body);font-size:17px;font-weight:500;text-align:left;
  transition:box-shadow .25s,transform .25s;}
.quiz-answers button:hover{box-shadow:inset 0 0 0 2px var(--paper);transform:translateX(4px);}
.quiz-answers button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px;}

.quiz-result{position:relative;}
.quiz-result__glow{position:absolute;inset:-16px;border-radius:36px;filter:blur(30px);opacity:.3;}
.quiz-result__card{position:relative;background:rgba(250,247,242,.07);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.18);border-radius:24px;padding:44px 36px;display:flex;flex-direction:column;
  align-items:center;gap:18px;text-align:center;}
.quiz-result__card .eyebrow{color:rgba(250,247,242,.75);}
.quiz-result__crest{width:100px;height:109px;background-size:contain;background-repeat:no-repeat;background-position:center;}
.quiz-result__card h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:34px;letter-spacing:-.01em;}
/* matched action pair — equal width + height, one solid + one ghost */
.quiz-result__actions{display:flex;gap:14px;width:100%;margin-top:6px;}
.quiz-result__actions .quiz-result__cta{flex:1 1 0;margin-top:0;}
.quiz-result__cta{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;margin-top:6px;
  min-height:52px;padding:14px 24px;border-radius:999px;background:var(--paper);color:var(--ink);border:none;cursor:pointer;
  font-family:var(--font-body);font-size:17px;font-weight:600;line-height:1;text-align:center;white-space:nowrap;
  transition:background .25s,color .25s,box-shadow .25s;}
.quiz-result__cta:hover{background:transparent;color:var(--paper);box-shadow:inset 0 0 0 2px var(--paper);opacity:1;}
.quiz-result__cta--ghost{background:transparent;color:var(--paper);box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.4);}
.quiz-result__cta--ghost:hover{background:transparent;color:var(--paper);box-shadow:inset 0 0 0 2px var(--paper);}
.quiz-result__cta:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px;}
.quiz-result__restart{appearance:none;border:none;background:transparent;color:rgba(250,247,242,.55);font-size:20px;cursor:pointer;padding:6px;}
.quiz-result__restart:hover{color:var(--paper);}
@media (prefers-reduced-transparency: reduce){.quiz-result__card{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--card);}}

/* ============================================================
   HOME — meet the dorms
   ============================================================ */
.dorms__h2{margin:0;padding:40px 64px 72px;font-family:var(--font-display);font-weight:600;font-size:clamp(44px,4.6vw,64px);
  letter-spacing:-.02em;text-align:center;background:var(--ink);}
.dormrow{min-height:58vh;display:flex;align-items:stretch;flex-wrap:wrap;}
.dormrow--rev{flex-direction:row-reverse;}
.dormrow--pulse{background:var(--bg-pulse);} .dormrow--social{background:var(--bg-social);}
.dormrow--focus{background:var(--bg-focus);} .dormrow--nest{background:var(--bg-nest);color:var(--ink);}
.dormrow__media{flex:1 1 420px;min-height:380px;position:relative;overflow:hidden;}
.dormrow__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.dormrow__body{flex:1 1 420px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:22px;
  padding:72px 64px;box-sizing:border-box;}
.dormrow__body h3{margin:0;font-family:var(--font-display);font-weight:700;font-size:40px;letter-spacing:-.01em;}
.dormrow__body p{margin:0;max-width:44ch;font-size:20px;line-height:1.55;color:rgba(250,247,242,.88);}
.dormrow--nest .dormrow__body h3,.dormrow--nest .dormrow__body p{color:var(--ink);}
.dormrow__crest{width:68px;height:74px;}
.dormrow--nest .dormrow__crest{filter:drop-shadow(0 6px 14px rgba(226,114,91,.25));}
.dorm-cta{display:inline-flex;margin-top:6px;padding:13px 28px;border-radius:999px;font-size:16px;font-weight:600;
  transition:background .25s,color .25s;}
.dorm-cta--pulse{box-shadow:inset 0 0 0 1.5px var(--pulse);color:var(--paper);}
.dorm-cta--pulse:hover{background:var(--pulse);color:var(--ink);opacity:1;}
.dorm-cta--social{box-shadow:inset 0 0 0 1.5px var(--social);color:var(--paper);}
.dorm-cta--social:hover{background:var(--social);color:var(--paper);opacity:1;}
.dorm-cta--focus{box-shadow:inset 0 0 0 1.5px var(--focus);color:var(--paper);}
.dorm-cta--focus:hover{background:var(--focus);color:var(--paper);opacity:1;}
.dorm-cta--nest{box-shadow:inset 0 0 0 1.5px var(--nest);color:var(--ink);}
.dorm-cta--nest:hover{background:var(--nest);color:var(--ink);opacity:1;}
.dorm-cta--nest:focus-visible{outline-color:var(--focus);}
.hl-pulse{color:var(--pulse-acc);font-weight:600;} .hl-social{color:var(--social-acc);font-weight:600;}
.hl-focus{color:var(--focus-acc);font-weight:600;}
.hl-nest{background:var(--nest-acc);color:var(--ink);font-weight:600;padding:1px 6px;border-radius:6px;}

/* crest draw-on-scroll: strokes hidden until revealed, fills pop */
.js-motion [data-crest] .stroke{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);}
.js-motion [data-crest] .fill{opacity:0;transform:scale(.5);transform-origin:50% 50%;}
.js-motion [data-crest].drawn .stroke{transition:stroke-dashoffset 1.1s ease-in-out;stroke-dashoffset:0;}
.js-motion [data-crest].drawn .fill{transition:opacity .4s ease .8s,transform .4s cubic-bezier(.34,1.56,.64,1) .8s;opacity:1;transform:scale(1);}

/* dorm row reveal (prefix with .js-motion so it outranks the hiding rule) */
.js-motion .dormrow > *{opacity:0;transform:translateY(44px);}
.js-motion .dormrow.revealed > *{transition:opacity .8s ease,transform .8s ease;opacity:1;transform:none;}
.js-motion .dormrow.revealed .dormrow__media{transition-delay:.15s;}

/* ============================================================
   HOME — rooms digest
   ============================================================ */
.rooms{background:var(--paper);color:var(--ink);padding:96px 64px 110px;display:flex;flex-direction:column;align-items:center;gap:18px;}
.rooms__h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(44px,4.6vw,64px);letter-spacing:-.02em;text-align:center;}
.rooms__sub{margin:0;font-size:18px;color:rgba(20,17,24,.65);text-align:center;}
.rooms__grid{display:flex;flex-wrap:wrap;gap:32px;justify-content:center;margin-top:48px;}
.room-card{width:340px;background:#FFFDFA;border-radius:24px;box-shadow:inset 0 0 0 1.5px rgba(20,17,24,.14);padding:12px;display:flex;flex-direction:column;}
.room-card img{width:100%;height:220px;object-fit:cover;border-radius:16px;}
.room-card__body{padding:22px 14px 14px;display:flex;flex-direction:column;gap:8px;}
.room-card__body h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:28px;}
.room-card__price{margin:0;font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;}
.room-card__price small{font-size:16px;font-weight:500;color:rgba(20,17,24,.6);}
.rooms .btn--ink{margin-top:40px;}
.rooms .btn--ink:focus-visible{outline-color:var(--focus);}

/* ============================================================
   HOME — group chat marquee
   ============================================================ */
.marquee-sec{background:var(--ink);padding:100px 0 110px;overflow:hidden;}
.marquee-sec__h2{margin:0;padding:0 64px;font-family:var(--font-display);font-weight:600;font-size:clamp(44px,4.6vw,64px);letter-spacing:-.02em;text-align:center;}
.marquee{margin-top:72px;overflow:hidden;}
.marquee__track{display:flex;gap:72px;width:max-content;padding:12px 36px;animation:marquee 48s linear infinite;}
.marquee:hover .marquee__track{animation-play-state:paused;}
.quote{display:flex;align-items:center;gap:24px;width:460px;}
.quote img{width:132px;height:164px;object-fit:cover;border:4px solid var(--paper);border-radius:16px;flex-shrink:0;}
.quote__body{display:flex;flex-direction:column;gap:10px;}
.quote__body p{margin:0;}
.quote__text{font-size:18px;line-height:1.5;color:rgba(250,247,242,.9);}
.quote__who{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:rgba(250,247,242,.65);}
.quote__who img{width:16px;height:17px;border:none;border-radius:0;}
.quote--r1 img{transform:rotate(-3deg);} .quote--r2 img{transform:rotate(2.5deg);}
.quote--r3 img{transform:rotate(-2deg);} .quote--r4 img{transform:rotate(3deg);}

/* ============================================================
   HOME — book CTA
   ============================================================ */
.book-cta{background:var(--ink);padding:120px 40px 150px;display:flex;flex-direction:column;align-items:center;gap:36px;text-align:center;}
.book-cta h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(52px,5.6vw,80px);letter-spacing:-.02em;}
.book-cta .btn--solid{font-size:19px;padding:20px 44px;}

/* ============================================================
   DORM TAKEOVER PAGES (Pulse / Social / Focus / Nest)
   Per-dorm palette via CSS vars; markup is shared.
   ============================================================ */
.dorm--pulse {--lead:#FF3D00;--accent:#FFD600;--dorm-bg:#1A0E0A;--dorm-ink:#FAF7F2;--focus-ring:#FFD600;--eyebrow-ink:#1A0E0A;--scrim:#1A0E0A;}
.dorm--social{--lead:#FF2E88;--accent:#7C4DFF;--dorm-bg:#190A14;--dorm-ink:#FAF7F2;--focus-ring:#7C4DFF;--eyebrow-ink:#FAF7F2;--scrim:#190A14;}
.dorm--focus {--lead:#3D5AFE;--accent:#00E5C7;--dorm-bg:#0A0E1E;--dorm-ink:#FAF7F2;--focus-ring:#00E5C7;--eyebrow-ink:#0A0E1E;--scrim:#0A0E1E;}
.dorm--nest  {--lead:#E2725B;--accent:#F5C97B;--dorm-bg:#F6EFE6;--dorm-ink:#141118;--focus-ring:#3D5AFE;--eyebrow-ink:#141118;--scrim:#141118;}

body.dorm{background:var(--dorm-bg);color:var(--dorm-ink);}
body.dorm .quad-nav{background:color-mix(in srgb,var(--dorm-bg) 55%,transparent);}
body.dorm .quad-footer{background:var(--dorm-bg);}
body.dorm ::selection{background:var(--lead);color:var(--dorm-ink);}
body.dorm .divider{background:var(--dorm-bg);}
body.dorm :focus-visible{outline-color:var(--focus-ring);}
.dorm-ink-soft{color:color-mix(in srgb,var(--dorm-ink) 82%,transparent);}

/* entry sweep — world color wipes up on load */
.dorm-entry{position:fixed;inset:0;z-index:100;pointer-events:none;background:var(--lead);
  transform:translateY(0);animation:entry-sweep .9s ease .2s forwards;}
@keyframes entry-sweep{to{transform:translateY(-115%);}}

/* hero */
.dorm-hero{position:relative;min-height:100vh;display:flex;align-items:flex-end;overflow:hidden;}
.dorm-hero__media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.dorm-hero__scrim{position:absolute;inset:0;background:linear-gradient(to top,
  color-mix(in srgb,var(--scrim) 92%,transparent) 0%,
  color-mix(in srgb,var(--scrim) 35%,transparent) 45%,
  color-mix(in srgb,var(--scrim) 25%,transparent) 100%);}
.dorm-hero__inner{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;gap:48px;
  padding:140px 64px 88px;width:100%;box-sizing:border-box;color:#FAF7F2;} /* hero sits on a dark scrim in every world */
.dorm-hero__text{display:flex;flex-direction:column;gap:24px;max-width:760px;}
.dorm-eyebrow{align-self:flex-start;font-family:var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--eyebrow-ink);background:var(--accent);padding:6px 14px;border-radius:999px;}
.dorm-hero__title{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(52px,6.4vw,96px);
  line-height:1.02;letter-spacing:-.02em;text-wrap:balance;}
.dorm-hero__title em{font-style:normal;color:var(--accent);}
.dorm-hero__lede{margin:0;font-size:20px;line-height:1.5;color:rgba(250,247,242,.86);max-width:44ch;}
.dorm-hero__crest{width:132px;height:144px;margin-left:auto;animation:crest-drop .8s cubic-bezier(.34,1.56,.64,1) .55s both;}
@keyframes crest-drop{from{transform:translateY(-70px) scale(.75);opacity:0;}to{transform:none;opacity:1;}}
.dorm-btn{align-self:flex-start;display:inline-flex;padding:18px 36px;border-radius:999px;background:var(--dorm-ink);
  color:var(--dorm-bg);font-size:18px;font-weight:600;transition:background .25s,color .25s,box-shadow .25s;}
.dorm-btn:hover{background:var(--dorm-bg);color:var(--dorm-ink);box-shadow:inset 0 0 0 2px var(--dorm-ink);opacity:1;}

/* scrolly — a day at X */
.scrolly{height:320vh;position:relative;}
.scrolly__stick{position:sticky;top:0;height:100vh;display:flex;align-items:stretch;overflow:hidden;}
.scrolly__media{position:relative;flex:1 1 480px;min-height:46vh;}
.scrolly__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .7s;}
.scrolly__media img.on{opacity:1;}
.scrolly__media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to right,transparent 60%,color-mix(in srgb,var(--dorm-bg) 55%,transparent) 100%);}
.scrolly__body{flex:1 1 420px;display:flex;flex-direction:column;justify-content:center;gap:40px;padding:96px 64px;box-sizing:border-box;}
.scrolly__body h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(40px,3.9vw,56px);letter-spacing:-.02em;}
.scrolly__beats{display:flex;gap:14px;flex-wrap:wrap;}
.beat-btn{appearance:none;border:none;cursor:pointer;background:transparent;font-family:var(--font-mono);font-size:15px;
  font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:9px 18px;border-radius:999px;
  box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--dorm-ink) 30%,transparent);
  color:color-mix(in srgb,var(--dorm-ink) 60%,transparent);transition:box-shadow .3s,color .3s;}
.beat-btn.on{box-shadow:inset 0 0 0 2px var(--accent);color:var(--accent);}
.scrolly__blocks{position:relative;min-height:200px;}
.beat-block{position:absolute;inset:0;margin:0;font-family:var(--font-display);font-weight:600;
  font-size:clamp(28px,2.6vw,40px);line-height:1.25;letter-spacing:-.01em;visibility:hidden;}
.beat-block.on{visibility:visible;}
.beat-block span{display:inline-block;transition:opacity .5s,transform .5s;opacity:0;transform:translateY(14px);}
.beat-block.on span{opacity:1;transform:none;}
.beat-block span:nth-child(1){transition-delay:0ms;} .beat-block span:nth-child(2){transition-delay:60ms;}
.beat-block span:nth-child(3){transition-delay:120ms;} .beat-block span:nth-child(4){transition-delay:180ms;}
.beat-block span:nth-child(5){transition-delay:240ms;} .beat-block span:nth-child(6){transition-delay:300ms;}
.beat-block span:nth-child(7){transition-delay:360ms;} .beat-block span:nth-child(8){transition-delay:420ms;}

/* section shells */
.dorm-sec{padding:100px 64px;display:flex;flex-direction:column;gap:56px;align-items:center;}
.dorm-sec h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(40px,3.9vw,56px);letter-spacing:-.02em;text-align:center;}
.dorm-sec__sub{margin:0;font-size:18px;color:color-mix(in srgb,var(--dorm-ink) 70%,transparent);}

/* features grid */
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;width:100%;max-width:1100px;}
.feature{display:flex;align-items:center;gap:18px;padding:24px 26px;border-radius:24px;
  box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--lead) 35%,transparent);
  color:color-mix(in srgb,var(--dorm-ink) 50%,transparent);}
.feature span{font-size:18px;font-weight:500;color:var(--dorm-ink);}
.js-motion .feature{opacity:0;transform:translateY(26px);}
.js-motion .feature.lit{transition:opacity .6s ease,transform .6s ease,color .5s ease .25s;opacity:1;transform:none;color:var(--lead);}
.feature.lit{color:var(--lead);}

/* rooms (dorm-styled) */
.dorm-rooms{display:flex;flex-wrap:wrap;gap:32px;justify-content:center;}
.dorm-room{width:340px;background:color-mix(in srgb,var(--dorm-ink) 4%,transparent);border-radius:24px;
  box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--lead) 40%,transparent);padding:12px;display:flex;flex-direction:column;}
.dorm-room img{width:100%;height:220px;object-fit:cover;border-radius:16px;}
.dorm-room__body{padding:22px 14px 14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start;}
.dorm-room__body h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:28px;}
.dorm-room__price{margin:0;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;}
.dorm-room__price small{font-size:16px;font-weight:500;color:color-mix(in srgb,var(--dorm-ink) 60%,transparent);}
.dorm-room__cta{display:inline-flex;margin-top:6px;padding:12px 26px;border-radius:999px;
  box-shadow:inset 0 0 0 1.5px var(--lead);color:var(--dorm-ink);font-size:16px;font-weight:600;transition:background .25s,color .25s;}
.dorm-room__cta:hover{background:var(--lead);color:var(--dorm-bg);opacity:1;}

/* people */
.people{display:flex;flex-wrap:wrap;gap:44px;justify-content:center;margin-top:48px;}
.people img{width:250px;height:310px;object-fit:cover;border:4px solid var(--dorm-ink);border-radius:16px;transition:transform .35s;}
.people img:nth-child(1){transform:rotate(-3deg);} .people img:nth-child(2){transform:rotate(2.5deg);} .people img:nth-child(3){transform:rotate(-2deg);}
.people img:nth-child(1):hover{transform:rotate(1deg) scale(1.04);}
.people img:nth-child(2):hover{transform:rotate(-1deg) scale(1.04);}
.people img:nth-child(3):hover{transform:rotate(2deg) scale(1.04);}

/* ready CTA */
.dorm-ready{padding:120px 40px 150px;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;}
.dorm-ready h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(52px,5.6vw,80px);letter-spacing:-.02em;}
.dorm-ready p{margin:0;font-size:20px;color:color-mix(in srgb,var(--dorm-ink) 80%,transparent);}
.dorm-ready .dorm-btn{align-self:center;margin-top:16px;padding:20px 44px;font-size:19px;}

/* Nest is light-world: title is a highlight box; feature/room/people cards are white with soft shadow */
.dorm--nest .dorm-hero__title{line-height:1.12;}
.dorm--nest .dorm-hero__title em{font-style:normal;color:#141118;background:var(--accent);padding:2px 14px;border-radius:12px;
  box-decoration-break:clone;-webkit-box-decoration-break:clone;}
.dorm--nest .feature{background:#FFFDF8;box-shadow:0 10px 28px rgba(226,114,91,.13);color:rgba(20,17,24,.4);}
.dorm--nest .dorm-room{background:#FFFDF8;box-shadow:0 14px 34px rgba(226,114,91,.16);}
.dorm--nest .people img{box-shadow:0 14px 30px rgba(226,114,91,.18);}

@media (max-width:899px){
  body.dorm .scrolly__stick{flex-direction:column;}
  .dorm-hero__inner{padding:120px 24px 56px;}
  .dorm-sec{padding:72px 24px;}
  .scrolly__body{padding:48px 28px;}
  .dorm-hero__crest{width:140px;}
}
@media (prefers-reduced-motion: reduce){
  .dorm-entry{display:none;}
  .dorm-hero__crest{animation:none;}
  .scrolly__media img{transition:none;}
  .beat-block span{transition:none;opacity:1;transform:none;}
  .js-motion .feature{opacity:1;transform:none;}
}

/* ============================================================
   ROOM PAGES (always dark; dorm "flavor" only recolors accents)
   Active flavor is set on :root[data-room-dorm] pre-paint by a tiny
   head script (no flash), then reconciled by quad.js roomSwitcher.
   ============================================================ */
:root{--room-lead:#FF3D00;}
.room-switch{display:flex;flex-wrap:wrap;align-items:center;gap:56px;padding:150px 64px 80px;box-sizing:border-box;min-height:92vh;}
.room-switch__col{flex:1 1 440px;display:flex;flex-direction:column;gap:24px;}
.room-types{display:flex;gap:20px;font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;}
.room-types a{color:var(--muted);}
.room-types .current{color:var(--paper);border-bottom:2px solid var(--paper);padding-bottom:2px;}
.room-h1{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(48px,5.4vw,84px);line-height:1.04;letter-spacing:-.02em;text-wrap:balance;}
.room-h1 em{font-style:normal;color:var(--room-lead);transition:color .4s;}
.room-sub{margin:0;font-size:19px;line-height:1.5;color:rgba(250,247,242,.75);max-width:44ch;}
.room-tabs{display:flex;gap:14px;margin-top:12px;flex-wrap:wrap;}
.room-tab{appearance:none;border:none;cursor:pointer;background:transparent;border-radius:18px;padding:12px 16px;
  box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.2);transition:box-shadow .3s,background .3s,transform .3s;}
.room-tab img{width:44px;height:48px;display:block;}
.room-tab .shield{width:44px;height:48px;display:block;}
.room-tab:hover{transform:translateY(-2px);}
.room-world{margin:0;font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--room-lead);transition:color .4s;}
.room-imgs{flex:1 1 480px;position:relative;aspect-ratio:4/3;border-radius:16px;overflow:hidden;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.12);}
.room-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.04);transition:opacity .55s,transform .7s;}
:root[data-room-dorm="pulse"] .room-img[data-rimg="pulse"],
:root[data-room-dorm="social"] .room-img[data-rimg="social"],
:root[data-room-dorm="focus"] .room-img[data-rimg="focus"],
:root[data-room-dorm="nest"] .room-img[data-rimg="nest"]{opacity:1;transform:scale(1);}
:root[data-room-dorm="pulse"] .room-tab[data-rtab="pulse"],
:root[data-room-dorm="social"] .room-tab[data-rtab="social"],
:root[data-room-dorm="focus"] .room-tab[data-rtab="focus"],
:root[data-room-dorm="nest"] .room-tab[data-rtab="nest"]{box-shadow:inset 0 0 0 2.5px var(--room-lead);background:rgba(250,247,242,.06);}

.room-specs{padding:90px 64px 130px;display:flex;flex-direction:column;align-items:center;gap:64px;}
.room-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:40px;width:100%;max-width:1100px;}
.room-cell{display:flex;flex-direction:column;gap:10px;}
.room-cell--wide{grid-column:span 2;}
.room-cell .k{margin:0;font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.room-cell .v{margin:0;font-family:var(--font-display);font-weight:600;font-size:32px;font-variant-numeric:tabular-nums;}
.room-cell .v small{font-size:18px;font-weight:500;color:rgba(250,247,242,.6);}
.room-cell .desc{margin:0;font-size:19px;line-height:1.5;color:rgba(250,247,242,.88);}
.room-vibe{margin:0;font-family:var(--font-mono);font-size:20px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--room-lead);transition:color .4s;}
.room-equip{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;width:100%;max-width:1100px;color:var(--room-lead);transition:color .4s;}
.room-equip > div{display:flex;align-items:center;gap:16px;padding:18px 22px;border-radius:18px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.14);}
.room-equip span{font-size:17px;font-weight:500;color:var(--paper);}
.room-note{display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center;}
.room-note p{margin:0;font-size:20px;line-height:1.5;color:rgba(250,247,242,.85);}
.room-note em{font-style:normal;font-weight:600;color:var(--room-lead);transition:color .4s;}
@media (max-width:899px){.room-switch,.room-specs{padding-left:24px;padding-right:24px;}.room-cell--wide{grid-column:span 1;}}
@media (prefers-reduced-motion:reduce){.room-img{transition:none;}}

/* ============================================================
   VIBE CHECK page (8-Q quiz + comparison table)
   ============================================================ */
.vibe{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:72px;padding:150px 40px 100px;min-height:92vh;box-sizing:border-box;}
.vibe__intro{display:flex;flex-direction:column;gap:22px;max-width:480px;}
.vibe__h1{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(48px,5.4vw,84px);line-height:1.04;letter-spacing:-.02em;}
.vibe__h1 em{font-style:normal;color:var(--social);}
.vibe__lede{margin:0;font-size:19px;line-height:1.5;color:rgba(250,247,242,.75);}
.vibe__fills{display:flex;align-items:flex-end;gap:22px;margin-top:16px;}
.fillcrest{position:relative;width:46px;height:50px;}
.fillcrest img{width:100%;height:100%;}
.fillcrest .base{opacity:.22;}
.fillcrest .fill{position:absolute;inset:0;clip-path:inset(100% 0 0 0);transition:clip-path .5s;}
.vibe__tb{appearance:none;border:none;cursor:pointer;background:transparent;align-self:flex-start;margin-top:4px;padding:10px 20px;
  border-radius:999px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.25);color:rgba(250,247,242,.65);font-family:var(--font-mono);
  font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;transition:all .3s;opacity:.45;pointer-events:none;}
.vibe__tb.usable{opacity:1;pointer-events:auto;}
.vibe__panel{width:480px;max-width:100%;min-height:430px;position:relative;}
.vibe__panel .quiz-card{padding:34px;}
.qnum{margin:0;font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.08em;color:var(--muted);}

.cmp-wrap{width:100%;max-width:1200px;overflow-x:auto;}
.cmp{display:grid;grid-template-columns:minmax(150px,1fr) repeat(4,minmax(160px,1fr));min-width:830px;}
.cmp__corner{position:sticky;top:72px;background:var(--ink);padding:18px 14px;border-bottom:1.5px solid rgba(250,247,242,.15);z-index:5;}
.cmp__head{position:sticky;top:72px;background:var(--ink);padding:18px 14px;border-bottom:1.5px solid rgba(250,247,242,.15);z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;}
.cmp__head img{width:44px;height:48px;}
.cmp__head span{font-family:var(--font-display);font-weight:700;font-size:20px;}
.cmp__rowhead{display:flex;align-items:center;gap:10px;padding:20px 14px;border-bottom:1px solid rgba(250,247,242,.08);font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.cmp__cell{padding:20px 14px;border-bottom:1px solid rgba(250,247,242,.08);text-align:center;font-size:17px;}
.cmp__cell--mono{font-family:var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.08em;}
.cmp__cell--num{font-variant-numeric:tabular-nums;}
.cmp__cell--price{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;border-bottom:none;}
.cmp__rowhead--last{border-bottom:none;}

/* ============================================================
   LORE page (scroll-pinned legend, map, values, team)
   ============================================================ */
@keyframes pinpulse{from{transform:scale(1)}to{transform:scale(1.09)}}
.lore-hero{min-height:64vh;display:flex;flex-direction:column;justify-content:flex-end;gap:20px;padding:170px 64px 80px;box-sizing:border-box;}
.lore-hero h1{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(56px,7vw,104px);line-height:1.02;letter-spacing:-.02em;}
.lore-hero .rainbow{background-image:linear-gradient(90deg,#FF3D00 0 25%,#FF2E88 25% 50%,#3D5AFE 50% 75%,#E2725B 75% 100%);
  background-size:100% 8px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:8px;}
.lore-chapter{height:260vh;position:relative;}
.lore-chapter__stick{position:sticky;top:0;height:100vh;overflow:hidden;display:flex;align-items:center;}
.lore-chapter__bg{position:absolute;inset:-8% 0;width:100%;height:116%;object-fit:cover;opacity:.45;}
.lore-chapter__scrim{position:absolute;inset:0;background:linear-gradient(to right,rgba(20,17,24,.9) 0%,rgba(20,17,24,.55) 60%,rgba(20,17,24,.3) 100%);}
.lore-chapter__body{position:relative;display:flex;flex-direction:column;gap:26px;padding:0 64px;max-width:880px;}
.lore-num{margin:0;font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:.08em;color:var(--muted);}
.lore-line{margin:0;font-family:var(--font-display);font-weight:600;line-height:1.2;letter-spacing:-.01em;opacity:0;
  transform:translateY(34px) scale(.97);transition:opacity .7s,transform .7s;}
.lore-line.shown{opacity:1;transform:none;}
.lore-line--lead{font-size:clamp(28px,3vw,44px);}
.lore-line--sub{font-size:clamp(24px,2.4vw,36px);line-height:1.25;}
.lore-line--big{font-size:clamp(44px,4.6vw,68px);line-height:1.1;letter-spacing:-.02em;}
.lore-map{position:relative;width:100%;max-width:1100px;aspect-ratio:16/10;border-radius:24px;overflow:hidden;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.14);}
.lore-map .map{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.lore-map__vig{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(20,17,24,0) 55%,rgba(20,17,24,.45) 100%);}
.map-pin{position:absolute;display:flex;flex-direction:column;align-items:center;gap:6px;}
.map-pin .shield{width:46px;height:50px;animation:pinpulse 2.2s ease-in-out infinite alternate;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35));}
.map-pin:nth-of-type(2) .shield{animation-delay:.5s;} .map-pin:nth-of-type(3) .shield{animation-delay:1s;} .map-pin:nth-of-type(4) .shield{animation-delay:1.5s;}
.map-pin span:not(.shield){font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--paper);background:rgba(20,17,24,.75);padding:3px 10px;border-radius:999px;}
.values{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:28px;width:100%;max-width:1100px;}
.value{display:flex;flex-direction:column;gap:14px;padding:28px;border-radius:24px;}
.value--pulse{box-shadow:inset 0 0 0 1.5px rgba(255,61,0,.4);} .value--social{box-shadow:inset 0 0 0 1.5px rgba(255,46,136,.4);}
.value--focus{box-shadow:inset 0 0 0 1.5px rgba(61,90,254,.5);} .value--nest{box-shadow:inset 0 0 0 1.5px rgba(226,114,91,.45);}
.value h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:26px;}
.value p{margin:0;font-size:17px;line-height:1.5;color:rgba(250,247,242,.8);}
.lore-team{background:var(--paper);color:var(--ink);padding:96px 64px 110px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:64px;}
.lore-team__img{width:min(460px,90vw);height:340px;object-fit:cover;border:5px solid #FFFDF8;outline:1.5px solid rgba(20,17,24,.15);border-radius:16px;transform:rotate(-2.5deg);transition:transform .35s;}
.lore-team__img:hover{transform:rotate(0) scale(1.02);}
.lore-team__body{display:flex;flex-direction:column;gap:18px;max-width:460px;}
.lore-team__body h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(36px,3.6vw,52px);letter-spacing:-.02em;}
.lore-team__body p{margin:0;font-size:20px;line-height:1.55;color:rgba(20,17,24,.8);}
.lore-team__body a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--nest);text-decoration-thickness:2px;text-underline-offset:4px;}
@media (prefers-reduced-motion:reduce){.lore-line{opacity:1;transform:none;transition:none;}.map-pin .shield{animation:none;}.lore-chapter__bg{transform:none!important;}}
@media (max-width:899px){.lore-hero,.lore-chapter__body{padding-left:24px;padding-right:24px;}.lore-team{padding:64px 24px;}}

/* ============================================================
   BOOK page (4-step demo flow + live summary). No network.
   ============================================================ */
.book-bg{position:fixed;inset:-4%;width:108%;height:108%;object-fit:cover;filter:blur(14px);opacity:.28;}
.book-scrim{position:fixed;inset:0;background:linear-gradient(to bottom,rgba(20,17,24,.75),rgba(20,17,24,.9));}
.book-main{position:relative;display:flex;flex-direction:column;gap:28px;padding:140px 48px 90px;max-width:1160px;margin:0 auto;box-sizing:border-box;min-height:100vh;}
.book-h1{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(44px,4.8vw,72px);letter-spacing:-.02em;}
.book-accent{white-space:nowrap;padding-bottom:6px;background-image:linear-gradient(90deg,#FF3D00 0 25%,#FF2E88 25% 50%,#3D5AFE 50% 75%,#E2725B 75% 100%);
  background-size:100% 6px;background-position:0 100%;background-repeat:no-repeat;transition:color .35s;}
.book-progress{height:6px;border-radius:3px;background:rgba(250,247,242,.12);overflow:hidden;max-width:720px;}
.book-progress__bar{height:100%;width:2%;border-radius:3px;background:var(--muted);transition:width .5s,background .5s;}
.book-cols{display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start;}
.book-card{flex:1 1 560px;background:rgba(29,24,36,.92);border-radius:24px;padding:36px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.12);display:flex;flex-direction:column;gap:26px;min-height:420px;}
.book-step{display:none;flex-direction:column;gap:22px;}
.book-step.active{display:flex;}
.book-step h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:30px;letter-spacing:-.01em;}
.book-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;}
.book-choices--room{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));}
.book-choice{appearance:none;border:none;cursor:pointer;display:flex;align-items:center;gap:14px;background:transparent;border-radius:16px;padding:14px 16px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.22);color:var(--paper);font-family:var(--font-body);font-size:17px;font-weight:600;transition:box-shadow .25s,background .25s;}
.book-choice img{width:36px;height:40px;}
.book-choice--room{flex-direction:column;align-items:flex-start;gap:4px;}
.book-choice--room .rname{font-size:18px;font-weight:600;}
.book-choice--room .rprice{font-size:15px;color:rgba(250,247,242,.65);font-variant-numeric:tabular-nums;}
.book-choice.sel{background:rgba(250,247,242,.06);}
.book-roomimg{width:100%;height:200px;object-fit:cover;border-radius:16px;display:none;}
.book-roomimg.show{display:block;}
.book-next{appearance:none;border:none;cursor:pointer;align-self:flex-start;padding:15px 34px;border-radius:999px;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:17px;font-weight:600;transition:opacity .25s;opacity:.4;}
.book-next:not(:disabled){opacity:1;cursor:pointer;}
.book-next:disabled{cursor:not-allowed;}
.book-row{display:flex;gap:14px;align-items:center;}
.book-back{appearance:none;border:none;cursor:pointer;background:transparent;padding:12px 16px;border-radius:999px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.25);color:var(--paper);font-size:17px;}
.book-dates{display:flex;gap:18px;flex-wrap:wrap;}
.book-field{display:flex;flex-direction:column;gap:8px;font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);max-width:420px;}
.book-input{appearance:none;background:rgba(250,247,242,.06);border:none;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.22);border-radius:14px;padding:14px 16px;color:var(--paper);font-family:var(--font-body);font-size:17px;color-scheme:dark;}
.book-done{display:none;flex-direction:column;align-items:center;gap:20px;text-align:center;}
.book-done.active{display:flex;}
.book-done img{width:min(380px,100%);height:260px;object-fit:cover;border:4px solid var(--paper);border-radius:16px;transform:rotate(-2deg);}
.book-done h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(36px,3.8vw,52px);letter-spacing:-.02em;}
.book-done p{margin:0;max-width:46ch;font-size:18px;line-height:1.55;color:rgba(250,247,242,.85);}
.book-summary{flex:0 1 320px;position:sticky;top:110px;background:rgba(250,247,242,.07);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.18);border-radius:24px;padding:28px;display:flex;flex-direction:column;gap:18px;}
.book-summary__k{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.book-summary__v{margin:0;font-size:17px;color:rgba(250,247,242,.55);font-variant-numeric:tabular-nums;}
.book-summary__row{display:flex;flex-direction:column;gap:4px;}
.book-summary__hr{height:1px;background:rgba(250,247,242,.14);}
.book-summary__pick{display:flex;align-items:center;gap:14px;min-height:52px;}
.sum-empty{display:flex;gap:10px;align-items:center;} .sum-empty img{width:26px;height:28px;opacity:.4;}
.sum-picked{display:none;align-items:center;gap:14px;} .sum-picked img{width:44px;height:48px;} .sum-picked span{font-family:var(--font-display);font-weight:600;font-size:22px;}
@media (prefers-reduced-transparency:reduce){.book-summary{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--card);}}
@media (max-width:899px){.book-main{padding:120px 20px 72px;}.book-summary{position:static;}}

/* CONTACT page */
.contact{position:relative;display:flex;flex-wrap:wrap;gap:56px;padding:150px 48px 100px;max-width:1160px;margin:0 auto;box-sizing:border-box;min-height:92vh;}
.contact__intro{flex:1 1 380px;display:flex;flex-direction:column;gap:22px;}
.contact__h1{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(48px,5.2vw,80px);line-height:1.04;letter-spacing:-.02em;}
.contact__h1 em{font-style:normal;color:var(--social);}
.contact__lede{margin:0;font-size:19px;line-height:1.5;color:rgba(250,247,242,.75);max-width:42ch;}
.contact__form{flex:1 1 460px;background:var(--card);border-radius:24px;padding:36px;box-shadow:inset 0 0 0 1.5px rgba(250,247,242,.12);display:flex;flex-direction:column;gap:20px;}
.contact__note{margin:0;font-size:16px;line-height:1.5;color:rgba(250,247,242,.7);}

/* ============================================================
   RESPONSIVE — mobile hero, nav row hidden by web component
   ============================================================ */
@media (max-width:899px){
  .quad-nav{padding:16px 20px;}
  .home-hero{flex-direction:column;min-height:auto;}
  .home-hero__text{width:100%;padding:110px 24px 36px;}
  .home-hero__panels{width:100%;min-height:0;height:56vh;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;}
  .panel{min-width:68vw;scroll-snap-align:center;}
  .dormrow__body{padding:48px 28px;}
  .rooms,.marquee-sec__h2,.dorms__h2{padding-left:24px;padding-right:24px;}
}

/* ============================================================
   REDUCED MOTION — static fallbacks everywhere
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  .panel__img{animation:none;}
  .marquee__track{animation:none;}
  .quiz-card{transition:none;}
  .quiz-card.is-flying{transform:none;opacity:1;}
  .js-motion .dormrow > *{opacity:1;transform:none;}
  [data-crest].drawn .stroke{transition:none;stroke-dashoffset:0;}
  .js-motion [data-crest] .stroke{stroke-dasharray:none;stroke-dashoffset:0;}
  .js-motion [data-crest] .fill{opacity:1;transform:none;}
  .divider__traveler{display:none;}
}
