:root{--black:#050708;--panel:#0b1114;--line:#26363d;--green:#7cff8b;--amber:#ffd75a;--white:#edf5ef;--muted:#94a59d;--red:#ff7c70}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background:radial-gradient(circle at top,#11191d,#030405 58%);color:var(--white);font-family:"Courier New",ui-monospace,monospace;min-height:100vh}.board{max-width:1220px;margin:auto;padding:24px}.score-header{text-align:center;border:3px solid var(--line);background:#070b0d;padding:22px;border-radius:8px;box-shadow:inset 0 0 30px #000}.league{letter-spacing:.35em;color:var(--amber);font-weight:900}.score-header h1{font-size:clamp(2rem,7vw,5rem);margin:.15em 0;color:var(--green);text-shadow:0 0 12px rgba(124,255,139,.35);letter-spacing:.08em}.score-header h2{margin:.4rem 0;font-size:clamp(1rem,3vw,1.8rem)}.updated{color:var(--muted);font-size:.78rem}.big-scores{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:16px 0}.score-box,.shirt-box{border:3px solid var(--line);background:var(--panel);padding:18px;text-align:center;border-radius:6px}.score-box span,.shirt-box span{display:block;color:var(--amber);font-weight:900;letter-spacing:.08em}.score-box strong,.shirt-box strong{display:block;font-size:clamp(2.6rem,7vw,5rem);line-height:1;color:var(--green);margin:.15em 0;text-shadow:0 0 10px rgba(124,255,139,.28)}.score-box small,.shirt-box small{color:var(--muted)}.score-panel{border:3px solid var(--line);background:#070b0d;margin-top:16px;border-radius:6px;overflow:hidden}.score-panel h3{margin:0;background:#121d21;color:var(--amber);padding:13px 18px;letter-spacing:.16em}.standing-row{display:grid;grid-template-columns:44px minmax(180px,2fr) minmax(120px,3fr) 76px 100px;gap:12px;align-items:center;padding:14px 18px;border-top:1px solid #1d292e}.rank{color:var(--muted);font-weight:900}.stop-name{font-weight:900}.stop-name small{display:inline-block;color:var(--amber);font-size:.67rem;margin-left:8px}.bar{height:16px;background:#162126;border:1px solid #30434b;display:block}.bar i{display:block;height:100%;background:var(--green);box-shadow:0 0 8px rgba(124,255,139,.5)}.standing-row>strong{font-size:1.35rem;color:var(--green)}.visits{color:var(--muted);font-size:.8rem}.shirt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:12px;padding:16px}.shirt-box strong{font-size:3.3rem}.empty{padding:24px;text-align:center;color:var(--muted)}footer{text-align:center;color:var(--muted);font-size:.72rem;padding:28px 0;letter-spacing:.08em}@media(max-width:760px){.board{padding:10px}.big-scores{grid-template-columns:repeat(2,1fr)}.standing-row{grid-template-columns:35px 1fr 65px;gap:8px}.standing-row .bar,.visits{grid-column:2/4;width:100%}.score-header{padding:16px}.score-panel h3{font-size:1rem}.league{letter-spacing:.18em;font-size:.8rem}}

/* v1.7.4: clearer shirt quantities + charity pledge retirement board */
.shirt-color-group{border-top:1px solid #26363d;padding:0 0 8px}.shirt-color-group h4{margin:0;padding:14px 18px 2px;color:var(--white);font-size:1.15rem;letter-spacing:.06em}.qty-label{display:block!important;color:var(--amber)!important;font-weight:900;letter-spacing:.12em;margin-top:12px}.charity-row.retired{opacity:.62}.charity-row.retired .bar i{background:var(--amber);box-shadow:0 0 8px rgba(255,215,90,.45)}.charity-row.retired .visits b{color:var(--amber)}.pledge-retired-summary{text-align:center;padding:18px;border-top:2px solid var(--line);color:var(--amber);font-size:1.1rem;letter-spacing:.08em}.pledge-retired-summary strong{color:var(--green);font-size:1.4rem}.charity-row .stop-name small{display:block;margin:4px 0 0;color:var(--amber)}

/* v1.8.0 operator links + legal footer */
.operator-link-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:16px}.operator-link-grid a{display:flex;min-height:64px;align-items:center;justify-content:center;text-align:center;border:2px solid var(--amber);color:var(--amber);font-weight:900;text-decoration:none;padding:12px}.score-note{text-align:center;color:var(--muted)}footer .legal-disclaimer{font-size:.58rem;line-height:1.4;color:#728089;max-width:1050px;margin:18px auto 0;text-align:left;letter-spacing:0;text-transform:none}@media(max-width:650px){.operator-link-grid{grid-template-columns:1fr}}

/* v1.8.2 compact operator emoji shortcuts */
.operator-emoji-grid{display:flex;justify-content:center;align-items:center;gap:28px;padding:18px 16px 24px}
.operator-emoji{display:grid;place-items:center;width:92px;height:92px;border:2px solid var(--amber);border-radius:18px;background:#071016;text-decoration:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.operator-emoji span{font-size:3.6rem;line-height:1;filter:drop-shadow(0 0 9px rgba(255,215,90,.18))}
.operator-emoji:hover,.operator-emoji:focus-visible{transform:translateY(-2px);box-shadow:0 0 22px rgba(255,215,90,.25);outline:none}
@media(max-width:500px){.operator-emoji{width:82px;height:82px}.operator-emoji span{font-size:3.15rem}}


/* =====================================================================
   v1.9.0 SPLIT-FLAP SCOREBOARD
   Old railway/airport departure-board character.
   ===================================================================== */
:root{
  --bg:#070707;
  --panel:#0d0d0d;
  --line:#3b3329;
  --green:#f7e7b0;
  --amber:#f2b544;
  --white:#fff8e8;
  --muted:#a99a86;
  --red:#c9192c
}
body{
  background:
    radial-gradient(circle at 50% -10%,rgba(201,25,44,.09),transparent 28%),
    repeating-linear-gradient(0deg,#070707 0,#070707 3px,#080808 3px,#080808 4px);
  color:var(--white)
}
.board-shell,.scoreboard{max-width:1240px}
.score-header{
  background:linear-gradient(180deg,#121212,#090909);
  border:3px solid #4b3e31;
  border-top:7px solid var(--red);
  box-shadow:0 16px 42px rgba(0,0,0,.36)
}
.score-header h1{
  font-family:"Courier New",monospace;
  color:#fff1c7;
  letter-spacing:.12em;
  text-shadow:0 0 8px rgba(242,181,68,.18)
}
.score-box,.shirt-box{
  position:relative;
  background:#0c0c0c;
  border:2px solid #463a2f;
  box-shadow:inset 0 0 0 1px #18130f,0 7px 18px rgba(0,0,0,.24);
  overflow:hidden
}
.score-box:after,.shirt-box:after,.flap-cell:after{
  content:"";
  position:absolute;left:0;right:0;top:50%;
  height:1px;background:#000;
  box-shadow:0 1px 0 rgba(255,255,255,.08);
  pointer-events:none
}
.score-box span,.shirt-box span,.score-panel h3,.standing-row{
  font-family:"Courier New",monospace;
  text-transform:uppercase;
  letter-spacing:.08em
}
.score-box strong,.shirt-box strong{
  font-family:"Courier New",monospace;
  color:#fff3c5;
  text-shadow:0 0 7px rgba(242,181,68,.18)
}
.score-panel{
  background:#0a0a0a;
  border:2px solid #3f342a;
  box-shadow:inset 0 0 0 1px #15110e
}
.score-panel h3{
  background:#111;
  color:#f2b544;
  border-bottom:2px solid #3d3228
}
.standing-row{
  background:#0d0d0d;
  border-bottom:1px solid #2e2822;
  min-height:48px
}
.rank,.stop-name,.visits{color:#f8e9b8}
.bar{background:#17120f;border:1px solid #3c3026}
.bar i{background:linear-gradient(90deg,#a10f1c,#f2b544)}
.charity-row.retired{opacity:1;background:#100d0d}
.charity-row.retired .stop-name,.charity-row.retired .visits{color:#c9c1b1}
.charity-row.retired .bar i{background:#8c7a60}
.operator-emoji{
  border-color:#5b4735;background:#0c0c0c;
  border-radius:4px
}
footer{border-top:2px solid #3b3027;color:#827566}

/* Split-flap animation: subtle one-time mechanical flip on page load/refresh */
@keyframes flapFlip{
  0%{transform:rotateX(-86deg);filter:brightness(.45)}
  38%{transform:rotateX(12deg);filter:brightness(1.2)}
  62%{transform:rotateX(-5deg)}
  100%{transform:rotateX(0)}
}
.score-box strong,.shirt-box strong,.standing-row strong,.visits,.stop-name,.rank{
  transform-origin:center top;
  animation:flapFlip .46s cubic-bezier(.22,.8,.28,1) both
}
.score-box:nth-child(2) strong{animation-delay:.06s}
.score-box:nth-child(3) strong{animation-delay:.12s}
.score-box:nth-child(4) strong{animation-delay:.18s}
.standing-row:nth-child(2) span,.standing-row:nth-child(2) strong{animation-delay:.04s}
.standing-row:nth-child(3) span,.standing-row:nth-child(3) strong{animation-delay:.08s}
.standing-row:nth-child(4) span,.standing-row:nth-child(4) strong{animation-delay:.12s}

/* tiny rivets / mechanical details */
.score-box:before,.shirt-box:before,.score-panel:before{
  content:"";
  position:absolute;width:4px;height:4px;border-radius:50%;
  background:#5d5142;top:5px;left:5px;
  box-shadow:calc(100% - 10px) 0 #5d5142
}
.score-panel{position:relative}
