@font-face{font-family:"Barlow";font-weight:400;font-style:normal;font-display:swap;src:url("../vendor/fonts/barlow-400.woff2") format("woff2")}
@font-face{font-family:"Barlow";font-weight:500;font-style:normal;font-display:swap;src:url("../vendor/fonts/barlow-500.woff2") format("woff2")}
@font-face{font-family:"Barlow";font-weight:600;font-style:normal;font-display:swap;src:url("../vendor/fonts/barlow-600.woff2") format("woff2")}
@font-face{font-family:"Barlow Condensed";font-weight:500;font-style:normal;font-display:swap;src:url("../vendor/fonts/barlow-condensed-500.woff2") format("woff2")}
@font-face{font-family:"Barlow Condensed";font-weight:600;font-style:normal;font-display:swap;src:url("../vendor/fonts/barlow-condensed-600.woff2") format("woff2")}
@font-face{font-family:"Barlow Condensed";font-weight:700;font-style:normal;font-display:swap;src:url("../vendor/fonts/barlow-condensed-700.woff2") format("woff2")}
:root{
  --bg:#F5F9FA; --surface:#FFFFFF; --ink:#12242E; --muted:#5B6F7A; --line:#D5E2E7;
  --pool:#0B5A7A; --pool-tint:#E3F0F5; --lane:#C23B2E; --lane-tint:#FBEAE7; --hover:#EEF6F9;
  color-scheme: light;
}
/* screen only, so printing from dark mode still gets dark ink on white paper */
@media screen and (prefers-color-scheme: dark){
  :root{
    --bg:#0E1A21; --surface:#14242D; --ink:#E4EEF2; --muted:#93A8B3; --line:#27404C;
    --pool:#5DB4D6; --pool-tint:#17323F; --lane:#F07A6B; --lane-tint:#3A1F1C; --hover:#1B313C;
    color-scheme: dark;
  }
}
:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Barlow,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--pool);outline-offset:2px}

header{padding:20px 24px 12px;display:flex;flex-wrap:wrap;gap:12px 24px;align-items:end;justify-content:space-between}
h1{margin:0;font:700 2rem/1 "Barlow Condensed","Arial Narrow",sans-serif;letter-spacing:.01em}
h1 small{display:block;font:500 .95rem/1.4 Barlow,sans-serif;color:var(--muted);letter-spacing:0;margin-top:4px}
.actions{display:flex;flex-wrap:wrap;gap:8px}
.btn{border:1px solid var(--line);background:var(--surface);padding:7px 14px;border-radius:6px;cursor:pointer;font-weight:500}
.btn:hover{background:var(--hover)}
.btn.primary{background:var(--pool);border-color:var(--pool);color:#fff}
.btn.primary:hover{filter:brightness(1.08)}
.btn:disabled{opacity:.45;cursor:default}

#drop{margin:0 24px;border:2px dashed var(--line);border-radius:10px;padding:28px;text-align:center;color:var(--muted);background:var(--surface)}
#drop.over{border-color:var(--pool);background:var(--pool-tint);color:var(--ink)}
#drop strong{color:var(--ink)}
#files{margin:10px 24px 0;font-size:.88rem;color:var(--muted)}
#files span{display:inline-block;margin-right:14px}
#msg{margin:8px 24px 0;font-size:.9rem;color:var(--lane)}

.wrap{margin:16px 24px 32px;overflow:auto;max-height:calc(100vh - 220px);border:1px solid var(--line);border-radius:8px;background:var(--surface)}
table.grid{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}
.grid th,.grid td{border-bottom:1px solid var(--line);padding:6px 12px;white-space:nowrap}
.grid thead th{position:sticky;top:0;background:var(--surface);z-index:2;text-align:center;font-weight:500}
.grid tr.h1 th.cg{background:var(--pool-tint);color:var(--pool);font:700 1rem "Barlow Condensed",sans-serif;border-left:2px solid var(--ink)}
.grid tr.h2 th{top:var(--h1,31px);font:600 1rem/1.2 "Barlow Condensed",sans-serif;border-bottom:2px solid var(--ink)}
.grid .gstart{border-left:2px solid var(--ink)}
.grid th.sw{position:sticky;left:0;background:var(--surface);z-index:1;text-align:left;border-right:2px solid var(--ink)}
.grid th.sw .fn{display:block;font:600 1.05rem/1.15 "Barlow Condensed",sans-serif}
.grid th.sw .tm{display:block;font-size:.72rem;color:var(--muted);font-weight:400}
.grid thead th.sw{z-index:3;vertical-align:bottom;color:var(--muted);font:500 .85rem Barlow,sans-serif;border-bottom:2px solid var(--ink)}
.grid td{text-align:center;font:600 1.1rem "Barlow Condensed",sans-serif}
.grid td button{all:unset;cursor:pointer;padding:2px 6px;border-radius:4px}
.grid td button:hover{background:var(--hover);text-decoration:underline}
.grid td button:focus-visible{outline:2px solid var(--pool)}
.grid td .n{display:block;font:400 .7rem Barlow,sans-serif;color:var(--muted)}
.grid tbody tr:hover td,.grid tbody tr:hover th.sw{background:var(--hover)}

#viewbar{display:flex;align-items:center;gap:10px;margin:12px 24px 0;font-size:.88rem;color:var(--muted)}
#viewbar[hidden]{display:none}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--surface)}
.seg button{border:0;background:none;padding:5px 12px;cursor:pointer;font-weight:500;color:var(--ink)}
.seg button+button{border-left:1px solid var(--line)}
.seg button:hover{background:var(--hover)}
.seg button[aria-pressed="true"]{background:var(--pool);color:var(--bg)}
/* event view: stacked course times, e.g. 24.51Y over 28.30L */
.grid td .ct{display:block;line-height:1.25}
.grid td .ct i{font:500 .72em Barlow,sans-serif;font-style:normal;color:var(--muted);margin-left:2px}
.grid td .ct.miss{font:400 .78rem Barlow,sans-serif;color:var(--muted)}

.empty{padding:40px 24px;text-align:center;color:var(--muted)}

dialog{border:1px solid var(--line);border-radius:10px;padding:0;background:var(--surface);color:var(--ink);width:min(720px,94vw);max-height:86vh}
dialog::backdrop{background:rgba(10,25,33,.45)}
.dhead{display:flex;justify-content:space-between;align-items:start;gap:12px;padding:16px 20px 8px;border-bottom:1px solid var(--line)}
.dhead h2{margin:0;font:700 1.5rem/1.1 "Barlow Condensed",sans-serif}
.dhead p{margin:2px 0 0;color:var(--muted)}
.dbody{padding:8px 20px 20px;overflow:auto;max-height:calc(86vh - 90px)}
table.hist{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.hist th{font-weight:500;color:var(--muted);font-size:.82rem;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
.hist td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.hist td.t{font:600 1.1rem "Barlow Condensed",sans-serif;white-space:nowrap}
.hist td.d{color:var(--muted);white-space:nowrap}
.hist tr.best td{background:var(--lane-tint)}
.hist tr.best td.t{color:var(--lane)}
.badge{display:inline-block;font:600 .7rem Barlow,sans-serif;padding:1px 6px;border-radius:3px;background:var(--lane);color:#fff;margin-left:6px;vertical-align:2px}

#picker{width:min(560px,94vw)}
.pk-tools{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;border-bottom:1px solid var(--line)}
.pk-tools input,.pk-tools select{border:1px solid var(--line);border-radius:6px;padding:6px 10px;background:var(--bg);flex:1 1 160px;min-width:0}
.pk-list{padding:4px 20px 12px;overflow:auto;max-height:52vh}
.pk-list label{display:flex;gap:10px;align-items:center;padding:5px 0;border-bottom:1px solid var(--line);cursor:pointer}
.pk-list label small{color:var(--muted);margin-left:auto;white-space:nowrap}
.pk-foot{display:flex;justify-content:space-between;gap:8px;padding:12px 20px;border-top:1px solid var(--line)}

.linkbtn{all:unset;cursor:pointer;color:var(--pool);text-decoration:underline;text-underline-offset:2px;font-weight:500}
.linkbtn:hover{text-decoration-thickness:2px}
.linkbtn:focus-visible{outline:2px solid var(--pool);outline-offset:2px;border-radius:2px}
#drop .private{display:flex;align-items:center;justify-content:center;gap:6px;margin:10px 0 0;font-size:.88rem}
footer{margin:0 24px 24px;font-size:.85rem;color:var(--muted)}
footer p{margin:0}
#help{width:min(680px,94vw)}
.help section+section{border-top:1px solid var(--line);margin-top:4px}
.help h3{margin:14px 0 6px;font:700 1.15rem/1.2 "Barlow Condensed",sans-serif}
.help ul,.help ol{margin:0 0 10px;padding-left:1.2em}
.help li{margin:4px 0}

#printhead,#appendix{display:none}

@media print{
  @page{size:landscape;margin:12mm}
  :root{--bg:#fff;--surface:#fff;--ink:#000;--muted:#444;--line:#bbb;--pool:#0B5A7A;--pool-tint:#E3F0F5;--lane:#B0281B;--lane-tint:#fff;padding:0}
  body{background:#fff;font-size:11px}
  header,#drop,#files,#msg,dialog,.noprint{display:none!important}
  #printhead{display:block;margin:0 0 8px}
  #printhead h1{font-size:1.6rem}
  #printhead p{margin:2px 0;color:#444}
  .wrap{overflow:visible;max-height:none;border:none;margin:0}
  .grid thead th,.grid th.sw{position:static}
  .grid th,.grid td{font-size:.95em;padding:3px 8px}
  /* times and names the same size, larger than the headers */
  .grid td,.grid th.sw .fn{font-size:1.3em}
  .grid td button{text-decoration:none!important;padding:0}
  .grid tr{break-inside:avoid}
  .grid thead{display:table-header-group}
  body.with-appendix #appendix{display:block;break-before:page}
  #appendix h2{font:700 1.3rem "Barlow Condensed",sans-serif;margin:14px 0 4px;break-after:avoid}
  #appendix h3{font:600 1.05rem "Barlow Condensed",sans-serif;margin:10px 0 2px;break-after:avoid}
  #appendix table{break-inside:avoid;margin-bottom:6px}
  .hist tr.best td{background:none;font-weight:600}
}
@media (max-width:600px){
  header{padding:16px}
  #drop{margin:0 16px}
  .wrap{margin:12px 8px 24px;max-height:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
