/* ==========================================================================
   Schedule page — layered on base.css (tokens, chrome, .win, .chip, .foot)
   Markup: /schedule/index.html · behaviour: /assets/js/schedule.js
   ========================================================================== */

[hidden]{display:none !important}

/* Kind colours. Off-ice normally takes --warn, but the amber theme's accent IS --warn,
   so it borrows the violet there. Colour is never the only cue: kinds also differ by
   border style (see .pill / .ev) and carry a screen-reader label. */
:root{--k-game:var(--acc);--k-practice:var(--acc2);--k-off:var(--warn);--k-event:var(--hi)}
:root[data-theme=amber]{--k-off:178 124 255}
.k-game{--k:var(--k-game)}
.k-practice{--k:var(--k-practice)}
.k-off{--k:var(--k-off)}
.k-event{--k:var(--k-event)}

/* ---- header --------------------------------------------------------------- */
.shero{padding:clamp(36px,7vh,76px) 0 clamp(20px,3.5vh,32px)}
.shero h1{margin:0;font:600 clamp(34px,5.6vw,60px)/1.05 var(--sans);letter-spacing:-.04em;color:rgb(var(--hi))}
.sstatus{margin-top:14px;font:400 13.5px/1.5 var(--mono);color:rgb(var(--dim))}
.sec-note{margin-top:14px;font:400 13px/1.6 var(--mono);color:rgb(var(--dim))}

.notice{margin:0 0 18px;padding:12px 16px;border-radius:10px;font:400 13px/1.55 var(--mono);color:rgb(var(--fg));background:rgb(var(--acc) / .06);border:1px solid rgb(var(--acc) / .28)}
.notice.warn{color:rgb(var(--warn));background:rgb(var(--warn) / .08);border-color:rgb(var(--warn) / .5)}

/* ---- up-next cards -------------------------------------------------------- */
.next{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:14px;margin-bottom:22px}
.ncard{min-width:0;padding:16px 18px;border-radius:12px;background:rgb(var(--bg) / .58);-webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2);border:1px solid rgb(var(--k) / .34);border-left:3px solid rgb(var(--k))}
.n-l{font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:rgb(var(--k))}
.n-l::before{content:"// ";color:rgb(var(--dim))}
.n-t{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:9px;font:600 clamp(18px,2.2vw,22px)/1.25 var(--sans);color:rgb(var(--hi));overflow-wrap:anywhere}
.n-w{margin-top:7px;font:400 13.5px/1.5 var(--mono);color:rgb(var(--fg))}
.n-r{margin-top:2px;font:500 13px/1.5 var(--mono);color:rgb(var(--k))}
.n-v{margin-top:10px;font:400 12.5px/1.5 var(--mono);color:rgb(var(--dim))}

/* ---- calendar window ------------------------------------------------------ */
.cal{min-width:0;padding-bottom:36px}
.cal .win{min-width:0}
.cal .links{margin-top:18px}

.ctl{display:grid;gap:12px;padding:14px 16px;border-bottom:1px solid rgb(var(--acc) / .12)}
.ctl-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 14px}
.ctl-row .seg{margin-left:auto}
.mnav{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mtitle{min-width:7.2em;margin:0 4px;text-align:center;font:600 clamp(17px,2.4vw,22px)/1.2 var(--sans);letter-spacing:-.02em;color:rgb(var(--hi))}
.mo-s{display:none}

.ib{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0;border-radius:9px;font:500 13px/1 var(--mono);color:rgb(var(--hi));background:rgb(var(--acc) / .06);border:1px solid rgb(var(--acc) / .28);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}
.ib.txt{padding:0 14px}
.ib:hover{background:rgb(var(--acc) / .14);border-color:rgb(var(--acc) / .7);box-shadow:0 0 18px rgb(var(--acc) / .18)}
.ib:disabled{opacity:.35;cursor:not-allowed;background:rgb(var(--acc) / .06);border-color:rgb(var(--acc) / .28);box-shadow:none}
.ib[aria-pressed=true]{background:rgb(var(--acc) / .16);border-color:rgb(var(--acc) / .7)}
.ib svg{width:18px;height:18px;flex:none}
.ib svg.st{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ib:focus-visible{border-radius:9px}

.seg{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:rgb(var(--acc) / .05);border:1px solid rgb(var(--acc) / .28)}
.seg button{min-width:44px;height:30px;padding:0 14px;border:0;border-radius:7px;font:500 12.5px/1 var(--mono);color:rgb(var(--dim));background:transparent;cursor:pointer;transition:background .15s,color .15s}
.seg button:hover{color:rgb(var(--hi))}
.seg button[aria-pressed=true]{color:rgb(var(--hi));background:rgb(var(--acc) / .16);box-shadow:inset 0 0 0 1px rgb(var(--acc) / .5)}
.seg button:focus-visible{border-radius:7px}

.filters{display:flex;flex-wrap:wrap;gap:8px}
.fchip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;font:400 12.5px/1 var(--mono);color:rgb(var(--hi));background:rgb(var(--k) / .08);border:1px solid rgb(var(--k) / .55);cursor:pointer;transition:background .15s,opacity .15s}
.fchip:hover{background:rgb(var(--k) / .16)}
.fchip:focus-visible{border-radius:999px}
.kd{flex:none;width:9px;height:9px;box-sizing:border-box;border-radius:50%;background:rgb(var(--k));border:1.5px solid rgb(var(--k))}
.ct{color:rgb(var(--dim))}
.fchip[aria-pressed=false]{border-style:dashed;background:transparent;opacity:.62}
.fchip[aria-pressed=false] .kd{background:transparent}

.views{padding:14px 16px 18px}

/* ---- month grid ----------------------------------------------------------- */
.dow,.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.dow{margin-bottom:6px}
.dow span{padding:2px 0;text-align:center;font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:rgb(var(--dim))}

.day{display:flex;flex-direction:column;gap:6px;min-width:0;min-height:104px;padding:8px;overflow:hidden;border-radius:10px;text-align:left;font:inherit;color:rgb(var(--fg));background:rgb(var(--bg) / .4);border:1px solid rgb(var(--acc) / .12);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.day.has-ev{background:rgb(var(--bg) / .62);border-color:rgb(var(--acc) / .22)}
.day:hover{background:rgb(var(--acc) / .05);border-color:rgb(var(--acc) / .4)}
.day.is-out{opacity:.42}
.day[aria-pressed=true]{background:rgb(var(--acc2) / .07);border-color:rgb(var(--acc2));box-shadow:0 0 0 1px rgb(var(--acc2) / .5),0 0 18px rgb(var(--acc2) / .22)}
.day:focus-visible{border-radius:10px;outline-offset:1px}
.dn{align-self:flex-start;font:500 12px/1.4 var(--mono);color:rgb(var(--hi))}
.day.is-today .dn{padding:0 6px;border-radius:6px;font-weight:600;color:rgb(var(--bg));background:rgb(var(--acc))}

.pills{display:flex;flex-direction:column;gap:3px;min-width:0}
.pills .pill:nth-child(n+4){display:none}
.pill{display:flex;align-items:baseline;gap:5px;min-width:0;padding:2px 5px;border-radius:5px;font:400 11px/1.35 var(--mono);color:rgb(var(--hi));background:rgb(var(--k) / .08);border:1px solid rgb(var(--k) / .5)}
.pt{flex:none;font-weight:700;color:rgb(var(--k))}
.pl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill.k-game{background:rgb(var(--k) / .18);border-color:rgb(var(--k) / .85);border-left-width:3px}
.pill.k-practice{background:rgb(var(--k) / .07);border-color:rgb(var(--k) / .3)}
.pill.k-off{border-style:dashed}
.pill.k-event{border-style:dotted}
.pill.is-x{opacity:.7;color:rgb(var(--dim))}
.pill.is-x .pt,.pill.is-x .pl{text-decoration:line-through}
.more{padding-left:5px;font:400 10.5px/1.3 var(--mono);color:rgb(var(--dim))}

.pips{display:none;flex-wrap:wrap;gap:4px;margin-top:auto}
.pips i{width:6px;height:6px;border-radius:50%;background:rgb(var(--k))}
.pips i.is-x{background:transparent;box-shadow:inset 0 0 0 1.5px rgb(var(--k))}

/* ---- selected-day detail + event rows ------------------------------------- */
.detail{margin-top:18px;padding-top:16px;border-top:1px dashed rgb(var(--acc) / .16)}
.detail:empty{display:none}
.dhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:12px}
.dhead h3{font:600 clamp(16px,2vw,19px)/1.3 var(--sans);color:rgb(var(--hi))}
.dct{font:400 12px/1.4 var(--mono);color:rgb(var(--acc))}
.dlist{display:grid;gap:10px}
.dempty{padding:10px 0;font:400 13px/1.6 var(--mono);color:rgb(var(--dim))}

.ev{min-width:0;padding:12px 14px;border-radius:10px;background:rgb(var(--k) / .05);border:1px solid rgb(var(--k) / .22);border-left:3px solid rgb(var(--k))}
.ev.k-off{border-left-style:dashed}
.ev.k-event{border-left-style:dotted}
.ev-t{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font:600 15px/1.35 var(--sans);color:rgb(var(--hi));overflow-wrap:anywhere}
.ev-w{margin-top:4px;font:400 13px/1.5 var(--mono);color:rgb(var(--fg))}
.ev-a{margin-top:2px;font:400 12.5px/1.5 var(--mono);color:rgb(var(--dim))}
.ev-v{margin-top:6px;font:400 12.5px/1.5 var(--mono);color:rgb(var(--dim))}
.vlink{text-decoration:underline;text-decoration-color:rgb(var(--acc) / .4);text-underline-offset:3px}
.vlink:hover{text-decoration-color:currentColor}
.ev.is-x{opacity:.85}
.ev.is-x .tt{color:rgb(var(--dim));text-decoration:line-through}
.ev.is-past{opacity:.62}

.badge{display:inline-block;padding:2px 7px;border-radius:5px;font:500 10.5px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:rgb(var(--hi));background:rgb(var(--acc) / .08);border:1px solid rgb(var(--acc) / .4)}
.badge.bad{color:rgb(var(--err));background:rgb(var(--err) / .1);border-color:rgb(var(--err) / .55)}
.badge.warn{color:rgb(var(--warn));background:rgb(var(--warn) / .1);border-color:rgb(var(--warn) / .55)}

/* ---- agenda --------------------------------------------------------------- */
.agenda-more{display:flex;margin-bottom:14px}
.agenda{display:grid;gap:14px}
.agenda-foot{display:flex}
.agenda-foot .ib{margin-top:14px}
.ag-m{margin:10px 0 0;font:500 11px/1.2 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:rgb(var(--acc))}
.ag-m::before{content:"// ";color:rgb(var(--dim))}
.ag-day{display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;align-items:start;padding-top:12px;border-top:1px dashed rgb(var(--acc) / .14)}
.ag-day.is-past{opacity:.62}
.ag-day.is-past .ev.is-past{opacity:1}
.ag-h{display:flex;flex-direction:column;gap:2px;font:inherit}
.ag-d{font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:rgb(var(--dim))}
.ag-n{font:600 18px/1.2 var(--sans);color:rgb(var(--hi))}
.ag-rel{font:500 10.5px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:rgb(var(--acc))}
.ag-day.is-today .ag-n{color:rgb(var(--acc))}

/* ---- responsive ----------------------------------------------------------- */
@media (max-width:720px){
  .views{padding:12px 10px 14px}
  .dow,.grid{gap:4px}
  .day{min-height:56px;padding:6px}
  .pills{display:none}
  .pips{display:flex}
}
@media (max-width:480px){
  .ctl{padding:12px}
  .mo-l{display:none}
  .mo-s{display:inline}
  .mtitle{min-width:5.6em}
  .dow span{font-size:10px;letter-spacing:.02em}
  .ag-day{grid-template-columns:58px minmax(0,1fr);gap:10px}
  .ag-n{font-size:16px}
  .ncard{padding:14px 16px}
}
@media (pointer:coarse){
  .ib{min-width:44px;height:44px}
  .seg button{height:38px}
  .fchip{min-height:44px}
  /* the venue link is one line of small type: pad the hit area and cancel it with a negative margin so the lines don't move */
  .vlink{display:inline-block;padding:8px 0;margin:-8px 0}
}

/* every page's status bar now carries four windows (base.css drops the hint, clock and copyright as it narrows); on this page the whole right side goes at 520px */
@media (max-width:520px){.tm-r{display:none}}
@media (max-width:360px){.tm-win{padding:0 6px}.tm-sess{padding:0 8px}}

/* ---- print: a clean grid or list, no chrome ------------------------------- */
@media print{
  @page{margin:.55in}
  :root,:root[data-theme]{--bg:255 255 255;--fg:34 40 48;--hi:0 0 0;--dim:98 108 120;--acc:0 104 66;--acc2:0 88 138;--warn:150 88 0;--err:170 30 40;color-scheme:light}
  html{background:#fff}
  body{padding:0;font-size:10pt;overflow:visible}
  .bg,.bg-glow,.bg-vig,.crt,.topbar,.tmux,.skip,.no-print,.win-bar,.dots,.shero .eyebrow,.ctl .seg,.filters,.ib,.agenda-more,.agenda-foot,.detail,.links{display:none !important}
  .wrap{max-width:none;padding:0}
  .rv{opacity:1 !important;transform:none !important;animation:none !important}
  [data-spot]::before{display:none}
  .win,.card,.ncard{background:none !important;box-shadow:none !important;-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid #d5dae0 !important;border-radius:6px}
  .ncard{border-left:3px solid #000 !important}
  .shero{padding:0 0 12px}
  .shero h1{font-size:26pt}
  .sstatus,.n-w,.n-r,.n-v{font-size:9pt}
  .n-l,.n-r{color:#000}
  .next{margin-bottom:12px;gap:10px}
  .ctl{padding:8px 10px;border-bottom:1px solid #d5dae0}
  .mtitle{margin:0;text-align:left;font-size:14pt}
  .views{padding:10px}
  .dow,.grid{gap:3px}
  .dow span{font-size:8pt}
  .day{min-height:.85in;padding:4px;background:none !important;box-shadow:none !important;border:1px solid #d5dae0 !important;border-radius:4px;break-inside:avoid}
  .day.is-out{opacity:.45}
  .day.is-today .dn{padding:0 4px;color:#000;background:none;border:1.5px solid #000}
  .dn{font-size:8.5pt}
  .pills{display:flex !important}
  .pills .pill:nth-child(n+4){display:flex}
  .more,.pips{display:none !important}
  .pill{padding:1px 3px;font-size:7.5pt;color:#000;background:none;border:1px solid #8a94a0}
  .pill.k-game{border:2px solid #000;font-weight:700}
  .pill.k-practice{border-color:#8a94a0}
  .pill.k-off{border-style:dashed}
  .pill.k-event{border-style:dotted}
  .pt{color:#000}
  .pl{overflow:visible;white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
  .dlist{gap:6px}
  .ev{break-inside:avoid;padding:6px 10px;background:none;border-color:#d5dae0;border-left-color:#000}
  .ev.is-past,.ag-day.is-past{opacity:1}
  .ev-t{font-size:10.5pt}
  .ev-w,.ev-a,.ev-v{font-size:9pt}
  .badge,.badge.bad,.badge.warn{color:#000;background:none;border-color:#8a94a0}
  .ag-day{break-inside:avoid;padding-top:8px}
  .ag-m{margin-top:8px;color:#000}
  .sec-note{margin-top:8px;font-size:9pt}
  .foot{border-top:1px solid #d5dae0;padding:10px 0 0}
  .foot a{text-decoration:none;color:inherit}
  a{color:inherit}
}
