.app-shell{display:flex;flex-direction:column;min-height:100vh}.pwa-banner{position:fixed;left:0;right:0;bottom:0;background:var(--fg);color:#fff;z-index:900;box-shadow:0 -2px 16px #0000002e;animation:pwa-slide-up .28s ease-out;padding-bottom:env(safe-area-inset-bottom)}@keyframes pwa-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.pwa-banner-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;flex-wrap:wrap}.pwa-banner-text{flex:1 1 auto;min-width:200px;font-size:.95rem}.pwa-banner-text strong{color:#fff}.pwa-banner-text span{opacity:.85}.pwa-banner-actions{display:flex;gap:.5rem;flex-wrap:wrap}.pwa-banner .btn-small{background:#fff;color:var(--fg);border:1px solid rgba(255,255,255,.18)}.pwa-banner .btn-small.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.pwa-overlay{position:fixed;inset:0;background:#00000080;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.pwa-help{background:#fff;color:var(--fg);border-radius:10px;max-width:460px;width:100%;padding:1.25rem 1.5rem;position:relative;box-shadow:0 10px 30px #0003}.pwa-help h3{margin:0 0 .5rem}.pwa-help ol{padding-left:1.25rem;line-height:1.55}.pwa-help li{margin-bottom:.35rem}.pwa-close{position:absolute;top:.5rem;right:.6rem;background:none;border:none;font-size:1.2rem;color:var(--muted);cursor:pointer}.pwa-help .btn{margin-top:.75rem}@media(display-mode:standalone){.pwa-banner{display:none}}.app-nav{background:#fff;border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.app-nav .inner{display:flex;align-items:center;gap:1rem;max-width:1200px;margin:0 auto;padding:.75rem 1rem}.brand{font-weight:700;font-size:1.25rem;color:var(--primary);text-decoration:none}.nav-links{display:flex;gap:1rem;margin-left:1rem;flex:1}.nav-links a{color:var(--muted);text-decoration:none;padding:.25rem .5rem;border-radius:4px}.nav-links a.active{color:var(--primary);background:#0b6e4f14}.nav-controls{display:flex;gap:.5rem;align-items:center}.btn,.btn-ghost,.btn-primary,.btn-success{display:inline-block;padding:.4rem .9rem;border-radius:6px;text-decoration:none;border:1px solid transparent;font-weight:500}.btn-primary{background:var(--primary);color:var(--primary-fg)}.btn-success{background:var(--success);color:#fff}.btn-ghost{background:transparent;color:var(--fg);border-color:var(--border)}main{max-width:1200px;margin:0 auto;padding:1.5rem 1rem;width:100%;flex:1}.page-stub{padding:2rem 0}.page-stub h1{margin-top:0}.page-stub p,.muted{color:var(--muted)}.auth-card{max-width:420px;margin:2rem auto;background:#fff;border:1px solid var(--border);border-radius:8px;padding:1.5rem 1.75rem;box-shadow:var(--shadow)}.auth-card h1{margin-top:0;font-size:1.4rem}.auth-card form{display:flex;flex-direction:column;gap:.85rem}.auth-card label{display:flex;flex-direction:column;font-size:.9rem;gap:.25rem;color:var(--muted)}.auth-card label input,.auth-card label select{font:inherit;padding:.55rem .7rem;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--fg)}.auth-card label small{color:var(--muted);font-size:.78rem}.auth-card button[type=submit]{margin-top:.5rem;padding:.6rem;font-size:1rem}.form-error{color:var(--danger);background:#fdecea;border:1px solid #f5b8b3;padding:.5rem .75rem;border-radius:6px;font-size:.9rem;margin:0}.prefs-page{padding:1rem 0}.prefs-page h1{margin-top:0}.prefs-page .blurb{color:var(--muted);margin-top:0}.sport-group{border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem;background:#fff}.sport-group h2{margin:0 0 .5rem;font-size:1.1rem}.sport-group .leagues{display:flex;flex-wrap:wrap;gap:.5rem}.team-filter{margin-top:.75rem;border-top:1px dashed var(--border);padding-top:.5rem}.team-filter-toggle{background:none;border:none;padding:.3rem 0;cursor:pointer;font:inherit;text-align:left;color:var(--fg)}.team-filter-toggle .chev{display:inline-block;width:1em;color:var(--muted)}.team-filter-toggle strong{color:var(--fg)}.team-filter-toggle .muted{color:var(--muted);font-size:.9rem}.team-filter-body{padding:.5rem 0 .25rem 1.2rem}.team-filter-body .leagues{margin-bottom:.5rem}.pill{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .75rem;border:1px solid var(--border);border-radius:999px;cursor:pointer;background:#fff;-webkit-user-select:none;user-select:none;font-size:.92rem}.pill input{accent-color:var(--primary)}.pill.selected{background:#0b6e4f14;border-color:var(--primary);color:var(--primary)}.toolbar{display:flex;gap:.5rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}.toolbar .save-state{color:var(--success);font-size:.9rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin:1rem 0}.dashboard-card{border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;background:#fff}.dashboard-card h3{margin:0;font-size:1rem;color:var(--muted)}.dashboard-card .big{font-size:2rem;font-weight:700;color:var(--primary);margin:.25rem 0 0}.history-list{list-style:none;padding:0;margin:.5rem 0}.history-list li{display:grid;grid-template-columns:5rem 6rem 1fr;gap:.75rem;padding:.4rem 0;border-bottom:1px solid var(--border);align-items:baseline}.history-date{color:var(--muted);font-size:.85rem}.history-league{color:var(--primary);font-weight:500;font-size:.9rem}.fixtures-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;margin:1rem 0}.fixture-card{background:#fff;border:1px solid var(--border);border-left-width:4px;border-radius:8px;padding:.9rem 1rem}.fixture-card.watchable{border-left-color:var(--success)}.fixture-card.not-watchable{border-left-color:#ccc}.fixture-card header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted)}.fixture-card .league-chip{background:#0b6e4f14;color:var(--primary);border-radius:4px;padding:2px 6px;font-weight:500}.fixture-card h3{margin:.3rem 0 .1rem;font-size:1.05rem}.fixture-card .sport{margin:0 0 .6rem;color:var(--muted);font-size:.85rem}.fixture-card .watch{margin-bottom:.5rem}.badge{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.85rem;font-weight:500}.badge.green{background:#dff0d8;color:#1f7a3a}.badge.amber{background:#fcebbf;color:#a06520}.badge.grey{background:#eee;color:#555}.channels small{color:var(--muted)}.channel-chip{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--border);font-size:.8rem;margin:2px 4px 2px 0}.channel-chip.owned{background:#1f8a4c1a;border-color:var(--success);color:#186837;font-weight:500}.channel-chip.unowned{background:#fafafa;color:var(--muted)}.card-actions{margin-top:.55rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.why-link{background:none;border:none;color:var(--primary);cursor:pointer;padding:0;font-size:.85rem;text-decoration:underline}.why-link:disabled{opacity:.5;cursor:wait}.watchlisted-badge{margin:.4rem 0 0;font-size:.85rem;color:var(--accent);font-weight:500}.diagnostic-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000}.diagnostic-card{background:#fff;border-radius:8px;padding:1.25rem 1.5rem;max-width:560px;width:100%;position:relative;box-shadow:0 10px 30px #00000026}.diagnostic-card h3{margin:0 0 .25rem}.diagnostic-close{position:absolute;top:.5rem;right:.6rem;background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--muted)}.diagnostic-card .will{color:var(--success);font-weight:500}.diagnostic-card .wont{color:var(--warning);font-weight:500}.checks{list-style:none;padding:0;margin:.5rem 0}.checks li{display:flex;align-items:baseline;gap:.5rem;padding:.25rem 0;font-size:.92rem}.checks li.ok .mark{color:var(--success)}.checks li.block .mark{color:var(--danger)}.checks li.warn .mark{color:var(--muted)}.checks li.block .label{font-weight:600}.checks .mark{width:1.2em;text-align:center}.checks .detail{font-size:.85rem}.settings-section{background:#fff;border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.settings-section.danger-zone{border-color:var(--danger)}.settings-section.danger-zone h2{color:var(--danger)}.settings-section.danger-zone .btn-danger{margin-top:.5rem;padding:.55rem .9rem}.settings-section h2{margin-top:0;font-size:1.05rem}.settings-section .pill{margin-right:.5rem}.settings-section label{display:block;margin-bottom:.4rem}.settings-section input[type=number],.settings-section input[type=time]{padding:.4rem .55rem;border:1px solid var(--border);border-radius:6px;font:inherit;margin-left:.5rem}.settings-section small{display:block;color:var(--muted);margin-top:.2rem}.settings-section fieldset{border:1px dashed var(--border);border-radius:6px;padding:.5rem 1rem;margin-top:.7rem}.settings-section legend{font-size:.85rem;color:var(--muted);padding:0 .4rem}.admin-nav{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.admin-nav a{padding:.3rem .7rem;border-radius:4px;text-decoration:none;color:var(--muted)}.admin-nav a.active{background:#0b6e4f14;color:var(--primary);font-weight:500}.admin-page{padding:1rem 0}.admin-page table{width:100%;border-collapse:collapse;margin-top:1rem;background:#fff}.admin-page th,.admin-page td{padding:.5rem .75rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.admin-page th{background:#f6f7f9;font-weight:600}.admin-page .row-actions{display:flex;gap:.4rem;flex-wrap:wrap}.admin-page form.inline{display:flex;gap:.5rem;align-items:end;flex-wrap:wrap;margin:1rem 0}.admin-page form.inline label{display:flex;flex-direction:column;font-size:.85rem;color:var(--muted)}.admin-page form.inline input,.admin-page form.inline select{padding:.4rem .55rem;border:1px solid var(--border);border-radius:6px;font:inherit}.btn-danger{background:var(--danger);color:#fff;border:none;padding:.35rem .7rem;border-radius:6px;cursor:pointer}.btn-small{padding:.35rem .7rem;font-size:.85rem;border-radius:6px;border:1px solid var(--border);background:#fff;cursor:pointer}.btn-small.primary{background:var(--primary);color:#fff;border-color:var(--primary)}:root{--bg: #ffffff;--fg: #1a1a1a;--muted: #5a5a5a;--primary: #0b6e4f;--primary-fg: #ffffff;--accent: #f4a261;--border: #e2e2e2;--success: #1f8a4c;--warning: #c97a1a;--danger: #b3261e;--shadow: 0 1px 3px rgba(0, 0, 0, .08);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;color:var(--fg);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--primary)}button{font:inherit;cursor:pointer}.skip-link{position:absolute;left:-9999px;top:0;background:var(--fg);color:var(--bg);padding:.5rem 1rem;z-index:100}.skip-link:focus{left:0}
