: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}.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:not(.disabled){color:var(--fg);background:var(--panel-2);text-decoration:none}.profile-nav-link.active{color:var(--fg);background:var(--panel-2);font-weight:600}.profile-nav-link.disabled{pointer-events:none;opacity:.4}.soon-badge{margin-left:auto;font-size:.65rem;padding:.1rem .4rem;border-radius:999px;border:1px solid var(--muted);color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.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}.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}