:root{--ink: #0a0a0a;--paper: #f4f1ea;--paper-dark: #e8e2d3;--paper-white: #ffffff;--muted: #6b6358;--accent: #e4002b;--green: #006847;--blue: #1a2b5c;--gold: #c9a24b;--gold-light: #e6c97a;--font-display: "Bebas Neue", "Impact", sans-serif;--font-body: "Fraunces", "Georgia", serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-body);font-size:17px;line-height:1.55;color:var(--ink);background:var(--paper);min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{padding:18px 24px;border-bottom:1px solid var(--paper-dark);display:flex;align-items:baseline;gap:12px}.brand{text-decoration:none;color:var(--ink);display:flex;gap:10px;align-items:center}.brand-mark{font-family:var(--font-display);font-size:28px;letter-spacing:.04em;line-height:1}.brand-sub{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.ball{display:inline-block;vertical-align:middle}.page{flex:1;padding:32px 24px;max-width:760px;margin:0 auto;width:100%}.footer{padding:18px 24px;border-top:1px solid var(--paper-dark);color:var(--muted);font-size:13px;text-align:center;font-family:var(--font-mono);display:flex;flex-direction:column;gap:4px;align-items:center}.footer-updated{font-size:11px;letter-spacing:.05em}.display{font-family:var(--font-display);font-size:56px;letter-spacing:.02em;line-height:1;margin:8px 0 16px}.h2{font-family:var(--font-display);font-size:24px;letter-spacing:.04em;margin:0 0 8px}.kicker{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.15em;color:var(--accent);margin:0}.lede{font-size:19px;line-height:1.5;max-width:56ch}.meta{font-family:var(--font-mono);font-size:13px;color:var(--muted)}.muted{color:var(--muted)}.hint{font-size:14px;color:var(--muted);font-style:italic}.err{color:var(--accent);font-family:var(--font-mono);font-size:14px}.ok{color:var(--green);font-family:var(--font-mono);font-size:14px}.stack{display:flex;flex-direction:column;gap:20px}.hero{display:flex;flex-direction:column;gap:16px}.card{background:#fff;border:1px solid var(--paper-dark);padding:20px;display:flex;flex-direction:column;gap:12px}label{display:flex;flex-direction:column;gap:6px;font-size:14px}label span{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}label.checkbox{flex-direction:row;align-items:center;gap:10px;font-size:15px}label.checkbox span{font-family:var(--font-body);text-transform:none;letter-spacing:0;font-size:15px;color:var(--ink)}input[type=text],input:not([type]){font-family:var(--font-body);font-size:16px;padding:10px 12px;border:1px solid var(--paper-dark);background:var(--paper);color:var(--ink)}input:focus{outline:2px solid var(--accent);outline-offset:-1px}button,.btn,.btn-ghost,.primary{font-family:var(--font-display);letter-spacing:.06em;font-size:16px;padding:10px 18px;border:1px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;text-decoration:none;display:inline-block}.primary{background:var(--ink);color:var(--paper)}.primary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{border:1px dashed var(--muted);color:var(--muted);padding:4px 10px;font-size:13px}.admin-link{align-self:flex-start}.tab-switch{display:flex;gap:0;border:1px solid var(--ink);width:fit-content}.tab{border:none;padding:8px 16px;background:transparent}.tab.on{background:var(--ink);color:var(--paper)}.actions{display:flex;gap:10px;flex-wrap:wrap}.tag{font-family:var(--font-mono);font-size:11px;padding:2px 6px;border:1px solid currentColor;margin-left:6px;font-style:normal;text-transform:uppercase;letter-spacing:.1em}.tag.paid{color:var(--green)}.tag.unpaid{color:var(--muted)}.tag.heavy{color:var(--accent)}.roster{list-style:none;padding:0;margin:0}.roster li{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--paper-dark)}.roster li:last-child{border-bottom:none}.paynow{background:var(--paper);padding:10px 12px;border-left:3px solid var(--gold);font-size:14px}.leaderboard,.admin-players{width:100%;border-collapse:collapse}.leaderboard th,.admin-players th{text-align:left;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:8px 6px;border-bottom:1px solid var(--paper-dark)}.leaderboard td,.admin-players td{padding:10px 6px;border-bottom:1px solid var(--paper-dark);font-size:15px}.leaderboard td.mono,.admin-players td.mono,.mono{font-family:var(--font-mono)}.leaderboard td.total{font-weight:600;color:var(--accent)}.hailmary-cell.hm-alive{color:var(--green);font-weight:600}.hailmary-cell.hm-dead{color:var(--muted);text-decoration:line-through}.hailmary-list{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-direction:column;gap:6px}.hailmary-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 10px;background:var(--paper);border-left:3px solid var(--paper-dark)}.hailmary-row.hm-alive{border-left-color:var(--green);background:#f0f7f3}.hailmary-row.hm-dead{border-left-color:var(--muted);opacity:.65}.hailmary-team{display:inline-flex;align-items:center;gap:8px;min-width:0}.hailmary-name{font-family:var(--font-display);letter-spacing:.04em;font-size:18px}.hailmary-code{font-size:11px;color:var(--muted)}.hailmary-pill{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px;border:1px solid currentColor}.hailmary-pill.hm-alive{color:var(--green)}.hailmary-pill.hm-dead,.hailmary-pill.hm-unknown{color:var(--muted)}.hailmary-players{font-family:var(--font-mono);font-size:13px;color:var(--ink);margin-left:auto}.hailmary-row.hm-dead .hailmary-players{color:var(--muted)}code{font-family:var(--font-mono);background:var(--paper-dark);padding:1px 6px}.todo{font-style:italic;color:var(--muted);font-size:14px;padding:8px 12px;border-left:2px dashed var(--muted)}.league-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.howto h2{font-family:var(--font-display);letter-spacing:.04em;font-size:22px;margin:0}.howto p,.howto li{font-size:16px;line-height:1.55}.howto p{margin:0}.howto ul,.howto ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px}.howto strong{font-weight:600}.howto em{font-style:italic}.scoring-list li{list-style:none;padding-left:0}.howto ul.scoring-list{padding-left:0}.scoring-table{width:100%;border-collapse:collapse;margin-top:4px}.scoring-table th{text-align:left;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:6px 8px;border-bottom:1px solid var(--paper-dark)}.scoring-table td{padding:8px;border-bottom:1px solid var(--paper-dark);font-size:15px}.scoring-table tr:last-child td{border-bottom:none}.picks-tabs{margin-bottom:4px}.country-card{position:relative;display:flex;background:#fff;border:1px solid var(--paper-dark);overflow:hidden;transition:border-color .15s,transform .05s}.country-card.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.country-card.clickable:hover{border-color:var(--ink)}.country-card.clickable:active{transform:translateY(1px)}.country-card.selected{border-color:var(--country-color, var(--ink));border-width:2px}.country-stripe{width:6px;background:var(--country-color, var(--ink));flex-shrink:0}.country-body{flex:1;padding:10px 12px;min-width:0}.country-row{display:flex;align-items:center;gap:8px}.country-flag{font-size:22px;line-height:1}.country-name{font-family:var(--font-display);letter-spacing:.04em;font-size:18px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.country-code{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.country-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px;background:var(--country-color, var(--ink));color:#fff}.country-players{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-wrap:wrap;gap:4px 8px;font-size:12px;color:var(--muted);font-family:var(--font-mono)}.country-players li:before{content:"· ";color:var(--paper-dark)}.country-players li:first-child:before{content:""}.groups-stack{display:flex;flex-direction:column;gap:18px}.group-block{border-top:2px solid var(--ink);padding-top:10px;display:flex;flex-direction:column;gap:10px}.group-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.group-letter{font-family:var(--font-display);font-size:22px;letter-spacing:.06em}.group-status{font-size:12px}.country-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.group-selects{display:grid;grid-template-columns:1fr 1fr;gap:10px}.hailmary-block{border:2px solid var(--gold);background:linear-gradient(180deg,#fffaf0 0%,var(--paper) 100%);padding:16px;display:flex;flex-direction:column;gap:8px}.hailmary-select{font-family:var(--font-body);font-size:16px;padding:10px 12px;border:1px solid var(--gold);background:#fff}.round-tabs{display:flex;gap:0;border:1px solid var(--ink);width:fit-content;flex-wrap:wrap}.round-tabs .tab{font-family:var(--font-display);padding:6px 14px;font-size:14px;letter-spacing:.08em}.ko-list{display:flex;flex-direction:column;gap:10px}.ko-tie{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:#fff;border-left:3px solid var(--blue);border-top:1px solid var(--paper-dark);border-right:1px solid var(--paper-dark);border-bottom:1px solid var(--paper-dark)}.ko-slot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-family:var(--font-mono);font-size:12px}.ko-tie-id{color:var(--muted)}.ko-slot-label{font-family:var(--font-display);font-size:16px;letter-spacing:.04em}.ko-vs{color:var(--muted)}.ko-pick-row{display:flex;gap:8px;align-items:center}.ko-pick-row select{flex:1;padding:8px 10px;border:1px solid var(--paper-dark);background:var(--paper);font-family:var(--font-body);font-size:15px}.ko-pick-flag{font-size:22px}.props-list{display:flex;flex-direction:column;gap:8px}.prop-row{padding:10px 12px;background:var(--paper);border:1px solid var(--paper-dark);display:flex;flex-direction:column;gap:8px}.prop-row.on{background:#fff;border-color:var(--accent);border-left-width:3px}.prop-row.disabled{opacity:.55}.prop-q{display:flex;gap:10px;align-items:baseline}.prop-id{font-size:11px;color:var(--muted)}.prop-options{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.prop-opt{display:inline-flex;align-items:center;gap:6px;font-size:14px;flex-direction:row}.prop-opt input{margin:0}.duels-grid{display:flex;flex-direction:column;gap:12px}.duel-card{background:#fff;border:1px solid var(--paper-dark);padding:12px;display:flex;flex-direction:column;gap:8px}.duel-head{display:flex;align-items:baseline;gap:8px}.duel-theme{font-family:var(--font-display);font-size:18px;letter-spacing:.04em}.duel-sub{font-size:13px;margin:0;font-style:italic}.duel-sides{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}.duel-side{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:var(--paper);border:1px solid var(--paper-dark);font-family:var(--font-body);cursor:pointer;text-align:center}.duel-side:hover:not(:disabled){border-color:var(--ink)}.duel-side.on{background:#fff;border-color:var(--country-color, var(--ink));border-width:2px;box-shadow:0 0 0 2px var(--country-color, var(--ink)) inset;box-shadow:inset 4px 0 0 var(--country-color, var(--ink))}.duel-side:disabled{opacity:.5;cursor:not-allowed}.duel-flag{font-size:28px;line-height:1}.duel-name{font-family:var(--font-display);font-size:16px;letter-spacing:.03em}.duel-team{font-size:11px;color:var(--muted)}.duel-vs{display:flex;align-items:center;font-family:var(--font-display);color:var(--muted);padding:0 4px}.host-stripe{display:flex;height:4px}.host-stripe span{flex:1}.top-tabs{margin-bottom:8px;border-color:var(--ink)}.top-tabs .tab{font-size:15px;padding:10px 20px}.sub-tabs{flex-wrap:wrap}.sub-tabs .tab{font-size:14px;padding:8px 14px}.btn-test{font-family:var(--font-display);letter-spacing:.06em;font-size:13px;padding:8px 14px;border:1px dashed var(--gold);color:var(--gold);background:transparent;cursor:pointer}.btn-test:hover:not(:disabled){background:#fffaf0}.btn-test:disabled{opacity:.4;cursor:not-allowed}.result-block{border-top:2px solid var(--ink);padding-top:8px;display:flex;flex-direction:column;gap:8px}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.result-grid label.checkbox{grid-column:1 / -1}.schedule-list{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:0}.schedule-row{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:10px 0;border-bottom:1px solid var(--paper-dark)}.schedule-row:last-child{border-bottom:none}.schedule-stage{font-family:var(--font-display);font-size:18px;letter-spacing:.04em}.schedule-date{font-size:13px;color:var(--blue)}.schedule-notes{grid-column:1 / -1;font-size:13px}.hosts-list{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.host-row{padding:6px 12px;border-left:4px solid var(--ink);background:var(--paper)}.group-table{width:100%;border-collapse:collapse;margin-top:6px}.group-table th{text-align:left;font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;padding:4px 6px;border-bottom:1px solid var(--paper-dark)}.group-table td{padding:6px;border-bottom:1px solid var(--paper-dark);font-size:14px}.group-table th.mono,.group-table td.mono{text-align:right;font-size:12px}.ko-tie.static{border-left-color:var(--green)}.ko-tie.static .ko-pick-row{display:none}.match-calendar{display:flex;flex-direction:column;gap:4px;margin-top:8px}details.match-day{border-top:1px solid var(--paper-dark);padding:6px 0}details.match-day[open]{padding-bottom:12px}details.match-day.has-fav{background:linear-gradient(90deg,rgba(201,162,75,.06) 0%,transparent 60%)}details.match-day.fav-day{border:2px solid var(--gold);background:#fffaf0;padding:8px 10px;margin-bottom:12px}.match-day-head{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px}.match-day-head::-webkit-details-marker{display:none}.match-day-head:before{content:"▸";color:var(--muted);display:inline-block;transition:transform .1s}details[open]>.match-day-head:before{transform:rotate(90deg)}.match-day-count{font-size:11px}.fav-pill{font-size:12px;margin-left:auto}.match-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.match-row{display:grid;grid-template-columns:1fr auto;gap:6px 14px;padding:8px 10px;background:var(--paper);border-left:3px solid var(--paper-dark)}.match-row:hover{border-left-color:var(--accent)}.match-row.is-fav{border-left-color:var(--gold);background:#fffaf0}.match-row.is-ko{border-left-color:var(--blue)}.match-tbc{font-family:var(--font-mono);font-size:13px;color:var(--muted);padding:1px 6px;border:1px dashed var(--muted)}.match-teams{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-family:var(--font-display);letter-spacing:.03em;font-size:16px}.match-team{display:inline-flex;align-items:center;gap:6px}.match-vs{font-family:var(--font-mono);font-size:11px}.match-meta{text-align:right;font-size:12px;line-height:1.45}.match-time-local{color:var(--ink);font-size:13px}.match-time-sgt{color:var(--green);font-size:13px}.match-venue{font-size:11px}.group-fixtures{margin-top:10px}.group-fixtures>summary{font-size:12px;color:var(--muted);cursor:pointer;list-style:none;padding:4px 0}.group-fixtures>summary::-webkit-details-marker{display:none}.group-fixtures>summary:before{content:"▸ ";color:var(--muted)}.group-fixtures[open]>summary:before{content:"▾ "}.fav-picker{margin:12px 0 6px;padding:8px 12px;background:var(--paper);border-left:3px solid var(--gold)}.fav-picker>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:4px}.fav-picker>summary::-webkit-details-marker{display:none}.fav-picker>summary:before{content:"▸ ";color:var(--muted)}.fav-picker[open]>summary:before{content:"▾ "}.fav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px;margin-top:6px}.fav-chip{font-family:var(--font-mono);font-size:12px;padding:6px 8px;border:1px solid var(--paper-dark);background:#fff;cursor:pointer;display:flex;align-items:center;gap:4px;letter-spacing:.05em}.fav-chip:hover{border-color:var(--ink)}.fav-chip.on{border-color:var(--country-color, var(--gold));background:var(--country-color, var(--gold));color:#fff;border-width:2px}.watch-list{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.watch-list li{padding:6px 0;border-bottom:1px dashed var(--paper-dark);font-size:14px}.watch-list li:last-child{border-bottom:none}.ko-profile-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.ko-row{display:grid;grid-template-columns:auto 1fr 1fr auto;gap:6px 12px;align-items:center;padding:6px 8px;background:var(--paper);border-left:3px solid var(--paper-dark);font-size:13px}.ko-row.correct{border-left-color:var(--green);background:#f0f7f3}.ko-row.wrong{border-left-color:var(--accent);opacity:.75}.ko-slot-mini{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.ko-pick{font-family:var(--font-body);font-size:14px}.matrix-wrap{overflow-x:auto;padding:0}.matrix{border-collapse:collapse;min-width:100%;font-size:12px}.matrix th,.matrix td{padding:6px 8px;border-bottom:1px solid var(--paper-dark);text-align:left;white-space:nowrap}.matrix thead th{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--paper);position:sticky;top:0}.matrix .matrix-corner{position:sticky;left:0;background:var(--paper);z-index:2}.matrix .matrix-name{position:sticky;left:0;background:#fff;z-index:1;font-family:var(--font-body);font-size:13px}.matrix .matrix-group-col{text-align:center;border-bottom:1px solid var(--ink)}.matrix .matrix-sub{font-size:9px;color:var(--muted)}.matrix .matrix-cell{font-family:var(--font-mono);font-size:12px}.matrix tbody tr:hover td,.matrix tbody tr:hover .matrix-name{background:#fffaf0}@media (max-width: 540px){.display{font-size:40px}.page{padding:20px 16px}.country-grid,.group-selects{grid-template-columns:1fr}.country-name{font-size:16px}.schedule-row{grid-template-columns:1fr}.schedule-date{color:var(--blue)}.match-row{grid-template-columns:1fr}.match-meta{text-align:left}}
