:root{
  --ink:#16202b; --ink2:#3a4654; --paper:#f6f3e8; --grid:#e1dbc6; --grid2:#cfc7ab;
  --panel:#fffdf7; --accent:#0d4f8b; --accent-ink:#ffffff; --line:#cfc8b3; --focus:#c2410c;
  --arc:#be123c; --gold:#1d4ed8; --seed:#a16207; --arm2:#0f766e;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color:var(--ink); background:var(--paper);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{line-height:1.45;overflow-x:hidden}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.5rem .8rem;z-index:10}
.skip:focus{left:.5rem;top:.5rem}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}

.top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem 1rem;border-bottom:2px solid var(--ink);background:var(--panel)}
.title{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;min-width:0}
.fig{font-family:"Courier New",Courier,monospace;font-weight:700;letter-spacing:.08em;background:var(--ink);color:#fff;padding:.1rem .45rem;border-radius:3px}
h1{font-family:"Courier New",Courier,monospace;text-transform:uppercase;letter-spacing:.12em;font-size:1.35rem;margin:0}
.sub{color:var(--ink2);font-size:.95rem}
.toggles{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.rm{font-size:.9rem;display:flex;gap:.35rem;align-items:center;cursor:pointer}
.rm input{width:1.1rem;height:1.1rem;accent-color:var(--accent)}

.layout{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-template-rows:minmax(0,1fr) 108px auto auto;
  grid-template-areas:"stage panel" "strip panel" "ctrl panel" "stats panel";height:calc(100vh - 50px);min-height:640px}
.stage{grid-area:stage;position:relative;overflow:hidden;min-height:260px;
  background-color:var(--paper);
  background-image:
    linear-gradient(var(--grid2) 1px,transparent 1px),linear-gradient(90deg,var(--grid2) 1px,transparent 1px),
    linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:100px 100px,100px 100px,20px 20px,20px 20px}
#scene{display:block;width:100%;height:100%}
.hint{position:absolute;right:.6rem;top:.4rem;margin:0;font-size:.8rem;color:var(--ink2);background:rgba(255,253,247,.85);padding:.15rem .45rem;border-radius:4px}
.legend{position:absolute;left:.5rem;top:.4rem;max-width:calc(100% - 1rem);margin:0;padding:.3rem .5rem;list-style:none;background:rgba(255,253,247,.9);border:1px solid var(--line);border-radius:6px;font-size:.78rem;display:grid;grid-template-columns:auto auto;gap:.1rem .8rem;pointer-events:none}
.legend{grid-template-columns:auto}
.legend li{display:flex;align-items:center;gap:.35rem;white-space:nowrap}
.chip{display:inline-block;width:1rem;height:.7rem;border-radius:2px;flex:none;border:1px solid var(--ink2)}
.c-sq{background:#fde68a}.c-arc{background:var(--arc);border-color:var(--arc);height:.25rem}
.c-gold{background:repeating-linear-gradient(90deg,var(--gold) 0 5px,transparent 5px 8px);border:0;height:.2rem}
.c-seed{background:var(--seed);border-radius:50%;width:.7rem}.c-arm{background:var(--arc);border-color:var(--arc);border-radius:50%;width:.7rem}
.c-arm2{background:linear-gradient(90deg,var(--arm2) 50%,#d6c7a1 50%);border-radius:50%;width:.7rem}
.legend.one{grid-template-columns:auto}

.strip{grid-area:strip;border-top:2px solid var(--ink);background:var(--panel);min-width:0}
#strip{display:block;width:100%;height:100%}

.ctrl{grid-area:ctrl;border-top:1px solid var(--line);background:var(--panel);padding:.35rem .7rem .45rem;min-width:0}
.ctrl .row{display:flex;flex-wrap:wrap;gap:.3rem 1rem;align-items:center;margin:.15rem 0}
.slider{display:flex;flex-direction:column;font-size:.85rem;font-weight:600;flex:1 1 170px;min-width:0}
.slider .lt{white-space:nowrap}
.slider.grow{flex:3 1 260px}
.slider output{font-family:"Courier New",monospace;font-weight:700;margin-left:.3rem}
.slider input[type=range]{width:100%;accent-color:var(--accent);height:1.5rem;margin:0}
.btn{font:inherit;font-size:.9rem;border:2px solid var(--ink);background:#fff;color:var(--ink);border-radius:6px;padding:.3rem .8rem;cursor:pointer;min-height:2.2rem}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;min-width:5.2rem}
.btn.small{font-size:.82rem;padding:.15rem .55rem;min-height:1.9rem}
.btn[aria-pressed="true"]:not(.primary){background:var(--ink);color:#fff}
.views{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;flex:2 1 300px}
.views .lbl{font-size:.82rem;font-weight:600;color:var(--ink2)}

.stats{grid-area:stats;border-top:2px solid var(--ink);background:var(--panel)}
.stats dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0}
.stats dl>div{padding:.3rem .6rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}
.stats dl>div:nth-child(4n){border-right:0}
.stats dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stats dt i,.stats dt sub{text-transform:none}
.stats dd{margin:0;font-family:"Courier New",monospace;font-weight:700;font-size:1.12rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.stats .unit{font-size:.7rem;color:var(--ink2);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.panel{grid-area:panel;border-left:2px solid var(--ink);background:var(--panel);overflow-y:auto;padding:.8rem 1rem 1.2rem}
.steps{list-style:none;margin:0 0 .8rem;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
.steps li:last-child:nth-child(odd){grid-column:1 / -1}
.steps button{width:100%;text-align:left;font:inherit;font-size:.88rem;display:flex;gap:.45rem;align-items:center;border:2px solid var(--ink);background:#fff;color:var(--ink);border-radius:6px;padding:.32rem .5rem;cursor:pointer;min-height:2.4rem}
.steps button .n{font-family:"Courier New",monospace;font-weight:700;background:var(--ink);color:#fff;border-radius:50%;width:1.5rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center;flex:none;font-size:.85rem}
.steps button[aria-current="step"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.steps button[aria-current="step"] .n{background:#fff;color:var(--accent)}
.steps button:hover{background:#eef3f8}
.steps button[aria-current="step"]:hover{background:#0b467c}
#step-panel h2{margin:.2rem 0 .4rem;font-size:1.2rem}
#step-text p{margin:.3rem 0 .6rem}
#step-text ul,#step-text ol{padding-left:1.2rem;margin:.3rem 0 .6rem}
.formula{font-family:"Times New Roman",Times,serif;font-size:1.15rem;font-style:italic;background:#fff;border:1px dashed var(--line);padding:.15rem .5rem;display:inline-block;border-radius:4px;max-width:100%;overflow-wrap:anywhere}
.k-arc{color:var(--arc);font-weight:700}
.ok{color:#047857}.btn[aria-pressed="true"].primary{background:#0b3a66}
.worked{background:#fff;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem;font-size:.92rem}
details.q{background:#fff;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem;margin:.4rem 0}
details.q summary{cursor:pointer;font-weight:600}
details.q p{margin:.35rem 0 .1rem}
.fine{font-size:.85rem;color:var(--ink2)}
.bigidea{margin-top:1rem;border-top:2px solid var(--ink);padding-top:.5rem}
.bigidea h2{font-size:1.05rem;margin:.2rem 0;font-family:"Courier New",monospace;text-transform:uppercase;letter-spacing:.08em}
.bigidea p{margin:.35rem 0;font-size:.93rem}
.verse{font-style:italic}
.verse strong{font-style:normal}
.noscript{padding:1rem}

@media (max-width: 860px){
  .layout{display:block;height:auto;min-height:0}
  .stage{height:46vh;min-height:300px;max-height:480px}
  .strip{height:104px}
  .stats dl{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stats dl>div{padding:.35rem .5rem}
  .stats dl>div:nth-child(2n){border-right:0}
  .stats dl>div:nth-child(4n+1),.stats dl>div:nth-child(4n+3){border-right:1px solid var(--line)}
  .stats dd{font-size:1rem}
  .panel{border-left:0;border-top:2px solid var(--ink);overflow:visible}
  .top{padding:.45rem .6rem;flex-wrap:wrap;gap:.4rem}
  h1{font-size:1.05rem}
  .sub{display:none}
  .hint{display:none}
  .legend{font-size:.68rem;grid-template-columns:auto auto;padding:.2rem .35rem;gap:0 .5rem}
  .chip{width:.8rem}
}
@media (max-width: 420px){
  .toggles{width:100%;justify-content:space-between}
  .rm{font-size:.82rem}
  .steps{grid-template-columns:1fr}
  .steps li:last-child:nth-child(odd){grid-column:auto}
  .stats dt{font-size:.64rem}
}

.btn:disabled{opacity:.45;cursor:not-allowed}
.views.presets,.views.fam{flex:0 1 auto}
.btn.inline{margin:.1rem 0}
.btn.small[aria-pressed="true"]{background:var(--ink);color:#fff}
.toggles .btn.small{min-width:7.5rem}
#sound[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
table.rt{border-collapse:collapse;width:100%;font-size:.86rem;margin:.3rem 0 .7rem;background:#fff}
table.rt th,table.rt td{border:1px solid var(--line);padding:.12rem .4rem;text-align:right;font-variant-numeric:tabular-nums}
table.rt th{background:#f1ede0;font-weight:600}
table.rt td:nth-child(3){font-family:"Courier New",monospace;font-weight:700}
table.rt tr.cur td{background:#fde68a}
table.rt td.hi{color:#9f1239}table.rt td.lo{color:#1e40af}
.views.show{flex:0 0 auto}
.ctrl .row:nth-child(2) .slider.grow{flex:2 1 170px}
.ctrl .row:nth-child(2) .slider:not(.grow){flex:1 1 110px}
