*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#1a1a2e;--bg-card:#16213e;--bg-elem:#0f3460;--gold:#c9a84c;--gold-dim:#8a6f2e;--text:#e0e0e0;--muted:#888;--green:#4caf50;--red:#f44336;--radius:8px}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:system-ui,-apple-system,sans-serif}.page{max-width:640px;margin:0 auto;padding:24px 16px 48px}h1{margin-bottom:8px;font-size:1.6rem;font-weight:700}h2{margin-bottom:8px;font-size:1.2rem;font-weight:600}.subtitle{color:var(--muted);margin-bottom:20px;font-size:.9rem}.btn{border-radius:var(--radius);cursor:pointer;text-align:center;border:none;padding:10px 20px;font-size:.95rem;font-weight:600;transition:opacity .15s;display:inline-block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--gold);color:#1a1a2e;width:100%;margin-top:12px}.btn-primary:hover:not(:disabled){opacity:.88}.btn-secondary{background:var(--bg-elem);color:var(--text)}.btn-secondary:hover:not(:disabled){opacity:.8}.btn-danger{background:var(--red);color:#fff;width:100%;margin-top:12px}.input{background:var(--bg-elem);border-radius:var(--radius);color:var(--text);border:1px solid #444;outline:none;width:100%;padding:10px 14px;font-size:1rem}.input:focus{border-color:var(--gold)}.home-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.home-card{background:var(--bg-card);text-align:center;border-radius:16px;width:100%;max-width:380px;padding:40px 32px}.home-icon{margin-bottom:12px;font-size:3rem}.home-title{letter-spacing:3px;color:var(--gold);margin-bottom:4px;font-size:2rem}.home-subtitle{color:var(--muted);margin-bottom:28px;font-size:.85rem}.divider{color:var(--muted);align-items:center;gap:8px;margin:20px 0;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";background:#333;flex:1;height:1px}.join-row{gap:8px;display:flex}.join-row .input{flex:1}.join-row .btn{width:auto;margin-top:0}.join-code{color:var(--muted);margin-bottom:20px;font-size:1rem}.join-code .code{color:var(--gold);letter-spacing:6px;margin-top:4px;font-size:1.8rem;font-weight:700;display:block}.player-list{flex-direction:column;gap:8px;margin-bottom:24px;display:flex}.player-row{background:var(--bg-card);border-radius:var(--radius);align-items:center;gap:10px;padding:12px 14px;display:flex}.avatar{border-radius:50%;width:32px;height:32px}.badge{background:var(--gold);color:#1a1a2e;border-radius:20px;margin-left:auto;padding:2px 8px;font-size:.7rem;font-weight:700}.waiting{color:var(--muted);text-align:center;margin-top:16px;font-size:.9rem}.draft-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.round-label{color:var(--gold);letter-spacing:1px;font-size:.85rem;font-weight:600}.timer{background:var(--bg-elem);border-radius:20px;padding:4px 14px;font-size:1rem;font-weight:700}.timer-urgent{background:var(--red);animation:1s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.on-the-clock{background:var(--bg-card);border-radius:var(--radius);text-align:center;border:1px solid #333;margin-bottom:16px;padding:12px 16px;font-weight:600}.on-the-clock.my-turn{border-color:var(--green);color:#7ecf7e;background:#1e3a1e}.horse-list{flex-direction:column;gap:6px;margin-bottom:24px;display:flex}.horse-row{background:var(--bg-card);border-radius:6px;align-items:center;gap:10px;padding:10px 14px;transition:background .1s;display:flex}.horse-row.selectable{cursor:pointer;border:1px solid #0000}.horse-row.selectable:hover{border-color:var(--gold);background:#1e3a4e}.horse-row.claimed{opacity:.4}.post{color:var(--muted);min-width:28px;font-size:.8rem}.horse-name{flex:1;font-weight:500}.jockey{color:var(--muted);font-size:.8rem}.rosters{margin-top:24px}.rosters-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.roster-card{background:var(--bg-card);border-radius:var(--radius);padding:12px}.roster-name{color:var(--gold);margin-bottom:6px;font-size:.85rem;font-weight:600}.roster-pick{color:var(--muted);padding:2px 0;font-size:.8rem}.manual-entry{background:var(--bg-card);border-radius:var(--radius);margin-top:24px;padding:16px}.manual-entry h2{margin-bottom:12px}.finish-row{align-items:center;gap:10px;margin-bottom:8px;display:flex}.finish-label{color:var(--muted);min-width:40px;font-size:.85rem}.finish-row select{background:var(--bg-elem);color:var(--text);border:1px solid #444;border-radius:6px;flex:1;padding:6px 10px;font-size:.9rem}.result-row{background:var(--bg-card);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:14px 16px;display:flex}.result-row.winner{border:1px solid var(--gold);background:#2a1f00}.medal{font-size:1.3rem}.player-name{flex:1;font-weight:600}.total-pts{color:var(--gold);font-size:1.2rem;font-weight:700}.horse-breakdown{flex-wrap:wrap;gap:6px;width:100%;margin-top:6px;display:flex}.horse-result{color:var(--muted);background:var(--bg-elem);border-radius:4px;padding:3px 8px;font-size:.78rem}.spinner-wrapper{flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:60vh;display:flex}.spinner{border:3px solid #333;border-top-color:var(--gold);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.spinner-text{color:var(--muted);font-size:.9rem}.toast-container{z-index:9999;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius);color:#fff;align-items:center;gap:10px;max-width:320px;padding:12px 16px;font-size:.9rem;animation:.2s slide-in;display:flex}.toast-success{border:1px solid var(--green);background:#1e4a1e}.toast-error{border:1px solid var(--red);background:#4a1e1e}.toast-info{background:var(--bg-elem);border:1px solid #555}@keyframes slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-icon{font-size:1rem}.toast-dismiss{color:var(--muted);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 4px;font-size:1.1rem}
