/* ============================================================
   KERBLY — The venue at midnight
   Ink & candlelit champagne. Boska (display) / Switzer (body)
   / IBM Plex Mono (data).
   ============================================================ */

:root{
  --ink:        #0D0C0A;
  --ink-2:      #14120F;
  --ink-3:      #1D1915;
  --champagne:  #E4C6A0;
  --gold-deep:  #A87F4F;
  --bronze:     #6B5537;
  --ivory:      #F2EADB;
  --smoke:      #9A9083;
  --paper:      #EFE6D3;
  --paper-ink:  #191410;
  --hairline:   rgba(228,198,160,.16);

  --font-display: 'Boska', 'Times New Roman', serif;
  --font-body:    'Switzer', 'Helvetica Neue', Arial, sans-serif;
  --font-mono:    'IBM Plex Mono', ui-monospace, monospace;

  --pad: clamp(1.25rem, 4vw, 4.5rem);
  --ease-out: cubic-bezier(.19,1,.22,1);
}

*{ margin:0; padding:0; box-sizing:border-box; }
html{ scroll-behavior:smooth; }
html.lenis, html.lenis body{ height:auto; }
.lenis.lenis-smooth{ scroll-behavior:auto !important; }

body{
  background:var(--ink);
  color:var(--ivory);
  font-family:var(--font-body);
  font-weight:300;
  font-size:1.0625rem;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

::selection{ background:var(--champagne); color:var(--ink); }

a{ color:inherit; text-decoration:none; }
a:focus-visible, button:focus-visible{
  outline:1.5px solid var(--champagne);
  outline-offset:4px;
  border-radius:2px;
}

em{ font-style:italic; }

/* ============ GRAIN ============ */
.grain{
  position:fixed; inset:-50%;
  width:200%; height:200%;
  pointer-events:none;
  z-index:9000;
  opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 9s steps(6) infinite;
}
@keyframes grain{
  0%,100%{ transform:translate(0,0); }
  20%{ transform:translate(-3%,2%); }
  40%{ transform:translate(2%,-3%); }
  60%{ transform:translate(-2%,-2%); }
  80%{ transform:translate(3%,3%); }
}

/* ============ CURSOR ============ */
.cursor-dot,.cursor-ring{
  position:fixed; top:0; left:0;
  pointer-events:none; z-index:9500;
  border-radius:50%;
  transform:translate(-50%,-50%);
  display:none;
}
.cursor-dot{ width:5px; height:5px; background:var(--champagne); }
.cursor-ring{
  width:34px; height:34px;
  border:1px solid rgba(228,198,160,.45);
  transition:width .35s var(--ease-out), height .35s var(--ease-out),
             border-color .35s, background .35s;
}
.cursor-ring.is-hover{
  width:58px; height:58px;
  border-color:rgba(228,198,160,.9);
  background:rgba(228,198,160,.07);
}
@media (pointer:fine){
  html.js .cursor-dot, html.js .cursor-ring{ display:block; }
}

/* ============ EYEBROW ============ */
.eyebrow{
  display:flex; align-items:center; gap:1rem;
  font-family:var(--font-body);
  font-size:.6875rem;
  font-weight:400;
  letter-spacing:.42em;
  text-transform:uppercase;
  color:var(--champagne);
}
.eyebrow-rule{
  display:inline-block; width:2.6rem; height:1px;
  background:linear-gradient(90deg, var(--champagne), transparent);
  flex:none;
}

/* ============ BUTTONS ============ */
.btn{
  position:relative;
  display:inline-flex; align-items:center; gap:.6rem;
  font-family:var(--font-body);
  font-size:.8125rem; font-weight:400;
  letter-spacing:.22em; text-transform:uppercase;
  padding:1.05rem 2.2rem;
  border-radius:999px;
  overflow:hidden;
  transition:color .4s var(--ease-out), border-color .4s, transform .4s var(--ease-out);
  will-change:transform;
}
.btn span{ position:relative; z-index:2; }
.btn svg{ position:relative; z-index:2; }
.btn-gold{
  background:var(--champagne);
  color:var(--ink);
  border:1px solid var(--champagne);
}
.btn-gold::after{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(105deg, transparent 30%, rgba(255,255,255,.55) 50%, transparent 70%);
  transform:translateX(-120%);
  transition:transform .8s var(--ease-out);
}
.btn-gold:hover::after{ transform:translateX(120%); }
.btn-ghost{
  border:1px solid var(--hairline);
  color:var(--ivory);
}
.btn-ghost:hover{ border-color:rgba(228,198,160,.55); color:var(--champagne); }
.btn-big{ padding:1.3rem 3rem; font-size:.875rem; }

/* ============ LOADER ============ */
.loader{
  position:fixed; inset:0; z-index:9990;
  background:var(--ink);
  display:flex; align-items:center; justify-content:center;
}
.loader-inner{ text-align:center; }
.loader-mark{
  font-family:var(--font-body); font-weight:200;
  font-size:clamp(2rem, 6vw, 3.6rem);
  letter-spacing:.55em; text-indent:.55em;
  color:var(--champagne);
}
.loader-mark span{
  display:inline-block;
  opacity:0; transform:translateY(28px);
}
.loader-line{
  width:min(340px, 60vw); height:1px;
  margin:1.6rem auto 1.3rem;
  background:rgba(228,198,160,.14);
  overflow:hidden;
}
.loader-line i{
  display:block; width:100%; height:100%;
  background:var(--champagne);
  transform:scaleX(0); transform-origin:left;
}
.loader-sub{
  font-size:.5625rem; letter-spacing:.5em;
  color:var(--smoke);
  opacity:0;
}
.loader-count{
  position:absolute; right:var(--pad); bottom:var(--pad);
  font-family:var(--font-mono); font-weight:300;
  font-size:.8125rem; color:var(--smoke);
  letter-spacing:.15em;
}

/* ============ NAV ============ */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:900;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.4rem var(--pad);
  transition:background .5s, backdrop-filter .5s, padding .5s var(--ease-out);
}
.nav.is-scrolled{
  background:rgba(13,12,10,.72);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  padding:.95rem var(--pad);
  border-bottom:1px solid rgba(228,198,160,.08);
}
.nav-mark{ display:flex; flex-direction:column; gap:.2rem; line-height:1; }
.nav-mark-word{
  font-weight:300; font-size:1.05rem;
  letter-spacing:.5em; color:var(--champagne);
}
.nav-mark-sub{
  font-size:.5rem; letter-spacing:.46em;
  color:var(--smoke);
}
.nav-links{ display:flex; gap:2.6rem; }
.nav-links a{
  position:relative;
  font-size:.75rem; font-weight:400;
  letter-spacing:.24em; text-transform:uppercase;
  color:var(--smoke);
  transition:color .3s;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:-6px;
  width:100%; height:1px;
  background:var(--champagne);
  transform:scaleX(0); transform-origin:right;
  transition:transform .45s var(--ease-out);
}
.nav-links a:hover{ color:var(--champagne); }
.nav-links a:hover::after{ transform:scaleX(1); transform-origin:left; }
.nav-cta{
  font-size:.6875rem; font-weight:400;
  letter-spacing:.24em; text-transform:uppercase;
  color:var(--champagne);
  border:1px solid rgba(228,198,160,.35);
  border-radius:999px;
  padding:.72rem 1.5rem;
  transition:background .35s, color .35s, border-color .35s;
}
.nav-cta:hover{ background:var(--champagne); color:var(--ink); border-color:var(--champagne); }
.nav-cta-short{ display:none; }
@media (max-width:820px){ .nav-links{ display:none; } }
@media (max-width:600px){
  .nav-cta-full{ display:none; }
  .nav-cta-short{ display:inline; }
  .nav-cta{ white-space:nowrap; padding:.6rem 1.1rem; }
}

/* ============ HERO ============ */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; flex-direction:column; justify-content:center;
  padding:7rem var(--pad) 0;
  overflow:hidden;
}
.hero-canvas{
  position:absolute; inset:0;
  width:100%; height:100%;
  display:block;
}
.hero-veil{
  position:absolute; inset:0;
  background:
    radial-gradient(120% 90% at 30% 20%, transparent 0%, rgba(13,12,10,.25) 55%, rgba(13,12,10,.9) 100%),
    linear-gradient(180deg, rgba(13,12,10,.55) 0%, rgba(13,12,10,.1) 30%, rgba(13,12,10,.25) 70%, var(--ink) 100%);
  pointer-events:none;
}
.hero-content{
  position:relative; z-index:2;
  max-width:1200px;
}
.hero-eyebrow{ margin-bottom:2.2rem; }
.hero-title{
  font-family:var(--font-display);
  font-weight:300;
  font-size:clamp(2.6rem, 7.2vw, 6.8rem);
  line-height:1.04;
  letter-spacing:-.01em;
  color:var(--ivory);
}
.hero-title em{
  font-style:italic;
  color:var(--champagne);
}
.hero-title .line{ display:block; }
.hero-sub{
  max-width:34rem;
  margin-top:2.4rem;
  color:var(--smoke);
  font-size:clamp(1rem, 1.35vw, 1.125rem);
}
.hero-actions{
  display:flex; flex-wrap:wrap; gap:1.1rem;
  margin-top:3rem;
}
.hero-foot{
  position:relative; z-index:2;
  margin-top:auto;
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:2rem;
  padding:3.5rem 0 2rem;
}
.scroll-cue{
  display:flex; flex-direction:column; align-items:center; gap:.8rem;
  font-size:.5625rem; letter-spacing:.5em; text-transform:uppercase;
  color:var(--smoke);
}
.scroll-cue i{
  width:1px; height:52px;
  background:linear-gradient(180deg, var(--champagne), transparent);
  animation:cue 2.4s var(--ease-out) infinite;
  transform-origin:top;
}
@keyframes cue{
  0%{ transform:scaleY(0); opacity:0; }
  35%{ transform:scaleY(1); opacity:1; }
  100%{ transform:scaleY(1) translateY(18px); opacity:0; }
}

/* night log */
.nightlog{
  width:min(430px, 90vw);
  text-align:right;
}
.nightlog-label{
  display:block;
  font-size:.5625rem; letter-spacing:.4em; text-transform:uppercase;
  color:var(--smoke);
  margin-bottom:.9rem;
}
.nightlog-window{
  height:6.4rem; overflow:hidden;
  position:relative;
  mask-image:linear-gradient(180deg, transparent 0%, #000 25%, #000 75%, transparent 100%);
  -webkit-mask-image:linear-gradient(180deg, transparent 0%, #000 25%, #000 75%, transparent 100%);
}
.nightlog-list{ list-style:none; }
.nightlog-list li{
  display:flex; justify-content:flex-end; gap:1.1rem;
  font-family:var(--font-mono); font-weight:300;
  font-size:.75rem; line-height:2.15;
  color:var(--smoke);
  white-space:nowrap;
}
.nightlog-list li .t{ color:var(--gold-deep); }
.nightlog-list li.is-new{ color:var(--champagne); }

/* nav scroll progress */
.nav-progress{
  position:absolute; top:0; left:0;
  width:100%; height:1px;
  background:linear-gradient(90deg, var(--gold-deep), var(--champagne));
  transform:scaleX(0); transform-origin:left;
}

/* ============ TRUTH ============ */
.truth{
  position:relative;
  padding:clamp(7rem, 14vw, 13rem) var(--pad) clamp(6rem, 10vw, 9rem);
}
.truth-clock{
  position:absolute;
  top:clamp(3rem, 7vw, 6rem);
  right:var(--pad);
  text-align:right;
  pointer-events:none;
  display:flex; flex-direction:column; align-items:flex-end; gap:.6rem;
}
.truth-clock-time{
  font-family:var(--font-display); font-style:italic; font-weight:300;
  font-size:clamp(4.5rem, 11vw, 10rem);
  line-height:.9;
  color:transparent;
  -webkit-text-stroke:1px rgba(228,198,160,.28);
}
.truth-clock-note{
  font-size:.5625rem; letter-spacing:.4em; text-transform:uppercase;
  color:var(--smoke);
}
@media (max-width:900px){
  .truth-clock{
    position:static;
    align-items:flex-start; text-align:left;
    margin-bottom:3rem;
  }
}
.truth-inner{
  display:grid;
  grid-template-columns:minmax(0, 1.35fr) minmax(0, 1fr);
  gap:clamp(2rem, 6vw, 6rem);
  align-items:end;
  max-width:1400px; margin:0 auto;
}
.truth .eyebrow{ grid-column:1 / -1; margin-bottom:3rem; }
.truth-title{
  font-family:var(--font-display);
  font-weight:300;
  font-size:clamp(2.4rem, 5.6vw, 5.2rem);
  line-height:1.06;
  color:var(--ivory);
}
.truth-title em{ color:var(--champagne); }
.truth-title .line{ display:block; }
.truth-body{
  color:var(--smoke);
  display:flex; flex-direction:column; gap:1.4rem;
  max-width:30rem;
  padding-bottom:.5rem;
}
.truth-body p:last-child{ color:var(--ivory); }
/* research stats */
.truth-stats-wrap{
  max-width:1400px;
  margin:clamp(4.5rem, 9vw, 8rem) auto 0;
}
.truth-stats{
  list-style:none;
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  border-top:1px solid rgba(228,198,160,.14);
}
.truth-stats li{
  padding:2.2rem 2rem 0 0;
  border-top:1px solid transparent;
}
.truth-stats li + li{ padding-left:2rem; border-left:1px solid rgba(228,198,160,.1); }
.truth-stats strong{
  display:block;
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.6rem, 4.6vw, 4.2rem);
  line-height:1;
  color:var(--champagne);
  margin-bottom:.9rem;
}
.truth-stats strong em{ font-style:italic; font-size:.5em; color:var(--gold-deep); }
.truth-stats span{
  display:block;
  font-size:.85rem; line-height:1.55;
  color:var(--smoke);
  max-width:16rem;
}
.stat-src{
  display:inline-block;
  margin-left:.35em;
  font-family:var(--font-mono);
  font-size:.6em;
  vertical-align:super;
  color:var(--gold-deep);
  border-bottom:1px solid transparent;
  transition:color .3s, border-color .3s;
}
.stat-src:hover{ color:var(--champagne); border-color:var(--champagne); }
.truth-sources{
  margin-top:2.4rem;
  font-family:var(--font-mono); font-weight:300;
  font-size:.625rem; letter-spacing:.08em;
  color:rgba(154,144,131,.6);
}
.truth-sources a{
  color:rgba(154,144,131,.75);
  border-bottom:1px solid rgba(154,144,131,.25);
  transition:color .3s, border-color .3s;
}
.truth-sources a:hover{ color:var(--champagne); border-color:var(--champagne); }
@media (max-width:900px){
  .truth-stats{ grid-template-columns:1fr 1fr; gap:0; }
  .truth-stats li{ padding:1.6rem 1rem 0 0; }
  .truth-stats li + li{ padding-left:0; border-left:none; }
  .truth-stats li:nth-child(even){ padding-left:1.4rem; border-left:1px solid rgba(228,198,160,.1); }
  .truth-stats li:nth-child(n+3){ margin-top:1.6rem; }
}

.truth-pull{
  margin:clamp(5rem, 10vw, 9rem) auto 0;
  max-width:1400px;
  font-family:var(--font-display);
  font-size:clamp(1.9rem, 4.6vw, 4rem);
  font-weight:300;
  color:var(--champagne);
  text-align:center;
}
@media (max-width:900px){
  .truth-inner{ grid-template-columns:1fr; align-items:start; }
}

/* ============ MARQUEE ============ */
.marquee{
  overflow:hidden;
  padding:clamp(2rem, 4vw, 3.5rem) 0;
  border-top:1px solid rgba(228,198,160,.06);
  border-bottom:1px solid rgba(228,198,160,.06);
}
.marquee-track{
  display:flex; width:max-content;
  animation:marquee 46s linear infinite;
}
.marquee-track span{
  font-family:var(--font-display); font-style:italic; font-weight:300;
  font-size:clamp(1.8rem, 3.6vw, 3.2rem);
  white-space:nowrap;
  color:rgba(228,198,160,.30);
}
@keyframes marquee{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (prefers-reduced-motion:reduce){
  .marquee-track{ animation:none; }
}

/* ============ SYSTEM ============ */
.system{ position:relative; }
.system-head{
  padding:clamp(4rem, 8vw, 7rem) var(--pad) clamp(3rem, 5vw, 4.5rem);
  max-width:1400px; margin:0 auto;
}
.system-head .eyebrow{ margin-bottom:2.4rem; }
.system-title{
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.4rem, 5.4vw, 5rem);
  line-height:1.05; color:var(--ivory);
}
.system-title em{ color:var(--champagne); }

.system-pin{ overflow:hidden; position:relative; }
.system-rail{
  position:absolute; z-index:5;
  left:var(--pad); bottom:2.2rem;
  display:flex; align-items:center; gap:1.1rem;
  font-family:var(--font-mono); font-weight:300;
  font-size:.72rem; letter-spacing:.2em;
  color:var(--smoke);
  opacity:0;
  transition:opacity .5s;
}
.system-rail.is-on{ opacity:1; }
.system-rail-count{ color:var(--champagne); }
.system-rail-line{
  width:clamp(90px, 14vw, 200px); height:1px;
  background:rgba(228,198,160,.15);
  overflow:hidden;
}
.system-rail-line i{
  display:block; height:100%;
  background:var(--champagne);
  transform:scaleX(0); transform-origin:left;
}
@media (max-width:900px){ .system-rail{ display:none; } }
.system-track{
  display:flex;
  width:max-content;
}
.panel{
  position:relative;
  width:100vw;
  min-height:100svh;
  flex:none;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem, 5vw, 6rem);
  align-items:center;
  padding:clamp(4rem, 8vh, 7rem) var(--pad);
}
.panel::before{
  content:attr(data-num);
  position:absolute;
  right:4vw; bottom:-.08em;
  font-family:var(--font-display); font-weight:300; font-style:italic;
  font-size:clamp(12rem, 30vw, 26rem);
  line-height:1;
  color:transparent;
  -webkit-text-stroke:1px rgba(228,198,160,.11);
  pointer-events:none;
}
.panel-copy{ max-width:33rem; justify-self:end; }
.panel-index{
  display:block;
  font-family:var(--font-mono); font-weight:300;
  font-size:.8125rem; letter-spacing:.3em;
  color:var(--gold-deep);
  margin-bottom:1.6rem;
}
.panel-name{
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.2rem, 4.4vw, 4rem);
  line-height:1.06; color:var(--ivory);
  margin-bottom:1.8rem;
}
.panel-name em{ color:var(--champagne); }
.panel-copy > p{ color:var(--smoke); }
.panel-note{
  margin-top:1.5rem;
  font-size:.75rem; letter-spacing:.28em; text-transform:uppercase;
  color:var(--champagne);
}
.panel-visual{ justify-self:start; width:100%; max-width:520px; }

/* --- SMS phone --- */
.phone{
  background:linear-gradient(160deg, var(--ink-3), var(--ink-2));
  border:1px solid var(--hairline);
  border-radius:26px;
  padding:1.4rem 1.4rem 1.6rem;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.8);
}
.phone-top{
  display:flex; align-items:center; gap:.7rem;
  font-size:.75rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--smoke);
  padding-bottom:1.1rem;
  border-bottom:1px solid var(--hairline);
  margin-bottom:1.2rem;
}
.phone-dot{
  width:8px; height:8px; border-radius:50%;
  background:var(--champagne);
  box-shadow:0 0 12px rgba(228,198,160,.8);
}
.phone-time{ margin-left:auto; font-family:var(--font-mono); }
.phone-thread{
  display:flex; flex-direction:column; gap:.7rem;
  min-height:270px;
}
.msg{
  max-width:82%;
  padding:.72rem 1.05rem;
  border-radius:18px;
  font-size:.9rem; line-height:1.5;
  opacity:0; transform:translateY(14px);
  transition:opacity .5s var(--ease-out), transform .5s var(--ease-out);
}
.msg.is-in{ opacity:1; transform:none; }
.msg-them{
  align-self:flex-start;
  background:rgba(242,234,219,.08);
  color:var(--ivory);
  border-bottom-left-radius:4px;
}
.msg-us{
  align-self:flex-end;
  background:linear-gradient(135deg, var(--champagne), #d3b184);
  color:var(--ink);
  border-bottom-right-radius:4px;
}
.msg-typing{
  align-self:flex-end;
  display:flex; gap:5px;
  padding:.85rem 1.05rem;
  background:rgba(228,198,160,.16);
  border-radius:18px 18px 4px 18px;
}
.msg-typing i{
  width:5px; height:5px; border-radius:50%;
  background:var(--champagne);
  animation:typing 1s infinite;
}
.msg-typing i:nth-child(2){ animation-delay:.16s; }
.msg-typing i:nth-child(3){ animation-delay:.32s; }
@keyframes typing{
  0%,60%,100%{ opacity:.25; transform:translateY(0); }
  30%{ opacity:1; transform:translateY(-3px); }
}

/* --- Voice card --- */
.voice-card{
  background:linear-gradient(160deg, var(--ink-3), var(--ink-2));
  border:1px solid var(--hairline);
  border-radius:26px;
  padding:1.5rem 1.6rem 1.7rem;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.8);
}
.voice-head{
  display:flex; justify-content:space-between; align-items:center;
  margin-bottom:1rem;
}
.voice-live{
  display:inline-flex; align-items:center; gap:.55rem;
  font-size:.6875rem; letter-spacing:.3em; text-transform:uppercase;
  color:var(--champagne);
}
.voice-live i{
  width:7px; height:7px; border-radius:50%;
  background:var(--champagne);
  animation:pulse 1.6s infinite;
}
@keyframes pulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(228,198,160,.55); }
  60%{ box-shadow:0 0 0 8px rgba(228,198,160,0); }
}
.voice-dur{ font-family:var(--font-mono); font-size:.8125rem; color:var(--smoke); }
.voice-wave{ width:100%; height:64px; display:block; margin-bottom:1.1rem; }
.voice-lines{ display:flex; flex-direction:column; gap:.55rem; }
.voice-lines p{
  font-size:.9rem; line-height:1.5;
  opacity:.18;
  transition:opacity .6s var(--ease-out), color .6s;
  color:var(--smoke);
}
.voice-lines p[data-who="willa"]{ padding-left:1.1rem; border-left:1px solid var(--hairline); }
.voice-lines p.is-said{ opacity:1; }
.voice-lines p.is-said[data-who="willa"]{ color:var(--champagne); border-left-color:var(--champagne); }
.voice-lines p.is-said[data-who="caller"]{ color:var(--ivory); }

/* --- Calendar card --- */
.cal-card{
  background:linear-gradient(160deg, var(--ink-3), var(--ink-2));
  border:1px solid var(--hairline);
  border-radius:26px;
  padding:1.5rem 1.6rem 1.6rem;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.8);
}
.cal-head{
  display:flex; justify-content:space-between;
  font-size:.6875rem; letter-spacing:.3em; text-transform:uppercase;
  color:var(--smoke);
  margin-bottom:1.2rem;
}
.cal-head .cal-month{ color:var(--champagne); }
.cal-grid{
  display:grid;
  grid-template-columns:repeat(7, 1fr);
  gap:6px;
  margin-bottom:1.2rem;
}
.cal-cell{
  aspect-ratio:1;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-mono); font-size:.72rem; font-weight:300;
  color:var(--smoke);
  border:1px solid transparent;
  border-radius:10px;
  background:rgba(242,234,219,.035);
}
.cal-cell.is-dow{ background:none; color:var(--bronze); font-size:.6rem; aspect-ratio:auto; padding:.3rem 0; }
.cal-cell.is-empty{ background:none; }
.cal-cell.is-taken{ color:#4d463c; text-decoration:line-through; }
.cal-cell.is-target{ position:relative; }
.cal-cell.is-target.is-booked{
  background:var(--champagne); color:var(--ink);
  border-color:var(--champagne);
  box-shadow:0 0 26px rgba(228,198,160,.35);
  font-weight:400;
}
.cal-confirm{
  display:flex; align-items:center; gap:.9rem;
  padding-top:1.1rem;
  border-top:1px solid var(--hairline);
  opacity:0; transform:translateY(10px);
  transition:opacity .6s var(--ease-out), transform .6s var(--ease-out);
}
.cal-confirm.is-in{ opacity:1; transform:none; }
.cal-confirm i{
  width:34px; height:34px; flex:none;
  border-radius:50%;
  border:1px solid var(--champagne);
  position:relative;
}
.cal-confirm i::after{
  content:""; position:absolute; left:11px; top:8px;
  width:8px; height:13px;
  border-right:1.5px solid var(--champagne);
  border-bottom:1.5px solid var(--champagne);
  transform:rotate(45deg);
}
.cal-confirm strong{
  display:block; font-weight:400; font-size:.9rem; color:var(--ivory);
  letter-spacing:.02em;
}
.cal-confirm span{ font-size:.78rem; color:var(--smoke); }

/* --- Nurture card --- */
.nurture-card{
  background:linear-gradient(160deg, var(--ink-3), var(--ink-2));
  border:1px solid var(--hairline);
  border-radius:26px;
  padding:2rem 1.8rem;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.8);
}
.nurture-line{
  height:1px; background:var(--hairline);
  margin:0 .2rem 1.8rem;
  overflow:hidden;
}
.nurture-progress{
  display:block; height:100%;
  background:linear-gradient(90deg, var(--gold-deep), var(--champagne));
  transform:scaleX(0); transform-origin:left;
  transition:transform 2.6s var(--ease-out);
}
.nurture-progress.is-in{ transform:scaleX(1); }
.nurture-steps{
  list-style:none;
  display:flex; flex-direction:column; gap:1.15rem;
}
.nurture-steps li{
  display:flex; align-items:baseline; gap:1.4rem;
  opacity:.25;
  transition:opacity .6s var(--ease-out);
}
.nurture-steps li.is-lit{ opacity:1; }
.nurture-day{
  font-family:var(--font-mono); font-size:.72rem;
  letter-spacing:.18em; color:var(--gold-deep);
  width:4.2rem; flex:none;
}
.nurture-steps li.is-lit .nurture-day{ color:var(--champagne); }
.nurture-what{ font-size:.92rem; color:var(--ivory); }

/* ============ PROOF CARDS ============ */
.numbers{
  padding:clamp(6rem, 11vw, 10rem) var(--pad);
  border-top:1px solid rgba(228,198,160,.07);
  border-bottom:1px solid rgba(228,198,160,.07);
}
.numbers-head{
  max-width:1400px; margin:0 auto 3.2rem;
}
.numbers-row{
  list-style:none;
  max-width:1400px; margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:clamp(1rem, 1.6vw, 1.5rem);
}
.proof-card{
  background:linear-gradient(165deg, var(--ink-3), var(--ink-2));
  border:1px solid rgba(228,198,160,.1);
  border-radius:20px;
  padding:2.1rem 1.8rem 2rem;
  transition:border-color .4s, transform .5s var(--ease-out);
}
.proof-card:hover{
  border-color:rgba(228,198,160,.3);
  transform:translateY(-4px);
}
.proof-card strong{
  display:block;
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.4rem, 3.4vw, 3.4rem);
  line-height:1;
  color:var(--champagne);
  margin-bottom:.8rem;
}
.proof-card strong em{ font-style:italic; font-size:.55em; }
.proof-card span{
  display:block;
  font-size:.6875rem; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ivory);
  padding-bottom:1.1rem;
  margin-bottom:1.1rem;
  border-bottom:1px solid rgba(228,198,160,.12);
}
.proof-card p{
  font-size:.875rem; line-height:1.62;
  color:var(--smoke);
}
@media (max-width:1080px){
  .numbers-row{ grid-template-columns:repeat(2, 1fr); }
}
@media (max-width:560px){
  .numbers-row{ grid-template-columns:1fr; }
}

/* ============ BEGIN (invitation) ============ */
.begin{
  padding:clamp(6rem, 12vw, 11rem) var(--pad);
  display:flex; justify-content:center;
}
.begin-card{
  position:relative;
  width:min(880px, 100%);
  background:var(--paper);
  color:var(--paper-ink);
  padding:clamp(3rem, 7vw, 5.5rem) clamp(2rem, 6vw, 5rem);
  box-shadow:0 60px 120px -40px rgba(0,0,0,.9);
}
.begin-card::before{
  content:""; position:absolute; inset:14px;
  border:1px solid rgba(25,20,16,.22);
  pointer-events:none;
}
.begin-card::after{
  content:""; position:absolute; inset:0;
  pointer-events:none;
  opacity:.5;
  mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.93 0 0 0 0 0.9 0 0 0 0 0.83 0 0 0 0.9 0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23p)'/%3E%3C/svg%3E");
}
.begin-card > *{ position:relative; z-index:1; }
.begin-eyebrow{ color:var(--bronze); justify-content:center; }
.begin-eyebrow .eyebrow-rule{ background:linear-gradient(90deg, var(--bronze), transparent); }
.begin-title{
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.2rem, 4.6vw, 3.8rem);
  text-align:center;
  margin:1.6rem 0 3.2rem;
}
.begin-title em{ color:var(--gold-deep); }
.begin-steps{
  list-style:none;
  display:flex; flex-direction:column; gap:2.2rem;
  max-width:560px; margin:0 auto;
}
.begin-steps li{
  display:flex; gap:1.8rem; align-items:baseline;
}
.begin-num{
  font-family:var(--font-display); font-style:italic;
  font-size:1.5rem; color:var(--gold-deep);
  width:2.4rem; flex:none; text-align:center;
}
.begin-steps h3{
  font-family:var(--font-body); font-weight:400;
  font-size:.8125rem; letter-spacing:.3em; text-transform:uppercase;
  margin-bottom:.45rem;
}
.begin-steps p{
  font-size:.95rem; line-height:1.6;
  color:rgba(25,20,16,.72);
}
.begin-seal{
  width:66px; height:66px;
  margin:3rem auto 0;
  border-radius:50%;
  border:1px solid rgba(168,127,79,.55);
  background:radial-gradient(circle at 35% 30%, rgba(228,198,160,.5), rgba(168,127,79,.22) 70%);
  box-shadow:inset 0 0 0 4px rgba(239,230,211,.9), inset 0 0 0 5px rgba(168,127,79,.35);
  display:flex; align-items:center; justify-content:center;
  transform:rotate(-8deg);
}
.begin-seal-k{
  font-family:var(--font-display); font-style:italic;
  font-size:1.7rem; color:var(--gold-deep);
}

/* ============ PRICING ============ */
.pricing{
  padding:clamp(6rem, 11vw, 10rem) var(--pad) clamp(2rem, 4vw, 3rem);
}
.pricing-inner{
  max-width:880px; margin:0 auto;
  text-align:center;
}
.pricing-inner .eyebrow{ justify-content:center; }
.pricing-inner .eyebrow .eyebrow-rule{ display:none; }
.pricing-title{
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.2rem, 4.6vw, 4rem);
  line-height:1.08;
  color:var(--ivory);
  margin:1.6rem 0 1.8rem;
}
.pricing-title em{ color:var(--champagne); }
.pricing-sub{
  max-width:36rem; margin:0 auto 3.5rem;
  color:var(--smoke);
}
.pricing-shape{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:clamp(1.2rem, 3vw, 2.5rem);
  align-items:stretch;
  text-align:left;
}
.pricing-part{
  background:linear-gradient(165deg, var(--ink-3), var(--ink-2));
  border:1px solid rgba(228,198,160,.12);
  border-radius:20px;
  padding:2.2rem 2.1rem 2.1rem;
}
.pricing-label{
  display:inline-block;
  font-size:.625rem; letter-spacing:.34em; text-transform:uppercase;
  color:var(--gold-deep);
  border:1px solid rgba(168,127,79,.4);
  border-radius:999px;
  padding:.35rem .9rem .3rem;
  margin-bottom:1.3rem;
}
.pricing-part h3{
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(1.5rem, 2.4vw, 2rem);
  color:var(--champagne);
  margin-bottom:.8rem;
}
.pricing-part p{
  font-size:.9rem; line-height:1.65;
  color:var(--smoke);
}
.pricing-plus{
  align-self:center;
  font-family:var(--font-display); font-style:italic; font-weight:300;
  font-size:2.4rem;
  color:var(--gold-deep);
}
.pricing-start{
  margin:2.8rem auto 0;
  max-width:34rem;
  font-size:1rem; line-height:1.65;
  color:var(--ivory);
}
.pricing-note{
  margin-top:1.1rem;
  font-size:.875rem;
  color:var(--smoke);
}
.pricing-note a{
  color:var(--champagne);
  border-bottom:1px solid rgba(228,198,160,.4);
  transition:border-color .3s;
}
.pricing-note a:hover{ border-color:var(--champagne); }
@media (max-width:760px){
  .pricing-shape{ grid-template-columns:1fr; }
  .pricing-plus{ justify-self:center; }
}

/* ============ FAQ ============ */
.faq{
  padding:clamp(6rem, 11vw, 10rem) var(--pad) clamp(3rem, 6vw, 5rem);
}
.faq-inner{
  max-width:1400px; margin:0 auto;
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(0, 1.5fr);
  gap:clamp(2.5rem, 6vw, 7rem);
  align-items:start;
}
.faq-head .eyebrow{ margin-bottom:2.2rem; }
.faq-title{
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.2rem, 4.2vw, 3.8rem);
  line-height:1.08;
  color:var(--ivory);
  position:sticky; top:7rem;
}
.faq-title em{ color:var(--champagne); }
.faq-list{ border-top:1px solid rgba(228,198,160,.14); }
.faq-list details{ border-bottom:1px solid rgba(228,198,160,.14); }
.faq-list summary{
  list-style:none;
  cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  padding:1.6rem .2rem;
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(1.15rem, 1.9vw, 1.55rem);
  color:var(--ivory);
  transition:color .3s;
}
.faq-list summary::-webkit-details-marker{ display:none; }
.faq-list summary:hover{ color:var(--champagne); }
.faq-list summary i{
  position:relative; flex:none;
  width:30px; height:30px;
  border:1px solid rgba(228,198,160,.3);
  border-radius:50%;
  transition:transform .45s var(--ease-out), background .3s, border-color .3s;
}
.faq-list summary i::before,
.faq-list summary i::after{
  content:""; position:absolute; top:50%; left:50%;
  background:var(--champagne);
  transform:translate(-50%,-50%);
}
.faq-list summary i::before{ width:11px; height:1px; }
.faq-list summary i::after{ width:1px; height:11px; transition:opacity .3s; }
.faq-list details[open] summary i{ transform:rotate(135deg); border-color:var(--champagne); }
.faq-list details[open] summary{ color:var(--champagne); }
.faq-a{ overflow:hidden; }
.faq-a p{
  padding:0 .2rem 1.8rem;
  max-width:36rem;
  font-size:.95rem; line-height:1.7;
  color:var(--smoke);
}
@media (max-width:900px){
  .faq-inner{ grid-template-columns:1fr; }
  .faq-title{ position:static; }
}

/* ============ CTA ============ */
.cta{
  position:relative;
  padding:clamp(8rem, 16vw, 14rem) var(--pad);
  text-align:center;
  overflow:hidden;
}
.cta .eyebrow{ justify-content:center; }
.cta .eyebrow-rule{ display:none; }
.cta-glow{
  position:absolute; left:50%; top:55%;
  width:min(900px, 120vw); height:min(900px, 120vw);
  transform:translate(-50%,-50%);
  background:radial-gradient(circle, rgba(228,198,160,.13) 0%, rgba(168,127,79,.05) 40%, transparent 70%);
  pointer-events:none;
  animation:breathe 7s ease-in-out infinite;
}
@keyframes breathe{
  0%,100%{ transform:translate(-50%,-50%) scale(1); opacity:.9; }
  50%{ transform:translate(-50%,-50%) scale(1.12); opacity:1; }
}
.cta-title{
  position:relative;
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(3rem, 8vw, 7.5rem);
  line-height:1.04;
  color:var(--ivory);
  margin:2rem 0 2.2rem;
}
.cta-title em{ color:var(--champagne); }
.cta-title .line{ display:block; }
.circled{ position:relative; display:inline-block; padding:0 .12em; }
.circle-svg{
  position:absolute; inset:-8% -6%;
  width:112%; height:116%;
  overflow:visible;
  pointer-events:none;
}
.circle-svg path{
  stroke:var(--gold-deep);
  stroke-width:2.2;
  stroke-linecap:round;
  stroke-dasharray:1;
  stroke-dashoffset:1;
  opacity:.85;
}
html:not(.js) .circle-svg path{ stroke-dashoffset:0; }
.cta-sub{
  position:relative;
  max-width:32rem; margin:0 auto 2.2rem;
  color:var(--smoke);
}
.cta-sub strong{ color:var(--champagne); font-weight:400; }
.cta-gets{
  position:relative;
  list-style:none;
  max-width:30rem;
  margin:0 auto 3.5rem;
  text-align:left;
  display:flex; flex-direction:column; gap:.85rem;
}
.cta-gets li{
  position:relative;
  padding-left:1.9rem;
  font-size:.95rem; line-height:1.55;
  color:var(--ivory);
}
.cta-gets li::before{
  content:""; position:absolute; left:0; top:.52em;
  width:14px; height:1px;
  background:var(--champagne);
}
.cta-booking{
  position:relative;
  max-width:920px;
  margin:0 auto;
  background:linear-gradient(165deg, var(--ink-3), var(--ink-2));
  border:1px solid rgba(228,198,160,.14);
  border-radius:24px;
  padding:clamp(.6rem, 2vw, 1.4rem);
  box-shadow:0 50px 100px -40px rgba(0,0,0,.85);
}
.cta-booking iframe{
  display:block;
  width:100%;
  min-height:640px;
  border-radius:16px;
  background:transparent;
}
.cta-actions{ position:relative; }
.cta-contact{
  position:relative;
  margin-top:2.6rem;
  font-size:.8125rem; letter-spacing:.14em;
  color:var(--smoke);
}
.cta-contact > span:first-child{
  display:block; margin-bottom:.7rem;
  font-size:.6875rem; letter-spacing:.3em; text-transform:uppercase;
  color:var(--bronze);
}
.cta-contact a{ transition:color .3s; }
.cta-contact a:hover{ color:var(--champagne); }
.cta-dot{ margin:0 1rem; color:var(--bronze); }

/* ============ FOOTER ============ */
.footer{
  border-top:1px solid rgba(228,198,160,.07);
  padding:3.5rem var(--pad) 3rem;
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:2rem; flex-wrap:wrap;
}
.footer-mark{ display:flex; flex-direction:column; gap:.5rem; }
.footer-word{
  font-weight:200; font-size:1.6rem;
  letter-spacing:.5em; color:var(--champagne);
}
.footer-sub{ font-size:.5rem; letter-spacing:.42em; color:var(--smoke); }
.footer-meta{
  display:flex; flex-direction:column; align-items:flex-end; gap:.4rem;
  font-size:.75rem; color:var(--smoke); letter-spacing:.06em;
  text-align:right;
}
.footer-wink{ color:var(--bronze); font-style:italic; font-family:var(--font-display); font-size:.9rem; }

/* ============ REVEAL STATES (JS) ============ */
html.js .hero-title .line,
html.js .truth-title .line,
html.js .system-title .line,
html.js .cta-title .line{
  display:block; overflow:hidden;
}
html.js .hero-title .line > i,
html.js .truth-title .line > i,
html.js .system-title .line > i,
html.js .cta-title .line > i{
  display:block; font-style:inherit;
  transform:translateY(110%);
}
html.js .hero-eyebrow,
html.js .hero-sub,
html.js .hero-actions,
html.js .hero-foot{ opacity:0; }

/* ============ RESPONSIVE ============ */
@media (max-width:900px){
  .panel{
    grid-template-columns:1fr;
    gap:2.5rem;
    align-content:center;
    min-height:auto;
    padding-top:4rem; padding-bottom:4rem;
  }
  .panel-copy{ justify-self:start; }
  .panel-visual{ max-width:460px; }
  .hero-foot{ flex-direction:column; align-items:flex-start; gap:2.5rem; }
  .nightlog{ text-align:left; }
  .nightlog-list li{ justify-content:flex-start; }
  .footer{ flex-direction:column; align-items:flex-start; }
  .footer-meta{ align-items:flex-start; text-align:left; }
}

/* On small screens the system section scrolls vertically */
@media (max-width:900px){
  .system-track{ display:block; width:auto; }
  .panel{ width:auto; }
}

/* ============ REDUCED MOTION ============ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  html{ scroll-behavior:auto; }
  .grain{ animation:none; }
  .circle-svg path{ stroke-dashoffset:0; }
}
