:root{--color-bg: #f5f5f0;--color-surface: #ffffff;--color-primary: #1C4932;--color-primary-light: #2a6b4a;--color-team1: #1a3a6b;--color-team2: #8b1a1a;--color-text: #1a1a1a;--color-text-secondary: #666;--color-border: #ddd;--color-winner: #d4edda;--color-tie: #fff3cd;--radius: 8px;--shadow: 0 2px 8px rgba(0, 0, 0, .08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:48px;text-align:center;max-width:420px;width:100%}.login-card h1{color:var(--color-primary);margin-bottom:8px;font-size:1.6rem}.login-card p{color:var(--color-text-secondary);margin-bottom:24px}.login-card pre{background:#f0f0f0;padding:12px;border-radius:4px;font-size:.85rem;overflow-x:auto;text-align:left;margin-top:12px}.login-form{text-align:left;margin-bottom:16px}.login-form .form-group{margin-bottom:12px}.login-form .btn{margin-top:8px}.login-link{font-size:.9rem;color:var(--color-text-secondary);margin:12px 0}.login-link a{color:var(--color-primary);text-decoration:none;font-weight:600}.login-link a:hover{text-decoration:underline}.login-divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--color-text-secondary);font-size:.85rem}.login-divider:before,.login-divider:after{content:"";flex:1;border-top:1px solid var(--color-border)}.google-btn{display:inline-flex;align-items:center;gap:12px;padding:12px 24px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;font-size:1rem;font-weight:500;transition:box-shadow .2s}.google-btn:hover{box-shadow:0 2px 12px #00000026}.app-header{background:var(--color-primary);color:#fff;padding:12px 24px;display:flex;align-items:center;justify-content:space-between}.app-header h1{font-size:1.2rem}.user-info{display:flex;align-items:center;gap:10px;font-size:.9rem}.avatar{width:32px;height:32px;border-radius:50%}.avatar-placeholder{background:var(--color-primary-light);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}.container{max-width:100%;margin:0 auto;padding:24px}.btn{padding:8px 16px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;font-size:.9rem;transition:background .15s}.btn:hover{background:#f0f0f0}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-light)}.btn-sm{padding:4px 10px;font-size:.8rem}.btn-winner{background:var(--color-winner);border-color:#28a745;font-weight:600}.btn-tie{background:var(--color-tie);border-color:#ffc107;font-weight:600}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}.card.clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}.card.clickable:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.card h3{margin-bottom:4px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.form-group{margin-bottom:12px}.form-group label{display:block;font-size:.85rem;font-weight:600;margin-bottom:4px;color:var(--color-text-secondary)}.form-group input,.form-group select{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-actions{display:flex;gap:8px;margin-top:16px}.player-input{display:flex;align-items:center;gap:8px;margin-bottom:6px}.player-input label{min-width:28px;margin-bottom:0}.player-input input{flex:1}.tabs{display:flex;gap:2px;border-bottom:2px solid var(--color-border);margin-bottom:20px;overflow-x:auto}.tab{padding:10px 16px;border:none;background:none;cursor:pointer;font-size:.9rem;color:var(--color-text-secondary);border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.tournament-header{display:flex;align-items:center;gap:16px;margin-bottom:20px}.score-total{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;margin-bottom:8px}.team-score{flex:1;display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;gap:10px}.team-score .team-name{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.team-score .score{font-size:2.2rem;font-weight:700}.team1 .team-name,.team1 .score{color:var(--color-team1)}.team2 .team-name,.team2 .score{color:var(--color-team2)}.score-divider{font-size:1.5rem;color:var(--color-text-secondary)}.score-win-target{text-align:center;font-size:.75rem;color:var(--color-text-secondary);margin-bottom:6px}.score-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-bottom:16px}.bar-team1{background:var(--color-team1);transition:width .3s}.bar-team2{background:var(--color-team2);transition:width .3s}.scoreboard-rosters{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}.roster-card{background:var(--color-card);border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow)}.roster-card h3{margin:0 0 12px;font-size:1.2rem}.roster-list{margin:0;padding-left:1.4rem;line-height:1.8;font-size:1.2rem}.rounds-grid{display:grid;gap:20px}@media (min-width: 1024px){.rounds-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1600px){.rounds-grid{grid-template-columns:repeat(3,1fr)}}.round-matches-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px}.round-header{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;flex-wrap:wrap}.round-header h4{color:var(--color-primary);margin:0}.round-summary{display:flex;align-items:baseline;gap:4px;font-size:.9rem}.round-pts{font-weight:700;font-size:1rem}.round-pts.team1{color:var(--color-team1)}.round-pts.team2{color:var(--color-team2)}.round-pts-divider{color:var(--color-text-secondary);margin:0 2px}.round-meta{color:var(--color-text-secondary);font-size:.8rem;margin-left:8px}.matches-table{width:100%;border-collapse:collapse;margin-bottom:8px}.matches-table th,.matches-table td{padding:8px 12px;border-bottom:1px solid var(--color-border)}.matches-table th{font-size:.8rem;text-transform:uppercase;color:var(--color-text-secondary);text-align:left}.matches-table th.result-col{text-align:center;width:140px}.match-team-cell{width:35%}.winner-cell{font-weight:700}.match-row-winner-team1{background:#1a3a6b14}.match-row-winner-team1 .match-team-cell:first-child{border-left:3px solid var(--color-team1)}.match-row-winner-team2{background:#8b1a1a14}.match-row-winner-team2 .match-team-cell:last-child{border-right:3px solid var(--color-team2)}.match-row-tie{background:#8564040f}.result-cell{text-align:center;font-size:.85rem;font-weight:600}.result-team1{color:var(--color-team1)}.result-team2{color:var(--color-team2)}.result-tie{color:#856404}.result-pending{color:var(--color-text-secondary)}.result-score{font-size:.8rem;font-weight:400;margin-top:2px;opacity:.85}.btn-fullscreen{float:right;font-size:.8rem;padding:4px 12px}.scoreboard-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--color-bg);overflow:hidden;display:flex;flex-direction:column}.scoreboard-fullscreen .app-header{flex-shrink:0}.scoreboard-fullscreen .scoreboard{flex:1;display:flex;flex-direction:column;padding:clamp(8px,1.2vh,24px) clamp(12px,1.5vw,32px);overflow:hidden}.scoreboard-fullscreen .score-total,.scoreboard-fullscreen .score-bar{flex-shrink:0}.scoreboard-fullscreen .rounds-grid{flex:1;min-height:0;align-content:start;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr}.scoreboard-fullscreen .round-matches-section{overflow:hidden}.scoreboard-fullscreen .round-last{grid-column:3;grid-row:1 / -1;align-self:stretch}.scoreboard-fullscreen .score-total{padding:0}.scoreboard-fullscreen .team-score .score{font-size:clamp(2rem,3.5vw,6.5rem)}.scoreboard-fullscreen .team-score .team-name{font-size:clamp(.9rem,1.4vw,2.6rem)}.scoreboard-fullscreen .score-divider{font-size:clamp(1.4rem,2.5vw,4.55rem)}.scoreboard-fullscreen .round-header h4{font-size:clamp(.9rem,1.1vw,2.08rem)}.scoreboard-fullscreen .round-summary{font-size:clamp(.8rem,1vw,1.82rem)}.scoreboard-fullscreen .matches-table{font-size:clamp(.8rem,1vw,3rem)}.scoreboard-fullscreen .matches-table th,.scoreboard-fullscreen .matches-table td{padding:clamp(3px,.5vh,13px) clamp(4px,.6vw,18px)}.scoreboard-fullscreen .matches-table th{font-size:clamp(.7rem,.85vw,1.56rem)}.scoreboard-fullscreen .result-cell{font-size:clamp(.9rem,1vw,2rem)}.scoreboard-fullscreen .result-score{font-size:clamp(.8rem,1vw,1.8rem)}.fullscreen-exit{position:fixed;bottom:16px;right:16px;z-index:1001;opacity:.6;font-size:.75rem;padding:4px 10px}.fullscreen-exit:hover{opacity:1}.teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.team-card h4{margin-bottom:8px;margin-top:12px}.team-color-input{display:flex;align-items:center;gap:10px}.logo-picker{display:flex;align-items:center;gap:12px}.logo-picker select{flex:1}.logo-preview{height:40px;width:40px;object-fit:contain;border-radius:4px;border:1px solid var(--color-border);background:#fff;padding:2px}.team-logo{height:56px;width:56px;object-fit:contain;flex-shrink:0}.scoreboard-fullscreen .team-logo{height:clamp(40px,5vw,100px);width:clamp(40px,5vw,100px)}.team-color-input input[type=color]{width:40px;height:36px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;background:none}.team-color-input span{font-size:.85rem;color:var(--color-text-secondary);font-family:monospace}.manage-card{max-width:640px}.manage-card h3{margin-bottom:20px}.manage-colors{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.manage-users-table{width:100%;border-collapse:collapse}.manage-users-table th,.manage-users-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--color-border);font-size:.9rem}.manage-users-table th{font-size:.8rem;text-transform:uppercase;color:var(--color-text-secondary)}.manage-users-actions{text-align:right;display:flex;justify-content:flex-end;gap:8px}.player-links-info{color:var(--color-text-secondary);font-size:.9rem;margin-bottom:16px}.link-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}.link-row{display:flex;align-items:center;gap:12px}.link-player-name{font-weight:600;min-width:120px;font-size:.9rem}.link-select{flex:1;padding:6px 8px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.85rem}.badge{display:inline-block;padding:2px 8px;background:#e8f5e9;color:var(--color-primary);border-radius:12px;font-size:.8rem;font-weight:600;margin-left:8px}.match-card{border-left:4px solid var(--color-border)}.match-card.completed{border-left-color:var(--color-primary)}.match-header{font-weight:600;font-size:.85rem;color:var(--color-text-secondary);margin-bottom:8px}.match-players{display:flex;align-items:center;gap:16px;margin-bottom:12px}.match-side{flex:1;display:flex;flex-direction:column;gap:2px}.match-side.winner{font-weight:700}.match-side.winner .player-name{color:var(--color-primary)}.player-name{font-size:.95rem}.vs{font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase}.match-score-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.match-score-row label{font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.score-input{width:140px;padding:4px 8px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.match-actions{display:flex;gap:6px;flex-wrap:wrap}.hole-by-hole-section{margin-top:12px;border-top:1px solid var(--color-border);padding-top:10px}.hole-toggle{margin-bottom:10px}.holes-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}.hole-cell{display:flex;flex-direction:column;align-items:center;gap:3px}.hole-number{font-size:.75rem;font-weight:700;color:var(--color-text-secondary)}.hole-buttons{display:flex;flex-direction:column;gap:2px}.hole-btn{width:36px;height:24px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);cursor:pointer;font-size:.6rem;font-weight:600;text-transform:uppercase;padding:0;transition:background .1s,border-color .1s}.hole-btn:hover{background:#f0f0f0}.hole-btn.hole-t1.active{background:var(--color-team1);color:#fff;border-color:var(--color-team1)}.hole-btn.hole-t2.active{background:var(--color-team2);color:#fff;border-color:var(--color-team2)}.hole-btn.hole-halved.active{background:var(--color-tie);border-color:#ffc107;font-weight:700}.hole-indicator{display:flex;align-items:center;justify-content:center;width:36px;height:24px;border-radius:4px;font-size:.6rem;font-weight:600;text-transform:uppercase;color:var(--color-text-secondary);background:#f0f0f0}.hole-indicator.hole-t1.active{background:var(--color-team1);color:#fff}.hole-indicator.hole-t2.active{background:var(--color-team2);color:#fff}.hole-indicator.hole-halved.active{background:var(--color-tie);color:#856404;font-weight:700}.pairing-card{border-left:4px solid var(--color-primary)}.pairing-card h4{margin-bottom:12px}.pairing-sides{display:flex;align-items:start;gap:16px}.pairing-team{flex:1}.pairing-team label{display:block;font-weight:600;font-size:.85rem;margin-bottom:6px}.pairing-select{display:flex;gap:4px;margin-bottom:6px}.pairing-select select{flex:1;padding:6px 8px;border:1px solid var(--color-border);border-radius:var(--radius)}.btn-clear{width:28px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;font-size:1rem;line-height:1;color:var(--color-text-secondary)}.btn-clear:hover{background:#f8d7da;color:#721c24;border-color:#721c24}.info-banner{background:#e8f4f8;color:#0c5460;padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;font-size:.9rem}.error{background:#f8d7da;color:#721c24;padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;font-size:.9rem}.empty{text-align:center;color:var(--color-text-secondary);padding:40px}.loading{text-align:center;padding:60px;color:var(--color-text-secondary)}.spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:12px}@keyframes spin{to{transform:rotate(360deg)}}.editable-name{cursor:pointer;border-bottom:1px dashed var(--color-border)}.editable-name:hover{color:var(--color-primary)}.round-name-input{font-size:1.17em;font-weight:700;border:1px solid var(--color-primary);border-radius:var(--radius);padding:2px 8px;outline:none;width:100%;max-width:400px}.tournament-name-input{font-size:1.5em;font-weight:700;border:1px solid var(--color-primary);border-radius:var(--radius);padding:2px 8px;outline:none;flex:1}.admin-section{margin-bottom:28px}.admin-section h3{font-size:1rem;margin-bottom:12px;color:var(--color-text)}.admin-empty{color:var(--color-text-secondary);font-size:.9rem;padding:8px 0}.admin-user-list{display:flex;flex-direction:column;gap:8px}.admin-user-row{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:12px 16px}.admin-user-info{display:flex;flex-direction:column;gap:2px}.admin-user-name{font-weight:600;font-size:.95rem}.admin-user-email{font-size:.85rem;color:var(--color-text-secondary)}.admin-user-actions{display:flex;gap:8px}.btn-danger{background:#dc3545;color:#fff;border-color:#dc3545}.btn-danger:hover{background:#c82333}@media (max-width: 640px){.container{padding:16px}.form-row,.teams-grid{grid-template-columns:1fr}.score-total{gap:16px}.team-score .score{font-size:2.2rem}.tabs{gap:0}.tab{padding:8px 10px;font-size:.8rem}.pairing-sides{flex-direction:column}.match-players{flex-direction:column;align-items:stretch}.vs{text-align:center}.holes-grid{grid-template-columns:repeat(6,1fr)}}
