:root{--bg:#f4f6f3;--card:#fff;--ink:#17211b;--muted:#65736a;--line:#dfe5df;--brand:#14532d;--live:#d92d20;color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}main{max-width:860px;margin:0 auto;padding:16px 16px 64px}h1{align-items:center;gap:8px;margin:8px 0 16px;font-size:1.5rem;display:flex}h2{align-items:center;gap:6px;margin:24px 0 8px;font-size:1.05rem;display:flex}h3{color:var(--muted);margin:0 0 8px;font-size:.85rem;font-weight:600}.muted{color:var(--muted)}.small{font-size:.8rem}.grow{flex:1;min-width:0}.topbar{background:var(--brand);color:#fff;z-index:10;padding:10px 16px 0;position:sticky;top:0}.brand{font-size:1.1rem;font-weight:700}.topbar nav{gap:4px;margin-top:8px;display:flex;overflow-x:auto}.topbar nav a{opacity:.75;border-bottom:3px solid #0000;padding:8px 12px;font-size:.9rem}.topbar nav a.active{opacity:1;border-color:#fff}.tiles{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.tile{background:var(--card);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:4px;min-height:96px;padding:18px 14px;display:flex}.tile strong{font-size:1.1rem}.tile span{color:var(--muted);font-size:.82rem}@media (width>=700px){.tiles{grid-template-columns:repeat(4,1fr)}}ul,ol{margin:0;padding:0;list-style:none}.gamelist{gap:10px;display:grid}@media (width>=700px){.gamelist{grid-template-columns:repeat(2,1fr)}}.gamecard,.teamcard,.panel,.scoreboard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:block}.gamemeta{color:var(--muted);justify-content:space-between;margin-bottom:6px;font-size:.78rem;display:flex}.status.live{color:var(--live);font-weight:700}.gamerow{align-items:center;gap:8px;padding:3px 0;display:flex}.gamerow.win{font-weight:700}.score{font-variant-numeric:tabular-nums;font-size:1.1rem}.dot{border-radius:50%;flex:none;width:10px;height:10px;margin-right:6px;display:inline-block}.dot.big{width:16px;height:16px}.tag{background:#e7ece7;border-radius:4px;margin-left:6px;padding:1px 5px;font-size:.68rem;font-weight:600}.teamlist{gap:10px;display:grid}@media (width>=700px){.teamlist{grid-template-columns:repeat(2,1fr)}}.teamcard{border-left:6px solid;justify-content:space-between;align-items:center;padding:16px 14px;display:flex}.roster{background:var(--card);border:1px solid var(--line);columns:2;border-radius:12px;padding:10px 14px}.roster li{break-inside:avoid;padding:4px 0;font-size:.92rem}.seg{background:#e3e9e3;border-radius:10px;margin:8px 0 12px;padding:3px;display:flex}.seg button{font:inherit;color:var(--ink);background:0 0;border:0;border-radius:8px;flex:1;padding:9px 6px;font-size:.9rem}.seg button.on{background:var(--card);font-weight:600;box-shadow:0 1px 2px #0002}.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9rem}th,td{text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 10px}tr:last-child td{border-bottom:0}th{color:var(--muted);cursor:pointer;font-size:.75rem}.left{text-align:left}.sorted{color:var(--ink);background:#f0f5f0}.scoreboard{margin-bottom:12px}.scoreline{grid-template-columns:1fr 1fr;gap:10px;display:grid}.scoreline div{border-top:5px solid;flex-direction:column;padding-top:6px;display:flex}.scoreline span{font-size:.9rem;font-weight:600}.scoreline b{font-variant-numeric:tabular-nums;font-size:2.6rem;line-height:1.1}.flow{background:var(--card);border:1px solid var(--line);border-radius:12px;width:100%}.flow text{fill:var(--muted);font-size:9px}.flow .grid{stroke:var(--line)}.legend{gap:16px;margin-top:6px;font-size:.82rem;display:flex}.pointlog li{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 2px;font-size:.9rem;display:flex}.pscore{font-variant-numeric:tabular-nums;width:48px;font-weight:600}.btn{font:inherit;color:#fff;background:var(--brand);border:0;border-radius:10px;flex:1;min-height:44px;padding:12px 16px;font-weight:600}.btn.outline{background:var(--card);color:var(--ink);border:1.5px solid var(--line)}.btn.big{min-height:64px;font-size:1.05rem}.btn.small{padding:8px 12px;font-size:.85rem}.btn:disabled{opacity:.45}.link{color:var(--muted);font:inherit;background:0 0;border:0;font-size:.85rem;text-decoration:underline}.row{gap:10px;margin-top:10px;display:flex}.row input,.row select,.sheet select{font:inherit;border:1.5px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:10px}.row input{flex:2}.tracking{margin-bottom:4px;font-size:.9rem}.alert{color:#912018;background:#fef3f2;border:1px solid #fda29b;border-radius:10px;align-items:center;gap:10px;margin-bottom:12px;padding:10px 12px;font-size:.9rem;display:flex}.alert button{color:inherit;font:inherit;background:0 0;border:0;margin-left:auto;font-weight:600;text-decoration:underline}.attend{columns:2}.attend li{break-inside:avoid}.attend label{align-items:center;gap:8px;padding:8px 0;font-size:.92rem;display:flex}.attend input{width:20px;height:20px}@media (width<=420px){.attend,.roster{columns:1}}.zone{border:2px dashed var(--line);background:var(--card);border-radius:12px;min-height:84px;margin-bottom:10px;padding:10px}.zone.field{background:#ecf6ee;border-color:#b7d8be}.zone.over{border-color:var(--brand);border-style:solid}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{font:inherit;color:var(--ink);touch-action:manipulation;-webkit-user-select:none;user-select:none;background:#dbe7f6;border:0;border-radius:999px;align-items:center;gap:6px;padding:10px 12px;font-size:.88rem;display:flex;position:relative}.chip.F{background:#f6dfea}.chip small{background:#fff9;border-radius:999px;padding:0 6px;font-size:.72rem}.chip.dragging{box-shadow:0 6px 16px #0004}.goalbtns{grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;display:grid}.sheetwrap{z-index:20;background:#0007;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--card);width:100%;max-width:520px;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0}.sheet h2{margin-top:0}.sheet label{flex-direction:column;gap:6px;margin-top:12px;font-size:.85rem;font-weight:600;display:flex}.sheet label.check{flex-direction:row;align-items:center;font-size:.95rem;font-weight:500}.sheet label.check input{width:22px;height:22px}@media (width>=700px){.sheetwrap{align-items:center}.sheet{border-radius:16px}}
