/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body, h1, h2, h3, h4, p, ul, li, figure, form { margin: 0; padding: 0; }
ul { list-style: none; }
button, input, select { font: inherit; color: inherit; }

/* ---------- tokens ---------- */
:root{
  --ink:#1C1710;
  --ink-soft:#4A4032;
  --paper:#F4EEE2;
  --paper-raised:#EAE1CF;
  --paper-raised-2:#E1D5BC;
  --line: rgba(28,23,16,.14);
  --ember:#E1401C;
  --ember-dim:#C4341A;
  --ember-ink:#fff;
  --brass:#A97A2E;
  --brass-soft:#D8B876;
  --shadow: 0 20px 50px -20px rgba(28,23,16,.35);
  --shadow-lift: 0 24px 48px -16px rgba(28,23,16,.28), 0 4px 12px -4px rgba(28,23,16,.18);
  --radius: 2px;
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;
  --maxw: 1180px;
  /* Fixed (non-adaptive) tokens for sections that are always dark by design —
     hero, rating band, footer — regardless of the site's light/dark theme.
     These must NOT be redefined in the theme blocks below, unlike --ink/--paper
     which intentionally invert between themes. */
  --fixed-dark-bg: #14110E;
  --fixed-light-text: #F3EBDC;
  --fixed-light-text-soft: #CFC4AE;
  --serif-stack: Georgia, 'Iowan Old Style', 'Times New Roman', serif;
  --display-stack: 'Arial Narrow', 'Segoe UI Semibold', 'Helvetica Neue', Arial, sans-serif;
  --body-stack: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --mono-stack: ui-monospace, 'SFMono-Regular', 'Cascadia Mono', Consolas, 'Courier New', monospace;
}
@media (prefers-color-scheme: dark){
  :root{
    --ink:#F3EBDC;
    --ink-soft:#C7BBA4;
    --paper:#14110E;
    --paper-raised:#1D1812;
    --paper-raised-2:#241D15;
    --line: rgba(243,235,220,.14);
    --ember:#FF5A2E;
    --ember-dim:#FF7A4D;
    --ember-ink:#1C1710;
    --brass:#D8B876;
    --brass-soft:#E9CE94;
    --shadow: 0 20px 60px -20px rgba(0,0,0,.6);
    --shadow-lift: 0 24px 56px -16px rgba(0,0,0,.55), 0 4px 14px -4px rgba(0,0,0,.4);
  }
}
:root[data-theme="dark"]{
  --ink:#F3EBDC; --ink-soft:#C7BBA4; --paper:#14110E; --paper-raised:#1D1812; --paper-raised-2:#241D15;
  --line: rgba(243,235,220,.14); --ember:#FF5A2E; --ember-dim:#FF7A4D; --ember-ink:#1C1710;
  --brass:#D8B876; --brass-soft:#E9CE94; --shadow: 0 20px 60px -20px rgba(0,0,0,.6);
  --shadow-lift: 0 24px 56px -16px rgba(0,0,0,.55), 0 4px 14px -4px rgba(0,0,0,.4);
}
:root[data-theme="light"]{
  --ink:#1C1710; --ink-soft:#4A4032; --paper:#F4EEE2; --paper-raised:#EAE1CF; --paper-raised-2:#E1D5BC;
  --line: rgba(28,23,16,.14); --ember:#E1401C; --ember-dim:#C4341A; --ember-ink:#fff;
  --brass:#A97A2E; --brass-soft:#D8B876; --shadow: 0 20px 50px -20px rgba(28,23,16,.35);
  --shadow-lift: 0 24px 48px -16px rgba(28,23,16,.28), 0 4px 12px -4px rgba(28,23,16,.18);
}

html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important} }

body{
  background:var(--paper); color:var(--ink);
  font-family:var(--body-stack); line-height:1.55; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{max-width:100%; display:block}
svg{stroke:currentColor; flex:none}
a{color:inherit}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 clamp(18px,4vw,40px)}
section{position:relative}

h1,h2,h3,h4{
  font-family:var(--display-stack); text-transform:uppercase; margin:0;
  letter-spacing:-.01em; text-wrap:balance; font-stretch:condensed;
}
.eyebrow{
  font-family:var(--mono-stack); text-transform:uppercase; letter-spacing:.18em;
  font-size:.72rem; font-weight:600; color:var(--ember);
}
p{margin:0}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- grain texture (used on dark sections for depth) ---------- */
.hero::before, .rating-band::before, .final-cta::before, footer::before{
  content:''; position:absolute; inset:0; pointer-events:none; opacity:.05; mix-blend-mode:overlay; z-index:-1;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
footer{position:relative}
footer::before{opacity:.04}

/* ---------- progress bar ---------- */
#progress{position:fixed; top:0; left:0; height:3px; width:0%; background:var(--ember); z-index:200; transition:width .1s linear}

/* ---------- ticker strip ---------- */
.topline{
  background:var(--ink); color:var(--paper); font-family:var(--mono-stack);
  font-size:.72rem; letter-spacing:.06em; padding:7px 0; position:relative; z-index:150;
}
.topline .wrap{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap}
.topline a{text-decoration:none; opacity:.9}
.topline a:hover{opacity:1; color:var(--ember-dim)}
.topline .seg{display:flex; align-items:center; gap:18px; flex-wrap:wrap}
.addr-short{display:none}

/* ---------- nav ---------- */
header{
  position:sticky; top:0; z-index:140; background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(10px); border-bottom:1px solid var(--line); transition:box-shadow .3s;
}
header.scrolled{box-shadow:var(--shadow)}
nav.wrap{display:flex; align-items:center; justify-content:space-between; height:64px; gap:20px}
.brand{display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--ink)}
.brand-mark{
  width:38px; height:38px; border:2px solid var(--ink); display:flex; align-items:center; justify-content:center;
  font-family:var(--display-stack); font-weight:900; font-size:1rem; flex:none; transform:rotate(-2deg);
  background:var(--ember); color:var(--ember-ink); border-color:var(--ember);
}
.brand-name{font-family:var(--display-stack); font-weight:800; letter-spacing:-.01em; font-size:1.05rem; text-transform:uppercase}
.brand-name small{display:block; font-family:var(--mono-stack); font-size:.6rem; letter-spacing:.16em; color:var(--ink-soft); text-transform:uppercase; font-weight:500}

.navlinks{display:flex; align-items:center; gap:28px; list-style:none; margin:0; padding:0}
.navlinks a{
  text-decoration:none; font-family:var(--mono-stack); font-size:.74rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-soft); position:relative; padding:4px 0;
}
.navlinks a::after{content:''; position:absolute; left:0; bottom:-2px; height:2px; width:0; background:var(--ember); transition:width .25s}
.navlinks a:hover, .navlinks a.active{color:var(--ink)}
.navlinks a:hover::after, .navlinks a.active::after{width:100%}

.navctas{display:flex; align-items:center; gap:10px}
.icon-btn{
  width:36px; height:36px; border:1px solid var(--line); background:transparent; color:var(--ink);
  display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none;
  border-radius:var(--radius-sm); transition:border-color .2s, transform .15s;
}
.icon-btn:hover{border-color:var(--ink)}
.icon-btn:active{transform:scale(.92)}
.btn{
  display:inline-flex; align-items:center; gap:8px; font-family:var(--mono-stack); text-transform:uppercase;
  letter-spacing:.1em; font-size:.75rem; font-weight:600; padding:12px 22px; text-decoration:none;
  border:1px solid var(--ink); cursor:pointer; white-space:nowrap; border-radius:var(--radius-sm);
  transition:background .2s, border-color .2s, transform .15s, box-shadow .2s;
}
.btn:active{transform:scale(.97)}
.btn-solid{background:var(--ember); color:var(--ember-ink); border-color:var(--ember)}
.btn-solid:hover{background:var(--ember-dim); border-color:var(--ember-dim); box-shadow:0 8px 20px -6px rgba(225,64,28,.5)}
.btn-ghost{background:transparent; color:var(--ink)}
.btn-ghost:hover{background:var(--ink); color:var(--paper)}
.btn-line{background:transparent; color:var(--fixed-light-text); border-color:var(--fixed-light-text)}
.btn-line:hover{background:var(--fixed-light-text); color:var(--fixed-dark-bg)}

.hamburger{display:none; flex-direction:column; gap:5px; width:36px; height:36px; border:1px solid var(--line); border-radius:var(--radius-sm); background:none; cursor:pointer; align-items:center; justify-content:center}
.hamburger span{width:16px; height:2px; background:var(--ink); transition:transform .25s, opacity .25s}
.mobile-drawer{
  display:none; position:fixed; inset:64px 0 0 0; background:var(--paper); z-index:130; padding:30px;
  flex-direction:column; gap:4px; transform:translateY(-12px); opacity:0; pointer-events:none; transition:opacity .25s, transform .25s;
}
.mobile-drawer.open{display:flex; opacity:1; transform:translateY(0); pointer-events:auto}
.mobile-drawer a{
  text-decoration:none; color:var(--ink); font-family:var(--display-stack); text-transform:uppercase;
  font-size:1.6rem; padding:16px 0; border-bottom:1px solid var(--line);
}

/* ---------- hero ---------- */
.hero{
  background:linear-gradient(rgba(14,11,8,.88),rgba(14,11,8,.94)), var(--fixed-dark-bg) url('/assets/gallery/hero-bg.webp') center 30%/cover no-repeat;
  color:var(--fixed-light-text); position:relative; overflow:hidden;
  clip-path:polygon(0 0,100% 0,100% 92%,0 100%);
  padding:clamp(60px,10vw,110px) 0 clamp(120px,14vw,170px);
}
.hero-glow{position:absolute; inset:0; pointer-events:none; background:radial-gradient(600px circle at var(--mx,50%) var(--my,20%), rgba(225,64,28,.22), transparent 60%)}
.hero-grid{position:absolute; inset:0; opacity:.5; pointer-events:none;
  background-image:linear-gradient(rgba(243,235,220,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(243,235,220,.05) 1px, transparent 1px);
  background-size:42px 42px;
  mask-image:linear-gradient(to bottom, black, transparent 85%);
}
.hero-orb{
  position:absolute; width:min(60vw,620px); height:min(60vw,620px); border-radius:50%; pointer-events:none;
  background:radial-gradient(circle, rgba(216,184,118,.22), rgba(225,64,28,.12) 45%, transparent 72%);
  top:-18%; right:-10%; filter:blur(10px); animation:orb-drift 16s ease-in-out infinite alternate;
}
@keyframes orb-drift{ from{transform:translate(0,0) scale(1)} to{transform:translate(-4%,4%) scale(1.08)} }
@media (prefers-reduced-motion: reduce){ .hero-orb{animation:none} }
.hero .wrap{position:relative; z-index:2}
.hero-top{display:flex; align-items:center; gap:12px; margin-bottom:26px}
.badge{
  display:inline-flex; align-items:center; gap:8px; border:1px solid rgba(243,235,220,.3); padding:6px 14px;
  border-radius:100px; font-family:var(--mono-stack); font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:var(--brass-soft);
}
.hero h1{
  font-size:clamp(3rem,9vw,6.4rem); line-height:.94; font-weight:800; margin:0 0 20px;
}
.hero h1 em{font-style:normal; color:var(--ember)}
.hero-sub{max-width:46ch; font-size:clamp(1rem,1.6vw,1.2rem); color:var(--fixed-light-text-soft); margin-bottom:38px}
.hero-ctas{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:56px}

.hero-top, .hero h1, .hero-sub, .hero-ctas{
  opacity:0; transform:translateY(16px); animation:hero-in .8s cubic-bezier(.16,.8,.3,1) forwards;
}
.hero-top{animation-delay:.05s}
.hero h1{animation-delay:.15s}
.hero-sub{animation-delay:.3s}
.hero-ctas{animation-delay:.42s}
@keyframes hero-in{ to{opacity:1; transform:none} }
@media (prefers-reduced-motion: reduce){
  .hero-top, .hero h1, .hero-sub, .hero-ctas{animation:none; opacity:1; transform:none}
}

.stat-row{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid rgba(243,235,220,.18)}
.stat{padding:22px 20px 0; border-right:1px solid rgba(243,235,220,.18)}
.stat:last-child{border-right:none}
.stat .n{font-family:var(--mono-stack); font-size:clamp(1.4rem,3vw,2.1rem); font-weight:700; color:var(--fixed-light-text)}
.stat .n .accent{color:var(--ember)}
.stat .l{font-family:var(--mono-stack); font-size:.66rem; letter-spacing:.1em; text-transform:uppercase; color:var(--fixed-light-text-soft); margin-top:4px}

/* ---------- marquee ---------- */
.marquee{
  background:var(--ember); color:var(--ember-ink); overflow:hidden; white-space:nowrap; border-block:1px solid var(--ink);
  mask-image:linear-gradient(90deg, transparent, black 6%, black 94%, transparent);
}
.marquee-track{display:inline-flex; animation:scroll-left 26s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee span{
  font-family:var(--display-stack); text-transform:uppercase; font-weight:800; font-size:1.05rem;
  letter-spacing:.02em; padding:14px 28px; display:inline-flex; align-items:center; gap:28px;
}
@keyframes scroll-left{ from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* ---------- section shell ---------- */
.band{padding:clamp(70px,10vw,120px) 0}
.band-head{display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:52px; flex-wrap:wrap}
.band-head h2{font-size:clamp(2.1rem,5vw,3.2rem); font-weight:800}
.band-head p{max-width:42ch; color:var(--ink-soft)}
.reveal{opacity:0; transform:translateY(28px); transition:opacity .7s ease, transform .7s ease}
.reveal.in{opacity:1; transform:none}

/* ---------- about / owner ---------- */
.about{display:grid; grid-template-columns:.85fr 1.15fr; gap:60px; align-items:center}
.owner-card{
  border:1px solid var(--line); background:var(--paper-raised); padding:34px; position:relative;
  border-radius:var(--radius-lg); box-shadow:var(--shadow-lift); overflow:hidden;
}
.owner-card::before{content:''; position:absolute; top:0; left:0; right:0; height:6px; background:linear-gradient(90deg,var(--ember),var(--brass))}
.owner-avatar{
  width:84px; height:84px; border:2px solid var(--ink); background:var(--ink); color:var(--paper);
  display:flex; align-items:center; justify-content:center; font-family:var(--display-stack); font-weight:800; font-size:1.7rem; margin-bottom:20px;
  border-radius:var(--radius-md);
}
.owner-card h3{font-size:1.5rem; margin-bottom:4px}
.owner-role{font-family:var(--mono-stack); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ember); margin-bottom:18px; display:block}
.owner-card .insta{
  margin-top:22px; display:inline-flex; align-items:center; gap:10px; text-decoration:none; color:var(--ink);
  border:1px solid var(--ink); padding:11px 18px; font-family:var(--mono-stack); font-size:.78rem; letter-spacing:.06em;
  border-radius:var(--radius-sm); transition:background .2s, color .2s;
}
.owner-card .insta:hover{background:var(--ink); color:var(--paper)}
.about-copy p{color:var(--ink-soft); font-size:1.05rem; margin-bottom:18px; max-width:56ch}
.about-copy .lede{font-family:var(--serif-stack); font-style:italic; font-size:1.5rem; color:var(--ink); margin-bottom:24px; max-width:22ch; line-height:1.35}

/* ---------- features ---------- */
.features{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.feature{
  background:var(--paper); padding:34px 30px; border:1px solid var(--line); border-radius:var(--radius-md);
  transition:background .25s, transform .25s, box-shadow .25s;
}
.feature:hover{background:var(--paper-raised); transform:translateY(-4px); box-shadow:var(--shadow-lift)}
.feature svg{width:30px; height:30px; stroke:var(--ember); margin-bottom:20px}
.feature h3{font-size:1.1rem; margin-bottom:10px; letter-spacing:0}
.feature p{color:var(--ink-soft); font-size:.94rem}

/* ---------- programs ---------- */
.programs{display:grid; grid-template-columns:repeat(4,1fr); gap:18px}
.program{
  border:1px solid var(--line); padding:28px 22px; position:relative; overflow:hidden; min-height:220px;
  display:flex; flex-direction:column; justify-content:flex-end; border-radius:var(--radius-md);
  transition:transform .3s, border-color .3s, box-shadow .3s;
}
.program:hover{transform:translateY(-6px); border-color:var(--ember); box-shadow:var(--shadow-lift)}
.program .pnum{position:absolute; top:18px; right:20px; font-family:var(--mono-stack); font-size:.75rem; color:var(--ink-soft)}
.program svg{width:26px; height:26px; stroke:var(--ember); margin-bottom:14px}
.program h3{font-size:1.05rem; margin-bottom:8px}
.program p{font-size:.86rem; color:var(--ink-soft)}

/* ---------- floor / gallery ---------- */
.floor{display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:170px; gap:10px}
.floor .tile{
  position:relative; overflow:hidden; border:1px solid var(--line); cursor:pointer;
  display:flex; align-items:flex-end; padding:16px; background:var(--fixed-dark-bg);
  border-radius:var(--radius-md); transition:box-shadow .3s;
}
.floor .tile:hover{box-shadow:var(--shadow-lift)}
.floor .tile img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transition:transform .6s ease; filter:saturate(.92) contrast(1.04);
}
.floor .tile:hover img{transform:scale(1.06)}
.floor .tile::after{
  content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(20,17,14,0) 45%, rgba(20,17,14,.85) 100%);
}
.floor .tile:nth-child(1){grid-column:span 2; grid-row:span 2}
.floor .tile:nth-child(4){grid-column:span 2}
.floor .badge-icon{
  position:absolute; top:14px; left:14px; z-index:2; width:34px; height:34px; border-radius:50%;
  background:var(--ember); display:flex; align-items:center; justify-content:center;
}
.floor .badge-icon svg{width:17px; height:17px; stroke:var(--ember-ink)}
.floor .tile .tile-label{
  position:relative; z-index:2; font-family:var(--mono-stack); text-transform:uppercase; letter-spacing:.06em;
  font-size:.78rem; color:var(--fixed-light-text); text-shadow:0 1px 6px rgba(0,0,0,.5);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%;
}
.gallery-note{margin-top:16px; font-size:.82rem; color:var(--ink-soft); font-family:var(--mono-stack)}

/* ---------- rating band ---------- */
.rating-band{
  background:linear-gradient(rgba(14,11,8,.92),rgba(14,11,8,.92)), var(--fixed-dark-bg) url('/assets/gallery/rating-bg.webp') center 25%/cover no-repeat;
  color:var(--fixed-light-text); text-align:center; padding:clamp(60px,9vw,100px) 0;
}
.stars{font-size:2.4rem; letter-spacing:.15em; color:var(--brass-soft); margin-bottom:18px}
.rating-num{font-family:var(--mono-stack); font-size:clamp(3rem,10vw,5.5rem); font-weight:800; line-height:1}
.rating-band .sub{color:var(--fixed-light-text-soft); margin:14px 0 34px; font-family:var(--mono-stack); font-size:.85rem; letter-spacing:.08em; text-transform:uppercase}

/* ---------- schedule ---------- */
.schedule-wrap{display:grid; grid-template-columns:1.1fr .9fr; gap:60px}
table.sched{width:100%; border-collapse:collapse; font-family:var(--mono-stack); font-size:.88rem}
table.sched td{padding:14px 10px; border-bottom:1px solid var(--line)}
table.sched tr.today{color:var(--ember); font-weight:700}
table.sched tr.today td:first-child::before{content:'▸ '; }
.status-pill{display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line); padding:10px 16px; border-radius:100px; font-family:var(--mono-stack); font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; margin-bottom:24px}
.status-dot{width:8px; height:8px; border-radius:50%; background:var(--ember)}
.info-card{border:1px solid var(--line); background:var(--paper-raised); padding:28px; border-radius:var(--radius-lg); box-shadow:var(--shadow-lift)}
.info-card h3{font-size:1rem; margin-bottom:14px}
.info-card .row{display:flex; gap:12px; padding:10px 0; border-top:1px solid var(--line); font-size:.9rem}
.info-card .row:first-of-type{border-top:none}
.info-card svg{width:18px; height:18px; stroke:var(--ember); flex:none; margin-top:2px}
.info-card .row .lbl{color:var(--ink-soft); min-width:70px; font-family:var(--mono-stack); font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; padding-top:2px}

/* ---------- map / contact ---------- */
.contact{
  display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid var(--line);
  border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-lift);
}
.map-embed{position:relative; min-height:420px; filter:grayscale(.25) contrast(1.05)}
@media (prefers-color-scheme: dark){ .map-embed{filter:grayscale(.4) invert(.92) contrast(.9)} }
:root[data-theme="dark"] .map-embed{filter:grayscale(.4) invert(.92) contrast(.9)}
:root[data-theme="light"] .map-embed{filter:grayscale(.25) contrast(1.05)}
.map-embed iframe{width:100%; height:100%; min-height:420px; border:0; display:block}
.contact-form{padding:44px; background:var(--paper-raised)}
.contact-form h3{font-size:1.5rem; margin-bottom:8px}
.contact-form p.sub{color:var(--ink-soft); margin-bottom:28px; font-size:.94rem}
.field{margin-bottom:18px}
.field label{display:block; font-family:var(--mono-stack); font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; color:var(--ink-soft); margin-bottom:8px}
.field input, .field select{
  width:100%; padding:12px 14px; border:1px solid var(--line); background:var(--paper); color:var(--ink);
  font-family:var(--body-stack); font-size:.95rem; border-radius:var(--radius-sm); transition:border-color .2s, box-shadow .2s;
}
.field input:focus, .field select:focus{outline:none; border-color:var(--ember); box-shadow:0 0 0 3px rgba(225,64,28,.18)}
.form-msg{margin-top:16px; font-size:.86rem; font-family:var(--mono-stack); display:none}
.form-msg.show{display:block}
.field-error{border-color:var(--ember) !important}

/* ---------- faq ---------- */
.faq{max-width:820px}
.faq-item{border-bottom:1px solid var(--line)}
.faq-q{
  width:100%; text-align:left; background:none; border:0; padding:22px 0; cursor:pointer;
  display:flex; justify-content:space-between; align-items:center; gap:20px; font-family:var(--body-stack);
  font-size:1.02rem; font-weight:600; color:var(--ink);
}
.faq-q .plus{font-family:var(--mono-stack); font-size:1.3rem; color:var(--ember); flex:none; transition:transform .3s}
.faq-item.open .faq-q .plus{transform:rotate(45deg)}
.faq-a{max-height:0; overflow:hidden; transition:max-height .35s ease}
.faq-a p{color:var(--ink-soft); padding-bottom:22px; max-width:65ch}

/* ---------- final cta ---------- */
.final-cta{
  background:var(--ember); color:var(--ember-ink); text-align:center; padding:clamp(60px,10vw,110px) 0;
  clip-path:polygon(0 8%,100% 0,100% 100%,0 100%);
}
.final-cta h2{font-size:clamp(2.2rem,6vw,4rem); margin-bottom:22px}
.final-cta .btn-line{border-color:var(--ember-ink); color:var(--ember-ink)}
.final-cta .btn-line:hover{background:var(--ember-ink); color:var(--ember)}

/* ---------- footer ---------- */
footer{background:var(--fixed-dark-bg); color:var(--fixed-light-text); padding:60px 0 24px}
.footer-top{display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; padding-bottom:40px; border-bottom:1px solid rgba(243,235,220,.14)}
footer h4{color:var(--fixed-light-text); font-size:.85rem; letter-spacing:.1em; margin-bottom:18px; font-family:var(--mono-stack)}
footer .foot-links{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px}
footer .foot-links a{color:var(--fixed-light-text-soft); text-decoration:none; font-size:.92rem}
footer .foot-links a:hover{color:var(--ember-dim)}
.foot-bottom{display:flex; justify-content:space-between; padding-top:22px; font-family:var(--mono-stack); font-size:.72rem; color:#8A806E; flex-wrap:wrap; gap:10px}

/* ---------- floaters ---------- */
.fab{
  position:fixed; right:22px; bottom:22px; z-index:160; display:flex; flex-direction:column; gap:10px; align-items:flex-end;
}
.fab button, .fab a{
  width:48px; height:48px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line); background:var(--paper); color:var(--ink); cursor:pointer; box-shadow:var(--shadow);
  text-decoration:none; transition:opacity .25s, transform .25s;
}
.fab .to-top{opacity:0; pointer-events:none; transform:translateY(8px)}
.fab .to-top.show{opacity:1; pointer-events:auto; transform:none}
.fab .insta-fab{background:var(--ember); color:var(--ember-ink); border-color:var(--ember)}
.fab button:hover, .fab a:hover{transform:translateY(-3px); box-shadow:var(--shadow-lift)}
.fab .to-top.show:hover{transform:translateY(-3px)}

/* ---------- chat widget ---------- */
.chat-fab{
  width:56px; height:56px; background:var(--ink); color:var(--paper); border-color:var(--ink); position:relative;
}
.chat-fab::after{
  content:''; position:absolute; inset:-3px; border-radius:50%; border:1.5px solid var(--ember); opacity:.55;
  animation:chat-pulse 2.6s ease-out infinite;
}
@keyframes chat-pulse{ 0%{transform:scale(.9); opacity:.55} 100%{transform:scale(1.35); opacity:0} }
@media (prefers-reduced-motion: reduce){ .chat-fab::after{animation:none; display:none} }
.chat-fab-icon{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); transition:opacity .2s, transform .2s}
.chat-fab .icon-close{opacity:0; transform:translate(-50%,-50%) rotate(-45deg)}
.chat-fab.open .icon-open{opacity:0; transform:translate(-50%,-50%) rotate(45deg)}
.chat-fab.open .icon-close{opacity:1; transform:translate(-50%,-50%) rotate(0)}

.chat-panel{
  position:fixed; right:22px; bottom:90px; z-index:161; width:380px; max-width:calc(100vw - 32px);
  height:min(600px, calc(100vh - 130px)); background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(18px) saturate(1.4); -webkit-backdrop-filter:blur(18px) saturate(1.4);
  border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow-lift);
  display:flex; flex-direction:column; overflow:hidden;
  opacity:0; transform:translateY(16px) scale(.97); pointer-events:none; transition:opacity .25s ease, transform .25s ease;
}
.chat-panel.open{opacity:1; transform:none; pointer-events:auto}
.chat-header{
  display:flex; align-items:center; justify-content:space-between; padding:16px 18px;
  border-bottom:1px solid var(--line); background:var(--paper-raised); flex:none;
}
.chat-header-info{display:flex; align-items:center; gap:12px}
.chat-avatar{
  width:34px; height:34px; border-radius:50%; background:linear-gradient(135deg,var(--ember),var(--brass));
  color:#fff; display:flex; align-items:center; justify-content:center; flex:none;
}
.chat-header-info strong{display:block; font-family:var(--display-stack); text-transform:uppercase; font-size:.95rem; letter-spacing:.01em}
.chat-status{display:block; font-family:var(--mono-stack); font-size:.66rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft)}
.chat-close{
  width:30px; height:30px; border-radius:var(--radius-sm); border:1px solid var(--line); background:transparent;
  color:var(--ink); display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none;
}
.chat-close:hover{border-color:var(--ink)}

.chat-messages{flex:1; overflow-y:auto; padding:18px; display:flex; flex-direction:column; gap:12px; overscroll-behavior:contain}
.chat-msg p{margin:0}
.chat-msg{max-width:86%; font-size:.9rem; line-height:1.5}
.chat-msg-bot{align-self:flex-start; background:var(--paper-raised); color:var(--ink); padding:12px 14px; border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 4px}
.chat-msg-user{align-self:flex-end; background:var(--ember); color:var(--ember-ink); padding:12px 14px; border-radius:var(--radius-md) var(--radius-md) 4px var(--radius-md)}
.chat-msg-bot ul, .chat-msg-bot ol{margin:8px 0 0; padding-left:1.2em; list-style:disc}
.chat-msg-bot li{margin-bottom:4px}
.chat-msg-bot strong{color:var(--ink)}
.chat-msg-error{align-self:flex-start; color:var(--ember-dim); font-family:var(--mono-stack); font-size:.8rem}

.chat-typing{align-self:flex-start; margin:0 18px 10px; display:flex; gap:4px; padding:10px 14px; background:var(--paper-raised); border-radius:var(--radius-md); width:fit-content}
.chat-typing span{width:6px; height:6px; border-radius:50%; background:var(--ink-soft); animation:chat-bounce 1.2s infinite}
.chat-typing span:nth-child(2){animation-delay:.15s}
.chat-typing span:nth-child(3){animation-delay:.3s}
@keyframes chat-bounce{ 0%,60%,100%{transform:translateY(0); opacity:.5} 30%{transform:translateY(-4px); opacity:1} }

.chat-input-row{display:flex; gap:8px; padding:14px; border-top:1px solid var(--line); flex:none; background:var(--paper-raised)}
.chat-input-row input{
  flex:1; padding:11px 14px; border:1px solid var(--line); border-radius:100px; background:var(--paper); color:var(--ink);
  font-family:var(--body-stack); font-size:.9rem;
}
.chat-input-row input:focus{outline:none; border-color:var(--ember); box-shadow:0 0 0 3px rgba(225,64,28,.18)}
.chat-send{
  width:40px; height:40px; border-radius:50%; border:none; background:var(--ember); color:var(--ember-ink);
  display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; transition:background .2s, transform .15s;
}
.chat-send:hover{background:var(--ember-dim)}
.chat-send:active{transform:scale(.92)}
.chat-send:disabled{opacity:.5; cursor:not-allowed}

@media (max-width:520px){
  .chat-panel{
    right:12px; left:12px; bottom:84px; width:auto; max-width:none; height:min(70vh, 560px);
  }
}

@media (max-width:960px){
  .navlinks{display:none}
  .hamburger{display:flex}
  .about{grid-template-columns:1fr}
  .features{grid-template-columns:1fr 1fr}
  .programs{grid-template-columns:1fr 1fr}
  .floor{grid-template-columns:repeat(2,1fr)}
  .floor .tile:nth-child(1){grid-column:span 2}
  .schedule-wrap{grid-template-columns:1fr}
  .contact{grid-template-columns:1fr}
  .footer-top{grid-template-columns:1fr}
  .stat-row{grid-template-columns:1fr 1fr}
  .stat:nth-child(2){border-right:none}
  /* touch targets: keep every tap surface comfortably above the 44px guideline */
  .icon-btn, .hamburger{width:42px; height:42px}
  .navctas{gap:8px}
  .btn{padding:13px 20px}
  .contact-form{padding:28px 24px}
  .map-embed, .map-embed iframe{min-height:320px}
  .floor .tile .tile-label{font-size:.68rem}
  .floor .badge-icon{width:28px; height:28px; top:10px; left:10px}
  .floor .badge-icon svg{width:14px; height:14px}
}
@media (max-width:600px){
  .features{grid-template-columns:1fr}
  .programs{grid-template-columns:1fr}
}
@media (max-width:700px){
  .hide-sm{display:none}
}
@media (max-width:480px){
  .addr-full{display:none}
  .addr-short{display:inline}
  .brand-name small{display:none}
  .brand-name{font-size:.92rem}
  .brand-mark{width:32px; height:32px; font-size:.85rem}
  .nav-join{display:none}
  .navctas{gap:6px}
  .hero h1{font-size:2.9rem}
  .stat-row{grid-template-columns:1fr 1fr}
  .stat{padding-top:16px}
  .hero-ctas{gap:10px}
  .hero-ctas .btn{width:100%; justify-content:center}
}
@media (max-width:360px){
  .hero h1{font-size:2.5rem}
}
