/* Local red / blue / black preview. Remove this stylesheet link to restore the green theme. */
:root {
  color-scheme: dark;
  --ink: #f4f7ff;
  --panel: #0d1423;
  --green: #ff536b;
  --cyan: #48baff;
  --lime: #ff536b;
  --text: #f4f7ff;
  --muted: #aab9d2;
  --line: #35425b;
  background: #060914;
}
body,
body.spinx-site,
body.scoreboard-page,
.display { background-color: #060914; color: #f4f7ff; }
body.spinx-site { --ink: #060914; }
.wireframe-stage { --wireframe-red: 255,76,111; --wireframe-blue: 81,183,255; }
::selection { background: #ff536b; color: #fff; }
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible { outline-color: #55bdff; }
input[type=checkbox], input[type=range] { accent-color: #ff536b; }

/* Public landing page and competition details */
.tech-field { background: radial-gradient(ellipse at 14% 35%,#a5234940,transparent 48%),radial-gradient(ellipse at 88% 60%,#175ba352,transparent 54%),#060914; }
.tech-field:before { background-image: linear-gradient(#5487c414 1px,transparent 1px),linear-gradient(90deg,#5487c414 1px,transparent 1px); }
.tech-field:after { background: radial-gradient(ellipse at 47% 47%,#ed375021,transparent 58%); }
.site-header, .event-section, footer { border-color: #fa5c7b35; }
.site-header nav a:hover, .site-header nav .active { color: #5bc4ff; }
.staff-link, .scoreboard-cta, .venue-timetable-cta { border-color: #579fe282; color: #dcefff; background: #111d33; }
.staff-link:hover, .scoreboard-cta:hover, .venue-timetable-cta:hover { border-color: #ff617b; background: #3a1d32; }
.staff-link span, .eyebrow, .hero h1 em, .event-info b { color: #ff617b; }
.hero h1 em { text-shadow: 0 0 42px #f1395555; }
.lime-button { background: #f54964; color: #fff; border: 1px solid #ff8fa1; box-shadow: 0 0 26px #ed375044; }
.lime-button:hover { box-shadow: 0 0 35px #ed37508c; }
.hero-mark.wireframe-stage { filter: drop-shadow(0 0 15px #398eff5c); }
.hero-mark.wireframe-stage:after { color: #91cfff; }
.mark-core { color: #ff617b; text-shadow: 8px 5px 0 #611d39,-6px -2px 0 #4cafff8c,0 0 80px #ff46673d; }
.orbit { border-color: #ff5b7766; border-top-color: #ff617b; border-bottom-color: #58bbff; }
.event-card, .public-group, .empty-event, .live-empty { border-color: #5377b86e; background: linear-gradient(150deg,#131e33,#090e1b); }
.event-card:hover { border-color: #ff637e; }
.poster, .poster-placeholder { background: #0d1322; }
.poster-placeholder { background-image: repeating-linear-gradient(135deg,transparent 0 35px,#ff536b16 36px 37px),radial-gradient(ellipse at 50% 30%,#193d74,#090e1b 70%); }
.poster-placeholder>span, .live-pulse { color: #ff8295; }
.live-pulse { border-color: #ff617b87; background: #1e0d1de0; }
.live-pulse:before { background: #ff617b; }
.event-info p, .hero-mark:after { color: #72caff; }
.event-card-actions a { border-color: #5bbdff85; color: #e1f2ff; }
.event-card-actions a:last-child { color: #ff9dad; border-color: #ff6c8680; }
.event-detail-poster, .event-table-scroll, .event-table-scroll td,
#event-preview, #event-link-tools:not([hidden]), #event-table-tools:not([hidden]) { border-color: #5b7caf; }
.event-description .event-link-button { background: #5c2435; color: #fff; border-color: #ff6b83; }
.event-table-scroll th { background: #172b4b; color: #d6eaff; }
.event-table-scroll td { background: #0d1525; }
.status-open { color: #83cbff; }
.status-progress { color: #ff758c; }
.application-page .brand.spinx-brand { display: inline-flex; }
.application-page .brand.spinx-brand img { width: min(220px,60vw); height: auto; max-height: 110px; object-fit: contain; }

/* Public live group cards and knockout chart */
.public-group { box-shadow: 0 12px 35px #0009,0 0 18px #307bd322; }
.public-group-head { background: linear-gradient(100deg,#3c1930,#142e53); border-bottom-color: #5f9fea73; }
.public-group-head p, .public-standings .qualified-row td:nth-child(2) { color: #ffe9ed; }
.public-group-head span { color: #91d5ff; border-color: #5fafffa1; }
.public-standings th { color: #9ec9f6; border-bottom-color: #617da562; }
.public-standings td, .public-fixture { border-color: #4e63804d; color: #e4edff; }
.public-standings b { color: #86caff; }
.public-standings .qualified-row { background: #e73e642b; }
.public-qualifier { background: #371b36; border-color: #ff6782; color: #fff; }
.public-qualifier span { color: #ff9bac; }
.fixtures-heading { color: #9fc4ed; }
.fixture-side { background: #0a1325; border-color: #547db253; color: #eef5ff; }
.fixture-side.winner { background: #182e52; border-color: #55baff; color: #fff; }
.fixture-side.winner .fixture-score { color: #80cfff; }
.fixture-side.loser { background: #373d48; border-color: #7d879a; color: #f4f5f8; }
.fixture-side.loser .fixture-score { color: #ff8498; }
.fixture-row>i { color: #ff7690; }
.public-fixture.live-battle { border-color: #ff9753; background: #3b2221; }
.public-match, .tree-node .public-match { background: linear-gradient(140deg,#141d34,#0d1425); border-color: #5897d7; box-shadow: 0 8px 24px #000a,0 0 14px #568efb35; }
.live-slot { background: #101c32; border-color: #4e77b277; }
.live-slot.winner { background: #2d2648; border-color: #69baff; color: #f7faff; animation: versus-blue-glow 4s ease-in-out infinite; }
.live-slot.winner b { color: #84cbff; }
.live-slot.loser { background: #363d48; border-color: #758092; color: #f3f5fa; }
.live-slot.loser b { color: #ff8295; }
.public-round:last-child .public-match, .tree-final .public-match { background: linear-gradient(135deg,#341828,#122f56); border-color: #ff5d7d; box-shadow: 0 0 30px #f93f6450; }
.tree-crown span { color: #ff9cae; text-shadow: 0 0 28px #ff436baa; }
.tree-lines { stroke: #5eb6ff; filter: drop-shadow(0 0 5px #50b6ff80); }
.tree-lines .decided { stroke: #ff6c8a; }
.tree-lines .placement-connection{stroke:#699ed7;stroke-width:2;stroke-dasharray:8 6}
.tree-lines .placement-connection.decided{stroke:#a1d7ff;stroke-width:2.5}
.bracket.rising-bracket { background: radial-gradient(ellipse at 50% 0,#ee436338,transparent 55%); }

/* Host portal, forms, and staff controls */
.sidebar, .host-menu, .host-menu .sidebar { background: #0b1120; border-color: #3b4d72; }
.topbar, body:not(.expanded) .topbar, .host-bottom-nav { background: #10182af5; border-color: #42567a; }
.panel, .stat, .group-card, dialog { background: #121c30; border-color: #3d5378; }
.bracket-scroll, .display .bracket-scroll { background-color: #0a1222; background-image: radial-gradient(#41669238 .8px,transparent .8px); }
.match, .display .match { background: #16233b; border-color: #4c6e9f; }
.slot+.slot, td, th { border-color: #394e71; }
.slot.winner, .display .slot.winner { background: linear-gradient(100deg,#381f38,#233a64); color: #fff; box-shadow: inset 3px 0 #ff5e7c; }
.slot.winner .slot-score, .display .slot.winner .slot-score { color: #89d0ff; }
.slot.loser, .display .slot.loser { background: #343a46; color: #eef1f6; }
.slot button, button:not(.primary):not(.danger) { background-color: #1a2b48; border-color: #5a78a7; color: #f0f6ff; }
button:not(.primary):not(.danger):hover { background-color: #263d65; border-color: #76bdff; }
.primary, .primary:hover, .nav a.active, #language-switch button[aria-pressed=true],
#public-language-switch button[aria-pressed=true] { background: #ec4965; border-color: #ff8096; color: #fff; box-shadow: 0 0 18px #ec49653b; }
.nav a:hover { background: #203254; }
.badge, .topbar .badge, .current-tag, .field-number,
.group-card h2, .group-player b, .group-player .score-win,
.group-layout-controls output, .bulk-import>summary, .bulk-import .bulk-count { color: #ff8298; }
.badge { background: #482337; }
.stat-icon, .avatar, .player-icon { background: #1e355c; color: #83cfff; border-color: #5474a4; }
.competition-card { border-top-color: #ff5c7a; }
.share-panel { border-top-color: #5dbbff; }
.vs, .display .vs, .edit-result { color: #ff6e87; }
.connections, .display .connections { stroke: #6cbcff; filter: drop-shadow(0 0 4px #5cb8ff88); }
.crown, .display .crown { background: #ed4c68; border-color: #ff98a9; color: #fff; box-shadow: 0 0 24px #fa496a70; }
.display .crown:before { border-color: #ff6888a8; }
.display .crown:after { border-top-color: #ff6480; border-bottom-color: #62c0ff; }
.tree-node .match, .display .final>.match { background: linear-gradient(145deg,#1c2442,#29172c); border-color: #f56a88; box-shadow: 0 0 28px #ee426550; }
.tree-node.tree-placement .match{border-color:#79c5ff;background:linear-gradient(140deg,#142a49,#0b1428);box-shadow:0 0 22px #469aff25}
.display .final>.match:before { background: linear-gradient(90deg,#f34b68,#5cbaff); box-shadow: 0 0 14px #f35b7e; }
.display .final .slot { background: linear-gradient(110deg,#121c32,#1b3857); border-color: #63b8ff; }
.display .final .slot.winner { background: linear-gradient(110deg,#3b1d35,#263d64); border-color: #ff718b; }
.group-winner, .group-qualifier { background: linear-gradient(115deg,#361a31,#1b355d); border-color: #ff6b87; box-shadow: inset 3px 0 #ff6886,0 0 15px #e9497040; color: #fff; }
.group-qualifier span { color: #ff95a8; }
.group-display .group-grid { background: radial-gradient(#5177ad32 1px,transparent 1px) #0c1424; border-color: #4b6a9b; }
.group-display .group-card { background: #111d31ed; border-color: #5a78a8; }
.group-broadcast-title h2 { color: #ffa6b5; }
.host-bottom-nav a[aria-current] { color: #ff849b; background: #e94b6928; }
.host-bottom-nav a:hover { color: #8dd0ff; }
.display .round-title, .display .champion strong { color: #b9daff; text-shadow: 0 0 18px #54b5ff55; }
.display #arena-motion[aria-pressed=true] { color: #ff839a; border-color: #ff839a; }
.group-winner:after, .group-qualifier:after, .display .slot.winner:after { background: linear-gradient(110deg,transparent 30%,#ff5b793e 50%,transparent 70%); }
.arena-effects { background: radial-gradient(ellipse at 50% 40%,#9427483b,transparent 65%),repeating-linear-gradient(0deg,transparent 0 59px,#5889da13 60px),repeating-linear-gradient(90deg,transparent 0 59px,#5889da13 60px); }
.energy-orbit { border-color: #ed587a40; background: repeating-conic-gradient(from 0deg,transparent 0deg 28deg,#558fe638 29deg 30deg,transparent 31deg 45deg); }
.orbit-two { border-color: #5eafff55; }
.energy-rail { background-image: repeating-linear-gradient(120deg,transparent 0 180px,#f0537224 190px,transparent 205px,#468ce62a 220px,transparent 240px); }
.display .bracket-scroll:before { background-image: repeating-linear-gradient(120deg,transparent 0 118px,#ff5f791c 120px,#66baff24 123px,transparent 130px 240px); }
.roster-toggle, .host-roster tr, .group-layout-controls output { background: #111e34; border-color: #43618d; }
.roster-toggle:has(input:checked) { background: #ed456526; border-color: #ff7893; }
input, select, textarea, #event-editor input, #event-editor select, #event-editor textarea { background: #0c1527; border-color: #536b95; color: #f2f6ff; }
th { background: #1b2b48; color: #bfdcff; }
.note-panel { background: #1a2942; border-color: #5478ac; }
#toast { background: #e64d68; border-color: #ff8ea0; color: #fff; }

/* Standalone score counter: red player left, blue player right. */
body.scoreboard-page { background: radial-gradient(ellipse at 10% 48%,#a821484d,transparent 50%),radial-gradient(ellipse at 90% 48%,#1255a45c,transparent 50%),#060914; }
.scoreboard-page .player { --accent: #ff5b78; background: #230f21c9; border-color: #ff6c8a80; }
.scoreboard-page .player-b { --accent: #62c5ff; background: #101f3fc9; border-color: #66c5ff80; }
.scoreboard-page .player output { text-shadow: 0 0 40px #ff5b7838; }
.scoreboard-page .player-b output { text-shadow: 0 0 40px #62c5ff38; }
.scoreboard-page .player input { border-bottom-color: #8ca8d251; }
.scoreboard-page .finishes button { background: #1a2a46; border-color: #607ca8; border-left-color: #62beff; }
.scoreboard-page .player .finishes .xtreme { border-left-color: #ff5d7c; }
.scoreboard-page .versus b { color: #f5f7ff; text-shadow: 0 0 22px #ff567766,0 0 25px #53bbff66; }
.scoreboard-page .champion { box-shadow: 0 0 34px color-mix(in srgb,var(--accent) 55%,transparent); }
.scoreboard-page #overlay { background: radial-gradient(ellipse at 50% 50%,#2b2445,#060914f2 66%); }
.scoreboard-page .announcement h2 { color: #ff657f; text-shadow: 0 0 35px #ff5b7880; }
.scoreboard-page #overlay[data-kind=burst] h2,
.scoreboard-page #overlay[data-kind=over] h2 { color: #70c7ff; }
.scoreboard-page .burst-ring { border-color: #72c7ff91; box-shadow: 0 0 100px #62bbff55; }
.scoreboard-page .intro>span, .scoreboard-page .brand span { color: #ff8297; }
.scoreboard-page #status, .scoreboard-page .privacy, .scoreboard-page #screen-note,
.scoreboard-page details { color: #b6c9e6; }
.scoreboard-page #finish-winner { color: #91d3ff; }

/* Venue calendar keeps distinct status labels within the two team colors. */
body:has(#calendar) { background: #060914; color: #f4f7ff; }
body:has(#calendar) header { border-bottom-color: #3f5c86; }
body:has(#calendar) a { color: #91d4ff; }
body:has(#calendar) p { color: #b9c9e1; }
body:has(#calendar) button:not(.primary) { background: #1a2a46; border-color: #5a78a7; color: #f0f6ff; }
body:has(#calendar) .primary { background: #ed4d69; color: #fff; border-color: #ff8099; }
body:has(#calendar) .day, body:has(#calendar) #info { background: #101b30; border-color: #3e5d8a; }
body:has(#calendar) .today { border-color: #ff6e8b; box-shadow: 0 0 15px #ee52714a; }
body:has(#calendar) .weekday { color: #a9c9ee; }
body:has(#calendar) .slot { background: color-mix(in srgb,var(--accent) 13%,#10182b); color: #f2f6ff; }
body:has(#calendar) .play { --accent: #63bcff; }
body:has(#calendar) .reserved { --accent: #ff748f; }
body:has(#calendar) .event { --accent: #91a2ff; }
body:has(#calendar) .competition { --accent: #ff5276; }
body:has(#calendar) .closed { --accent: #a9b5c8; }
body:has(#calendar) .available { --accent: #8ed7ff; }
body:has(#calendar) #selection { background: #13213af5; }
body:has(#calendar) input, body:has(#calendar) select,
body:has(#calendar) textarea, body:has(#calendar) dialog { background: #101b30; color: #f4f7ff; border-color: #5875a3; }

/* Navigation and looping light effects */
.mobile-navigation { background: #0c1425; border-left-color: #ff6d894d; color: #f4f7ff; }
.mobile-navigation a { color: #f4f7ff; border-bottom-color: #649ddd4d; }
.mobile-menu-toggle, .menu-close { background: #1d2e4d; border-color: #ff66858a; color: #fff; }
#public-language-switch { background: #0d1629ee; border-color: #638dd084; }
.public-group-head, .public-qualifier, .event-card, .live-pulse { animation-name: versus-red-glow; }
@keyframes versus-red-glow { 0%,100% { box-shadow: 0 0 12px #ef496521; } 50% { box-shadow: 0 0 26px #ff5e7d5c; } }
@keyframes versus-blue-glow { 0%,100% { box-shadow: 0 0 8px #5dbdff50; } 50% { box-shadow: 0 0 24px #60bdffad; } }
@keyframes signal { 0%,100% { opacity: 1; box-shadow: 0 0 8px #ff688bba; } 50% { opacity: .5; box-shadow: 0 0 0 #ff688b00; } }
@media (prefers-reduced-motion: reduce) { .public-group-head, .public-qualifier, .event-card, .live-pulse { animation: none; } }

/* Winners use the blue team color on every live and host chart. */
.public-standings .qualified-row { background: #3398e936; }
.public-standings .qualified-row td:nth-child(2),
.public-standings .qualified-row b { color: #a4ddff; }
.public-qualifier, .group-winner, .group-qualifier {
  background: linear-gradient(115deg,#132c50,#205287);
  border-color: #6bc5ff;
  box-shadow: inset 3px 0 #8ed4ff,0 0 20px #4aafff60;
  color: #f4faff;
  animation: versus-blue-glow 4s ease-in-out infinite;
}
.public-qualifier span, .group-qualifier span { color: #a9e0ff; }
.group-winner:after, .group-qualifier:after, .display .slot.winner:after {
  background: linear-gradient(110deg,transparent 30%,#7acbff42 50%,transparent 70%);
}
.fixture-side.winner, .live-slot.winner, .slot.winner, .display .slot.winner,
.display .final .slot.winner {
  background: linear-gradient(105deg,#19385f,#246096);
  border-color: #79caff;
  color: #f7fbff;
  box-shadow: inset 3px 0 #9cddff,0 0 16px #58b8ff55;
  animation: versus-blue-glow 4s ease-in-out infinite;
}
.fixture-side.winner .fixture-score, .live-slot.winner b,
.slot.winner .slot-score, .display .slot.winner .slot-score,
.display .final .slot.winner .slot-name, .display .final .winner .slot-score,
.group-player .score-win, .winner-mark { color: #a8dfff; }
.group-player:has(.score-win) {
  background: linear-gradient(105deg,#19385f,#246096);
  border-radius: 5px;
  box-shadow: inset 0 0 0 1px #79caff,0 0 12px #58b8ff55;
}
.group-player:has(.score-win) .group-player-name { color: #f7fbff; }
.tree-crown span, .tree-crown strong { color: #a8dfff; text-shadow: 0 0 28px #5cbaff99; }
.motion-paused .slot.winner, .motion-paused .group-winner,
.motion-paused .group-qualifier { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
  .public-qualifier, .group-winner, .group-qualifier, .fixture-side.winner,
  .live-slot.winner, .slot.winner, .display .slot.winner,
  .display .final .slot.winner { animation: none; }
}

/* Active competitions on the homepage use the blue team color. */
.spinx-site .event-card .live-pulse.status-progress{color:#a3daff;border-color:#55bdff;background:#0c2444ed;box-shadow:0 0 14px #399eff30}.spinx-site .event-card .live-pulse.status-progress:before{background:#55bdff}

/* The active knockout match is visible on host and public boards. */
.match.live-battle,.public-match.live-battle{border-color:#ff9d32!important;box-shadow:0 0 18px #ff9d3255!important;background:#382414!important}.match.live-battle .match-label,.public-match.live-battle>small{color:#ffc16b}.match.live-battle .slot-score,.public-match.live-battle .live-slot b{color:#ffc16b}

/* Symmetric knockout stage: persistent DOM, closed motion paths and no hard loop cut. */
.knockout-geometry{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;contain:strict;background:radial-gradient(ellipse at 50% 48%,#125fb51a,transparent 65%)}
.knockout-geometry[hidden]{display:none}
.knockout-geometry svg{position:absolute;width:100%;height:100%;inset:0;stroke:#489fff;stroke-width:1.15;opacity:.48}
.geometry-petal,.geometry-dial,.geometry-wings,.geometry-core{transform-box:fill-box;transform-origin:center}
.geometry-petal{animation:geometry-fold 24s ease-in-out infinite;animation-delay:var(--phase);opacity:.42}
.geometry-petal:nth-child(even){stroke:#ff4665}
.geometry-dial{stroke:#70c5ff;stroke-width:1.5;animation:geometry-dial 48s ease-in-out infinite;opacity:.45}
.geometry-wings{stroke:#428dff;animation:geometry-breathe 16s ease-in-out infinite;opacity:.6}
.geometry-wings>g:last-child{stroke:#ff4665}
.geometry-core{stroke:#84cfff;animation:geometry-core 24s ease-in-out infinite;opacity:.35}
.knockout-backdrop .tech-field:before,.knockout-backdrop .tech-field:after{animation:none;opacity:.25}
.knockout-backdrop .arena-effects{opacity:.4}
.knockout-backdrop .energy-orbit,.knockout-backdrop .energy-rail{display:none}
@keyframes geometry-fold{0%,100%{transform:rotate(var(--turn)) scale(1);opacity:.26}50%{transform:rotate(calc(var(--turn) + 90deg)) scale(.62);opacity:.65}}
@keyframes geometry-dial{0%,100%{transform:rotate(-15deg) scale(1)}50%{transform:rotate(15deg) scale(1.08)}}
@keyframes geometry-breathe{0%,100%{transform:scale(1);opacity:.45}50%{transform:scale(1.12);opacity:.8}}
@keyframes geometry-core{0%,100%{transform:rotate(0deg) scale(1)}50%{transform:rotate(60deg) scale(1.4)}}
.motion-paused .knockout-geometry *{animation-play-state:paused!important}
@media(max-width:700px){.knockout-geometry svg{width:180%;max-width:none;left:-40%;opacity:.35}.geometry-petal:nth-child(n+6){display:none}}
@media(prefers-reduced-motion:reduce){.knockout-geometry *{animation:none!important}}
.knockout-backdrop.display .panel:has(.bracket-scroll),.knockout-backdrop.display .bracket-scroll{background:transparent}
.knockout-backdrop.display .bracket-scroll:before{display:none}
