@import"https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300;0,8..60,400;0,8..60,600;0,8..60,700;1,8..60,400&family=Inter:wght@400;500;600&family=JetBrains+Mono:ital,wght@0,400;0,500;1,400&display=swap";.sg-stepper{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);margin-bottom:var(--s3)}.sg-step-btn{padding:var(--s1) var(--s3);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg);color:var(--text);font:.85rem var(--mono);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.sg-step-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.sg-step-btn:disabled{opacity:.35;cursor:default}.sg-play-btn.is-playing{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.sg-progress{font:.8rem var(--mono);color:var(--dim)}.sg-stage{display:grid;grid-template-columns:1fr 1fr;gap:16px}.sg-col{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px 14px;display:flex;flex-direction:column}.sg-col-title{font-family:var(--sans);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.sg-tag{font-family:var(--mono);font-size:10px;padding:2px 6px;border-radius:3px;text-transform:none;letter-spacing:0}.sg-tag-grow{background:#f4d4d4;color:#8a3030}.sg-tag-flat{background:#d4ecd4;color:#2f6a30}.sg-frames{display:flex;flex-direction:column-reverse;gap:4px;min-height:180px;justify-content:flex-start}.sg-frame{background:var(--bg-code);color:#e6e6e6;padding:6px 10px;border:1px solid transparent;border-radius:4px;font-family:var(--mono);font-size:12px;display:flex;justify-content:space-between;align-items:center;gap:8px}.sg-pending{color:#c4a76a;font-size:11px;white-space:nowrap}.sg-frame-cd{min-width:0}.sg-frame-cd .sg-call{min-width:92px}.sg-frame.is-top{box-shadow:inset 2px 0 0 var(--accent)}.sg-empty{border:1px dashed var(--border-dk, var(--border));border-radius:4px;padding:6px 10px;font-family:var(--mono);font-size:11px;color:var(--dim);text-align:center}.sg-depth{margin-top:10px;font-family:var(--mono);font-size:12px;color:var(--muted)}.sg-depth-val{display:inline-block;color:var(--text);font-weight:600}.sg-result{margin:10px auto 0;width:fit-content;font-family:var(--mono);font-size:12.5px;font-weight:600;padding:6px 12px;border:1px dashed var(--accent);border-radius:5px;color:var(--accent);background:var(--accent-bg, rgba(212, 98, 26, .08))}.sg-track{height:3px;margin-top:14px;border-radius:2px;background:var(--border);overflow:hidden}.sg-track-fill{height:100%;border-radius:2px;background:var(--accent);transition:width .35s var(--ease)}.sg-caption{min-height:48px;margin-top:10px;font-size:14px;color:var(--muted);line-height:1.55}.sg-caption code{font-family:var(--mono);font-size:13px}@media (max-width: 720px){.sg-stage{grid-template-columns:1fr}.sg-frames{min-height:auto}}@media (prefers-reduced-motion: no-preference){@keyframes sg-drop{0%{opacity:0;transform:translateY(-18px) scaleY(1.04) scaleX(.98)}55%{opacity:1;transform:translateY(3px) scaleY(.95) scaleX(1.025)}78%{transform:translateY(-1px) scaleY(1.01) scaleX(.995)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes sg-press-a{0%{transform:translateY(0)}40%{transform:translateY(2px) scaleY(.98)}to{transform:translateY(0) scaleY(1)}}@keyframes sg-press-b{0%{transform:translateY(0)}40%{transform:translateY(2px) scaleY(.98)}to{transform:translateY(0) scaleY(1)}}@keyframes sg-pop{0%{transform:translateY(0) rotate(0) scale(1);opacity:1}30%{background:#3d2a1a;border-color:var(--accent);transform:translateY(0) rotate(0) scale(1.04);opacity:1}to{transform:translateY(-20px) rotate(-2.5deg) scale(.94);opacity:0}}@keyframes sg-eq-in{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.18)}to{opacity:1;transform:scale(1)}}@keyframes sg-receive{0%,to{color:#c4a76a}45%{color:#6ac48a;transform:scale(1.06)}}@keyframes sg-slot-pulse{0%{box-shadow:0 0 #6ac48a73;transform:scale(1)}55%{box-shadow:0 0 0 6px #6ac48a00;transform:scale(1.02)}to{box-shadow:0 0 #6ac48a00;transform:scale(1)}}@keyframes sg-tick{0%{transform:scale(1.4);color:var(--accent)}to{transform:scale(1);color:var(--text)}}@keyframes sg-result-pop{0%{opacity:0;transform:scale(.85)}60%{opacity:1;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes sg-result-glow{0%,to{box-shadow:0 0 #d4621a00}50%{box-shadow:0 0 18px #d4621a59}}@keyframes sg-tag-pulse{0%{transform:scale(1)}50%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes sg-caption-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.sg-frame{animation:sg-drop .42s cubic-bezier(.34,1.56,.64,1) calc(var(--sg-i, 0) * 60ms) backwards}.sg-frame.is-pressed-0{animation:sg-press-a .28s ease .3s}.sg-frame.is-pressed-1{animation:sg-press-b .28s ease .3s}.sg-frame.is-popping{animation:sg-pop .65s ease-in .2s forwards}.sg-frame.is-popping .sg-pending{display:inline-block;animation:sg-eq-in .32s cubic-bezier(.34,1.56,.64,1)}.sg-frame.is-receiving .sg-pending{display:inline-block;animation:sg-receive .5s ease .5s both}.sg-frame-cd{animation:sg-slot-pulse .45s cubic-bezier(.34,1.56,.64,1)}.sg-depth-val{animation:sg-tick .3s ease}.sg-result{animation:sg-result-pop .5s cubic-bezier(.34,1.56,.64,1) .5s backwards,sg-result-glow .9s ease 1s 2}.sg-tag-pulse{display:inline-block;animation:sg-tag-pulse .45s cubic-bezier(.34,1.56,.64,1) 1s 2}.sg-caption{animation:sg-caption-in .25s ease}}.cm-s-ocamlcase{background:#1d1f21;color:#e1e4e8}.cm-s-ocamlcase .CodeMirror-selected{background:#4a4f5a}.cm-s-ocamlcase .CodeMirror-cursor{border-left:2px solid #c9ccd1}.cm-s-ocamlcase .cm-keyword{color:#f0883e;font-weight:500}.cm-s-ocamlcase .cm-builtin,.cm-s-ocamlcase .cm-def{color:#79b8ff}.cm-s-ocamlcase .cm-string,.cm-s-ocamlcase .cm-string-2{color:#85e89d}.cm-s-ocamlcase .cm-comment{color:#6a737d;font-style:italic}.cm-s-ocamlcase .cm-number{color:#79c0ff}.cm-s-ocamlcase .cm-operator{color:#f0883e}.cm-s-ocamlcase .cm-variable{color:#e1e4e8}.cm-s-ocamlcase .cm-variable-2,.cm-s-ocamlcase .cm-type,.cm-s-ocamlcase .cm-atom{color:#b392f0}.cm-s-ocamlcase .CodeMirror-gutters{background:#191c1f;border-right:1px solid rgba(255,255,255,.07)}.cm-s-ocamlcase .CodeMirror-linenumber{color:#6a737d}.cm-s-ocamlcase .CodeMirror-activeline-background{background:#ffffff0a}.cm-s-ocamlcase-light{background:#f7f5f2;color:#1a1917}.cm-s-ocamlcase-light .CodeMirror-selected{background:#d5e3f7}.cm-s-ocamlcase-light .CodeMirror-cursor{border-left:2px solid #1a1917}.cm-s-ocamlcase-light .cm-keyword{color:#b84800;font-weight:500}.cm-s-ocamlcase-light .cm-builtin,.cm-s-ocamlcase-light .cm-def{color:#165db8}.cm-s-ocamlcase-light .cm-string,.cm-s-ocamlcase-light .cm-string-2{color:#1a7340}.cm-s-ocamlcase-light .cm-comment{color:#8a8a8a;font-style:italic}.cm-s-ocamlcase-light .cm-number{color:#165db8}.cm-s-ocamlcase-light .cm-operator{color:#b84800}.cm-s-ocamlcase-light .cm-variable{color:#1a1917}.cm-s-ocamlcase-light .cm-variable-2,.cm-s-ocamlcase-light .cm-type,.cm-s-ocamlcase-light .cm-atom{color:#6b3db8}.cm-s-ocamlcase-light .CodeMirror-gutters{background:#ece9e4;border-right:1px solid #ddd9d3}.cm-s-ocamlcase-light .CodeMirror-linenumber{color:#9c968d}.cm-s-ocamlcase-light .CodeMirror-activeline-background{background:#00000008}.pg-icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:28px;background:none;border:1px solid var(--border);border-radius:4px;color:var(--muted);cursor:pointer;transition:color .1s,border-color .1s,background .1s;flex-shrink:0}.pg-icon-btn:hover{color:var(--text);border-color:var(--border-dk);background:#0000000a}[data-pg-theme=dark] .pg-icon-btn{color:#6a737d;border-color:#3a3d40}[data-pg-theme=dark] .pg-icon-btn:hover{color:#e1e4e8;border-color:#555;background:#ffffff0d}.pg-icon-btn.pg-share-copied{color:#1a7f37;border-color:#1a7f37;background:#1a7f371a}[data-pg-theme=dark] .pg-icon-btn.pg-share-copied{color:#3fb950;border-color:#3fb950;background:#3fb95026}.pg-settings-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:900;align-items:center;justify-content:center}.pg-settings-overlay.open{display:flex}.pg-settings-panel{background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 16px 48px #0000002e;width:320px;overflow:hidden}[data-pg-theme=dark] .pg-settings-panel{background:#1d1f21;border-color:#333}.pg-settings-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);font-family:var(--sans);font-size:12px;font-weight:600;color:var(--text)}[data-pg-theme=dark] .pg-settings-header{border-color:#333;color:#e1e4e8}.pg-settings-close{background:none;border:none;font-size:18px;line-height:1;color:var(--dim);cursor:pointer;padding:0 2px}.pg-settings-close:hover{color:var(--text)}[data-pg-theme=dark] .pg-settings-close{color:#6a737d}[data-pg-theme=dark] .pg-settings-close:hover{color:#e1e4e8}.pg-settings-body{padding:8px 0 12px}.pg-setting-row{display:flex;align-items:center;justify-content:space-between;padding:7px 14px}.pg-setting-label{font-family:var(--sans);font-size:13px;color:var(--text)}[data-pg-theme=dark] .pg-setting-label{color:#c9d1d9}.pg-toggle{font-family:var(--sans);font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;border:1px solid var(--border);background:var(--bg-warm);color:var(--dim);cursor:pointer;transition:background .1s,color .1s;min-width:40px}.pg-toggle.pg-toggle-on{background:var(--accent);color:#fff;border-color:var(--accent)}[data-pg-theme=dark] .pg-toggle{background:#2d2f31;border-color:#444;color:#6a737d}[data-pg-theme=dark] .pg-toggle.pg-toggle-on{background:#d05a1e;border-color:#d05a1e;color:#fff}.pg-settings-divider{height:1px;background:var(--border);margin:8px 14px}[data-pg-theme=dark] .pg-settings-divider{background:#333}.pg-settings-section-title{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);padding:4px 14px 6px}[data-pg-theme=dark] .pg-settings-section-title{color:#6a737d}.pg-shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:4px 14px;font-family:var(--sans);font-size:12px;color:var(--muted)}[data-pg-theme=dark] .pg-shortcut-row{color:#8b949e}.pg-shortcut-row kbd{font-family:var(--mono);font-size:10.5px;background:var(--bg-warm);border:1px solid var(--border);border-radius:3px;padding:1px 6px;color:var(--text)}[data-pg-theme=dark] .pg-shortcut-row kbd{background:#2d2f31;border-color:#555;color:#c9d1d9}.pg-zoom-btns{display:flex;align-items:center;gap:6px}.pg-zoom-btn{width:26px;height:26px;border-radius:50%;border:none;background:#3a3d40;color:#fff;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .1s;flex-shrink:0}.pg-zoom-btn:hover,[data-pg-theme=dark] .pg-zoom-btn{background:#555}[data-pg-theme=dark] .pg-zoom-btn:hover{background:#888}.pg-zoom-val{font-family:var(--mono);font-size:11px;color:var(--dim);min-width:28px;text-align:center}[data-pg-theme=dark] .pg-zoom-val{color:#6a737d}.pg-reset-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:calc(100% - 28px);margin:10px 14px 0;padding:8px;border:1px solid var(--border);border-radius:4px;background:var(--bg-warm);color:var(--text);font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;cursor:pointer;transition:background .1s}.pg-reset-btn:hover{background:#f0ece6}[data-pg-theme=dark] .pg-reset-btn{background:#2d2f31;border-color:#444;color:#c9d1d9}[data-pg-theme=dark] .pg-reset-btn:hover{background:#3a3d40}.pg-editor-panel .CodeMirror{flex:1;width:100%;height:100%;font-family:var(--mono);font-size:13px;line-height:1.8}[data-pg-theme=dark] .topbar{background:#161819;border-color:#2d2f31}[data-pg-theme=dark] .site-name{color:#e1e4e8}[data-pg-theme=dark] .topbar-nav a{color:#6a737d;border-color:#2d2f31}[data-pg-theme=dark] .topbar-nav a:hover{background:#1d1f21;color:#e1e4e8}[data-pg-theme=dark] .topbar-nav a.active{background:#1d1f21;color:#f0883e}[data-pg-theme=dark] .pg-bar{background:#161819;border-color:#2d2f31}[data-pg-theme=dark] .pg-left-panel{border-color:#2d2f31}[data-pg-theme=dark] .pg-right-panel,[data-pg-theme=dark] .pg-tasks-panel{background:#1d1f21}[data-pg-theme=dark] .pg-tasks-header{color:#6a737d;border-color:#2d2f31}[data-pg-theme=dark] .pg-task{border-color:#2d2f31}[data-pg-theme=dark] .pg-task-name{color:#e1e4e8}[data-pg-theme=dark] .pg-task.pass .pg-task-name{color:#6a737d}[data-pg-theme=dark] .pg-log-panel{background:#141516;border-color:#222}[data-pg-theme=dark] .pg-log-header{color:#6a737d;border-color:#222}[data-pg-theme=dark] .pg-log{color:#e1e4e8}[data-pg-theme=dark] .pg-tab-bar{background:#0d0f10;border-color:#222}[data-pg-theme=dark] .pg-tab{color:#6a737d}[data-pg-theme=dark] .pg-tab:hover{color:#e1e4e8}[data-pg-theme=dark] .pg-tab.active{color:#e1e4e8;border-bottom-color:#f0883e}[data-pg-theme=dark] .pg-tab-close{color:#555}[data-pg-theme=dark] .pg-tab-close:hover{color:#f85149}[data-pg-theme=dark] .pg-tab-add{color:#6a737d}[data-pg-theme=dark] .pg-tab-add:hover{color:#e1e4e8;background:#ffffff0d}[data-pg-theme=dark] .pg-info-panel{background:#141516;border-color:#222}[data-pg-theme=dark] .pg-info-header{background:#0d0f10;border-color:#222;color:#6a737d}[data-pg-theme=dark] .pg-info-content{background:#141516;color:#e1e4e8}.pg-theme-btn{font-family:var(--sans);font-size:11px;font-weight:500;color:var(--muted);background:none;border:1px solid var(--border);border-radius:3px;padding:3px 10px;cursor:pointer;transition:color .1s,border-color .1s;white-space:nowrap}.pg-theme-btn:hover{color:var(--text);border-color:var(--border-dk)}[data-pg-theme=dark] .pg-theme-btn{color:#6a737d;border-color:#444;background:none}[data-pg-theme=dark] .pg-theme-btn:hover{color:#e1e4e8;border-color:#666}.pg-ex-badge{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-bg);border:1px solid #f0c9a8;border-radius:3px;padding:3px 10px}[data-pg-theme=dark] .pg-ex-badge{background:#2a1a0f;border-color:#5a3010;color:#f0883e}.pgo-kw{color:#b84800}.pgo-name{color:#165db8}.pgo-ty{color:#6b3db8}.pgo-sep{color:#6a737d}.pgo-val{color:#444}.pgo-decl{opacity:.85}[data-pg-theme=dark] .pgo-kw{color:#f0883e}[data-pg-theme=dark] .pgo-name{color:#79b8ff}[data-pg-theme=dark] .pgo-ty{color:#b392f0}[data-pg-theme=dark] .pgo-sep{color:#6a737d}[data-pg-theme=dark] .pgo-val{color:#9ecbff}.CodeMirror-hints{font-family:var(--mono);font-size:10.5px;background:#f7f5f2;border:1px solid #ddd9d3;border-radius:3px;box-shadow:0 2px 8px #00000014;z-index:100;padding:0;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.CodeMirror-hints::-webkit-scrollbar{width:8px}.CodeMirror-hints::-webkit-scrollbar-button{display:none}.CodeMirror-hints::-webkit-scrollbar-track{background:#e8e8e8;border-radius:4px}.CodeMirror-hints::-webkit-scrollbar-thumb{background:#a0a0a0;border-radius:4px}.CodeMirror-hints::-webkit-scrollbar-thumb:hover{background:#888}.CodeMirror-hint{color:#5c574f;padding:2px 10px;line-height:1.35!important;font-size:12px!important;margin:0!important}.CodeMirror-hint-active{background:var(--accent)!important;color:#fff!important}[data-pg-theme=dark] .CodeMirror-hints{background:#1e2022;border-color:#333;box-shadow:0 2px 8px #0000004d;scrollbar-color:rgba(255,255,255,.28) transparent}[data-pg-theme=dark] .CodeMirror-hints::-webkit-scrollbar-track{background:transparent}[data-pg-theme=dark] .CodeMirror-hints::-webkit-scrollbar-thumb{background:#ffffff47;border-radius:99px}[data-pg-theme=dark] .CodeMirror-hints::-webkit-scrollbar-thumb:hover{background:#ffffff73}[data-pg-theme=dark] .CodeMirror-hint{color:#9da5b4}.pgo-err{color:#d73a49}[data-pg-theme=dark] .pgo-err{color:#f85149}.pg-type-hint{font-family:var(--mono);font-size:11px;line-height:1.5;color:#9c968d;padding-left:8px;pointer-events:none;-webkit-user-select:none;user-select:none;font-style:italic}[data-pg-theme=dark] .pg-type-hint{color:#6a737d}.pg-log::-webkit-scrollbar,.pg-tasks-panel::-webkit-scrollbar,.pg-info-content::-webkit-scrollbar{width:5px;height:5px}.pg-log::-webkit-scrollbar-track,.pg-tasks-panel::-webkit-scrollbar-track,.pg-info-content::-webkit-scrollbar-track{background:transparent}.pg-log::-webkit-scrollbar-thumb,.pg-tasks-panel::-webkit-scrollbar-thumb,.pg-info-content::-webkit-scrollbar-thumb{background:#80808040;border-radius:99px}.pg-log::-webkit-scrollbar-thumb:hover,.pg-tasks-panel::-webkit-scrollbar-thumb:hover,.pg-info-content::-webkit-scrollbar-thumb:hover{background:#80808073}.pg-log,.pg-tasks-panel,.pg-info-content{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) transparent}.CodeMirror-vscrollbar::-webkit-scrollbar,.CodeMirror-hscrollbar::-webkit-scrollbar{width:5px;height:5px}.CodeMirror-vscrollbar::-webkit-scrollbar-track,.CodeMirror-hscrollbar::-webkit-scrollbar-track{background:transparent}.CodeMirror-vscrollbar::-webkit-scrollbar-thumb,.CodeMirror-hscrollbar::-webkit-scrollbar-thumb{background:#80808047;border-radius:99px}.CodeMirror-vscrollbar::-webkit-scrollbar-thumb:hover,.CodeMirror-hscrollbar::-webkit-scrollbar-thumb:hover{background:#80808080}.CodeMirror-vscrollbar{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.28) transparent}.mini-progress-bar-wrap{margin-bottom:var(--s6)}.mini-progress-meta{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--s2)}.mini-progress-label{font-family:var(--sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--dim)}.mini-progress-count{font-family:var(--mono);font-size:12px;color:var(--muted)}.mini-progress-track{height:4px;background:var(--border);border-radius:2px;overflow:hidden}.mini-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .4s cubic-bezier(.2,.6,.2,1)}.mini-view-toggle{display:flex;flex-direction:row;align-items:center;gap:8px;margin-bottom:var(--s5)}.mini-view-label{font-family:var(--sans);font-size:12px;color:var(--dim)}.mini-view-btn{font-family:var(--sans);font-size:12px;font-weight:600;padding:4px 14px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s,border-color .12s}.mini-view-btn:hover{border-color:var(--accent);color:var(--accent)}.mini-view-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.mini-group{margin-bottom:var(--s7)}.mini-group-head{display:flex;align-items:baseline;gap:var(--s3);margin-bottom:var(--s4);padding-bottom:var(--s2);border-bottom:1px solid var(--border)}.mini-group-label{font-family:var(--sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.mini-group-count{font-family:var(--mono);font-size:11px;color:var(--dim)}.mini-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.mini-card{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--r2);background:var(--bg);text-decoration:none;color:var(--text);border-left:3px solid transparent;transition:border-color .12s,background .12s,transform .12s,box-shadow .12s}.mini-card:hover{border-color:var(--accent);border-left-color:var(--accent);background:var(--accent-bg);color:var(--text);text-decoration:none;transform:translateY(-2px);box-shadow:var(--sh2)}.mini-card-done{border-left-color:#3a8a3d;background:var(--bg)}.mini-card-done:hover{border-left-color:#4caf50}.mini-card-head{display:flex;align-items:center;gap:10px}.mini-card-check{font-family:var(--sans);font-size:12px;font-weight:700;color:#4caf50;margin-left:auto}.mini-card-title{font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--text)}.mini-card-prompt{font-size:13.5px;color:var(--muted);line-height:1.55;font-family:var(--sans)}@media (prefers-reduced-motion: no-preference){.mini-group{animation:fade-up .35s cubic-bezier(.2,.6,.2,1) both}.mini-group:nth-child(1){animation-delay:0ms}.mini-group:nth-child(2){animation-delay:60ms}.mini-group:nth-child(3){animation-delay:.12s}.mini-group:nth-child(4){animation-delay:.18s}.mini-group:nth-child(5){animation-delay:.24s}.mini-group:nth-child(6){animation-delay:.3s}.mini-group:nth-child(7){animation-delay:.36s}.mini-group:nth-child(8){animation-delay:.42s}}[data-theme=dark] .mini-card-done{background:#2e7d320f}.hub-section{margin-bottom:var(--s8)}.hub-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);margin-bottom:var(--s5);padding-bottom:var(--s3);border-bottom:1px solid var(--border)}.hub-section-title{font-family:var(--serif);font-size:20px;font-weight:700;letter-spacing:-.01em;color:var(--text)}.hub-section-sub{font-family:var(--sans);font-size:13px;color:var(--dim);margin-left:var(--s3)}.hub-challenges{display:flex;flex-direction:column;gap:12px}.hub-challenge-card{display:flex;align-items:stretch;gap:0;border:1px solid var(--border);border-radius:var(--r2);background:var(--bg);text-decoration:none;color:var(--text);overflow:hidden;transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.hub-challenge-card:hover{border-color:var(--accent);box-shadow:var(--sh2);transform:translateY(-1px);color:var(--text);text-decoration:none}.hub-challenge-num{display:flex;align-items:center;justify-content:center;min-width:56px;background:var(--accent-bg);font-family:var(--mono);font-size:13px;font-weight:700;color:var(--accent);letter-spacing:.02em;flex-shrink:0;border-right:1px solid var(--border)}.hub-challenge-body{flex:1;padding:16px 20px;display:flex;flex-direction:column;gap:8px}.hub-challenge-top{display:flex;align-items:center;gap:10px}.hub-challenge-title{font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:-.01em}.hub-challenge-desc{margin:0;font-family:var(--sans);font-size:13px;color:var(--muted);line-height:1.55}.hub-challenge-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}.hub-tag{font-family:var(--mono);font-size:10px;font-weight:500;padding:2px 7px;border-radius:999px;background:var(--accent-bg);color:var(--accent);border:1px solid var(--border)}.hub-challenge-arrow{display:flex;align-items:center;padding:0 18px;font-size:18px;color:var(--dim);flex-shrink:0;transition:color var(--t-fast),transform var(--t-fast)}.hub-challenge-card:hover .hub-challenge-arrow{color:var(--accent);transform:translate(2px)}.hub-mini-progress{display:flex;align-items:center;gap:var(--s2);flex-shrink:0}.hub-mini-progress-track{width:80px;height:4px;background:var(--border);border-radius:2px;overflow:hidden}.hub-mini-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .4s var(--ease)}.hub-mini-progress-text{font-family:var(--mono);font-size:11px;color:var(--dim);white-space:nowrap}.hub-concepts{display:flex;flex-direction:column;gap:2px}.hub-concept-row{display:flex;align-items:baseline;gap:var(--s4);padding:10px 14px;border-radius:var(--r2);transition:background var(--t-fast)}.hub-concept-row:hover{background:var(--accent-bg)}.hub-concept-done{opacity:.7}.hub-concept-label{min-width:160px;flex-shrink:0;display:flex;align-items:baseline;gap:var(--s2)}.hub-concept-name{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--text)}.hub-concept-count{font-family:var(--mono);font-size:11px;color:var(--dim)}.hub-concept-exercises{display:flex;flex-wrap:wrap;gap:6px}.hub-ex-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px 4px 6px;border:1px solid var(--border);border-radius:999px;background:var(--bg);text-decoration:none;color:var(--text);font-family:var(--sans);font-size:12px;white-space:nowrap;transition:border-color var(--t-fast),background var(--t-fast),transform var(--t-fast)}.hub-ex-pill:hover{border-color:var(--accent);background:var(--accent-bg);color:var(--text);text-decoration:none;transform:translateY(-1px)}.hub-ex-done{border-color:#3a8a3d}.hub-ex-done:hover{border-color:#4caf50}.hub-ex-dot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:9px;border-radius:50%;flex-shrink:0}.hub-ex-dot-easy{color:#2e7d32}.hub-ex-dot-medium{color:var(--accent)}.hub-ex-dot-hard{color:#7b1fa2}.hub-ex-done .hub-ex-dot{background:#3a8a3d;color:#fff;font-size:8px;font-weight:700}.hub-ex-name{line-height:1}.hub-mini-footer{margin-top:var(--s5);text-align:center}.hub-mini-all-link{font-family:var(--sans);font-size:13px;color:var(--accent);text-decoration:none}.hub-mini-all-link:hover{text-decoration:underline}@media (max-width: 720px){.hub-concept-row{flex-direction:column;gap:var(--s2);padding:10px}.hub-concept-label{min-width:0}.hub-challenge-num{min-width:44px;font-size:12px}.hub-challenge-body{padding:12px 14px}.hub-challenge-arrow{padding:0 12px}}[data-theme=dark] .hub-ex-done{background:#2e7d3214}[data-theme=dark] .hub-ex-done .hub-ex-dot{background:#4caf50}@media (prefers-reduced-motion: no-preference){.hub-challenge-card{animation:fade-up .35s var(--ease) both}.hub-challenge-card:nth-child(1){animation-delay:0ms}.hub-challenge-card:nth-child(2){animation-delay:60ms}.hub-challenge-card:nth-child(3){animation-delay:.12s}.hub-challenge-card:nth-child(4){animation-delay:.18s}.hub-challenge-card:nth-child(5){animation-delay:.24s}.hub-challenge-card:nth-child(6){animation-delay:.3s}.hub-concept-row{animation:fade-up .25s var(--ease) both}.hub-concept-row:nth-child(1){animation-delay:0ms}.hub-concept-row:nth-child(2){animation-delay:30ms}.hub-concept-row:nth-child(3){animation-delay:60ms}.hub-concept-row:nth-child(4){animation-delay:90ms}.hub-concept-row:nth-child(5){animation-delay:.12s}.hub-concept-row:nth-child(6){animation-delay:.15s}.hub-concept-row:nth-child(7){animation-delay:.18s}.hub-concept-row:nth-child(8){animation-delay:.21s}.hub-concept-row:nth-child(9){animation-delay:.24s}.hub-concept-row:nth-child(10){animation-delay:.27s}.hub-concept-row:nth-child(11){animation-delay:.3s}.hub-concept-row:nth-child(12){animation-delay:.33s}.hub-concept-row:nth-child(13){animation-delay:.36s}.hub-concept-row:nth-child(14){animation-delay:.39s}.hub-concept-row:nth-child(15){animation-delay:.42s}.hub-concept-row:nth-child(16){animation-delay:.45s}.hub-concept-row:nth-child(17){animation-delay:.48s}}.me-page{--me-bg: #f8f6f3;--me-bg-deep: #f0eeea;--me-bg-panel: #ffffff;--me-bg-code: #faf9f7;--me-border: var(--border);--me-text: var(--text);--me-muted: var(--muted);--me-dim: var(--dim);--me-gutter: var(--dim);--me-chip-bg: #f3f1ed;--me-chip-border: var(--border);--me-topbar-bg: #f0eeea;--me-slot-bg: rgba(212, 98, 26, .05);--me-slot-target: rgba(212, 98, 26, .08);--me-slot-dragover: rgba(212, 98, 26, .15);--me-correct-bg: rgba(46, 125, 50, .08);--me-wrong-bg: rgba(198, 40, 40, .08);--me-correct-gutter: #2e7d32;--me-wrong-gutter: #c62828;--me-correct-text: #2e7d32;--me-wrong-text: #c62828;--me-success-bg: rgba(46, 125, 50, .08);--me-error-bg: rgba(198, 40, 40, .08);--me-success-text: #2e7d32;--me-error-text: #c62828}[data-theme=dark] .me-page{--me-bg: #1e2024;--me-bg-deep: #171919;--me-bg-panel: #1a1c1f;--me-bg-code: #1e2024;--me-border: #2e3136;--me-text: #ddd9d3;--me-muted: #9c968d;--me-dim: #6a645b;--me-gutter: #5c574f;--me-chip-bg: #252729;--me-chip-border: #2e3136;--me-topbar-bg: #151618;--me-slot-bg: rgba(212, 98, 26, .06);--me-slot-target: rgba(212, 98, 26, .1);--me-slot-dragover: rgba(212, 98, 26, .2);--me-correct-bg: rgba(46, 125, 50, .14);--me-wrong-bg: rgba(198, 40, 40, .14);--me-correct-gutter: #6ed46f;--me-wrong-gutter: #ef7373;--me-correct-text: #6ed46f;--me-wrong-text: #ef7373;--me-success-bg: rgba(46, 125, 50, .12);--me-error-bg: rgba(198, 40, 40, .12);--me-success-text: #6ed46f;--me-error-text: #ef7373}.me-page{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--me-bg);color:var(--me-text);font-family:var(--sans);font-size:13px;z-index:1}.me-topbar{display:flex;align-items:center;height:44px;flex-shrink:0;background:var(--me-topbar-bg);border-bottom:1px solid var(--me-border);padding:0 16px;gap:24px}.me-brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:-.01em;color:var(--me-text);text-decoration:none;font-size:14px}.me-brand:hover{color:var(--me-text);text-decoration:none;opacity:.85}.me-brand img{height:22px;width:22px;flex-shrink:0}.me-brand em{color:var(--accent);font-style:normal}.me-topnav{display:flex;gap:0;align-items:center;height:100%}.me-topnav a{color:var(--me-muted);text-decoration:none;padding:0 16px;height:100%;display:inline-flex;align-items:center;font-size:13px;border-right:1px solid var(--me-border);transition:color .1s,background .1s}.me-topnav a:first-child{border-left:1px solid var(--me-border)}.me-topnav a:hover{color:var(--me-text);background:var(--me-bg)}.me-topright{margin-left:auto;display:flex;align-items:center;gap:14px;font-family:var(--sans)}.me-theme-toggle{background:none;border:1px solid var(--me-border);border-radius:4px;padding:5px 6px;color:var(--me-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:color .1s,border-color .1s}.me-theme-toggle:hover{color:var(--me-text);border-color:var(--me-muted)}.me-diff{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px}.me-diff-easy{background:#2e7d321f;color:var(--me-correct-text)}.me-diff-medium{background:#d4621a1f;color:var(--accent)}.me-diff-hard{background:#7b1fa21f;color:#9c27b0}[data-theme=dark] .me-diff-easy{background:#2e7d322e;color:#6ed46f}[data-theme=dark] .me-diff-medium{background:#d4621a2e;color:#f0a26b}[data-theme=dark] .me-diff-hard{background:#7b1fa238;color:#c995e0}.me-progress-label{color:var(--me-muted);font-size:12px;font-family:var(--mono)}.me-dots{display:inline-flex;gap:5px;align-items:center}.me-dot{width:8px;height:8px;border-radius:50%;background:var(--me-border);display:inline-block;transition:background .15s}.me-dot:hover{background:var(--me-muted)}.me-dot-done{background:var(--me-correct-gutter);opacity:.6}.me-dot-current{background:var(--accent);box-shadow:0 0 0 2px #d4621a33}.me-nav-chevron{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:4px;font-size:16px;line-height:1;color:var(--me-muted);text-decoration:none;transition:color .15s,background .15s;cursor:pointer;-webkit-user-select:none;user-select:none}.me-nav-chevron:hover{color:var(--me-fg);background:var(--me-line-bg)}.me-nav-chevron-disabled{opacity:.25;cursor:default;pointer-events:none}.me-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 340px;min-height:0}.me-editor{display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--me-border);background:var(--me-bg-code)}.me-tabs{display:flex;align-items:stretch;background:var(--me-topbar-bg);border-bottom:1px solid var(--me-border);height:36px;flex-shrink:0}.me-tab{display:inline-flex;align-items:center;gap:8px;padding:0 18px 0 14px;font-family:var(--mono);font-size:12.5px;color:var(--me-muted);border-right:1px solid var(--me-border);cursor:default}.me-tab-active{background:var(--me-bg-code);color:var(--me-text);position:relative}.me-tab-active:after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--accent)}.me-tab-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);display:inline-block}.me-breadcrumb{font-family:var(--sans);font-size:12px;color:var(--me-muted);padding:6px 18px;background:var(--me-bg-deep);border-bottom:1px solid var(--me-border);flex-shrink:0}.me-bcsep{color:var(--me-dim);margin:0 6px}.me-bcleaf{color:var(--me-text)}.me-code{flex:1;overflow:auto;padding:14px 0 24px;font-family:var(--mono);font-size:13px;line-height:1.7;min-height:0;transition:opacity .18s ease}.me-code-out{opacity:0}.me-code-in{opacity:1}.me-output{border-top:1px solid var(--me-border);background:var(--me-bg-deep);flex-shrink:0;display:flex;flex-direction:column;max-height:32%;min-height:110px}.me-output-head{display:flex;align-items:center;gap:12px;padding:7px 14px;border-bottom:1px solid var(--me-border);flex-shrink:0}.me-output-dots{display:inline-flex;gap:6px}.me-output-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.me-od-r{background:#ff5f56}.me-od-y{background:#ffbd2e}.me-od-g{background:#27c93f}.me-output-title{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--me-muted)}.me-output-pill{margin-left:auto;font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:999px}.me-output-pill-ok{background:var(--me-success-bg);color:var(--me-success-text)}.me-output-pill-err{background:var(--me-error-bg);color:var(--me-error-text)}.me-output-body{flex:1;overflow:auto;padding:12px 16px;font-family:var(--mono);font-size:12.5px;line-height:1.65;color:var(--me-text);white-space:pre-wrap}.me-output-cmd{color:var(--me-muted)}.me-output-line{color:var(--me-text)}.me-output-ok .me-output-line:nth-child(n+2){color:var(--me-success-text)}.me-output-err .me-output-line:nth-child(n+2){color:var(--me-error-text)}.me-output-empty{color:var(--me-dim);font-style:italic;font-size:12.5px;font-family:var(--sans)}.me-output-empty strong{color:var(--me-muted);font-weight:600}.me-row{display:flex;align-items:stretch;min-height:1.7em}.me-gutter{width:52px;flex-shrink:0;text-align:right;padding:0 14px 0 0;color:var(--me-gutter);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;font-size:12px;line-height:1.7}.me-line{flex:1;min-width:0;white-space:pre;color:var(--me-text);padding:0 16px 0 0}.me-line .kw{color:var(--syn-kw)}.me-line .fn{color:var(--syn-fn)}.me-line .str{color:var(--syn-str)}.me-line .cmt{color:var(--syn-cmt);font-style:italic}.me-line .ty{color:var(--syn-ty)}.me-line .num{color:var(--syn-num)}.me-page .me-line .kw{color:#c75500}.me-page .me-line .fn{color:#0062a3}.me-page .me-line .str{color:#1a7a2a}.me-page .me-line .cmt{color:#8c8c8c}.me-page .me-line .ty{color:#7c3aed}.me-page .me-line .num{color:#0069c2}[data-theme=dark] .me-page .me-line .kw{color:var(--syn-kw)}[data-theme=dark] .me-page .me-line .fn{color:var(--syn-fn)}[data-theme=dark] .me-page .me-line .str{color:var(--syn-str)}[data-theme=dark] .me-page .me-line .cmt{color:var(--syn-cmt)}[data-theme=dark] .me-page .me-line .ty{color:var(--syn-ty)}[data-theme=dark] .me-page .me-line .num{color:var(--syn-num)}.me-row-slot{background:var(--me-slot-bg);cursor:pointer;transition:background .15s ease}.me-row-slot .me-line{padding-left:4px}.me-row-empty .me-line{display:flex;align-items:center;gap:12px}.me-placeholder{color:var(--me-dim);font-style:italic;letter-spacing:.06em}.me-drag-hint{font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--me-dim);letter-spacing:.16em;text-transform:uppercase;opacity:.6}.me-row-targetable{background:var(--me-slot-target)}.me-row-dragover{background:var(--me-slot-dragover);outline:2px dashed var(--accent);outline-offset:-1px}.me-row-correct{background:var(--me-correct-bg)}.me-row-correct .me-gutter{color:var(--me-correct-gutter)}.me-row-wrong{background:var(--me-wrong-bg)}.me-row-wrong .me-gutter{color:var(--me-wrong-gutter)}.me-slot-filled{cursor:grab}.me-slot-filled:active{cursor:grabbing}.me-side{display:flex;flex-direction:column;background:var(--me-bg-panel);min-width:0}.me-side-head{padding:14px 16px 0;flex-shrink:0}.me-side-title{font-family:var(--serif);font-size:17px;font-weight:700;color:var(--me-text);letter-spacing:-.01em}.me-side-prompt{padding:8px 16px 14px;font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--me-muted);flex-shrink:0}.me-side-divider{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--me-muted);border-top:1px solid var(--me-border);border-bottom:1px solid var(--me-border);flex-shrink:0}.me-side-count{font-family:var(--mono);font-size:11px;color:var(--me-text);background:var(--me-chip-bg);border-radius:999px;padding:2px 8px;letter-spacing:0;border:1px solid var(--me-border)}.me-bank{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:8px;min-height:0;transition:opacity .15s ease}.me-bank-out{opacity:.3}.me-bank-dragover{background:var(--me-slot-target)}.me-bank-empty{color:var(--me-dim);font-size:12px;text-align:center;padding:24px 10px;border:1px dashed var(--me-border);border-radius:4px}.me-chip{background:var(--me-chip-bg);border:1px solid var(--me-chip-border);border-radius:4px;padding:8px 10px;font-family:var(--mono);font-size:12.5px;color:var(--me-text);cursor:grab;-webkit-user-select:none;user-select:none;display:flex;align-items:flex-start;gap:10px;white-space:pre-wrap;word-break:break-word;line-height:1.55;transition:border-color .1s,background .1s,opacity .15s,transform .15s}.me-chip:hover{border-color:var(--me-muted)}.me-chip:active{cursor:grabbing}.me-chip-dragging{opacity:.4}.me-chip-selected{outline:2px solid var(--accent);outline-offset:-2px;border-color:var(--accent)}.me-chip .kw{color:#c75500}.me-chip .fn{color:#0062a3}.me-chip .str{color:#1a7a2a}.me-chip .cmt{color:#8c8c8c;font-style:italic}.me-chip .ty{color:#7c3aed}.me-chip .num{color:#0069c2}[data-theme=dark] .me-chip .kw{color:var(--syn-kw)}[data-theme=dark] .me-chip .fn{color:var(--syn-fn)}[data-theme=dark] .me-chip .str{color:var(--syn-str)}[data-theme=dark] .me-chip .cmt{color:var(--syn-cmt)}[data-theme=dark] .me-chip .ty{color:var(--syn-ty)}[data-theme=dark] .me-chip .num{color:var(--syn-num)}.me-chip-grip{color:var(--me-dim);font-size:12px;flex-shrink:0;line-height:1.55}.me-chip-code{flex:1;min-width:0}.me-actions{border-top:1px solid var(--me-border);padding:12px;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.me-btn{font-family:var(--sans);font-size:13px;font-weight:600;padding:9px 14px;border-radius:4px;border:1px solid var(--me-chip-border);background:var(--me-chip-bg);color:var(--me-text);cursor:pointer;transition:background .1s,border-color .1s}.me-btn:hover{border-color:var(--me-muted);background:var(--me-bg-deep)}.me-btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.me-btn-primary:hover{background:#e07024;border-color:#e07024;color:#fff}.me-btn-next{display:block;background:var(--me-success-bg);border-color:var(--me-correct-gutter);color:var(--me-success-text);text-decoration:none;text-align:center}.me-btn-next:hover{background:var(--me-correct-bg);border-color:var(--me-correct-gutter);color:var(--me-success-text);text-decoration:none}.me-actions-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.me-status{font-size:12.5px;font-family:var(--sans);margin-top:2px;padding:6px 10px;border-radius:3px}.me-status-ok{color:var(--me-success-text);background:var(--me-success-bg)}.me-status-celebrate{display:flex;align-items:center;gap:6px}.me-check{flex:none}.me-confetti{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:999}.me-status-bad{color:var(--me-error-text);background:var(--me-error-bg)}.me-refresher{font-family:var(--sans);font-size:12px;color:var(--me-muted);text-decoration:none;text-align:center;margin-top:6px;padding:4px}.me-refresher:hover{color:var(--accent)}.me-back{font-family:var(--sans);font-size:11px;color:var(--me-dim);text-decoration:none;text-align:center}.me-back:hover{color:var(--me-muted)}@media (prefers-reduced-motion: no-preference){@keyframes me-pop{0%{transform:scale(.88);opacity:.6}60%{transform:scale(1.04);opacity:1}to{transform:scale(1);opacity:1}}@keyframes me-shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes me-correct-in{0%{background:#2e7d3205}to{background:var(--me-correct-bg)}}@keyframes me-slide-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes me-chip-in{0%{opacity:0;transform:translateY(4px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.me-slot-filled{animation:me-pop .18s cubic-bezier(.2,.6,.2,1) both}.me-row-wrong{animation:me-shake .3s ease both}.me-row-correct{animation:me-correct-in .3s ease both}.me-status,.me-output-cmd{animation:me-slide-up .15s ease both}.me-output-line:nth-child(1){animation:me-slide-up .15s 0ms ease both}.me-output-line:nth-child(2){animation:me-slide-up .15s 60ms ease both}.me-output-line:nth-child(3){animation:me-slide-up .15s .12s ease both}.me-output-line:nth-child(4){animation:me-slide-up .15s .18s ease both}.me-chip{animation:me-chip-in .2s ease both}.me-chip:nth-child(1){animation-delay:0ms}.me-chip:nth-child(2){animation-delay:40ms}.me-chip:nth-child(3){animation-delay:80ms}.me-chip:nth-child(4){animation-delay:.12s}.me-chip-dragging{transition:transform .1s ease,opacity .1s ease;transform:scale(.95) rotate(-1deg)}@keyframes me-celebrate-pop{0%{transform:scale(1)}35%{transform:scale(1.06) translateY(-2px)}70%{transform:scale(.98)}to{transform:scale(1)}}@keyframes me-check-draw{0%{stroke-dashoffset:26}to{stroke-dashoffset:0}}@keyframes me-status-spring{0%{transform:scale(.85);opacity:0}60%{transform:scale(1.05);opacity:1}to{transform:scale(1);opacity:1}}@keyframes me-dot-pulse{0%{transform:scale(1)}50%{transform:scale(1.5)}to{transform:scale(1)}}.me-row-celebrate.me-row-correct{animation:me-correct-in .3s ease both,me-celebrate-pop .45s cubic-bezier(.34,1.56,.64,1) calc(var(--me-i, 0) * 55ms) both}.me-check path{stroke-dasharray:26;stroke-dashoffset:26;animation:me-check-draw .35s ease-out .35s forwards}.me-status-celebrate{animation:me-status-spring .4s cubic-bezier(.34,1.56,.64,1) .25s both}.me-dot-celebrate{animation:me-dot-pulse .45s cubic-bezier(.34,1.56,.64,1) .55s 2}}@media (max-width: 900px){.me-body{grid-template-columns:1fr;grid-template-rows:1fr auto}.me-side{border-top:1px solid var(--me-border);max-height:50vh}.me-editor{border-right:none}.me-topnav{display:none}}.tc-rules{display:flex;flex-direction:column;gap:.9rem;margin:1.4rem 0 1.8rem}.tc-rule{display:flex;align-items:center;gap:1rem;font-family:var(--mono);font-size:.92rem;padding:.3rem .5rem;border-radius:8px;border:1px solid transparent;transition:border-color .3s ease,background .3s ease}.tc-rule.is-active{border-color:var(--accent);background:var(--accent-bg)}.tc-rule-body{display:flex;flex-direction:column;align-items:center}.tc-rule-premises{padding:0 .6rem .35rem;white-space:nowrap;overflow-x:auto;color:var(--muted)}.tc-rule-line{width:100%;min-width:14rem;height:1px;background:var(--text)}.tc-rule-conclusion{padding:.35rem .6rem 0;white-space:nowrap;overflow-x:auto}.tc-rule-name{flex:none;font-family:var(--sans);font-size:.8rem;font-weight:600;color:var(--accent);letter-spacing:.02em}.tc-widget{margin:1.6rem 0 2rem;padding:1.3rem 1.4rem;border:1px solid var(--border);border-radius:12px;background:var(--bg-warm)}.tc-controls{display:flex;flex-direction:column;gap:1rem}.tc-field{display:flex;flex-direction:column;gap:.35rem}.tc-field-label{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.tc-field-note{font-size:.85rem;color:var(--muted)}.tc-widget select,.tc-expr-input,.tc-env-name,.tc-env-ty,.tc-chip-value{font-family:var(--mono);font-size:.92rem;padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.tc-widget select{font-family:var(--sans);align-self:flex-start}.tc-expr-input{width:100%}.tc-env-rows{display:flex;flex-direction:column;gap:.5rem}.tc-env-row{display:flex;align-items:center;gap:.5rem;padding:.2rem .35rem;border-radius:6px;border:1px solid transparent;transition:border-color .3s ease,background .3s ease}.tc-env-row.is-active{border-color:var(--accent);background:var(--accent-bg)}.tc-env-name{width:7rem}.tc-env-colon{color:var(--muted)}.tc-env-ty{flex:1;min-width:0}.tc-env-used{flex:none;font-size:.75rem;color:var(--muted);white-space:nowrap}.tc-env-row.is-active .tc-env-used{color:var(--accent);font-weight:600}.tc-env-remove{flex:none;width:1.9rem;height:1.9rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--muted);font-size:1rem;line-height:1;cursor:pointer}.tc-env-remove:hover{color:var(--text);border-color:var(--border-dk)}.tc-env-add{align-self:flex-start;margin-top:.2rem;padding:.35rem .7rem;font-size:.85rem;border:1px dashed var(--border-dk);border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}.tc-env-add:hover{color:var(--accent);border-color:var(--accent)}.tc-toggle{display:flex;align-items:center;gap:.5rem;font-size:.88rem;color:var(--muted);cursor:pointer;width:fit-content}.tc-free-panel{display:flex;flex-direction:column;gap:.45rem}.tc-free-empty{font-size:.85rem;color:var(--muted);font-style:italic}.tc-free-chips{display:flex;flex-wrap:wrap;gap:.5rem}.tc-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .6rem;border-radius:999px;font-family:var(--mono);font-size:.82rem;border:1px solid var(--border);background:var(--bg);color:var(--text)}.tc-chip.is-unbound{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.tc-chip.is-fun{border-style:dashed;color:var(--muted)}.tc-chip-name{font-weight:600}.tc-chip-ty{color:var(--muted)}.tc-chip.is-unbound .tc-chip-ty,.tc-chip.is-unbound .tc-chip-name{color:var(--accent)}.tc-chip-value{width:4.2rem;padding:.15rem .4rem;font-size:.8rem;border-radius:999px;text-align:center}.tc-ast{margin-top:1rem;padding:.8rem 1rem;border:1px solid #333;border-radius:8px;background:var(--bg-code);color:#e1e4e8;font-family:var(--mono);font-size:.86rem;display:flex;flex-direction:column;gap:.35rem}.tc-ast-label{color:var(--syn-ty);font-weight:600}.tc-ast-muted{color:#8a8a8a}.tc-ast-muted code{color:#e1e4e8}.tc-error{margin-top:1rem;padding:.7rem 1rem;border:1px solid var(--accent);border-left:4px solid var(--accent);border-radius:6px;background:var(--accent-bg);font-family:var(--mono);font-size:.88rem;color:var(--accent)}.tc-result{margin-top:1.1rem;padding:.85rem 1.1rem;border-radius:8px;font-family:var(--mono);font-size:.98rem}.tc-result.is-ok{border:1px solid var(--accent);background:var(--accent-bg);color:var(--text)}.tc-result.is-error{border:1px solid var(--border-dk);background:var(--bg);color:var(--muted)}.tc-tabs{display:flex;gap:.4rem;margin-top:1.2rem;border-bottom:1px solid var(--border)}.tc-tab{padding:.5rem .9rem;font-family:var(--sans);font-size:.85rem;font-weight:600;color:var(--muted);background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.tc-tab:hover:not(:disabled){color:var(--text)}.tc-tab.is-active{color:var(--accent);border-bottom-color:var(--accent)}.tc-tab:disabled{color:var(--border-dk);cursor:not-allowed}.tc-stepper{display:flex;align-items:center;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.tc-stepper button{padding:.4rem .8rem;font-size:.85rem;font-family:var(--sans);border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);cursor:pointer}.tc-stepper button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.tc-stepper button:disabled{opacity:.4;cursor:default}.tc-play-btn.is-playing{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.tc-step-count{font-size:.82rem;color:var(--muted);font-family:var(--mono)}.tc-step-skip{margin-left:auto}.tc-run-panel{margin-top:1rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);display:flex;flex-direction:column;gap:.7rem}.tc-run-blocked{font-size:.88rem;color:var(--muted);font-style:italic}.tc-run-trace{font-family:var(--mono);font-size:.92rem;color:var(--text);display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.tc-run-arrow{color:var(--accent);font-weight:600}.tc-run-value{font-weight:700;color:var(--accent)}.tc-run-note{font-size:.82rem;color:var(--muted)}.dt-root{margin-top:1.2rem;overflow-x:auto}.dt-node{display:inline-flex;flex-direction:column;align-items:stretch;vertical-align:bottom}.dt-children{display:flex;align-items:flex-end;justify-content:center;gap:1.1rem;margin-bottom:.5rem}.dt-bar-row{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem;opacity:0;transform:translateY(-6px);transition:opacity .35s ease,transform .35s ease}.dt-bar{flex:1;height:0;min-width:5rem;border-top:1.5px solid var(--text)}.dt-rule{flex:none;font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.03em;color:var(--accent);white-space:nowrap}.dt-rule-axiom{margin-left:.5rem;padding:.1rem .4rem;border-radius:4px;background:var(--accent-bg)}.dt-judgement{display:inline-flex;align-items:baseline;gap:.35rem;align-self:center;padding:.4rem .7rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);font-family:var(--mono);font-size:.84rem;white-space:nowrap;opacity:0;transform:translateY(-6px);transition:opacity .35s ease,transform .35s ease,border-color .25s ease,background .25s ease,box-shadow .25s ease}.dt-node.is-revealed>.dt-judgement,.dt-node.is-revealed>.dt-bar-row{opacity:1;transform:translateY(0)}.dt-node.is-pending>.dt-judgement,.dt-node.is-pending>.dt-bar-row{opacity:.18}.dt-node.has-error.is-revealed>.dt-judgement{border-color:var(--accent)}.dt-node.is-active>.dt-judgement{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 1px var(--accent)}.dt-env{color:var(--muted)}.dt-turnstile{color:var(--accent);font-weight:600}.dt-exp{color:var(--text)}.dt-colon{color:var(--muted)}.dt-ty{color:var(--accent);font-weight:600}.dt-error{margin-top:.3rem;padding:.3rem .6rem;border-radius:5px;font-size:.78rem;font-family:var(--sans);color:var(--accent);background:var(--accent-bg);max-width:26rem;white-space:normal;text-align:center;align-self:center}.tc-pipeline{display:flex;align-items:flex-start;gap:0;margin-bottom:1.2rem;padding:.9rem 1rem;border:1px solid var(--border);border-radius:10px;background:var(--bg);overflow-x:auto}.tc-phase{display:flex;flex-direction:column;align-items:center;gap:.18rem;min-width:5.5rem;padding:.5rem .6rem;border-radius:8px;border:1px solid transparent;transition:border-color .25s ease,background .25s ease}.tc-phase--pass{border-color:var(--accent);background:var(--accent-bg)}.tc-phase--fail{border-color:#c0392b;background:#fdf0ef}[data-theme=dark] .tc-phase--fail{background:#2e1212}.tc-phase--pending{border-color:var(--border);background:transparent}.tc-phase-icon{font-size:1rem;line-height:1;font-weight:700}.tc-phase--pass .tc-phase-icon{color:var(--accent)}.tc-phase--fail .tc-phase-icon{color:#c0392b}.tc-phase--pending .tc-phase-icon{color:var(--border-dk)}.tc-phase-label{font-family:var(--sans);font-size:.78rem;font-weight:700;letter-spacing:.03em;text-align:center}.tc-phase--pass .tc-phase-label{color:var(--accent)}.tc-phase--fail .tc-phase-label{color:#c0392b}.tc-phase--pending .tc-phase-label{color:var(--muted)}.tc-phase-sub{font-family:var(--mono);font-size:.7rem;color:var(--muted);text-align:center}.tc-phase-detail{margin-top:.2rem;font-size:.68rem;font-family:var(--mono);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:7rem}.tc-phase--fail .tc-phase-detail{color:#c0392b}.tc-phase--pass .tc-phase-detail{color:var(--accent)}.tc-pipeline-sep{align-self:center;padding:0 .5rem;color:var(--border-dk);font-size:1.1rem;flex-shrink:0}.tc-syntax-bridge{display:flex;align-items:flex-start;gap:.8rem;margin-top:1rem;padding:.8rem 1rem;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.tc-syntax-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:.35rem}.tc-syntax-col-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.tc-syntax-concrete{font-family:var(--mono);font-size:.86rem;color:var(--text);word-break:break-all}.tc-syntax-arrow{align-self:center;color:var(--accent);font-size:1.2rem;font-weight:700;flex-shrink:0;padding:0 .2rem}.tc-syntax-bridge .tc-ast{margin-top:0;border-color:var(--border);background:var(--bg-warm)}.tc-grammar{margin:1.2rem 0 1.4rem;padding:.9rem 1.2rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-warm)}.tc-grammar-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:.6rem}.tc-grammar-table{border-collapse:collapse;font-family:var(--mono);font-size:.87rem}.tc-grammar-table tr+tr td{padding-top:.35rem}.tc-grammar-meta{color:var(--accent);font-weight:600;white-space:nowrap;padding-right:.9rem}.tc-grammar-sep{color:var(--muted);padding-right:.9rem;white-space:nowrap}.tc-grammar-prod{color:var(--text)}@media (max-width: 720px){.tc-rule-premises,.tc-rule-conclusion{font-size:.82rem}.tc-env-name{width:5rem}.tc-step-skip{margin-left:0}.dt-judgement{font-size:.76rem}.dt-children{gap:.7rem}.tc-syntax-bridge{flex-direction:column}.tc-syntax-arrow{align-self:flex-start;transform:rotate(90deg)}.tc-pipeline{gap:0}.tc-phase{min-width:4.2rem;padding:.4rem .3rem}.tc-phase-detail{display:none}}:root{--pre-badge: #4a90d9;--post-badge: #e8a317;--depth-badge: #2ecc71;--error: #c0392b;--error-bg: #fff0ee}[data-theme=dark]{--pre-badge: #6aaff5;--post-badge: #f0b429;--depth-badge: #4cd98a;--error: #e74c3c;--error-bg: #3a1a18}.tl-tabs{display:flex;flex-wrap:wrap;gap:var(--s1);margin:var(--s5) 0 0;border-bottom:1px solid var(--border);padding-bottom:var(--s2)}.tl-tab{padding:var(--s2) var(--s3);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg-warm);color:var(--muted);font:.88rem var(--mono);cursor:pointer;transition:border-color var(--t) var(--ease),color var(--t) var(--ease),background var(--t) var(--ease)}.tl-tab:hover{color:var(--text);border-color:var(--accent)}.tl-tab.is-active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);font-weight:600}.tl-submode{display:flex;gap:var(--s2);margin:var(--s3) 0 0;flex-wrap:wrap}.tl-submode-btn{padding:var(--s1) var(--s3);border:1px solid var(--border);border-radius:100px;background:transparent;color:var(--muted);font:.82rem var(--mono);cursor:pointer;transition:all var(--t-fast) var(--ease)}.tl-submode-btn:hover{color:var(--text);border-color:var(--dim)}.tl-submode-btn.is-active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);font-weight:600}.tl-main{display:grid;grid-template-columns:1fr 340px;gap:var(--s6);margin-top:var(--s5);align-items:start}@media (max-width: 900px){.tl-main{grid-template-columns:1fr}}.tl-toolbar{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;margin-bottom:var(--s3);padding:var(--s2) var(--s3);background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--r2)}.tl-toolbar-label{font:.8rem var(--mono);color:var(--muted);white-space:nowrap}.tl-toolbar select{font:.85rem var(--mono);padding:var(--s1) var(--s2);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg);color:var(--text);cursor:pointer}.tl-toolbar-sep{width:1px;height:20px;background:var(--border);margin:0 var(--s1)}.tl-toolbar-btn{padding:var(--s1) var(--s3);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg);color:var(--text);font:.82rem var(--mono);cursor:pointer;transition:border-color var(--t-fast) var(--ease);white-space:nowrap}.tl-toolbar-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.tl-toolbar-btn:disabled{opacity:.38;cursor:default}.tl-toolbar-btn-remove:hover:not(:disabled){border-color:var(--error);color:var(--error)}.tl-selected-hint{font:.8rem var(--mono);color:var(--accent);margin-left:var(--s1)}.tl-svg-wrap{overflow-x:auto;background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--r2);padding:var(--s3);min-height:120px;display:flex;justify-content:center}.tl-svg{display:block;max-width:100%}.tl-label-editor{display:flex;align-items:center;gap:var(--s2);margin-top:var(--s2)}.tl-label-input{width:60px;font:.9rem var(--mono);padding:var(--s1) var(--s2);border:1px solid var(--accent);border-radius:var(--r1);background:var(--bg);color:var(--text)}.tl-output-panel{margin-top:var(--s4);padding:var(--s3) var(--s4);background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--r2);font-family:var(--mono);font-size:.92rem;display:flex;flex-direction:column;gap:var(--s3)}.tl-output-row{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}.tl-output-fn{color:var(--syn-fn);font-weight:600;white-space:nowrap}.tl-output-eq{color:var(--muted)}.tl-list{display:inline-flex;flex-wrap:wrap;align-items:center;gap:0;transition:opacity var(--t) var(--ease)}.tl-list.is-dimmed{opacity:.4}.tl-list-sep{color:var(--muted);margin:0 1px}.tl-list-item{color:var(--text);transition:color var(--t-fast) var(--ease)}@media (prefers-reduced-motion: no-preference){.tl-list-item.is-new{color:var(--accent);animation:tl-pop .3s var(--ease) both}@keyframes tl-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}}.tl-list-ghost{color:var(--dim);opacity:.4}.tl-list-pending{opacity:.4}.tl-balance-result{margin-top:var(--s4);padding:var(--s3) var(--s4);border-radius:var(--r2);font:.9rem var(--mono);font-weight:600;border:1px solid}.tl-balance-result.is-ok{background:color-mix(in srgb,var(--depth-badge) 12%,transparent);border-color:var(--depth-badge);color:var(--depth-badge)}.tl-balance-result.is-fail{background:var(--error-bg);border-color:var(--error);color:var(--error)}.tl-right{position:sticky;top:calc(var(--topbar-h) + var(--s4))}.tl-code-block{margin-bottom:var(--s4)}.tl-legend{display:flex;gap:var(--s4);margin-bottom:var(--s3);font:.8rem var(--mono);color:var(--muted)}.tl-legend-item{display:flex;align-items:center;gap:var(--s2)}.tl-badge-dot{display:inline-block;width:12px;height:12px;border-radius:50%;flex-shrink:0}.tl-stepper{display:flex;flex-wrap:wrap;gap:var(--s2);margin-bottom:var(--s2)}.tl-step-btn{padding:var(--s1) var(--s3);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg-warm);color:var(--text);font:.85rem var(--mono);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.tl-step-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.tl-step-btn:disabled{opacity:.35;cursor:default}.tl-play-btn.is-playing{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.tl-progress{font:.8rem var(--mono);color:var(--dim);margin-bottom:var(--s3)}.tl-caption{padding:var(--s3) var(--s4);background:var(--bg-warm);border-left:3px solid var(--accent);border-radius:0 var(--r1) var(--r1) 0;font-size:.9rem;color:var(--muted);line-height:1.65;min-height:3.5em;margin-bottom:var(--s4);transition:color var(--t) var(--ease)}.tl-concept-note{padding:var(--s3) var(--s4);background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--r1);font-size:.85rem;color:var(--muted);line-height:1.6;margin-bottom:var(--s4)}.tl-concept-note code{font-family:var(--mono);background:var(--bg);padding:1px 4px;border-radius:3px;font-size:.9em}.tl-back-link{font-size:.85rem;color:var(--muted)}.tl-back-link a{color:var(--link);text-decoration:none}.tl-back-link a:hover{text-decoration:underline}.lx-widget{border:1px solid var(--border);border-radius:var(--r3);background:var(--bg-warm);padding:var(--s4);margin:var(--s4) 0 var(--s6)}.lx-input-row{display:flex;gap:var(--s2)}.lx-input{flex:1;padding:var(--s2) var(--s3);border:1px solid var(--border-dk);border-radius:var(--r2);background:var(--bg);color:var(--text);font:.95rem var(--mono)}.lx-input:focus{outline:none;border-color:var(--accent)}.lx-presets{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s2)}.lx-preset-btn{padding:var(--s1) var(--s2);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg);color:var(--muted);font:.78rem var(--mono);cursor:pointer;transition:border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.lx-preset-btn:hover{border-color:var(--accent);color:var(--accent)}.lx-preset-btn.is-active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.lx-label{margin-top:var(--s4);font:.72rem var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.lx-chars{display:flex;flex-wrap:wrap;gap:2px;margin-top:var(--s2)}.lx-char{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;padding:2px 4px;border-radius:var(--r1);font:1rem var(--mono);border:1px solid transparent;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.lx-char.is-future{color:var(--dim)}.lx-char.is-done{color:var(--muted);background:var(--bg)}.lx-char.is-active{color:var(--accent);background:var(--accent-bg);border-color:var(--accent)}.lx-arrow{margin:var(--s2) 0;font:.8rem var(--mono);color:var(--dim)}.lx-tokens{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s2);min-height:2em}.lx-tokens-empty{color:var(--dim);font:.9rem var(--mono)}.lx-token{padding:2px var(--s2);border:1px solid var(--border-dk);border-radius:var(--r1);background:var(--bg);color:var(--text);font:.85rem var(--mono);white-space:nowrap}@media (prefers-reduced-motion: no-preference){.lx-token.is-new{border-color:var(--accent);color:var(--accent);animation:lx-pop .3s var(--ease) both}@keyframes lx-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}}.lx-caption{margin-top:var(--s3);padding:var(--s2) var(--s3);border-left:2px solid var(--accent);background:var(--bg);border-radius:0 var(--r1) var(--r1) 0;font:.85rem var(--mono);color:var(--text)}.lx-stepper{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);margin-top:var(--s3)}.lx-step-btn{padding:var(--s1) var(--s3);border:1px solid var(--border);border-radius:var(--r1);background:var(--bg);color:var(--text);font:.85rem var(--mono);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.lx-step-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.lx-step-btn:disabled{opacity:.35;cursor:default}.lx-play-btn.is-playing{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.lx-progress{font:.8rem var(--mono);color:var(--dim)}.lx-result{margin-top:var(--s3);padding:var(--s2) var(--s3);border:1px dashed var(--border-dk);border-radius:var(--r2);font:.85rem var(--mono);color:var(--text);word-break:break-word}.lx-result-label{display:inline-block;margin-right:var(--s2);font:.72rem var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.lx-error{margin-top:var(--s4);padding:var(--s3);border:1px solid var(--accent);border-radius:var(--r2);background:var(--accent-bg)}.lx-error-msg{font:.85rem var(--mono);color:var(--accent)}.lx-error-src{margin-top:var(--s2);font:1rem var(--mono);color:var(--muted)}.lx-error-caret{color:var(--accent);border-bottom:2px solid var(--accent)}.lx-next{margin-top:var(--s6);padding-top:var(--s3);border-top:1px solid var(--border);font:.9rem var(--sans);color:var(--muted)}.lx-token.is-consumed{color:var(--dim);opacity:.55}.lx-token.is-cursor{border-color:var(--accent);border-style:dashed;color:var(--accent)}.lx-token.is-ahead{color:var(--muted)}.lx-token.is-consumed-now{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.cst-canvas{margin-top:var(--s2);padding:var(--s4) var(--s3);border:1px solid var(--border);border-radius:var(--r2);background:var(--bg);overflow-x:auto;display:flex;justify-content:center;min-height:4em}.cst-node{display:inline-flex;flex-direction:column;align-items:center}.cst-box{padding:2px var(--s2);border-radius:var(--r1);font:.82rem var(--mono);white-space:nowrap;border:1px solid var(--border-dk);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.cst-cat{background:var(--accent-bg);color:var(--link);font-style:italic}.cst-term{background:var(--bg-warm);color:var(--text)}.cst-box.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);color:var(--accent)}@media (prefers-reduced-motion: no-preference){.cst-box.is-active{animation:lx-pop .3s var(--ease) both}}.cst-connector{width:1px;height:var(--s3);background:var(--border-dk)}.cst-children{display:flex;gap:var(--s3);align-items:flex-start;padding-top:0;border-top:1px solid var(--border-dk);margin-top:-1px}.vd-canvas{margin-top:var(--s2);margin-inline:calc(-1 * var(--s8));padding:var(--s4) var(--s8);background:var(--bg);max-height:70vh;overflow:auto}@media (max-width: 860px){.vd-canvas{margin-inline:-22px;padding-inline:22px}}.vd-root{display:inline-block;min-width:100%}.vd-node{display:inline-flex;flex-direction:column;align-items:stretch;vertical-align:bottom}.vd-children{display:flex;align-items:flex-end;justify-content:center;gap:.6rem;margin-bottom:.35rem}.vd-bar-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.35rem;opacity:0;transition:opacity var(--t) var(--ease)}.vd-bar{flex:1;height:0;min-width:3rem;border-top:1.5px solid var(--text)}.vd-rule{flex:none;font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.03em;color:var(--muted)}.vd-rule-axiom{margin-left:.5rem;padding:.1rem .4rem;border-radius:4px;background:var(--accent-bg);color:var(--accent)}.vd-judgement{display:inline-flex;align-items:baseline;gap:.35rem;align-self:center;padding:.25rem .5rem;border:1px solid var(--border);border-radius:var(--r1);background:var(--bg-warm);font:.74rem var(--mono);white-space:nowrap;transition:opacity var(--t) var(--ease),border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.vd-node.is-revealed>.vd-judgement,.vd-node.is-revealed>.vd-bar-row{opacity:1}.vd-node.is-pending>.vd-judgement,.vd-node.is-pending>.vd-bar-row{opacity:.18}.vd-node.is-active>.vd-judgement{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 1px var(--accent)}.vd-env{color:var(--muted)}.vd-turnstile{color:var(--accent);font-weight:600}.vd-exp{color:var(--text)}.vd-arrow,.vd-val{color:var(--accent);font-weight:600}.vd-error{margin-top:.3rem;padding:.3rem .6rem;border-radius:var(--r1);font:.78rem var(--sans);color:var(--accent);background:var(--accent-bg)}.vr-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--s3);margin:var(--s3) 0}.vr-rule{border:1px solid var(--border);border-radius:var(--r2);background:var(--bg-warm);padding:var(--s3);display:flex;flex-direction:column;gap:var(--s2);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.vr-rule.is-active{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 1px var(--accent)}.vr-rule-body{text-align:center;font:.78rem var(--mono);color:var(--text)}.vr-rule-premises{color:var(--muted);padding-bottom:var(--s1)}.vr-rule-line{border-top:1px solid var(--border-dk);margin:var(--s1) 0}.vr-rule-meta{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2)}.vr-rule-name{font:600 .72rem var(--sans);letter-spacing:.04em;color:var(--accent)}.vr-rule-side{font:.72rem var(--mono);color:var(--dim)}.deriv-seq{margin:var(--s3) 0;padding:var(--s3) var(--s4);border-left:2px solid var(--border-dk);background:var(--bg-warm);border-radius:0 var(--r2) var(--r2) 0}.deriv-line{display:flex;gap:var(--s2);align-items:baseline;font:.9rem var(--mono);padding:1px 0}.deriv-arrow{color:var(--accent);width:1.2em;flex-shrink:0}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #ffffff;--bg-warm: #f7f5f2;--bg-code: #1d1f21;--border: #ddd9d3;--border-dk: #c8c3bb;--text: #1a1917;--muted: #5c574f;--dim: #9c968d;--accent: #d4621a;--accent-bg: #fef4ed;--link: #c0571a;--syn-kw: #f0883e;--syn-fn: #79b8ff;--syn-str: #85e89d;--syn-cmt: #6a737d;--syn-ty: #b392f0;--syn-num: #79c0ff;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--s7: 48px;--s8: 64px;--r1: 3px;--r2: 6px;--r3: 10px;--sh1: 0 1px 3px rgba(26, 25, 23, .06), 0 1px 2px rgba(26, 25, 23, .04);--sh2: 0 4px 12px rgba(26, 25, 23, .08);--sh3: 0 8px 24px rgba(26, 25, 23, .12);--ease: cubic-bezier(.2, .6, .2, 1);--t-fast: .12s;--t: .2s;--topbar-h: 52px;--sidebar-w: 248px;--serif: "Source Serif 4", Georgia, serif;--sans: "Inter", system-ui, sans-serif;--mono: "JetBrains Mono", "Fira Code", monospace}[data-theme=dark]{--bg: #1a1816;--bg-warm: #221f1c;--bg-code: #131211;--border: #353029;--border-dk: #45403a;--text: #ece7df;--muted: #b3aaa0;--dim: #7d756b;--accent: #e0772f;--accent-bg: #2a211a;--link: #e88a45}[data-theme=dark] .demo-box{--bg: #f7f5f2;--bg-warm: #ede9e3;--bg-code: #1d1f21;--border: #ddd9d3;--border-dk: #c8c3bb;--text: #1a1917;--muted: #5c574f;--dim: #9c968d;--accent: #d4621a;--accent-bg: #fef4ed;--link: #c0571a;color-scheme:light}[data-theme=dark] .callout-tip{background:#142014;border-color:#3a9b42}[data-theme=dark] .callout-tip .callout-title{color:#4caf50}[data-theme=dark] .callout-warn{background:#1e1a0a;border-color:#c8971a}[data-theme=dark] .callout-warn .callout-title{color:#d4a017}[data-theme=dark] .diff-easy{background:#142014;color:#4caf50}[data-theme=dark] .diff-hard{background:#1e1526;color:#bf7ff5}[data-theme=dark] p code,[data-theme=dark] li code{background:#2a2520;border-color:var(--border);color:var(--text)}html{scroll-behavior:smooth;color-scheme:light dark}body{background:var(--bg);color:var(--text);font-family:var(--serif);font-size:17px;line-height:1.75;-webkit-font-smoothing:antialiased;transition:background var(--t) var(--ease),color var(--t) var(--ease)}a{color:var(--link)}a:hover{color:var(--accent)}.topbar{height:var(--topbar-h);background:var(--bg-warm);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 var(--s5);position:sticky;top:0;z-index:20;gap:0;transition:background var(--t) var(--ease),border-color var(--t) var(--ease)}.site-name{font-family:var(--sans);font-size:14px;font-weight:600;color:var(--text);text-decoration:none;letter-spacing:-.01em;margin-right:var(--s5);flex-shrink:0;display:flex;align-items:center}.site-name span{color:var(--accent)}.site-name:hover{text-decoration:none;color:var(--text)}.topbar-nav{display:flex;align-items:center;gap:0;flex:1}.topbar-nav a{font-family:var(--sans);font-size:13px;color:var(--muted);text-decoration:none;padding:0 var(--s3);height:var(--topbar-h);display:flex;align-items:center;position:relative;transition:color var(--t-fast) var(--ease)}.topbar-nav a:after{content:"";position:absolute;bottom:0;left:var(--s3);right:var(--s3);height:2px;background:var(--accent);transform:scaleX(0);transform-origin:center;transition:transform var(--t) var(--ease);border-radius:1px 1px 0 0}.topbar-nav a:hover{color:var(--text)}.topbar-nav a:hover:after{transform:scaleX(.6)}.topbar-nav a.active{color:var(--accent);font-weight:500}.topbar-nav a.active:after{transform:scaleX(1)}.topbar-actions{display:flex;align-items:center;gap:var(--s2);margin-left:auto}.topbar-github{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);text-decoration:none;width:32px;height:32px;border-radius:var(--r2);transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.topbar-github:hover{color:var(--text);background:#0000000f}[data-theme=dark] .topbar-github:hover{background:#ffffff0f}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;color:var(--muted);cursor:pointer;border-radius:var(--r2);transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.theme-toggle:hover{color:var(--text);background:#0000000f}[data-theme=dark] .theme-toggle:hover{background:#ffffff0f}.menu-btn{display:none;background:none;border:1px solid var(--border);color:var(--muted);width:32px;height:32px;border-radius:var(--r1);cursor:pointer;font-size:14px;align-items:center;justify-content:center;font-family:var(--sans);transition:color var(--t-fast),background var(--t-fast)}.menu-btn:hover{color:var(--text);background:#0000000a}.layout{display:flex;min-height:calc(100vh - var(--topbar-h))}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--bg-warm);border-right:1px solid var(--border);padding:var(--s5) 0 var(--s7);position:sticky;top:var(--topbar-h);height:calc(100vh - var(--topbar-h));overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent;transition:background var(--t) var(--ease),border-color var(--t) var(--ease)}.nav-group{margin-bottom:var(--s1)}.nav-label{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);padding:var(--s3) var(--s4) var(--s1) 18px;display:block}.nav-link{display:flex;align-items:baseline;gap:7px;padding:6px 18px;font-family:var(--sans);font-size:13px;color:var(--muted);text-decoration:none;line-height:1.4;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease);border-left:2px solid transparent}.nav-link:hover{color:var(--text);text-decoration:none;background:#0000000a}[data-theme=dark] .nav-link:hover{background:#ffffff0a}.nav-link.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-bg);font-weight:500}.nav-num{font-family:var(--mono);font-size:10px;color:var(--dim);flex-shrink:0;min-width:18px;transition:color var(--t-fast) var(--ease)}.nav-link.active .nav-num{color:var(--accent)}.nav-sub-label{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);padding:var(--s3) var(--s4) var(--s1) 26px;display:block;margin-top:var(--s2)}.overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:40}.overlay.open{display:block}.main{flex:1;min-width:0}.article{max-width:1080px;margin:0 auto;padding:var(--s7) var(--s8) 100px}.page-header{margin-bottom:var(--s6);padding-bottom:var(--s5);border-bottom:1px solid var(--border)}.page-label{font-family:var(--sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);margin-bottom:var(--s2)}.page-title{font-family:var(--serif);font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--text);margin-bottom:10px}.page-intro{font-size:17px;color:var(--muted);line-height:1.7;max-width:620px}h2{font-family:var(--serif);font-size:22px;font-weight:700;letter-spacing:-.015em;color:var(--text);margin:var(--s7) 0 14px;line-height:1.25}h2:first-child{margin-top:0}h3{font-family:var(--sans);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin:28px 0 var(--s2)}p{margin-bottom:var(--s4);color:var(--text);font-size:17px;line-height:1.75}p.muted{color:var(--muted)}p:last-child{margin-bottom:0}ul,ol{padding-left:22px;margin-bottom:var(--s4)}li{margin-bottom:5px;font-size:17px;line-height:1.65}strong{font-weight:600}em{font-style:italic}p code,li code{font-family:var(--mono);font-size:13.5px;background:#f0ede8;border:1px solid var(--border);border-radius:var(--r1);padding:1px 5px;color:var(--text)}hr{border:none;border-top:1px solid var(--border);margin:var(--s6) 0}.callout{border-left:3px solid;padding:var(--s3) var(--s4);margin:var(--s5) 0;border-radius:0 var(--r2) var(--r2) 0}.callout-title{font-family:var(--sans);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px}.callout p{font-size:15px;line-height:1.65;margin:0}.callout-key{border-color:var(--accent);background:var(--accent-bg)}.callout-key .callout-title{color:var(--accent)}.callout-tip{border-color:#2e7d32;background:#f1f8f1}.callout-tip .callout-title{color:#2e7d32}.callout-warn{border-color:#c0960a;background:#fdf9ed}.callout-warn .callout-title{color:#9a7308}.callout-lab{border-color:var(--accent);background:var(--accent-bg)}.callout-lab .callout-title{color:var(--accent)}.callout-link{display:inline-block;margin-top:var(--s2);font-family:var(--mono);font-size:.88rem;font-weight:600;color:var(--accent);text-decoration:none;border-bottom:1px solid transparent;transition:border-color var(--t-fast) var(--ease)}.callout-link:hover{border-color:var(--accent)}[data-theme=dark] .callout-lab{background:#2a1e14}[data-theme=dark] .callout-tip{background:#1a2e1b}[data-theme=dark] .callout-warn{background:#2a2010}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--s7);align-items:start;margin:var(--s5) 0 var(--s6)}.two-col.lean{grid-template-columns:5fr 6fr}.sticky{position:sticky;top:calc(var(--topbar-h) + var(--s3))}.code-block{background:var(--bg-code);border-radius:var(--r2);overflow:hidden;font-size:13px;margin:0 0 var(--s4);border:1px solid #2e2e2e}.code-top{display:flex;align-items:center;justify-content:space-between;padding:var(--s2) var(--s4);background:#161819;border-bottom:1px solid #2e2e2e}.code-fname{font-family:var(--mono);font-size:11px;color:#7a7a7a;letter-spacing:.01em}.copy-btn{font-family:var(--mono);font-size:11px;color:#606060;background:none;border:none;cursor:pointer;padding:3px 8px;border-radius:var(--r1);transition:color var(--t-fast),background var(--t-fast)}.copy-btn:hover{color:#b0b0b0;background:#ffffff0f}pre{padding:var(--s4) var(--s4);overflow-x:auto;font-family:var(--mono);font-size:13px;line-height:1.8;color:#e1e4e8}.kw{color:var(--syn-kw)}.fn{color:var(--syn-fn)}.str{color:var(--syn-str)}.cmt{color:var(--syn-cmt);font-style:italic}.ty{color:var(--syn-ty)}.num{color:var(--syn-num)}.code-block.inline{max-width:680px}.cheat-section{margin-bottom:44px}.cheat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:0;border:1px solid var(--border);border-radius:var(--r2);overflow:hidden}.cheat-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;flex-direction:column}.cheat-cell:nth-child(2n){border-right:none}.cheat-cell-head{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--muted);background:var(--bg-warm);padding:7px var(--s4);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.07em}.cheat-cell pre{flex:1;padding:var(--s4);font-size:12.5px;line-height:1.75;background:var(--bg-code);color:#e1e4e8}.exercise-box{border:1px solid var(--border);border-radius:var(--r2);overflow:hidden;margin-bottom:var(--s6)}.exercise-head{background:var(--bg-warm);border-bottom:1px solid var(--border);padding:18px var(--s5);display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4)}.exercise-label{font-family:var(--sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);margin-bottom:var(--s1)}.exercise-title{font-family:var(--serif);font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.01em}.diff{font-family:var(--sans);font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--r1);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}.diff-easy{background:#e8f5e9;color:#2e7d32}.diff-medium{background:var(--accent-bg);color:var(--accent)}.diff-hard{background:#f3e5f5;color:#7b1fa2}.exercise-body{padding:var(--s5)}.exercise-desc{font-size:16px;color:var(--muted);margin-bottom:var(--s5);line-height:1.65}.req-list{list-style:none;padding:0;border-top:1px solid var(--border);margin:0}.req-list li{display:flex;gap:var(--s4);align-items:baseline;padding:10px 0;border-bottom:1px solid var(--border);font-size:15px;color:var(--text)}.req-n{font-family:var(--mono);font-size:11px;color:var(--dim);flex-shrink:0;min-width:22px}.sol-toggle{display:flex;align-items:center;gap:10px;padding:10px var(--s4);background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--r2);cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--sans);font-size:13.5px;font-weight:500;color:var(--muted);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease);margin-top:28px}.sol-toggle:hover{background:var(--border);color:var(--text)}.sol-toggle.open{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.sol-icon{font-family:var(--mono);font-size:16px;color:var(--accent);width:14px}.sol-hint{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--dim)}.sol-body{display:none;margin-top:28px}.sol-body.open{display:block}.pg-link-wrap{margin-top:28px}.pg-link-btn{display:inline-block;font-family:var(--sans);font-size:13px;font-weight:500;color:var(--accent);background:var(--accent-bg);border:1px solid #f0c9a8;border-radius:var(--r2);padding:7px var(--s4);text-decoration:none;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.pg-link-btn:hover{background:#fde8d6;color:var(--accent)}[data-theme=dark] .pg-link-btn{border-color:#5a3520}[data-theme=dark] .pg-link-btn:hover{background:#33201a}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:var(--s4);flex-wrap:wrap;margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--border);font-family:var(--sans);font-size:14px}.page-footer a{color:var(--link);font-weight:500;text-decoration:none}.page-footer a:hover{text-decoration:underline}.page-nav{margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--border)}.page-nav-label{font-family:var(--sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);margin-bottom:var(--s3)}.page-nav-links{display:flex;flex-wrap:wrap;gap:var(--s3)}.page-nav-links a{display:inline-block;font-family:var(--sans);font-size:14px;font-weight:500;color:var(--link);text-decoration:none;padding:var(--s2) var(--s4);border:1px solid var(--border);border-radius:var(--r2);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.page-nav-links a:hover{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.page-nav-prev:before{content:"← "}.page-nav-next:before{content:"→ "}.page-nav-deep:before{content:"↗ "}.page-nav-practice:before{content:"✎ "}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: no-preference){.article{animation:fade-up .35s var(--ease) both}.page-header>.page-label{animation:fade-up .4s var(--ease) both;animation-delay:0ms}.page-header>.page-title{animation:fade-up .4s var(--ease) both;animation-delay:70ms}.page-header>.page-intro{animation:fade-up .4s var(--ease) both;animation-delay:.14s}.home-hero>*{animation:fade-up .45s var(--ease) both}.home-hero>a:first-child{animation-delay:0ms}.home-hero>h1{animation-delay:80ms}.home-hero>p{animation-delay:.16s}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-warm)}::-webkit-scrollbar-thumb{background:var(--border-dk);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--dim)}html{scrollbar-width:thin;scrollbar-color:var(--border-dk) var(--bg-warm)}.home-hero{padding:var(--s8) var(--s8) var(--s7);max-width:1080px;margin:0 auto;border-bottom:1px solid var(--border)}.home-hero h1{font-family:var(--serif);font-size:42px;font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--text);margin-bottom:var(--s3)}.home-hero p{font-size:17px;color:var(--muted);max-width:520px;margin-bottom:0;line-height:1.7}.home-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s4);padding:var(--s6) var(--s8) 0;max-width:1080px;margin:0 auto}.home-card{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s5);border:1px solid var(--border);border-radius:var(--r3);background:var(--bg-warm);text-decoration:none;color:var(--text);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.home-card:hover{border-color:var(--accent);box-shadow:var(--sh2);text-decoration:none;color:var(--text)}.home-card-icon{font-size:28px;line-height:1;margin-bottom:var(--s1)}.home-card-title{font-family:var(--sans);font-size:15px;font-weight:600;color:var(--text)}.home-card-desc{font-size:14px;color:var(--muted);line-height:1.55;font-family:var(--sans)}@media (prefers-reduced-motion: no-preference){.home-cards>*{animation:fade-up .45s var(--ease) both}.home-cards>:nth-child(1){animation-delay:.2s}.home-cards>:nth-child(2){animation-delay:.28s}.home-cards>:nth-child(3){animation-delay:.36s}}.home-toc{padding:0 var(--s8) var(--s8);max-width:1080px;margin:0 auto}.toc-section{padding:var(--s6) 0;border-bottom:1px solid var(--border)}.toc-section:last-child{border-bottom:none}.toc-section-head{display:flex;align-items:baseline;gap:var(--s3);margin-bottom:var(--s3)}.toc-section-title{font-family:var(--sans);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--text)}.toc-section-count{font-family:var(--mono);font-size:11px;color:var(--dim)}.toc-items{display:flex;flex-direction:column;gap:1px}.toc-item{display:flex;align-items:baseline;gap:10px;padding:var(--s2) var(--s3);text-decoration:none;color:var(--text);font-size:15px;font-family:var(--serif);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease);border-radius:var(--r2);margin:0 calc(-1 * var(--s3))}.toc-item:hover{background:var(--accent-bg);text-decoration:none;color:var(--link)}.toc-item:hover .toc-num{color:var(--accent)}.toc-num{font-family:var(--mono);font-size:11px;color:var(--dim);min-width:20px;flex-shrink:0;transition:color var(--t-fast) var(--ease)}.toc-desc{font-size:13px;color:var(--dim);margin-left:auto;font-family:var(--sans)}.toc-diff{font-family:var(--sans);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin-left:6px}.pg-bar{height:42px;background:var(--bg-warm);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 var(--s4);gap:10px;flex-shrink:0}.pg-body{display:flex;height:calc(100vh - var(--topbar-h) - 42px);overflow:hidden}.pg-left-panel{flex:0 0 60%;display:flex;flex-direction:column;border-right:1px solid var(--border);overflow:hidden}.pg-tab-bar{display:flex;align-items:center;background:var(--bg-warm);border-bottom:1px solid var(--border);padding:0 var(--s2);gap:2px;flex-shrink:0;overflow-x:auto;scrollbar-width:none}.pg-tab-bar::-webkit-scrollbar{display:none}.pg-tab{display:flex;align-items:center;gap:6px;padding:6px 10px 6px 12px;font-family:var(--mono);font-size:11.5px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;flex-shrink:0;-webkit-user-select:none;user-select:none}.pg-tab:hover{color:var(--text)}.pg-tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:500}.pg-tab-close{font-size:14px;line-height:1;color:var(--dim);background:none;border:none;cursor:pointer;padding:0 0 1px;border-radius:2px;display:flex;align-items:center}.pg-tab-close:hover{color:#d73a49}.pg-tab-add{margin-left:4px;padding:4px var(--s2);font-size:16px;line-height:1;color:var(--muted);cursor:pointer;background:none;border:none;border-radius:var(--r1)}.pg-tab-add:hover{color:var(--text);background:#0000000d}.pg-editor-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}.pg-info-panel{flex-shrink:0;border-top:1px solid var(--border);overflow:hidden;max-height:140px;transition:max-height .2s ease;display:flex;flex-direction:column}.pg-info-panel.collapsed{max-height:24px}.pg-info-header{display:flex;align-items:center;justify-content:space-between;padding:0 12px;height:24px;flex-shrink:0;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--dim);letter-spacing:.08em;text-transform:uppercase;background:var(--bg-warm);border-bottom:1px solid var(--border)}.pg-info-arrow{transition:transform .2s ease;font-size:11px}.pg-info-panel.collapsed .pg-info-arrow{transform:rotate(-90deg)}.pg-info-content{flex:1;font-family:var(--mono);font-size:12px;line-height:1.7;padding:6px 14px;overflow-y:auto;margin:0;white-space:pre-wrap;word-break:break-word}.pg-info-empty{color:var(--dim);font-style:italic}.pg-right-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.pg-tasks-panel{flex:0 0 auto;max-height:46%;overflow-y:auto;border-bottom:1px solid var(--border)}.pg-tasks-header{font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--dim);letter-spacing:.08em;text-transform:uppercase;padding:var(--s2) var(--s4);border-bottom:1px solid var(--border);flex-shrink:0}.pg-task{padding:9px 18px;border-bottom:1px solid var(--border)}.pg-task-head{display:flex;align-items:center;gap:10px}.pg-task-icon{font-family:var(--mono);font-size:13px;color:var(--dim);width:14px;flex-shrink:0}.pg-task.pass .pg-task-icon{color:#3fb950}.pg-task.fail .pg-task-icon{color:#f85149}.pg-task-name{font-family:var(--mono);font-size:12px;color:var(--text)}.pg-task.pass .pg-task-name{color:var(--dim)}.pg-task-detail{font-family:var(--mono);font-size:11px;color:#f85149;margin-top:var(--s1);padding-left:24px}.pg-log-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}.pg-log-header{font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--dim);letter-spacing:.08em;text-transform:uppercase;padding:var(--s2) var(--s4);border-bottom:1px solid var(--border);flex-shrink:0}.pg-log{flex:1;font-family:var(--mono);font-size:12.5px;line-height:1.7;padding:var(--s4) 18px;overflow-y:auto;margin:0;color:var(--text);white-space:pre-wrap;word-break:break-word}.pg-log-empty{color:var(--dim)}.pg-body.no-exercise .pg-tasks-panel{display:none}.pg-body.no-exercise .pg-log-panel{flex:1}.run-btn{font-family:var(--sans);font-size:12px;font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:var(--r2);padding:5px var(--s4);cursor:pointer;white-space:nowrap;transition:background var(--t-fast) var(--ease)}.run-btn:hover{background:#b8521a}.run-btn:disabled{opacity:.6;cursor:default}.pg-error-line{background:#f851492e!important}.demo-box{margin:var(--s5) 0 var(--s6);border:1px solid var(--border);border-radius:var(--r3);background:var(--bg-warm);padding:var(--s4) var(--s5) var(--s5)}.demo-box input[type=radio]{display:none}.demo-timeline{display:flex;gap:var(--s2);margin-bottom:var(--s5);flex-wrap:wrap}.demo-timeline label{padding:5px 12px;border:1px solid var(--border-dk);border-radius:20px;cursor:pointer;font-family:var(--sans);font-size:13px;font-weight:500;color:var(--muted);background:var(--bg);-webkit-user-select:none;user-select:none;transition:border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.demo-timeline label:hover{border-color:var(--accent);color:var(--accent)}.demo-stage{display:grid;gap:var(--s4);margin-bottom:var(--s4)}.demo-caption{margin-top:var(--s3);min-height:48px}.cap{display:none;color:var(--text);font-size:14px;line-height:1.55}@media (max-width: 860px){.sidebar{position:fixed;left:-100%;top:var(--topbar-h);bottom:0;z-index:50;transition:left var(--t) var(--ease);width:min(var(--sidebar-w),82vw);height:calc(100vh - var(--topbar-h))}.sidebar.open{left:0}.menu-btn{display:flex}.topbar-nav{display:none}.article{padding:28px 22px 72px}.home-hero{padding:var(--s6) 22px var(--s5)}.home-hero h1{font-size:32px}.home-cards{grid-template-columns:1fr;padding:var(--s5) 22px 0}.home-toc{padding:0 22px 60px}.two-col,.two-col.lean{grid-template-columns:1fr}.sticky{position:static}.cheat-grid{grid-template-columns:1fr}.cheat-cell:nth-child(2n){border-right:1px solid var(--border)}}
