:root{--bg:#f3f4f6;--panel:#fff;--text:#111827;--muted:#6b7280;--border:#d1d5db;--primary:#ea580c;--primary-dark:#c2410c;--dark:#111827;--success:#166534;--success-bg:#dcfce7;--danger:#b91c1c;--danger-bg:#fee2e2;--warning:#92400e;--warning-bg:#fef3c7;--technical:#7e22ce;--technical-bg:#f3e8ff;--shadow:0 4px 16px rgba(0,0,0,.07);--radius:14px}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:9px;font-weight:750;min-height:42px}button:disabled{opacity:.45;cursor:not-allowed}.hidden{display:none!important}
.app-header{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px max(12px,env(safe-area-inset-left));background:var(--dark);color:white;box-shadow:0 2px 12px rgba(0,0,0,.2)}.app-header h1{margin:0;font-size:clamp(1.05rem,2.5vw,1.45rem)}.app-header p{margin:2px 0 0;color:#d1d5db;font-size:.82rem}.header-actions{display:flex;gap:7px;flex-shrink:0}main{max-width:1600px;margin:0 auto;padding:10px}.panel{background:var(--panel);border:1px solid #e5e7eb;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin-bottom:10px}.panel.compact{padding:8px}
h2,h3{margin-top:0}.section-title-row,.roster-heading,.summary-header,.live-team-header{display:flex;justify-content:space-between;gap:12px;align-items:center}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px}label{display:flex;flex-direction:column;gap:5px;font-weight:650;font-size:.88rem}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:9px;padding:10px;background:white;color:var(--text)}textarea{resize:vertical;min-height:160px}.roster-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.roster-card{border:1px solid #e5e7eb;border-radius:11px;padding:12px}.hint{color:var(--muted);font-size:.82rem;margin-top:-4px}.checkbox-row{flex-direction:row;align-items:center;margin-top:8px;font-weight:500}.checkbox-row input{width:auto}.setup-actions{display:flex;justify-content:flex-end;margin-top:12px}
.primary{background:var(--primary);color:white;padding:0 14px}.primary:hover{background:var(--primary-dark)}.secondary{background:#e5e7eb;color:#111827;padding:0 12px}.danger{background:#991b1b;color:white;padding:0 12px}.large{min-height:50px;padding:0 24px}.small{min-height:32px;padding:0 9px;font-size:.78rem}.saved-games{margin-top:12px;border-top:1px solid #e5e7eb;padding-top:10px}.saved-game-item{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid #eee}.saved-game-info strong{display:block}.saved-game-info span{color:var(--muted);font-size:.82rem}.saved-game-actions{display:flex;gap:6px}
.game-toolbar{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px}.game-meta{display:flex;gap:20px;flex-wrap:wrap}.game-meta>div{display:flex;flex-direction:column}.label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.65rem;font-weight:800}.period-controls,.game-actions{display:flex;gap:6px}.scoreboard{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;text-align:center;background:var(--dark);color:white;padding:10px}.team-name{font-size:clamp(.95rem,2.5vw,1.2rem);font-weight:800}.score{font-size:clamp(2.5rem,7vw,4.6rem);line-height:1;font-weight:900;margin:4px 0}.timeout-row{color:#d1d5db;font-size:.82rem;display:flex;gap:7px;justify-content:center;align-items:center}.timeout-btn{background:#374151;color:white}.score-center{min-width:96px;color:#d1d5db;font-size:.65rem;font-weight:800;letter-spacing:.1em}.period-badge{background:var(--primary);color:white;border-radius:999px;padding:6px 10px;margin-bottom:5px;font-size:.82rem;letter-spacing:normal}
.legend{display:flex;gap:8px 14px;align-items:center;flex-wrap:wrap;font-size:.72rem;color:#4b5563}.legend strong{color:#111827}.teams-live-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.team-live{overflow:hidden;padding:10px}.live-team-header{margin-bottom:7px}.live-team-header h2{margin:0;font-size:1.1rem}.live-points{font-size:.82rem;font-weight:900;background:#f3f4f6;padding:5px 8px;border-radius:999px}.player-rows{display:flex;flex-direction:column;gap:6px}.player-stat-row{display:grid;grid-template-columns:minmax(92px,1.45fr) repeat(7,minmax(40px,1fr));grid-template-rows:42px 42px;gap:4px;min-width:420px;border:1px solid #e5e7eb;border-radius:9px;padding:4px;background:#fafafa}.player-name-cell{grid-row:1/3;grid-column:1;display:flex;flex-direction:column;justify-content:center;padding:4px 5px;overflow:hidden}.player-name-cell strong{font-size:.83rem;line-height:1.1;overflow:hidden;text-overflow:ellipsis}.player-name-cell small{font-size:.58rem;line-height:1.15;color:var(--muted);margin-top:4px}.quick-stat{min-height:0;height:42px;padding:1px 2px;border-radius:7px;background:#edf0f4;display:flex;align-items:center;justify-content:center;gap:2px;flex-direction:column;touch-action:manipulation;user-select:none;-webkit-user-select:none}.quick-stat:active{transform:scale(.94)}.quick-stat span{font-size:.68rem;font-weight:900;line-height:1}.quick-stat b{font-size:.72rem;line-height:1;color:#6b7280}.quick-stat.made{background:var(--success-bg);color:var(--success)}.quick-stat.missed{background:var(--danger-bg);color:var(--danger)}.quick-stat.warning{background:var(--warning-bg);color:var(--warning)}.quick-stat.technical{background:var(--technical-bg);color:var(--technical)}.quick-stat.made b,.quick-stat.missed b,.quick-stat.warning b,.quick-stat.technical b{color:currentColor;opacity:.72}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:8px}table{width:100%;border-collapse:collapse;min-width:1100px}th,td{padding:8px 7px;text-align:center;border-bottom:1px solid #e5e7eb;white-space:nowrap;font-size:.78rem}th{background:#f3f4f6;position:sticky;top:0;z-index:2}th:first-child,td:first-child{text-align:left;position:sticky;left:0;background:inherit;z-index:1}tr.team-total{font-weight:900;background:#fff7ed}.summary-team{margin-bottom:22px}.summary-team h3{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}.summary-team h3 span{color:var(--muted);font-size:.85rem;font-weight:600}.toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:50;background:#111827;color:white;padding:9px 14px;border-radius:999px;box-shadow:var(--shadow)}
@media(max-width:1100px){.teams-live-grid{grid-template-columns:1fr}.player-stat-row{grid-template-columns:minmax(120px,1.4fr) repeat(7,minmax(46px,1fr));min-width:500px}.game-toolbar{grid-template-columns:1fr}.period-controls,.game-actions{flex-wrap:wrap}.form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.app-header{align-items:flex-start}.app-header p{display:none}main{padding:6px}.panel{padding:9px;border-radius:10px}.form-grid,.roster-grid{grid-template-columns:1fr}.section-title-row,.roster-heading,.summary-header{align-items:stretch;flex-direction:column}.scoreboard{grid-template-columns:1fr 66px 1fr;padding:8px 4px}.score-center{min-width:0;font-size:.55rem}.period-badge{padding:5px 6px;font-size:.72rem}.timeout-row{flex-direction:column;gap:3px}.legend{font-size:.65rem}.team-live{padding:6px;overflow-x:auto}.player-stat-row{grid-template-columns:minmax(84px,1.25fr) repeat(7,minmax(38px,1fr));grid-template-rows:40px 40px;min-width:380px;gap:3px}.quick-stat{height:40px}.quick-stat span{font-size:.63rem}.quick-stat b{font-size:.67rem}.player-name-cell strong{font-size:.74rem}.player-name-cell small{font-size:.53rem}}
@media(max-width:430px){.app-header{padding:8px}.app-header h1{font-size:.95rem}.header-actions button{padding:0 8px;font-size:.73rem}.score{font-size:2.6rem}.player-stat-row{min-width:370px}}
