@font-face{font-family:"Titillium Web";src:url("/assets/fonts/TitilliumWeb-Regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Titillium Web";src:url("/assets/fonts/TitilliumWeb-Bold.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap}
:root{color-scheme:dark;--bg:#080a0f;--card:#151a24;--line:#30394c;--text:#f7f8fb;--muted:#aab3c3;--orange:#f05a28;--green:#41d17d;--red:#d83b47;--blue:#2878df;font-family:"Titillium Web",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);padding:16px;-webkit-tap-highlight-color:transparent}main{width:min(1100px,100%);margin:auto}h1,h2,h3,p{margin-top:0}button,input,select{font:inherit}button,input,select{min-height:50px;border:1px solid #3b465d;border-radius:10px;background:#222938;color:var(--text);padding:10px 13px;font-size:16px}button{font-weight:700;cursor:pointer;touch-action:manipulation}button:hover:not(:disabled){border-color:var(--orange)}button:disabled{opacity:.42;cursor:not-allowed}.primary{background:var(--orange);border-color:#ff8c64}.danger{background:#56232a}.success{background:#17643b}.muted{color:var(--muted)}.hidden,[hidden]{display:none!important}.header{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px}.brand{display:flex;align-items:center;gap:13px}.brand img{width:72px;height:72px;object-fit:contain}.status{padding:8px 12px;border-radius:18px;background:#282f3e;color:#ff747d;font-weight:700}.status.online{color:var(--green)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px}.wide{grid-column:1/-1}.field{margin-bottom:13px}.field label,.label{display:block;color:var(--muted);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:7px}.field input,.field select{width:100%}.actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:9px}.location-code{font-size:clamp(3rem,12vw,7rem);font-weight:700;letter-spacing:.12em;text-align:center}.recovery{font-family:monospace;font-size:1.25rem;word-break:break-all;text-align:center}.phase{text-align:center;font-size:1.5rem;font-weight:700}.timer{text-align:center;font-size:clamp(4rem,15vw,9rem);font-weight:700;font-variant-numeric:tabular-nums;line-height:.9}.fighter-card{border-top:6px solid var(--line)}.fighter-card h2{text-align:center}.score{text-align:center;font-size:5rem;font-weight:700}.score-actions{display:grid;grid-template-columns:1fr 78px;gap:9px}.plus{min-height:90px;font-size:2rem}.toggle{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:10px}.toggle input{width:24px;min-height:24px;accent-color:var(--orange)}.message{min-height:1.4em;color:var(--muted);margin-top:12px}.code-input{text-align:center;font-size:2rem;letter-spacing:.18em;font-weight:700}.admin-list{display:grid;gap:8px}.admin-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid var(--line);border-radius:10px}.checks{display:flex;flex-wrap:wrap;gap:8px}.checks label{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--line);border-radius:8px}.checks input{min-height:20px;width:20px}
@media(max-width:720px){body{padding:9px}.header{flex-direction:column;align-items:stretch}.grid{grid-template-columns:1fr;gap:10px}.wide{grid-column:auto}.card{padding:14px}.brand img{width:58px;height:58px}.actions{grid-template-columns:1fr}.location-code{font-size:3.2rem}.score{font-size:4rem}}
[hidden]{display:none!important}
.control-grid>#setup-card{order:10}.control-grid>#timer-card{order:20}.control-grid>#fighter01-card,.control-grid>#fighter02-card{order:30}.control-grid>#prepare-card{order:40}.control-grid>#management-card{order:50}.control-grid>#session-card{order:60}.header-statuses{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.phase-status{color:#fff;background:#39455b}.step-label{display:inline-block;margin-bottom:7px;color:var(--orange);font-size:.75rem;font-weight:700;letter-spacing:.1em}.prepare-card{border-color:var(--orange);text-align:center}.large-action{width:100%;min-height:66px;font-size:1.15rem}.session-card{display:block}.session-card h2{font-size:1rem}.session-card .compact-code{font-size:2rem;letter-spacing:.1em;text-align:left}.session-card #recovery-panel{margin:14px 0}.session-actions{margin-top:12px}.setup-card h2,.prepare-card h2{margin-bottom:8px}
.pairing-mode>:not(#pair-request){display:none!important}
.portal{min-height:calc(100vh - 32px);display:grid;place-content:center;gap:24px}.portal-header{text-align:center}.portal-header img{width:min(360px,70vw);max-height:120px;object-fit:contain}.portal-header h1{font-size:clamp(2rem,6vw,4rem);margin-bottom:4px}.portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:min(900px,100%)}.role-card{display:grid;align-content:center;justify-items:center;min-height:270px;padding:26px;border:1px solid var(--line);border-radius:20px;background:var(--card);color:var(--text);text-align:center;text-decoration:none}.role-card:hover{border-color:var(--orange);transform:translateY(-2px)}.role-card.primary-role{background:linear-gradient(145deg,#6f2b1d,#f05a28)}.role-card h2{font-size:1.7rem;margin-bottom:8px}.role-card p{color:#dce1ea}.role-icon{font-size:3rem}.role-card strong{margin-top:12px}.brand{text-decoration:none;color:inherit}.button-link,.quick-link{display:grid;place-items:center;min-height:50px;border:1px solid #3b465d;border-radius:10px;background:#222938;color:var(--text);padding:10px 13px;font-weight:700;text-decoration:none;text-align:center}.quick-link{min-height:64px}.pair-request{text-align:center;border-color:var(--orange)}.pair-request strong{font-size:2rem;letter-spacing:.12em}.session-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px}.session-card .location-code{font-size:clamp(2.4rem,8vw,5rem);text-align:left}.session-card .phase{margin:0}.session-card #recovery-panel,.session-actions{grid-column:1/-1}.session-actions{display:grid;grid-template-columns:1fr auto;gap:9px}.setup-actions{margin-top:12px}.timer-card{z-index:5}.timer-heading{display:flex;align-items:center;justify-content:space-between}.compact-phase{font-size:1rem;margin:0}.fighter-card{border-top-color:var(--fighter-colour,var(--line))}.fighter-card .plus{background:var(--fighter-colour,var(--orange));border-color:rgba(255,255,255,.45)}.minus{font-size:1.1rem}.management-card h2{font-size:1rem;color:var(--muted)}.message.show{position:fixed;left:50%;bottom:max(12px,env(safe-area-inset-bottom));z-index:100;transform:translateX(-50%);width:min(520px,calc(100% - 20px));margin:0;padding:11px 16px;border:1px solid var(--line);border-radius:12px;background:#111722;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.45)}
@media(max-width:720px){.portal{min-height:calc(100vh - 18px)}.portal-grid{grid-template-columns:1fr}.role-card{min-height:190px}.compact-header{flex-direction:row;align-items:center}.compact-header .brand img{width:52px;height:52px}.compact-header h1{font-size:1.1rem;margin-bottom:1px}.compact-header p{font-size:.78rem;margin:0}.compact-header .status{font-size:.72rem;padding:6px 8px}.control-grid{grid-template-columns:1fr}.control-grid>.wide{grid-column:1}.operational .control-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.operational .control-grid>.wide{grid-column:1/-1}.operational .card{padding:10px}.operational .session-card{grid-template-columns:1fr 1fr}.operational .session-card .location-code{font-size:1.7rem;letter-spacing:.08em}.operational .session-card .phase{font-size:1rem}.operational .session-actions{display:none}.operational .timer-card{position:sticky;top:0;padding:9px 12px;box-shadow:0 8px 22px rgba(0,0,0,.45)}.operational .timer{font-size:clamp(4.2rem,23vw,6rem);line-height:.8}.operational .timer-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.operational .fighter-card h2{min-height:2.2em;font-size:1rem;margin-bottom:4px;overflow:hidden}.operational .checkin,.operational .fighter-card>.label{display:none}.operational .score{font-size:4.6rem;line-height:1}.operational .score-actions{grid-template-columns:1fr 54px}.operational .plus{min-height:108px;font-size:2.4rem}.operational .minus{min-height:52px;padding:6px}.operational .clear-checkin{display:none}.setup-grid{grid-template-columns:1fr}.session-actions{grid-template-columns:1fr}.session-card{grid-template-columns:1fr}.session-card .location-code{text-align:center}}

/* GRPL Web Scoreboard v2.2 controller */
.controller-page{text-transform:uppercase}.controller-page input,.controller-page select{text-transform:uppercase}.preset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.preset-card{position:relative;display:grid;align-content:start;gap:8px;min-height:190px;padding:16px;border:2px solid var(--line);border-radius:14px;background:#171d28;color:var(--muted);cursor:pointer}.preset-card:hover,.preset-card.selected{border-color:var(--orange);background:#211c1b}.preset-card input{position:absolute;right:13px;top:13px;width:22px;min-height:22px;accent-color:var(--orange)}.preset-card .preset-name{padding-right:30px;color:var(--text);font-size:1.18rem;font-weight:700}.preset-card strong{align-self:end;color:var(--orange);font-size:.9rem}.custom-fields{margin-top:14px;padding:16px;border:1px solid var(--orange);border-radius:14px;background:#121722}.custom-fields h3{margin-top:0}.custom-fields .toggle+.toggle{margin-top:9px}.match-name{display:block;margin-top:4px;color:var(--text);font-size:1rem}.timer-badges{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px}.round-status{color:#fff;background:#39455b}.timeout-button{width:100%;margin-top:10px;background:#584115;border-color:#d79524}.timeout-button:disabled{opacity:.55}.operational .management-card{order:50}.operational .session-card{order:60}
@media(max-width:720px){.preset-grid{grid-template-columns:1fr}.preset-card{min-height:0}.setup-card{padding:12px}.setup-card>h2{font-size:1.35rem}.timer-heading{align-items:flex-start}.timer-badges{max-width:52%;gap:4px}.timer-badges .status,.timer-badges .phase{font-size:.68rem;padding:5px 7px}.match-name{font-size:.78rem}.operational .timeout-button{min-height:52px;padding:7px;font-size:.78rem}.operational .timer-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sponsor-admin-row{justify-content:flex-start}.sponsor-admin-row img{width:76px;height:48px;flex:0 0 auto;border-radius:6px;background:#fff;object-fit:contain}.sponsor-admin-row span{flex:1}
