/* Barlow by The Barlow Project Authors, SIL OFL 1.1; served locally. */
@font-face { font-family:'Barlow'; font-style:normal; font-weight:400; font-display:swap; src:url('../fonts/barlow-regular.ttf') format('truetype'); }
@font-face { font-family:'Barlow'; font-style:normal; font-weight:700; font-display:swap; src:url('../fonts/barlow-bold.ttf') format('truetype'); }
.bands-admin { max-width: 1500px; }
.bands-admin-nav,.bands-admin-form { display:flex; flex-wrap:wrap; gap:.75rem; align-items:center; margin-block:1rem; }
.bands-admin-form > .form-control,.bands-admin-form > .form-select { width:auto; max-width:100%; }
.bands-admin-fields { width:100%; display:grid; grid-template-columns:minmax(150px,1fr) minmax(160px,2fr); gap:.7rem 1rem; align-items:center; }
.bands-admin section { border-block-start:1px solid #8898a766; padding-block:1.5rem; scroll-margin-top:6rem; }
.bands-admin details { margin-block:1rem; }
.bands-admin summary { cursor:pointer; font-weight:600; }
.bands-admin td .bands-admin-form { display:inline-flex; margin:.3rem; }
.bands-admin pre { white-space:pre-wrap; overflow-wrap:anywhere; max-height:30rem; overflow:auto; }
.bands-chart { max-width:1000px; margin-block:1rem; }
.bands-chart svg { display:block; width:100%; height:auto; }
.bands-table-scroll { overflow-x:auto; }
.bands-event { --festival-card:linear-gradient(110deg,#122438c9,#111821cf); --festival-border:#8898a766; --festival-text:#f1f6ff; --battle-cyan:#71d7ff; --battle-violet:#c58cff; color:inherit; background:transparent; padding:0; }
.bands-event .bands-event-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:1.3rem; }
.bands-event .bands-battle-list { list-style:none; padding:0; display:grid; gap:.8rem; }
.bands-event .bands-battle-card { display:flex; align-items:center; gap:1rem; padding:1rem; border:1px solid #71d7ff66; border-radius:12px; background:linear-gradient(115deg,#1224389c,#1b18359c); color:#f7fbff; }
.bands-event .bands-battle-card img { width:64px; height:64px; object-fit:cover; border-radius:50%; }
.bands-event .bands-battle-card a { color:#92e2ff; }
.bands-event .bands-score { margin-inline-start:auto; font-variant-numeric:tabular-nums; white-space:nowrap; }
.bands-event .bands-rank { font-size:1.6em; min-width:2ch; font-weight:800; color:var(--battle-cyan); }
.bands-event .bands-vote-form { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; }
.bands-event .bands-vote-form button { padding:.5rem 1rem; border:1px solid #71d7ff; border-radius:6px; cursor:pointer; background:#15334b; color:#fff; }
.bands-event .bands-ro-list { list-style:none; padding:0; }
.bands-event .bands-ro-list li { border-inline-start:3px solid var(--battle-cyan); padding:.6rem 1rem; margin-block:.7rem; }
.bands-event .bands-ro-list time { font-weight:700; display:block; }
.bands-event a:focus-visible,.bands-event button:focus-visible { outline:3px solid #f4ce60; outline-offset:4px; }
@media(max-width:700px) { .bands-admin-fields { grid-template-columns:1fr; } }
@media(prefers-reduced-motion:reduce) { .bands-event * { animation:none !important; transition:none !important; } }
.bands-event .bands-battle-card a { min-width:0; overflow-wrap:anywhere; }
.bands-admin td .form-control[type="number"] { max-width:9rem; }
.bands-admin #bands-entry-editor { scroll-margin-top:6rem; margin-block:1.25rem; padding:1rem; border:1px solid #8898a766; border-radius:.4rem; }
.bands-admin section.bands-slot-day { border:0; padding:.5rem 0; margin-block:1rem 1.5rem; }
.bands-admin section.bands-slot-stage { border:1px solid #8898a766; border-radius:.4rem; padding:1rem; margin-block:1rem; }
.bands-admin .bands-slot-day > h3 { border-block-end:2px solid #087ea4; padding-block-end:.5rem; }
.bands-admin .bands-slot-stage > h4 { margin-block:0 1rem; }
.bands-admin .bands-slot-time { white-space:nowrap; font-variant-numeric:tabular-nums; }

.bands-admin section.bands-slot-block { border:0; border-inline-start:3px solid #087ea4; padding:.5rem 0 .5rem clamp(.5rem,2vw,1.5rem); margin:1rem 0 1.5rem clamp(0rem,1vw,.75rem); }
.bands-admin .bands-slot-block > h5 { display:flex; align-items:center; gap:.75rem; margin-block:0 .75rem; overflow-wrap:anywhere; }
.bands-admin .bands-slot-block > h5 .badge { flex-shrink:0; }

.bands-admin section.bands-catalog-group { border:0; padding-block:.75rem; }
.bands-admin section.bands-catalog-card { border:1px solid #8898a766; border-radius:.4rem; margin-block:.75rem; padding-block:0; }
.bands-admin .bands-catalog-card > h4 { margin:0; padding:.85rem 1rem; overflow-wrap:anywhere; }
.bands-admin .bands-catalog-card > h4 .badge { margin-inline-start:.75rem; }
.bands-admin .bands-catalog-content { padding:0 1rem 1rem; }
.bands-admin .bands-catalog-actions { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; margin-block:.5rem; }
.bands-admin .bands-catalog-usage { padding-inline-start:1.5rem; margin:.75rem 0 0 clamp(.5rem,2vw,1.5rem); border-inline-start:3px solid #087ea4; }
.bands-admin .bands-catalog-usage li { padding-block:.35rem; overflow-wrap:anywhere; }
.bands-admin .bands-catalog-editor { border-block-start:1px solid #8898a766; padding-block-start:1rem; scroll-margin-top:6rem; }

.bands-admin section.bands-catalog-block { border:1px solid #8898a766; border-radius:.4rem; padding:1rem; margin-block:1rem; }
.bands-admin .bands-catalog-card { padding:.5rem; }
.bands-admin .bands-catalog-children { margin-inline-start:clamp(.75rem,3vw,2rem); padding-inline-start:clamp(.5rem,2vw,1.5rem); border-inline-start:3px solid #087ea4; }
.bands-admin .bands-catalog-child { border-block-end:1px solid #8898a744; margin-block:.5rem 1rem; }
.bands-admin .bands-catalog-add-child { padding:.5rem; margin-block:1rem 0; }
.bands-admin .bands-catalog-child > h4 { font-size:1.1rem; }

.bands-admin .bands-admin-tabs { display:flex; flex-wrap:wrap; gap:.25rem; border-block-end:2px solid #8898a766; margin-block:1rem; }
.bands-admin .bands-admin-tabs[hidden],.bands-admin .bands-admin-panel[hidden] { display:none !important; }
.bands-admin .bands-admin-tab { border:1px solid #8898a766; border-radius:.4rem .4rem 0 0; background:transparent; color:inherit; padding:.75rem 1rem; font:inherit; cursor:pointer; }
.bands-admin .bands-admin-tab[aria-selected="true"] { background:#087ea4; color:#fff; font-weight:700; border-color:#087ea4; }
.bands-admin .bands-admin-tab:focus-visible,.bands-admin .bands-admin-panel:focus-visible { outline:3px solid #087ea4; outline-offset:3px; }

/* Slot Battle: day > stage > slot block > assigned bands. */
.bands-slot-battle { color:inherit; }
.bands-slot-battle .bands-battle-status { text-align:center; margin-block:0 1.5rem; }
.bands-slot-battle .bands-battle-days { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2.5rem; }
.bands-slot-battle .bands-battle-day-title { text-align:center; margin:0 0 1.75rem; }
.bands-slot-battle .bands-battle-day-title time { display:flex; flex-direction:column; align-items:center; gap:.35rem; }
.bands-slot-battle .bands-battle-weekday,.bands-fan-voting .bands-voting-weekday { font-family:inherit; font-size:clamp(2.1rem,4vw,3.2rem); line-height:50%; text-transform:uppercase; letter-spacing:.12em; }
@media(max-width:700px) { .bands-slot-battle .bands-battle-weekday,.bands-fan-voting .bands-voting-weekday { font-size:2.6rem; } }
.bands-slot-battle .bands-battle-date,.bands-fan-voting .bands-voting-day-date { font-family:'Barlow',sans-serif; font-size:1.2rem; letter-spacing:.12em; font-weight:400; }
.bands-slot-battle .bands-battle-stages { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr)); gap:1.75rem; }
.bands-slot-battle .bands-battle-stage { --stage-accent:#399aff; min-width:0; }
.bands-slot-battle .bands-battle-stage-outdoor { --stage-accent:#30dfcb; }
.bands-slot-battle .bands-battle-stage-title,.bands-fan-voting .bands-voting-bands-title { margin:0 0 1.75rem; text-align:center; color:var(--stage-accent); text-shadow:0 0 8px var(--stage-accent),0 0 24px color-mix(in srgb,var(--stage-accent) 45%,transparent); text-transform:uppercase; font-family:'Barlow',sans-serif; font-size:clamp(1.3rem,1.8vw,1.9rem); letter-spacing:.08em; overflow-wrap:anywhere; }
.bands-slot-battle .bands-battle-block { margin-block:0 1.75rem; }
.bands-slot-battle .bands-battle-block-title { display:flex; align-items:center; gap:.7rem; margin:0 0 1rem; text-align:center; text-transform:uppercase; font-family:'Barlow',sans-serif; font-size:1rem; letter-spacing:.08em; }
.bands-slot-battle .bands-battle-block-title::before,.bands-slot-battle .bands-battle-block-title::after { content:''; flex:1; min-width:.5rem; height:1px; background:var(--stage-accent); opacity:.7; }
.bands-slot-battle .bands-battle-list { padding:0 0 0 1rem; margin:0; border-inline-start:1px solid var(--stage-accent); gap:.7rem; }
.bands-slot-battle .bands-battle-card { position:relative; display:block; padding:0; border-radius:5px; border:1px solid #8898a766; border-inline-start:3px solid var(--stage-accent); background:var(--festival-card); color:var(--festival-text); }
.bands-slot-battle .bands-battle-card::before { content:''; position:absolute; inset-inline-start:calc(-1rem - 7px); top:calc(50% - 4px); width:8px; height:8px; border:1px solid var(--stage-accent); border-radius:50%; background:#07101b; box-shadow:0 0 6px var(--stage-accent); pointer-events:none; }
.bands-slot-battle a.bands-battle-link { display:grid; grid-template-columns:56px minmax(0,1fr) auto; align-items:center; gap:.6rem; padding:.55rem; color:inherit; text-decoration:none; }
.bands-slot-battle a.bands-battle-link:hover { background:#399aff12; }
.bands-slot-battle .bands-battle-card img,.bands-slot-battle .bands-battle-thumb { display:block; width:56px; height:64px; object-fit:cover; border-radius:3px; }
.bands-slot-battle .bands-battle-thumb { display:grid; place-items:center; background:#8898a71f; color:var(--stage-accent); }
.bands-slot-battle .bands-battle-band-info { min-width:0; }
.bands-slot-battle .bands-battle-band-name { display:block; font-family:'Oswald','Roboto Condensed','Arial Narrow',sans-serif; text-transform:uppercase; font-size:1rem; font-weight:700; overflow-wrap:anywhere; }
.bands-slot-battle .bands-battle-subtitle { display:block; font-size:.78rem; color:#b7cadc; margin-block-start:.25rem; overflow-wrap:anywhere; }
.bands-slot-battle .bands-score { font-size:.88rem; white-space:nowrap; }
.bands-slot-battle .bands-battle-fixed { display:flex; flex-direction:column; gap:.2rem; align-items:center; color:var(--stage-accent); font-size:.67rem; font-weight:700; letter-spacing:.04em; }
.bands-slot-battle .bands-battle-legend { text-align:center; margin-block:1rem 0; font-size:.85rem; }
@media(max-width:1100px) { .bands-slot-battle .bands-battle-days { grid-template-columns:1fr; } }
@media(max-width:600px) { .bands-slot-battle .bands-battle-stages { grid-template-columns:1fr; } }

body .bands-page-heading { inline-size:100%; text-align:center !important; }

.bands-admin .bands-voting-config { border:1px solid #8898a766; border-radius:.4rem; padding:1rem; margin-block:1rem; }
.bands-admin .bands-voting-config legend { float:none; width:auto; padding-inline:.5rem; font-size:1.15rem; }
.bands-fan-voting .bands-voting-identity { display:grid; gap:1rem; max-width:36rem; margin-block:1rem 2rem; }
.bands-fan-voting .bands-voting-identity .btn { justify-self:start; }
.bands-fan-voting .bands-voting-ballot > .btn { margin-block:1rem; }
.bands-fan-voting input[type="radio"] { flex-shrink:0; width:1.2rem; height:1.2rem; accent-color:#399aff; }

/* Fan Voting: controls and centred explanations share one festival-style tile. */
.bands-fan-voting .bands-voting-panel { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); gap:clamp(1.25rem,3vw,2.5rem); align-items:center; padding:clamp(1rem,3vw,2rem); margin-block:0 1.75rem; border:1px solid var(--festival-border); border-inline-start:3px solid #1b624f; border-radius:5px; background:var(--festival-card); color:var(--festival-text); box-shadow:0 8px 30px #0003,0 0 20px #399aff0d; }
.bands-fan-voting .bands-voting-controls { min-width:0; }
.bands-fan-voting .bands-voting-explanation { min-width:0; text-align:center; border-inline-start:1px solid #399aff4d; padding-inline-start:clamp(1.25rem,3vw,2.5rem); line-height:1.65; overflow-wrap:anywhere; }
.bands-fan-voting .bands-voting-explanation p { margin:0 0 .9rem; white-space:pre-line; }
.bands-fan-voting .bands-voting-explanation p:last-child { margin-block-end:0; }
.bands-fan-voting .bands-voting-identity,.bands-fan-voting .bands-voting-submit { display:grid; gap:.9rem; max-width:none; margin:0; }
.bands-fan-voting .bands-voting-identity label { margin:0; font-weight:600; }
.bands-fan-voting .bands-voting-controls .form-control { width:100%; box-sizing:border-box; min-height:3rem; border:1px solid #70b7ff80; border-radius:6px; background:#071321; color:#f5faff; }
.bands-fan-voting .bands-voting-controls .btn { justify-self:stretch; width:100%; min-height:3rem; padding:.8rem 1.1rem; border:1px solid #ffffffa6; border-radius:3px; background:linear-gradient(111deg,#14720e,#5395a7); color:#fff; font-family:'Barlow',sans-serif; font-weight:700; line-height:1.4; white-space:normal; }
.bands-fan-voting .bands-voting-controls .btn:hover { background:linear-gradient(111deg,#14720e,#5395a7); filter:brightness(1.08); box-shadow:0 0 16px #1b624f40; }
.bands-fan-voting .bands-voting-controls .btn:focus-visible,.bands-fan-voting .bands-voting-controls input:focus-visible { outline:3px solid #88e9dc; outline-offset:3px; }
.bands-fan-voting .bands-voting-feedback-anchor { scroll-margin-top:8rem; }
.bands-fan-voting .bands-voting-notice { --notice:#6bb8ff; display:flex; align-items:flex-start; gap:.75rem; padding:1rem; margin-block:0 1rem; border:1px solid color-mix(in srgb,var(--notice) 55%,transparent); border-inline-start:3px solid var(--notice); border-radius:5px; background:var(--festival-card); color:var(--festival-text); box-shadow:0 0 15px color-mix(in srgb,var(--notice) 8%,transparent); overflow-wrap:anywhere; }
.bands-fan-voting .bands-voting-notice-success { --notice:#49dec1; }
.bands-fan-voting .bands-voting-notice-error { --notice:#ff9e8f; }
.bands-fan-voting .bands-voting-notice p { margin:0; white-space:pre-line; }
.bands-fan-voting .bands-voting-notice-symbol { display:grid; place-items:center; flex:0 0 1.4rem; width:1.4rem; height:1.4rem; border:1px solid var(--notice); border-radius:50%; color:var(--notice); font-weight:700; line-height:1; }
.bands-fan-voting input[type="checkbox"] { flex-shrink:0; width:1.2rem; height:1.2rem; accent-color:#399aff; }
@media(max-width:700px) {
    .bands-fan-voting .bands-voting-panel { grid-template-columns:1fr; }
    .bands-fan-voting .bands-voting-explanation { order:-1; border-inline-start:0; border-block-end:1px solid #399aff4d; padding-inline-start:0; padding-block-end:1.25rem; }
}

.bands-fan-voting .bands-voting-days { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr)); gap:2rem; align-items:start; }
.bands-fan-voting .bands-voting-day { min-width:0; }
.bands-fan-voting .bands-voting-day-title { margin:0 0 1.75rem; text-align:center; color:#fff; text-shadow:none; }
.bands-fan-voting .bands-voting-day-title time { display:flex; flex-direction:column; align-items:center; gap:.35rem; }
.bands-fan-voting .bands-voting-bands-title { --stage-accent:#399aff; display:flex; align-items:center; gap:.7rem; }
.bands-fan-voting .bands-voting-bands-title::before,.bands-fan-voting .bands-voting-bands-title::after { content:''; flex:1; min-width:.5rem; height:1px; background:var(--stage-accent); opacity:.7; }
.bands-fan-voting .bands-voting-day .bands-battle-list { margin:0; padding:0; list-style:none; }
.bands-fan-voting .bands-voting-day input:disabled { opacity:.4; cursor:not-allowed; }
@media(max-width:700px) { .bands-fan-voting .bands-voting-days { grid-template-columns:1fr; } }

/* Shared festival cards; heading fonts remain under template control. */
.bands-fan-voting .bands-battle-card,.bands-runningorder .bands-ro-list li { border:1px solid var(--festival-border); border-inline-start:3px solid var(--stage-accent,#399aff); border-radius:5px; background:var(--festival-card); color:var(--festival-text); }
.bands-fan-voting .bands-battle-card { padding:.65rem; gap:.7rem; }
.bands-fan-voting .bands-battle-card img { width:56px; height:64px; border-radius:3px; }
.bands-fan-voting .bands-battle-card a,.bands-runningorder .bands-ro-list a { color:inherit; font-weight:700; text-transform:uppercase; }
.bands-fan-voting .bands-battle-card a:hover,.bands-runningorder .bands-ro-list a:hover { color:#92e2ff; }
.bands-runningorder .bands-ro-day { margin-block:0 2.5rem; }
.bands-runningorder .bands-ro-day-title { margin:0 0 1.75rem; text-align:center; }
.bands-runningorder .bands-ro-day-title time { font-size:2.2rem; text-transform:uppercase; font-weight:400; letter-spacing:.12em; }
.bands-runningorder .bands-ro-stage { --stage-accent:#399aff; min-width:0; }
.bands-runningorder .bands-ro-stage-outdoor { --stage-accent:#30dfcb; }
.bands-runningorder .bands-ro-stage-title { margin:0 0 1.75rem; text-align:center; color:var(--stage-accent); text-shadow:0 0 8px var(--stage-accent),0 0 24px color-mix(in srgb,var(--stage-accent) 45%,transparent); text-transform:uppercase; letter-spacing:.08em; overflow-wrap:anywhere; }
.bands-runningorder .bands-ro-list { border-inline-start:1px solid var(--stage-accent); padding-inline-start:1rem; }
.bands-runningorder .bands-ro-list li { position:relative; overflow-wrap:anywhere; }
.bands-runningorder .bands-ro-list li::before { content:''; position:absolute; inset-inline-start:calc(-1rem - 7px); top:calc(50% - 4px); width:8px; height:8px; border:1px solid var(--stage-accent); border-radius:50%; background:#07101b; box-shadow:0 0 6px var(--stage-accent); }
.bands-runningorder .bands-ro-list time { color:var(--stage-accent); margin-block-end:.3rem; }
.bands-runningorder .bands-ro-list small { color:#b7cadc; }

/* One shared time grid: equal times align across stages, including empty intervals. */
.bands-runningorder .bands-ro-day { min-width:0; }
.bands-runningorder .bands-ro-timeline { overflow-x:auto; padding-block:1rem; }
.bands-runningorder .bands-ro-time-grid { display:grid; grid-template-columns:4.2rem repeat(var(--ro-columns),minmax(15rem,1fr)); grid-template-rows:auto repeat(var(--ro-minutes),minmax(3px,auto)) 0; column-gap:1.3rem; }
.bands-runningorder .bands-ro-stage,.bands-runningorder .bands-ro-list,.bands-runningorder .bands-ro-axis { display:contents; }
.bands-runningorder .bands-ro-stage-title { grid-column:var(--ro-column); grid-row:1; align-self:start; }
.bands-runningorder .bands-ro-list li { grid-column:var(--ro-column); margin:0 0 .4rem; padding:.6rem 1rem; min-width:0; box-sizing:border-box; }
.bands-runningorder .bands-ro-tick { grid-column:1; align-self:start; transform:translateY(-50%); font-size:.9rem; line-height:1; font-weight:400; font-variant-numeric:tabular-nums; color:#b7cadc; }
.bands-runningorder .bands-ro-list li::before { inset-inline-start:-6px; }

/* Chronological axis and transparent blue-framed cards; stage headings retain their colours. */
.bands-runningorder .bands-ro-stage { --ro-card-accent:#c5dded; --ro-card-background:#001d2c54; --ro-card-text:#f1f6ff; --ro-card-muted:#b7cadc; --ro-card-border:#8898a766; --ro-card-edge:var(--stage-accent); --ro-dot-background:#001d2c; }
.bands-runningorder .bands-ro-stage-outdoor { --ro-card-accent:var(--stage-accent); --ro-card-background:#001d2c54; --ro-card-text:var(--festival-text); --ro-card-muted:#b7cadc; --ro-card-border:#8898a766; --ro-card-edge:var(--stage-accent); --ro-dot-background:#07101b; }
.bands-runningorder .bands-ro-list li { border-color:var(--ro-card-border); border-inline-start-color:var(--ro-card-edge); background:var(--ro-card-background); color:var(--ro-card-text); }
.bands-runningorder .bands-ro-list time,.bands-runningorder .bands-ro-list a:hover { color:var(--ro-card-accent); }
.bands-runningorder .bands-ro-list small { color:var(--ro-card-muted); }
.bands-runningorder .bands-ro-list li::before { border-color:var(--ro-card-edge); box-shadow:0 0 6px var(--ro-card-edge); background:var(--ro-dot-background); }
.bands-runningorder .bands-ro-axis-line { grid-column:1; grid-row:2/-1; justify-self:end; width:1px; margin-inline-end:.25rem; background:#b7cadc66; }
.bands-runningorder .bands-ro-tick { position:relative; padding-inline-end:1rem; }
.bands-runningorder .bands-ro-tick::after { content:''; position:absolute; inset-inline-end:.1rem; top:50%; width:.3rem; height:.3rem; border-radius:50%; transform:translateY(-50%); background:#cbd5df; box-shadow:0 0 5px #cbd5df40; }

.bands-runningorder > p { text-align:center; white-space:pre-line; }

/* Running Order uses the same stage-coloured frames and heading rules as Slot Battle. */
.bands-runningorder .bands-ro-stage-title { display:flex; align-items:center; justify-content:center; gap:.7rem; }
.bands-runningorder .bands-ro-stage-title::before,.bands-runningorder .bands-ro-stage-title::after { content:''; flex:1; min-width:.5rem; height:1px; background:var(--stage-accent); opacity:.7; }
.bands-runningorder .bands-ro-band-name { font-size:1.1rem; }
.bands-runningorder .bands-ro-card-image,.bands-runningorder .bands-ro-card-shade { position:absolute; inset:0; width:100%; height:100%; border-radius:2px; pointer-events:none; }
.bands-runningorder .bands-ro-card-image { z-index:0; object-fit:cover; object-position:center; }
.bands-runningorder .bands-ro-card-shade { z-index:1; background:linear-gradient(110deg,#00121de0,#00121d99); }
.bands-runningorder .bands-ro-card-content { position:relative; z-index:2; text-shadow:0 1px 3px #000; }

.bands-runningorder .bands-ro-card-image.bands-ro-image-top { object-position:center top; }
.bands-runningorder .bands-ro-card-image.bands-ro-image-bottom { object-position:center bottom; }

/* Measurable decorative nodes let desktop links follow exact time rows after resizing. */
.bands-runningorder .bands-ro-time-grid { position:relative; }
.bands-runningorder .bands-ro-list li { z-index:1; }
.bands-runningorder .bands-ro-list li::before,.bands-runningorder .bands-ro-node-anchor { box-sizing:border-box; inset-inline-start:-6px; top:calc(50% - 5px); width:10px; height:10px; }
.bands-runningorder .bands-ro-list li::before { z-index:3; pointer-events:none; }
.bands-runningorder .bands-ro-node-anchor { position:absolute; visibility:hidden; pointer-events:none; }
.bands-runningorder .bands-ro-start-anchor { grid-column:1; width:0; height:0; align-self:start; justify-self:end; margin-inline-end:.25rem; }
.bands-runningorder .bands-ro-connections { position:absolute; inset:0; z-index:0; overflow:visible; pointer-events:none; }

/* Narrow layouts merge both stages into one compact chronological timeline. */
.bands-runningorder { min-width:0; max-width:100%; }
.bands-runningorder .bands-ro-timeline { container-type:inline-size; container-name:bands-ro; max-width:100%; }
.bands-runningorder .bands-ro-axis-mobile { display:none; }
@container bands-ro (max-width:42rem) {
    .bands-runningorder .bands-ro-time-grid { --ro-node-y:1.25rem; --ro-axis-gap:.65rem; --ro-axis-inset:.25rem; grid-template-columns:3.6rem minmax(0,1fr); grid-template-rows:repeat(var(--ro-columns),auto) repeat(var(--ro-item-count),auto) 0; column-gap:var(--ro-axis-gap); row-gap:8px; }
    .bands-runningorder .bands-ro-axis-desktop,.bands-runningorder .bands-ro-connections { display:none; }
    .bands-runningorder .bands-ro-axis-mobile { display:contents; }
    .bands-runningorder .bands-ro-stage-title { grid-column:1/-1; grid-row:calc(var(--ro-column) - 1); font-size:1.6rem; line-height:1.3; gap:.4rem; margin:0 0 .65rem; }
    .bands-runningorder .bands-ro-list li { grid-column:2; grid-row:calc(var(--ro-columns) + var(--ro-order))/span 1 !important; margin:0; padding:.65rem; min-height:5rem; }
    .bands-runningorder .bands-ro-mobile-tick { grid-row:calc(var(--ro-columns) + var(--ro-order)); margin-top:0; padding-block-start:calc(var(--ro-node-y) - .45rem); align-self:stretch; transform:none; box-sizing:border-box; }
    .bands-runningorder .bands-ro-axis-mobile .bands-ro-axis-line { grid-row:calc(var(--ro-columns) + 1)/-1; }
    .bands-runningorder .bands-ro-mobile-tick::after { top:var(--ro-node-y); }
    .bands-runningorder .bands-ro-list li::before { box-sizing:border-box; width:10px; height:10px; top:calc(var(--ro-node-y) - 6px); z-index:3; pointer-events:none; }
    .bands-runningorder .bands-ro-list li::after { content:''; position:absolute; inset-inline-end:100%; top:calc(var(--ro-node-y) - 1.5px); width:calc(var(--ro-axis-gap) + var(--ro-axis-inset) + 3px); height:1px; background:var(--stage-accent); opacity:.65; pointer-events:none; }

}
@supports not (container-type:inline-size) {
@media(max-width:700px) {
    .bands-runningorder .bands-ro-time-grid { --ro-node-y:1.25rem; --ro-axis-gap:.65rem; --ro-axis-inset:.25rem; grid-template-columns:3.6rem minmax(0,1fr); grid-template-rows:repeat(var(--ro-columns),auto) repeat(var(--ro-item-count),auto) 0; column-gap:var(--ro-axis-gap); row-gap:8px; }
    .bands-runningorder .bands-ro-axis-desktop,.bands-runningorder .bands-ro-connections { display:none; }
    .bands-runningorder .bands-ro-axis-mobile { display:contents; }
    .bands-runningorder .bands-ro-stage-title { grid-column:1/-1; grid-row:calc(var(--ro-column) - 1); font-size:1.6rem; line-height:1.3; gap:.4rem; margin:0 0 .65rem; }
    .bands-runningorder .bands-ro-list li { grid-column:2; grid-row:calc(var(--ro-columns) + var(--ro-order))/span 1 !important; margin:0; padding:.65rem; min-height:5rem; }
    .bands-runningorder .bands-ro-mobile-tick { grid-row:calc(var(--ro-columns) + var(--ro-order)); margin-top:0; padding-block-start:calc(var(--ro-node-y) - .45rem); align-self:stretch; transform:none; box-sizing:border-box; }
    .bands-runningorder .bands-ro-axis-mobile .bands-ro-axis-line { grid-row:calc(var(--ro-columns) + 1)/-1; }
    .bands-runningorder .bands-ro-mobile-tick::after { top:var(--ro-node-y); }
    .bands-runningorder .bands-ro-list li::before { box-sizing:border-box; width:10px; height:10px; top:calc(var(--ro-node-y) - 6px); z-index:3; pointer-events:none; }
    .bands-runningorder .bands-ro-list li::after { content:''; position:absolute; inset-inline-end:100%; top:calc(var(--ro-node-y) - 1.5px); width:calc(var(--ro-axis-gap) + var(--ro-axis-inset) + 3px); height:1px; background:var(--stage-accent); opacity:.65; pointer-events:none; }

}
}

/* Fan Voting: near-transparent cards with a soft glass backdrop. */
.bands-fan-voting .bands-voting-panel,.bands-fan-voting .bands-battle-card { background:#001d2c0d; -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }

/* Voting balance belongs to the action feedback, above its notice. */
.bands-fan-voting .bands-voting-remaining { text-align:end; margin:0 0 .65rem; }
.bands-runningorder .bands-ro-subtitle { display:block; font-size:.78rem; color:var(--ro-card-muted); margin-block-start:.25rem; overflow-wrap:anywhere; }
.bands-runningorder .bands-ro-meta { display:block; margin-block-start:.25rem; overflow-wrap:anywhere; }

/* Full-card band links and subtitles pinned to the lower left. */
.bands-slot-battle a.bands-battle-link { position:relative; isolation:isolate; box-sizing:border-box; min-height:7rem; height:100%; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:auto 1fr; align-items:start; }
.bands-slot-battle a.bands-battle-link:hover { background:transparent; }
.bands-slot-battle .bands-battle-card .bands-battle-card-image,.bands-slot-battle .bands-battle-card-shade { position:absolute; inset:0; width:100%; height:100%; border-radius:2px; pointer-events:none; }
.bands-slot-battle .bands-battle-card .bands-battle-card-image { z-index:-2; object-fit:cover; }
.bands-slot-battle .bands-battle-card-shade { z-index:-1; background:linear-gradient(110deg,#00121de0,#00121d99); transition:opacity .2s ease; }
.bands-slot-battle .bands-battle-link > .bands-battle-thumb { display:none; }
.bands-slot-battle .bands-battle-subtitle { grid-column:1/-1; grid-row:2; align-self:end; text-align:start; }
.bands-slot-battle .bands-battle-band-info { grid-column:1; grid-row:1; }
.bands-slot-battle .bands-score,.bands-slot-battle .bands-battle-fixed { grid-column:2; grid-row:1; }
.bands-runningorder .bands-ro-card-content { position:static; display:flex; flex-direction:column; height:100%; box-sizing:border-box; }
.bands-runningorder .bands-ro-card-content > :not(.bands-ro-card-link),.bands-runningorder .bands-ro-card-link .bands-ro-band-name { position:relative; z-index:2; }
.bands-runningorder .bands-ro-card-link { position:static; display:block; color:inherit; }
.bands-runningorder .bands-ro-card-link::after { content:''; position:absolute; inset:0; z-index:3; border-radius:2px; }
.bands-runningorder .bands-ro-card-link:focus-visible::after { outline:3px solid #f4ce60; outline-offset:4px; }
.bands-runningorder .bands-ro-subtitle { order:1; margin-block-start:auto; padding-block-start:.4rem; text-align:start; }
.bands-runningorder .bands-ro-card-shade { transition:opacity .2s ease; }
.bands-slot-battle .bands-battle-card:hover .bands-battle-card-shade,.bands-slot-battle .bands-battle-card:focus-within .bands-battle-card-shade,.bands-runningorder .bands-ro-list li:hover .bands-ro-card-shade,.bands-runningorder .bands-ro-list li:focus-within .bands-ro-card-shade { opacity:.5; }

/* Saved crop modes apply to background photos at every viewport size. */
.bands-slot-battle .bands-battle-card .bands-battle-card-image { object-position:center; }
.bands-slot-battle .bands-battle-card .bands-battle-image-top { object-position:center top; }
.bands-slot-battle .bands-battle-card .bands-battle-image-bottom { object-position:center bottom; }

.bands-unavailable-notice { padding:1.5rem; border:1px solid #8898a766; border-inline-start:3px solid #399aff; border-radius:5px; background:#001d2c54; text-align:center; }
.bands-unavailable-notice > :last-child,.bands-rich-text > :last-child,.bands-voting-notice-text > :last-child { margin-block-end:0; }
.bands-fan-voting .bands-voting-explanation > .bands-rich-text { margin-block:0 .9rem; white-space:pre-line; }
.bands-fan-voting .bands-voting-notice-text { min-width:0; white-space:pre-line; }
.bands-runningorder > .bands-provisional { text-align:center; white-space:pre-line; }

/* Media inserted into visitor notices stays inside its text panel. */
.bands-rich-text img,.bands-voting-notice-text img,.bands-battle-status img,.bands-provisional img,.bands-unavailable-notice img { max-width:100%; height:auto; }
