:root{
  --stone:#ECEAE4;      /* limestone ground */
  --stone-2:#E4E1D9;    /* plate */
  --ink:#17171A;        /* graphite */
  --mute:#7D7A73;       /* weathered */
  --hair:#CFCBC1;       /* hairline */
  --blue:#1F35C9;       /* resonance blue: the only colour */
  --serif:'Instrument Serif',Georgia,serif;
  --sans:'Inter Tight',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --pad:clamp(20px,5vw,72px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--stone);color:var(--ink);font:400 15px/1.6 var(--sans);-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(rgba(0,0,0,.035) .6px,transparent .7px);background-size:3px 3px}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.mono{font-family:var(--mono)}
em{font-style:italic}

/* bar */
.bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:18px var(--pad);background:rgba(236,234,228,.86);backdrop-filter:blur(10px);border-bottom:1px solid transparent}
.mark{display:flex;align-items:center;gap:10px;font:500 12px/1 var(--mono);letter-spacing:.32em}
.nav{display:flex;gap:28px;font-size:13px;color:var(--mute)}
.nav a:hover{color:var(--ink)}
.bar-r{display:flex;align-items:center;gap:14px}
.lang{font:500 12px var(--mono);color:var(--mute);padding:6px 4px}
.lang:hover{color:var(--ink)}
.btn-ghost{font-size:13px;padding:9px 16px;border:1px solid var(--ink);border-radius:999px}
.btn-ghost:hover{background:var(--ink);color:var(--stone)}

/* type */
h1{font:400 clamp(52px,7.4vw,112px)/.92 var(--serif);letter-spacing:-.025em}
h1 em{color:var(--blue)}
h2{font:400 clamp(36px,4.2vw,60px)/1 var(--serif);letter-spacing:-.02em}
h3{font:500 15px/1.3 var(--sans);letter-spacing:.01em;margin-bottom:8px}
.eyebrow{display:flex;align-items:center;gap:10px;font:500 11px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mute);margin-bottom:28px}
.dot{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 0 rgba(31,53,201,.5);animation:pulse 2.4s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(31,53,201,0)}100%{box-shadow:0 0 0 0 rgba(31,53,201,0)}}
.demo{border:1px solid var(--hair);padding:3px 7px;border-radius:3px;letter-spacing:.1em;color:var(--ink)}
.lede{font-size:18px;line-height:1.55;max-width:30ch;margin:28px 0 36px}
.small{font-size:12.5px;color:var(--mute);max-width:44ch}
.meta{font:400 11.5px/1.5 var(--mono);color:var(--mute);margin-top:14px;letter-spacing:.02em}
.num{font:500 11px var(--mono);letter-spacing:.2em;color:var(--blue);margin-bottom:18px}
.fine{font-size:12px;color:var(--mute);margin-top:44px;max-width:70ch}

.btn{display:inline-flex;align-items:center;gap:10px;background:var(--ink);color:var(--stone);padding:14px 22px;border-radius:999px;font-size:14px;font-weight:500;transition:background .3s}
.btn:hover{background:var(--blue)}
.link{font-size:14px;border-bottom:1px solid var(--ink);padding-bottom:2px}
.cta-row{display:flex;align-items:center;gap:26px;margin-bottom:22px;flex-wrap:wrap}

/* hero */
.hero{display:grid;grid-template-columns:minmax(300px,5fr) 7fr;grid-template-rows:auto auto;gap:40px clamp(30px,6vw,96px);
  padding:clamp(40px,7vw,100px) var(--pad) 40px;align-items:center}
.plate-wrap{grid-row:1/3;grid-column:2;display:flex;flex-direction:column;align-items:center;gap:22px}
.plate{position:relative;width:min(100%,680px);aspect-ratio:1;background:linear-gradient(145deg,#E9E6DF,#DEDAD1);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 40px 80px -40px rgba(30,28,24,.35),0 2px 6px rgba(30,28,24,.08)}
.plate::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px;border-radius:50%;background:#C9C5BB;box-shadow:0 1px 0 rgba(255,255,255,.6)}
#sand{position:absolute;inset:0;width:100%;height:100%}
.plate-caption{position:absolute;left:0;right:0;bottom:-1px;transform:translateY(100%);display:flex;justify-content:space-between;align-items:baseline;
  padding-top:14px;opacity:0;transition:opacity 1.2s}
body[data-phase=strike] .plate-caption{opacity:1}
.cap-name{font:400 30px/1 var(--serif);letter-spacing:.06em}
.cap-ca{font:400 11.5px var(--mono);color:var(--mute)}
.cap-ca b{color:var(--blue);font-weight:500}
.phases{display:flex;gap:4px;margin-top:46px;border:1px solid var(--hair);border-radius:999px;padding:4px}
.phases button{display:flex;gap:8px;align-items:baseline;padding:8px 16px;border-radius:999px;font-size:13px;color:var(--mute);transition:all .3s}
.phases button b{font:400 14px var(--serif);font-style:italic}
.phases button.on{background:var(--ink);color:var(--stone)}
.ledger{grid-column:1;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--hair);align-self:end}
.ledger div{padding:14px 0;border-bottom:1px solid var(--hair)}
.ledger div:nth-child(odd):not(.wide){padding-right:16px}
.ledger .wide{grid-column:1/3}
dt{font:500 10.5px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-bottom:6px}
dd{font:400 26px/1 var(--serif);display:flex;gap:8px;align-items:baseline}
dd small{font:400 11px var(--mono);color:var(--mute)}
dd.mono{font:400 12px var(--mono);color:var(--ink)}

/* sections */
section{padding:clamp(80px,11vw,160px) var(--pad);border-top:1px solid var(--hair)}
.hero{border-top:0}
.sec-h{display:grid;grid-template-columns:5fr 7fr;gap:0 clamp(30px,6vw,96px);margin-bottom:clamp(48px,6vw,88px);align-items:end}
.sec-h .num{grid-column:1/3}
.sec-lede{font-size:17px;max-width:46ch;color:#3b3a37}
.steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.steps li{padding:0 clamp(18px,2.6vw,40px) 0 0;border-left:1px solid var(--hair);padding-left:clamp(18px,2.6vw,40px)}
.steps li:first-child{border-left:0;padding-left:0}
.roman{display:block;font:italic 400 64px/1 var(--serif);color:var(--blue);margin-bottom:28px}
.steps h3{font:400 30px/1 var(--serif);margin-bottom:14px}
.steps p{max-width:36ch}

.q-grid{display:grid;grid-template-columns:1.2fr 1fr .8fr;gap:clamp(24px,3vw,48px)}
.q{border-top:1px solid var(--ink);padding-top:20px}
.q-k{font:500 10.5px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mute)}
.q-t{font:400 24px/1.15 var(--serif);margin:12px 0 26px;min-height:2.3em}
.chips{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:0}
.chips li{font:400 12.5px var(--mono);letter-spacing:.14em;padding:11px 0;border-bottom:1px solid var(--hair);display:flex;justify-content:space-between}
.chips li i{font-style:normal;color:var(--mute);font-size:10px}
.figs{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.figs li{aspect-ratio:1;background:var(--stone-2);position:relative}
.figs canvas{width:100%;height:100%;display:block}
.figs li span{position:absolute;left:5px;top:4px;font:400 9px var(--mono);color:var(--mute)}
.hours{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.hours li{font:400 22px/1 var(--serif);padding:14px 0;border-bottom:1px solid var(--hair);text-align:left}
.hours li small{display:block;font:400 9.5px var(--mono);color:var(--mute);margin-top:4px}

.w-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,48px)}
.w{border-top:1px solid var(--ink);padding-top:22px}
.w-big{font:400 clamp(34px,3.6vw,52px)/1 var(--serif);margin-bottom:26px;letter-spacing:-.01em}
.w-big span{color:var(--blue)}
.w p{max-width:38ch}

.tuning{display:grid;grid-template-columns:7fr 5fr;gap:clamp(30px,6vw,96px);align-items:center}
.tuning h2{margin-bottom:28px}
.tuning p{font-size:17px;max-width:42ch;margin-bottom:12px}
.dial{color:var(--ink);max-width:340px;width:100%;justify-self:center}
#hand{transform-origin:100px 100px;transition:transform 2.4s cubic-bezier(.6,0,.2,1)}

.prompt{display:flex;gap:24px;align-items:flex-start;border:1px solid var(--ink);padding:clamp(22px,3vw,40px);background:rgba(255,255,255,.25)}
.prompt p{font:400 clamp(20px,2.2vw,30px)/1.35 var(--serif);flex:1}
.agent .small{margin-top:18px}

.trust ul{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,40px)}
.trust li{font-size:14px;color:#3b3a37}
.trust b{display:block;font:400 26px/1.1 var(--serif);color:var(--ink);margin-bottom:10px}

.foot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:28px var(--pad);border-top:1px solid var(--hair);
  font:400 11px var(--mono);letter-spacing:.06em;color:var(--mute)}
.foot span:first-child{letter-spacing:.32em;color:var(--ink)}


/* reveal on scroll */
.rv{opacity:0;transform:translateY(14px);transition:opacity 1s,transform 1s}
.rv.in{opacity:1;transform:none}

@media (max-width:980px){
  .nav{display:none}
  .hero{grid-template-columns:1fr;gap:28px}
  .plate-wrap{grid-row:auto;grid-column:1}
  .ledger{grid-column:1}
  .sec-h{grid-template-columns:1fr;gap:18px}
  .steps,.w-grid,.q-grid{grid-template-columns:1fr;gap:48px}
  .steps li{border-left:0;padding-left:0;border-top:1px solid var(--hair);padding-top:28px}
  .steps li:first-child{border-top:0;padding-top:0}
  .tuning{grid-template-columns:1fr}
  .trust ul{grid-template-columns:1fr 1fr}
  .prompt{flex-direction:column}
}
@media (max-width:560px){
  .btn-ghost{display:none}
  .lede{font-size:16.5px}
  .trust ul{grid-template-columns:1fr}
  .cap-name{font-size:24px}
  .phases button{padding:8px 12px}
}
body.static *,body.static *::after{transition:none!important;animation:none!important}
.chips{column-gap:28px}
.chips li{justify-content:flex-start;gap:14px}
@media (max-width:980px){.sec-h .num{grid-column:1}}
@media (max-width:560px){.plate-caption{flex-direction:column;gap:8px;align-items:flex-start}.cap-ca{font-size:9.5px}.phases{margin-top:70px}}

/* ───────────── app additions ───────────── */
.badge{font:500 10.5px var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:5px 9px;border:1px solid var(--blue);color:var(--blue);border-radius:3px;white-space:nowrap}
.badge.off{border-color:var(--hair);color:var(--mute)}
.nav a.on{color:var(--ink)}
.nav a.on::after{content:"";display:block;height:1px;background:var(--ink);margin-top:3px}
.conn{font-size:13px;padding:9px 16px;border:1px solid var(--ink);border-radius:999px;white-space:nowrap}
.conn:hover{background:var(--ink);color:var(--stone)}
.conn.on{border-color:var(--hair);font-family:var(--mono);font-size:12px}
.wmenu{position:absolute;right:var(--pad);top:64px;background:var(--stone);border:1px solid var(--ink);padding:8px;min-width:240px;z-index:20;box-shadow:0 20px 40px -20px rgba(0,0,0,.3)}
.wmenu button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 12px;font-size:14px}
.wmenu button:hover{background:var(--stone-2)}
.wmenu img{width:20px;height:20px}
.wmenu p{font-size:12px;color:var(--mute);padding:10px 12px;max-width:30ch}
.phases.status button{cursor:default}
.phases.status button.done{color:var(--ink)}
.live{display:inline-flex;align-items:center;gap:8px}
.err{color:#9b2c1f}
.page{min-height:70vh}
.page-h{padding:clamp(56px,8vw,120px) var(--pad) 0}
.page-h h1{font-size:clamp(48px,6.4vw,96px)}
.page-h .lede{max-width:46ch}
.panel{border-top:1px solid var(--ink);padding-top:22px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,48px)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:0;font-size:14px}
.kv dt{padding-right:24px!important}
.kv dt{padding:12px 0;border-bottom:1px solid var(--hair);margin:0}
.kv dd{font:400 13px/1.4 var(--mono);padding:12px 0;border-bottom:1px solid var(--hair);display:block;text-align:right;word-break:break-all}
.kv dd a{border-bottom:1px solid var(--hair)}
.kv dd a:hover{color:var(--blue);border-color:var(--blue)}
.tally{list-style:none}
.tally li{display:grid;grid-template-columns:22px 1fr 44px;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--hair);font:400 12.5px var(--mono);letter-spacing:.08em}
.tally li i{font-style:normal;color:var(--mute);font-size:10px}
.tally .lab{display:flex;flex-direction:column;gap:6px;min-width:0}
.tally .lab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tally .meter{height:2px;background:var(--hair);position:relative}
.tally .meter b{position:absolute;left:0;top:0;bottom:0;background:var(--ink);transition:width 1s}
.tally li.win{color:var(--blue)}
.tally li.win .meter b{background:var(--blue)}
.tally li em{font-style:normal;text-align:right;color:var(--mute)}
.tally li.win em{color:var(--blue)}
.sealed-note{font:400 12px var(--mono);color:var(--mute);margin-top:14px}
.qfig{display:inline-block;width:22px;height:22px;vertical-align:middle;background:var(--stone-2)}
.coin{display:grid;grid-template-columns:5fr 7fr;gap:clamp(30px,6vw,96px);align-items:start}
.coin-name{font:400 clamp(56px,7vw,104px)/.9 var(--serif);letter-spacing:.02em}
.coin-ca{font:400 13px var(--mono);margin-top:18px;word-break:break-all}
.coin-ca b{color:var(--blue);font-weight:500}
.form{display:flex;flex-direction:column;gap:12px}
.form label{font:500 10.5px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.form input,.form select,.form textarea{font:400 13px var(--mono);background:rgba(255,255,255,.35);border:1px solid var(--hair);padding:11px 12px;color:var(--ink);border-radius:0;width:100%}
.form textarea{min-height:120px;resize:vertical}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--ink)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.btn[disabled],.btn-line[disabled]{opacity:.35;cursor:not-allowed;background:var(--ink)}
.btn-line{font-size:13px;padding:10px 16px;border:1px solid var(--ink);border-radius:999px;background:transparent}
.btn-line:hover:not([disabled]){background:var(--ink);color:var(--stone)}
.btn-line[disabled]{background:transparent}
.msg{font:400 12px/1.5 var(--mono);color:var(--mute);min-height:1.5em;word-break:break-all}
.msg.ok{color:var(--blue)}
.msg.bad{color:#9b2c1f}
.note-card{border:1px solid var(--hair);padding:16px;display:flex;flex-direction:column;gap:10px;font:400 12px/1.5 var(--mono)}
.note-card code{word-break:break-all;color:var(--ink)}
.notes{display:flex;flex-direction:column;gap:12px}
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:clamp(24px,3vw,48px)}
.room-card{display:flex;flex-direction:column;gap:14px}
.room-card .fig{aspect-ratio:1;background:linear-gradient(145deg,#E9E6DF,#DEDAD1);box-shadow:0 30px 60px -36px rgba(30,28,24,.35);position:relative}
.room-card canvas{position:absolute;inset:0;width:100%;height:100%}
.room-card .no{font:500 10.5px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mute)}
.room-card .nm{font:400 40px/1 var(--serif);letter-spacing:.04em}
.room-card .nm.silent{color:var(--mute);font-style:italic}
.room-card .ca{font:400 11.5px var(--mono);color:var(--mute);word-break:break-all}
.room-card .ca b{color:var(--blue);font-weight:500}
.table{width:100%;border-collapse:collapse;font:400 12.5px var(--mono)}
.table th{font:500 10.5px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);text-align:left;padding:10px 8px 10px 0;border-bottom:1px solid var(--ink)}
.table td{padding:12px 8px 12px 0;border-bottom:1px solid var(--hair)}
.table td.b{color:var(--blue)}
.rules{list-style:none;counter-reset:r}
.rules li{counter-increment:r;display:grid;grid-template-columns:48px 1fr;padding:18px 0;border-bottom:1px solid var(--hair);font-size:15px;max-width:80ch}
.rules li::before{content:counter(r,upper-roman);font:italic 400 22px/1 var(--serif);color:var(--blue)}
.rules b{font-weight:500}
.skill{font:400 12.5px/1.65 var(--mono);white-space:pre-wrap;border:1px solid var(--hair);padding:24px;background:rgba(255,255,255,.25);max-height:560px;overflow:auto}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--stone);padding:12px 18px;font:400 12px var(--mono);z-index:30;opacity:0;transition:opacity .3s;pointer-events:none;max-width:90vw}
.toast.on{opacity:1}
.foot a{border-bottom:1px solid var(--hair)}
.foot select{font:inherit;background:transparent;border:1px solid var(--hair);color:var(--ink);padding:2px 4px}
.notice{border:1px solid var(--blue);color:var(--blue);padding:14px 18px;font:400 12.5px/1.5 var(--mono);margin:0 var(--pad) 0}
.skel{color:var(--mute)}
@media (max-width:980px){
  .grid2,.grid3,.coin{grid-template-columns:1fr}
  .bar{gap:12px}
  .table{font-size:11px}
  .table .hide-m{display:none}
}
@media (max-width:560px){
  .conn{padding:8px 12px;font-size:12px}
  .badge{padding:4px 6px;font-size:9.5px;letter-spacing:.1em}
  .mark span{display:none}
  .kv{grid-template-columns:1fr}
  .kv dd{text-align:left;border-bottom:1px solid var(--hair);padding-top:0}
  .kv dt{border-bottom:0;padding-bottom:4px}
}
.mnav{display:none}
@media (max-width:980px){
  .mnav{display:flex;gap:18px;overflow-x:auto;padding:12px var(--pad);border-bottom:1px solid var(--hair);font-size:13px;color:var(--mute);white-space:nowrap;position:sticky;top:62px;z-index:9;background:rgba(236,234,228,.92)}
  .mnav a.on{color:var(--ink)}
}
