:root{--bg: #0b0e14;--panel: #12161f;--panel2: #171c27;--border: #232a38;--text: #d7dce6;--dim: #7a8399;--accent: #5eead4;--accent2: #22d3ee;--warn: #fbbf24;--err: #f87171;--ok: #34d399;--violet: #a78bfa}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-monospace,JetBrains Mono,Fira Code,Menlo,Consolas,monospace;font-size:14px}#root{min-height:100vh}.app{width:100%;padding:0 32px 40px}.topbar{display:flex;align-items:center;gap:18px;padding:14px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{font-weight:700;letter-spacing:.5px;display:flex;align-items:center;gap:8px}.brand .logo{color:var(--accent);font-size:18px}.brand .tagline{font-weight:400;color:var(--dim);font-size:11px;margin-left:6px}.tabs{display:flex;gap:6px;flex:1}.tab{background:transparent;border:1px solid transparent;color:var(--dim);padding:7px 14px;border-radius:8px;font:inherit;cursor:pointer}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-color:var(--border);background:var(--panel)}.me{display:flex;gap:10px;align-items:center;margin-left:auto}.me .username{color:var(--violet)}.content{padding-top:20px}.footer{margin-top:40px;color:var(--dim);font-size:11px;border-top:1px solid var(--border);padding-top:12px;text-align:center}.loading,.dim{color:var(--dim)}.small{font-size:12px}.error{color:var(--err);margin:8px 0}.msgok{color:var(--ok);margin-top:8px}.msger{color:var(--err);margin-top:8px}.btn{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 14px;font:inherit;cursor:pointer;transition:border-color .15s,color .15s}.btn:hover:not(:disabled){border-color:var(--accent2);color:var(--accent2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#06251f;font-weight:700}.btn.primary:hover:not(:disabled){background:var(--accent2);border-color:var(--accent2);color:#06251f}.btn.accent{border-color:var(--violet);color:var(--violet)}.btn.ghost{background:transparent;border:none;color:var(--dim)}.btn.ghost:hover{color:var(--err)}.btn.wide{width:100%;margin-top:14px}.btn.sm{padding:5px 10px;font-size:12px}input,textarea{background:#0e1219;border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 12px;font:inherit;width:100%}input:focus,textarea:focus{outline:none;border-color:var(--accent2)}.authwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:30px}.authcard{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:34px;width:380px;max-width:95vw}.authcard h1{margin:0 0 6px;font-size:20px;color:var(--accent)}.authcard .sub{color:var(--dim);margin-top:0}.modes{display:flex;gap:8px;margin:18px 0}.chip{flex:1;background:transparent;border:1px solid var(--border);color:var(--dim);padding:7px;border-radius:999px;cursor:pointer;font:inherit}.chip.active{color:var(--accent);border-color:var(--accent)}label{display:block;color:var(--dim);font-size:12px;margin:12px 0 5px}.hint{color:var(--dim);font-size:11px;margin-top:16px}.statrow{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}.stat{background:var(--panel);border:1px solid var(--border);padding:10px 16px;border-radius:10px;color:var(--dim)}.stat .big{font-size:20px;font-weight:700;color:var(--accent);margin-right:6px}.stat.warn{color:var(--warn);border-color:#fbbf2466;font-size:12px;display:flex;align-items:center}.card.module{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:14px}.card.module.flagged{border-left:3px solid var(--accent)}.card.module.support{border-left:3px solid var(--dim);opacity:.92}.cardhead{display:flex;gap:14px;align-items:flex-start}.cardhead .num{font-size:22px;font-weight:800;color:var(--accent2);min-width:34px}.titlebox{flex:1}.titlebox h3{margin:0;font-size:15px}.titlebox .desc{color:var(--dim);margin:5px 0 0;font-size:12px;line-height:1.5}.fpill{color:var(--accent);background:#5eead41a;border:1px solid rgba(94,234,212,.3);font-size:10px;font-weight:400;padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:middle}.spill{color:var(--dim);border:1px solid var(--border);font-size:10px;padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:middle}.status{font-size:11px;font-weight:700;padding:5px 10px;border-radius:8px;white-space:nowrap}.status.locked{color:var(--dim);background:var(--panel2)}.status.unlocked,.status.open{color:var(--accent2);background:#22d3ee14}.status.countdown{color:var(--warn);background:#fbbf2414}.status.solved{color:var(--ok);background:#34d3991a}.cardfoot{margin-top:14px}.actions{display:flex;gap:10px}.subrow{display:flex;gap:10px;margin-bottom:12px}.flaginput{letter-spacing:1px;font-family:inherit}.solvedline{color:var(--ok);font-size:12px;margin-bottom:10px}.rules{color:var(--dim);margin-bottom:16px;border:1px dashed var(--border);padding:10px 14px;border-radius:10px}.board{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}.board th{text-align:left;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--panel2)}.board td{padding:10px 14px;border-bottom:1px solid var(--border)}.board tr:last-child td{border-bottom:none}.board .pts{color:var(--accent);font-weight:700}.me-row td{background:#5eead40d}input[type=number]{width:90px}.secttitle{color:var(--dim);font-size:13px;text-transform:uppercase;letter-spacing:2px;margin-top:26px}.pillgreen{color:var(--ok);background:#34d3991a;font-size:11px;padding:3px 9px;border-radius:999px}.card.cleanup{border-left:4px solid var(--err);background:#f871710f}.card.cleanup .row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card.cleanup select{background:#0e1219;border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 10px;font:inherit;flex:1;min-width:260px}.btn.danger{background:#f871711f;border:1px solid var(--err);color:var(--err)}.btn.danger:hover:not(:disabled){background:var(--err);border-color:var(--err);color:#2a0b0b}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;word-break:break-all}
