@import"https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&display=swap";:root{--navy: #002244;--navy-deep: #00152c;--navy-light: #003366;--navy-surface: #0a2d4d;--green: #69BE28;--green-bright: #7dd636;--green-dim: #4a8a1c;--green-glow: rgba(105, 190, 40, .12);--green-glow-strong: rgba(105, 190, 40, .25);--grey: #A5ACAF;--grey-dim: #6b7275;--grey-dark: #3a4245;--danger: #e05252;--gold: #ffd700;--white: #f0f2f3;--text-primary: #edf0f1;--text-secondary: #8a9499;--text-muted: #4a5a62;--surface: #0d3256;--surface-hover: #134070;--border: #1a4a6e;font-family:Outfit,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:var(--text-primary);background-color:var(--navy-deep);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:var(--green);text-decoration:inherit}a:hover{color:var(--green-bright)}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--navy);cursor:pointer;transition:border-color .25s}button:hover{border-color:var(--green)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.setup-view{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:24px}.setup-container{width:100%;max-width:500px}.setup-view h1{text-align:center;font-size:36px;margin-bottom:32px;font-weight:800;letter-spacing:-.02em}.form-section{margin-bottom:24px}.form-section h2{font-size:18px;margin-bottom:12px;color:var(--grey)}.team-inputs{display:flex;gap:16px}.form-field{flex:1;display:flex;flex-direction:column;gap:6px}.form-field label{font-size:14px;color:var(--text-secondary)}.price-input{display:flex;align-items:center;gap:4px}.price-input .currency{font-size:20px;color:var(--text-secondary)}.price-input input{width:100px}.create-button{width:100%;padding:16px;font-size:18px;margin-top:16px}.payout-selector .mode-toggle{display:flex;gap:8px;margin-bottom:16px}.payout-selector .mode-toggle button{flex:1;padding:10px;background:var(--navy);color:var(--text-secondary);border:1px solid var(--border)}.payout-selector .mode-toggle button.active{background:var(--green);color:var(--navy-deep);border-color:var(--green);font-weight:700}.preset-options{display:flex;flex-direction:column;gap:12px}.preset-option{display:flex;align-items:center;gap:12px;padding:12px;background:var(--navy);border-radius:8px;cursor:pointer;border:1px solid var(--border);transition:border-color .15s}.preset-option:hover{border-color:var(--grey-dim)}.preset-option input[type=radio]{width:20px;height:20px;accent-color:var(--green)}.custom-inputs{display:flex;flex-wrap:wrap;gap:12px}.custom-input{display:flex;align-items:center;gap:4px}.custom-input label{width:40px;color:var(--text-secondary)}.custom-input input{width:60px;text-align:center}.custom-inputs .total{width:100%;text-align:center;padding:8px;border-radius:4px}.custom-inputs .total.valid{color:var(--green)}.custom-inputs .total.invalid{color:var(--danger)}.form-section .optional{font-size:14px;font-weight:400;color:var(--text-muted)}.form-section textarea{width:100%;resize:vertical;min-height:60px}@media(max-width:500px){.setup-view{padding:16px;align-items:flex-start}.setup-view h1{font-size:28px;margin-bottom:24px}.team-inputs{flex-direction:column}}.number-reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000a1ef2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200}.reveal-content{text-align:center}.reveal-content h2{font-size:32px;margin-bottom:32px;font-weight:800;letter-spacing:-.02em}.axis-reveal{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:24px}.axis-label{width:80px;text-align:right;color:var(--text-secondary);font-size:14px}.number{width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;border-radius:8px;transition:all .2s}.number.shuffling{background:var(--navy-light);color:var(--text-muted)}.number.revealed{background:var(--green);color:var(--navy-deep);animation:pop .3s ease;box-shadow:0 0 16px #69be2866}@keyframes pop{0%{transform:scale(1.3)}to{transform:scale(1)}}.grid-view{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:16px}.grid-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;flex-wrap:wrap;gap:16px}.grid-column{display:flex;flex-direction:column}.sidebar-column{display:flex;flex-direction:column;gap:12px}.sidebar-column .enter-scores-button,.sidebar-column .add-player-button{width:100%;padding:14px 20px}.sidebar-column .selected-player-badge{padding:10px 16px;border-radius:8px;font-size:14px;font-weight:600;color:#000;text-align:center}.no-players{color:var(--text-muted);font-size:14px;text-align:left;padding:8px 0;white-space:nowrap}.edit-player-icon{color:var(--text-muted);font-size:14px;padding:4px;margin-left:auto;cursor:pointer}.edit-player-icon:hover{color:var(--green)}.modal-actions{display:flex;justify-content:space-between;align-items:center}.modal-actions-right{display:flex;gap:12px}.game-info h1{font-size:24px;margin-bottom:4px;font-weight:800;letter-spacing:-.02em}.game-info .stats{display:flex;gap:8px;color:var(--text-secondary);font-size:14px}.header-buttons{display:flex;gap:8px}.share-button,.delete-game-button{padding:8px 16px;font-size:14px}.grid-main{display:flex;gap:24px;align-items:flex-start}.grid-container{display:flex;flex-direction:column;gap:2px;position:relative;padding-left:40px}.game-notes{background:var(--surface);border-radius:12px;padding:12px 16px;width:260px;border:1px solid var(--border)}.game-notes-content{color:var(--grey);font-size:14px;line-height:1.5;white-space:pre-wrap;cursor:pointer;position:relative}.game-notes-content:hover .edit-notes-icon{opacity:1}.edit-notes-icon{color:var(--text-muted);font-size:12px;margin-left:8px;opacity:0;transition:opacity .15s}.game-notes-edit{width:100%;resize:vertical;min-height:60px;margin-bottom:8px}.game-notes-actions{display:flex;gap:8px;justify-content:flex-end}.game-notes-actions button{padding:6px 12px;font-size:12px}.add-notes-button{background:transparent;border:1px dashed var(--border);color:var(--text-secondary);padding:8px 12px;border-radius:6px;cursor:pointer;font-size:13px;width:100%}.add-notes-button:hover{border-color:var(--grey-dim);color:var(--grey)}.player-sidebar{background:var(--surface);border-radius:12px;padding:12px;width:260px;border:1px solid var(--border)}.player-sidebar h3{margin:0 0 8px;font-size:11px;color:var(--grey);text-transform:uppercase;letter-spacing:2px;font-weight:700}.player-list{display:flex;flex-direction:column;gap:4px}.player-card{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--navy);border:1px solid transparent;border-radius:6px;cursor:pointer;transition:all .15s ease;text-align:left;width:100%}.player-card:hover{background:var(--navy-light);border-color:var(--border)}.player-card.selected{border-color:var(--green);background:var(--navy-light);box-shadow:0 0 12px var(--green-glow)}.player-card.disabled{opacity:.5;cursor:not-allowed}.player-card.disabled:hover{background:var(--navy)}.player-color{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 4px #0000004d}.player-details{display:flex;align-items:baseline;flex:1;min-width:0}.player-name{font-weight:600;font-size:14px;color:var(--white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-odds{font-weight:400;color:var(--text-secondary)}.player-winnings{font-weight:700;color:var(--green);flex-shrink:0}.axis-header.axis-x,.team-name-row{display:flex;gap:2px}.corner-spacer{width:60px;height:40px}.team-name{font-weight:800;font-size:18px;color:var(--white);display:flex;align-items:center;text-transform:uppercase;letter-spacing:.06em}.team-x-name{width:518px;justify-content:center;height:40px;background:linear-gradient(90deg,var(--green),var(--green-dim));border-radius:8px 8px 0 0;color:var(--navy-deep);font-size:16px}.team-y-name{position:absolute;left:0;top:84px;width:40px;height:518px;writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);justify-content:center;background:linear-gradient(180deg,var(--green),var(--green-dim));border-radius:8px 0 0 8px;color:var(--navy-deep);font-size:16px}.corner-cell{width:60px;height:40px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;color:var(--text-secondary)}.axis-cell{width:50px;height:40px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:var(--green);position:relative}.axis-cell.axis-y{width:60px}.grid-row{display:flex;gap:2px}.square{width:50px;height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:14px;font-weight:700;border-radius:4px;transition:transform .1s,background-color .2s,box-shadow .2s;padding:0;position:relative}.square .initials{line-height:1}.square .best-indicator{position:absolute;top:2px;right:2px;font-size:10px;color:var(--gold);line-height:1}.square.best-square{box-shadow:inset 0 0 0 2px var(--gold)}.square .winning-quarters{font-size:9px;font-weight:600;color:var(--gold);line-height:1;margin-top:2px}.square.empty{background:var(--navy);color:var(--border);border:1px solid var(--border)}.square.claimed{background:var(--surface);color:var(--grey);border:1px solid var(--border)}.square.winner{background:#1a4a1a;border:2px solid var(--green);color:#fff}.square.winner.highlighted{border-color:var(--gold)}.square.selectable:hover{transform:scale(1.05);background:var(--green);color:var(--navy-deep);border-color:var(--green);box-shadow:0 0 12px #69be2866}.square.highlighted{color:#000;font-weight:800}.finalize-section{margin-top:24px;text-align:center}.finalize-button{font-size:18px;padding:16px 32px}.finalize-section p{margin-top:8px;color:var(--text-secondary);font-size:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000a1ed9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--surface);padding:24px;border-radius:12px;min-width:300px;border:1px solid var(--border);box-shadow:0 16px 48px #00000080}.modal h2{margin-bottom:16px}.modal-hint{margin:-8px 0 12px;font-size:.85rem;color:var(--text-secondary)}.modal input{width:100%;margin-bottom:16px}.qr-modal{text-align:center}.qr-code-container{display:flex;justify-content:center;margin:20px 0;padding:20px;background:var(--navy);border-radius:12px;border:1px solid var(--border)}.qr-url{font-size:12px;color:var(--text-secondary);word-break:break-all;margin-bottom:16px}@media print{html,body,#root{background:#fff!important}.grid-view{min-height:auto;padding:0;background:#fff!important;align-items:flex-start}.sidebar-column,.finalize-section,.modal-overlay,.enter-scores-button,.add-player-button,.share-button,.selected-player-badge{display:none!important}.grid-header{margin-bottom:24px}.game-info h1{font-size:28px;color:#000!important;margin-bottom:8px}.game-info .stats{color:#333!important;font-size:16px}.grid-main{justify-content:center}.grid-container{gap:0;padding-left:50px}.team-name{color:#000!important;font-size:20px;font-weight:800}.team-x-name{background:transparent!important;border:none;border-radius:0;height:36px;width:600px}.team-y-name{background:transparent!important;border:none;border-radius:0;width:50px;height:600px;top:72px}.corner-spacer{width:70px;height:36px}.axis-cell{width:60px;height:36px;color:#000!important;font-size:20px;font-weight:800;border:none;background:transparent!important}.axis-cell.axis-y{width:70px}.corner-cell{width:70px;height:36px}.grid-row,.axis-header.axis-x,.team-name-row{gap:0}.square{width:60px;height:60px;border:1px solid #333;border-radius:0;background:#fff!important;color:#000!important;font-size:16px;font-weight:700}.square.claimed{background:#fff!important;color:#000!important}.square.empty{background:#f9f9f9!important;color:#ccc!important}.square.winner{background:#d4edda!important;border:2px solid #28a745!important;color:#000!important}.square .winning-quarters{color:#28a745!important;font-size:10px}.square .best-indicator,.square.best-square{box-shadow:none}.square .best-indicator{display:none}.print-legend{display:block!important;margin-top:16px;page-break-inside:avoid}.print-legend-grid{display:inline;font-size:11px;color:#000;line-height:1.6}.print-legend-item{display:inline}.print-legend-item:not(:last-child):after{content:", "}.print-legend-initials{font-weight:700}}.print-legend{display:none}@media(max-width:700px){.grid-view{padding:12px;align-items:flex-start}.grid-header{flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;width:100%}.game-info{flex:1;min-width:0}.game-info h1{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-info .stats{font-size:12px;flex-wrap:wrap}.header-buttons{flex-shrink:0}.share-button,.delete-game-button,.header-buttons .primary{padding:6px 10px;font-size:11px}.grid-main{flex-direction:column;gap:16px;width:auto}.grid-column{width:369px}.grid-container{padding-left:18px}.team-y-name{width:18px;font-size:10px;height:319px;top:44px;background:var(--green)!important;border-radius:4px 0 0 4px}.team-x-name{width:319px;height:18px;font-size:10px;background:var(--green)!important;border-radius:4px 4px 0 0}.corner-spacer{width:32px;height:18px}.corner-cell{width:32px;height:24px;font-size:10px}.axis-cell{width:31px;height:24px;font-size:12px}.axis-cell.axis-y{width:32px}.axis-header.axis-x,.grid-row,.team-name-row{gap:1px}.square{width:31px;height:31px;font-size:10px;border-radius:2px}.square .winning-quarters{font-size:8px}.square .best-indicator{font-size:9px}.sidebar-column{width:369px;gap:8px;padding:0}.sidebar-column .add-player-button,.sidebar-column .enter-scores-button{padding:12px 16px}.game-notes,.player-sidebar{width:100%;box-sizing:border-box}.player-list{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.player-card{padding:8px}.player-name{font-size:12px}.finalize-section{margin-top:16px}.finalize-button{font-size:14px;padding:12px 24px}.finalize-section p{font-size:12px}.modal{margin:16px;min-width:auto;width:calc(100% - 32px);max-width:400px}}.score-entry-view{min-height:100vh;padding:24px;max-width:600px;margin:0 auto}.score-entry-view header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.pot-info{font-size:18px;color:var(--green);font-weight:700}.previous-scores{margin-bottom:32px}.score-row{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--surface);border-radius:8px;margin-bottom:8px;gap:12px;border:1px solid var(--border)}.edit-button{padding:4px 12px;font-size:12px;background:transparent;border:1px solid var(--grey-dim);color:var(--text-secondary);border-radius:4px;cursor:pointer}.edit-button:hover:not(:disabled){border-color:var(--green);color:var(--green)}.edit-button:disabled{opacity:.5;cursor:not-allowed}.quarter-label{font-weight:600;color:var(--text-secondary);min-width:80px}.score{font-size:16px}.winner{color:var(--green);font-weight:600}.current-quarter{background:var(--surface);padding:24px;border-radius:12px;border:1px solid var(--border)}.current-quarter h2{text-align:center;margin-bottom:24px;font-size:24px;font-weight:800}.score-inputs{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:24px}.team-score{display:flex;flex-direction:column;align-items:center;gap:8px}.team-score label{font-size:18px;font-weight:600}.team-score input{width:100px;height:60px;font-size:32px;text-align:center;-moz-appearance:textfield}.team-score input::-webkit-outer-spin-button,.team-score input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.vs{font-size:24px;color:var(--text-muted);margin-top:24px}.form-actions{display:flex;gap:12px}.submit-button{flex:1;padding:16px;font-size:18px}.cancel-button{padding:16px 24px;font-size:18px}.payout-info{text-align:center;margin-top:16px;color:var(--text-secondary)}.winner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000a1eeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.winner-announcement{text-align:center;animation:popIn .3s ease}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.winner-announcement h2{font-size:28px;margin-bottom:16px}.winner-name{font-size:48px;font-weight:800;color:var(--green);margin-bottom:8px;text-shadow:0 0 30px rgba(105,190,40,.4)}.winner-square{font-size:24px;color:var(--text-secondary);margin-bottom:12px}.winner-payout{font-size:36px;color:var(--green);font-weight:700}.results-view{min-height:100vh;padding:24px;max-width:1200px;margin:0 auto}.results-view header{text-align:center;margin-bottom:32px}.results-view h1{font-size:32px;margin-bottom:8px;font-weight:800;letter-spacing:-.02em}.game-summary{color:var(--text-secondary);font-size:16px}.quarters-summary{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap;max-width:850px;margin-left:auto;margin-right:auto}.quarter-result{flex:1;min-width:150px;background:var(--surface);padding:16px;border-radius:8px;text-align:center;border:1px solid var(--border)}.quarter-label{font-size:14px;color:var(--text-secondary);margin-bottom:4px}.quarter-score{font-size:20px;font-weight:700;margin-bottom:4px}.quarter-winner{font-size:14px;color:var(--green);font-weight:600}.results-grid-section{display:flex;gap:24px;justify-content:center;align-items:flex-start;margin-bottom:32px}.results-grid-container{display:flex;flex-direction:column;gap:2px;position:relative;padding-left:40px}.results-grid-container .team-y-name{position:absolute;left:0;top:84px;width:40px;height:518px;writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);justify-content:center;background:linear-gradient(180deg,var(--green),var(--green-dim));border-radius:8px 0 0 8px;font-weight:800;font-size:16px;color:var(--navy-deep);display:flex;align-items:center;text-transform:uppercase;letter-spacing:.06em}.results-view .team-name-row{display:flex;gap:2px}.results-view .corner-spacer{width:60px;height:40px}.results-view .team-name{font-weight:800;font-size:18px;color:var(--white);display:flex;align-items:center;text-transform:uppercase;letter-spacing:.06em}.results-view .team-x-name{width:518px;justify-content:center;height:40px;background:linear-gradient(90deg,var(--green),var(--green-dim));border-radius:8px 8px 0 0;color:var(--navy-deep);font-size:16px}.results-view .axis-header.axis-x{display:flex;gap:2px}.results-view .corner-cell{width:60px;height:40px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;color:var(--text-secondary)}.results-view .axis-cell{width:50px;height:40px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:var(--green)}.results-view .axis-cell.axis-y{width:60px}.results-view .grid-row{display:flex;gap:2px}.results-player-sidebar{background:var(--surface);border-radius:12px;padding:16px;width:220px;border:1px solid var(--border)}.results-player-sidebar h3{margin:0 0 12px;font-size:11px;color:var(--grey);text-transform:uppercase;letter-spacing:2px;font-weight:700}.results-player-sidebar .player-list{display:flex;flex-direction:column;gap:8px}.results-player-sidebar .player-card{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--navy);border:1px solid transparent;border-radius:8px;cursor:pointer;transition:all .15s ease;text-align:left;width:100%}.results-player-sidebar .player-card:hover{background:var(--navy-light);border-color:var(--border)}.results-player-sidebar .player-card.selected{border-color:var(--green);background:var(--navy-light);box-shadow:0 0 12px var(--green-glow)}.results-player-sidebar .player-color{width:12px;height:12px;border-radius:50%;flex-shrink:0;box-shadow:0 0 4px #0000004d}.results-player-sidebar .player-details{display:flex;flex-direction:column;flex:1;min-width:0}.results-player-sidebar .player-name{font-weight:600;color:var(--white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.results-player-sidebar .player-squares{font-size:12px;color:var(--text-secondary)}.results-table{border-radius:12px;overflow:hidden;margin-bottom:32px;max-width:850px;margin-left:auto;margin-right:auto;border:1px solid var(--border)}.table-header,.table-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;padding:14px 20px;gap:8px}.table-header{background:var(--surface);font-weight:600;color:var(--text-secondary);font-size:14px;border-radius:8px 8px 0 0}.table-row{border-bottom:1px solid var(--border);background:transparent}.table-row:last-child{border-bottom:none}.table-row.winner{border-left:3px solid var(--green)}.table-row.loser{border-left:3px solid transparent}.col-name{text-align:left}.col-squares,.col-buyin,.col-winnings,.col-net{text-align:right}.col-net.positive{color:var(--green);font-weight:600}.col-net.negative{color:var(--danger)}.quarters-won{font-size:12px;color:var(--text-secondary);margin-left:8px}.actions{text-align:center;margin-top:32px;margin-bottom:32px}.actions button{padding:16px 32px;font-size:16px}@media(max-width:700px){.results-view{padding:12px}.results-view h1{font-size:24px}.game-summary{font-size:14px}.quarters-summary{gap:8px}.quarter-result{min-width:80px;padding:10px 8px}.quarter-score{font-size:16px}.quarter-winner{font-size:12px}.results-table{margin-bottom:20px}.table-header,.table-row{padding:10px 12px;gap:4px}.table-header{font-size:12px}.col-name{font-size:13px}.col-squares,.col-buyin,.col-winnings,.col-net{font-size:12px}.quarters-won{font-size:10px;margin-left:4px}.results-grid-section{flex-direction:column;align-items:center;gap:16px;overflow-x:auto;width:100%}.results-grid-container{padding-left:18px;gap:1px}.results-grid-container .team-y-name{width:18px;font-size:10px;height:319px;top:44px;background:var(--green)!important;border-radius:4px 0 0 4px}.results-view .team-x-name{width:319px;height:18px;font-size:10px;background:var(--green)!important;border-radius:4px 4px 0 0}.results-view .corner-spacer{width:32px;height:18px}.results-view .corner-cell{width:32px;height:24px;font-size:10px}.results-view .axis-cell{width:31px;height:24px;font-size:12px}.results-view .axis-cell.axis-y{width:32px;flex-shrink:0}.results-view .axis-header.axis-x,.results-view .grid-row,.results-view .team-name-row{gap:1px}.results-view .square{width:31px;height:31px;font-size:10px;border-radius:2px;flex-shrink:0}.results-view .square .winning-quarters{font-size:8px}.results-view .square .best-indicator{font-size:9px}.results-player-sidebar{width:100%;box-sizing:border-box}.results-player-sidebar .player-list{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.results-player-sidebar .player-card{padding:8px 10px}.results-player-sidebar .player-name{font-size:13px}.results-player-sidebar .player-squares{font-size:11px}}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%;width:100%}html{height:100%}html,body{background:var(--navy-deep)}body{font-family:Outfit,system-ui,-apple-system,sans-serif;color:var(--text-primary)}button{font-family:inherit;cursor:pointer;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:600;transition:transform .1s,opacity .1s,box-shadow .2s}button:active{transform:scale(.98)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:linear-gradient(135deg,#69be28,#5aad1e);color:var(--navy-deep);font-weight:700;letter-spacing:.02em;box-shadow:0 2px 12px #69be284d}button.primary:hover:not(:disabled){box-shadow:0 4px 20px #69be2873}button.secondary{background:var(--navy-light);color:var(--grey);border:1px solid var(--border)}button.secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--grey-dim)}button.danger{background:var(--danger);color:#fff}input,select,textarea{font-family:inherit;font-size:16px;padding:12px;border:2px solid var(--border);border-radius:8px;background:var(--navy);color:var(--text-primary);transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-glow)}h1{font-size:28px;margin-bottom:16px;letter-spacing:-.01em}h2{font-size:22px;margin-bottom:12px}.loading-view{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-view{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:24px}.error-view h1{color:var(--danger)}.error-view a{color:var(--green);text-decoration:none}.error-view a:hover{text-decoration:underline}@media print{html,body,#root{background:#fff!important;color:#000!important}body{color:#000!important}}
