:root{color-scheme:dark;--ink: #e8eef7;--muted: #9aafc6;--bg: #0e1724;--card: rgba(10, 18, 32, .88);--line: rgba(255, 255, 255, .14);--blue: #2a62e8;--red: #d22525;--amber: #ffe14a;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);font-family:system-ui,Segoe UI,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);overflow:hidden}body{touch-action:none;user-select:none;-webkit-user-select:none}button,input{font:inherit;color:inherit}button{cursor:pointer}input{user-select:text;-webkit-user-select:text;touch-action:auto}#view{position:fixed;inset:0;width:100%;height:100%;display:block;background:#8eb6d8}#rotate{display:none;position:fixed;inset:0;z-index:40;background:var(--bg);align-items:center;justify-content:center;text-align:center;padding:24px;font-size:1.25rem}body.coarse.portrait #rotate{display:flex}@media(orientation:landscape),(min-aspect-ratio:1/1){#rotate{display:none!important}}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px 22px 18px;box-shadow:0 16px 50px #00000059;backdrop-filter:blur(8px)}#start,#pause,#end{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px}#start .card,#pause .card,#end .card{width:min(420px,100%)}#start .card{max-height:calc(100vh - 24px);overflow:auto}#end #end-match{width:min(560px,100%);max-height:calc(100vh - 24px);overflow:auto}h1{margin:0 0 4px;font-size:1.7rem;letter-spacing:-.03em}.sub{margin:0 0 16px;color:var(--muted)}label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:6px}#team-name,#sens{width:100%;margin-bottom:14px}#club-choice{border:0;padding:0;margin:0 0 12px}#club-choice legend{margin-bottom:7px;font-weight:700}#club-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#club-choice legend{grid-column:1 / -1}#club-choice label{position:relative;cursor:pointer}#club-choice input{position:absolute;opacity:0;pointer-events:none}#club-choice label>span{min-height:76px;display:flex;flex-direction:column;justify-content:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font-weight:700;text-align:center;overflow:hidden}#club-choice .club-sant-ramon>span{color:#111a4f;background:repeating-linear-gradient(0deg,#f1c40f 0 16px,#b5222b 16px 32px);text-shadow:0 1px 0 rgba(255,255,255,.38)}#club-choice .club-vilafranca>span{color:#fff;background:#174da6}#club-choice small{align-self:center;margin-top:4px;padding:2px 6px;border-radius:6px;color:inherit;background:#ffffffb3;font-size:.72rem;font-weight:700;text-shadow:none}#club-choice .club-vilafranca small{background:#0003}#club-choice input:checked+span{border-color:#fff;box-shadow:inset 0 0 0 3px #fff,0 0 0 2px #8eb4ff;transform:translateY(-1px)}#club-choice input:focus-visible+span{outline:2px solid #fff;outline-offset:2px}#player-alias{min-width:0;flex:1;background:#0b1220;border:1px solid var(--line);border-radius:10px;padding:12px}.points-total{display:flex;align-items:baseline;gap:8px;margin:2px 0 8px}.points-total strong{color:var(--amber);font-size:2rem;font-variant-numeric:tabular-nums}.points-total span{color:var(--muted)}#points-breakdown{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px;padding:0;margin:0 0 14px;list-style:none;font-size:.86rem;color:#d5e0ee}#points-breakdown li{display:flex;justify-content:space-between;gap:8px}#points-breakdown strong{color:#fff}.alias-row{display:flex;gap:8px}.ranking-note,.ranking-message{color:var(--muted);font-size:.78rem;line-height:1.35;margin:7px 0 10px}.ranking-message{color:#9ce7ae;min-height:1.1em}#local-leaderboard{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}#local-leaderboard h2{font-size:1rem;margin:0 0 6px}#ranking-list{margin-bottom:14px}#ranking-list small{color:var(--muted)}.row{display:flex;gap:8px;flex-wrap:wrap}.row button,.primary,.ghost{border-radius:10px;border:1px solid var(--line);padding:12px 16px;background:#18263a;min-height:48px}.primary{background:var(--blue);border-color:transparent;font-weight:700}.primary:disabled{opacity:.45}.ghost{background:transparent}#loading{color:var(--muted);min-height:1.2em;margin:8px 0 0}#start-leaderboard{border-top:1px solid var(--line);margin-top:12px;padding-top:11px}#derby-score{margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#0b1220}#derby-score>p{margin:0 0 7px;color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-align:center;text-transform:uppercase}.derby-scoreline,.derby-percentages,.derby-wins{display:flex;align-items:center;justify-content:space-between;gap:12px}.derby-club{min-width:0;font-size:.78rem;font-weight:700}.derby-club.sant-ramon{color:#ffd958}.derby-club.vilafranca{color:#8eb4ff;text-align:right}.derby-percentages{margin-top:3px}.derby-percentages strong{color:#fff;font-size:1.28rem;font-variant-numeric:tabular-nums}.derby-gauge{position:relative;height:12px;margin:5px 0;overflow:hidden;border-radius:999px;background:#2450a5;box-shadow:inset 0 0 0 1px #ffffff24}.derby-gauge:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;transform:translate(-1px);background:#ffffffbf}#derby-sant-bar{display:block;height:100%;width:50%;background:repeating-linear-gradient(90deg,#f5ce35 0 8px,#a9232b 8px 16px);transition:width .35s ease}.derby-wins{color:var(--muted);font-size:.68rem}.derby-wins b{color:#dce7f5;font-variant-numeric:tabular-nums}#derby-score[data-leader=sant-ramon] .derby-club.sant-ramon,#derby-score[data-leader=vilafranca] .derby-club.vilafranca{text-shadow:0 0 12px currentColor}#derby-summary{display:block;margin-top:5px;color:var(--muted);text-align:center}#start-leaderboard h2{font-size:1.05rem;margin:0 0 2px}#start-leaderboard>p{color:var(--muted);font-size:.78rem;margin:0 0 6px}#start-ranking-list,#ranking-search-results,#ranking-list{margin-top:0;padding:0;list-style:none;font-size:.88rem}#start-ranking-list li,#ranking-search-results li,#ranking-list li{padding:1px 0}.ranking-player{width:100%;min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 7px;border:0;border-radius:7px;background:transparent;text-align:left}.ranking-player:hover,.ranking-player:focus-visible{background:#ffffff17;outline:none}.ranking-player.is-you{background:#2a62e840;box-shadow:inset 3px 0 #8eb4ff}.ranking-player small{color:var(--muted)}.ranking-position{flex:0 0 2.2em;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}.ranking-player>strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-score{flex:0 0 auto;font-variant-numeric:tabular-nums}.ranking-gap{list-style:none;color:var(--muted);letter-spacing:.3em;text-align:center;padding:2px 0!important}#ranking-search{border-top:1px solid var(--line);margin-top:9px;padding-top:9px}#ranking-search label{margin-bottom:4px}#ranking-search-input{width:100%;border:1px solid var(--line);border-radius:9px;background:#0b1220;padding:9px 11px}#ranking-search-message{min-height:1em;margin:5px 0;color:var(--muted);font-size:.76rem}#ranking-search-results{margin-bottom:2px}#player-detail{position:fixed;inset:0;z-index:35;display:flex;align-items:center;justify-content:center;padding:18px;background:#03080fb3}#player-detail .card{position:relative;width:min(520px,100%);max-height:calc(100vh - 28px);overflow:auto}.detail-close{position:absolute;top:10px;right:10px;width:38px;height:38px;border:0;border-radius:50%;background:#18263a;font-size:1.45rem}.detail-kicker{margin:0 42px 2px 0;color:#8eb4ff;font-size:.78rem;font-weight:700;text-transform:uppercase}.detail-total{display:flex;align-items:baseline;gap:7px;margin:8px 0 12px}.detail-total strong{color:var(--amber);font-size:2rem}.detail-total span{color:var(--muted)}#player-detail-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin-bottom:15px}#player-detail-summary div{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:.84rem}#player-detail-summary strong{color:#fff}#player-detail h2{margin:0 0 6px;font-size:1rem}#player-detail-matches{margin:0;padding-left:28px}#player-detail-matches li{padding:6px 2px;border-bottom:1px solid rgba(255,255,255,.08)}#player-detail-matches li:last-child{border-bottom:0}.detail-match-main{display:flex;justify-content:space-between;gap:12px}.detail-match-meta{color:var(--muted);font-size:.76rem;margin-top:2px}.detail-match-club{display:inline-block;margin-top:4px;padding:2px 7px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.7rem;font-weight:700}.detail-match-club.is-sant-ramon{border-color:#ffd95866;color:#ffd958}.detail-match-club.is-vilafranca{border-color:#8eb4ff66;color:#8eb4ff}.help-copy{font-size:.92rem;line-height:1.45;color:#d5e0ee}.help-copy p{margin:0 0 8px}body.coarse .keys{display:none}body:not(.coarse) .touch-help{display:none}#hud{position:fixed;inset:0;z-index:5;pointer-events:none}#scoreboard,#drill-board{pointer-events:none;position:absolute;top:calc(10px + var(--safe-t));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-variant-numeric:tabular-nums;font-weight:700}.name{font-weight:600;max-width:22vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#home-name{color:#8eb4ff}#away-name{color:#ff8a8a}.score{font-size:1.25rem;min-width:1ch;text-align:center}#time{min-width:3.2ch;text-align:center}#half{color:var(--muted);font-size:.8rem}#minimap{position:absolute;top:auto;right:auto;left:50%;bottom:calc(14px + var(--safe-b));transform:translate(-50%);width:64px;height:128px;border-radius:8px;border:1px solid var(--line);background:#0c1c30}#banner{position:absolute;top:22%;left:50%;transform:translate(-50%);font-size:clamp(1.6rem,4vw,2.6rem);font-weight:800;letter-spacing:.04em;text-shadow:0 2px 0 #0b1220,0 8px 24px rgba(0,0,0,.45)}#meters{position:absolute;left:calc(12px + var(--safe-l));bottom:calc(12px + var(--safe-b));width:140px;display:flex;flex-direction:column;gap:6px}#stamina,#power{height:8px;border-radius:99px;background:#00000073;overflow:hidden;position:relative}#stamina:after,#power:after{content:"";position:absolute;inset:0 auto 0 0;width:var(--fill, 100%);background:#7dffa0;z-index:1}#power:after{background:var(--amber)}#power-band{position:absolute;left:var(--band-start, 68%);width:var(--band-size, 20%);top:0;bottom:0;background:#7dffa08c;box-shadow:inset 0 0 0 1px #7dffa0e6;z-index:2;pointer-events:none}#hud-buttons{position:absolute;top:calc(10px + var(--safe-t));left:calc(10px + var(--safe-l));display:flex;gap:8px;pointer-events:auto}#hud-buttons button{min-width:48px;min-height:40px;border-radius:10px;border:1px solid var(--line);background:var(--card)}#help{pointer-events:auto;position:absolute;left:calc(12px + var(--safe-l));bottom:calc(36px + var(--safe-b));width:min(360px,calc(100vw - 24px))}#touch{position:fixed;inset:0;z-index:8;pointer-events:none}#stick{pointer-events:auto;position:absolute;left:calc(18px + var(--safe-l));bottom:calc(18px + var(--safe-b));width:128px;height:128px;border-radius:50%;background:#080e1873;border:2px solid rgba(255,255,255,.28)}#knob{position:absolute;left:50%;top:50%;width:56px;height:56px;margin:0;border-radius:50%;background:#ffffffe0;transform:translate(-50%,-50%)}#actions{pointer-events:none;position:absolute;right:calc(14px + var(--safe-r));bottom:calc(16px + var(--safe-b));display:grid;grid-template-columns:76px 88px;grid-template-rows:68px 88px;grid-template-areas:"sprint sprint" "team primary";align-items:end;justify-items:center;gap:6px 10px}#actions button{pointer-events:auto;width:76px;height:76px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:#0a1220b8;font-weight:700;font-size:.78rem}#actions button strong{font-size:1.65rem;line-height:1}#actions button small{font-size:.68rem;color:#ffffffd1}#actions button[data-act=primary]{grid-area:primary;width:88px;height:88px;background:#d22525e0}#actions button[data-act=team]{grid-area:team;background:#2a62e8e6}#actions button[data-act=sprint]{grid-area:sprint;width:68px;height:68px}#actions button[data-act=sprint].is-active{background:#f0ae23f2;border-color:#ffe49a;box-shadow:0 0 0 3px #ffcc4d38}#actions button:active{transform:scale(.96)}.check{display:flex;align-items:center;gap:8px;margin:8px 0 14px;color:var(--ink)}#sens{accent-color:var(--amber)}body.coarse #meters{width:92px;left:calc(22px + var(--safe-l));bottom:calc(158px + var(--safe-b))}@media(max-width:700px){#minimap{width:56px;height:112px}#actions{grid-template-columns:68px 80px;grid-template-rows:60px 80px}#actions button{width:68px;height:68px;font-size:.82rem}#actions button[data-act=primary]{width:80px;height:80px}#actions button[data-act=sprint]{width:60px;height:60px}}@media(max-height:430px)and (orientation:landscape){#stick{width:112px;height:112px;left:calc(12px + var(--safe-l));bottom:calc(10px + var(--safe-b))}#actions{right:calc(10px + var(--safe-r));bottom:calc(10px + var(--safe-b));grid-template-columns:68px 80px;grid-template-rows:60px 80px;gap:4px 8px}#actions button{width:68px;height:68px;font-size:.9rem}#actions button[data-act=primary]{width:80px;height:80px}#actions button[data-act=sprint]{width:60px;height:60px}body.coarse #meters{bottom:calc(132px + var(--safe-b))}#minimap{width:44px;height:88px;bottom:calc(6px + var(--safe-b))}}
