:root{
  --bg:#101B33; --bg-alt:#16233F; --panel:#1A2946; --panel-2:#16233F;
  --line:rgba(232,224,208,0.14); --hairline:rgba(232,224,208,0.09);
  --text:#E8E0D0; --text-dim:#D3CCBB; --text-muted:#B7BDCA;
  --accent:#C8434F; --accent-strong:#A6192E; --accent-soft:rgba(200,67,79,0.15);
  --header-bg:rgba(16,27,51,0.72); --jump-bg:rgba(16,27,51,0.80);
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --maxw:1080px;
}
[data-theme="light"]{
  --bg:#EFEADD; --bg-alt:#E6DFCE; --panel:#FAF6EC; --panel-2:#F2EBDA;
  --line:#D8D0BC; --hairline:#E2DAC8;
  --text:#17223B; --text-dim:#3C4A66; --text-muted:#6B6555;
  --accent:#9E1B2A; --accent-strong:#8B1A1A; --accent-soft:rgba(158,27,42,0.10);
  --header-bg:rgba(239,234,221,0.82); --jump-bg:rgba(239,234,221,0.88);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);
  font-size:18px;line-height:1.65;-webkit-font-smoothing:antialiased;
  transition:background .15s ease,color .15s ease}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.2;margin:0 0 .5em;color:var(--text);letter-spacing:.01em}
h1{font-size:2.7rem;font-weight:600}
h2{font-size:1.95rem}
h3{font-size:1.32rem}
p{margin:0 0 1em}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.container{max-width:var(--maxw);margin:0 auto;padding:0 28px}
.center{text-align:center}.small{font-size:.85rem;color:var(--text-muted)}
.divider{height:1px;background:var(--line);margin:40px 0;border:none}

/* ---- header / jump bar (sticky, semi-transparent, blurred) ---- */
header.site-header{position:sticky;top:0;z-index:60;background:var(--header-bg);
  -webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;gap:1.1rem;height:64px;max-width:var(--maxw);margin:0 auto;padding:0 28px}
.brand{display:flex;align-items:center;gap:.6rem;color:var(--text);margin-right:auto;flex-shrink:0}
.brand:hover{text-decoration:none;color:var(--text)}
.brand .mark{width:30px;height:30px;flex-shrink:0}
.brand .mark .base{stroke:currentColor}
.brand-name{font-family:var(--serif);font-weight:600;font-size:1.08rem;line-height:1;letter-spacing:.04em}
.brand-sub{display:block;font-family:var(--sans);font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);font-weight:600;margin-top:3px}
nav.main-nav ul{list-style:none;display:flex;gap:22px;margin:0;padding:0}
nav.main-nav a{color:var(--text-muted);font-size:.9rem;letter-spacing:.02em}
nav.main-nav a:hover,nav.main-nav a.active{color:var(--accent);text-decoration:none}
.header-tools{display:flex;align-items:center;gap:.7rem}
.theme-toggle{width:42px;height:24px;border-radius:12px;border:1px solid var(--line);background:var(--panel);cursor:pointer;position:relative;padding:0;flex:0 0 auto}
.theme-toggle-dot{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--accent);transition:left .15s ease}
[data-theme="light"] .theme-toggle-dot{left:22px}
.nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:.35rem}
.nav-toggle span{display:block;width:23px;height:2px;background:var(--text);margin:5px 0;transition:.2s ease}

/* in-page jump bar */
.jumpbar{position:sticky;top:64px;z-index:55;background:var(--jump-bg);
  -webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line)}
.jumpbar .container{display:flex;gap:8px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px;overflow-x:auto}
.jumpbar a{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);
  padding:6px 14px;border:1px solid var(--line);border-radius:999px;white-space:nowrap}
.jumpbar a:hover,.jumpbar a.active{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft);text-decoration:none}
:target{scroll-margin-top:120px}
.anchor{scroll-margin-top:120px}

/* ---- hero ---- */
.hero{padding:84px 0 66px;border-bottom:1px solid var(--line);
  background:radial-gradient(ellipse at 50% -10%,rgba(200,67,79,0.10),transparent 60%),var(--bg)}
.hero .eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.76rem;color:var(--accent);margin-bottom:16px}
.hero h1{max-width:800px}
.hero .lede{max-width:640px;color:var(--text-muted);font-size:1.08rem;margin-top:16px}
.hero .cta-row{margin-top:30px;display:flex;gap:14px;flex-wrap:wrap}

/* ---- buttons ---- */
.btn{display:inline-block;padding:12px 24px;border-radius:2px;font-size:.9rem;letter-spacing:.03em;
  border:1px solid var(--accent);color:var(--accent);background:transparent;cursor:pointer;
  transition:background .15s,color .15s}
.btn:hover{background:var(--accent);color:#fff;text-decoration:none}
.btn.solid{background:var(--accent);color:#fff}
.btn.solid:hover{background:transparent;color:var(--accent)}
.btn.ghost{border-color:var(--line);color:var(--text-muted)}
.btn.ghost:hover{border-color:var(--text-muted);background:transparent;color:var(--text)}

/* ---- sections ---- */
section{padding:66px 0}
section.alt{background:var(--bg-alt);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.section-head{max-width:680px;margin-bottom:40px}
.section-head .kicker,.eyebrow.k{text-transform:uppercase;letter-spacing:.16em;font-size:.74rem;color:var(--text-muted);margin-bottom:10px}
.kicker{text-transform:uppercase;letter-spacing:.16em;font-size:.74rem;color:var(--text-muted);margin-bottom:10px}

/* ---- grids / cards ---- */
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.card{background:var(--panel);border:1px solid var(--line);padding:28px;border-radius:4px}
.card p{color:var(--text-muted)}
.card .tag{display:inline-block;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);
  border:1px solid var(--accent-soft);padding:4px 10px;border-radius:2px;margin-bottom:14px}
.card .meta{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:.85rem;color:var(--text-muted)}

/* ---- trilogy mini covers (home) ---- */
.tri{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.tri .item{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:22px;text-align:center}
.tri .item img{width:100%;max-width:180px;height:auto;border-radius:2px;box-shadow:0 10px 30px rgba(0,0,0,.35);margin:0 auto 16px;display:block}
.tri .item .tag{display:inline-block;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.tri .item h3{margin:.2em 0}
.tri .item p{color:var(--text-muted);font-size:.92rem}

/* ---- book detail rows ---- */
.book-row{display:grid;grid-template-columns:230px 1fr;gap:36px;padding:44px 0;border-bottom:1px solid var(--line);align-items:start}
.book-row:last-child{border-bottom:none}
.book-cover img{width:100%;height:auto;border-radius:3px;border:1px solid var(--line);box-shadow:0 14px 40px rgba(0,0,0,.4);display:block}
.book-row .num{color:var(--accent);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px}
.book-row .status{display:inline-block;margin-top:8px;font-size:.82rem;color:var(--text-muted);border-left:2px solid var(--accent);padding-left:10px}
.book-hero-cover{width:100%;max-width:240px;height:auto;border-radius:3px;border:1px solid var(--line);box-shadow:0 14px 40px rgba(0,0,0,.4)}

/* ---- faq accordion ---- */
.faq-item{border-bottom:1px solid var(--line);padding:4px 0}
.faq-item summary{list-style:none;cursor:pointer;padding:18px 0;margin:0;font-family:var(--serif);font-size:1.06rem;color:var(--text);display:flex;align-items:center;justify-content:space-between;gap:20px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::marker{content:""}
.faq-item summary:hover{color:var(--accent)}
.faq-item .chevron{flex:0 0 auto;width:9px;height:9px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);transition:transform .15s ease;margin-top:-2px}
.faq-item[open] .chevron{transform:rotate(-135deg)}
.faq-item p{color:var(--text-muted);margin:0 0 20px;padding-right:30px}
.faq-h{font-size:1.15rem;margin:38px 0 6px;color:var(--accent-strong)}
[data-theme="light"] .faq-h{color:var(--accent)}

/* ---- forms ---- */
form.contact-form,form.newsletter{display:grid;gap:16px;max-width:560px}
label{font-size:.85rem;color:var(--text-muted);display:block;margin-bottom:6px}
input[type="text"],input[type="email"],textarea,select{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--text);padding:12px 14px;font-family:var(--sans);font-size:.95rem;border-radius:2px}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}
textarea{min-height:130px;resize:vertical}

/* ---- legal ---- */
.legal-text,.legal-text p,.legal-text li{font-size:.9rem;line-height:1.55;color:var(--text-dim)}
.legal-text h2{font-size:1.2rem;margin-top:1.6em}

/* ---- notice ---- */
.notice{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);padding:22px 26px;font-size:.92rem;color:var(--text-muted)}
.notice.warn{border-left-color:var(--accent-strong)}
.notice strong{color:var(--text)}

/* ---- site-wide notice banner (coaching closed) ----
   Large and unmissable, but calm. No solid red fill.
   The banner runs on its own --banner-* tokens rather than the page palette, so
   it sits on a visibly different ground from both the page and the header:
   a warm plum in dark, a warm clay in light. Every pair below is WCAG AA at 4.5
   against --banner-bg. If you retint the banner, recheck all three text colours
   against the new ground before shipping it. ---- */
.site-banner{--banner-head:#E8E0D0;--banner-bg:#3A3050;--banner-accent:#E8878F;--banner-body:#B7BDCA;
  background:var(--banner-bg);color:var(--text);
  border-top:3px solid var(--accent);border-bottom:1px solid var(--line);
  position:relative;z-index:70}
.site-banner .container{padding-top:22px;padding-bottom:22px;display:flex;gap:16px;
  align-items:baseline;justify-content:flex-start;flex-wrap:nowrap;text-align:left}
.site-banner .banner-mark{flex:0 0 auto;font-size:.68rem;letter-spacing:.16em;
  text-transform:uppercase;font-weight:700;color:var(--banner-accent);
  border:1px solid var(--banner-accent);border-radius:999px;padding:5px 11px;
  white-space:nowrap;position:relative;top:-2px}
.site-banner .banner-text{min-width:0}
.site-banner b{display:block;font-family:var(--serif);font-size:1.3rem;font-weight:500;
  color:var(--banner-head);margin-bottom:5px;letter-spacing:.01em;text-transform:none;white-space:normal}
.site-banner span.body{display:block;font-size:.95rem;line-height:1.6;
  color:var(--banner-body);max-width:70ch}
.site-banner a{color:var(--banner-accent);text-decoration:underline;text-underline-offset:2px}
.site-banner a:hover{text-decoration:none}
.site-banner a:focus-visible{outline:2px solid var(--banner-accent);outline-offset:2px}
[data-theme="light"] .site-banner{--banner-head:#17223B;--banner-bg:#EBCBBF;--banner-accent:#9E1B2A;--banner-body:#57523F}
@media(max-width:640px){
  .site-banner .container{gap:10px;padding-top:18px;padding-bottom:18px;
    flex-wrap:wrap;align-items:flex-start}
  .site-banner b{font-size:1.08rem}
  .site-banner span.body{font-size:.88rem}
}

/* ---- closed / unavailable state ---- */
.btn.closed{border-color:var(--line);color:var(--text-muted);background:transparent;
  cursor:not-allowed;opacity:.75}
.btn.closed:hover{background:transparent;color:var(--text-muted);border-color:var(--line)}
.closed-box{background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--accent-strong);padding:26px 28px;border-radius:4px}
.closed-box h3{margin-bottom:8px}
.closed-box .when{display:inline-block;margin-top:6px;font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);
  border-radius:999px;padding:5px 13px}
.card.is-closed{opacity:.72}
.card.is-closed .tag{color:var(--text-muted)}

/* ---- footer ---- */
footer.site-footer{border-top:1px solid var(--line);padding:52px 0 30px;background:var(--bg-alt)}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:36px;margin-bottom:32px}
.footer-grid h4{font-family:var(--sans);font-size:.68rem;text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);margin-bottom:14px}
.footer-brand p{color:var(--text-muted);font-size:.84rem;max-width:44ch}
.footer-sig{font-family:var(--serif);color:var(--text-dim);font-size:.86rem;margin-top:6px}
.footer-grid ul{list-style:none;margin:0;padding:0}
.footer-grid li{margin-bottom:8px}
.footer-grid a{color:var(--text-muted);font-size:.84rem}
.footer-grid a:hover{color:var(--accent)}
.footer-social{display:flex;gap:.6rem;margin-top:14px}
.footer-social a{display:inline-flex;width:40px;height:40px;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:50%;color:var(--text-muted)}
.footer-social a:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);text-decoration:none}
.footer-social a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.footer-social svg{width:19px;height:19px;fill:currentColor}
.footer-bottom{border-top:1px solid var(--line);padding-top:22px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:.73rem;color:var(--text-muted)}
.footer-bottom a{color:var(--text-muted)}

/* ---- responsive ---- */
@media(max-width:860px){
  .grid-3,.grid-2,.tri{grid-template-columns:1fr}
  .book-row{grid-template-columns:150px 1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
  h1{font-size:2.1rem}
  .nav-toggle{display:block;order:3}
  .header-tools{margin-left:auto}
  nav.main-nav{order:4;flex-basis:100%;display:none}
  nav.main-nav.open{display:block}
  nav.main-nav ul{flex-direction:column;gap:0;padding:6px 0 12px}
  nav.main-nav li{border-top:1px solid var(--line)}
  nav.main-nav a{display:block;padding:12px 2px}
  .header-inner{flex-wrap:wrap;height:auto;padding-top:12px;padding-bottom:12px}
  .jumpbar{top:0}
}
@media(max-width:560px){
  .book-row{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
}
