:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1f232c;--border:#2a2f3a;--text:#e6e8ec;--muted:#9aa3b2;--accent:#6ea8fe;--on-accent:#0b1020;--easy:#38c172;--medium:#e0a106;--hard:#e3574f}:root[data-theme=light]{--bg:#f6f7f9;--panel:#ffffff;--panel-2:#eceff3;--border:#d7dbe2;--text:#1b1f27;--muted:#57606f;--accent:#2f6fe0;--on-accent:#ffffff;--easy:#1a8d4e;--medium:#b9770a;--hard:#d23a30}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.55;transition:background-color .2s ease,color .2s ease}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.site-header{display:flex;align-items:center;gap:1.5rem;padding:.9rem 1.5rem;border-bottom:1px solid var(--border);background:var(--panel)}.site-header .brand{font-weight:700;color:var(--text)}.nav-links{display:flex;gap:1rem}.container{max-width:1200px;margin:0 auto;padding:2rem 1.5rem}h1{margin-top:0}.filters{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}.filters label{display:flex;flex-direction:column;font-size:.8rem;color:var(--muted);gap:.3rem}.filters select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.4rem .6rem;font-size:.95rem}.problem-list{display:flex;flex-direction:column;gap:.6rem;list-style:none;padding:0;margin:0}.problem-card{display:flex;align-items:center;gap:1rem;padding:.9rem 1.1rem;background:var(--panel);border:1px solid var(--border);border-radius:8px}.problem-card:hover{border-color:var(--accent)}.problem-card .title{font-weight:600;color:var(--text)}.problem-card .meta{margin-left:auto;display:flex;align-items:center;gap:.75rem;color:var(--muted);font-size:.85rem}.badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:.15rem .5rem;border-radius:999px;border:1px solid}.badge.easy{color:var(--easy)}.badge.medium{color:var(--medium)}.badge.hard{color:var(--hard)}.topic-tag{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.empty,.topic-tag{color:var(--muted)}.empty{padding:2rem 0}.problem-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.statement{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.25rem 1.25rem;margin:1.25rem 0}.statement code{background:var(--panel-2);padding:.1rem .35rem;border-radius:4px;font-size:.9em}.constraints{margin:1.25rem 0}.constraints ul{margin:.4rem 0 0}pre.code{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:1rem;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88rem}.placeholder{border:1px dashed var(--border);border-radius:8px;padding:1.25rem;color:var(--muted);background:var(--panel)}.workspace{display:flex;flex-direction:column;gap:.75rem}.toolbar{display:flex;align-items:center;gap:.6rem}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.45rem .9rem;font-size:.92rem;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.btn.small{padding:.3rem .6rem;font-size:.82rem}.auth-card{max-width:24rem;margin-top:1.5rem}.auth-card form{display:flex;flex-direction:column;gap:.35rem}.auth-card label{font-size:.85rem;color:var(--muted);margin-top:.6rem}.auth-card input{padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-size:.95rem}.auth-card form button{margin-top:1rem}.auth-oauth{display:flex;flex-direction:column;gap:.5rem}.auth-or{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 .25rem;color:var(--muted);font-size:.8rem}.auth-or:after,.auth-or:before{content:"";flex:1 1;border-top:1px solid var(--border)}.auth-links{margin-top:1rem;font-size:.88rem}.header-right{margin-left:auto;display:flex;align-items:center;gap:.75rem}.theme-toggle{background:none;border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer;padding:.25rem .5rem;font-size:.95rem;line-height:1.2}.theme-toggle:hover{border-color:var(--accent)}.auth-status{display:inline-flex;align-items:center;gap:.5rem}.auth-name{color:var(--muted);font-size:.9rem}.avatar{width:24px;height:24px;border-radius:50%}.muted{color:var(--muted)}.result-good{color:var(--easy);font-weight:600}.result-bad{color:var(--hard);font-weight:600}.results{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem}.test-list{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}.test-row{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88rem}.test-row details{margin:.25rem 0 .5rem}.test-row summary{cursor:pointer;color:var(--muted)}.hint{font-size:.72rem;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:.1rem .4rem}.banner{font-size:1.05rem;margin:0 0 .5rem}.raw-output{margin-top:.75rem}.raw-output summary{cursor:pointer;color:var(--muted)}.statement h2,.statement h3{margin-top:1.1rem;margin-bottom:.4rem}.statement p{margin:.7rem 0}.statement ol,.statement ul{padding-left:1.4rem;margin:.6rem 0}.statement pre{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:.9rem;overflow:auto}.statement pre code{background:none;padding:0}.editor-row{display:flex;gap:1rem;align-items:flex-start}.editor-col{flex:1 1;min-width:0}.next-tasks-panel{width:210px;flex-shrink:0;display:flex;flex-direction:column;gap:.5rem;padding-top:2px}.next-tasks-panel h3{font-size:.8rem;font-weight:600;color:var(--muted);margin:0 0 .15rem;text-transform:uppercase;letter-spacing:.04em}.next-task-card{display:flex;align-items:center;gap:.5rem;padding:.55rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--fg);font-size:.875rem;line-height:1.3}.next-task-card:hover{border-color:var(--accent);text-decoration:none}.next-task-card .badge{flex-shrink:0}.prereqs{margin:1.25rem 0}.prereq-card{display:flex;align-items:center;gap:.6rem;padding:.55rem 1rem;margin:.4rem 0;background:var(--panel);border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--fg)}.prereq-card:hover{border-color:var(--accent);text-decoration:none}@media (max-width:640px){.editor-row{flex-direction:column}.next-tasks-panel{width:100%}}.solution-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:-1px}.solution-tab{padding:.35rem .9rem;font-size:.85rem;background:none;border:1px solid transparent;border-bottom:none;color:var(--muted);cursor:pointer;border-radius:4px 4px 0 0;transition:color .15s}.solution-tab.active{color:var(--fg);border-color:var(--border);background:var(--surface)}.solution-tab:hover:not(.active):not(:disabled){color:var(--fg)}.solution-tab:disabled{opacity:.5;cursor:default}.hints{margin:1.25rem 0}.hint-box{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.55rem 1rem;margin:.4rem 0}.hint-box summary{cursor:pointer;color:var(--accent);font-weight:600}.hint-box p{margin:.5rem 0 0}.trace{max-height:360px;overflow:auto}.profile-layout{display:grid;grid-template-columns:220px 1fr;grid-gap:2rem;gap:2rem;align-items:start}.profile-sidebar{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1.25rem}.profile-avatar{width:48px;height:48px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:1.1rem;display:flex;align-items:center;justify-content:center;margin-bottom:.6rem}.profile-name{font-weight:600;margin:0 0 .15rem}.profile-email{font-size:.82rem;margin:0 0 .5rem}.profile-stats{font-size:.88rem;margin:0 0 .25rem}.profile-nav{display:flex;flex-direction:column;gap:.15rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.profile-nav-link{display:flex;align-items:center;gap:.55rem;padding:.45rem .65rem;border-radius:6px;text-decoration:none;color:var(--muted);font-size:.9rem;cursor:pointer}.profile-nav-link:hover{color:var(--fg);background:var(--panel-2);text-decoration:none}.profile-nav-link.active{color:var(--fg);background:var(--panel-2);font-weight:600}.fav-btn{font-size:1rem;padding:.15rem .4rem;line-height:1;border-color:transparent!important;background:transparent!important;color:var(--muted)}.fav-btn.active,.fav-btn:hover:not(:disabled){color:var(--accent)}@media (max-width:640px){.profile-layout{grid-template-columns:1fr}.container{padding:1.25rem 1rem}.site-header{padding:.75rem 1rem;gap:1rem}.problem-card{flex-wrap:wrap;gap:.5rem}.problem-card .meta{margin-left:0;width:100%;flex-wrap:wrap}.filters{flex-direction:column}}.problems-shell{display:flex;gap:0;align-items:flex-start}.problems-main{flex:1 1;min-width:0}.sidebar{width:var(--sidebar-w,260px);flex-shrink:0;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:.5rem;position:-webkit-sticky;position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow:auto}.sidebar.collapsed{width:auto;padding:.4rem}.sidebar-resizer{flex:0 0 0.75rem;align-self:stretch;min-height:2.5rem;position:relative;cursor:col-resize;touch-action:none}.sidebar-resizer:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;transform:translateX(-50%);background:var(--border);border-radius:999px;transition:background .15s ease,width .15s ease}.sidebar-resizer:active:before,.sidebar-resizer:hover:before{width:4px;background:var(--accent)}.sidebar.collapsed+.sidebar-resizer{display:none}.sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:.2rem .4rem .5rem}.sidebar-title{font-weight:600}.sidebar-toggle{background:none;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer;padding:.1rem .5rem;font-size:.85rem}.sidebar-progress{padding:0 .4rem .5rem;border-bottom:1px solid var(--border);margin-bottom:.5rem;font-size:.85rem}.streak{color:var(--medium);font-weight:700}.bar{height:6px;background:var(--panel-2);border-radius:999px;overflow:hidden;margin-top:.3rem}.bar-fill{height:100%;background:var(--easy);transition:width .3s}.tree{font-size:.9rem}.folder-head{display:flex;align-items:center;gap:.35rem;width:100%;background:none;border:none;color:var(--text);cursor:pointer;padding:.25rem .4rem;text-align:left}.folder-head:hover{background:var(--panel-2);border-radius:6px}.caret{color:var(--muted);width:.8rem;font-size:.7rem}.folder-label{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.folder-count{margin-left:auto;color:var(--muted);font-size:.72rem}.folder-body{padding-left:.9rem}.file{display:flex;align-items:center;gap:.4rem;padding:.2rem .4rem;border-radius:6px;color:var(--text)}.file:hover{text-decoration:none}.file.active,.file:hover{background:var(--panel-2)}.file.active{color:var(--accent)}.check{color:var(--muted);width:.9rem;text-align:center}.check.done{color:var(--easy)}.check.loading{animation:mlp-pulse 1.1s ease-in-out infinite}@keyframes mlp-pulse{0%,to{opacity:.3}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.check.loading{animation:none;opacity:.55}}.file-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prevnext{display:flex;justify-content:space-between;gap:1rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--border)}@media (max-width:760px){.problems-shell{flex-direction:column}.sidebar{width:auto;position:static;max-height:none}.sidebar-resizer{display:none}}.bt-page{max-width:680px}.bt-rules{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.85rem 1.1rem;margin:1rem 0 .5rem;font-size:.92rem}.bt-rules ul{margin:.4rem 0 0 1.2rem;padding:0}.bt-rules li{margin:.25rem 0}.bt-puzzle{background:var(--panel);border:2px solid var(--border);border-radius:12px;padding:1.25rem 1.5rem;margin:1.25rem 0;transition:border-color .3s,background .3s}.bt-puzzle.correct{border-color:var(--easy);background:color-mix(in srgb,var(--easy) 8%,var(--panel))}.bt-puzzle-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.85rem}.bt-puzzle-num{font-weight:700;font-size:.95rem;color:var(--muted)}.bt-status-ok{font-weight:700;color:var(--easy);font-size:1rem}.bt-clear-btn{margin-left:auto;background:none;border:1px solid var(--border);border-radius:6px;color:var(--muted);font-size:.82rem;padding:.2rem .65rem;cursor:pointer}.bt-clear-btn:hover{border-color:var(--accent);color:var(--fg)}.bt-equation{min-height:72px;display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;padding:.65rem .85rem;background:var(--bg);border:1px dashed var(--border);border-radius:8px;margin-bottom:1rem}.bt-placeholder{color:var(--muted);font-size:.88rem}.bt-tile{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:8px;border:2px solid var(--border);background:var(--panel-2);font-size:1.5rem;font-weight:700;font-family:monospace;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:border-color .12s,transform .1s,opacity .15s}.bt-tile:hover:not(.used):not(:disabled){border-color:var(--accent);transform:translateY(-2px)}.bt-tile.bt-op{color:var(--accent)}.bt-tile.bt-eq{color:var(--medium)}.bt-tile.bt-paren{color:var(--muted);border-style:dashed;font-size:1.3rem}.bt-tile.used{opacity:.22;cursor:default}.bt-tile.placed{background:var(--panel);border-color:var(--accent);cursor:-webkit-grab;cursor:grab}.bt-tile.placed:active{cursor:-webkit-grabbing;cursor:grabbing}.bt-pool{align-items:center}.bt-pool,.bt-pool-section{display:flex;flex-wrap:wrap;gap:.45rem}.bt-pool-sep{width:1px;height:54px;background:var(--border);margin:0 .35rem}.bt-paren-hint{font-size:.75rem;color:var(--muted);align-self:center;white-space:nowrap}.abacus-page{max-width:760px}.abacus-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.abacus-head h1{margin:0;flex:1 1 auto}.abacus-head-actions{display:flex;align-items:center;gap:.6rem}.abacus-head-actions .bt-clear-btn{margin-left:0}.abacus-lang{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.abacus-lang-btn{background:none;border:none;color:var(--muted);font-size:.8rem;font-weight:700;letter-spacing:.03em;padding:.25rem .6rem;cursor:pointer}.abacus-lang-btn.is-active{background:var(--accent);color:var(--on-accent)}.abacus-levels{display:flex;gap:.5rem;margin:1rem 0 .25rem;flex-wrap:wrap}.abacus-level{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.4rem .85rem;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--muted);font-family:inherit;cursor:pointer;transition:border-color .12s,color .12s}.abacus-level.is-active,.abacus-level:hover{border-color:var(--accent)}.abacus-level.is-active{color:var(--text);background:color-mix(in srgb,var(--accent) 12%,var(--panel))}.abacus-level-name{font-weight:700;font-size:.95rem}.abacus-level-ages{font-size:.75rem;color:var(--muted)}.abacus-grid{display:grid;grid-gap:.6rem;gap:.6rem;margin:1.25rem 0 1rem;align-items:stretch}.abacus-row{display:contents}.abacus-theme{display:flex;align-items:center;font-weight:600;font-size:.95rem;padding-right:.5rem}.abacus-cell{position:relative;min-height:74px;border-radius:10px;border:2px solid var(--border);background:var(--panel);color:var(--text);font-family:inherit;cursor:pointer;transition:border-color .12s,transform .1s,opacity .15s}.abacus-cell:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px)}.abacus-cell.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}.abacus-cell[data-state=locked]{opacity:.45;cursor:not-allowed;border-style:dashed}.abacus-cell[data-state=done]{border-color:var(--easy);background:color-mix(in srgb,var(--easy) 10%,var(--panel))}.abacus-points{font-size:1.4rem;font-weight:700}.abacus-mark{position:absolute;top:.3rem;right:.45rem;font-size:.85rem;color:var(--easy)}.abacus-status{display:flex;align-items:center;gap:.75rem;font-size:.88rem;color:var(--muted)}.abacus-detail{margin-top:1rem;padding:1rem 1.25rem;border:1px solid var(--border);border-radius:12px;background:var(--panel)}.abacus-detail-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.6rem}.abacus-detail-actions{margin-top:1rem}.tikz-figure{display:block;max-width:100%;height:auto;margin:.9rem 0}.abx-join{display:flex;flex-direction:column;gap:.3rem;max-width:26rem;margin-top:1.5rem}.abx-join label,.abx-join-label{font-size:.85rem;color:var(--muted);margin-top:.7rem}.abx-join input{padding:.55rem .7rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-size:1.05rem}.abx-levels{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.2rem}.abx-join-go{margin-top:1.2rem}.abx-code{font-size:1.6rem;letter-spacing:.08em;color:var(--accent)}.abx-code,.abx-code-small{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700}.abx-code-small{letter-spacing:.05em}.abx-dictate{margin:.75rem 0 .25rem}.abx-strip{border:1px dashed var(--border);border-radius:10px;padding:.75rem 1rem;margin-bottom:1.25rem;max-width:760px}.abx-strip-form{display:flex;gap:.5rem;flex-wrap:wrap}.abx-strip-form input{flex:1 1 12rem;padding:.35rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-size:.9rem}.abx-strip-list{list-style:none;padding:0;margin:.6rem 0 0;font-size:.9rem}.abx-strip-list li{display:flex;align-items:center;gap:.6rem;padding:.2rem 0}.abx-monitor-page{max-width:none}.abx-monitor-head{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;margin-bottom:1rem}.abx-monitor-head .abacus-lang{margin-left:auto}.abx-stale{font-size:.85rem}.abx-waiting{padding:2rem 0}.abx-teams{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));grid-gap:1rem;gap:1rem}.abx-team{border:1px solid var(--border);border-radius:12px;padding:.9rem 1rem;background:var(--panel)}.abx-team-head{display:flex;align-items:center;gap:.5rem}.abx-rank{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.abx-team-name{font-weight:700;font-size:1.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.abx-team-level{margin-left:auto}.abx-score{font-size:2.6rem;font-weight:700;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.abx-score-unit{font-size:.8rem;font-weight:400;color:var(--muted);margin-left:.35rem}.abx-score-inline{font-size:1.5rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.abx-grid{width:100%;border-collapse:collapse;margin-top:.5rem}.abx-grid th{text-align:left;font-weight:500;font-size:.8rem;color:var(--muted);padding-right:.5rem}.abx-cell{width:2.6rem;text-align:center;padding:.25rem 0;border:1px solid var(--border);border-radius:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted)}.abx-cell[data-state=ok]{color:var(--easy);font-weight:700;border-color:var(--easy);background:color-mix(in srgb,var(--easy) 12%,var(--panel))}.abx-cell[data-state=bad]{color:var(--hard);border-color:var(--hard)}.abx-monitor.is-compact .abx-score{font-size:1.8rem}.abx-monitor.is-compact .abx-team-name{font-size:1.05rem}.abx-monitor:not(.is-compact) .abx-team-name{font-size:1.5rem}.abx-monitor:not(.is-compact) .abx-score{font-size:3.4rem}.abx-monitor:not(.is-compact) .abx-cell{font-size:1.1rem;padding:.35rem 0}.abx-monitor:not(.is-compact) .abx-grid th{font-size:.95rem}.abx-monitor:not(.is-compact) .abx-teams{grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}.abx-team-bar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:.75rem 0}.abx-views{margin:0}.abacus-cell[data-state=wrong]{border-color:var(--hard);background:color-mix(in srgb,var(--hard) 10%,var(--panel))}.abacus-cell[data-state=wrong] .abacus-mark{color:var(--hard)}.abx-mark{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.abx-mark-team{border:1px solid var(--border);border-radius:10px;padding:.7rem .9rem;background:var(--panel)}.abx-mark-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.4rem}.abx-mark-score{margin-left:auto;font-weight:700;font-size:1.2rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.abx-mark-row{display:flex;align-items:center;gap:.5rem;padding:.2rem 0}.abx-mark-theme{flex:0 0 8rem;font-size:.9rem;color:var(--muted)}.abx-mark-cell{display:inline-flex;align-items:center;gap:.3rem;min-width:5.5rem;padding:.15rem .4rem;border:1px solid var(--border);border-radius:6px}.abx-mark-cell[data-state=later]{opacity:.45}.abx-mark-cell[data-state=next]{border-color:var(--accent)}.abx-mark-cell[data-state=ok]{border-color:var(--easy)}.abx-mark-cell[data-state=bad]{border-color:var(--hard)}.abx-mark-points{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.abx-mark-verdict{font-weight:700}.abx-mark-cell[data-state=ok] .abx-mark-verdict{color:var(--easy)}.abx-mark-cell[data-state=bad] .abx-mark-verdict{color:var(--hard)}.abx-mark-wait{color:var(--muted)}.abx-mark-btn{border:1px solid var(--border);border-radius:5px;background:var(--panel-2);color:var(--text);cursor:pointer;font-size:.95rem;line-height:1;padding:.15rem .4rem}.abx-mark-btn:hover:not(:disabled){border-color:var(--accent)}.abx-mark-btn.is-ok:hover:not(:disabled){border-color:var(--easy);color:var(--easy)}.abx-mark-btn.is-bad:hover:not(:disabled){border-color:var(--hard);color:var(--hard)}.abacus-print{max-width:760px}.abacus-print h2{margin:1.6rem 0 .6rem;padding-bottom:.3rem;border-bottom:1px solid var(--border)}.abacus-print-problem{display:grid;grid-template-columns:3.5rem 1fr;grid-gap:.9rem;gap:.9rem;padding:.7rem 0;page-break-inside:avoid;break-inside:avoid}.abacus-print-points{font-size:1.15rem;font-weight:700;color:var(--muted)}.abacus-print-body .statement>:first-child,.abacus-print-body>div>:first-child{margin-top:0}.abacus-print-ages{margin:-.5rem 0 0;color:var(--muted);font-size:.9rem}.abacus-print-lang{font-size:.72rem;font-weight:700;letter-spacing:.06em;color:var(--muted)}@media print{.no-print,.site-header{display:none!important}body,html{background:#fff!important;color:#000!important}*{transition:none!important}.container{padding:0!important;max-width:none!important}.abacus-print{max-width:none}.abacus-print h2{border-bottom-color:#999}.abacus-print-lang,.abacus-print-points,.muted{color:#444!important}.abacus-print-theme{page-break-before:always;break-before:page}.abacus-print-theme:first-of-type{page-break-before:auto;break-before:auto}.abacus-print .statement{background:none!important;border:none!important;padding:0!important;margin:.2rem 0!important;color:#000!important}.abacus-print .statement code{background:none!important;border:1px solid #999}}.notebooks-shell{display:flex;margin:-1.5rem -2rem -2rem;min-height:calc(100vh - 56px)}.notebooks-shell .sidebar{position:-webkit-sticky;position:sticky;top:0;height:calc(100vh - 56px);max-height:calc(100vh - 56px);border-radius:0;border-top:none;border-bottom:none;border-left:none;overflow-y:auto}.notebooks-main{flex:1 1;min-width:0;padding:1.5rem 2rem}.notebooks-main .notebook-frame-wrapper{height:calc(100vh - 56px);margin:-1.5rem -2rem}.notebook-frame-wrapper{display:flex;flex-direction:column}.notebook-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.4rem .9rem;border-bottom:1px solid var(--border);background:var(--panel);flex:0 0 auto}.notebook-toolbar-title{font-size:.85rem;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notebook-frame{width:100%;flex:1 1 auto;min-height:0;border:none;display:block}.it-formula-wrap{margin:1.25rem 0 .75rem;background:var(--panel);border:2px solid var(--border);border-radius:12px;padding:1.5rem 2rem;transition:border-color .3s,background .3s}.it-formula-wrap.it-correct{border-color:var(--easy);background:color-mix(in srgb,var(--easy) 8%,var(--panel))}.it-formula{gap:1rem;flex-wrap:wrap}.it-formula,.it-int-group{display:flex;align-items:center}.it-int-group{flex-direction:column;gap:.2rem}.it-int-sign{font-size:4.5rem;line-height:.8;font-family:serif;color:var(--fg)}.it-slot{width:60px;height:60px;border-radius:50%;border:2.5px dashed var(--muted);background:var(--bg);font-size:1.4rem;font-weight:700;font-family:monospace;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s,transform .1s;color:var(--fg)}.it-slot--active{border-color:var(--accent);border-style:solid}.it-slot--filled{border-style:solid;border-color:var(--accent);background:var(--panel-2)}.it-slot--filled:hover{border-color:var(--hard);transform:scale(.96)}.it-slot--correct{border-color:var(--easy);background:color-mix(in srgb,var(--easy) 15%,var(--panel))}.it-slot--target:not(.it-slot--filled){border-color:var(--accent);border-style:solid;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}.it-token--ghost{opacity:.9;box-shadow:0 6px 18px rgba(0,0,0,.35)}.it-body{font-size:1.4rem}.it-eq{font-size:1.5rem}.it-success{margin-top:1rem;font-weight:700;font-size:1rem;color:var(--easy)}.it-slot-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.75rem}.it-slot-btn{padding:.3rem .8rem;border-radius:6px;border:1px solid var(--border);background:var(--panel);color:var(--muted);font-size:.88rem;cursor:pointer;display:inline-flex;align-items:center;gap:.25rem}.it-slot-btn.active,.it-slot-btn:hover{border-color:var(--accent);color:var(--fg)}.it-slot-btn.active{font-weight:600}.it-slot-val{color:var(--muted)}.it-pool{flex-direction:column;margin-top:1.5rem}.it-pool,.it-pool-row{display:flex;gap:.55rem}.it-token{width:60px;height:60px;border-radius:50%;border:2px solid var(--border);background:var(--panel-2);font-size:1.3rem;font-weight:700;font-family:monospace;display:inline-flex;align-items:center;justify-content:center;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:border-color .12s,transform .1s,opacity .15s,box-shadow .12s}.it-token:hover:not(.it-token--used){border-color:var(--accent);transform:translateY(-3px);box-shadow:0 4px 12px rgba(0,0,0,.3)}.it-token:active:not(.it-token--used){cursor:-webkit-grabbing;cursor:grabbing;transform:scale(.95)}.it-token--used{opacity:.2;cursor:default}.it-token--dragging{opacity:.4}.class-breadcrumb{margin-bottom:.25rem;font-size:.85rem}.class-teacher-bar{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin:1rem 0 1.5rem;padding:.6rem .9rem;border:1px solid var(--border);border-radius:8px;background:var(--panel);font-size:.9rem}.class-draft-note{margin:-.75rem 0 1.5rem;padding:.6rem .9rem;border:1px dashed var(--border);border-radius:8px;color:var(--muted);font-size:.9rem;line-height:1.5}.class-draft-note .badge{margin-right:.4rem}.class-code{padding:.1rem .4rem;border-radius:4px;background:var(--panel-2);font-size:.95rem;letter-spacing:.08em}.class-lessons{list-style:none;padding:0;margin:1.5rem 0 0}.class-lesson{padding:.8rem 0;border-bottom:1px solid var(--border)}.class-lesson:last-child{border-bottom:none}.class-lesson-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.class-lesson-head .meta{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.class-lesson-title{font-weight:600}.class-lesson-line{margin:.35rem 0 0;font-size:.88rem}.ref-group{background:var(--panel);border:1px solid var(--border);border-radius:8px}.ref-group>summary{display:flex;align-items:center;gap:1rem;padding:.9rem 1.1rem;cursor:pointer;list-style:none}.ref-group>summary::-webkit-details-marker{display:none}.ref-group>summary:before{content:"▸";color:var(--muted);font-size:.8rem}.ref-group[open]>summary:before{content:"▾"}.ref-group>summary:hover{color:var(--accent)}.ref-group>summary .title{font-weight:600}.ref-group>summary .meta{margin-left:auto;display:flex;align-items:center;gap:.75rem;font-size:.85rem}.ref-group>.problem-list{margin:0;padding:0 .7rem .7rem 2rem;gap:.4rem}.ref-group>.problem-list .problem-card{padding:.55rem .8rem}.class-lesson-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;margin:1rem 0}.class-lesson-actions .bt-clear-btn{margin-left:0}.class-present-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);border-radius:6px;padding:.4rem .9rem;font-size:.9rem;font-weight:600;cursor:pointer}.class-present-btn:hover{filter:brightness(1.08)}.class-present-btn:disabled{opacity:.6;cursor:default}.class-join{margin-top:2rem;max-width:26rem}.class-join label{display:block;margin-bottom:.4rem;font-size:.9rem;color:var(--muted)}.class-join-row{display:flex;gap:.5rem}.class-join-row input{flex:1 1;padding:.4rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-size:.95rem;letter-spacing:.1em;text-transform:uppercase}.class-join-ok{color:var(--easy)}.class-join-err,.class-join-ok{margin:.5rem 0 0;font-size:.85rem}.class-join-err{color:var(--hard)}.invite-codes{margin:1.5rem 0 2rem}.invite-codes h2{margin-bottom:.25rem}.invite-list{list-style:none;padding:0;margin:1rem 0}.invite-list li{display:flex;align-items:center;gap:.75rem;padding:.35rem 0;border-bottom:1px solid var(--border);font-size:.9rem}.invite-label{font-weight:600;flex:1 1}.invite-new{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.invite-new input{padding:.4rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-size:.95rem}.invite-new input:first-of-type{letter-spacing:.08em;text-transform:uppercase}.class-upload{margin:.5rem 0 1rem}.class-upload label{cursor:pointer;display:inline-block}.mon{margin-top:1rem}.mon-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.mon-title{font-weight:600}.mon-stats{gap:1rem;margin:.5rem 0 .75rem;font-size:.85rem}.mon-filter,.mon-stats{display:flex;align-items:center}.mon-filter{gap:.35rem;color:var(--muted)}.mon-empty{font-size:.9rem}.mon-list{list-style:none;padding:0;margin:0}.mon-list li{display:grid;grid-template-columns:4.75rem 1rem minmax(5rem,1fr) minmax(6rem,2fr) auto;grid-gap:.5rem;gap:.5rem;align-items:baseline;padding:.3rem .4rem;border-bottom:1px solid var(--border);font-size:.85rem}.mon-time{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mon-ok .mon-mark{color:var(--easy)}.mon-bad .mon-mark{color:var(--hard)}.mon-who{font-weight:600}.mon-what,.mon-who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mon-score,.mon-what{color:var(--muted)}.mon-score{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mon-nb{font-size:.75rem}.hw-scroll{overflow-x:auto;margin-top:1rem}.hw-table{border-collapse:collapse;font-size:.85rem}.hw-table td,.hw-table th{border:1px solid var(--border);padding:.3rem .5rem;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hw-table th{background:var(--panel-2);font-weight:600}.hw-name{max-width:14rem}.hw-group,.hw-name{text-align:left!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hw-group{max-width:12rem;color:var(--muted);font-size:.85rem}.hw-total{font-weight:700}.hw-full{color:var(--easy)}.hw-part{color:var(--medium)}.hw-none{color:var(--muted)}.hw-none-late{color:var(--hard)}.hw-na{color:var(--border)}