@font-face{font-family:Barlow;src:url(fonts/barlow/Barlow-Regular.ttf) format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:Barlow;src:url(fonts/barlow/Barlow-Medium.ttf) format("truetype");font-weight:500;font-display:swap}
@font-face{font-family:Barlow;src:url(fonts/barlow/Barlow-SemiBold.ttf) format("truetype");font-weight:600;font-display:swap}
@font-face{font-family:"Barlow Semi Condensed";src:url(fonts/barlow-semi-condensed/BarlowSemiCondensed-SemiBold.ttf) format("truetype");font-weight:600;font-display:swap}
@font-face{font-family:"Barlow Semi Condensed";src:url(fonts/barlow-semi-condensed/BarlowSemiCondensed-Bold.ttf) format("truetype");font-weight:700;font-display:swap}

:root{--paper:#f4f2ea;--card:#fff;--ink:#1b2420;--blue:#17497d;--blue-dark:#0f3358;--signal:#f2c744;--rust:#a8502f;--secondary:#5c5a50;--muted:#8a8677;--line:rgba(0,0,0,.08);--green:#2e7d3c;--success-bg:#e5f0e7;--error-bg:#f3e0d6}
*{box-sizing:border-box}
html{background:var(--paper);scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Barlow,ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.45}
button,input{font:inherit}
a{color:var(--blue)}
.page{min-height:100vh;display:flex;flex-direction:column}
.container{width:min(calc(100% - 32px),1280px);margin-inline:auto}
.narrow{width:min(calc(100% - 32px),650px)}
.site-header{background:var(--card);border-bottom:1px solid var(--line)}
.header-inner{min-height:68px;display:flex;align-items:center;gap:13px;padding-block:12px}
.brand-logo{width:44px;height:44px;display:block;flex:none;object-fit:contain}
.brand-title{font:700 17px/1.1 "Barlow Semi Condensed",sans-serif}
.brand-subtitle{margin-top:3px;color:var(--muted);font-size:11px;font-weight:500}
.header-actions{margin-left:auto;display:flex;align-items:center;gap:18px;font-size:13px;font-weight:600}
.header-actions form{margin:0}
.header-actions a,.text-button{text-decoration:none;color:var(--secondary)}
.text-button{padding:6px 0;border:0;background:transparent;cursor:pointer}
.header-actions a:hover,.text-button:hover{color:var(--blue)}
.public-main,.admin-main{padding-block:34px 54px}
.page-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}
.eyebrow{margin:0 0 7px;color:var(--muted);font:600 10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}
h1,h2,h3{margin:0;font-family:"Barlow Semi Condensed",Barlow,sans-serif;letter-spacing:0}
h1{color:var(--blue);font-size:clamp(28px,3vw,36px);line-height:1.05}
h2{font-size:21px;line-height:1.15}
.intro-status{margin:0;color:var(--muted);font-size:12px;font-weight:500;white-space:nowrap}
.public-grid{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);gap:24px;align-items:start}
.table-column,.admin-table{position:sticky;top:20px;min-width:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.card-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:18px;border-bottom:1px solid var(--line)}
.card-heading h2{color:var(--blue)}
.live-dot{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;white-space:nowrap}
.live-dot::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green)}
.table-card{overflow:hidden}
.mode-note{margin:0;padding:10px 18px;border-bottom:1px solid var(--line);background:rgba(242,199,68,.13);color:#745d12;font-size:11px;font-weight:600}
.table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.league-table{width:100%;min-width:640px;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.league-table th{padding:10px 7px;color:var(--muted);font:600 9px/1.1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-align:center;text-transform:uppercase;white-space:nowrap}
.league-table th:nth-child(2){text-align:left}
.league-table td{padding:10px 7px;border-top:1px solid rgba(0,0,0,.06);text-align:center;color:var(--secondary);white-space:nowrap}
.league-table .team-cell{text-align:left;color:var(--ink);font-weight:600;white-space:normal;line-height:1.2;min-width:136px}
.league-table .rank{color:var(--blue);font-weight:700}
.league-table .points{color:var(--ink);font-weight:700}
.league-table .ratio{color:var(--blue);font-weight:700}
.league-table tbody tr:nth-child(-n+4){background:rgba(23,73,125,.025)}
.table-key{display:flex;flex-wrap:wrap;gap:12px;margin:0;padding:11px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:10px}
.schedule-column{min-width:0}
.schedule-group+.schedule-group{margin-top:30px}
.group-heading{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:10px}
.group-heading h2{color:var(--blue)}
.group-heading span{color:var(--muted);font-size:11px}
.game-list,.admin-game-list{display:grid;gap:8px}
.game-card{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.04)}
.game-card.is-next{border-color:rgba(23,73,125,.46);box-shadow:inset 4px 0 0 var(--blue),0 1px 3px rgba(0,0,0,.06)}
.game-card.is-complete{background:rgba(255,255,255,.58)}
.game-card.is-complete .matchup{color:var(--secondary)}
.game-card.is-pending{background:rgba(237,234,225,.68)}
.game-meta{display:flex;align-items:center;gap:9px;padding:8px 13px 0;color:var(--muted);font-size:10px}
.game-meta time{color:var(--blue);font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace}
.matchup{display:grid;grid-template-columns:minmax(0,1fr) 58px minmax(0,1fr);align-items:center;gap:8px;min-height:59px;padding:6px 13px 13px}
.team{min-width:0;font:600 15px/1.16 "Barlow Semi Condensed",Barlow,sans-serif;overflow-wrap:anywhere}
.team-a{text-align:right}.team-b{text-align:left}
.game-card.is-pending .team{color:var(--muted)}
.score{display:flex;justify-content:center;align-items:center;gap:4px;color:var(--ink);font:700 25px/1 "Barlow Semi Condensed",sans-serif;font-variant-numeric:tabular-nums}
.score span{color:var(--muted);font-size:17px}
.next-label{padding:6px 13px 7px;background:rgba(23,73,125,.06);color:var(--blue);font-size:10px;font-weight:600;text-align:right;text-transform:uppercase;letter-spacing:.06em}
.pause{display:grid;grid-template-columns:100px 1fr;gap:12px;align-items:center;padding:10px 14px;color:var(--muted);font-size:12px}
.pause span{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pause strong{font-weight:600}
.bye-card{display:grid;grid-template-columns:90px minmax(0,1fr);align-items:center;gap:12px;border:1px dashed rgba(27,36,32,.16);border-radius:8px;background:rgba(237,234,225,.68);padding:13px 14px;color:var(--muted)}
.bye-card time,.tournament-end span{font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}
.bye-card div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.bye-card strong{color:var(--secondary);font-size:13px}.bye-card div span{font-size:11px}
.tournament-end{display:grid;grid-template-columns:100px 1fr;gap:12px;align-items:center;padding:12px 14px;color:var(--muted);font-size:12px}.tournament-end strong{font-weight:600}
.footer{margin-top:auto;border-top:1px solid var(--line);padding-block:18px;color:var(--muted);font-size:11px}
.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:16px}
.footer a{color:var(--muted);text-decoration:none}.footer a:hover{color:var(--blue)}
.copy{color:var(--secondary);line-height:1.55}
.legal-main{padding-block:34px 54px}
.legal-card{padding:26px}
.legal-card header{margin-bottom:28px}
.legal-section+.legal-section{margin-top:25px}
.legal-section h2{margin-bottom:8px;font-size:17px;color:var(--ink)}
.legal-section p,.legal-section address{margin:0;color:var(--secondary);font-size:14px;line-height:1.65;font-style:normal}
.legal-section p+p{margin-top:8px}
.legal-section strong{color:var(--ink)}
.message-card,.install-card,.login-card{margin-block:56px;padding:26px}
.message-card h1,.install-card h1,.login-card h1{margin-bottom:13px}
.message-card .button{margin-top:8px}
.install-card{max-width:650px;margin-inline:auto}
.login-wrap{width:min(calc(100% - 32px),460px)}
.login-card{padding:28px}
.form-stack{display:grid;gap:17px;margin-top:24px}
.form-stack label{display:grid;gap:6px;color:var(--ink);font-size:12px;font-weight:600}
.form-stack input,.score-team input{width:100%;min-height:44px;border:1.5px solid rgba(27,36,32,.22);border-radius:6px;background:#fff;padding:9px 11px;color:var(--ink);outline:none}
.form-stack input:focus,.score-team input:focus{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.form-stack small{color:var(--muted);font-size:11px;font-weight:400}
.choice-fieldset{display:grid;gap:9px;margin:0;border:1px solid var(--line);border-radius:7px;padding:13px}
.choice-fieldset legend{padding-inline:5px;color:var(--ink);font-size:12px;font-weight:600}
.form-stack .radio-choice{display:flex;grid-template-columns:none;align-items:center;gap:9px;font-weight:500}
.form-stack .radio-choice input{width:18px;min-height:18px;height:18px;margin:0;accent-color:var(--blue)}
.button-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.button{display:inline-flex;min-height:44px;align-items:center;justify-content:center;border:1.5px solid transparent;border-radius:6px;padding:10px 18px;font:600 14px/1 "Barlow Semi Condensed",Barlow,sans-serif;letter-spacing:.02em;text-decoration:none;cursor:pointer}
.button-primary{border-color:var(--blue);background:var(--blue);color:#fff}
.button-primary:hover{border-color:var(--blue-dark);background:var(--blue-dark);color:#fff}
.button-secondary{border-color:var(--blue);background:transparent;color:var(--blue)}
.button-link{min-height:36px;border:0;background:transparent;color:var(--rust);padding-inline:8px;text-decoration:underline}
.button-small{min-height:38px;padding:8px 12px;font-size:12px}
.button:disabled,.score-team input:disabled{cursor:not-allowed;opacity:.48}
.alert{margin-bottom:18px;border:1px solid transparent;border-radius:7px;padding:12px 14px;font-size:13px;line-height:1.45}
.alert-success{border-color:rgba(46,125,60,.22);background:var(--success-bg);color:#245f30}
.alert-error{border-color:rgba(168,80,47,.24);background:var(--error-bg);color:#7d3c24}
.alert-mode{border-color:rgba(242,199,68,.34);background:rgba(242,199,68,.14);color:#745d12}
.form-stack .alert{margin:0}
.admin-intro{margin-bottom:18px}
.league-locked{margin-bottom:22px}
.migration-card{margin-block:28px;padding:26px}.migration-card h1{margin-bottom:18px}
.team12-config{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px;padding:16px 18px}
.team12-config h2{color:var(--blue)}
.team12-form{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;font-size:12px}.team12-form label{display:flex;align-items:center;gap:5px}.team12-form input[type=radio]{accent-color:var(--blue)}.team12-form input[type=text],.team12-form input:not([type]){min-height:38px;border:1.5px solid rgba(27,36,32,.22);border-radius:6px;padding:8px 10px}
.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,.72fr);gap:24px;align-items:start}
.admin-group+.admin-group{margin-top:28px}
.admin-game{padding:14px 16px}
.admin-game.is-locked{background:rgba(255,255,255,.58)}
.admin-game-meta{display:flex;align-items:center;gap:9px;margin-bottom:11px;color:var(--muted);font-size:10px}
.admin-game-meta time{color:var(--blue);font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace}
.badge{display:inline-flex;margin-left:auto;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.badge-locked{background:#e7e5dd;color:#6b6b62}.badge-complete{background:#dce7f2;color:var(--blue)}
.score-form{display:grid;grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr) auto;align-items:end;gap:10px}
.score-team{display:grid;grid-template-columns:minmax(0,1fr) 58px;align-items:center;gap:9px;font:600 13px/1.15 "Barlow Semi Condensed",Barlow,sans-serif}
.score-team>span{text-align:right;overflow-wrap:anywhere}.score-team-right{grid-template-columns:58px minmax(0,1fr)}.score-team-right>span{order:2;text-align:left}
.score-team input{height:42px;min-height:42px;padding:7px;text-align:center;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.score-colon{align-self:center;padding-top:2px;color:var(--muted);font-weight:700}
.score-actions{display:flex;align-items:center;gap:2px}
.pending-note{margin:10px 0 0;color:var(--muted);font-size:11px;text-align:center}
.admin-bye{border-style:dashed;background:rgba(237,234,225,.68)}.admin-bye p{margin:0;color:var(--muted);font-size:12px;text-align:center}.admin-bye p strong{color:var(--secondary)}

@media(max-width:1050px){
  .admin-grid{grid-template-columns:minmax(0,1fr)}
  .admin-table{position:static;order:-1}
  .team12-config{align-items:flex-start;flex-direction:column}.team12-form{justify-content:flex-start}
}
@media(max-width:899px){
  .public-main,.admin-main{padding-top:25px}
  .public-grid{grid-template-columns:minmax(0,1fr)}
  .table-column{position:static;order:-1}
  .page-intro{align-items:flex-start}
  .game-card .team{font-size:16px}
}
@media(max-width:620px){
  .container{width:min(calc(100% - 22px),1280px)}
  .header-inner{min-height:62px}
  .header-actions{gap:11px;font-size:12px}.header-actions a{display:none}
  .brand-title{font-size:16px}
  .page-intro{display:block}.intro-status{margin-top:8px}
  .card-heading{padding:15px}
  .league-table{min-width:610px}
  .group-heading h2{font-size:20px}
  .matchup{grid-template-columns:minmax(0,1fr) 50px minmax(0,1fr);gap:5px;padding-inline:10px}
  .game-meta{padding-inline:10px}
  .pause{grid-template-columns:92px 1fr;padding-inline:10px}
  .message-card,.install-card,.login-card{margin-block:28px;padding:20px}
  .score-form{grid-template-columns:minmax(0,1fr) 10px minmax(0,1fr)}
  .score-team,.score-team-right{grid-template-columns:minmax(0,1fr);gap:6px}
  .score-team>span,.score-team-right>span{order:0;text-align:center;min-height:30px;display:flex;align-items:flex-end;justify-content:center}
  .score-actions{grid-column:1/-1;justify-content:center;margin-top:3px}
  .admin-game{padding:13px 11px}
}
