:root{--ink: #0d1418;--panel: #141f26;--panel-2: #1b2a33;--line: #24343e;--chalk: #ede8da;--slate: #8399a6;--tele: #ffc526;--turf: #4caf74;--flag: #d64533;--display: "Barlow Condensed", sans-serif;--body: "Public Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", monospace}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--ink);color:var(--chalk);font-family:var(--body);font-size:15px;line-height:1.5}a{color:inherit}::selection{background:var(--tele);color:var(--ink)}h1,h2,h3,.display{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;font-weight:700;margin:0 0 .5rem}h1{font-size:2rem}h2{font-size:1.35rem}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--slate)}.pos{color:var(--turf)}.neg{color:var(--flag)}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.rail{background:var(--panel);border-right:1px solid var(--line);padding:1.25rem 1rem;display:flex;flex-direction:column;gap:.25rem}.brand{font-family:var(--display);font-weight:700;font-size:1.5rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:1rem}.brand em{color:var(--tele);font-style:normal}.rail a{text-decoration:none;padding:.5rem .65rem;border-radius:6px;color:var(--slate);font-weight:500}.rail a.active{color:var(--chalk);background:var(--panel-2);box-shadow:inset 3px 0 0 var(--tele)}.rail a:hover{color:var(--chalk)}.rail .spacer{flex:1}main{padding:1.5rem clamp(1rem,3vw,2.5rem);max-width:1100px;width:100%}@media (max-width: 760px){.shell{grid-template-columns:1fr}.rail{flex-direction:row;flex-wrap:wrap;align-items:center;border-right:0;border-bottom:1px solid var(--line)}.brand{margin:0 .75rem 0 0}.rail .spacer{display:none}}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:1.1rem 1.25rem;margin-bottom:1.25rem}table{width:100%;border-collapse:collapse}th{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;font-weight:600;font-size:.8rem;color:var(--slate);text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--line)}td{padding:.5rem .6rem;border-bottom:1px solid var(--line)}tr:last-child td{border-bottom:0}.rankrow{display:grid;grid-template-columns:64px 1fr auto;gap:1rem;align-items:center;padding:.65rem 0;border-bottom:1px solid var(--line)}.rankrow:last-child{border-bottom:0}.ranknum{font-family:var(--display);font-weight:700;font-size:2.6rem;line-height:1;color:var(--chalk);text-align:center}.rankrow.top .ranknum{color:var(--tele)}.rankrow.top .teamname{text-decoration:underline;text-decoration-color:var(--tele);text-decoration-thickness:3px;text-underline-offset:5px}.teamname{font-weight:600}.rankstats{display:flex;gap:1.25rem;font-family:var(--mono);font-size:.85rem;color:var(--slate);flex-wrap:wrap;justify-content:flex-end}.rankstats b{color:var(--chalk);font-weight:600}form.stack{display:flex;flex-direction:column;gap:.8rem;max-width:380px}label{font-size:.85rem;color:var(--slate);display:block;margin-bottom:.25rem}input,select{width:100%;background:var(--ink);color:var(--chalk);border:1px solid var(--line);border-radius:6px;padding:.55rem .7rem;font:inherit}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--tele);outline-offset:2px}button{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;font-size:1rem;font-weight:700;cursor:pointer;background:var(--tele);color:var(--ink);border:0;border-radius:6px;padding:.6rem 1.1rem}button.ghost{background:transparent;color:var(--chalk);border:1px solid var(--line)}button:disabled{opacity:.5;cursor:default}.error{color:var(--flag);font-size:.9rem}.ok{color:var(--turf);font-size:.9rem}.badge{font-family:var(--mono);font-size:.72rem;padding:.1rem .4rem;border-radius:4px;background:var(--panel-2);color:var(--slate)}.badge.tele{color:var(--ink);background:var(--tele)}.authpage{min-height:100vh;display:grid;place-items:center;padding:1rem}.authpage .card{width:min(420px,100%)}@media (prefers-reduced-motion: no-preference){.card{animation:rise .25s ease-out}@keyframes rise{0%{opacity:0;transform:translateY(4px)}to{opacity:1}}}
