:root{--bg:#111919;--panel:#192423;--ink:#e8efdf;--muted:#adbbb0;--line:#34443d;--mint:#c0e492;--gold:#e4c48b;--mono:'Cascadia Mono',monospace;--sans:'Cascadia Mono','LXGW Neo XiHei Plus','霞鹜新晰黑＋',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.8 var(--sans)}button,input,textarea,select{font:inherit}button,a,input,textarea,select{touch-action:manipulation}button{cursor:pointer}button{border:1px solid var(--line);border-radius:7px;background:#24322b;color:var(--ink);padding:10px 17px;transition:background .15s}button:hover{background:#354537}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}a{color:inherit}h1{font-size:clamp(36px,4.6vw,66px);line-height:1.28;letter-spacing:-.035em;margin:22px 0 24px;font-weight:500}h2{font-size:23px;font-weight:500;line-height:1.5;margin:8px 0 16px}p{margin:10px 0 20px}strong{color:var(--mint);font-weight:500}small,.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:252px 1fr;min-height:100vh}aside{position:sticky;top:0;height:100vh;border-right:1px solid var(--line);padding:34px 22px;display:flex;flex-direction:column;background:#141e1c}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-size:22px}.brand-small{display:block;font:9px/2 var(--mono);letter-spacing:1.3px;color:var(--muted)}.mark{background:var(--mint);color:#1b2a20;width:40px;height:44px;text-align:center;border-radius:50% 50% 5px 5px;font-size:29px}.course-label{font-size:12px;letter-spacing:2px;color:var(--muted);margin:60px 12px 16px}nav{display:grid;gap:8px}nav button{font-size:13px;text-align:left;padding:13px 10px;background:none;border-color:transparent}nav button b{margin-right:12px;font-size:11px;color:var(--muted)}nav button.active{background:#29382c;border-color:#4d6446;color:var(--mint)}.aside-note{margin-top:auto;padding:32px 10px;color:var(--mint);font-size:13px}.aside-note small{display:block;margin-top:8px;font-size:11px}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--mint);margin-right:7px}#saveStatus{font-size:10px;color:var(--muted);text-align:center;margin:10px 0}main{max-width:1540px;width:100%;margin:auto;padding:0 5.2vw}header{height:91px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font:10px var(--mono);letter-spacing:1.5px;color:var(--muted)}.badge{border:1px solid var(--line);padding:7px 12px;border-radius:30px}section{padding:48px 0 64px;min-height:calc(100vh - 170px)}.eyebrow{color:var(--mint);font-size:12px;letter-spacing:2px}.accent{color:var(--mint)}.lead{font-size:17px;line-height:1.95;color:var(--muted);max-width:830px;margin-bottom:35px}.hero-graphic{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:35px 40px;margin:38px 0;background:radial-gradient(ellipse at 90% 40%,#344b34,transparent 70%),#1c2923;border:1px solid #43563c;border-radius:11px}.tiny{font:11px/1.6 var(--sans);color:var(--muted);letter-spacing:1px}.formula{font:clamp(23px,3.2vw,44px)/1.9 var(--mono);white-space:nowrap}.formula span{color:var(--gold)}.formula .mint{color:var(--mint)}.flow-arrow{font-size:35px;color:#778c69}.two{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:28px 0}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:28px}.card p{font-size:14px;color:var(--muted)}.prose{max-width:820px;padding:14px 0 25px}.prose p{color:var(--muted)}.callout{padding:19px 22px;border-left:2px solid var(--mint);background:#202d25;color:#c4d0be;font-size:13px;margin:24px 0}.primary{background:var(--mint);border-color:var(--mint);color:#1b2b1e;padding:12px 22px}.primary:hover{background:#d6efb7}.quiet{background:transparent}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:15px}label{display:block;color:var(--ink);font-size:14px;margin:18px 0 10px}textarea,input{width:100%;border:1px solid #475447;background:#121c18;color:var(--ink);padding:14px;border-radius:7px;line-height:1.7}textarea{resize:vertical;min-height:100px}input{font-family:var(--mono)}.tabs{display:flex;gap:10px;margin:20px 0;flex-wrap:wrap}.tabs .active{border-color:var(--mint);color:var(--mint)}.answer{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.answer p{color:var(--ink)}.input-row{display:flex;gap:12px}.input-row input{flex:1;min-width:0}.examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.examples button{font-size:11px;padding:7px 10px;background:transparent}.lab-toolbar{padding-top:5px}.lab-toolbar label span{font-size:11px;margin-left:10px}#inputError{color:#efb6a7;font-size:13px;margin-bottom:0}.lab-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:20px;margin:22px 0}.panel-heading{display:flex;justify-content:space-between;align-items:center}.tokens,.token-lane{display:flex;flex-wrap:wrap;gap:6px;min-height:52px;padding:12px 0}.token{font:17px/1.7 var(--mono);padding:3px 10px;border:1px solid var(--line);border-radius:5px;background:#24302a}.token.current{background:var(--gold);color:#23311f;border-color:var(--gold)}.token.past{opacity:.5}.token-lane{padding:13px;min-height:69px;background:#111c17;border-radius:6px;border:1px solid #34463a}.token-lane .token{border-color:#78915b;color:var(--mint)}.output .token{border-color:#726748;color:var(--gold)}.state-label{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-top:22px}.state-label span{font-size:10px;color:var(--muted)}.event-text{font-size:14px;min-height:114px;padding:22px 0;color:var(--mint)}.playback{display:flex;align-items:center;gap:7px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:18px}.playback label{font-size:11px;margin:0 0 0 auto}.playback button{padding:8px 12px}select{color:var(--ink);background:var(--panel);border:1px solid var(--line);padding:6px}.toggle{font-size:12px;color:var(--muted);display:flex;align-items:flex-start;gap:8px}.toggle input{width:18px;margin-top:4px}#rules{padding-left:23px;font-size:12px;color:var(--muted)}#rules li{padding:7px 9px;border-left:2px solid transparent}#rules li.active{background:#30402b;border-color:var(--mint);color:var(--ink)}summary{cursor:pointer;color:var(--mint);font-size:14px}details{margin:22px 0}pre{white-space:pre-wrap;font:13px/1.9 var(--mono);color:var(--gold);overflow-wrap:anywhere}code{font-family:var(--mono);color:var(--gold);overflow-wrap:anywhere}.editor{font:14px/1.8 var(--mono);tab-size:4}.checks{font-size:14px;color:var(--muted);padding-left:20px}.checks li{margin-bottom:10px}.danger{border-color:#9f6a5f;color:#edbbac;background:none}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:25px 0;font-size:10px;color:var(--muted)}.skip{position:absolute;top:-100px;z-index:100;background:var(--mint);color:#111;padding:10px}.skip:focus{top:0}[hidden]{display:none!important}@media(min-width:1650px){main{padding:0 80px}}@media(max-width:1050px){.shell{grid-template-columns:210px 1fr}aside{padding:25px 13px}main{padding:0 30px}.lab-grid{grid-template-columns:1fr}.hero-graphic{padding:24px}.formula{font-size:26px}.two{gap:15px}.card{padding:22px}}@media(max-width:720px){.shell{display:block}aside{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:18px 20px}.brand{font-size:18px}.brand-small{font-size:8px}.course-label,.aside-note,#exportAll,#saveStatus{display:none}nav{display:flex;overflow-x:auto;margin-top:18px;gap:6px;padding-bottom:5px}nav button{flex-shrink:0;padding:10px;font-size:11px}nav button b{margin-right:7px}main{padding:0 20px}header{height:60px;font-size:8px;letter-spacing:1px}.badge{padding:5px 8px;font-size:9px}section{padding-top:30px}.two{grid-template-columns:1fr}.hero-graphic{align-items:flex-start;gap:12px;flex-direction:column;padding:24px}.flow-arrow{transform:rotate(90deg);font-size:24px;line-height:1}.formula{font-size:30px}.lead{font-size:15px}.card{padding:20px}.state-label{flex-direction:column;gap:2px}.actions button{width:100%}.tabs button{font-size:12px}.lab-toolbar label span{display:block;margin:4px 0}.input-row button{padding:10px}footer{gap:14px}.event-text{min-height:132px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@font-face{font-family:'LXGW Neo XiHei Plus';src:url('fonts/LXGWNeoXiHeiPlus.ttf') format('truetype');font-display:swap}@font-face{font-family:'Cascadia Mono';src:url('fonts/CascadiaMono.woff2') format('woff2');font-display:swap;unicode-range:U+0000-024F}body.ipa{--sans:'Cascadia Mono','IPAexGothic','IPAGothic',sans-serif}
