:root{--bg:#0e1117;--bg-soft:#161b24;--bg-raised:#1d2430;--border:#2a3342;--border-strong:#3a4557;--text:#e6eaf2;--text-dim:#9aa6b8;--accent:#4f8cff;--accent-strong:#2f6fe0;--accent-bg:#4f8cff1f;--green:#3ecf8e;--green-bg:#3ecf8e1f;--red:#ff6b6b;--red-bg:#ff6b6b1f;--amber:#f5b94b;--amber-bg:#f5b94b1f;--purple:#b18cff;--radius:10px;--radius-sm:6px;--focus:0 0 0 3px #4f8cff8c;--mono:"Cascadia Code", Consolas, "Courier New", monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.55}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}h1,h2,h3{margin:0 0 .5rem;line-height:1.25}p{margin:0 0 .75rem}.app-shell{flex-direction:column;min-height:100%;display:flex}.app-main{flex:1;width:100%;max-width:1160px;margin:0 auto;padding:1.25rem 1rem 3rem}.topbar{background:var(--bg-soft);border-bottom:1px solid var(--border);z-index:20;flex-wrap:wrap;align-items:center;gap:1rem;padding:.6rem 1rem;display:flex;position:sticky;top:0}.topbar .brand{color:var(--text);font-size:1.05rem;font-weight:700}.topbar nav{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.topbar nav a{color:var(--text-dim);border-radius:var(--radius-sm);padding:.35rem .7rem}.topbar nav a:hover{background:var(--bg-raised);color:var(--text);text-decoration:none}.topbar nav a.active{background:var(--accent-bg);color:var(--accent)}.topbar .spacer{flex:1}.card{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1rem 1.15rem}.card h2,.card h3{margin-top:0}.grid{gap:1rem;display:grid}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.row.between{justify-content:space-between}.muted{color:var(--text-dim);font-size:.9rem}.small{font-size:.82rem}button,.btn{font:inherit;color:var(--text);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;padding:.45rem .9rem;transition:background .12s,border-color .12s}button:hover,.btn:hover{background:#232c3b;text-decoration:none}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}button.primary,.btn.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}button.primary:hover,.btn.primary:hover{background:var(--accent)}button.danger{background:var(--red-bg);border-color:var(--red);color:var(--red)}button.ghost{color:var(--text-dim);background:0 0;border-color:#0000}label{color:var(--text-dim);margin:.65rem 0 .25rem;font-size:.88rem;display:block}input,textarea,select{font:inherit;width:100%;color:var(--text);background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.5rem .65rem}input:focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:var(--focus);border-color:var(--accent);outline:none}.form-row{max-width:420px}.badge{border:1px solid #0000;border-radius:999px;padding:.12rem .55rem;font-size:.78rem;font-weight:600;display:inline-block}.badge.green{background:var(--green-bg);color:var(--green)}.badge.red{background:var(--red-bg);color:var(--red)}.badge.amber{background:var(--amber-bg);color:var(--amber)}.badge.blue{background:var(--accent-bg);color:var(--accent)}.badge.gray{background:var(--bg-raised);color:var(--text-dim);border-color:var(--border)}.badge.purple{color:var(--purple);background:#b18cff1f}.alert{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-raised);margin:.75rem 0;padding:.7rem .9rem}.alert.error{border-color:var(--red);background:var(--red-bg);color:#ffd9d9}.alert.success{border-color:var(--green);background:var(--green-bg);color:#d7f5e8}.alert.info{border-color:var(--accent);background:var(--accent-bg);color:#d5e5ff}.alert.warn{border-color:var(--amber);background:var(--amber-bg);color:#ffe9c2}table{border-collapse:collapse;width:100%;font-size:.92rem}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .6rem}th{color:var(--text-dim);font-weight:600}tr:hover td{background:#ffffff05}.editor-wrap{border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.editor-wrap .cm-editor{font-size:.9rem}.editor-wrap .cm-editor.cm-focused{outline:none}.countdown{font-family:var(--mono);letter-spacing:.03em;font-size:1.35rem;font-weight:700}.countdown.urgent{color:var(--red)}.problem-statement{white-space:pre-wrap}.problem-statement h1,.problem-statement h2,.problem-statement h3{margin-top:.9rem;font-size:1.05rem}pre.sample{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);white-space:pre-wrap;margin:.35rem 0 .8rem;padding:.6rem .8rem;font-size:.85rem;overflow-x:auto}.qnav{flex-wrap:wrap;gap:.4rem;display:flex}.qnav button{text-align:center;min-width:2.6rem;font-family:var(--mono)}.qnav button.solved{background:var(--green-bg);border-color:var(--green);color:var(--green)}.qnav button.active{border-color:var(--accent);box-shadow:var(--focus)}.score-big{font-family:var(--mono);font-size:2.2rem;font-weight:700}.landing-hero{text-align:center;padding:4rem 1rem 2rem}.landing-hero h1{font-size:clamp(1.8rem,4vw,2.8rem)}.pagination{gap:.5rem;margin-top:.8rem;display:flex}.empty{color:var(--text-dim);text-align:center;padding:2.5rem 1rem}.loading{color:var(--text-dim);text-align:center;padding:2rem}.match-room{grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);align-items:start;gap:1rem;display:grid}@media (width<=900px){.match-room{grid-template-columns:1fr}}.mono{font-family:var(--mono)}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
