:root{color-scheme:light;--paper:#e9eeed;--ink:#253d38;--muted:#536860;--green:#205e4c;--line:#ccd6d1;--raised:7px 7px 18px #cbd3d0,-7px -7px 18px #ffffff;--inset:inset 3px 3px 8px #cbd3d0,inset -3px -3px 8px #ffffff;--mono:ui-monospace,SFMono-Regular,Consolas,monospace}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans JP',sans-serif}main{max-width:1160px;margin:auto;padding:0 40px}a{color:var(--green)}.masthead{height:82px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;font-size:13px;font-weight:750;letter-spacing:.08em}.bird{display:grid;place-items:center;width:38px;height:38px;border-radius:13px;box-shadow:var(--raised);font:700 26px Georgia,serif}.wordmark{font-weight:400}.local{font-size:11px;color:var(--muted)}.local span{color:var(--green);margin-right:5px}.intro{padding:14px 0 22px}h1{font-size:30px;line-height:1.4;font-weight:650;margin:0}h2{font-size:13px;font-weight:650;margin:0}.language-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:28px}.language-bar label{font-size:12px;font-weight:600}.engine-badge{margin-left:auto;color:var(--muted);font:11px var(--mono)}select,button{font:inherit;color:var(--ink)}select{border:1px solid var(--line);background:var(--paper);box-shadow:var(--inset);border-radius:12px;padding:9px 28px 9px 12px;min-height:44px;max-width:100%;font-size:12px}select:disabled{color:#62716c;box-shadow:none;background:#e2e7e5;cursor:not-allowed}button{cursor:pointer;min-height:44px}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible,input:focus-visible,pre:focus-visible{outline:3px solid #176f57;outline-offset:4px}.workspace{display:grid;grid-template-columns:1.15fr 1fr;gap:24px;margin-bottom:28px}.panel{min-width:0;border:1px solid #e3e9e6;border-radius:20px;background:var(--paper);box-shadow:var(--raised);overflow:hidden}.panel-header{height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 22px}.file-name{font:11px var(--mono);color:var(--muted)}.toolbar{display:flex;align-items:center;gap:10px;padding:0 18px 12px;color:var(--muted);font-size:11px}.toolbar select{min-width:0;flex:1}.text-button{border:0;border-radius:10px;background:transparent;color:var(--green);font-size:12px;padding:8px;white-space:nowrap}.text-button:hover{box-shadow:var(--inset)}textarea{display:block;resize:vertical;width:calc(100% - 32px);height:270px;min-height:180px;margin:0 16px;padding:18px;border:1px solid #c1cdc7;border-radius:14px;box-shadow:var(--inset);background:var(--paper);color:var(--ink);font:14px/1.8 var(--mono);tab-size:2}textarea:focus{outline:3px solid #176f57;outline-offset:2px}.editor-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 18px}.editor-footer>span{font-size:10px;color:var(--muted)}.run-button{display:flex;align-items:center;justify-content:center;gap:10px;min-width:100px;padding:10px 22px;border:1px solid #174937;border-radius:14px;background:var(--green);color:#fff;font-size:13px;font-weight:650;box-shadow:4px 4px 9px #c1ccc7,-4px -4px 9px #fff}.run-button:hover{background:#174a3c}.run-button:active{box-shadow:inset 2px 2px 6px #103d30}.run-button span{font-size:10px}.result-panel{display:flex;flex-direction:column}.result-content{margin:0 16px;padding:18px;flex:1;min-height:260px;max-height:400px;overflow:auto;border-radius:14px;box-shadow:var(--inset);border:1px solid #c1cdc7}.result-note{font-size:12px;color:var(--muted);margin:0 0 12px}pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.8 var(--mono);color:var(--ink)}#output{font-size:20px}.result-footer{min-height:70px;display:flex;align-items:center;gap:8px;padding:16px 22px;font:11px/1.5 var(--mono);color:var(--muted)}.engine-light{width:5px;height:5px;border-radius:50%;background:var(--green);flex-shrink:0}.status{font-size:11px;color:var(--muted)}.status[data-state=success]{color:#205e4c}.status[data-state=error]{color:#963623}.status[data-state=running]{color:#715409}.error{font-size:12px;color:#852a1c;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7e5de;border:1px solid #c99888;padding:12px;border-radius:10px}.stage{margin-top:14px;box-shadow:4px 4px 10px #ced7d2,-4px -4px 10px #fff;border-radius:14px}.stage>summary{cursor:pointer;min-height:52px;padding:14px 20px;font-size:13px;font-weight:600}.stage>summary small{font-weight:400;font-size:11px;color:var(--muted);margin-left:8px}.panel-number{font:10px var(--mono);color:var(--muted);margin-right:10px}.stage[open]>summary{border-bottom:1px solid var(--line)}.ast-body{padding:16px 20px}.ast-body>p,.help p{font-size:12px;color:var(--muted);margin:0 0 12px}.help{margin-top:24px}#ast-tree{max-height:480px;overflow:auto;padding:4px;font:12px/1.7 var(--mono)}.ast-children{border-left:1px solid #9daf9f;margin:4px 0 8px 7px;padding-left:12px}.ast-node summary{cursor:pointer;overflow-wrap:anywhere;color:var(--green)}.ast-leaf{overflow-wrap:anywhere;padding:2px 0}#tokens-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:3px;max-height:340px;overflow:auto;counter-reset:tokens}.token{counter-increment:tokens;border:1px solid #bbc9c1;border-radius:9px;padding:8px 10px;max-width:100%;min-width:76px}.token::before{content:counter(tokens);font:10px var(--mono);color:var(--muted)}.token code{display:block;font:14px var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--green);margin:4px 0}.token small{display:block;font:10px/1.5 var(--mono);color:var(--muted);overflow-wrap:anywhere}.token[data-kind=invalid]{background:#f7e5de;border-color:#c99888}#assembly,#bytecode{max-height:360px;overflow:auto;font-size:12px}.trace-controls{display:flex;align-items:center;gap:12px;margin-bottom:16px}.trace-controls input{min-width:40px;flex:1;accent-color:var(--green)}.trace-controls button{border:1px solid var(--line);border-radius:10px;background:var(--paper);box-shadow:var(--raised);padding:6px 14px;font-size:12px}#trace-state{font-size:13px}.illustrated-guide{padding:20px}.illustrated-guide h2{display:none}.illustrated-guide p,.illustrated-guide figcaption{font-size:12px;color:var(--muted)}.illustrated-guide figure{margin:0 0 20px}.illustrated-guide img{display:block;width:100%;height:auto;border-radius:12px}.syntax-note{padding:12px;background:#f8efd9;border-radius:10px}.syntax-note code{white-space:nowrap}footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:26px;padding:0 0 28px;font-size:10px;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}[hidden]{display:none!important}
@media(max-width:760px){main{padding:0 18px}.masthead{height:72px}.wordmark,.local{display:none}.intro{padding:12px 0 20px}h1{font-size:25px}.workspace{grid-template-columns:1fr;gap:20px}.language-bar{gap:8px}.language-bar select{padding-left:9px;padding-right:20px}.language-bar label{font-size:11px}.engine-badge{font-size:10px}.panel-header{padding:0 18px}.toolbar{padding-left:16px;padding-right:16px;gap:5px}textarea{font-size:16px;height:250px;padding:14px}.result-content{min-height:150px;max-height:320px}.result-footer{min-height:52px;padding:14px 18px}.stage>summary{padding:14px}.ast-body,.illustrated-guide{padding:14px}.ast-node summary{min-height:36px;padding:5px 0}.ast-children{padding-left:9px;margin-left:5px}.trace-controls{gap:8px}footer{display:block}footer span,footer a{display:block;margin-top:6px}}
@media(forced-colors:active){.panel,textarea,.result-content,select,button,.token{box-shadow:none;border:1px solid CanvasText}}

/* Clear workflow: distinguish controls, editing and output. */
:root{--paper:#f3f6f5;--ink:#19362d;--muted:#4e635a;--line:#c5d3cc;--raised:0 4px 14px #183b3410;--inset:none}
.masthead{height:74px;border-bottom:1px solid var(--line)}.bird{background:#205e4c;color:white;box-shadow:none}.intro{padding:26px 0 22px}h1{font-size:28px}.language-bar{background:#e3ece7;border:1px solid #bccfc3;border-radius:12px;padding:12px 16px;margin-bottom:22px}.language-bar label{font-size:13px}.engine-badge{background:#fff;padding:4px 10px;border-radius:20px;border:1px solid var(--line)}
select{background:#fff;border-color:#8da79a;box-shadow:none;font-size:13px;border-radius:8px}.panel{background:#fff;border:1px solid #bccfc3;border-radius:14px;box-shadow:var(--raised)}.panel-header{height:64px;border-bottom:1px solid #dce6df;margin-bottom:14px}h2{font-size:16px;display:flex;gap:9px;align-items:center}.step-badge{display:inline-grid;place-items:center;width:25px;height:25px;flex-shrink:0;border-radius:50%;background:#205e4c;color:#fff;font:700 12px var(--mono)}
.toolbar{font-size:12px}.text-button{border:1px solid #a8beb0;background:#f4f8f5;color:#205e4c;border-radius:8px;font-weight:600}.text-button:hover{background:#e3eee7}.editor-footer{padding:18px}.editor-footer>span{font-size:11px}textarea{background:#f8faf9;border-color:#8fa99a;border-radius:8px;box-shadow:none}.run-button{min-width:132px;border-radius:9px;font-size:15px;box-shadow:0 3px 8px #205e4c25}.result-panel{background:#edf5ef}.result-content{background:#fff;border:1px solid #9cb6a5;border-radius:8px;box-shadow:none}#output{font-size:22px;font-weight:600}.status{font-size:12px;background:#fff;padding:3px 9px;border-radius:12px;border:1px solid #bfd1c6}.status[data-state=error]{background:#fff0e9;border-color:#c99888}.result-footer{font-size:11px}.explore-heading{margin:32px 0 12px;font-size:17px}.explore-heading span{margin-left:auto;font-size:11px;color:var(--muted);font-weight:400}.stage{box-shadow:none;border-radius:10px;margin-top:10px}.stage>summary{font-size:14px;padding:15px 18px}.stage>summary:hover{background:#f0f6f2}.panel-number{display:inline-block;color:#205e4c;font-weight:700}.token{background:#f4f8f5}.trace-controls button{box-shadow:none;background:#fff;border-color:#8da79a}.help{margin-top:20px}
@media(max-width:760px){main{padding:0 16px}h1{font-size:23px}.language-bar{padding:12px;gap:8px}.language-bar label{font-size:12px}.language-bar select{font-size:13px}.engine-badge{margin-left:0}.workspace{gap:18px}h2{font-size:15px}.panel-header{padding:0 16px}.toolbar{flex-wrap:wrap}.toolbar select{max-width:62%}.editor-footer>span{font-size:10px}.run-button{min-width:120px}.stage>summary{font-size:14px}.explore-heading{margin-top:26px}}

.language-logo{display:block;width:64px;height:64px;object-fit:contain;border-radius:50%}.masthead:has(.language-logo:not([hidden])){min-height:82px}@media(max-width:760px){.language-logo{width:56px;height:56px}.masthead:has(.language-logo:not([hidden])){min-height:74px}}

.implementation h3{font-size:14px;margin:8px 0 12px}.implementation pre{background:#f3f7f4;border:1px solid #c5d3cc;border-radius:8px;padding:14px;max-height:360px;overflow:auto;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.implementation p{font-size:12px;margin:12px 0;color:var(--muted)}.implementation .notation{border-top:1px solid var(--line);padding-top:14px}.implementation a{font-weight:600;text-underline-offset:3px}

.file-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 18px 12px}.file-tools button{font-size:11px}.file-tools #file-status{font-size:11px;color:var(--muted);flex-basis:100%}.file-tools #file-status:empty{display:none}

.language-bar{margin-top:22px}#run-dialog{width:min(440px,calc(100vw - 32px));border:1px solid #b3c8b9;border-radius:20px;padding:0;color:var(--ink);background:#fff;box-shadow:0 24px 80px #183b3430}#run-dialog::backdrop{background:#153a3055;backdrop-filter:blur(3px)}.run-dialog-inner{padding:28px;display:flex;align-items:center;flex-direction:column;gap:18px}.run-dialog-inner h2{font-size:20px}#dialog-output{max-height:40vh;overflow:auto;width:100%;padding:16px;background:#eef5f0;border-radius:10px;font-size:20px}#dialog-error{margin:0;width:100%}.rail-bird{width:240px;max-width:100%;height:130px}.bird-leg{fill:none;stroke:#d94e36;stroke-width:6;stroke-linecap:round;transform-origin:125px 84px}.leg-front{animation:step .45s ease-in-out infinite alternate}.leg-back{animation:step .45s ease-in-out infinite alternate-reverse}.bird-body{animation:bob .45s ease-in-out infinite alternate}#walking-bird{animation:amble 2.5s ease-in-out infinite alternate}@keyframes step{from{transform:rotate(-16deg)}to{transform:rotate(16deg)}}@keyframes bob{from{transform:translateY(0)}to{transform:translateY(-3px)}}@keyframes amble{from{transform:translateX(-10px)}to{transform:translateX(10px)}}@media(prefers-reduced-motion:reduce){.bird-leg,.bird-body,#walking-bird{animation:none}#run-dialog::backdrop{backdrop-filter:none}}

/* Quiet icon header; terminal-like output, without obscuring engine identity. */
.masthead{height:74px}.brand{gap:0}.result-panel{background:#151b19;border:1px solid #33483c;box-shadow:0 5px 18px #10291b20}.result-panel .panel-header{border-bottom:1px solid #41554a}.result-panel h2{font:600 13px var(--mono);color:#e6f8d7;letter-spacing:.04em}.result-panel .step-badge{background:#b8e891;color:#17261b}.result-panel .status{background:#25332b;border-color:#526a58;color:#e1efd9}.result-panel .status[data-state=error]{background:#472920;color:#ffe6dd;border-color:#ac6d53}.result-panel .status[data-state=success]{color:#c3f0a1}.result-content{background:#101612;border-color:#4b6251;box-shadow:inset 0 0 24px #0005}.result-note{font:11px var(--mono);color:#afc7a5}#output{color:#c1f59c;font:20px/1.8 var(--mono);text-shadow:0 0 6px #b1e68e25}.result-footer{color:#b3c9aa}.result-footer .engine-light{background:#c1f59c}.result-panel .error{background:#34221c;color:#ffd7c4;border-color:#bb8c75}.pixel-rail{width:240px;height:156px;image-rendering:pixelated}.pixel-foot{animation:pixel-step .32s steps(1,end) infinite}.foot-two{animation-delay:.16s}@keyframes pixel-step{50%{transform:translate(2px,-1px)}}#walking-bird{animation:amble 1.6s steps(8,end) infinite alternate}#run-dialog{opacity:1;transition:opacity .25s ease}#run-dialog.fading{opacity:0}#run-dialog.fading::backdrop{opacity:0;transition:opacity .25s ease}#run-title:focus{outline:none}@media(prefers-reduced-motion:reduce){.pixel-foot,#walking-bird{animation:none}#run-dialog,#run-dialog::backdrop{transition:none}}

#run-dialog{width:min(320px,calc(100vw - 32px))}.run-dialog-inner{position:relative;padding:24px;min-height:180px}.bird-stop{position:absolute;right:8px;top:8px;width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:#33453a;font-size:16px}.bird-stop:hover{background:#e9eeeb}#run-dialog .run-dialog-inner .sr-only{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden}

#stage-replay{width:min(440px,72vw);text-align:left}#stage-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:0;list-style:none;font-size:.8rem}#stage-list li{padding:8px;border:1px solid #b3bfc1;border-radius:6px;color:#49565a}#stage-list li[data-active=true]{background:#173f38;color:#fff;border-color:#173f38}#stage-list li[data-seen=true]{font-weight:700}#stage-preview{font-size:.75rem;white-space:pre-wrap;overflow-wrap:anywhere;max-height:110px;overflow:auto;background:#eef2ef;color:#172d26;padding:10px;border-radius:6px}#skip-replay{font-size:.8rem;padding:6px 12px}#run-dialog{max-height:90vh;overflow:auto}
/* The replay must fit the dialog's inner box, not the viewport. */
#run-dialog{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto}
.run-dialog-inner{width:100%;min-width:0;padding:20px;gap:14px}
#stage-replay{width:100%;min-width:0;max-width:100%}
#stage-list{min-width:0}#stage-list li{min-width:0;overflow-wrap:anywhere}
#stage-preview{width:100%;min-width:0;max-width:100%;box-sizing:border-box}
#walking-bird{max-width:calc(100% - 24px);flex-shrink:0}
.pixel-rail{display:block;width:min(240px,100%);height:auto;aspect-ratio:40/26}
@media(max-height:600px){.run-dialog-inner{padding:14px;gap:8px}.pixel-rail{width:120px}#stage-preview{max-height:70px}#stage-list{margin:6px 0}}
