:root{--bg: #0a0d1c;--panel: #131a31;--panel-2: #1a2342;--border: #2b3458;--text: #e7eaf6;--muted: #97a0c3;--accent: #7c5cff;--accent-2: #21d4fd;--good: #3dd68c;--bad: #ff6b81;--radius: 10px}*{box-sizing:border-box}body{margin:0;color:var(--text);background:radial-gradient(1100px 700px at 85% -10%,#1c2650 0%,transparent 60%),radial-gradient(900px 600px at -10% 110%,#14224a 0%,transparent 55%),var(--bg);min-height:100vh;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.55}main.app{max-width:980px;margin:0 auto;padding:1.5rem 1.5rem 4rem}h1{font-size:2.4rem;margin:.5rem 0 .25rem;background:linear-gradient(90deg,var(--accent-2),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.5px}h2{margin-top:1.6rem}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}p.tagline{color:var(--muted);margin-top:0}button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:.45rem 1rem;font:inherit;cursor:pointer;transition:border-color .15s,background .15s,transform .05s}button:hover:not(:disabled){border-color:var(--accent)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}button.primary{background:linear-gradient(135deg,var(--accent),#5a3ddb);border-color:transparent}button.primary:hover:not(:disabled){filter:brightness(1.12)}button.ghost{background:transparent}button.link{background:none;border:none;color:var(--accent-2);padding:.45rem 0}button.small{padding:.2rem .7rem;font-size:.85rem}input,textarea{background:#0d1226;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:.45rem .7rem;font:inherit}input:focus,textarea:focus{outline:none;border-color:var(--accent)}fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:1rem 0;padding:1rem}legend{color:var(--muted);padding:0 .5rem}code{background:#0d1226;border:1px solid var(--border);border-radius:5px;padding:.05rem .35rem;font-size:.92em}pre code{background:none;border:none;padding:0;font-size:inherit}.card,section.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin:.8rem 0}.panel{border-top:1px solid var(--border);margin-top:2rem;padding-top:1rem}.error{color:var(--bad)}.timer{color:var(--muted)}.auth-bar{display:flex;justify-content:flex-end;align-items:center;gap:.6rem}.auth-email{color:var(--muted)}dialog.auth-dialog{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1.75rem;min-width:320px}dialog.auth-dialog::backdrop{background:#050710b3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}dialog.auth-dialog h3{margin-top:0}dialog.auth-dialog label{display:block;margin:.7rem 0;color:var(--muted)}dialog.auth-dialog input{display:block;width:100%;margin-top:.25rem}.dialog-actions{display:flex;align-items:center;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.vm-terminal{margin:1rem 0}.vm-screen{height:400px;background:#000;border:1px solid var(--border);border-radius:var(--radius);padding:6px;overflow:hidden}.vm-status{color:var(--muted);font-size:.9rem;margin:.4rem 0 0}.task-player .material :first-child{margin-top:0}.task-player .material pre{background:#0d1226;border:1px solid var(--border);border-radius:8px;padding:.7rem 1rem;overflow-x:auto}.task-controls{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.check-results{list-style:none;padding:0}.check-results li{padding:.25rem 0}.space-map{height:520px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:radial-gradient(2px 2px at 15% 25%,#ffffff88 0%,transparent 100%),radial-gradient(1.5px 1.5px at 70% 60%,#ffffff66 0%,transparent 100%),radial-gradient(2px 2px at 40% 80%,#ffffff55 0%,transparent 100%),radial-gradient(1.5px 1.5px at 85% 15%,#ffffff77 0%,transparent 100%),radial-gradient(1px 1px at 25% 55%,#ffffff44 0%,transparent 100%),radial-gradient(900px 500px at 60% 0%,#1b2754 0%,transparent 70%),#070a18}.space-map .react-flow,.space-map .react-flow__pane,.space-map .react-flow__renderer{background:transparent}.map-node{width:230px;background:linear-gradient(160deg,var(--panel-2),var(--panel));border:1px solid var(--border);border-radius:12px;padding:.7rem .9rem;box-shadow:0 0 18px #7c5cff14}.map-node-available{border-color:var(--accent);box-shadow:0 0 22px #7c5cff59}.map-node-done{border-color:var(--good)}.map-node-locked{opacity:.55;filter:saturate(.4)}.map-node-course{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-2)}.map-node-title{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:.15rem 0 .3rem}.map-node-summary{margin:0 0 .5rem;font-size:.85rem;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.map-node-footer{font-size:.85rem}.map-node .react-flow__handle{background:var(--accent);border:none}.input-transcript,.input-transcript-pre{margin-top:.6rem}.input-transcript summary{cursor:pointer;color:var(--accent-2)}.input-transcript pre,.input-transcript-pre{background:#0d1226;border:1px solid var(--border);border-radius:8px;padding:.6rem .9rem;white-space:pre-wrap;word-break:break-all}.muted{color:var(--muted);font-size:.85rem}.pulse{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.attempt-list{list-style:none;padding:0}.course-progress{font-size:.85rem;color:var(--muted);font-weight:400}.task-list{list-style:none;padding-left:.3rem}.task-list li{padding:.2rem 0}.task-status-icon{display:inline-block;width:1.5em;text-align:center}.task-done a{color:var(--good)}.task-locked{opacity:.55}.attempt-list li{padding:.25rem 0}.vm-screen .xterm{height:100%}.main-nav{display:flex;gap:.5rem;margin:.5rem 0 1.25rem;border-bottom:1px solid var(--border);padding-bottom:.75rem}.main-nav .nav-active{background:linear-gradient(135deg,var(--accent),#5a3ddb);border-color:transparent}.ach-toast{position:fixed;top:1rem;left:50%;transform:translate(-50%);z-index:1000;min-width:320px;max-width:440px;background:linear-gradient(160deg,#1a2342,#131a31);border:1px solid var(--accent);border-radius:12px;box-shadow:0 0 32px #7c5cff8c,0 8px 24px #00000080;overflow:hidden;animation:ach-in .45s cubic-bezier(.2,1.4,.4,1)}@keyframes ach-in{0%{transform:translate(-50%) translateY(-130%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.ach-toast-header{font-family:ui-monospace,Cascadia Mono,monospace;font-size:.78rem;color:var(--accent-2);background:#0d1226;padding:.35rem .9rem;border-bottom:1px solid var(--border);letter-spacing:.04em}.ach-toast-body{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem}.ach-toast-icon{font-size:2rem;filter:drop-shadow(0 0 10px rgba(255,215,0,.7));animation:ach-pulse 1.4s ease-in-out infinite}@keyframes ach-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.ach-toast-title{font-weight:600}.ach-toast-desc{color:var(--muted);font-size:.88rem}.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.7rem;margin:.8rem 0}.ach-card{display:flex;gap:.7rem;align-items:flex-start;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:.7rem .9rem}.ach-earned{border-color:#ffd70073;box-shadow:0 0 14px #ffd7001f}.ach-locked{opacity:.6;filter:saturate(.5)}.ach-card-icon{font-size:1.4rem}.ach-card-title{font-weight:600}.ach-card-desc{color:var(--muted);font-size:.85rem}.catalog-controls{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:.8rem 0}.course-search{flex:1;min-width:220px}.show-completed{color:var(--muted);font-size:.9rem;white-space:nowrap}.lb-select{display:inline-block;margin:.5rem 1rem .5rem 0;color:var(--muted)}.lb-select select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:.35rem .5rem}.leaderboard{list-style:none;padding:0;margin:.5rem 0}.leaderboard li{display:grid;grid-template-columns:2.5rem 1fr auto;align-items:center;gap:.75rem;padding:.45rem .75rem;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.35rem;background:var(--panel)}.leaderboard li.lb-me{border-color:var(--accent);background:var(--panel-2)}.lb-rank{font-weight:700;color:var(--accent-2);text-align:center}.lb-time{font-variant-numeric:tabular-nums;color:var(--muted)}.lang-switch{margin-left:auto;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:.3rem .5rem}.loc-field{margin:.5rem 0}.loc-field input,.loc-field textarea{width:100%;box-sizing:border-box;margin:.15rem 0}.loc-label{display:block;font-size:.8rem;color:var(--muted)}.loc-label .loc-on{color:var(--good);margin-left:.4rem}.loc-label .loc-off{color:var(--muted);margin-left:.4rem}.consent-banner{border-color:#b08d00;margin:1rem 0}.consent-banner ul{list-style:none;padding:0;margin:.5rem 0 0}.consent-banner li{display:flex;align-items:center;gap:.75rem;padding:.3rem 0}.consent-banner details{flex:1}.consent-banner summary{cursor:pointer}.task-leaderboard{margin:.75rem 0}.task-leaderboard summary{cursor:pointer;font-weight:600}.task-leaderboard .leaderboard{margin-top:.5rem}.consent-check{display:block;font-size:.85rem;margin:.3rem 0}.pager{display:flex;align-items:center;gap:.75rem;justify-content:center;margin:1rem 0}.maze-captcha{margin:.5rem 0 .2rem;text-align:center}.maze-title{margin:0 0 .4rem;font-size:.9rem;color:var(--muted)}.maze{--maze-cell: 26px;display:grid;gap:0;width:max-content;margin:0 auto .4rem;background:#0c1024;border:2px solid #5b6499;border-radius:6px}.maze-cell{width:var(--maze-cell);height:var(--maze-cell);box-sizing:border-box;display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1}.maze-cell.w-n{border-top:2px solid #5b6499}.maze-cell.w-e{border-right:2px solid #5b6499}.maze-cell.w-s{border-bottom:2px solid #5b6499}.maze-cell.w-w{border-left:2px solid #5b6499}.maze-mark{font-size:11px;color:var(--muted)}.maze-done{color:var(--good);font-weight:600;margin:.3rem 0}.maze-pad{display:grid;grid-template-columns:repeat(3,38px);grid-template-rows:repeat(3,38px);gap:6px;justify-content:center;margin:.4rem auto 0}.maze-btn{font-size:18px;padding:0}.maze-btn.up{grid-column:2;grid-row:1}.maze-btn.left{grid-column:1;grid-row:2}.maze-btn.right{grid-column:3;grid-row:2}.maze-btn.down{grid-column:2;grid-row:3}
