:root{--bg:#0f1419;--surface:#1a222c;--surface-hover:#212c3a;--border:#2d3a47;--text:#e8eef4;--muted:#8b9aab;--accent:#4285f4;--accent-hover:#5a95f5;--success:#22c55e;--danger:#ef4444;--warning:#eab308;--radius:12px;--radius-sm:8px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:DM Sans,system-ui,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}button{cursor:pointer;border-radius:var(--radius-sm);border:none;padding:.6rem 1.2rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .15s,transform .1s}button:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{color:var(--muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--surface-hover);color:var(--text)}input,select{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;padding:.6rem .9rem;font-family:inherit;font-size:.9rem;transition:border-color .15s}input:focus{border-color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.page{max-width:800px;margin:0 auto;padding:2rem 1rem}.page h1{margin-bottom:1.5rem;font-size:1.5rem;font-weight:700}.badge{border-radius:99px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-future{color:var(--success);background:#22c55e26}.badge-soon{color:var(--warning);background:#eab30826}.badge-past{color:var(--danger);background:#ef444426}.loading,.empty{text-align:center;color:var(--muted);padding:3rem 0}
