:root{--brand: #0b3d91;--brand-2: #1e5bc6;--bg: #f4f6fa;--card: #ffffff;--text: #1b2330;--muted: #667085;--line: #e3e7ee;--good: #1a7f37;--good-bg: #e6f4ea;--warn: #9a6700;--warn-bg: #fff4d6;--bad: #c62828;--bad-bg: #fdecec;--info-bg: #e8f0fe;--radius: 10px;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #0f141b;--card: #18202b;--text: #e6eaf0;--muted: #98a2b3;--line: #2a3442;--good: #5cc27a;--good-bg: #173322;--warn: #e3b341;--warn-bg: #3a2f12;--bad: #ff7b72;--bad-bg: #3d1a1a;--info-bg: #182a47;--brand-2: #6f9cf0}}*{box-sizing:border-box}html,body{margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45}a{color:var(--brand-2);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.5rem;margin:0 0 16px}h2{font-size:1.1rem;margin:0}h3{font-size:1rem;margin:16px 0 8px}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:var(--brand);color:#fff}.topbar .brand{font-weight:700;font-size:1.15rem;letter-spacing:.5px}.topbar .who{color:#fff}.topbar .who small{opacity:.75}.topbar button.ghost{color:#fff;border-color:#ffffff59}.spacer{flex:1}.menu-btn{display:none}.body{display:flex;flex:1}.sidenav{width:220px;flex-shrink:0;padding:16px 8px;border-right:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;gap:2px}.sidenav a{padding:9px 12px;border-radius:8px;color:var(--text)}.sidenav a:hover{background:var(--bg);text-decoration:none}.sidenav a.active{background:var(--info-bg);color:var(--brand-2);font-weight:600}.content{flex:1;padding:20px;max-width:1200px;width:100%;min-width:0}@media (max-width: 800px){.menu-btn{display:inline-block}.topbar .who{display:none}.sidenav{position:fixed;top:52px;left:0;bottom:0;z-index:15;transform:translate(-100%);transition:transform .2s;box-shadow:2px 0 12px #00000026}.sidenav.open{transform:none}.content{padding:12px}}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.grid3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:0 12px}@media (max-width: 600px){.grid2,.grid3{grid-template-columns:1fr}}.center{display:grid;place-items:center;min-height:60vh}.form{display:flex;flex-direction:column;gap:4px}.form.narrow{max-width:380px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.field>span{font-size:.85rem;color:var(--muted)}input,select,textarea{font:inherit;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:38px;width:100%}.filters select,.filters input{width:auto;min-width:180px}input[type=checkbox]{width:18px;height:18px;min-height:0}input[type=range]{padding:0}input.num{width:64px;padding:4px 6px;min-height:32px}.check{display:flex;gap:10px;align-items:flex-start;margin:8px 0}.check input{margin-top:2px;flex-shrink:0}button{font:inherit;cursor:pointer;border-radius:8px;padding:8px 14px;min-height:38px;border:1px solid var(--line);background:var(--card);color:var(--text)}button:hover:not(:disabled){border-color:var(--brand-2)}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--brand-2);color:#fff;border-color:var(--brand-2)}button.danger{color:var(--bad);border-color:var(--bad)}button.ghost{background:transparent}button.small{padding:4px 10px;min-height:30px;font-size:.85rem}button.link{border:0;background:none;padding:0;min-height:0;color:var(--brand-2)}button.install{background:var(--good);color:#fff;border-color:var(--good)}button.install.small{padding:4px 10px;min-height:32px;font-size:.85rem}@media (max-width: 500px){.topbar button.install{display:none}}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;flex-wrap:wrap}.segmented button{border:0;border-radius:0;border-right:1px solid var(--line);min-height:34px;padding:6px 10px}.segmented button:last-child{border-right:0}.segmented button.active{background:var(--brand-2);color:#fff}.segmented button.active.Absent{background:var(--bad)}.segmented button.active.Excused{background:var(--warn)}.segmented button.active.Injured{background:#8250df}.segmented button.active.Present{background:var(--good)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.8rem;color:var(--muted);font-weight:600;white-space:nowrap}table.compact td,table.compact th{padding:4px 6px}tr.dim{opacity:.55}.nowrap{white-space:nowrap}.muted{color:var(--muted)}.small{font-size:.85rem}.good{color:var(--good)}.bad{color:var(--bad)}.alert{padding:10px 12px;border-radius:8px;margin:8px 0}.alert.error{background:var(--bad-bg);color:var(--bad)}.alert.success{background:var(--good-bg);color:var(--good)}.alert.info{background:var(--info-bg)}.alert ul{margin:4px 0 0;padding-left:20px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.78rem;background:var(--bg);border:1px solid var(--line)}.badge.good{background:var(--good-bg);color:var(--good);border-color:transparent}.badge.warn{background:var(--warn-bg);color:var(--warn);border-color:transparent}.badge.bad{background:var(--bad-bg);color:var(--bad);border-color:transparent}.badge.info{background:var(--info-bg);color:var(--brand-2);border-color:transparent}.chip{display:inline-flex;gap:4px;align-items:center;margin:0 6px 4px 0;padding:1px 6px;border-radius:6px;background:var(--bg)}.list{list-style:none;padding:0;margin:0}.list li{padding:6px 0;border-bottom:1px solid var(--line);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.list li:last-child{border-bottom:0}.steps li{margin-bottom:8px}.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 20px;margin-bottom:8px}.kv>div>span{display:block;font-size:.8rem;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:16px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px}.card .stat{background:var(--bg)}.stat-value{font-size:1.4rem;font-weight:700}.stat-label{font-size:.8rem;color:var(--muted)}.stat.good .stat-value{color:var(--good)}.stat.warn .stat-value{color:var(--warn)}.stat.bad .stat-value{color:var(--bad)}.week-nav button{min-width:38px}.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day{background:var(--bg);border-radius:8px;padding:8px;min-height:120px}.day.today{outline:2px solid var(--brand-2)}.day-head{font-weight:600;font-size:.85rem;margin-bottom:6px}.event{background:var(--card);border-left:4px solid var(--brand-2);border-radius:6px;padding:6px 8px;margin-bottom:6px;font-size:.88rem}.event.match{border-left-color:var(--good)}.event.event{border-left-color:#8250df}.event.cancelled{opacity:.55;text-decoration:line-through}.event.conflict{border-left-color:var(--bad);background:var(--bad-bg)}@media (max-width: 900px){.week{grid-template-columns:1fr}.day{min-height:0}}.attendance{list-style:none;padding:0;margin:0 0 12px}.attendance li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.attendance .name{font-weight:500}.auth-page{min-height:100vh;display:flex;justify-content:center;align-items:flex-start;padding:8vh 16px 16px}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:8px}.auth-card h1{color:var(--brand-2);margin-bottom:0}.form-page{width:100%;max-width:760px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:50;display:flex;justify-content:center;align-items:flex-start;padding:6vh 12px;overflow-y:auto}.modal{background:var(--card);border-radius:var(--radius);padding:16px;width:100%;max-width:640px;box-shadow:0 10px 40px #0000004d}
