:root{--bg:#eef1f6;--surface:#fff;--surface-2:#f6f8fb;--surface-3:#edf1f7;--ink:#172033;--ink-2:#4a5468;--ink-3:#7c869a;--line:#e0e5ee;--line-2:#cfd6e2;--primary:#2563eb;--primary-2:#1d4ed8;--primary-soft:#e8effd;--accent:#f26b0f;--accent-soft:#fff1e6;--run:#22b35e;--run-2:#168a46;--danger:#e5484d;--danger-2:#c9353a;--danger-soft:#fdecec;--success:#16a34a;--success-soft:#e7f6ec;--gold:#f5b301;--gold-soft:#fff6d9;--radius-sm:8px;--radius:12px;--radius-lg:18px;--shadow-1:0 1px 2px #1720330f, 0 1px 1px #1720330a;--shadow-2:0 8px 24px #1720331a;--shadow-3:0 24px 60px #1720333d;--focus:0 0 0 3px #2563eb59;--mono:"JetBrains Mono", ui-monospace, monospace}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Nunito,system-ui,sans-serif;font-size:15px}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}[hidden]{display:none!important}:focus-visible{box-shadow:var(--focus);outline:none}h1,h2,h3,h4,p{margin:0}.icon{flex-shrink:0;display:block}.spacer{flex:1}.muted{color:var(--ink-3);font-size:14px;font-weight:600}.btn{border-radius:var(--radius);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;height:40px;padding:0 16px;font-size:15px;font-weight:800;transition:background .15s,border-color .15s,color .15s,transform 80ms,box-shadow .15s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5}.btn-sm{border-radius:10px;gap:6px;height:32px;padding:0 10px;font-size:13.5px}.btn-square{width:40px;padding:0}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-2)}.btn-secondary{background:var(--surface);border-color:var(--line-2);color:var(--ink)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-quiet{color:var(--ink-2);background:0 0}.btn-quiet:hover:not(:disabled),.btn-quiet[aria-pressed=true],.btn-quiet[aria-expanded=true]{background:var(--surface-3);color:var(--ink)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-2)}.btn-light{color:#fff;background:#ffffff24}.btn-light:hover{background:#ffffff3d}.btn-run{background:var(--run);color:#fff;min-width:176px;height:48px;box-shadow:0 4px 0 var(--run-2);border-radius:14px;padding:0 24px;font-size:17px}.btn-run:hover{background:#1fa556}.btn-run:active{box-shadow:0 1px 0 var(--run-2);transform:translateY(3px)}.btn-run.running,.btn-run.running:hover{background:var(--danger);box-shadow:0 4px 0 var(--danger-2)}.icon-btn{background:var(--surface-3);width:36px;height:36px;color:var(--ink-2);border:none;border-radius:10px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--line);color:var(--ink)}.link-btn{color:var(--primary);background:0 0;border:none;padding:0;font-size:13.5px;font-weight:800}.link-btn:hover{text-decoration:underline}.seg{border-radius:var(--radius);background:var(--surface-3);gap:2px;padding:3px;display:inline-flex}.seg button{height:32px;color:var(--ink-2);white-space:nowrap;background:0 0;border:none;border-radius:9px;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:800;display:inline-flex}.seg button:hover:not(:disabled):not(.active){color:var(--ink)}.seg button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.seg button:disabled{opacity:.5}.seg-sm button{height:28px;padding:0 9px;font-size:12.5px}.seg-wide{display:flex}.seg-wide button{flex:1;justify-content:center}.divider{background:var(--line);width:1px;height:24px}.tile{--tile:40px;width:var(--tile);height:var(--tile);border-radius:calc(var(--tile) * .3);color:#fff;background:linear-gradient(160deg, var(--t1), var(--t2));box-shadow:inset 0 1px 0 #ffffff73, inset 0 -3px 0 #0000001f, 0 4px 10px -3px var(--t3);flex-shrink:0;place-items:center;display:inline-grid}.tile .icon{filter:drop-shadow(0 1px 1px #0000002e)}.tile--blue{--t1:#5b8cff;--t2:#2563eb;--t3:#2563eb80}.tile--orange{--t1:#ffa057;--t2:#f26b0f;--t3:#f26b0f80}.tile--green{--t1:#4ade80;--t2:#16a34a;--t3:#16a34a80}.tile--teal{--t1:#2dd4bf;--t2:#0e9f8e;--t3:#0e9f8e80}.tile--violet{--t1:#a78bfa;--t2:#7c3aed;--t3:#7c3aed73}.tile--pink{--t1:#f98bb5;--t2:#e2457e;--t3:#e2457e73}.tile--gold{--t1:#ffd45c;--t2:#e9a400;--t3:#e9a40080}.tile--red{--t1:#ff8a8d;--t2:#e5484d;--t3:#e5484d73}.tile--slate,.tile--off{--t1:#b4bdcd;--t2:#7d889c;--t3:#7d889c66}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:16px;height:60px;padding:0 20px;display:flex}.brand{color:inherit;flex-shrink:0;align-items:center;gap:10px;min-width:0;text-decoration:none;display:flex}.brand-text{flex-direction:column;min-width:0;line-height:1.15;display:flex}.brand-text b{letter-spacing:-.01em;font-size:18px;font-weight:900}.brand-text small{color:var(--ink-3);white-space:nowrap;font-size:12px;font-weight:700}.topbar-actions{align-items:center;gap:4px;margin-left:auto;display:flex}.bell,.bell-btn{position:relative}.bell-count{border:2px solid var(--surface);background:var(--danger);color:#fff;text-align:center;border-radius:999px;min-width:17px;height:17px;padding:0 4px;font-size:10px;font-weight:900;line-height:13px;position:absolute;top:3px;right:2px}.popover{z-index:60;border:1px solid var(--line);border-radius:var(--radius-lg,16px);background:var(--surface);max-height:min(480px,70vh);animation:.14s ease-out popover-in;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 16px 40px #141c2d29}@keyframes popover-in{0%{opacity:0;transform:translateY(-4px)}}.bell-panel{width:min(380px,100vw - 24px)}.topbar-nav{align-items:center;gap:2px;display:flex}.menu{position:relative}.menu-caret{transition:transform .15s}.menu-btn[aria-expanded=true] .menu-caret{transform:rotate(180deg)}.menu-panel{width:248px;padding:6px}.menu-item{text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-weight:800;display:flex}.menu-item:hover{background:var(--surface-2)}.menu-item:focus-visible{box-shadow:var(--focus);outline:none}.menu-item .ws-days{margin-left:auto}.bell-head{border-bottom:1px solid var(--line);background:var(--surface);padding:14px 16px 10px;font-size:15px;position:sticky;top:0}.bell-list{margin:0;padding:6px;list-style:none}.bell-item{text-align:left;background:0 0;border:0;border-radius:12px;align-items:flex-start;gap:12px;width:100%;padding:10px;display:flex}.bell-item:focus-visible{box-shadow:var(--focus);outline:none}.bell-panel:focus{outline:none}button.bell-item:hover{background:var(--surface-2)}.bell-item.new{background:var(--primary-soft)}.bell-item .tile{flex-shrink:0}.bell-text{flex-direction:column;gap:2px;min-width:0;font-size:14px;font-weight:700;line-height:1.35;display:flex}.bell-text small{color:var(--ink-3);font-size:12px}.bell-empty{color:var(--ink-3);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:28px 24px;font-weight:700;display:flex}@media (width<=640px){.bell-panel{width:auto;position:fixed;top:64px;left:12px;right:12px}}.account-btn{border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;gap:8px;max-width:240px;height:40px;margin-left:4px;padding:0 10px 0 4px;font-size:14px;font-weight:800;display:flex}.account-btn:hover{background:var(--surface-2)}.account-btn .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account-btn .lvl{background:var(--gold-soft);color:#8a5a00;border-radius:999px;flex-shrink:0;padding:2px 7px;font-size:12px}.account-btn.guest{gap:6px;padding:0 14px}.level-btn{border:2px solid var(--line-2);background:var(--surface);width:34px;height:34px;color:var(--ink);border-radius:50%;flex-shrink:0;place-items:center;font-size:14px;font-weight:900;transition:border-color .15s,background .15s;display:inline-grid;position:relative}.level-btn:hover:not(.locked){border-color:var(--primary)}.level-btn.done{border-color:var(--success);background:var(--success-soft);color:#11743a}.level-btn.active{border-color:var(--primary);background:var(--primary);color:#fff}.level-btn.locked{color:var(--ink-3);background:var(--surface-3);border-color:var(--surface-3);cursor:not-allowed}.level-stars{gap:2px;display:flex;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)}.level-stars i{background:var(--line-2);border-radius:50%;width:5px;height:5px}.level-stars i.on{background:var(--gold)}.main{flex:1;grid-template-columns:minmax(360px,42%) 1fr;gap:14px;min-height:0;padding:14px;display:grid}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);min-width:0;min-height:0;box-shadow:var(--shadow-1);flex-direction:column;display:flex;position:relative;overflow:hidden}.panel-head{border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:8px;min-height:56px;padding:8px 12px;display:flex}.panel-head h2{font-size:16px;font-weight:900}.counter{background:var(--surface-3);color:var(--ink-2);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:13px;font-weight:800}.counter.over{background:var(--danger-soft);color:var(--danger-2)}.code-panel{container-type:inline-size}.code-area{flex:1;min-height:0;display:flex;position:relative}.blockly,.code-editor{flex:1;min-width:0}.code-editor{overflow:hidden}.cheat-sheet{border-left:1px solid var(--line);background:var(--surface-2);flex-shrink:0;width:240px;padding:12px;overflow-y:auto}.cheat-sheet h4{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:900}.cheat-item{border:1px solid var(--line);background:var(--surface);text-align:left;border-radius:10px;width:100%;margin-bottom:6px;padding:8px 10px;display:block}.cheat-item:hover{border-color:var(--primary)}.cheat-item pre{font-family:var(--mono);white-space:pre-wrap;word-break:break-word;margin:0 0 4px;font-size:12.5px}.cheat-item span{color:var(--ink-3);font-size:12px;font-weight:700}.code-error{background:var(--danger-soft);color:var(--danger-2);border-top:1px solid #f8c9cb;align-items:flex-start;gap:8px;padding:10px 14px;font-size:14px;font-weight:800;line-height:1.4;display:flex}@container (width<=560px){.cheat-sheet{z-index:5;width:min(240px,80%);position:absolute;inset:0 0 0 auto;box-shadow:-10px 0 24px #1720331f}}@container (width<=380px){#modeSwitch button span{display:none}}.mission{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;padding:14px 18px;display:grid}.mission-main{min-width:0}.eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);align-items:center;gap:6px;font-size:12px;font-weight:900;display:flex}.mission h1{overflow-wrap:anywhere;margin-top:2px;font-size:21px;font-weight:900;line-height:1.2}.mission p{color:var(--ink-2);margin-top:4px;font-size:14.5px;font-weight:600;line-height:1.45}.mission-side{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.mission-stats{gap:6px;display:flex}.stat{background:var(--surface-3);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;height:28px;padding:0 10px;font-size:13.5px;font-weight:800;display:inline-flex}.stat .icon{color:var(--gold)}.mission-actions{gap:2px;display:flex}.mission-hint{border-radius:var(--radius);background:var(--gold-soft);color:#6b4a00;grid-column:1/-1;gap:8px;padding:10px 12px;font-size:14px;font-weight:700;line-height:1.45;display:flex}.stage-view{background:linear-gradient(#e6eef8,#dbe5f2);flex:1;min-height:0;position:relative}.stage{position:absolute;inset:0}.stage canvas{display:block}.stage-foot{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;padding:12px 16px;display:grid;container-type:inline-size}@container (width>=520px) and (width<=720px){.need{padding:0 6px}.need-label{display:none}}.controls{align-items:center;gap:10px;display:flex}.needs{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.need{background:var(--success-soft);color:#11743a;white-space:nowrap;border-radius:999px;align-items:center;gap:5px;height:28px;padding:0 10px 0 6px;font-size:13px;font-weight:800;display:inline-flex}.need.missing{background:var(--danger-soft);color:var(--danger-2)}.toast{z-index:6;border-radius:var(--radius);background:var(--ink);color:#fff;width:max-content;max-width:calc(100% - 28px);box-shadow:var(--shadow-2);opacity:0;pointer-events:none;align-items:center;gap:10px;padding:10px 12px 10px 14px;font-size:14.5px;font-weight:700;line-height:1.4;transition:opacity .2s,transform .2s;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%,-8px)}.toast.show{opacity:1;pointer-events:auto;transform:translate(-50%)}.toast-icon{color:#ffb27a;display:flex}.ach-toasts{z-index:120;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:128px;right:16px}.ach-toast{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-2);border-radius:14px;align-items:center;gap:10px;padding:8px 14px 8px 8px;font-size:14px;font-weight:800;animation:.3s ease-out slide-in;display:flex}.ach-toast small{color:var(--ink-3);font-size:12px;font-weight:700;display:block}@keyframes slide-in{0%{opacity:0;transform:translate(24px)}}.modal{z-index:100;background:#17203380;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal.hidden{display:none}.modal-card{background:var(--surface);width:min(440px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow-3);text-align:center;border-radius:22px;padding:28px 26px 24px;animation:.25s ease-out pop;position:relative;overflow-y:auto}@keyframes pop{0%{opacity:0;transform:scale(.96)}}.modal-x{position:absolute;top:14px;right:14px}.modal-icon{justify-content:center;margin-bottom:12px;display:flex}.modal-card h2{font-size:24px;font-weight:900;line-height:1.25}.modal-text{color:var(--ink-2);margin-top:8px;font-weight:600;line-height:1.45}.modal-actions{justify-content:center;gap:10px;margin-top:22px;display:flex}.stars-row{color:var(--gold);justify-content:center;gap:6px;margin-top:12px;display:flex}.stars-row .off{color:var(--line)}.stars-row>span{display:inline-flex}.stars-row .pop{animation:star-pop .4s cubic-bezier(.34, 1.56, .64, 1) var(--d,0s) backwards}@keyframes star-pop{0%{opacity:0;transform:scale(.3)rotate(-30deg)}}@media (prefers-reduced-motion:reduce){.stars-row .pop{animation:none}}.rewards{text-align:left;flex-direction:column;gap:6px;margin:16px 0 0;padding:0;list-style:none;display:flex}.rewards:empty{display:none}.reward{border-radius:var(--radius);background:var(--surface-2);align-items:center;gap:10px;padding:8px 10px;font-size:14.5px;font-weight:800;display:flex}.reward-text{flex:1;min-width:0}.confirm-card h2{font-size:19px}.sheet{background:var(--surface);width:min(980px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow-3);border-radius:22px;flex-direction:column;animation:.25s ease-out pop;display:flex;overflow:hidden}.sheet-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.sheet-head h2{align-items:center;gap:10px;font-size:21px;font-weight:900;display:flex}.sheet-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.field{color:var(--ink-2);text-align:left;flex-direction:column;gap:6px;margin-top:14px;font-size:13.5px;font-weight:800;display:flex}.input,.field input,.field textarea{border:1px solid var(--line-2);background:var(--surface);width:100%;min-width:0;height:42px;color:var(--ink);border-radius:10px;outline:none;padding:0 12px;font-size:15px;font-weight:700;transition:border-color .15s,box-shadow .15s}textarea.input,.field textarea{resize:vertical;height:auto;padding:9px 12px;line-height:1.4}.input:focus,.field input:focus,.field textarea:focus{border-color:var(--primary);box-shadow:var(--focus)}.field-input{display:block;position:relative}.field-reveal{width:32px;height:32px;color:var(--ink-3);background:0 0;border:none;border-radius:8px;place-items:center;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.field-reveal:hover{color:var(--ink);background:var(--surface-3)}.field-input input[name=password]{padding-right:44px}.field-msg{min-height:0;color:var(--ink-3);align-items:center;gap:5px;font-size:12.5px;font-weight:700;display:flex}.field-msg:empty{display:none}.field.invalid input{border-color:var(--danger)}.field.invalid input:focus{box-shadow:0 0 0 3px #e5484d40}.field.invalid .field-msg{color:var(--danger-2)}.form-error{background:var(--danger-soft);color:var(--danger-2);text-align:left;border-radius:10px;margin-top:12px;padding:9px 12px;font-size:14px;font-weight:800}.lesson-card{width:min(560px,100%)}.lesson-chapter{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:900;display:flex}.lesson-icon{justify-content:center;margin:16px 0 14px;display:flex}.lesson-text{color:var(--ink-2);margin-top:10px;font-size:16.5px;font-weight:600;line-height:1.5}.lesson-example{max-width:420px;margin:18px auto 0}.lesson-example:empty{display:none}.lesson-example-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:900}.code-example{border-radius:var(--radius);color:#e6ebf5;font-family:var(--mono);text-align:left;background:#172033;margin:0;padding:12px 14px;font-size:14px;line-height:1.55;overflow-x:auto}.pb-program{text-align:left;flex-direction:column;align-items:flex-start;gap:3px;display:inline-flex}.pb{color:#fff;border-radius:10px;flex-direction:column;align-items:flex-start;padding:7px 12px;font-size:14px;font-weight:800;display:flex}.pb-line{align-items:center;gap:6px;display:flex}.pb-move{background:#3b82f6}.pb-tool{background:#8b5cf6}.pb-light{background:#a16207}.pb-sound{background:#be185d}.pb-time{background:#64748b}.pb-var{background:#a55b80}.pb-func{background:#7e22ce}.pb-loop{background:#22a45d}.pb-if{background:#0284c7}.pb-body{flex-direction:column;align-items:flex-start;gap:3px;margin:6px 0 6px 12px;display:flex}.pb-cond{background:#0d9488;border-radius:999px;padding:2px 9px;display:inline-block}.lesson-dots{justify-content:center;gap:6px;margin-top:22px;display:flex}.lesson-dots i{background:var(--line);border-radius:4px;width:8px;height:8px;transition:width .2s}.lesson-dots i.on{background:var(--primary);width:22px}.lesson-card .modal-actions{margin-top:16px}.tutorial{z-index:90;pointer-events:none;position:fixed;inset:0}.tut-hole{outline:3px solid var(--gold);border-radius:16px;transition:all .25s;position:fixed;box-shadow:0 0 0 9999px #17203380}.tut-bubble{background:var(--surface);width:min(300px,100vw - 32px);box-shadow:var(--shadow-3);pointer-events:auto;border-radius:16px;padding:16px 18px;transition:left .25s,top .25s;position:fixed}.tut-text{margin-bottom:14px;font-size:15.5px;font-weight:800;line-height:1.45}.tut-actions{justify-content:space-between;align-items:center;gap:8px;display:flex}.tut-skip{color:var(--ink-3);background:0 0;border:none;padding:0;font-size:13px;font-weight:700;text-decoration:underline}.garage-body{grid-template-columns:320px minmax(0,1fr);gap:20px;min-height:0;padding:20px;display:grid;overflow-y:auto}.garage-left{align-self:start;position:sticky;top:0}.garage-preview{background:radial-gradient(circle at 50% 38%,#fff 0%,#e4eaf4 72%);border-radius:16px;height:290px;position:relative;overflow:hidden}.garage-preview canvas{cursor:grab;display:block}.rotate-hint{text-align:center;color:var(--ink-3);pointer-events:none;font-size:12px;font-weight:700;position:absolute;bottom:8px;left:0;right:0}.stats{gap:10px;margin-top:16px;display:grid}.stat-row{justify-content:space-between;align-items:center;gap:10px;font-size:14px;font-weight:800;display:flex}.dots{gap:4px;display:flex}.dots i{background:var(--line);border-radius:4px;width:22px;height:8px}.dots i.on{background:var(--primary)}.garage-slots{align-content:start;gap:18px;display:grid}.slot h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:900}.slot-options{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;display:grid}.part{border:2px solid var(--line);background:var(--surface);text-align:left;border-radius:14px;align-items:flex-start;gap:12px;padding:12px;transition:border-color .15s,background .15s;display:flex}.part:hover:not(:disabled){border-color:var(--line-2)}.part.active{border-color:var(--primary);background:var(--primary-soft)}.part.locked{background:var(--surface-2);cursor:not-allowed}.part-text{flex-direction:column;gap:3px;min-width:0;display:flex}.part-name{font-size:15.5px;font-weight:900}.part-desc{color:var(--ink-2);font-size:13px;font-weight:600;line-height:1.4}.part.locked .part-name,.part.locked .part-desc{color:var(--ink-3)}.part-unlocks{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.part-unlocks b{color:#fff;background:#0d9488;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:800}.part-lock{color:var(--ink-3);align-items:center;gap:4px;margin-top:4px;font-size:12.5px;font-weight:800;display:inline-flex}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{border:3px solid var(--surface);background:var(--swatch);width:38px;height:38px;box-shadow:0 0 0 1px var(--line-2);border-radius:50%}.swatch.active{box-shadow:0 0 0 2px var(--ink)}.editor-panel{container-type:inline-size}.editor-panel .panel-head .seg{flex:1}@container (width<=480px){.ed-foot .btn-secondary span,.ed-foot .btn-quiet span{display:none}.ed-foot .btn-secondary,.ed-foot .btn-quiet{width:32px;padding:0}}.ed-body{flex:1;min-height:0;padding:14px 16px;overflow-y:auto}.ed-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.ed-label{color:var(--ink-2);font-size:13.5px;font-weight:800}.stepper{background:var(--surface-3);border-radius:10px;align-items:center;gap:4px;padding:3px;display:inline-flex}.stepper button{background:var(--surface);width:28px;height:28px;color:var(--ink-2);border:none;border-radius:8px;place-items:center;display:grid}.stepper b{text-align:center;min-width:22px;font-size:14px}.ed-tools{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px;margin-bottom:14px;display:grid}.tool{border:1px solid var(--line);background:var(--surface);border-radius:10px;align-items:center;gap:7px;min-width:0;height:36px;padding:0 8px 0 5px;font-size:13px;font-weight:800;display:flex}.tool span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tool.active{border-color:var(--primary);background:var(--primary-soft)}.tool .ed-cell{border-radius:6px;flex-shrink:0;width:24px;height:24px}.ed-grid-wrap{justify-content:center;display:flex}.ed-grid{-webkit-user-select:none;user-select:none;touch-action:none;gap:2px;width:min(100%,540px);display:grid}.ed-cell{aspect-ratio:1;cursor:crosshair;color:#fff;border-radius:5px;place-items:center;display:grid}.ed-cell.floor{color:var(--ink-2);background:#e7ecf3}.ed-cell.wall{background:#5b6b8c}.ed-cell.void{background:#1f2737}.ed-cell.mud{background:#8f5f3a}.ed-cell.red{background:#ef5a62}.ed-cell.blue{background:#3d82f6}.ed-cell.green{background:#2fbf71}.ed-cell.pad{background:#ffe7cc;box-shadow:inset 0 0 0 3px #f28a3d}.ed-cell .icon{width:62%;height:62%}.ed-cell.start{color:var(--accent)}.ed-cell.star{color:var(--gold)}.ed-cell.finish{color:var(--ink)}.ed-cell.box{color:#b7652a}.ed-hint{color:var(--ink-3);text-align:center;margin-top:10px;font-size:13px;font-weight:700}.ed-field{margin-bottom:16px}.ed-field h4,.ed-group h4{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:900}.ed-lang{grid-template-columns:40px minmax(0,1fr);align-items:start;gap:8px;margin-bottom:6px;display:grid}.ed-lang span{color:var(--ink-3);padding-top:11px;font-size:11.5px;font-weight:900}.ed-groups{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.check{cursor:pointer;align-items:center;gap:8px;padding:3px 0;font-size:14px;font-weight:700;display:flex}.check input{width:17px;height:17px;accent-color:var(--primary);flex-shrink:0}.check small{color:var(--ink-3);font-family:var(--mono)}.ed-numbers{grid-template-columns:1fr 1fr;gap:12px;display:grid}.ed-numbers .field{margin-top:0}.ed-requires{border-top:1px solid var(--line);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:6px;padding:10px 16px;font-size:13px;font-weight:800;display:flex}.ed-error{background:var(--danger-soft);color:var(--danger-2);padding:9px 16px;font-size:14px;font-weight:800}.ed-foot{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding:12px 16px;display:flex}.auth-card{width:min(420px,100%)}.auth-form{text-align:left;flex-direction:column;margin-top:6px;display:flex}.auth-form .btn{height:46px;margin-top:20px}.auth-note{color:var(--ink-3);margin-top:16px;font-size:13px;font-weight:600;line-height:1.45}.profile-card{text-align:left;width:min(700px,100%)}.profile-card h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:24px 0 10px;font-size:12px;font-weight:900}.profile-head{align-items:center;gap:16px;padding-right:40px;display:flex}.profile-id{flex:1;min-width:0}.profile-name{border:1px solid #0000;border-radius:10px;outline:none;width:100%;margin-left:-8px;padding:2px 8px;font-size:23px;font-weight:900}.profile-name:hover{border-color:var(--line)}.profile-name:focus{border-color:var(--primary);box-shadow:var(--focus)}.profile-sub{color:var(--ink-3);font-size:14px;font-weight:700}.profile-top{height:30px}.profile-top .btn-logout{position:absolute;top:16px;right:58px}.btn-logout{color:var(--ink-2)}.btn-logout:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger-soft);color:var(--danger-2)}.xp{white-space:nowrap;align-items:center;gap:10px;margin-top:10px;font-size:13px;font-weight:800;display:flex}.xp-bar{background:var(--line);border-radius:4px;flex:1;height:8px;overflow:hidden}.xp-bar i{background:var(--gold);border-radius:4px;height:100%;display:block}.avatar-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:16px;display:flex}.avatar-pick{background:0 0;border:2px solid #0000;border-radius:14px;padding:2px}.avatar-pick.active{border-color:var(--primary)}.profile-stats{grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px;display:grid}.profile-stats div{background:var(--surface-2);border-radius:14px;flex-direction:column;gap:2px;padding:12px;display:flex}.profile-stats b{font-size:24px;font-weight:900}.profile-stats span{color:var(--ink-3);font-size:12.5px;font-weight:800}.ach-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.ach{border:1px solid var(--line);text-align:center;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:14px 10px 12px;display:flex}.ach b{font-size:14px;line-height:1.25}.ach small{color:var(--ink-3);font-size:12px;font-weight:600;line-height:1.35}.ach:not(.on) b{color:var(--ink-3)}.class-list{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.chip{background:var(--surface-3);border-radius:999px;align-items:center;gap:6px;height:30px;padding:0 12px 0 8px;font-size:13.5px;font-weight:800;display:inline-flex}.join-row{gap:8px;max-width:360px;display:flex}.classes-card{width:min(1120px,100%)}.cls-body{flex:1;grid-template-columns:250px minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.cls-side{border-right:1px solid var(--line);flex-direction:column;gap:6px;padding:16px;display:flex;overflow-y:auto}.cls-item{border:1px solid var(--line);background:var(--surface);text-align:left;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-weight:800;display:flex}.cls-item b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cls-item small{color:var(--ink-3);flex-shrink:0;align-items:center;gap:4px;font-weight:800;display:inline-flex}.cls-item.active{border-color:var(--primary);background:var(--primary-soft)}.cls-new{flex-direction:column;gap:8px;margin-top:10px;display:flex}.cls-main{padding:18px 22px;overflow-y:auto}.cls-main h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:22px 0 10px;font-size:12px;font-weight:900}.cls-code{background:var(--primary-soft);color:var(--ink-2);border-radius:14px;align-items:center;gap:14px;padding:10px 16px;font-weight:800;display:inline-flex}.cls-code b{font-family:var(--mono);letter-spacing:.14em;color:var(--primary-2);font-size:26px}.cls-table-wrap{border:1px solid var(--line);border-radius:12px;overflow-x:auto}.cls-table{border-collapse:collapse;min-width:100%;font-size:14px}.cls-table th,.cls-table td{border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:8px 10px}.cls-table tr:last-child td{border-bottom:none}.cls-table th{background:var(--surface-2);color:var(--ink-3);font-size:12px;font-weight:900}.cls-name{text-align:left!important}.cls-name>span{align-items:center;gap:8px;font-weight:800;display:flex}.cls-name small{color:var(--ink-3);font-weight:600;display:block}.cls-stars{color:var(--gold);vertical-align:middle;gap:1px;display:inline-flex}.cls-stars .off{color:var(--line)}.cls-missions{gap:2px;display:grid}.blocklyMainBackground{stroke:none!important}.lockLabel .blocklyFlyoutLabelText{font-weight:800;fill:var(--ink-3)!important}.stat.box .icon{color:#b7652a}.stat.lamp .icon{color:#ca8a04}.stat.note .icon{color:#be185d}.stat.time .icon{color:var(--danger)}.stat.time{font-variant-numeric:tabular-nums}.stat.battery .icon{color:var(--success)}.stat.battery.low{background:var(--danger-soft);color:var(--danger-2)}.stat.battery.low .icon{color:var(--danger)}.melody{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.melody .n{--note:var(--ink-3);border:2px solid color-mix(in srgb, var(--note) 45%, transparent);min-width:34px;height:24px;color:var(--note);border-radius:7px;place-items:center;padding:0 6px;font-size:12px;font-style:normal;font-weight:900;transition:background .15s,color .15s;display:inline-grid}.melody .n.on{background:var(--note);border-color:var(--note);color:#fff}.melody .n.next{border-color:var(--note);box-shadow:0 0 0 2px color-mix(in srgb, var(--note) 25%, transparent)}.n-1{--note:#dc2626}.n-2{--note:#ea580c}.n-3{--note:#ca8a04}.n-4{--note:#16a34a}.n-5{--note:#0891b2}.n-6{--note:#2563eb}.n-7{--note:#7c3aed}.variant-seg{align-self:flex-end}.variant-seg .seg-icon{color:var(--ink-3);place-items:center;padding:0 6px 0 4px;display:grid}.variant-seg button{justify-content:center;gap:3px;min-width:30px}.variant-seg button.passed{color:var(--success)}.lb-level{vertical-align:middle;gap:2px;margin-left:4px;display:inline-flex}.lb-level i{background:var(--line-2);border-radius:2px;width:10px;height:4px}.lb-level i.on{background:var(--danger)}.weekly-tag{background:var(--accent-soft);color:#b4490a;letter-spacing:.02em;border-radius:999px;align-items:center;gap:3px;margin-left:6px;padding:2px 7px;display:inline-flex}.level-weekly{background:var(--accent);color:#fff;width:16px;height:16px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;place-items:center;display:grid;position:absolute;top:-6px;right:-6px}.account-btn .streak{background:var(--accent-soft);color:#b4490a;border-radius:999px;flex-shrink:0;align-items:center;gap:2px;padding:2px 7px 2px 5px;font-size:12px;display:inline-flex}.streak-num{align-items:center;gap:4px;display:inline-flex}.streak-num .icon{color:var(--accent)}.leaders-card{width:min(640px,100%)}.lb-body{flex-direction:column;gap:14px;padding:16px 20px 20px;display:flex;overflow-y:auto}.lb-controls{flex-direction:column;gap:10px;display:flex}.lb-scope{align-self:flex-start;max-width:100%;overflow-x:auto}.lb-weekly{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px;display:grid}.lb-weekly-text small{color:var(--ink-3);font-size:12px;font-weight:800}.lb-weekly-text h3{font-size:17px;font-weight:900}.lb-weekly-text p{color:var(--ink-2);margin-top:2px;font-size:13.5px;font-weight:600}.lb-locked{color:var(--ink-3);align-items:center;gap:5px;font-size:13px;font-weight:800;display:inline-flex}.lb-rule,.lb-note{color:var(--ink-3);align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.lb-table[aria-busy=true]{opacity:.55;transition:opacity .15s}.lb-head,.lb-row{grid-template-columns:32px 34px 1fr auto;align-items:center;gap:12px;display:grid}.lb-head{color:var(--ink-3);padding:0 12px 6px;font-size:12px;font-weight:800}.lb-head span:last-child{text-align:right}.lb-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.lb-row{border-radius:var(--radius);background:var(--surface-2);padding:8px 12px}.lb-row.me{background:var(--primary-soft);box-shadow:inset 0 0 0 2px var(--primary)}.lb-place,.lb-medal{width:28px;height:28px;color:var(--ink-2);border-radius:50%;place-items:center;font-size:14px;font-weight:900;display:grid}.lb-medal{color:#fff}.lb-medal--gold{background:linear-gradient(#ffd04a,#e6a100)}.lb-medal--silver{background:linear-gradient(#cfd6e2,#98a3b7)}.lb-medal--bronze{background:linear-gradient(#f0a46b,#c46a2c)}.lb-name{flex-direction:column;min-width:0;display:flex}.lb-name b{text-overflow:ellipsis;white-space:nowrap;font-weight:900;overflow:hidden}.lb-name small{color:var(--ink-3);align-items:center;gap:8px;font-size:12.5px;font-weight:700;display:flex}.lb-you{background:var(--primary);color:#fff;vertical-align:2px;border-radius:999px;padding:1px 6px;font-size:11px}.lb-teacher{background:var(--surface-3);color:var(--ink-2)}.lb-streak{color:#b4490a;align-items:center;gap:2px;display:inline-flex}.lb-streak .icon{color:var(--accent)}.lb-points{font-variant-numeric:tabular-nums;text-align:right;font-size:16px;font-weight:900}.lb-gap{text-align:center;color:var(--ink-3);font-weight:900;line-height:1}.lb-empty{text-align:center;color:var(--ink-2);flex-direction:column;align-items:center;gap:10px;padding:28px 12px;font-weight:700;display:flex}.lb-empty p{max-width:360px}.lb-spinner{border:3px solid var(--line);border-top-color:var(--primary);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ed-cell.lamp{color:#fff}.ed-cell.lamp-r{background:#f58a91}.ed-cell.lamp-g{background:#6fd9a0}.ed-cell.lamp-b{background:#7aa8f8}.ed-cell.line{background:radial-gradient(circle,#1f2633 0 30%,#e7ecf3 31%)}.ed-cell.gate{color:#dc2626;background:#d7dde8}.ed-cell.note{background:var(--note);color:#fff}.ed-cell.note b{font-size:clamp(8px,1.4vw,12px);font-weight:900}.tool .ed-cell.note b{font-size:9px}.ed-tool-help{border-radius:var(--radius);background:var(--surface-2);min-height:40px;color:var(--ink-2);margin:-4px 0 12px;padding:9px 12px;font-size:13.5px;font-weight:600;line-height:1.4}.ed-tool-help b{color:var(--ink);font-weight:900}.ed-groups .check{align-items:flex-start}.ed-groups .check input{margin-top:2px}.ed-groups .check>span{flex-direction:column;display:flex}.ed-groups .check small{font-family:inherit;font-size:12.5px;font-weight:600;line-height:1.35}.cls-item>span{flex-direction:column;min-width:0;display:flex}.cls-item-meta{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden;font-weight:700!important}.cls-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.cls-head h2,.cls-student h2{font-size:22px;font-weight:900}.cls-head p{color:var(--ink-2);margin-top:2px;font-weight:700}.cls-settings{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2);grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px;margin-bottom:16px;padding:4px 16px 16px;display:grid}.cls-settings select.input{height:42px}.cls-settings-actions{grid-column:1/-1;justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.cls-overview{flex-wrap:wrap;align-items:stretch;gap:12px;display:flex}.cls-kpis{flex:1;grid-template-columns:repeat(4,minmax(96px,1fr));gap:8px;display:grid}.cls-kpi{background:var(--surface-2);border-radius:14px;flex-direction:column;justify-content:center;padding:8px 12px;display:flex}.cls-kpi b{font-variant-numeric:tabular-nums;font-size:20px;font-weight:900}.cls-kpi span{color:var(--ink-3);font-size:12px;font-weight:700}.cls-kpi.warn{background:var(--danger-soft)}.cls-kpi.warn b{color:var(--danger-2)}.cls-section-head{justify-content:space-between;align-items:center;gap:10px;margin:22px 0 10px;display:flex}.cls-section-head h3{margin:0!important}.cls-table th.cls-name{z-index:1;background:var(--surface);position:sticky;left:0}.cls-table thead th.cls-name{background:var(--surface-2)}.cls-name button{text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:0;font-weight:800;display:flex}.cls-name button:hover>span{color:var(--primary)}.cls-days{gap:2px;display:inline-flex}.cls-days i{background:var(--line);border-radius:2px;width:6px;height:14px}.cls-days i.on{background:var(--success)}.cls-fail{background:var(--gold-soft);color:#8a5a00;border-radius:999px;padding:1px 6px;font-size:12px;font-weight:900;display:inline-block}.cls-fail.hot{background:var(--danger-soft);color:var(--danger-2)}.cls-legend{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:12.5px;font-weight:700;display:flex}.cls-back{align-items:center;gap:6px;margin-bottom:14px;display:inline-flex}.cls-student{align-items:center;gap:14px;margin-bottom:14px;display:flex}.cls-student p{margin-top:2px}.cls-mission-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.cls-mission{border-radius:var(--radius);background:var(--surface-2);border-left:4px solid var(--success);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 14px;padding:10px 12px;display:flex}.cls-mission.warn{border-left-color:var(--gold)}.cls-mission.hot{border-left-color:var(--danger)}.cls-mission-name{font-weight:800}.cls-mission-meta{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.cls-error{color:var(--danger-2);align-items:center;gap:4px;display:inline-flex}.chip-sm{height:22px;padding:0 8px;font-size:12px}.cls-note{color:var(--ink-3);margin:10px 0 14px;font-size:13px;font-weight:600;line-height:1.45}.lb-class-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lb-class-filters select{width:auto;height:34px}.lb-row .lb-class-meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body.gated .app>:not(.gate):not(.ach-toasts){visibility:hidden}.gate{z-index:60;background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0;overflow-y:auto}.gate-top{background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:12px 20px;display:flex}.gate-main{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:18px;padding:32px 16px 48px;display:flex}.gate-card{background:var(--surface);width:min(440px,100%);box-shadow:var(--shadow-2);border-radius:22px;flex-direction:column;align-items:stretch;gap:4px;padding:28px;display:flex}.gate-card>.tile{align-self:flex-start;margin-bottom:8px}.gate-card h1,.gate-intro h1{font-size:24px;font-weight:900}.gate-card h2{font-size:19px;font-weight:900}.gate-lead{color:var(--ink-2);margin-top:4px;font-weight:600;line-height:1.45}.gate-note{color:var(--ink-3);font-size:14px;font-weight:600;line-height:1.45}.gate-card .btn{margin-top:16px}.gate-intro{text-align:center;max-width:560px}.gate-choices{grid-template-columns:repeat(2,minmax(0,360px));align-items:start;gap:16px;display:grid}.gate-choices .gate-card{width:auto}.gate-kinds{border:none;margin:14px 0 0;padding:0}.gate-kinds legend{margin-bottom:6px}.gate-kind{border:1px solid var(--line-2);color:var(--ink-2);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:7px 12px 7px 8px;font-weight:800;display:inline-flex}.field .gate-kind input{width:auto;height:auto;box-shadow:none;accent-color:var(--primary);border:none;margin:0;padding:0}.gate-kinds{flex-flow:wrap;gap:6px}.gate-kinds legend{width:100%}.gate-kind:has(input:checked){border-color:var(--primary);background:var(--primary-soft);color:var(--ink)}.gate-plan{grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0 0;display:grid}.gate-plan div{background:var(--surface-2);border-radius:12px;padding:10px}.gate-plan dt{color:var(--ink-3);font-size:12px;font-weight:700}.gate-plan dd{margin:0;font-weight:900}.gate-error{width:min(740px,100%)}.auth-hint{background:var(--surface-2);color:var(--ink-2);border-radius:10px;margin-top:12px;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.45}.ws-days{background:var(--gold-soft);color:#8a5a00;border-radius:999px;padding:1px 7px;font-size:12px}.ws-card .ws-body{padding:18px 22px 24px}.ws-plan{border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:12px;margin-bottom:12px;padding:16px;display:flex}.ws-plan-head{align-items:center;gap:12px;display:flex}.ws-plan-head small{color:var(--ink-3);font-size:12px;font-weight:700;display:block}.ws-plan-head b{font-size:18px;font-weight:900}.ws-status{border-radius:999px;margin-left:auto;padding:4px 10px;font-size:13px;font-weight:800}.ws-status.ok{background:var(--success-soft);color:#11743a}.ws-status.warn{background:var(--gold-soft);color:#8a5a00}.ws-status.bad{background:var(--danger-soft);color:var(--danger-2)}.ws-seats-row{justify-content:space-between;margin-bottom:6px;font-size:14px;font-weight:800;display:flex}.xp-bar.full i{background:var(--danger)}.ws-invite{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ws-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ws-list li{border-radius:var(--radius);background:var(--surface-2);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:8px 12px;display:grid}.cls-temp{background:var(--primary-soft);color:var(--ink-2);border-radius:14px;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding:12px 16px;font-weight:800;display:flex}.cls-temp b{font-family:var(--mono);letter-spacing:.06em;color:var(--primary-2);font-size:22px}.cls-temp small{color:var(--ink-3);flex-basis:100%;font-weight:600}.mt-item{flex-direction:column;align-items:flex-start;gap:4px}.cls-item>.mt-item-title{flex-direction:row;align-items:center;gap:8px;width:100%;min-width:0;display:flex}.mt-item-title b{white-space:normal;overflow-wrap:anywhere;line-height:1.25}.mt-item-title .tile{flex-shrink:0}.mt-chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.mt-text{color:var(--ink-2);font-weight:600;line-height:1.5}.mt-steps{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.mt-steps li{border-radius:var(--radius);background:var(--surface-2);grid-template-columns:64px 1fr;gap:12px;padding:10px 12px;font-weight:600;line-height:1.45;display:grid}.mt-min{color:var(--primary-2);font-variant-numeric:tabular-nums;font-weight:900}.mt-missions{flex-wrap:wrap;gap:6px;display:flex}.mt-note{margin-top:20px}@media print{.app>:not(#methods){display:none!important}#methods,#methods .sheet{width:auto;max-height:none;box-shadow:none;background:#fff;position:static}#methods .sheet-head,#methods .cls-side,#methods [data-print],#methods .mt-missions{display:none!important}#methods .cls-body{display:block;overflow:visible}#methods .mt-plan{overflow:visible}}.course-pill{border:1px solid var(--line);background:var(--surface-2);text-align:left;min-width:180px;max-width:280px;height:44px;color:var(--ink-3);border-radius:14px;flex:0 280px;align-items:center;gap:10px;margin-left:18px;padding:0 12px 0 6px;transition:border-color .15s,background .15s;display:flex;overflow:hidden}.course-pill:hover{border-color:var(--primary);background:var(--surface)}.course-pill-text{flex-direction:column;min-width:0;line-height:1.15;display:flex}.course-pill-text small{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:800;overflow:hidden}.course-pill-text b{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:900;overflow:hidden}.chapter-nav{align-items:center;gap:4px;margin:-2px 0 8px -6px;display:flex}.chapter-dots{flex-wrap:wrap;gap:6px 4px;padding-bottom:8px;display:flex}.chapter-dots .level-btn{width:30px;height:30px;font-size:13px}.chapter-step{align-self:flex-start;width:30px;height:30px}.chapter-step:disabled{opacity:.35}.map-card{width:min(1080px,100%)}.map-total{color:var(--ink-3);margin-left:8px;font-size:13px;font-weight:800}.map-body{flex-direction:column;gap:8px;padding:6px 22px 24px;display:flex;overflow-y:auto}.map-body h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:16px 0 10px;font-size:12px;font-weight:900}.map-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.map-chapter{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;gap:12px;padding:14px;display:flex}.map-chapter.current{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.map-chapter.locked{background:var(--surface-2)}.map-chapter header{align-items:center;gap:12px;display:flex}.map-chapter-title{flex-direction:column;min-width:0;display:flex}.map-chapter-title b{font-size:16px;font-weight:900}.map-chapter-title small{color:var(--ink-3);align-items:center;gap:4px;font-size:12.5px;font-weight:700;display:flex}.map-missions{flex-wrap:wrap;gap:8px 6px;padding-bottom:8px;display:flex}.map-progress{background:var(--line);border-radius:3px;height:6px;overflow:hidden}.map-progress i{background:var(--success);height:100%;display:block}.map-chapter footer{gap:4px;margin:-4px 0 -6px -8px;display:flex}.map-challenges{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;display:grid}.map-challenge{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);text-align:left;align-items:center;gap:10px;padding:10px 12px;display:flex}.map-challenge:hover:not(.locked){border-color:var(--primary)}.map-challenge.current{border-color:var(--primary);background:var(--primary-soft)}.map-challenge.weekly{border-color:var(--accent)}.map-challenge.locked{background:var(--surface-2);color:var(--ink-3);cursor:not-allowed}.map-challenge-num{background:var(--danger-soft);width:30px;height:30px;color:var(--danger-2);border-radius:50%;flex-shrink:0;place-items:center;font-weight:900;display:grid}.map-challenge.locked .map-challenge-num{background:var(--surface-3);color:var(--ink-3)}.map-challenge-text{flex-direction:column;flex:1;min-width:0;display:flex}.map-challenge-text b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-challenge-text small{align-items:center;gap:6px;display:flex}.map-challenge-text .lb-level{margin-left:0}.map-new{align-self:flex-start;margin-top:10px}.avatar-photo{background:var(--surface-3);padding:0;overflow:hidden}.avatar-photo img{object-fit:cover;width:100%;height:100%;display:block}.avatar-upload{width:44px;height:44px;color:var(--ink-3);place-items:center;display:grid;border:2px dashed var(--line-2)!important}.avatar-upload:hover{color:var(--primary);border-color:var(--primary)!important}.photo-note{color:var(--ink-3);margin-top:6px;font-size:12.5px;font-weight:600}.crop-card{width:min(360px,100%)}.crop-view{width:240px;height:240px;box-shadow:0 0 0 4px var(--primary-soft);cursor:grab;touch-action:none;border-radius:28%;margin:16px auto 0;overflow:hidden}.crop-view:active{cursor:grabbing}.crop-view canvas{width:100%;height:100%;display:block}.crop-zoom{color:var(--ink-3);align-items:center;gap:10px;margin:16px 8px 0;display:flex}.crop-zoom input{accent-color:var(--primary);flex:1}.profile-links{flex-wrap:wrap;gap:8px;display:flex}.ws-title{align-items:center;gap:14px;display:flex}.ws-tabs{margin:4px 0 16px}.ws-plan-term{text-align:right;flex-direction:column;align-items:flex-end;margin-left:auto;font-weight:800;display:flex}.ws-plan-term small{color:var(--ink-3);font-size:12.5px;font-weight:700}.ws-plans{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.ws-plan-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;align-items:flex-start;gap:4px;padding:14px;display:flex}.ws-plan-card.current{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.ws-plan-card>b{margin-top:6px;font-size:17px;font-weight:900}.ws-plan-card>small{color:var(--ink-3);font-size:13px;font-weight:700}.ws-plan-card ul{color:var(--ink-2);flex-direction:column;gap:4px;margin:8px 0 0;padding:0;font-size:13px;font-weight:700;list-style:none;display:flex}.ws-plan-card li{gap:6px;display:flex}.ws-plan-card li .icon{color:var(--success);margin-top:2px}.ws-plan-card .chip{background:var(--primary-soft);color:var(--primary-2);margin-top:10px}.ws-request{border-radius:var(--radius);background:var(--gold-soft);color:#8a5a00;align-items:center;gap:12px;margin-bottom:10px;padding:12px 14px;display:flex}.ws-request span{flex-direction:column;display:flex}.ws-request small{font-weight:700}.ws-request-form{border:1px solid var(--line);border-radius:var(--radius-lg);grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;padding:4px 16px 16px;display:grid}.ws-request-form select.input{height:42px}.ws-request-form .ws-wide{grid-column:1/-1}.ws-request-form .btn{margin-top:14px}.ws-history{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ws-history li{border-radius:var(--radius);background:var(--surface-2);grid-template-columns:150px 1fr auto;align-items:baseline;gap:12px;padding:10px 12px;font-weight:600;display:grid}.ws-history-date{color:var(--ink-2);font-weight:800}.ws-history small{color:var(--ink-3);font-weight:700}.ws-toggle{border:1px solid var(--line);border-radius:var(--radius-lg);cursor:pointer;align-items:flex-start;gap:12px;margin-top:6px;padding:14px;display:flex}.ws-toggle input{width:18px;height:18px;accent-color:var(--primary);margin-top:2px}.ws-toggle span{flex-direction:column;gap:2px;display:flex}.ws-toggle small{color:var(--ink-3);font-size:13px;font-weight:600}.battle-card{width:min(760px,100%)}.battle-body{padding:16px 22px 22px;overflow-y:auto}.battle-choices{margin-top:14px}.battle-choices .gate-card{box-shadow:none;border:1px solid var(--line)}.battle-code{border-radius:var(--radius-lg);background:var(--danger-soft);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:14px;padding:14px 18px;font-weight:800;display:flex}.battle-code b{font-family:var(--mono);letter-spacing:.16em;color:var(--danger-2);font-size:34px}.battle-lobby h3,.battle-results h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:18px 0 8px;font-size:12px;font-weight:900}.battle-lobby .gate-note{margin-top:8px}.battle-wait{color:var(--ink-3);align-items:center;gap:6px;font-weight:800;display:inline-flex}.battle-bar{border-bottom:1px solid var(--line);background:linear-gradient(90deg, var(--danger-soft), var(--surface));align-items:center;gap:12px;padding:8px 14px;display:flex}.battle-label{color:var(--danger-2);white-space:nowrap;align-items:center;gap:6px;font-weight:900;display:inline-flex}.battle-timer{min-width:56px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.battle-timer.low{color:var(--danger)}.battle-chips{scrollbar-width:none;flex:1;gap:6px;min-width:0;display:flex;overflow-x:auto}.battle-chip{background:var(--surface);border:1px solid var(--line);border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:3px 9px 3px 3px;font-size:12.5px;font-weight:800;display:inline-flex}.battle-chip.me{border-color:var(--primary)}.battle-chip.solved{background:var(--success-soft);border-color:var(--success)}.battle-chip.left{opacity:.5}.battle-chip-name{text-overflow:ellipsis;white-space:nowrap;max-width:90px;overflow:hidden}.battle-chip-status{color:var(--ink-3);font-variant-numeric:tabular-nums;align-items:center;gap:2px;display:inline-flex}.battle-chip-status.solved{color:#11743a}.battle-countdown{z-index:5;color:#fff;pointer-events:none;background:#17203373;flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex;position:absolute;inset:0}.battle-countdown b{font-size:96px;font-weight:900;line-height:1;animation:.3s ease-out pop}.battle-countdown span{font-size:18px;font-weight:800}.battle-results{text-align:center}.battle-results h2{font-size:26px;font-weight:900}.battle-podium{justify-content:center;align-items:flex-end;gap:18px;margin:20px 0 14px;display:flex}.battle-podium-place{border-radius:var(--radius-lg);background:var(--surface-2);flex-direction:column;align-items:center;gap:6px;width:140px;padding:14px 10px;display:flex}.battle-podium-place.place-1{background:var(--gold-soft);order:2;padding-top:22px}.battle-podium-place.place-2{order:1}.battle-podium-place.place-3{order:3}.battle-podium-place small{color:var(--ink-3);font-variant-numeric:tabular-nums;font-weight:700}.battle-results .ws-list{text-align:left}.battle-results .ws-list li{grid-template-columns:28px auto 1fr auto}body.in-battle #lessonBtn,body.in-battle #chapterNav,body.in-battle #courseBtn{visibility:hidden}@media (width<=1440px){.topbar-nav .btn-quiet span,.account-btn .name{display:none}.topbar-nav .btn-quiet{width:40px;padding:0}}@media (width<=1180px){.menu-btn>span{display:none}.menu-btn{padding:0 8px}.chap-title{display:none}}@media (width<=900px){.app{height:auto;min-height:100%}.main{grid-template-rows:auto auto;grid-template-columns:1fr;padding:10px}.stage-panel{order:-1;height:min(72vh,100vw + 220px);min-height:420px}.code-panel,.editor-panel{height:72vh;min-height:460px}.brand-text small{display:none}.stage-foot{grid-template-columns:1fr;justify-items:center}.stage-foot-end{display:none}.needs{justify-content:center}.garage-body,.cls-body{grid-template-columns:1fr}.garage-left{position:static}.garage-preview{height:230px}.cls-side{border-right:none;border-bottom:1px solid var(--line)}}@media (width<=560px){.topbar{flex-wrap:wrap;gap:8px;height:auto;padding:8px 12px}.topbar .course-pill{flex:1 1 0;min-width:0;max-width:none;margin:0}.topbar-actions{flex:100%;order:3;justify-content:space-between;gap:0;min-width:0;margin-left:0}.menu-caret{display:none}.topbar-nav .btn-quiet{width:36px;padding:0}.lang-btn{padding:0 6px}.lang-gear,.topbar-actions .divider,.account-btn .lvl,.account-btn .streak,.brand-text,.account-btn .name{display:none}.mission{grid-template-columns:1fr;padding:12px 14px}.mission-side{align-items:flex-start}.btn-run{min-width:140px}.modal-card{padding:24px 18px 18px}.profile-stats{grid-template-columns:1fr 1fr}.lb-weekly{grid-template-columns:auto 1fr}.lb-weekly>:last-child{grid-column:1/-1}.lb-body{padding:14px 16px 16px}.cls-settings,.cls-kpis{grid-template-columns:1fr 1fr}.gate-choices,.gate-plan{grid-template-columns:1fr}.course-pill{margin-left:8px}.ws-plans,.ws-request-form,.ws-history li{grid-template-columns:1fr}.course-pill-text small{display:none}.gate-card{padding:22px 18px}.ed-numbers{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.boot{z-index:200;background:var(--bg);place-items:center;transition:opacity .3s;display:grid;position:fixed;inset:0}.app:not(.booting) .boot{opacity:0;pointer-events:none}.boot .tile{animation:.8s ease-in-out infinite alternate bob}@keyframes bob{to{transform:translateY(-10px)}}.stage-panel.editing .mission-side,.stage-panel.editing #missionGoal,.stage-panel.editing .mission-hint,.stage-panel.editing .stage-foot{display:none!important}.bell-push{background:var(--surface-2);color:var(--ink-2);border-radius:12px;align-items:center;gap:10px;margin:8px 8px 0;padding:10px 12px;font-size:13px;font-weight:700;line-height:1.35;display:flex}.bell-push>span{flex:1}.bell-push .btn{flex-shrink:0}.sp-new-btn{width:100%;margin-bottom:6px}.sp-side-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin:14px 4px 4px;font-size:12px;font-weight:800}.sp-item{align-items:flex-start}.sp-item b{white-space:normal;line-height:1.3}.sp-status{flex-shrink:0}.sp-status--open{background:var(--gold-soft,#fff4d6);color:#8a5a00}.sp-status--progress{background:var(--primary-soft);color:var(--primary-2)}.sp-status--resolved{background:var(--green-soft,#e3f6ec);color:#157347}.sp-main{flex-direction:column;gap:4px;display:flex}.sp-new,.sp-reply{flex-direction:column;gap:12px;display:flex}.sp-cats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;display:grid}.sp-cat{border:1px solid var(--line);background:var(--surface);text-align:left;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-weight:800;transition:border-color .15s,background .15s;display:flex}.sp-cat:hover{background:var(--surface-2)}.sp-cat.active{border-color:var(--primary);background:var(--primary-soft)}.sp-cat:focus-visible{box-shadow:var(--focus);outline:none}.sp-note{align-items:flex-start;gap:8px;margin:0;display:flex}.sp-note svg{flex-shrink:0;margin-top:1px}.sp-text{resize:vertical;min-height:84px;line-height:1.45}.sp-actions{justify-content:flex-end;display:flex}.sp-thread{flex-direction:column;gap:12px;margin:8px 0 12px;padding:0;list-style:none;display:flex}.sp-msg{flex-direction:column;gap:4px;max-width:min(560px,85%);display:flex}.sp-msg.mine{align-self:flex-end;align-items:flex-end}.sp-bubble{background:var(--surface-2);overflow-wrap:anywhere;border-radius:14px;padding:10px 14px;font-weight:600;line-height:1.45}.sp-msg.mine .sp-bubble{background:var(--primary);color:#fff;border-bottom-right-radius:4px}.sp-msg.staff .sp-bubble{border-bottom-left-radius:4px}.sp-msg small{color:var(--ink-3);font-size:12px;font-weight:700}
