/* ==========================================================================
   Steward public website
   Visual system extracted from steward-visual-direction.html
   Night base. Bronze is structure. Volt is the spark. Spectral speaks.
   ========================================================================== */

:root{
  /* Palette */
  --bg:#0a0e14; --bg2:#11161f; --bg3:#171e29; --bg4:#1f2937;
  --line:#26303d; --line2:#36475a;
  --text:#ece7da; --muted:#93a0b0; --faint:#65727f;
  --bronze:#c8893f; --bronze-lo:#7c5325; --bronze-hi:#f0bd72;
  --volt:#3fd0ff; --volt-hi:#8fe9ff; --volt-lo:#16668f;
  --danger:#ef5f55; --good:#5fae6b; --warn:#e0b24a;

  /* Class colors: reserved for class data only. Not used on marketing pages. */
  --c-barbarian:#E86B45; --c-bard:#C081C5; --c-cleric:#AEBAC9; --c-druid:#A3B257;
  --c-fighter:#BC8559; --c-monk:#5FB7D6; --c-paladin:#DCC36A; --c-ranger:#74AE89;
  --c-rogue:#9AA0A0; --c-sorcerer:#CC4A44; --c-warlock:#A267C7; --c-wizard:#5E82CE;

  /* Type */
  --ui:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --serif:"Spectral",Georgia,serif;

  /* Rhythm */
  --rs:14px;
  --line-c:1px solid var(--line);
  --line-s:1px solid var(--line2);
  --wrap:1080px;
  --wrap-narrow:720px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0;padding:0}

body{
  background:
    radial-gradient(120% 70% at 50% -10%, rgba(63,208,255,.06), transparent 60%),
    radial-gradient(90% 50% at 50% 105%, rgba(200,137,63,.05), transparent 60%),
    var(--bg);
  color:var(--text);
  font-family:var(--ui);
  font-size:16px;
  line-height:1.6;
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}

main{flex:1}

img,video{max-width:100%;height:auto;display:block}

a{color:var(--volt);text-decoration:none}
a:hover{color:var(--volt-hi)}
a:focus-visible,button:focus-visible{outline:2px solid var(--volt);outline-offset:3px;border-radius:2px}

::selection{background:rgba(63,208,255,.25)}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none !important;transition:none !important}
}

/* --------------------------------------------------------------------------
   Layout
   -------------------------------------------------------------------------- */

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}
.wrap-narrow{max-width:var(--wrap-narrow);margin:0 auto;padding:0 20px}

section{padding:56px 0 40px;border-top:var(--line-c)}
section.no-rule{border-top:none}

@media (min-width:760px){
  section{padding:80px 0 56px}
}

/* --------------------------------------------------------------------------
   Type
   -------------------------------------------------------------------------- */

h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.15;margin:0 0 16px;letter-spacing:-.01em}
h1{font-size:clamp(2.1rem, 6vw, 3.4rem)}
h2{font-size:clamp(1.5rem, 4vw, 2.1rem)}
h3{font-size:1.15rem;line-height:1.3}
p{margin:0 0 16px}
.lead{font-size:1.12rem;color:var(--muted);max-width:56ch}
.muted{color:var(--muted)}
.faint{color:var(--faint)}
.num{font-family:var(--serif);font-variant-numeric:tabular-nums}
strong{color:var(--text)}

.eyebrow{
  display:flex;align-items:center;gap:10px;
  font-family:var(--ui);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--bronze);margin:0 0 14px;font-weight:600;
}
.eyebrow::before{content:"";width:18px;height:1px;background:linear-gradient(90deg,var(--bronze),transparent)}
.eyebrow::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(200,137,63,.4),transparent)}

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

.site-header{
  position:sticky;top:0;z-index:50;
  background:rgba(10,14,20,.82);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border-bottom:var(--line-c);
}
.site-header .bar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:12px 20px;max-width:var(--wrap);margin:0 auto;
}

.mark{
  display:flex;align-items:center;gap:10px;
  font-family:var(--ui);font-size:12px;letter-spacing:.38em;text-transform:uppercase;
  color:var(--bronze);font-weight:600;
}
.mark:hover{color:var(--bronze-hi)}
.mark .clasp{
  width:16px;height:16px;border:1.5px solid var(--bronze);border-radius:50%;
  position:relative;flex:none;
}
.mark .clasp::after{
  content:"";position:absolute;inset:4px;
  border-radius:50%;background:var(--volt);opacity:.85;
}

.site-nav{display:flex;align-items:center;gap:6px}
.site-nav a{
  font-size:13px;color:var(--muted);padding:8px 10px;border-radius:6px;
}
.site-nav a:hover{color:var(--text)}
.site-nav a[aria-current="page"]{color:var(--bronze-hi)}

.nav-toggle{
  display:none;background:none;border:var(--line-c);color:var(--muted);
  font-family:var(--ui);font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  padding:8px 12px;border-radius:6px;cursor:pointer;
}
.nav-toggle:hover{color:var(--text);border:var(--line-s)}

@media (max-width:820px){
  .nav-toggle{display:inline-block}
  .site-nav{
    display:none;position:absolute;top:100%;left:0;right:0;
    flex-direction:column;align-items:stretch;gap:0;
    background:var(--bg2);border-bottom:var(--line-c);
    padding:8px 12px 14px;
  }
  .site-nav.open{display:flex}
  .site-nav a{padding:12px 10px;border-bottom:1px solid rgba(38,48,61,.5);font-size:15px}
  .site-nav a:last-child{border-bottom:none}
}

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--serif);font-size:1.05rem;font-weight:600;
  padding:13px 26px;border-radius:10px;cursor:pointer;text-align:center;
  border:1px solid transparent;
  transition:background .15s ease,color .15s ease,border-color .15s ease,transform .15s ease,box-shadow .25s ease;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn-primary{
  background:var(--volt);color:#04121c;border-color:var(--volt);
}
.btn-primary:hover{background:var(--volt-hi);border-color:var(--volt-hi);color:#04121c;box-shadow:0 4px 20px rgba(63,208,255,.25)}
.btn-secondary{
  background:transparent;color:var(--text);border:var(--line-s);
}
.btn-secondary:hover{border-color:var(--bronze);color:var(--bronze-hi)}
.btn-bronze{
  background:transparent;color:var(--bronze);border:1px solid var(--bronze-lo);
}
.btn-bronze:hover{color:var(--bronze-hi);border-color:var(--bronze)}
.btn-block{width:100%}

.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 8px}

/* --------------------------------------------------------------------------
   Cards and ledger surfaces
   -------------------------------------------------------------------------- */

.card{
  background:var(--bg3);border:var(--line-c);border-radius:12px;
  padding:22px 20px;
}
.card h3{color:var(--text);margin-bottom:8px}
.card p{color:var(--muted);font-size:.95rem;margin-bottom:0}
.card .card-eyebrow{
  font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--bronze);font-weight:600;margin-bottom:10px;display:block;
}

.grid{display:grid;gap:14px}
@media (min-width:640px){.grid-2{grid-template-columns:1fr 1fr}}
@media (min-width:900px){
  .grid-3{grid-template-columns:repeat(3,1fr)}
  .grid-5{grid-template-columns:repeat(5,1fr)}
}
@media (min-width:640px) and (max-width:899px){
  .grid-3,.grid-5{grid-template-columns:1fr 1fr}
}

/* Ledger: bookkeeping-style rows with Spectral tabular figures */
.ledger{
  background:var(--bg2);border:var(--line-c);border-radius:12px;
  padding:6px 18px;
}
.ledger-row{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding:12px 0;border-bottom:1px dotted var(--line);
}
.ledger-row:last-child{border-bottom:none}
.ledger-row .k{font-size:.9rem;color:var(--muted)}
.ledger-row .v{font-family:var(--serif);font-weight:600;color:var(--text);white-space:nowrap}
.ledger-row .v.bronze{color:var(--bronze-hi)}

/* Steward voice: the steward speaks sparingly */
.steward-voice{
  display:flex;gap:14px;align-items:flex-start;
  background:var(--bg2);border:var(--line-c);border-left:2px solid var(--bronze);
  border-radius:0 12px 12px 0;padding:18px 20px;margin:28px 0;
}
.steward-voice .sigil{
  flex:none;width:34px;height:34px;border:1.5px solid var(--bronze);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:700;color:var(--bronze);font-size:1.05rem;
}
.steward-voice p{
  font-family:var(--serif);font-size:1.02rem;color:var(--text);margin:0;font-style:italic;
}
.steward-voice p .opener{color:var(--bronze);font-style:normal;font-weight:600}

/* Status chips */
.chip{
  display:inline-block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;padding:4px 10px;border-radius:999px;border:1px solid;
}
.chip-progress{color:var(--volt);border-color:var(--volt-lo);background:rgba(63,208,255,.07)}
.chip-planned{color:var(--bronze-hi);border-color:var(--bronze-lo);background:rgba(200,137,63,.07)}
.chip-exploring{color:var(--muted);border-color:var(--line2);background:rgba(147,160,176,.06)}
.chip-notplanned{color:var(--faint);border-color:var(--line);background:transparent}
.chip-done{color:var(--good);border-color:rgba(95,174,107,.4);background:rgba(95,174,107,.07)}

/* Lists */
.checklist{list-style:none;padding:0;margin:0 0 16px}
.checklist li{
  padding:10px 0 10px 26px;position:relative;color:var(--muted);
  border-bottom:1px dotted var(--line);
}
.checklist li:last-child{border-bottom:none}
.checklist li::before{
  content:"·";position:absolute;left:8px;color:var(--bronze);
  font-family:var(--serif);font-weight:700;font-size:1.3rem;line-height:1.1;
}
.checklist.not li::before{content:"✕";font-size:.75rem;color:var(--danger);top:13px}

ol.steps{padding-left:0;margin:0 0 16px;list-style:none;counter-reset:step}
ol.steps li{
  counter-increment:step;position:relative;padding:12px 0 12px 44px;
  border-bottom:1px dotted var(--line);color:var(--muted);
}
ol.steps li:last-child{border-bottom:none}
ol.steps li::before{
  content:counter(step);position:absolute;left:0;top:10px;
  width:28px;height:28px;border:1px solid var(--bronze-lo);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:600;color:var(--bronze);font-size:.9rem;
}
ol.steps li strong{color:var(--text)}

/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */

.hero{padding:64px 0 48px;border-top:none}
.hero-grid{display:grid;gap:36px;align-items:center}
@media (min-width:900px){
  .hero{padding:88px 0 72px}
  .hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
}
.hero h1{margin-bottom:20px}
.hero h1 .line2{color:var(--bronze-hi)}
.trust-line{
  font-size:12px;color:var(--faint);letter-spacing:.04em;margin-top:18px;
}

/* --------------------------------------------------------------------------
   Asset placeholders: real visual blocks, self-documenting
   -------------------------------------------------------------------------- */

.ph{
  position:relative;width:100%;
  border:1.5px dashed var(--line2);border-radius:12px;
  background:
    repeating-linear-gradient(45deg, rgba(38,48,61,.25) 0 12px, transparent 12px 24px),
    var(--bg2);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;color:var(--muted);
}
.ph::before{
  content:"";position:absolute;inset:10px;
  border:1px dotted var(--line);border-radius:8px;pointer-events:none;
}
.ph .ph-meta{
  text-align:center;padding:20px;max-width:90%;
}
.ph .ph-name{
  font-family:var(--serif);font-weight:600;color:var(--bronze-hi);
  font-size:.95rem;display:block;margin-bottom:6px;word-break:break-all;
}
.ph .ph-spec{
  font-size:11px;letter-spacing:.06em;color:var(--muted);
  display:block;line-height:1.7;
}
.ph .ph-spec .num{color:var(--text)}

/* Aspect ratios */
.ph-1x1{aspect-ratio:1/1}
.ph-4x5{aspect-ratio:4/5}
.ph-1x2{aspect-ratio:1/2;max-width:320px}
.ph-16x9{aspect-ratio:16/9}
.ph-4x3{aspect-ratio:4/3}
.ph-3x2{aspect-ratio:3/2}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.site-footer{
  border-top:var(--line-c);margin-top:64px;
  background:rgba(0,0,0,.25);
}
.site-footer .cols{
  max-width:var(--wrap);margin:0 auto;padding:40px 20px 24px;
  display:grid;gap:28px;
}
@media (min-width:760px){
  .site-footer .cols{grid-template-columns:1.4fr 1fr 1fr}
}
.site-footer h4{
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--bronze);margin:0 0 12px;font-weight:600;
}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li{margin-bottom:8px}
.site-footer a{color:var(--muted);font-size:.9rem}
.site-footer a:hover{color:var(--text)}
.site-footer .disclaimer{
  border-top:var(--line-c);
  text-align:center;font-size:12px;color:var(--faint);
  padding:18px 20px;line-height:1.7;
}
.site-footer .foot-mark{margin-bottom:14px}
.site-footer .foot-desc{font-size:.9rem;color:var(--muted);max-width:38ch}

/* --------------------------------------------------------------------------
   Page helpers
   -------------------------------------------------------------------------- */

.page-head{padding:56px 0 8px;border-top:none}
@media (min-width:760px){.page-head{padding:72px 0 8px}}

.notice{
  display:flex;gap:12px;align-items:flex-start;
  background:rgba(224,178,74,.06);border:1px solid rgba(224,178,74,.35);
  border-radius:10px;padding:14px 16px;margin:20px 0;
  font-size:.92rem;color:var(--text);
}
.notice::before{content:"!";flex:none;width:22px;height:22px;border-radius:50%;
  border:1.5px solid var(--warn);color:var(--warn);display:flex;align-items:center;
  justify-content:center;font-family:var(--serif);font-weight:700;font-size:.85rem}
.notice p{margin:0;color:var(--muted)}
.notice strong{color:var(--warn)}

.divider-ink{
  height:1px;border:none;margin:32px 0;
  background:linear-gradient(90deg, transparent, var(--bronze-lo), transparent);
}

/* --------------------------------------------------------------------------
   Signup form (newsletter, Buttondown embed)
   -------------------------------------------------------------------------- */

.signup-form{margin-top:24px}
.signup-row{display:flex;flex-wrap:wrap;gap:12px}
.signup-row input[type="email"]{
  flex:1;min-width:220px;
  background:var(--bg2);border:var(--line-s);border-radius:10px;
  padding:13px 16px;color:var(--text);
  font-family:var(--ui);font-size:1rem;
}
.signup-row input[type="email"]::placeholder{color:var(--faint)}
.signup-row input[type="email"]:focus-visible{
  outline:2px solid var(--volt);outline-offset:2px;border-color:var(--volt-lo);
}
.signup-check{
  display:flex;gap:10px;align-items:flex-start;margin-top:16px;
  font-size:.92rem;color:var(--muted);cursor:pointer;
}
.signup-check input{accent-color:var(--volt);margin-top:4px;flex:none}
.signup-fineprint{font-size:12px;color:var(--faint);margin-top:12px;line-height:1.7}

.visually-hidden{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

.kbd{
  font-family:var(--ui);font-size:.85em;background:var(--bg4);
  border:var(--line-c);border-bottom-width:2px;border-radius:5px;padding:1px 7px;
  color:var(--text);white-space:nowrap;
}

/* Changelog */
.release{margin-bottom:44px}
.release-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.release-head h2{margin:0}
.release-head .version{font-family:var(--serif);color:var(--bronze-hi)}
.release h3{
  font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--bronze);margin:24px 0 4px;font-family:var(--ui);font-weight:600;
}

/* Roadmap */
.roadmap-block{margin-bottom:40px}
.roadmap-block .block-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.roadmap-block .block-head h2{margin:0}

/* 404 */
.error-page{min-height:60vh;display:flex;align-items:center;text-align:center}
.error-page .wrap-narrow{width:100%}
.error-code{
  font-family:var(--serif);font-size:clamp(4rem,15vw,7rem);font-weight:700;
  color:var(--bronze-lo);line-height:1;margin-bottom:8px;
}

/* Skip link */
.skip-link{
  position:absolute;left:-9999px;top:0;background:var(--volt);color:#04121c;
  padding:10px 16px;border-radius:0 0 8px 0;z-index:100;font-weight:600;
}
.skip-link:focus{left:0}

/* --------------------------------------------------------------------------
   Motion. Ink settling, ledger lines being ruled. Transform and opacity only.
   The .reveal classes are applied by JS as progressive enhancement: without
   JS, and under prefers-reduced-motion, nothing on the page is ever hidden.
   -------------------------------------------------------------------------- */

@keyframes rise-in{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:none}
}
@keyframes draw-x{
  from{transform:scaleX(0)}
  to{transform:scaleX(1)}
}
@keyframes nav-drop{
  from{opacity:0;transform:translateY(-6px)}
}
@keyframes clasp-pulse{
  0%,100%{opacity:.85}
  50%{opacity:.5}
}
@keyframes ink-in{
  from{opacity:0;filter:blur(6px)}
  to{opacity:1;filter:none}
}

/* Entrance on load: hero (landing) and page heads (inner pages) */
.hero .eyebrow{animation:rise-in .55s ease both .05s}
.hero h1{animation:rise-in .6s ease both .14s}
.hero .lead{animation:rise-in .6s ease both .22s}
.hero .cta-row{animation:rise-in .6s ease both .3s}
.hero .trust-line{animation:rise-in .6s ease both .38s}
.hero-grid > div:last-child{animation:rise-in .7s ease both .28s}

.page-head .wrap-narrow > *{animation:rise-in .55s ease both}
.page-head .wrap-narrow > :nth-child(2){animation-delay:.09s}
.page-head .wrap-narrow > :nth-child(3){animation-delay:.18s}
.page-head .wrap-narrow > :nth-child(n+4){animation-delay:.27s}

/* Eyebrow rules draw left to right, like a pen stroke ruling the ledger */
.eyebrow::before,.eyebrow::after{transform-origin:left}
.hero .eyebrow::after,.page-head .eyebrow::after{animation:draw-x .9s ease both .35s}
.eyebrow.reveal.in::after{animation:draw-x .9s ease both .15s}

/* Scroll reveal (classes only ever added by JS) */
.reveal{
  opacity:0;transform:translateY(12px);
  transition:opacity .55s ease,transform .55s cubic-bezier(.22,.61,.36,1);
}
.reveal.in{opacity:1;transform:none}

hr.divider-ink.reveal{
  transform:scaleX(.15);transform-origin:left;
  transition:opacity .5s ease,transform .9s ease;
}
hr.divider-ink.reveal.in{transform:scaleX(1)}

/* Header separates from the page once scrolled */
.site-header{transition:background .3s ease,box-shadow .3s ease}
.site-header.scrolled{background:rgba(10,14,20,.94);box-shadow:0 10px 30px rgba(0,0,0,.35)}

/* Mobile nav slides down instead of popping */
.site-nav.open{animation:nav-drop .22s ease}

/* The clasp breathes, slow as a candle */
.mark .clasp::after{animation:clasp-pulse 4.5s ease-in-out infinite}

/* 404 numeral soaks in like ink */
.error-code{animation:ink-in .9s ease both}
