*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0f1117;--bg2:#181c27;--bg3:#1e2335;--border:#2a3050;
  --accent:#3b82f6;--accent-h:#2563eb;--green:#22c55e;--red:#ef4444;
  --yellow:#f59e0b;--text:#e2e8f0;--text2:#94a3b8;--text3:#64748b;
  --r:10px;--r-lg:16px;--shadow:0 4px 24px rgba(0,0,0,.4);
  --tr:.18s ease;
}
html{font-size:16px}
body{background:var(--bg);color:var(--text);font-family:system-ui,sans-serif;min-height:100vh;line-height:1.6}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
img{display:block}

/* Navbar */
.navbar{display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;height:60px;background:var(--bg2);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}
.nav-logo{font-size:1.1rem;font-weight:700;color:var(--text);text-decoration:none}
.nav-links{display:flex;align-items:center;gap:.5rem}
.nav-link{padding:.3rem .75rem;border-radius:6px;color:var(--text2);font-size:.9rem;transition:background var(--tr),color var(--tr)}
.nav-link:hover,.nav-link.active{background:var(--bg3);color:var(--text);text-decoration:none}
.nav-hamburger{display:none;background:none;border:none;color:var(--text);font-size:1.4rem;cursor:pointer}
@media(max-width:640px){
  .nav-hamburger{display:block}
  .nav-links{display:none;position:absolute;top:60px;left:0;right:0;background:var(--bg2);flex-direction:column;align-items:stretch;padding:1rem;border-bottom:1px solid var(--border)}
  .nav-links.open{display:flex}
  .nav-link{padding:.6rem 1rem}
}

/* Layout */
.container{max-width:1100px;margin:0 auto;padding:1.5rem 1rem 4rem}
.page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}
.page-header h2{font-size:1.5rem;font-weight:700}
.subtitle{color:var(--text2);font-size:.9rem;margin-top:.2rem}
.header-actions{display:flex;align-items:center;gap:.75rem}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem 1.1rem;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all var(--tr);text-decoration:none;white-space:nowrap}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-primary:hover:not(:disabled){background:var(--accent-h);text-decoration:none}
.btn-ghost{background:transparent;color:var(--text2);border-color:var(--border)}
.btn-ghost:hover:not(:disabled){background:var(--bg3);color:var(--text);text-decoration:none}
.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}
.btn-success{background:var(--green);color:#fff;border-color:var(--green)}
.btn-full{width:100%}
.btn-sm{padding:.3rem .7rem;font-size:.8rem}
.btn-danger-ghost{color:var(--red)!important}
.btn-danger-ghost:hover{background:rgba(239,68,68,.1)!important}

/* Forms */
.form-group{margin-bottom:1rem}
.form-group label{display:block;font-size:.85rem;color:var(--text2);margin-bottom:.4rem}
input[type=text],input[type=email],input[type=password],input[type=search]{
  width:100%;padding:.6rem .9rem;border-radius:8px;background:var(--bg3);
  border:1px solid var(--border);color:var(--text);font-size:.95rem;
  transition:border-color var(--tr)
}
input:focus{outline:none;border-color:var(--accent)}
.form-error{color:var(--red);font-size:.85rem;margin-bottom:.75rem;padding:.5rem .75rem;background:rgba(239,68,68,.1);border-radius:6px}
.form-success{color:var(--green);font-size:.85rem;margin-bottom:.75rem;padding:.5rem .75rem;background:rgba(34,197,94,.1);border-radius:6px}
.hidden{display:none!important}

/* Auth page */
.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem}
.auth-box{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-lg);padding:2rem;width:100%;max-width:420px;box-shadow:var(--shadow)}
.auth-logo{text-align:center;margin-bottom:1.5rem}
.auth-logo .icon{font-size:2.5rem}
.auth-logo h1{font-size:1.6rem;font-weight:800;margin-top:.25rem}
.auth-logo p{color:var(--text2);font-size:.9rem;margin-top:.3rem}
.auth-tabs{display:flex;background:var(--bg3);border-radius:8px;padding:3px;margin-bottom:1.5rem}
.tab-btn{flex:1;padding:.45rem;border:none;background:none;color:var(--text2);border-radius:6px;cursor:pointer;font-size:.9rem;transition:all var(--tr)}
.tab-btn.active{background:var(--bg2);color:var(--text);font-weight:600}

/* Fixture card */
.fixtures-list{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.25rem}
.fixture-card{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:.7rem 1rem;transition:border-color var(--tr)}
.fixture-card:hover{border-color:var(--accent)}
.fixture-live{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.04)}
.fixture-fin{opacity:.7}
.fixture-team{display:flex;align-items:center;gap:.5rem}
.fixture-home{justify-content:flex-end;text-align:right;flex-direction:row-reverse}
.team-name{font-size:.88rem;font-weight:500;line-height:1.3}
.team-badge{width:26px;height:26px;object-fit:contain;flex-shrink:0}
.fixture-mid{text-align:center;min-width:80px}
.score{font-size:1.2rem;font-weight:800;display:block}
.vs{font-size:.85rem;color:var(--text3)}
.fixture-status{font-size:.72rem;color:var(--text2);margin-top:.15rem;line-height:1.3}
.status-live{color:var(--red);font-weight:700}
.status-ft{color:var(--text3)}
@media(max-width:480px){
  .fixture-card{padding:.5rem .6rem}
  .team-name{font-size:.78rem}
  .score{font-size:1rem}
}

/* League section */
.league-section{margin-bottom:2rem}
.league-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}
.league-logo{width:28px;height:28px;object-fit:contain}
.league-title{font-size:1.05rem;font-weight:600;flex:1}
.sport-pill-sm{font-size:.72rem;background:var(--bg3);padding:.2rem .5rem;border-radius:20px;color:var(--text3)}
.section-sub{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);margin-bottom:.6rem}
.no-fixtures{color:var(--text3);font-size:.85rem;padding:.5rem 0}
details summary{font-size:.85rem;color:var(--text2);cursor:pointer;padding:.5rem 0;list-style:none}
details summary::-webkit-details-marker{display:none}
details[open] summary{margin-bottom:.6rem}

/* Browse */
.sport-tabs{display:flex;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap}
.sport-tab{padding:.4rem 1rem;border-radius:20px;font-size:.85rem;background:var(--bg2);border:1px solid var(--border);color:var(--text2);cursor:pointer;transition:all var(--tr);white-space:nowrap}
.sport-tab:hover{border-color:var(--accent);color:var(--text)}
.sport-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}
.search-bar{margin-bottom:1rem}
.search-bar input{max-width:400px}
.teams-grid{display:flex;flex-direction:column;gap:.4rem}
.team-card{display:flex;align-items:center;gap:.75rem;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:.65rem 1rem;transition:border-color var(--tr)}
.team-card:hover{border-color:var(--accent)}
.team-card-badge{width:36px;height:36px;object-fit:contain;flex-shrink:0}
.team-card-info{flex:1}
.team-card-info strong{font-size:.9rem;display:block}
.team-card-info span{font-size:.78rem;color:var(--text2)}
.league-group{margin-bottom:1.5rem}
.league-group-header{font-size:.85rem;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;padding:.4rem 0;border-bottom:1px solid var(--border);margin-bottom:.6rem}

/* Settings */
.settings-wrap{max-width:680px}
.settings-section{margin-bottom:2rem}
.settings-section h3{font-size:.8rem;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}
.settings-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:1rem 1.25rem}
.settings-row{display:flex;justify-content:space-between;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--border)}
.settings-row:last-child{border-bottom:none}
.settings-row label{font-size:.85rem;color:var(--text2)}
.settings-item{display:flex;align-items:center;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--border)}
.settings-item:last-child{border-bottom:none}
.settings-item-badge{width:28px;height:28px;object-fit:contain}
.settings-item-name{flex:1;font-size:.9rem}
.settings-item-meta{font-size:.75rem;color:var(--text3)}
.danger-card{border-color:rgba(239,68,68,.3)}
.danger-card p{font-size:.9rem;color:var(--text2);margin-bottom:1rem}

/* Push notification toggle */
.push-toggle{display:flex;align-items:center;gap:.75rem}
.push-status{font-size:.85rem}
.push-on{color:var(--green)}
.push-off{color:var(--text3)}
.push-unsupported{color:var(--yellow)}

/* Loading / empty */
.loading-state{text-align:center;padding:3rem 1rem;color:var(--text2)}
.spinner{width:36px;height:36px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .7s linear infinite;margin:0 auto 1rem}
@keyframes spin{to{transform:rotate(360deg)}}
.empty-state{text-align:center;padding:4rem 1rem}
.empty-icon{font-size:3rem;margin-bottom:1rem}
.empty-state h3{font-size:1.2rem;margin-bottom:.5rem}
.empty-state p{color:var(--text2);margin-bottom:1.5rem}

/* Badge */
.badge-live{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:20px;font-size:.75rem;font-weight:600;background:rgba(239,68,68,.15);color:var(--red);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}

/* Toast */
.toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%) translateY(80px);background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:.65rem 1.25rem;border-radius:8px;font-size:.9rem;z-index:999;transition:transform .3s ease;white-space:nowrap;box-shadow:var(--shadow)}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast-error{border-color:var(--red);color:var(--red)}
