:root{--color-bg: #f5f3ee;--color-surface: #fffdf8;--color-ink: #17211b;--color-muted: #59665d;--color-primary: #2e7d5b;--color-accent: #f2c94c;--color-border: #d8d2c7;--color-danger: #b3261e;color:var(--color-ink);background:var(--color-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input{min-height:48px;font:inherit}input[type=radio],input[type=checkbox]{width:auto;min-height:auto;padding:0}button{border:0;border-radius:8px;cursor:pointer;font-weight:800;transition:opacity .14s ease,transform .14s ease,background-color .14s ease}button:active{transform:scale(.98)}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent) 72%,white);outline-offset:2px}input{width:100%;border:1px solid var(--color-border);border-radius:8px;background:#fff;color:var(--color-ink);padding:0 12px}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.page-shell{width:min(100%,560px);min-height:100svh;margin:0 auto;padding:max(20px,env(safe-area-inset-top)) 18px calc(104px + env(safe-area-inset-bottom));display:grid;grid-template-rows:auto 1fr;gap:18px}.page-shell.auth-only{grid-template-rows:1fr;align-items:center}.topbar,.section-heading,summary{display:flex;align-items:center;justify-content:space-between;gap:16px}.eyebrow,.section-label{margin:0 0 6px;color:var(--color-primary);font-size:.76rem;font-weight:900;letter-spacing:0}h1,h2,p{margin:0}h1{font-size:clamp(2rem,10vw,3.35rem);line-height:.95}h2{font-size:1.35rem;line-height:1.12}p{color:var(--color-muted);line-height:1.5}.icon-button{width:48px;padding:0;display:grid;place-items:center;background:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-border)}.screen-frame{min-height:420px;display:grid}.screen{align-self:start;display:grid;gap:12px;padding:18px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);animation:screen-in .22s ease both}.screen:has(.session-winners){padding-bottom:96px}.primary-action,.secondary-action,.mini-action,.inline-form button,.row-actions button,.player-form button{width:100%;padding:0 16px}.primary-action,.inline-form button,.row-actions button,.player-form button{background:var(--color-primary);color:#fffdf8}.secondary-action{background:#ecf2ed;color:var(--color-primary)}.mini-action{width:auto;min-width:76px;background:var(--color-primary);color:#fffdf8}.inline-form,.row-actions,.player-form{display:grid;gap:10px}.match-card{display:grid;gap:12px}.tracker-panel{min-height:162px;display:grid;gap:10px;padding:14px;border:1px solid color-mix(in srgb,var(--color-primary) 28%,var(--color-border));border-radius:8px;background:linear-gradient(180deg,#fff,#f4faf6)}.scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:10px}.score-card{min-height:104px;padding:20px 8px;display:grid;place-items:center;gap:2px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #2e7d5b24}.scoreboard small,.serve-meta small{color:var(--color-primary);font-weight:900}.score-reel{width:2.4ch;height:1em;display:block;overflow:hidden;color:var(--color-ink);font-size:3rem;line-height:.9;font-weight:950;font-variant-numeric:tabular-nums}.score-reel>span{display:grid;transform:translateY(calc(var(--score) * -1em));transition:transform .3s cubic-bezier(.2,.8,.2,1)}.score-reel b{height:1em;display:block;font:inherit;line-height:1;text-align:center}.serve-meta{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--color-muted);font-size:.88rem;font-weight:850;text-align:center}.server-choice{width:100%;min-height:116px;display:grid;place-items:center;gap:8px;padding:12px;background:var(--color-primary);color:#fffdf8}.server-choice img{width:58px;height:58px;border-radius:50%;background:#ecf2ed}.server-choice span{font-weight:950}.server-choice small{color:#fffdf8;font-weight:900}.rally-actions,.server-picks,.post-match-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tracker-start{display:grid;gap:10px}.court-diagram{position:relative;height:clamp(132px,22svh,230px);overflow:hidden;border:3px solid var(--color-primary);border-radius:8px;background:linear-gradient(90deg,#2e7d5b24 0,#2e7d5b24 50%,#f2c94c29 50%,#f2c94c29),#fff}.court-line{position:absolute;display:block;background:color-mix(in srgb,var(--color-primary) 58%,white)}.court-net{top:0;bottom:0;left:50%;width:3px;transform:translate(-50%);background:var(--color-primary)}.court-kitchen-left,.court-kitchen-right{top:0;bottom:0;width:2px}.court-kitchen-left{left:37%}.court-kitchen-right{right:37%}.court-center-left,.court-center-right{top:50%;width:37%;height:2px}.court-center-left{left:0}.court-center-right{right:0}.court-label{position:absolute;top:10px;z-index:2;color:var(--color-primary);font-size:.74rem;font-weight:900}.team-a-label{left:12px}.team-b-label{right:12px}.court-player{position:absolute;z-index:3;width:min(38%,138px);min-height:44px;padding:5px 8px;display:flex;align-items:center;gap:7px;border:1px solid var(--color-border);border-radius:8px;background:color-mix(in srgb,var(--color-surface) 94%,white);box-shadow:0 8px 18px #17211b1f;color:var(--color-ink);font-size:.84rem;font-weight:900;transition:box-shadow .16s ease}.court-player.server{border-color:var(--color-accent);box-shadow:0 0 0 3px #f2c94c8c,0 8px 18px #17211b1f}.court-player img{width:28px;height:28px;flex:0 0 auto;border-radius:50%;background:#ecf2ed}.court-player span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.court-player small{color:var(--color-primary);font-size:.68rem;font-weight:950}.team-a{left:7%}.team-b{right:7%}.slot-a1,.slot-b1{top:26px}.slot-a2,.slot-b2{bottom:10px}.team-grid{display:grid;gap:10px}.team-panel{display:grid;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:8px;background:#fff}.player-pill{min-height:48px;display:flex;align-items:center;gap:10px;color:var(--color-ink);font-weight:850}.player-pill img{width:38px;height:38px;border-radius:50%;background:#ecf2ed}.bench-line{font-size:.9rem}.session-winners{display:grid;gap:10px;margin-top:6px}.winner-list{display:grid;gap:8px}.winner-row{min-height:58px;padding:8px 12px;display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;border-left:5px solid var(--color-border);border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #17211b12}.winner-row.rank-1{border-left-color:#d8a118}.winner-row.rank-2{border-left-color:#a9b1b8}.winner-row.rank-3{border-left-color:#b8793f}.rank-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#ecf2ed;color:var(--color-primary);font-weight:950}.winner-dialog{width:min(calc(100% - 28px),430px);margin:auto;padding:0;border:0;border-radius:8px;background:transparent;color:var(--color-ink)}.winner-dialog::backdrop{background:#17211b7a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.winner-party{position:relative;overflow:hidden;padding:28px 18px 18px;display:grid;justify-items:center;gap:16px;border-radius:8px;background:var(--color-surface);box-shadow:0 18px 70px #17211b47;text-align:center;animation:winner-pop .24s ease-out both}.session-summary-card{max-height:min(82svh,620px);overflow:auto;padding:24px 16px 16px;display:grid;gap:16px;border-radius:8px;background:var(--color-surface);box-shadow:0 18px 70px #17211b47;text-align:center;animation:winner-pop .24s ease-out both}.podium{min-height:168px;display:grid;grid-template-columns:1fr 1.1fr 1fr;align-items:end;gap:8px}.podium-place{min-width:0;padding:12px 8px 10px;display:grid;gap:5px;border-radius:8px 8px 0 0;background:#fff;box-shadow:inset 0 0 0 1px #17211b14}.podium-place strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.podium-place span{color:var(--color-primary);font-weight:950}.podium-place small{width:34px;height:34px;margin:0 auto;display:grid;place-items:center;border-radius:50%;background:#ecf2ed}.place-1{min-height:150px;border-top:6px solid #d8a118}.place-2{min-height:124px;border-top:6px solid #a9b1b8}.place-3{min-height:104px;border-top:6px solid #b8793f}.summary-list{display:grid;gap:8px}.summary-list div{min-height:48px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #17211b14;font-weight:850}.winner-party h2{max-width:100%;overflow-wrap:anywhere}.winner-avatars{min-height:118px;display:flex;align-items:end;justify-content:center;gap:18px}.jumping-avatar{display:grid;justify-items:center;gap:8px;color:var(--color-primary);font-weight:900;animation:winner-jump .9s cubic-bezier(.25,.9,.35,1) var(--delay) infinite}.jumping-avatar img{width:76px;height:76px;border-radius:50%;background:#ecf2ed;box-shadow:0 10px 24px #17211b29}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.confetti span{position:absolute;top:-12px;left:calc(50% + var(--x) * 38px);width:9px;height:16px;border-radius:3px;background:var(--color-accent);opacity:0;animation:confetti-drop 1.35s ease-in var(--delay) infinite}.confetti span:nth-child(3n){background:var(--color-primary)}.confetti span:nth-child(3n+1){background:#d95a9b}.session-player-grid{max-height:min(46vh,420px);overflow-y:auto;padding-right:2px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;overscroll-behavior:contain}.session-player-tile{min-height:106px;padding:10px;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:8px;background:#fff}.session-player-tile input{position:absolute;opacity:0}.session-player-tile span{display:grid;justify-items:center;gap:6px;color:var(--color-muted);font-weight:900;text-align:center}.session-player-tile img{width:48px;height:48px;border-radius:50%;background:#ecf2ed}.session-player-tile:has(input:checked){border-color:var(--color-primary);box-shadow:inset 0 0 0 2px var(--color-primary)}.session-player-tile:has(input:checked) span{color:var(--color-ink)}.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.history-switch{min-height:52px;padding:5px;display:grid;grid-template-columns:1fr 1fr;gap:5px;border-radius:8px;background:#ecf2ed}.history-switch button{min-height:42px;background:transparent;color:var(--color-primary)}.history-switch button.active{background:#fff;color:var(--color-ink);box-shadow:0 1px 8px #17211b14}.leaderboard-list{display:grid;gap:8px;padding-bottom:76px}.leaderboard-row{min-height:66px;padding:8px 10px;display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;border-left:5px solid var(--color-border);border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #17211b12}.leaderboard-row.rank-1{border-left-color:#d8a118}.leaderboard-row.rank-2{border-left-color:#a9b1b8}.leaderboard-row.rank-3{border-left-color:#b8793f}.leaderboard-player{min-width:0;display:flex;align-items:center;gap:10px}.leaderboard-player img{width:42px;height:42px;flex:0 0 auto;border-radius:50%;background:#ecf2ed}.leaderboard-player span{min-width:0;display:grid;gap:2px}.leaderboard-player strong,.leaderboard-player small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rating-pill{min-width:58px;min-height:34px;padding:0 10px;display:grid;place-items:center;border-radius:999px;background:var(--color-primary);color:#fffdf8;font-weight:950;font-variant-numeric:tabular-nums}.session-history{display:grid;gap:10px}.history-row{min-height:62px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--color-border);border-radius:8px;background:#fff}.history-row span{display:grid;gap:2px}label{display:grid;gap:6px;color:var(--color-muted);font-size:.84rem;font-weight:800}.group-list,.manage-list,.player-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.group-list li,details,.player-card{border:1px solid var(--color-border);border-radius:8px;background:#fff}.group-list li.current,details[open]{border-color:var(--color-primary)}.group-select{width:100%;min-height:64px;padding:0 14px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:transparent;color:var(--color-ink);text-align:left}small{color:var(--color-primary);font-weight:900}summary{min-height:60px;padding:0 14px;cursor:pointer;font-weight:850}summary::marker{content:""}.player-row{min-height:64px;padding:0 10px 0 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.row-edit{width:auto;min-width:64px;min-height:44px;padding:0 12px;background:#ecf2ed;color:var(--color-primary)}details form{margin:0 12px 12px}.roster-heading{margin-top:8px}.bottom-sheet{width:min(100%,560px);max-height:calc(100dvh - 24px);max-width:none;margin:auto auto 0;padding:22px 18px max(22px,env(safe-area-inset-bottom));border:0;border-radius:8px 8px 0 0;background:var(--color-surface);color:var(--color-ink);box-shadow:0 -18px 60px #17211b38}.bottom-sheet::backdrop{background:#17211b6b}.sheet-slide-up[open]{animation:sheet-slide-up .22s ease-out both}.sheet-slide-up[open]::backdrop{animation:sheet-backdrop-in .18s ease-out both}.sheet-slide-up.closing{animation:sheet-slide-down .18s ease-in both}.sheet-slide-up.closing::backdrop{animation:sheet-backdrop-out .18s ease-in both}.sheet-close{position:absolute;top:12px;right:12px;width:48px;padding:0;display:grid;place-items:center;background:#ecf2ed;color:var(--color-primary)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.segmented label,.toggle-row{min-height:48px;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:8px;background:#fff}.segmented input{position:absolute;opacity:0}.segmented span{color:var(--color-muted);text-transform:capitalize}.segmented label:has(input:checked){border-color:var(--color-primary);box-shadow:inset 0 0 0 2px var(--color-primary)}.player-main img{width:42px;height:42px;border-radius:50%;background:#ecf2ed}.player-main{display:flex;align-items:center;gap:10px}.player-main span{display:grid;gap:2px}.toggle-row{grid-template-columns:auto 1fr;justify-items:start;gap:10px;padding:0 12px}.danger{width:100%;background:transparent;color:var(--color-danger);border:1px solid color-mix(in srgb,var(--color-danger) 35%,var(--color-border))}.form-error{padding:12px;border-radius:8px;background:color-mix(in srgb,var(--color-danger) 10%,white);color:var(--color-danger);font-weight:800}.empty-copy{color:var(--color-muted)}.bottom-nav{position:fixed;left:50%;bottom:max(14px,env(safe-area-inset-bottom));z-index:10;width:min(calc(100% - 28px),520px);min-height:72px;padding:8px;display:grid;grid-template-columns:repeat(5,1fr);gap:6px;transform:translate(-50%);border:1px solid color-mix(in srgb,var(--color-border) 82%,white);border-radius:8px;background:color-mix(in srgb,var(--color-surface) 94%,transparent);box-shadow:0 12px 40px #17211b24;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.bottom-nav button{min-height:56px;display:grid;place-items:center;gap:2px;padding:4px;background:transparent;color:var(--color-muted);font-size:.68rem}.bottom-nav button.active{background:var(--color-primary);color:#fffdf8}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-slide-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-slide-down{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(24px)}}@keyframes sheet-backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes winner-pop{0%{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes winner-jump{0%,to{transform:translateY(0) scale(1)}42%{transform:translateY(-22px) scale(1.03,.98)}58%{transform:translateY(2px) scale(.98,1.03)}}@keyframes confetti-drop{0%{opacity:0;transform:translateY(0) rotate(0)}12%{opacity:1}to{opacity:0;transform:translateY(250px) translate(calc(var(--x) * 7px)) rotate(310deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;scroll-behavior:auto!important;transition-duration:1ms!important}}@media(min-width:520px){.inline-form,.row-actions{grid-template-columns:1fr auto;align-items:end}.team-grid{grid-template-columns:1fr 1fr}}
