:root{--bg:#0f172a;--bg-soft:#16223b;--card:#1b2740;--card-2:#223150;--line:#2c3a5a;--text:#e8edf7;--muted:#94a3c4;--accent:#f97316;--accent-soft:#fb923c;--green:#22c55e;--red:#ef4444;--radius:8px;--shadow:0 8px 24px #00000047}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.app{flex-direction:column;max-width:760px;min-height:100vh;margin:0 auto;display:flex}.topnav{z-index:10;position:sticky;top:0}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:linear-gradient(#14213d,#0f172a);align-items:center;gap:8px;padding:14px 16px;display:flex}.brand{letter-spacing:0;align-items:center;gap:8px;font-size:18px;font-weight:800;display:flex}.ball{font-size:22px}.tabs{border-bottom:1px solid var(--line);background:#0f172af5;gap:4px;padding:8px;display:flex;overflow-x:auto}.tabs a{text-align:center;white-space:nowrap;color:var(--muted);border-radius:8px;flex:1;padding:9px 12px;font-size:14px;font-weight:600;text-decoration:none}.tabs a.active{background:var(--accent);color:#1a1206}.content{flex:1;padding:16px}.footer{text-align:center;padding:18px;font-size:13px}.page h1{margin:4px 0 8px;font-size:24px}.page h2{margin:22px 0 10px;font-size:18px}.muted{color:var(--muted)}.tiny{font-size:12px}.row{align-items:flex-start;display:flex}.row.center{align-items:center}.row.between{justify-content:space-between}.row.gap{gap:10px}.row.gap.sm{gap:6px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:16px}.pill{background:var(--card-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600}.pill-good{color:#86efac;background:#22c55e26;border-color:#0000}.pill-warn{color:var(--accent-soft);background:#f9731626;border-color:#0000}.pill-bad{color:#fca5a5;background:#ef444426;border-color:#0000}.empty{text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius);padding:40px 16px}.banner{background:var(--card-2);border:1px solid var(--line);border-radius:8px;margin:10px 0;padding:12px 14px;font-size:14px}.banner.success{background:#22c55e1f;border-color:#22c55e66}.banner.error{background:#ef44441f;border-color:#ef444466}.banner.info{background:#f973161f;border-color:#f9731659}.error{color:#fca5a5;margin:6px 0;font-size:14px}.btn{appearance:none;border:1px solid var(--line);background:var(--card-2);color:var(--text);cursor:pointer;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:700;transition:transform 50ms,opacity .15s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#1a1206}.btn-success{background:var(--green);border-color:var(--green);color:#052e12}.btn-danger{color:#fca5a5;background:0 0;border-color:#ef444499}.btn-ghost{background:0 0}.btn-block{width:100%;padding:14px;font-size:16px}.btn.sm{padding:6px 10px;font-size:13px}.form label,.modal label{margin-bottom:14px;font-size:14px;font-weight:600;display:block}input,select{background:var(--bg-soft);border:1px solid var(--line);width:100%;color:var(--text);border-radius:8px;margin-top:6px;padding:11px 12px;font-size:16px;font-weight:500}input[type=range]{accent-color:var(--accent);padding:0}input[type=checkbox]{width:auto;margin:0 8px 0 0;transform:scale(1.2)}label.checkbox{align-items:center;font-weight:600;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.range-hints{justify-content:space-between;margin-top:4px;font-size:12px;display:flex}.modal-backdrop{z-index:50;background:#020612b3;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--line);border-radius:14px;width:100%;max-width:420px;padding:24px;box-shadow:0 20px 50px #00000061}.modal h2{margin:0 0 6px}.modal>.muted{margin-top:0}.modal .row{justify-content:flex-end;margin-top:8px}.player-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.player-name{font-size:16px;font-weight:700}.player-name-row{align-items:center;gap:8px;min-width:0;display:inline-flex}.player-name-text{text-overflow:ellipsis;min-width:0;overflow:hidden}.player-avatar{background:var(--card-2);color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex;overflow:hidden}.player-avatar img{object-fit:cover;width:100%;height:100%;display:block}.player-avatar-fallback{letter-spacing:0;font-size:.42em}.player-avatar-sm{width:22px;height:22px;font-size:22px}.player-avatar-md{width:32px;height:32px;font-size:32px}.player-avatar-lg{width:64px;height:64px;font-size:64px}.chip .player-name-row{gap:6px}.chip .player-name-text{font-weight:600}.member-names{flex-wrap:wrap;align-items:center;gap:2px 0;display:flex}.member-name-item{align-items:center;display:inline-flex}.photo-field-row{align-items:center;gap:12px;margin-top:6px;display:flex}.photo-field-actions{flex-direction:column;gap:8px;display:flex}.photo-field-actions input[type=file]{max-width:100%}.player-meta{margin-top:2px;font-size:13px}.player-notes{margin-top:4px;font-size:13px;font-style:italic}.player-side{text-align:right;flex-direction:column;align-items:flex-end;gap:6px;display:flex}.rating-badge{background:var(--accent);color:#1a1206;border-radius:8px;padding:4px 10px;font-size:15px;font-weight:800}.skill-line{font-size:12px}.toolbar{flex-wrap:wrap;gap:10px;display:flex}.teams-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.team-card{margin-bottom:0}.team-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.team-name{font-weight:700}.team-name-input{margin:0;padding:6px 8px;font-size:14px;font-weight:700}.team-rating{background:var(--card-2);color:var(--accent-soft);border-radius:8px;padding:2px 8px;font-size:13px;font-weight:700}.chips{flex-direction:column;gap:8px;display:flex}.chip{background:var(--bg-soft);border:1px solid var(--line);width:100%;color:var(--text);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;font-weight:600;display:flex}.chip:disabled{cursor:default;opacity:.9}.chip-selected{border-color:var(--accent);box-shadow:0 0 0 2px #f9731666}.chip-rating{color:var(--muted);font-size:13px}.bench-title{margin-bottom:8px;font-weight:600}.hint{text-align:center;font-size:13px}.game-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.game-label{font-weight:700}.status{border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700}.status.scheduled{background:var(--card-2);color:var(--muted)}.status.final{color:var(--green);background:#22c55e2e}.scoreboard{grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-bottom:8px;display:grid}.side{text-align:center;background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:10px}.side.winner{border-color:var(--green)}.side-name{font-size:14px;font-weight:700}.side-score{color:var(--accent);font-size:30px;font-weight:800}.vs{color:var(--muted);font-weight:700}.stat-entry{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.entry-team-name{margin:6px 0;font-weight:700}.entry-row{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;font-weight:600;display:flex}.entry-row input{text-align:center;width:84px;margin:0}.boxscore{grid-template-columns:1fr 1fr;gap:14px;margin-top:8px;display:grid}.boxscore-row{justify-content:space-between;padding:3px 0;font-size:14px;display:flex}.gameday-panel{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:radial-gradient(circle at 18% 0,#f973163d,#0000 30%),linear-gradient(135deg,#1b2740 0%,#14213d 56%,#0f172a 100%);margin:14px 0 20px;overflow:hidden}.gameday-hero{grid-template-columns:1fr auto;align-items:center;gap:16px;padding:18px;display:grid}.eyebrow,.metric-label{color:var(--muted);text-transform:uppercase;letter-spacing:0;font-size:12px;font-weight:800;display:block}.gameday-hero h2{margin:3px 0 6px;font-size:25px;line-height:1.1}.progress-ring{background:radial-gradient(circle at center, var(--card) 56%, transparent 58%), conic-gradient(var(--accent) var(--progress,0%), var(--line) 0);border:1px solid var(--line);border-radius:50%;place-items:center;width:76px;height:76px;display:grid}.progress-ring span{color:var(--text);font-weight:900}.gameday-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.gameday-strip>div{border-right:1px solid var(--line);padding:12px 18px}.gameday-strip>div:last-child{border-right:0}.gameday-strip strong{margin-top:4px;font-size:22px;display:block}.next-match{grid-template-columns:1fr auto;align-items:center;gap:12px;padding:14px 18px 18px;display:grid}.next-match strong{margin-top:3px;font-size:18px;display:block}.quick-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.highlights{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.highlight{text-align:center;padding:14px 10px}.highlight .big{margin:4px 0 2px;font-size:18px;font-weight:800}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:14px}.table th,.table td{text-align:center;border-bottom:1px solid var(--line);padding:10px 8px}.table th{background:var(--card-2);color:var(--muted);text-transform:uppercase;letter-spacing:0;font-size:12px}.table tr:last-child td{border-bottom:none}.table .left{text-align:left;align-items:center;gap:10px;display:flex}.rank{background:var(--accent);color:#1a1206;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:inline-flex}.team-name-cell{font-weight:700}.pos{color:var(--green)}.neg{color:var(--red)}.tournament-pick{background:var(--card-2);border:1px solid var(--line);min-width:0;color:var(--text);border-radius:8px;flex:auto;margin:0;padding:8px 10px;font-size:14px;font-weight:600}span.tournament-pick{text-align:center;font-weight:600;display:inline-block}.lang-pick{background:var(--card-2);border:1px solid var(--line);width:auto;color:var(--text);cursor:pointer;appearance:none;text-align:center;text-align-last:center;border-radius:8px;flex:none;padding:6px 4px;font-size:12px;font-weight:700}.topbar .btn{white-space:nowrap;flex:none}.selected-card{border-color:var(--accent);box-shadow:0 0 0 2px #f9731659}.round-title{text-transform:uppercase;letter-spacing:0;color:var(--muted);margin:18px 0 10px;font-size:15px}.side.tbd{opacity:.7;border-style:dashed}.side.tbd .side-name{color:var(--muted);font-style:italic;font-weight:600}.match-form label{margin-bottom:12px;font-size:14px;font-weight:600;display:block}.match-admin{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.inline-count{color:var(--muted);align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.inline-count input{width:64px}.view-toggle{background:var(--card);border:1px solid var(--line);border-radius:999px;gap:4px;margin:4px 0 14px;padding:4px;display:inline-flex}.view-toggle .seg{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:7px 16px;font-size:13px;font-weight:600}.view-toggle .seg.active{background:var(--accent);color:#1b1205}.bracket-wrap{-webkit-overflow-scrolling:touch;padding:8px 4px 16px;position:relative;overflow:auto hidden}.bracket-links{pointer-events:none;z-index:0;position:absolute;top:0;left:0;overflow:visible}.bracket-link{stroke:var(--line);stroke-width:2px;opacity:.55;stroke-dasharray:5 5}.bracket-link.live{opacity:1;stroke-dasharray:none;stroke-width:2.5px}.bracket-link.winner.live{stroke:var(--green)}.bracket-link.loser.live{stroke:var(--accent)}.bracket-cols{z-index:1;align-items:center;gap:44px;width:max-content;min-width:100%;display:flex;position:relative}.bracket-col{flex-direction:column;justify-content:center;gap:18px;display:flex}.bracket-col-title{letter-spacing:0;text-transform:uppercase;color:var(--muted);text-align:center;margin-bottom:2px;font-size:12px;font-weight:700}.bnode{text-align:left;background:var(--card);border:1px solid var(--line);cursor:pointer;width:184px;color:var(--text);border-radius:8px;padding:8px 10px;transition:border-color .15s,transform .1s}.bnode:hover{border-color:var(--accent-soft)}.bnode.selected{border-color:var(--accent);box-shadow:0 0 0 2px #f9731659}.bnode.done{background:var(--card-2)}.bnode-head{justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px;display:flex}.bnode-label{color:var(--muted);text-transform:uppercase;letter-spacing:0;font-size:11px;font-weight:700}.bnode-stage{color:var(--accent-soft);border:1px solid var(--line);border-radius:999px;padding:1px 6px;font-size:9px;font-weight:700}.brow{justify-content:space-between;align-items:center;gap:8px;padding:3px 0;font-size:13px;display:flex}.brow .bteam{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.brow .bscore{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right;min-width:18px;font-weight:700}.brow.win .bteam,.brow.win .bscore{color:var(--green);font-weight:700}.brow.tbd .bteam{color:var(--muted);font-size:12px;font-style:italic}.selected-match{margin-top:8px}@media (width<=480px){.home-page{padding:64px 14px 24px}.home-card{padding:24px 18px 22px}.home-lang{top:12px;right:12px}.gameday-hero,.next-match{grid-template-columns:1fr}.progress-ring{width:64px;height:64px}.gameday-strip>div{padding:10px 12px}.gameday-strip strong{font-size:19px}.quick-actions{justify-content:flex-start}.teams-grid,.highlights{grid-template-columns:1fr}.highlight{text-align:left;justify-content:space-between;align-items:baseline;display:flex}.highlight .big{margin:0}.topbar{gap:6px;padding:10px}.brand{font-size:16px}.brand .ball{font-size:18px}.tournament-pick,.topbar .btn{padding:6px 8px;font-size:13px}.lang-pick{padding:5px 2px;font-size:11px}}.home-page{background:radial-gradient(circle at 50% 0,#f973162e,#0000 30%),linear-gradient(#14213d 0%,#0f172a 54%,#0b1120 100%);justify-content:center;align-items:center;padding:72px 16px 32px;position:relative}.home-card{background:#1b2740f0;border-radius:14px;width:100%;max-width:420px;margin:0 auto;padding:28px 22px 24px;box-shadow:0 18px 46px #00000057}.home-card h1{text-align:center;margin:8px 0}.home-brand{justify-content:center;margin-bottom:8px}.home-form{flex-direction:column;gap:14px;margin-top:16px;display:flex}.home-form .label{color:var(--muted);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.home-organiser{text-align:center;margin-top:20px;font-size:14px}.home-lang{position:absolute;top:16px;right:16px}.btn-link{appearance:none;color:var(--accent-soft);font:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.btn-link.sm{margin-top:6px;font-size:13px}.btn-google{color:#1f1f1f;background:#fff;border-color:#747775;justify-content:center;align-items:center;gap:10px;width:100%;min-height:42px;margin:14px 0 4px;font-weight:700;display:inline-flex}.btn-google:hover{background:#f8f9fa}.google-mark{flex:none;width:20px;height:20px}.auth-divider{color:var(--muted);text-transform:uppercase;align-items:center;gap:12px;margin:14px 0 12px;font-size:12px;font-weight:800;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.tournament-name{text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:14px;font-weight:700;overflow:hidden}.tournament-pick.row{flex:1;align-items:center;min-width:0}.password-edit{margin-top:8px}.password-edit input{flex:1;min-width:120px}.muted.sm{margin:0;font-size:13px}.tournament-settings{border-top:1px solid var(--line);gap:12px;margin:12px 0;padding-top:8px;display:grid}.share-block{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}.share-row{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.share-input{flex:1;min-width:180px;font-size:13px}.share-qr{margin-top:10px}.share-qr img{background:#fff;border-radius:8px;padding:6px}.admins-block{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}.admins-panel{margin-top:8px}.admins-list{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.admins-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin-email{word-break:break-all;font-size:13px}.admin-add-form input{flex:1;min-width:160px}.btn-link.danger{color:#fca5a5}.awards-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:20px;display:grid}.award-card{padding:12px}.award-name{margin:4px 0;font-weight:700}.display-header-right{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.display-lang{font-size:13px}.display-page{min-height:100vh;color:var(--text);background:linear-gradient(160deg,#0b1224 0%,#111827 40%,#0f172a 100%);max-width:1200px;margin:0 auto;padding:24px}.display-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.display-title{align-items:center;gap:12px;font-size:clamp(28px,5vw,42px);font-weight:800;display:flex}.display-meta{color:var(--muted);margin-top:8px;font-size:15px}.display-clock{color:var(--accent-soft);font-size:clamp(24px,4vw,36px);font-weight:700}.display-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;display:grid}.display-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.display-panel h2{text-transform:uppercase;letter-spacing:0;color:var(--muted);margin:0 0 16px;font-size:18px}.display-next .display-matchup{flex-wrap:wrap;align-items:center;gap:12px;font-size:clamp(22px,4vw,32px);font-weight:800;display:flex}.display-vs{color:var(--muted);font-size:.7em}.display-table{border-collapse:collapse;width:100%;font-size:16px}.display-table th,.display-table td{text-align:center;border-bottom:1px solid var(--line);padding:8px 10px}.display-table th.left,.display-table td.left{text-align:left}.display-awards{gap:12px;display:grid}.display-award-label{text-transform:uppercase;letter-spacing:0;color:var(--accent-soft);font-size:12px}.display-award-name{font-size:20px;font-weight:700}.display-footer{text-align:center;margin-top:32px;font-size:13px}.display-loading,.display-error{place-items:center;min-height:100vh;font-size:20px;display:grid}.display-error{color:var(--red)}.display-empty{text-align:center;grid-column:1/-1;font-size:18px}.confirm-modal{text-align:center;max-width:360px}.confirm-message{color:var(--text);margin:8px 0 18px;font-size:15px;line-height:1.5}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.confirm-actions .btn{min-height:48px;font-size:15px}.confirm-actions .btn-danger{background:var(--red);border-color:var(--red);color:#fff}.stepper{flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.stepper input{text-align:center;width:58px;margin:0}.step-btn{appearance:none;border:1px solid var(--line);background:var(--card-2);width:44px;height:44px;color:var(--text);cursor:pointer;border-radius:8px;flex-shrink:0;font-size:22px;font-weight:800;line-height:1}.step-btn:active{transform:scale(.95)}.step-btn:disabled{opacity:.35;cursor:not-allowed}.status.live{color:#fca5a5;background:#ef444426;align-items:center;gap:6px;display:inline-flex}.status.live:before{content:"";background:var(--red);border-radius:50%;width:7px;height:7px;animation:1.4s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}@media (prefers-reduced-motion:reduce){.status.live:before{animation:none}}.rank-1{color:#442b00;background:linear-gradient(135deg,#fde047,#f59e0b)}.rank-2{color:#1f2937;background:linear-gradient(135deg,#e5e7eb,#9ca3af)}.rank-3{color:#3b1d05;background:linear-gradient(135deg,#f0a36b,#b45309)}.champion-banner{border-radius:var(--radius);color:#fde047;background:linear-gradient(135deg,#fde04729,#f973161f);border:1px solid #fde04773;align-items:center;gap:10px;margin:10px 0 14px;padding:14px 16px;font-size:16px;font-weight:800;display:flex}.champion-trophy{font-size:22px}@media (pointer:coarse){.btn{min-height:44px}.btn.sm{min-height:38px}input:not([type=checkbox]):not([type=range]),select{min-height:44px}.chip{min-height:40px}.tabs a{padding:11px 12px}}
