:root{color:#17342d;font-synthesis:none;text-rendering:optimizelegibility;--ink:#17342d;--ink-soft:#5d6e68;--forest:#123b31;--forest-light:#1f6b59;--mint:#d8e8df;--paper:#fff;--canvas:#f3f4ed;--line:#dfe4dc;--coral:#e86f51;--coral-dark:#c9543a;--sun:#f4c95d;--danger:#a43e32;--shadow:0 16px 45px #1b322b14;background:#f3f4ed;font-family:Aptos,Segoe UI Variable,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(#17342d06 1px, transparent 1px), linear-gradient(90deg, #17342d06 1px, transparent 1px), var(--canvas);background-size:24px 24px;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #e86f514d}h1,h2,h3,h4,p{margin-top:0}.app-shell{grid-template-columns:252px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#f9fbf7;background:var(--forest);flex-direction:column;height:100vh;padding:30px 22px 24px;display:flex;position:sticky;top:0;overflow:hidden}.sidebar:after{content:"";pointer-events:none;border:44px solid #f4c95d1a;border-radius:50%;width:240px;height:240px;position:absolute;bottom:-78px;right:-88px}.brand{z-index:1;border-bottom:1px solid #ffffff1f;align-items:center;gap:13px;padding:2px 7px 31px;display:flex;position:relative}.brand-mark{width:43px;height:43px;color:var(--forest);background:var(--sun);border-radius:13px 13px 13px 4px;flex:none;place-items:center;font-size:21px;font-weight:800;display:grid}.brand h1{letter-spacing:-.02em;margin:0;font-size:20px;line-height:1.1}.brand p{color:#fff9;letter-spacing:.02em;margin:5px 0 0;font-size:12px}.main-nav{z-index:1;gap:7px;margin-top:28px;display:grid;position:relative}.nav-item{color:#ffffffad;text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;align-items:center;gap:13px;width:100%;min-height:51px;padding:0 14px;transition:all .16s;display:flex}.nav-item:hover{color:#fff;background:#ffffff12}.nav-item.active{color:#fff;background:#ffffff1c;border-color:#ffffff14}.nav-glyph{width:27px;height:27px;color:var(--sun);border:1px solid #f4c95d57;border-radius:7px;place-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;display:grid}.sidebar-note{z-index:1;color:#ffffff9e;align-items:center;gap:9px;margin-top:auto;padding:14px 10px;font-size:12px;display:flex;position:relative}.status-dot{background:#7fd6a8;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #7fd6a81f}.main-content{min-width:0;padding:0 clamp(24px,4.5vw,72px) 72px}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:74px;display:flex}.topbar-kicker{color:var(--ink-soft);letter-spacing:.12em;text-transform:uppercase;font-size:12px;font-weight:700}.topbar-meta{color:var(--ink-soft);align-items:center;gap:11px;font-size:13px;display:flex}.meta-divider{background:var(--coral);border-radius:50%;width:4px;height:4px}.planner-panel,.workspace-section,.schedule-output{max-width:1260px;margin:0 auto}.planner-panel,.workspace-section{padding-top:clamp(42px,6vw,78px)}.planner-heading,.section-heading-row,.schedule-title-row,.fairness-heading{justify-content:space-between;align-items:flex-end;gap:30px;display:flex}.eyebrow{color:var(--coral-dark);letter-spacing:.16em;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:800}.planner-heading h2,.section-heading-row h2,.schedule-title-row h2{color:var(--ink);letter-spacing:-.045em;margin-bottom:10px;font-size:clamp(32px,4vw,48px);font-weight:650;line-height:1.02}.section-copy{max-width:670px;color:var(--ink-soft);margin-bottom:0;font-size:16px;line-height:1.6}.selection-badge,.count-badge{color:var(--forest-light);background:var(--mint);border-radius:999px;flex:none;padding:9px 13px;font-size:13px;font-weight:700}.selection-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-top:34px;display:grid}.selection-card{border:1px solid var(--line);cursor:pointer;background:#ffffffb8;border-radius:15px;align-items:center;gap:11px;min-height:76px;padding:13px 14px;transition:all .15s;display:flex;position:relative}.selection-card:hover{border-color:#bfcac3;transform:translateY(-1px);box-shadow:0 7px 20px #1b322b0f}.selection-card.selected{background:var(--paper);border-color:#1f6b5980;box-shadow:0 0 0 1px #1f6b591a}.selection-card input{opacity:0;width:1px;height:1px;position:absolute}.avatar,.mini-avatar{color:var(--forest);letter-spacing:.03em;background:#e7eae0;border-radius:11px;flex:none;place-items:center;font-size:11px;font-weight:800;display:grid}.avatar{width:43px;height:43px}.selection-card.selected .avatar{background:var(--mint)}.selection-name{gap:4px;min-width:0;display:grid}.selection-name strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.selection-name small{color:var(--ink-soft);font-size:12px}.selection-check{color:#0000;border:1px solid #cbd2cc;border-radius:7px;place-items:center;width:22px;height:22px;margin-left:auto;font-size:12px;display:grid}.selection-card.keyboard-focused .selection-check{outline-offset:2px;outline:3px solid #e86f5173}.selected .selection-check{color:#fff;background:var(--forest-light);border-color:var(--forest-light)}.planner-actions{background:var(--forest);box-shadow:var(--shadow);border-radius:16px;justify-content:space-between;align-items:center;gap:22px;margin-top:19px;padding:18px 20px;display:flex}.planner-actions>div{gap:3px;display:grid}.planner-actions strong{color:#fff;font-size:14px}.planner-actions span{color:#fff9;font-size:12px}.button{border:1px solid #0000;border-radius:11px;min-height:45px;padding:0 19px;font-size:13px;font-weight:750;transition:all .15s}.button.primary{color:#fff;background:var(--coral);box-shadow:0 6px 16px #c9543a38}.button.primary:hover:not(:disabled){background:var(--coral-dark);transform:translateY(-1px)}.button.primary:disabled{color:#ffffff8c;box-shadow:none;background:#77837e}.button.secondary{color:var(--ink);background:var(--paper);border-color:var(--line)}.button.secondary:hover{border-color:#b9c4bd;transform:translateY(-1px)}.create-button{min-width:190px}.persistence-notice{color:#674417;background:#fff5d7;border:1px solid #f0d98e;border-radius:11px;max-width:1260px;margin:18px auto 0;padding:12px 15px;font-size:13px}.form-error{color:var(--danger);margin:12px 0 0;font-size:13px}.large-empty{color:var(--ink-soft);text-align:center;background:#ffffff94;border:1px dashed #c7d0c9;border-radius:19px;place-items:center;margin-top:34px;padding:58px 24px;display:grid}.empty-index{color:var(--coral);margin-bottom:18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:800}.large-empty h3{color:var(--ink);margin-bottom:8px;font-size:22px}.large-empty p{max-width:500px;margin-bottom:0;line-height:1.6}.empty-actions{gap:9px;margin-top:23px;display:flex}.schedule-output{border-top:1px solid var(--line);margin-top:76px;padding-top:58px}.print-button{min-width:100px}.warning-panel{color:#674417;background:#fff5d7;border:1px solid #f0d98e;border-radius:14px;margin-top:25px;padding:17px 20px;font-size:13px}.warning-panel ul{margin:8px 0 0;padding-left:18px}.rounds-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:30px;display:grid}.round-column{border:1px solid var(--line);background:#ffffffa3;border-radius:19px;padding:22px}.round-heading{justify-content:space-between;align-items:flex-end;gap:18px;padding:0 2px 17px;display:flex}.round-heading h3{color:var(--ink);letter-spacing:-.025em;margin:4px 0 0;font-size:24px}.round-time,.court-count{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.games-list{gap:11px;display:grid}.game-card{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:15px;box-shadow:0 6px 18px #1b322b0a}.court-heading{border-bottom:1px solid #edf0eb;align-items:center;gap:9px;margin-bottom:13px;padding-bottom:11px;display:flex}.court-number{color:var(--coral-dark);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;font-weight:800}.court-heading h4{color:var(--ink);margin:0;font-size:14px}.team-block{gap:6px;display:grid}.team-label{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;font-size:9px;font-weight:800;display:flex}.team-player{min-height:35px;color:var(--ink);align-items:center;gap:8px;font-size:13px;font-weight:650;display:flex}.mini-avatar{border-radius:9px;width:30px;height:30px;font-size:9px}.level-chip{color:var(--forest-light);background:var(--mint);border-radius:6px;margin-left:auto;padding:3px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}.versus{color:#87938e;text-align:center;text-transform:uppercase;margin:7px 0;font-size:9px;font-weight:700;position:relative}.versus:before,.versus:after{content:"";background:#edf0eb;width:39%;height:1px;position:absolute;top:50%}.versus:before{left:0}.versus:after{right:0}.resting-row{color:var(--ink-soft);background:#ecefe8;border-radius:11px;gap:11px;margin-top:12px;padding:11px 13px;font-size:11px;display:flex}.resting-row span{color:var(--coral-dark);text-transform:uppercase;font-weight:800}.resting-row strong{color:var(--ink-soft);font-weight:600}.fairness-panel{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:19px;margin-top:20px;padding:26px}.fairness-heading{align-items:center}.fairness-heading h3{letter-spacing:-.02em;margin:0;font-size:22px}.fairness-heading>span{color:var(--ink-soft);font-size:11px}.minutes-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 30px;margin-top:22px;display:grid}.minute-row>div{color:var(--ink);justify-content:space-between;gap:12px;font-size:11px;display:flex}.minute-row>div span{color:var(--ink-soft)}.minute-track{background:#e7ebe6;border-radius:999px;height:5px;margin-top:7px;display:block;overflow:hidden}.minute-track>span{background:var(--forest-light);border-radius:inherit;max-width:100%;height:100%;display:block}.add-player-form{background:var(--paper);border:1px solid var(--line);border-radius:16px;align-items:flex-end;gap:12px;margin-top:31px;padding:18px;display:flex;box-shadow:0 9px 24px #1b322b0a}.field{gap:7px;display:grid}.field.grow{flex:1}.field.compact{width:110px}.field label{color:var(--ink-soft);font-size:11px;font-weight:750}.field input,.field select{width:100%;min-height:44px;color:var(--ink);background:#fbfcfa;border:1px solid #d7ddd7;border-radius:10px;padding:0 12px}.add-button{min-width:158px}.player-table-wrap{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-top:18px;overflow-x:auto;box-shadow:0 9px 24px #1b322b0a}.player-table{border-collapse:collapse;text-align:left;width:100%}.player-table th{color:var(--ink-soft);border-bottom:1px solid var(--line);letter-spacing:.09em;text-transform:uppercase;background:#f7f8f4;padding:14px 17px;font-size:10px}.player-table td{color:var(--ink-soft);border-bottom:1px solid #edf0eb;padding:13px 17px;font-size:13px}.player-table tr:last-child td{border-bottom:0}.player-name-cell{align-items:center;gap:10px;min-width:160px;display:flex}.player-name-cell .avatar{border-radius:10px;width:35px;height:35px;font-size:9px}.player-name-cell strong{color:var(--ink)}.level-pips{gap:3px;display:flex}.level-pip{background:#e1e5df;border-radius:999px;width:14px;height:5px}.level-pip.filled{background:var(--forest-light)}.rule-count{color:var(--ink-soft);white-space:nowrap;background:#edf0eb;border-radius:7px;padding:5px 8px;font-size:10px}.row-actions{justify-content:flex-end;gap:5px;display:flex}.icon-button,.text-button,.close-button{color:var(--forest-light);background:0 0;border:0}.icon-button{border-radius:8px;min-height:35px;padding:0 8px;font-size:11px;font-weight:700}.icon-button:hover{background:#edf3ef}.icon-button.danger,.text-button.danger{color:var(--danger)}.compact-empty{color:var(--ink-soft);text-align:center;background:#fff9;border:1px dashed #c7d0c9;border-radius:15px;margin-top:18px;padding:28px}.modal-backdrop{z-index:20;background:#0a1b17a6;place-items:center;padding:24px;display:grid;position:fixed;inset:0;overflow-y:auto}.player-editor{background:var(--paper);border-radius:20px;width:min(760px,100%);max-height:calc(100vh - 48px);padding:27px;overflow-y:auto;box-shadow:0 30px 80px #081e1840}.modal-heading{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.modal-heading h3{letter-spacing:-.03em;margin:0;font-size:26px}.close-button{width:40px;height:40px;color:var(--ink-soft);border-radius:10px;font-size:26px}.close-button:hover{background:#eef1ec}.editor-grid{grid-template-columns:2fr 1fr 1fr 1fr;gap:11px;margin-top:24px;display:grid}.preference-section{margin-top:26px}.preference-section h4{margin-bottom:11px;font-size:13px}.preference-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.check-card{min-height:42px;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;background:#f7f8f4;border-radius:9px;align-items:center;gap:8px;padding:0 11px;font-size:12px;display:flex}.check-card:has(input:checked){color:var(--forest);background:var(--mint);border-color:#a9c7b8}.check-card input{accent-color:var(--forest-light)}.modal-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;margin-top:28px;padding-top:18px;display:flex}.history-list{background:var(--paper);border:1px solid var(--line);border-radius:17px;margin-top:32px;overflow:hidden;box-shadow:0 9px 24px #1b322b0a}.history-row{width:100%;min-height:79px;color:var(--ink);text-align:left;background:0 0;border:0;border-bottom:1px solid #edf0eb;grid-template-columns:42px minmax(0,1fr) auto 28px;align-items:center;gap:15px;padding:15px 18px;transition:all .15s;display:grid}.history-row:last-child{border-bottom:0}.history-row:hover{background:#f8faf7}.history-index{color:var(--coral-dark);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:800}.history-main{gap:5px;display:grid}.history-main strong{font-size:14px}.history-main span{color:var(--ink-soft);font-size:11px}.history-status{color:var(--forest-light);background:var(--mint);border-radius:8px;padding:6px 9px;font-size:10px;font-weight:750}.history-status.warning{color:#76521d;background:#fff1c4}.history-arrow{color:var(--ink-soft);font-size:18px}.history-footer{color:var(--ink-soft);justify-content:space-between;gap:20px;padding:13px 3px;font-size:11px;display:flex}.history-footer p{margin:0}.text-button{padding:0;font-size:11px;font-weight:700}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1080px){.selection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.editor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=820px){.app-shell{display:block}.sidebar{width:100%;height:auto;padding:17px 18px 13px;position:static}.sidebar:after,.sidebar-note,.brand p{display:none}.brand{padding:0 0 14px}.brand-mark{width:36px;height:36px}.main-nav{grid-template-columns:repeat(3,1fr);gap:6px;margin:0;display:grid}.nav-item{justify-content:center;min-height:44px;padding:0 8px}.nav-glyph{display:none}.main-content{padding:0 18px 52px}.topbar{min-height:59px}.topbar-meta{display:none}.planner-panel,.workspace-section{padding-top:37px}.planner-heading,.section-heading-row,.schedule-title-row{flex-direction:column;align-items:flex-start;gap:15px}.selection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rounds-grid,.minutes-grid{grid-template-columns:1fr}.add-player-form{flex-wrap:wrap;align-items:stretch}.field.grow{min-width:60%}.add-button{width:100%}}@media (width<=560px){.topbar-kicker{font-size:10px}.planner-heading h2,.section-heading-row h2,.schedule-title-row h2{font-size:34px}.selection-grid{grid-template-columns:1fr}.planner-actions{flex-direction:column;align-items:stretch}.create-button{width:100%}.round-column,.fairness-panel{padding:16px}.empty-actions,.modal-actions{flex-direction:column;width:100%}.empty-actions .button,.modal-actions .button{width:100%}.editor-grid,.preference-grid{grid-template-columns:1fr}.player-editor{padding:20px}.history-row{grid-template-columns:30px minmax(0,1fr) 22px}.history-status{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}@media print{body{background:#fff}.sidebar,.topbar,.planner-panel,.print-button,.level-chip,.team-level{display:none!important}.app-shell{display:block}.main-content{padding:0}.schedule-output{border:0;margin:0;padding:0}.game-card,.round-column,.fairness-panel{break-inside:avoid;box-shadow:none}}.special-mode-banner{color:#fff;background:var(--forest);box-shadow:var(--shadow);border-radius:14px;justify-content:space-between;align-items:center;gap:18px;margin-top:25px;padding:15px 18px;display:flex}.special-mode-banner strong{color:var(--sun);font-size:13px}.special-mode-banner span{color:#ffffffb8;text-align:right;font-size:12px}.group-allocation{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:13px;display:grid}.group-card{border:1px solid var(--line);background:#f7f8f4;border-radius:11px;padding:11px 12px}.group-card.strong{background:#e6f0eb;border-color:#bdd4c8}.group-card>div{justify-content:space-between;gap:10px;display:flex}.group-card strong,.group-card span{font-size:10px}.group-card span{color:var(--ink-soft)}.group-card p{color:var(--ink-soft);margin:7px 0 0;font-size:10px;line-height:1.45}.game-window{color:var(--forest-light);margin-left:auto;font-size:10px;font-weight:800}.game-rest{color:var(--ink-soft);background:#fff3dd;border-radius:8px;justify-content:space-between;gap:10px;margin-top:11px;padding:8px 10px;font-size:10px;display:flex}.game-rest span{color:var(--coral-dark);text-transform:uppercase;font-weight:800}.outcome-game-card{background:#fbf7ed;border-style:dashed}.outcome-team{gap:5px;display:grid}.outcome-team span{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:800}.outcome-team strong{color:var(--ink);font-size:13px}.team-overview{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:19px;margin-top:20px;padding:26px}.team-overview-heading,.team-round-heading,.billing-month-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.team-overview-heading h3,.billing-month-heading h3{margin:0;font-size:22px}.team-overview-heading>span,.team-round-heading span{color:var(--ink-soft);font-size:11px}.team-rounds-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:22px;display:grid}.team-round{min-width:0}.team-round-heading{margin-bottom:10px}.team-cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.team-summary-card{border:1px solid var(--line);background:#f7f8f4;border-radius:11px;padding:11px}.team-summary-card>div{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.team-summary-card span{color:var(--forest-light);letter-spacing:.08em;text-transform:uppercase;font-size:8px;font-weight:800}.team-summary-card h4{color:var(--ink);margin:0;font-size:12px}.team-summary-card ul{gap:3px;margin:8px 0 0;padding:0;list-style:none;display:grid}.team-summary-card li{color:var(--ink-soft);font-size:11px}.billing-form{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:17px;margin-top:32px;padding:20px}.billing-form-fields{grid-template-columns:minmax(160px,1fr) minmax(140px,.7fr) auto;align-items:end;gap:12px;display:grid}.billing-form-fields input,.month-field input{min-height:44px;color:var(--ink);background:#fbfcfa;border:1px solid #d7ddd7;border-radius:10px;padding:0 12px}.billing-participants{border:0;border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:20px 0 0;padding:16px 0 0;display:grid}.billing-participants legend{color:var(--ink-soft);padding:0 8px 0 0;font-size:11px;font-weight:750}.billing-check{min-height:39px;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;background:#f7f8f4;border-radius:9px;align-items:center;gap:8px;padding:0 10px;font-size:11px;display:flex}.billing-check:has(input:checked){color:var(--forest);background:var(--mint);border-color:#a9c7b8}.billing-check input{accent-color:var(--forest-light)}.billing-month-heading{margin-top:48px}.month-field{width:180px}.billing-days{margin-top:8px}.billing-day-list{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:17px;margin:18px 0 0;padding:0;list-style:none;overflow:hidden}.billing-day+.billing-day{border-top:1px solid #edf0eb}.billing-day-toggle{width:100%;min-height:48px;color:var(--ink);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;grid-template-columns:16px minmax(110px,1fr) auto auto minmax(100px,auto);align-items:center;gap:16px;padding:0 16px;font-size:12px;display:grid}.billing-day-toggle:hover,.billing-day.expanded .billing-day-toggle{background:#f7f8f4}.billing-day-toggle:focus-visible{outline:2px solid var(--forest-light);outline-offset:-2px}.billing-day-chevron{color:var(--forest-light);font-size:16px;font-weight:800;line-height:1;transition:transform .15s}.billing-day.expanded .billing-day-chevron{transform:rotate(90deg)}.billing-day-date{font-weight:750}.billing-day-meta{color:var(--ink-soft);white-space:nowrap;font-size:11px}.billing-day-value{color:var(--forest-light);text-align:right;white-space:nowrap;font-size:12px}.billing-day-panel{background:#f7f8f4;border-top:1px solid #edf0eb;grid-template-columns:130px minmax(0,1fr) auto;align-items:end;gap:13px;padding:14px 16px 16px 48px;display:grid}.billing-day-panel input[type=number]{min-height:40px;color:var(--ink);background:#fbfcfa;border:1px solid #d7ddd7;border-radius:10px;padding:0 12px}.billing-day-panel .billing-check{background:var(--paper)}.billing-day-panel .text-button{min-height:40px}.billing-statement-table{min-width:480px}.billing-entry-players{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.billing-table-wrap{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:17px;margin-top:18px;overflow-x:auto}.billing-table{border-collapse:collapse;text-align:right;width:100%;min-width:720px}.billing-table th,.billing-table td{white-space:nowrap;border-bottom:1px solid #edf0eb;padding:12px 14px;font-size:11px}.billing-table th:first-child,.billing-table tbody th{z-index:1;color:var(--ink);background:var(--paper);text-align:left;position:sticky;left:0}.billing-table thead th,.billing-table tfoot th,.billing-table tfoot td{color:var(--ink-soft);background:#f7f8f4;font-weight:750}.billing-table tr:last-child th,.billing-table tr:last-child td{border-bottom:0}.billing-months-empty{color:var(--ink-soft);margin-top:18px;font-size:12px}.billing-months-table{min-width:640px}.billing-month-row.selected th,.billing-month-row.selected td{background:#4c82581a}.billing-player-row.paid th,.billing-player-row.paid td{color:var(--ink-soft)}.billing-paid-check{white-space:nowrap;justify-content:flex-end}.billing-table .text-button{padding:0;font-size:11px}.billing-empty{margin-top:18px;padding-block:40px}@media (width<=1080px){.billing-participants,.billing-entry-players{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=820px){.main-nav{grid-template-columns:repeat(4,1fr)}.team-rounds-grid,.billing-form-fields,.billing-day-panel{grid-template-columns:1fr}.billing-day-panel{padding-left:16px}.billing-participants,.billing-entry-players{grid-template-columns:repeat(2,minmax(0,1fr))}.billing-day-panel .text-button{justify-self:start}}@media (width<=560px){.special-mode-banner,.team-overview-heading,.billing-month-heading{flex-direction:column;align-items:flex-start}.special-mode-banner span{text-align:left}.group-allocation,.team-cards-grid,.billing-participants,.billing-entry-players{grid-template-columns:1fr}.team-overview{padding:16px}.month-field{width:100%}.billing-day-toggle{grid-template-columns:16px minmax(0,1fr) auto;row-gap:2px;padding:10px 14px}.billing-day-toggle .billing-day-meta{grid-column:2}.billing-day-value{grid-area:1/3}.billing-statement-table{min-width:0}.billing-statement-table th,.billing-statement-table td{white-space:normal;padding:10px 8px}.billing-statement-table .billing-paid-check{justify-content:center;width:40px;min-height:36px;margin-left:auto;padding:0}.billing-statement-table .billing-paid-check span{display:none}}@media print{.team-overview,.special-mode-banner{break-inside:avoid;box-shadow:none}}.match-date-row{flex-wrap:wrap;align-items:flex-end;gap:18px;margin-top:20px;display:flex}.match-date-row .field{min-width:200px}.match-date-note{background:var(--mint,#eaf5ee);border-radius:12px;flex:240px;gap:4px;padding:12px 15px;display:grid}.match-date-note strong{font-size:12px}.match-date-note span{color:var(--ink-soft);font-size:11px}.match-date-note .text-button{justify-self:start;padding:0}.history-entry{border-bottom:1px solid #edf0eb}.history-entry:last-child,.history-entry .history-row{border-bottom:0}.history-status.upcoming{color:#1f5137;background:#d8efe0}.history-badges{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.history-entry-actions{flex-wrap:wrap;align-items:center;gap:18px;margin:0 18px 14px 60px;display:flex}.history-edit,.history-delete{padding:0}.history-delete{margin-left:auto}@media (width<=720px){.history-badges{display:none}.history-entry-actions{margin-left:18px}}.auth-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:var(--paper);border:1px solid var(--line);width:min(420px,100%);box-shadow:var(--shadow);border-radius:18px;gap:16px;padding:32px;display:grid}.auth-card h2{margin:0}.auth-brand{border-bottom:1px solid var(--line);align-items:center;gap:13px;padding-bottom:18px;display:flex}.auth-brand h1{margin:0;font-size:22px}.auth-brand p{color:var(--ink-soft);margin:4px 0 0;font-size:12px}.auth-loading{color:var(--ink-soft)}.sidebar-user{z-index:1;border-top:1px solid #ffffff1f;justify-content:space-between;align-items:center;gap:10px;padding:12px 10px 0;display:flex;position:relative}.sidebar-user-name{gap:2px;min-width:0;display:grid}.sidebar-user-name strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sidebar-user-name small{color:#fff9;font-size:11px}.sidebar-logout{color:#fff;background:#ffffff14;border:1px solid #ffffff29;border-radius:8px;padding:6px 10px;font-size:12px}.admin-panel{background:var(--paper);border:1px solid var(--line);max-width:1260px;box-shadow:var(--shadow);border-radius:18px;margin:24px auto 0;padding:28px}.admin-form{gap:14px;max-width:420px;margin-top:20px;display:grid}.admin-form.inline{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;max-width:none}.admin-form.inline h3{grid-column:1/-1;margin:0}.form-success{color:var(--forest-light);margin:12px 0 0;font-size:13px}.user-list{gap:10px;margin:24px 0 0;padding:0;list-style:none;display:grid}.user-row{border:1px solid var(--line);border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 14px;display:grid}.user-row.inactive{opacity:.6}.user-row-name{gap:2px;display:grid}.user-row-name small{color:var(--ink-soft)}.user-row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px 12px;display:flex}.text-button.danger{color:var(--danger)}.sync-actions{z-index:20;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}@media (width<=820px){.admin-form.inline{grid-template-columns:1fr}.user-row{grid-template-columns:auto minmax(0,1fr)}.user-row-actions{grid-column:1/-1;justify-content:flex-start}.sidebar-user{display:none}}.user-reset{grid-column:1/-1}.schedule-actions{flex-wrap:wrap;gap:10px;display:flex}.matchup{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;display:grid}.matchup .versus{color:var(--coral-dark);letter-spacing:.08em;background:#f6efe6;border-radius:999px;margin:0;padding:6px 9px}.matchup .versus:before,.matchup .versus:after{display:none}.matchup .team-block,.matchup .outcome-team{background:#f7f9f5;border-radius:12px;align-self:stretch;min-width:0;padding:10px 11px}.matchup .team-side-b{text-align:right}.matchup .team-side-b .fixed-pair-badge{justify-self:end}.matchup .team-side-b .team-label,.matchup .team-side-b .team-player{flex-direction:row-reverse}.matchup .team-side-b .level-chip{margin-left:0;margin-right:auto}.matchup .team-label{align-items:center;gap:6px}.matchup .team-player{min-height:30px}.team-player-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fixed-pair-badge{text-transform:uppercase;color:#1f5137;letter-spacing:.04em;background:#d8efe0;border-radius:6px;justify-self:start;padding:2px 6px;font-size:9px;font-weight:800}.game-card .game-rest{margin-top:10px}.fixed-pairs-panel{border:1px dashed var(--line);border-radius:15px;margin-top:20px;padding:14px 16px}.fixed-pairs-panel.active{background:#fff9;border-style:solid}.fixed-pairs-toggle{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.fixed-pairs-toggle input{width:18px;height:18px;accent-color:var(--forest-light,#2f6b4f);margin-top:3px}.fixed-pairs-toggle span{gap:2px;display:grid}.fixed-pairs-toggle label{cursor:pointer;font-size:14px;font-weight:700}.fixed-pairs-toggle small{color:var(--ink-soft);font-size:12px}.fixed-pairs-adopt{margin-top:10px;padding:0}.fixed-pairs-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.fixed-pairs-hour{background:var(--paper,#fff);border:1px solid var(--line);border-radius:12px;gap:10px;padding:12px;display:grid}.fixed-pairs-hour-heading{justify-content:space-between;gap:8px;font-size:13px;display:flex}.fixed-pairs-hour-heading span{color:var(--ink-soft);font-size:11px}.fixed-pairs-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.fixed-pairs-list li{background:#d8efe0;border-radius:9px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-size:13px;font-weight:650;display:flex}.fixed-pair-remove{cursor:pointer;background:#ffffffb3;border:0;border-radius:7px;width:28px;height:28px;font-size:16px}.fixed-pairs-add{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:6px;display:grid}.fixed-pairs-add select{border:1px solid var(--line);min-width:0;min-height:38px;font:inherit;background:#fff;border-radius:9px;padding:0 8px;font-size:13px}.fixed-pairs-and{color:var(--ink-soft);font-weight:700}.fixed-pairs-add-button{grid-column:1/-1}@media (width<=820px){.fixed-pairs-grid{grid-template-columns:1fr}}@media (width<=560px){.matchup{gap:6px}.matchup .team-block,.matchup .outcome-team{padding:8px}.matchup .mini-avatar{display:none}.matchup .versus{padding:4px 6px;font-size:8px}}@media print{.schedule-actions,.swap-players,.fixed-pair-badge{display:none!important}.matchup .team-block,.matchup .outcome-team{background:0 0;border:1px solid #ddd}}.swap-players{border:1px dashed var(--line);border-radius:12px;gap:6px;margin-top:12px;padding:12px;display:grid}.swap-players small{color:var(--ink-soft)}.swap-players-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.swap-players-row select{border:1px solid var(--line);min-width:0;min-height:38px;font:inherit;background:#fff;border-radius:9px;padding:0 8px;font-size:13px}@media (width<=560px){.swap-players-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.swap-players-row .button{grid-column:1/-1}}@page{size:A4;margin:10mm}@media print{html,body,.app-shell,.main-content{background:#fff!important}.schedule-output .eyebrow,.matchup .mini-avatar{display:none!important}.schedule-title-row h2{font-size:22px}.special-mode-banner{margin-top:8px;padding:6px 10px}.schedule-output .round-column{break-inside:auto;background:0 0;border:0;padding:0}.schedule-output .rounds-grid{gap:14px;margin-top:10px}.round-heading{break-after:avoid;padding-bottom:6px}.group-allocation{break-inside:avoid;margin-bottom:6px}.games-list{gap:6px}.schedule-output .game-card{break-inside:avoid;padding:8px 10px}.court-heading{margin-bottom:6px;padding-bottom:5px}.team-player{min-height:0}.resting-row{break-inside:avoid}}.print-schedule{display:none}@media print{.schedule-output>:not(.print-schedule){display:none!important}.schedule-output .print-schedule{color:#000;font-size:10.5pt;display:block}.print-schedule h2{margin:0 0 4mm;font-size:15pt}.print-hour-table{border-collapse:collapse;table-layout:fixed;width:100%;margin-bottom:5mm}.print-hour-table caption{text-align:left;break-after:avoid;padding-bottom:1.5mm;font-size:12pt;font-weight:700}.print-hour-table th,.print-hour-table td{text-align:left;vertical-align:top;border:.3mm solid #999;padding:1.4mm 2mm}.print-hour-table th{background:#eee;font-size:9pt}.print-hour-table th:first-child,.print-hour-table th:nth-child(2){width:18mm}.print-hour-table tr{break-inside:avoid}}.schedule-mode-picker{border:0;margin:18px 0 0;padding:0}.schedule-mode-picker legend{margin-bottom:8px;font-weight:700}.schedule-mode-options{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.schedule-mode-option{border:1px solid var(--line);cursor:pointer;border-radius:12px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.schedule-mode-option.selected{border-color:var(--forest-light);box-shadow:0 0 0 1px var(--forest-light)}.schedule-mode-option input{margin-top:3px}.schedule-mode-option span{gap:2px;display:grid}.schedule-mode-option small{color:var(--ink-soft)}@media print{.schedule-mode-picker{display:none}}
