:root,[data-theme=dark]{--bg:#0f1117;--panel:#1a1d27;--border:#2a2f3d;--accent:#4f8cff;--good:#38d39f;--bad:#ff6b6b;--text:#e6e8ee;--muted:#8b91a3;--shadow:rgba(0,0,0,.35)}[data-theme=light]{--bg:#f4f6fa;--panel:#fff;--border:#dce0e8;--accent:#2f6fed;--good:#1faa6c;--bad:#d64545;--text:#1a1d27;--muted:#6b7180;--shadow:rgba(20,30,60,.08)}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;transition:background .2s,color .2s}.nav{border-bottom:1px solid var(--border);background:var(--panel);align-items:center;gap:1.25rem;padding:.9rem 1.5rem;display:flex}.nav .brand{letter-spacing:-.02em;color:var(--accent);font-weight:800}.nav a{color:var(--muted);font-weight:600;text-decoration:none}.nav a:hover{color:var(--text)}.nav .nav-spacer{flex:1}.nav .nav-icon{color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.nav .nav-icon svg{display:block}.nav .nav-icon:hover{color:var(--text)}.nav .theme-toggle{border:1px solid var(--border);width:2.2rem;height:2.2rem;color:var(--text);background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.nav .theme-toggle svg{display:block}.nav .theme-toggle:hover{border-color:var(--accent);color:var(--accent)}.nav a:first-of-type{color:var(--accent);letter-spacing:-.02em;font-weight:800}main{max-width:1080px;margin:0 auto;padding:1.5rem}main a{color:var(--accent)}.hero{text-align:center;max-width:640px;margin:3rem auto}.hero .hero-title{color:var(--accent);margin-bottom:.5rem;font-size:3rem}.hero .hero-tagline{color:var(--muted);margin-bottom:1.5rem;font-size:1.15rem}.hero .hero-tagline a{color:var(--accent)}.hero .cta-wrap{margin:1.5rem 0}.hero .cta-wrap a{background:var(--accent);color:#fff;border-radius:10px;padding:.75rem 2.5rem;font-size:1.2rem;font-weight:700;text-decoration:none;display:inline-block}.hero .cta-wrap a:hover{filter:brightness(1.1)}.hero .hero-links{background:0 0;border:none;justify-content:center;gap:1.5rem;margin-bottom:2rem;padding:0;display:flex}.hero .hero-links a{color:var(--accent);font-weight:600;text-decoration:none}.hero .hero-links a:hover{text-decoration:underline}.hero .hero-how{text-align:left}.hero .hero-how h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:0;font-size:.8rem}.hero .hero-how ol{margin:0;padding-left:1.2rem;line-height:1.7}.hero .hero-how b{color:var(--accent)}h1{margin:0 0 .25rem}.hud{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:1rem 0;display:flex}.hud-stats{gap:1.25rem;display:flex}.stat{flex-direction:column;align-items:flex-end;font-size:1.2rem;display:flex}.stat .label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.7rem}.stat b{color:var(--accent)}.stat.timer.low b{color:var(--bad)}.game{flex-direction:column;gap:1rem;display:flex}.panel{background:var(--panel);border:1px solid var(--border);box-shadow:0 1px 3px var(--shadow);border-radius:12px;padding:1rem}.panel h3{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0 0 .6rem;font-size:.78rem}.target,.preview{background:#fff;border:3px solid transparent;border-radius:8px;min-height:120px;transition:border-color .2s,box-shadow .2s;overflow:auto}.target{justify-content:safe center;align-items:center;padding:1rem;display:flex}.preview{display:grid}.preview>*{grid-area:1/1;justify-content:safe center;align-items:center;padding:1rem;display:flex}.preview .preview-ghost{opacity:.35;pointer-events:none}.target svg,.preview svg{flex-shrink:0}.preview.correct{border-color:var(--good);box-shadow:0 0 0 3px color-mix(in srgb, var(--good) 35%, transparent)}[data-theme=dark] .target,[data-theme=dark] .preview{background:#15171e}[data-theme=dark] .target svg,[data-theme=dark] .preview svg{filter:invert()hue-rotate(180deg)}.editor-wrap{position:relative}.hl,.editor{border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;tab-size:2;border-radius:8px;margin:0;padding:.75rem;font-family:ui-monospace,monospace;font-size:1rem;line-height:1.5}.hl{pointer-events:none;background:var(--bg);color:var(--text);z-index:0;position:absolute;inset:0;overflow:auto}.hl code{font:inherit;white-space:inherit}.editor{color:transparent;width:100%;min-height:140px;caret-color:var(--text);resize:none;z-index:1;background:0 0;display:block;position:relative}.editor::placeholder{color:var(--muted)}.editor:disabled{cursor:not-allowed;opacity:.55;caret-color:transparent}.hl{--tok-comment:var(--muted);--tok-key:#c792ea;--tok-op:#89ddff;--tok-num:#f78c6c;--tok-str:#c3e88d;--tok-func:#82aaff;--tok-sym:#7fdbca;--tok-escape:#f78c6c}.hl .typ-comment{color:var(--tok-comment);font-style:italic}.hl .typ-key,.hl .typ-keyword{color:var(--tok-key)}.hl .typ-op,.hl .typ-math-op{color:var(--tok-op)}.hl .typ-num{color:var(--tok-num)}.hl .typ-str{color:var(--tok-str)}.hl .typ-func{color:var(--tok-func)}.hl .typ-pol{color:var(--tok-sym)}.hl .typ-escape{color:var(--tok-escape)}.hl .typ-error{color:var(--bad)}[data-theme=light] .hl{--tok-key:#8b1a9b;--tok-op:#0a72a8;--tok-num:#b85c00;--tok-str:#2e7d32;--tok-func:#1565c0;--tok-sym:#00796b;--tok-escape:#b85c00}.answer{margin-top:.75rem}.answer-src{background:var(--bg);border:1px solid var(--border);white-space:pre-wrap;color:var(--text);border-radius:8px;margin:0;padding:.6rem .75rem;font-family:ui-monospace,monospace;font-size:.9rem}.diag{color:var(--bad);white-space:pre-wrap;margin:0;font-family:ui-monospace,monospace;font-size:.85rem}.actions{align-items:center;gap:.9rem;margin-top:.75rem;display:flex}.actions .hint,.solve-pending{color:var(--muted);font-size:.85rem}.solve-notice{background:color-mix(in srgb, var(--bad) 10%, transparent);border:1px solid color-mix(in srgb, var(--bad) 35%, transparent);border-radius:8px;align-items:center;gap:.5rem;margin-top:.5rem;padding:.45rem .75rem;font-size:.85rem;display:flex}.solve-notice .solve-notice-reason{color:var(--bad);flex:1}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.55rem 1.1rem;font-weight:600}button.ghost{border:1px solid var(--border);color:var(--muted);background:0 0}button:hover{filter:brightness(1.08)}.problem-meta{flex-direction:column;display:flex}.problem-title{font-size:1.3rem;font-weight:700}.difficulty{color:var(--muted);font-size:.85rem}.panel-header,.answer-header{align-items:center;gap:.75rem;display:flex}.panel-header h3,.answer-header h3{margin:0}.panel-header{margin-bottom:.6rem}.answer-header{margin-bottom:.35rem}.leaderboard-tabs{gap:.5rem;margin-bottom:1.25rem;display:flex}.leaderboard-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.reset-hint{color:var(--muted);margin-top:-.75rem;margin-bottom:1rem;font-size:.85rem}table{border-collapse:collapse;width:100%}table th,table td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .75rem}table th{color:var(--muted);font-size:.85rem}.modal{background:rgba(0,0,0,.55);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal .modal-box{background:var(--panel);border:1px solid var(--border);text-align:center;width:360px;box-shadow:0 10px 40px var(--shadow);border-radius:14px;padding:2rem;position:relative}.modal .modal-box-wide{text-align:left;width:min(680px,92vw)}.modal .modal-box-wide h2{margin:0 2rem .25rem 0}.modal .modal-box-wide .difficulty{margin-bottom:1rem}.modal .modal-box-wide .answer-src{margin-top:.5rem}.modal .target{max-height:60vh}.modal a{color:var(--accent);font-weight:600;text-decoration:none}.modal a:hover{text-decoration:underline}.modal input{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);border-radius:8px;margin:.75rem 0;padding:.6rem}.modal .submitted{color:var(--good);font-weight:600}.modal .modal-actions{justify-content:center;align-items:center;gap:1rem;margin-top:1.25rem;display:flex}.modal .modal-close{width:1.9rem;height:1.9rem;color:var(--muted);background:0 0;border:1px solid transparent;border-radius:6px;padding:0;font-size:1.2rem;line-height:1;position:absolute;top:.5rem;right:.6rem}.modal .modal-close:hover{color:var(--text);background:var(--bg);filter:none}.game-over-bar{background:var(--panel);border:1px solid var(--border);box-shadow:0 6px 24px var(--shadow);z-index:10;border-radius:999px;align-items:center;gap:.75rem;padding:.6rem 1rem;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%)}.game-over-bar .game-over-label{color:var(--muted);font-weight:600}.problem-controls{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:1rem;display:flex}.problem-controls label{color:var(--muted);align-items:center;gap:.4rem;font-size:.85rem;font-weight:600;display:inline-flex}.problem-controls input,.problem-controls select{background:var(--bg);border:1px solid var(--border);color:var(--text);font:inherit;border-radius:8px;padding:.45rem .6rem}.problem-controls .problem-search{flex:16rem;min-width:12rem}.problem-controls .problem-count{color:var(--muted);margin-left:auto;font-size:.8rem}.problem-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:1rem;display:grid}.problem-grid .problem-card{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;position:relative}.problem-grid .problem-card:hover{border-color:var(--accent);box-shadow:0 4px 14px var(--shadow);transform:translateY(-2px)}.problem-grid .problem-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.problem-grid .problem-card.selected{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:-2px}.problem-grid .target{max-height:220px}.problem-grid .target svg{flex-shrink:1;max-width:100%;height:auto;max-height:100%}.card-check{color:var(--accent);pointer-events:none;font-size:1rem;font-weight:700;line-height:1;position:absolute;top:.4rem;right:.55rem}.builder-footer{background:var(--bg);border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:1rem;margin-top:1rem;padding:.75rem 1rem;display:flex;position:sticky;bottom:0}.practice-set-result{flex:1;align-items:center;gap:.5rem;display:flex}.practice-set-result input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;flex:1;padding:.3rem .5rem;font-family:ui-monospace,monospace;font-size:.85rem}