:root{--text:#2d2d2d;--text-muted:#6b6b6b;--bg:#fafafa;--card-bg:#fff;--border:#e2e2e2;--accent:#1d6f42;--accent-dark:#14512f;--danger:#b3261e;--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/1.5 var(--sans);color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0}#root{min-height:100vh}h1{margin:0 0 16px;font-size:28px}h2{margin:0 0 8px;font-size:20px}a{color:var(--accent)}button{font:inherit;cursor:pointer;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 16px}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{color:var(--danger);border:1px solid var(--danger);background:0 0}input,select{font:inherit;border:1px solid var(--border);border-radius:6px;padding:6px 10px}.layout{flex-direction:column;min-height:100vh;display:flex}.topnav{background:var(--card-bg);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:12px 24px;display:flex}.topnav-brand{font-weight:700}.topnav nav{flex:1;gap:16px;display:flex}.topnav nav a{color:var(--text);text-decoration:none}.topnav-user{align-items:center;gap:12px;display:flex}.page{flex:1;width:100%;max-width:900px;margin:0 auto;padding:24px}.page-loading{text-align:center;margin-top:100px}.error{color:var(--danger)}.muted{color:var(--text-muted)}.auth-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-form{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:12px;width:320px;padding:32px;display:flex}.auth-form label{flex-direction:column;gap:4px;font-size:14px;display:flex}.leagues-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.leagues-header h1{margin:0}.sync-button{padding:10px 18px;font-weight:600;box-shadow:0 2px 8px #1d6f4240}.sync-wizard{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;margin-bottom:28px;padding:28px 24px}.step-indicator{margin:0 0 28px;padding:0;list-style:none;display:flex}.step{flex:1;align-items:center;display:flex;position:relative}.step:last-child{flex:0}.step-dot{background:var(--border);width:28px;min-width:28px;height:28px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:700;transition:background .2s,color .2s;display:flex}.step-active .step-dot{background:var(--accent);color:#fff}.step-done .step-dot{background:var(--accent-dark);color:#fff}.step-label{color:var(--text-muted);white-space:nowrap;margin-left:10px;font-size:13px;font-weight:600}.step-active .step-label,.step-done .step-label{color:var(--text)}.step-connector{background:var(--border);flex:1;height:2px;margin:0 14px}.step-done .step-connector{background:var(--accent-dark)}.wizard-title{align-items:center;gap:10px;display:flex}.platform-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;margin-top:16px;display:grid}.platform-tile{background:var(--bg);border:2px solid var(--border);color:var(--text);border-radius:10px;flex-direction:column;align-items:center;gap:10px;padding:18px 10px;transition:border-color .15s,transform .1s,box-shadow .15s;display:flex}.platform-tile:not(.disabled):hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 14px #00000014}.platform-tile.selected{border-color:var(--accent);box-shadow:0 0 0 3px #1d6f4226}.platform-tile.disabled{opacity:.5;cursor:not-allowed}.platform-swatch{border-radius:14px;justify-content:center;align-items:center;width:56px;height:56px;display:flex;box-shadow:0 2px 6px #00000026}.platform-swatch-inline{border-radius:8px;width:32px;height:32px}.platform-label{text-align:center;font-size:13px;font-weight:600}.platform-soon{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:10px}.wizard-note{text-align:center;color:#26456e;background:#eaf1fb;border:1px solid #d3e3f7;border-radius:10px;margin-top:18px;padding:14px 18px;font-size:14px;line-height:1.5}.connect-form{flex-direction:column;gap:14px;max-width:420px;margin-top:16px;display:flex}.connect-form label{flex-direction:column;gap:4px;font-size:14px;font-weight:600;display:flex}.wizard-help{font-size:13px;font-weight:400}.wizard-actions{gap:10px;margin-top:6px;display:flex}.wizard-complete{text-align:center;padding:20px 0}.complete-check{background:var(--accent);color:#fff;border-radius:50%;width:56px;height:56px;margin:0 auto 16px;font-size:26px;font-weight:700;line-height:56px}.espn-auto-sync{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:10px;padding:14px;display:flex}.extension-found{color:var(--accent);margin:0;font-weight:600}.connect-espn-box{flex-direction:column;gap:10px;display:flex}.espn-proceed-button{color:#fff;background:#d5001c;font-weight:700}.espn-proceed-button:hover{background:#a5000f}.browser-switch-box{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;padding:14px;display:flex}.get-extension-box{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:10px;padding:16px;display:flex}.get-extension-title{margin:0;font-weight:700}.install-steps{color:var(--text);margin:4px 0;padding-left:20px;font-size:13px;line-height:1.7}.install-download{padding:8px 14px;font-size:13px;text-decoration:none;display:inline-block}.link-toggle{color:var(--accent);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px;text-decoration:underline}.league-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.league-card,.matchup-card,.bet-card{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:16px}.team-list{max-height:180px;margin:8px 0;padding:0;font-size:14px;list-style:none;overflow-y:auto}.team-list li{padding:2px 0}.team-mine{font-weight:600}.badge{background:var(--accent);color:#fff;border-radius:10px;margin-left:6px;padding:1px 6px;font-size:11px}.button-link{background:var(--accent);color:#fff;border-radius:6px;margin-top:8px;padding:6px 12px;font-size:14px;text-decoration:none;display:inline-block}.week-picker{align-items:center;gap:8px;margin-bottom:16px;display:flex}.week-picker input{width:60px}.matchup-list{flex-direction:column;gap:12px;display:flex}.matchup-teams{justify-content:space-around;align-items:center;gap:16px;display:flex}.vs{color:var(--text-muted);font-size:14px}.matchup-actions{justify-content:center;gap:8px;margin-top:12px;display:flex}.matchup-actions button{color:var(--accent);border:1px solid var(--accent);background:0 0;font-size:13px}.odds-display{text-align:center}.odds-label{font-size:14px;font-weight:600}.odds-pct{font-size:22px;font-weight:700}.odds-moneyline{color:var(--text-muted);font-size:13px}.odds-source{color:var(--text-muted);text-transform:uppercase;font-size:11px}.bet-form{flex-direction:column;gap:20px;max-width:480px;display:flex}.bet-form fieldset{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;display:flex}.stake-matcher label{flex-direction:column;gap:4px;font-size:14px;font-weight:600;display:flex}.stake-preview{background:var(--bg);border-radius:6px;margin-top:12px;padding:12px;font-size:14px}.stake-preview p{margin-bottom:6px}.void-checkboxes label{align-items:center;gap:8px;font-size:14px;font-weight:400;display:flex}.bet-list{flex-direction:column;gap:12px;display:flex}.bet-card p{margin-bottom:4px}.bet-actions{gap:8px;margin-top:16px;display:flex}.detail-table{border-collapse:collapse;width:100%;max-width:500px}.detail-table td{border-bottom:1px solid var(--border);padding:8px}.detail-table td:first-child{color:var(--text-muted);width:40%}.balance{margin-bottom:24px;font-size:36px;font-weight:700}.ledger-table{border-collapse:collapse;width:100%}.ledger-table th,.ledger-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px;font-size:14px}.positive{color:var(--accent)}.negative{color:var(--danger)}
