@font-face {
 font-family:Anton;src:url("fonts/anton-regular.woff2") format("woff2");
 font-style:normal;font-weight:400;font-display:swap;
}
@font-face {
 font-family:"Road Rage";src:url("fonts/roadrage-regular.woff2") format("woff2");
 font-style:normal;font-weight:400;font-display:swap;
}
@font-face {
 font-family:"Barlow Condensed";src:url("fonts/barlow-condensed-800-italic.woff2") format("woff2");
 font-style:italic;font-weight:800;font-display:swap;
}
.arena-theme {
 --neon:#ffda24;--ink:#06142f;--panel:#0b2248;--line:#2a5590;--quiet:#bfdbff;
 --poster-font:"Barlow Condensed","Arial Narrow",Impact,sans-serif;
 color-scheme:dark;background:var(--ink);color:#f5faff;
}
.arena-theme .top {
 background:#071b3f;border-bottom:1px solid var(--line);
 padding-inline:max(16px,calc((100% - 1160px)/2));flex-direction:row;align-items:center;
}
.arena-theme .top .brand {font:italic 800 28px/1 var(--poster-font);letter-spacing:.04em}
.arena-theme .top .brand span {color:var(--neon)}
.arena-theme .top nav {justify-content:flex-end;gap:8px 16px}
.arena-theme .top nav a {color:#e3efff}
.arena-theme .top button.secondary {background:#133669;color:var(--neon)}
.arena-theme .wrap {max-width:1196px;margin-block:20px 42px}
.arena-theme footer,.arena-theme .muted {color:var(--quiet)}
.arena-theme :is(a,button):focus-visible {outline:2px solid #fff;outline-offset:3px}
.spectator-hero {
 position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;
 min-height:380px;border:1px solid #4479c9;
 background:radial-gradient(ellipse at 100% 0%,#164da4 0%,transparent 57%),#0a2047;
}
.spectator-hero::before {
 content:"";position:absolute;inset:0;z-index:-1;
 background:
  linear-gradient(127deg,transparent 65%,#174ac0 65%,#ffda24 72%,transparent 72%),
  linear-gradient(127deg,transparent 74%,#5ea7ff 74%,#245bd1 77%,transparent 77%),
  repeating-linear-gradient(127deg,transparent 0 18px,#5da5ff55 19px 20px,transparent 21px 31px);
 mask-image:linear-gradient(90deg,transparent 31%,#000 86%);
 opacity:.82;
}
.spectator-hero::after {
 content:"";position:absolute;z-index:-1;inset:0;
 background:linear-gradient(90deg,#071a3ff2,#071a3f96 57%,transparent 86%),
 linear-gradient(0deg,#06142f88,transparent 60%);
}
.poster-content {width:min(64%,690px);padding:clamp(26px,5vw,64px);min-width:0}
.poster-kicker {
 color:var(--neon);margin:0 0 12px;text-transform:uppercase;
 font-size:clamp(10px,1.4vw,13px);font-weight:750;letter-spacing:.19em;
}
.poster-title {
 margin:0;color:#ffffff;font:italic 800 clamp(76px,12.8vw,174px)/.84 var(--poster-font);
 text-transform:uppercase;letter-spacing:-.016em;
}
.poster-title span {color:var(--neon)}
.poster-links {
 display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;
 margin-top:clamp(20px,4vw,42px);max-width:480px;
}
.poster-link {
 display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;
 position:relative;isolation:isolate;min-height:49px;padding:8px 13px;
 background:transparent;color:#091c43;text-decoration:none;border-radius:0;
 font:italic 800 clamp(17px,2.3vw,23px)/1.03 var(--poster-font);
}
.poster-link::before {
 content:"";position:absolute;inset:0;z-index:-1;background:var(--neon);
 clip-path:polygon(0 12%,16% 7%,44% 10%,75% 3%,100% 9%,98% 35%,100% 50%,97% 63%,100% 88%,74% 92%,51% 90%,25% 97%,0 92%,2% 64%,0 50%,2% 35%);
}
.poster-link:hover::before,.poster-link.active::before {background:#ffe975}
.poster-link.active {box-shadow:inset 0 -2px var(--neon)}
.poster-link span {font:700 17px/1 Arial,sans-serif}
.spectator-section {margin:34px 0;scroll-margin-top:90px}
.spectator-section-heading {
 display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
 gap:4px 14px;border-bottom:1px solid var(--line);margin-bottom:14px;
}
.spectator-section-heading>h2,.spectator-event :is(#liveView,#scheduleView,#groupsView,#bracketView)>h2 {
 font:italic 800 clamp(32px,4vw,47px)/1 var(--poster-font);margin:0 0 10px;text-transform:uppercase;
}
.spectator-section-heading h2::before {
 content:"";display:inline-block;width:5px;height:.72em;margin-right:10px;background:var(--neon);transform:skew(-10deg);
}
.spectator-connection {margin:0 0 10px;color:var(--quiet);font-size:12px}
.arena-theme .grid {grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.arena-theme .card,.arena-theme .bracket-match {
 background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow-wrap:anywhere;
}
.arena-theme .tag {display:inline-block;background:#193e72;color:#ffe682}
.arena-theme .enabled-court {background:#173d78;color:#ffe481}
.arena-theme .tag.live {background:#2055a7;color:#edf6ff}
.arena-theme .tag.live::before {content:"";display:inline-block;width:6px;height:6px;background:#ffda24;border-radius:50%;margin-right:6px;vertical-align:2px}
.arena-theme .current-match-card {border-top:2px solid var(--neon)}
.arena-theme .current-match-card h3 {margin:0 0 10px}
.arena-theme .current-match-card>p {margin:8px 0}
.arena-theme .current-score {border-block:1px solid var(--line);padding:4px 0}
.arena-theme .current-team-score strong {
 color:var(--neon);font:italic 800 38px/1 var(--poster-font);font-variant-numeric:tabular-nums;
}
.arena-theme .btn {background:var(--neon);color:#071938;border-radius:6px}
.arena-theme .btn.secondary {background:#102e5a;color:#edf6ff;border:1px solid #365d9b}
.arena-theme .notice {background:#173868;color:#ffe682}
.arena-theme dialog {background:var(--panel);color:#f5faff;border-color:var(--line)}
.arena-theme dialog button {background:var(--neon);color:#071938}
.arena-theme .spectator-back {margin:0 0 12px;font-size:14px}
.arena-theme .spectator-back a {color:var(--neon)}
.event-poster {min-height:350px}
.event-poster .poster-content {width:min(72%,760px)}
.event-poster .poster-title {font-size:clamp(45px,7.3vw,94px);line-height:.91;overflow-wrap:anywhere}
.poster-event-image {position:absolute;z-index:-2;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.event-poster:has(.poster-event-image:not([hidden]))::before {display:none}
.poster-event-brand {display:flex;align-items:center;gap:10px;margin-bottom:12px}
.poster-event-logo {width:46px;height:46px;object-fit:contain;background:#0a2145;border-radius:5px}
.poster-meta {margin:10px 0 0;color:#dceaff}
.poster-meta:empty {display:none}
.event-poster-links {margin-top:22px}
.spectator-event-resources {display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:14px 0}
.spectator-event-resources .public-links {margin:0}
.spectator-event :is(#liveView,#scheduleView,#groupsView,#bracketView) {scroll-margin-top:85px}
.spectator-event label,.spectator-event .bracket-round>h3 {color:var(--quiet)}
.spectator-event :is(input,select) {background:#0a2147;border-color:#3e649e}
.spectator-event :is(td,th,.court-match) {border-color:var(--line)}
.spectator-event .court-live-score,.spectator-event .bracket-winner {color:var(--neon)}
@media(max-width:650px) {
 .arena-theme .wrap {margin-top:12px}
 .arena-theme .top .brand {font-size:24px}
 .arena-theme .top nav {font-size:13px;gap:6px 10px}
 .arena-theme .top .install-button {min-height:36px;padding:6px 9px;font-size:12px}
 .spectator-hero {min-height:270px}
 .spectator-hero::before {mask-image:linear-gradient(90deg,transparent 43%,#000 100%);opacity:.54}
 .spectator-hero::after {background:linear-gradient(90deg,#061939c9,#06193936 86%)}
 .poster-content,.event-poster .poster-content {width:100%;padding:20px}
 .home-poster .poster-title {font-size:clamp(63px,17vw,106px)}
 .poster-links {margin-top:18px;gap:7px}
 .poster-link {min-height:46px;padding:7px 10px}
 .poster-link span {font-size:14px}
 .event-poster {min-height:285px}
 .spectator-section {margin:26px 0}
}

/* Administration and rules use the same palette as the public dashboard. */
.arena-theme .admin-hero {min-height:160px;margin-bottom:20px}
.admin-hero .poster-content {width:100%;padding:clamp(20px,4vw,40px)}
.admin-hero .poster-title {font-size:clamp(40px,7vw,78px);line-height:.94;overflow-wrap:anywhere}
.admin-page :is(h2,h3) {color:#f3f8ff}
.admin-hero {background:#0a2049 url("spectator/volleyball-spike.webp") center 48% / cover no-repeat}
.admin-hero::before {
 background:linear-gradient(90deg,#071a3e 8%,#0b2855d9 54%,#12387458);
 mask-image:none;opacity:1;
}
.admin-hero::after {background:linear-gradient(0deg,#06142fa8,transparent 68%)}
.admin-hero .poster-content {padding-block:clamp(26px,5vw,52px)}
.admin-page .event-tabs a {background:#102e5a;color:#edf6ff;border:1px solid var(--line)}
.admin-page .event-tabs a.active,.admin-page button:not(.secondary):not(.danger) {background:var(--neon);color:#071938}
.admin-page button.secondary {background:#102e5a;color:#edf6ff}
.admin-page :is(input,select,textarea) {background:#081e44;color:#f3f8ff;border-color:#3e649e}
.admin-page :is(label,summary) {color:#daeaff}
.admin-page :is(th,td) {border-color:var(--line)}
.admin-page .form-error {color:#ffbcba}
.arena-theme .card a:not(.btn) {color:#ffde5b}
.rules-content {max-width:860px;margin:18px auto}
.rules-content .rules-copy {white-space:pre-wrap;line-height:1.65;overflow-wrap:anywhere}

.spectator-stage {
 position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;
 min-height:clamp(470px,55vw,670px);overflow:hidden;border:1px solid #386db8;border-radius:12px;
 background:#071e46 url("spectator/volleyball-spike.webp") 58% center / cover no-repeat;
}
.stage-video {position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:62% center}
.spectator-stage::after {
 content:"";position:absolute;inset:0;z-index:-1;
 background:linear-gradient(0deg,#06142f 0%,#102e67c9 25%,transparent 65%),
 linear-gradient(90deg,#102e67c9,transparent 76%);pointer-events:none;
}
.stage-heading {margin:auto 0 4px;padding:clamp(24px,5vw,64px) clamp(18px,5vw,62px) 0}
.stage-heading .poster-title {font-size:clamp(64px,11vw,150px)}
.stage-heading .poster-kicker {color:#ffe682}
.stage-motion {
 position:absolute;top:14px;right:14px;background:#071a3ed9;color:#fff;
 border:1px solid #ffffff52;padding:7px 11px;font-size:12px;min-height:34px;
}
.stage-navigation {padding:0 clamp(10px,2vw,26px) 15px}
.stage-arrows {display:flex;justify-content:flex-end;gap:7px;margin:0 8px}
.stage-arrows button {
 display:grid;place-items:center;width:34px;height:34px;padding:0;background:#0a2754;
 border:1px solid #ffffff5c;border-radius:50%;color:#fff;font:24px/1 Arial,sans-serif;
}
.stage-arrows button:not(:disabled):hover {border-color:var(--neon);background:#214983}
.stage-arrows button:disabled {opacity:.32;cursor:default}
.stage-track {
 display:flex;gap:clamp(10px,1.5vw,18px);overflow-x:auto;padding:16px 9px 18px;
 scroll-snap-type:x mandatory;scroll-padding-inline:9px;scrollbar-width:thin;scrollbar-color:#4d77b5 transparent;
}
.stage-card {
 position:relative;isolation:isolate;flex:0 0 clamp(156px,20vw,242px);aspect-ratio:1.32;
 border:1px solid #6ba1ed99;border-radius:10px;overflow:hidden;scroll-snap-align:start;
 color:#fff;text-decoration:none;background:#0d2b5d;box-shadow:0 8px 18px #0008;
 transition:transform .19s ease,border-color .19s ease;
}
.stage-card img {display:block;width:100%;height:100%;object-fit:cover;object-position:center 45%}
.stage-card::after {
 content:"";position:absolute;inset:0;
 background:linear-gradient(0deg,#000c 0%,#0006 22%,transparent 48%);
}
.stage-card-label {
 position:absolute;z-index:1;inset:auto 11px 10px;display:flex;align-items:end;justify-content:space-between;gap:6px;
 font:italic 800 clamp(17px,2vw,23px)/1.05 var(--poster-font);
}
.stage-card-label span {font:15px/1 Arial,sans-serif;color:#ffde5b}
.stage-card:focus-visible {outline-offset:-3px;z-index:2;border-color:var(--neon)}
@media(hover:hover) and (pointer:fine) {
 .stage-card:hover {transform:scale(1.07);z-index:2;border-color:var(--neon)}
}
@media(max-width:600px) {
 .spectator-stage {min-height:455px}
 .stage-video {object-position:58% center}
 .stage-heading {padding:28px 13px 0}
 .stage-heading .poster-title {font-size:clamp(55px,15vw,88px)}
 .stage-navigation {padding-inline:4px}
 .stage-card {flex-basis:clamp(150px,47vw,208px)}
}
@media(prefers-reduced-motion:reduce) {
 .stage-card {transition:none}
 .stage-card:hover {transform:none}
}

.spectator-home footer {display:none}
.arena-theme.spectator-home {display:flex;flex-direction:column;padding-bottom:0}
.arena-theme.spectator-home .wrap {display:flex;flex:1;max-width:none;margin:0;padding:0;width:100%}
.spectator-home .spectator-stage {
 width:100%;min-height:0;border:0;border-radius:0;justify-content:flex-end;
 background:#071e46 url("spectator/volleyball-spike.webp") 58% center / cover no-repeat;
}
.spectator-home .spectator-stage::after {
 background:linear-gradient(0deg,#0009 0%,transparent 26%);
}
.spectator-home .stage-heading {margin:auto auto;text-align:center;padding:42px 18px 12px;width:min(100%,1100px)}
.spectator-home .stage-heading .poster-title {
 font-size:clamp(30px,6.4vw,96px);line-height:.94;overflow-wrap:anywhere;text-wrap:balance;
 text-shadow:0 4px 28px #04132b;
}
.spectator-home .stage-heading .stage-event-title {
 font-family:Anton,Impact,sans-serif;font-style:normal;font-weight:400;
 font-size:clamp(23px,min(9.2vw,15dvh),120px);line-height:1;
 letter-spacing:-.035em;text-shadow:none;
 filter:drop-shadow(3px 5px 0 #071533) drop-shadow(0 6px 16px #04132be0);
}
.stage-event-title .stage-event-intro {
 display:block;margin-bottom:.62em;color:#f4f9ff;
 font-size:.29em;letter-spacing:.16em;
}
.stage-event-title .stage-event-main,
.stage-event-title .stage-event-category {
 display:block;color:var(--title-ink);white-space:nowrap;
}
.stage-event-title .stage-event-main {--title-ink:#f4f9ff}
.stage-event-title .stage-event-category {
 --title-ink:var(--neon);margin-top:.18em;font-size:.56em;letter-spacing:.008em;
}
.stage-event-category b {font-weight:inherit}
@supports (background-clip:text) {
 .stage-event-title .stage-event-main,
 .stage-event-title .stage-event-category {
  background:var(--title-ink) url("spectator/title-distress.webp")
   center / clamp(280px,72vw,800px) 100% repeat-x;
  background-clip:text;color:transparent;
 }
}
.spectator-home .stage-heading .stage-poster-title {
 width:fit-content;max-width:100%;margin-inline:auto;
 font-size:clamp(38px,min(13vw,16.8dvh),139px);line-height:.91;
 letter-spacing:-.012em;transform:rotate(-5deg) skewX(-7deg);
}
.stage-poster-title .stage-event-intro {
 margin:0 0 .45em;text-align:left;
 font:normal 800 .22em/.98 var(--poster-font);letter-spacing:.19em;
}
.stage-poster-title .stage-event-main {padding-inline:.05em .1em}
.stage-poster-title .stage-event-category {
 margin-top:.09em;padding-inline:.06em .1em;font-size:.85em;letter-spacing:-.013em;
}
.stage-poster-title .stage-event-year {
 display:block;margin:-.04em .05em -.04em 0;padding-right:.13em;
 color:var(--neon);text-align:right;
 font:400 1.05em/.72 "Road Rage",Anton,Impact,sans-serif;
 letter-spacing:.015em;transform:skewX(-5deg);
}
.stage-organiser {
 display:grid;justify-items:center;gap:4px;margin:clamp(15px,3dvh,26px) auto 0;
 color:#edf6ff;line-height:1.02;text-shadow:0 2px 10px #040f28;
}
.stage-organiser-label {
 display:flex;align-items:center;gap:9px;
 font:700 clamp(9px,1.45vw,12px)/1 Arial,sans-serif;
 text-transform:uppercase;letter-spacing:.27em;
}
.stage-organiser-label::before,.stage-organiser-label::after {
 content:"";width:clamp(16px,4vw,40px);height:1px;
 background:linear-gradient(90deg,transparent,var(--neon));
}
.stage-organiser-label::after {transform:scaleX(-1)}
.stage-organiser strong {
 font:italic 800 clamp(18px,3vw,29px)/1.04 var(--poster-font);
 letter-spacing:.045em;
}
.stage-organiser-acronym {color:#ffdf45;white-space:nowrap}
.spectator-home .stage-navigation {position:relative;width:min(100%,1440px);margin:0 auto;padding:0 12px max(12px,env(safe-area-inset-bottom))}
.spectator-home .stage-track {padding:16px 12px;scroll-padding-inline:12px;scrollbar-width:none}
.spectator-home .stage-track::-webkit-scrollbar {display:none}
.spectator-home .stage-card {flex-basis:clamp(156px,23vw,300px);aspect-ratio:1.68}
.spectator-home .stage-arrows {
 position:absolute;z-index:5;inset:0 7px max(12px,env(safe-area-inset-bottom));
 align-items:center;justify-content:space-between;margin:0;pointer-events:none;
}
.spectator-home .stage-arrows button {
 pointer-events:auto;border-radius:9px;width:40px;height:48px;
 background:#0b2148ea;border-color:#ffffff33;
}
.spectator-home .stage-arrows button:disabled {opacity:.42}
.spectator-page .spectator-back .btn {min-height:44px}
@media(max-height:500px) and (orientation:landscape) {
 .spectator-home .stage-heading {padding:34px 16px 0}
 .spectator-home .stage-heading .poster-title {font-size:clamp(24px,6.5dvh,42px)}
 .spectator-home .stage-heading .stage-event-title {font-size:clamp(24px,12dvh,68px)}
 .spectator-home .stage-heading .stage-poster-title {font-size:clamp(31px,11.1dvh,59px)}
 .stage-organiser {margin-top:10px}
 .stage-organiser strong {font-size:18px}
 .spectator-home .stage-card {flex-basis:clamp(128px,21vw,168px)}
}
@media(max-width:600px) {
 .spectator-home .stage-card {flex-basis:clamp(150px,54vw,215px)}
 .spectator-home .stage-navigation {padding-inline:5px}
}

/* Spectator pages use the matching dashboard card illustration. */
.spectator-card-hero {
 --card-art:none;
 min-height:clamp(178px,28vw,285px);margin-bottom:18px;border-radius:12px;
 border-color:#609dff88;background:#0a1e46;
}
.spectator-card-hero[data-card-art="scores"] {--card-art:url("spectator/scores-blue-yellow.webp")}
.spectator-card-hero[data-card-art="schedule"] {--card-art:url("spectator/schedule-blue-yellow.webp")}
.spectator-card-hero[data-card-art="rules"] {--card-art:url("spectator/rules-blue-yellow.webp")}
.spectator-card-hero[data-card-art="teams"] {--card-art:url("spectator/teams-blue-yellow.webp")}
.spectator-card-hero[data-card-art="watch"] {--card-art:url("spectator/watch-blue-yellow.webp")}
.spectator-card-hero[data-card-art="chat"] {--card-art:url("spectator/chat.webp")}
.spectator-card-hero::before {
 background:linear-gradient(90deg,#071a3e 12%,#091f45e8 48%,#0b307866 100%),
 var(--card-art) right 43% / min(58%,530px) auto no-repeat;
}
.spectator-card-hero .poster-title {font-size:clamp(37px,7vw,83px)}
.spectator-card-hero.event-poster .poster-title {font-size:clamp(32px,6vw,73px)}
.spectator-card-hero .poster-content {padding:clamp(24px,4vw,48px)}

/* Carry the home poster lettering through the dashboard views. */
.arena-theme :is(.admin-hero,.spectator-card-hero) .poster-title {
 --title-ink:#f4f9ff;
 width:fit-content;max-width:100%;
 font-family:Anton,Impact,sans-serif;font-style:normal;font-weight:400;
 line-height:1.1;letter-spacing:-.012em;text-wrap:balance;overflow-wrap:anywhere;
 transform:rotate(-2deg) skewX(-6deg);transform-origin:left center;
 filter:drop-shadow(2px 3px 0 #071533);
}
.arena-theme :is(.admin-hero,.spectator-card-hero) .poster-title span {--title-ink:var(--neon)}
@supports (background-clip:text) {
 .arena-theme :is(.admin-hero,.spectator-card-hero) .poster-title,
 .arena-theme :is(.admin-hero,.spectator-card-hero) .poster-title span {
  background:var(--title-ink) url("spectator/title-distress.webp") center / 420px 100% repeat-x;
  background-clip:text;color:transparent;
 }
}
.arena-theme :is(.wrap h2,.wrap h3,.card > summary) {
 font-family:var(--poster-font);font-style:italic;font-weight:800;line-height:1.15;
}
.arena-theme .card > summary {font-size:clamp(19px,3vw,24px);color:#f4f9ff}
.arena-theme .current-match-card .sets,.arena-theme .court-live-score {color:#ffe066}
.arena-theme :is(.event-tabs a,.event-tabs button) {background:#102e5a;color:#edf6ff;border:1px solid var(--line)}
.arena-theme .event-tabs .active {background:var(--neon);color:#071938}
.arena-theme :is(.card th,.card td,.recent-actions li) {border-color:var(--line)}
.arena-theme .card thead th {background:#193c77;color:#ffe481}
.arena-theme .top nav {flex-wrap:wrap}

.viewer-page .scoreboard .names {
 grid-template-columns:repeat(2,minmax(0,1fr));
 font:italic 800 clamp(20px,4vw,36px)/1.15 var(--poster-font);
}
.viewer-page .scoreboard .big {
 grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
 font:400 clamp(42px,10vw,104px)/1.15 Anton,Impact,sans-serif;
}
.viewer-page .scoreboard .big [data-team="B"],
.viewer-page :is(.scoreboard .sets,.scoreboard .winner) {color:#ffe066}
.viewer-page .scoreboard .big [data-digits] {overflow-wrap:anywhere}
.viewer-page :is(.court-panel-heading,.court-timeout-summary) {color:var(--quiet)}
.viewer-page .score-toolbar button.secondary {background:#102e5a;color:#edf6ff;border:1px solid #365d9b}
.viewer-page #publicScoreLink {background:#081e44;color:#f3f8ff;border-color:#3e649e}

@media(max-width:650px) {
 .arena-theme :is(.admin-hero,.spectator-card-hero) .poster-title {
  font-size:clamp(28px,8.4vw,52px);
 }
 .arena-theme .top {align-items:flex-start}
 .arena-theme .top .brand {margin-block:4px}
}
.spectator-page .floating-dashboard {
 position:fixed;z-index:9;right:max(14px,env(safe-area-inset-right));
 bottom:max(14px,env(safe-area-inset-bottom));margin:0;
}
.spectator-page .floating-dashboard .btn {
 display:inline-flex;align-items:center;min-height:48px;padding:10px 17px;
 border:1px solid #ffe876;border-radius:999px;background:var(--neon);color:#071938;
 box-shadow:0 6px 24px #000b;font-weight:850;
}
.spectator-page:has(.floating-dashboard) footer {padding-bottom:82px}
.rules-actions {display:flex;flex-wrap:wrap;gap:10px;margin-bottom:22px}
.rules-actions .btn {min-height:44px}
.rules-section {padding:16px 0;border-top:1px solid var(--line)}
.rules-section h2 {color:#ffe26c;font:italic 800 clamp(22px,4vw,31px)/1.1 var(--poster-font)}
.rules-section p {line-height:1.62;overflow-wrap:anywhere}
.team-rosters,.roster-admin {display:grid;gap:12px;margin:14px 0}
.arena-theme .team-roster {border-left:3px solid var(--neon)}
.team-roster>summary {cursor:pointer;padding:5px 0;color:#eff7ff;font-weight:800}
.team-roster>summary>span:first-child {font:italic 800 25px/1 var(--poster-font)}
.team-group {display:inline-block;margin-left:10px;color:var(--quiet);font-size:12px}
.team-roster-body h3 {margin:18px 0 8px}
.roster-table {table-layout:fixed;overflow-wrap:anywhere}
.roster-table th,.roster-table td {padding:9px 7px;border-color:var(--line);font-size:clamp(11px,2.8vw,15px)}
.roster-table thead th,.schedule-example thead th {background:#183a75;color:#edf5ff}
.roster-table tbody th:first-child {width:24%}
.roster-slot {color:#ffe066;white-space:nowrap}
.roster-form fieldset {margin:12px 0;border:1px solid var(--line);border-radius:8px;min-width:0}
.roster-form-row {display:grid;grid-template-columns:minmax(0,2fr) minmax(65px,.65fr) auto minmax(0,1.4fr);gap:8px;align-items:center}
.roster-check input {width:auto}
.schedule-example .table-scroll,.spectator-page .table-scroll {overflow-x:auto}
.schedule-example small {display:block;color:var(--quiet)}
.schedule-example .tag {display:inline-block}
@media(max-width:570px) {
 .roster-form-row {grid-template-columns:1fr 1fr}
 .roster-form-row label:first-child,.roster-form-row label:last-child {grid-column:1/-1}
 .team-roster {padding:12px}
 .schedule-example :is(td,th) {padding:7px 5px;font-size:12px}
}

.result-section {margin:24px 0 32px}
.result-section h2,#bracketView h2 {
 color:#f3f8ff;font:italic 800 clamp(27px,4vw,42px)/1 var(--poster-font);
}
.results-table {padding:0;overflow:hidden}
.results-table.table-scroll {overflow-x:auto}
.results-table table {min-width:590px;border-collapse:collapse}
#resultsView .results-table th,#resultsView .results-table td {
 padding:8px 10px;border:1px solid #315b96;text-align:center;font-size:14px;
}
#resultsView .results-table :is(th,td):first-child {border-left:0}
#resultsView .results-table :is(th,td):last-child {border-right:0}
#resultsView .result-placeholder-row {color:var(--quiet)}
#resultsView .result-placeholder-row small {color:#ffe481}
.results-table thead th {background:#193c77;color:#ffe481}
.results-table tbody th {color:#f5f9ff}
.results-table tbody tr:nth-child(even) {background:#102e5a}
.results-table tbody tr.result-live-row {background:#214d91}
.results-table small {display:block;color:var(--quiet)}
.results-table .matrix-diagonal {background:#071936;color:transparent}
.group-matrix {margin:12px 0}
.group-matrix h3,.group-matrix>p {padding:10px 14px;margin:0}
.group-matrix th:first-child {text-align:left}
.bracket-board {display:block}
.bracket-layout {
 display:flex;position:relative;isolation:isolate;gap:38px;width:max-content;padding:0 5px;
}
.bracket-paths {
 position:absolute;inset:0;z-index:-1;width:100%;height:100%;overflow:visible;pointer-events:none;
 fill:none;stroke:#ffdc4f;stroke-width:2;
}
.bracket-loser-path {stroke-dasharray:5 4}
.bracket-layout .bracket-round {width:208px;min-width:208px;gap:14px}
.bracket-layout .bracket-round>h3 {margin:0}
.bracket-layout .bracket-match {border-color:#5686cc;padding:10px}
.bracket-layout .bracket-match>small {display:block;margin-top:6px}
.bracket-layout .bracket-match a {color:#ffe26d}
.bracket-layout .bracket-team {
 display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0;
 padding:5px 7px;background:#153766;border-radius:5px;
}
.bracket-layout .bracket-winner {color:#ffde61;background:#214780}
@media(max-width:570px) {
 .results-table th,.results-table td {padding:7px 8px;font-size:12px}
 .bracket-layout .bracket-round {width:182px;min-width:182px}
}

.final-placements {max-width:490px;margin:12px 0 24px}
.final-placements dl {display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,1.4fr);gap:6px 12px;margin-bottom:0}
.final-placements dd {margin:0;color:#ffe269;font-weight:750;overflow-wrap:anywhere}

.admin-tournament-list {display:grid;gap:10px}
.admin-tournament {display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 18px}
.admin-tournament > div:first-child {flex:1 1 270px}
.admin-tournament h3 {margin-bottom:4px;font-size:clamp(19px,3vw,25px)}
.admin-tournament p {margin:0}
.admin-tournament-actions {display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.admin-tournament-actions form {margin:0}
.admin-tournament-actions :is(.btn,button) {min-height:44px}
.sign-in-card {max-width:480px;margin:clamp(22px,7vw,84px) auto;padding:clamp(14px,4vw,24px)}
.sign-in-card .sign-in-hero {min-height:120px;border-radius:8px;margin-bottom:20px}
.sign-in-card .sign-in-hero .poster-title {font-size:clamp(30px,7vw,48px)}
.sign-in-card .stay-signed-in {display:flex;align-items:center;gap:9px;margin:3px 0 18px}
.sign-in-card .stay-signed-in input {width:18px;height:18px;margin:0;accent-color:var(--neon)}
.sign-in-card button[type=submit] {min-height:44px;width:100%}

.manage-section {margin-top:20px}
.manage-inline {display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.manage-inline input:not([type=checkbox]),.manage-inline select {margin-bottom:0}
.manage-inline label {flex:0 1 230px}
.manage-inline button {min-height:44px}
.admin-bracket-layout .bracket-round {width:244px;min-width:244px;justify-content:flex-start}
.admin-bracket-matches {flex:1;display:flex;flex-direction:column;justify-content:space-around;gap:16px}
.admin-bracket-layout .bracket-match h4 {margin:0 0 8px}
.admin-bracket-layout .bracket-match summary {font-size:13px}
.admin-bracket-layout .bracket-match form button {width:100%}
