:root{--paper:#f1eee5;--ink:#16191c;--faint:#cbc6b8;--blue:#3776ab;--red:#a93b34;--green:#2e7654;--panel:#e8e4da}
*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:Georgia,"Times New Roman",serif}body{margin:0}button{font:inherit;color:inherit}
.mast,main,footer{width:min(1180px,calc(100% - 40px));margin:auto}.mast{height:82px;border-bottom:2px solid;display:flex;align-items:center;justify-content:space-between;font:700 13px ui-monospace,monospace;letter-spacing:.08em}.folio{font-weight:400}
.intro{display:grid;grid-template-columns:1.15fr .85fr;gap:90px;padding:72px 0 80px;align-items:end}.eyebrow,.label{margin:0 0 18px;color:var(--blue);font:700 13px ui-sans-serif,sans-serif;letter-spacing:.09em;text-transform:uppercase}h1{font-size:clamp(50px,7vw,88px);line-height:.93;letter-spacing:-.045em;margin:0}.lede{font-size:24px;line-height:1.5;margin:0 0 5px}
.instrument{border-top:2px solid;border-bottom:2px solid;padding:42px 0 50px}.instrument-head{display:flex;justify-content:space-between;gap:30px;align-items:start}.instrument h2,.method h2{font-size:42px;margin:0;letter-spacing:-.025em}.mode{font:700 12px ui-monospace,monospace;border:1px solid;padding:10px 12px}.mode.local{color:var(--green)}.mode.replay{color:var(--blue)}
.controls{display:flex;justify-content:space-between;gap:20px;margin:38px 0}.choices{display:flex;border:1px solid}.choice,.run{background:transparent;border:0;padding:16px 24px;cursor:pointer}.choice+ .choice{border-left:1px solid}.choice span{color:var(--blue);font:13px ui-monospace,monospace;margin-right:20px}.choice.selected{background:var(--ink);color:var(--paper)}.run{border-bottom:2px solid;font-weight:700}.run:hover,.run:focus{color:var(--blue)}.run:disabled{opacity:.45;cursor:wait}
.claim,.result{display:flex;justify-content:space-between;align-items:center;border-top:1px solid;padding:26px 18px}.claim span,.result .label{font:700 12px ui-monospace,monospace;letter-spacing:.06em}.claim strong{font-size:24px}.result{background:var(--panel);padding:34px 28px}.result strong{display:block;font-size:44px}.score{text-align:right}.score span{display:block;font-size:66px;font-weight:700}.score small{font:12px ui-monospace,monospace}.result.pass strong,.result.pass .score{color:var(--green)}.result.fail strong,.result.fail .score{color:var(--red)}
.run-error{border-left:3px solid var(--red);color:var(--red);padding:12px 16px;margin:16px 0;font:700 14px/1.5 ui-sans-serif,sans-serif}.run-error[hidden]{display:none}.choice:disabled{cursor:wait;opacity:.65}
.gates{list-style:none;margin:0;padding:0}.gates li{display:grid;grid-template-columns:55px 1fr 110px 85px;align-items:center;min-height:70px;border-top:1px solid var(--faint)}.gates span,.gates em,.gates small{font:12px ui-monospace,monospace}.gates em{font-style:normal;font-weight:700}.gates small{text-align:right}.gates li.pass em{color:var(--green)}.gates li.fail em{color:var(--red)}.gates li.running em{color:var(--blue)}
details{border-top:1px solid var(--faint);padding:20px 0}summary{cursor:pointer;font-weight:700}pre{white-space:pre-wrap;background:var(--ink);color:var(--paper);padding:24px;max-height:430px;overflow:auto;font:12px/1.5 ui-monospace,monospace}
.method{padding:90px 0}.method ol{list-style:none;margin:50px 0 38px;padding:0;border-top:2px solid}.method li{display:grid;grid-template-columns:150px 220px 1fr;padding:22px 0;border-bottom:1px solid var(--faint)}.method li:before{content:counter(list-item,decimal-leading-zero);color:var(--blue);font:13px ui-monospace,monospace}.method li b{text-transform:uppercase;font:700 15px ui-sans-serif,sans-serif}.language{font-size:23px;max-width:760px;color:var(--blue);font-weight:700}footer{border-top:2px solid;padding:25px 0 45px;display:flex;justify-content:space-between;font:12px ui-monospace,monospace}
@media(max-width:760px){.intro{grid-template-columns:1fr;gap:35px}.instrument-head,.controls{display:block}.mode{margin-top:20px;display:inline-block}.choices{width:100%;margin-bottom:20px}.choice{flex:1}.run{width:100%}.gates li{grid-template-columns:38px 1fr 65px}.gates small{display:none}.method li{grid-template-columns:48px 100px 1fr}.claim strong{font-size:18px}.result strong{font-size:28px}.score span{font-size:42px}}
@media(prefers-reduced-motion:no-preference){.gates li{transition:background-color .18s}.result{transition:color .2s,background-color .2s}}
