*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;color:#222;background:#f7f8fa}
header{background:#2b6cb0;color:#fff;padding:16px}header a{color:#fff;text-decoration:none}h1{margin:0;font-size:1.5rem}
main{max-width:1100px;margin:auto;padding:12px}.ad{border:2px dashed #999;background:#eee;color:#666;text-align:center;padding:24px;margin:12px 0;font-size:.9rem}
.controls{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}input,select{padding:8px;font-size:1rem;flex:1;min-width:160px}
table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:8px;border-bottom:1px solid #ddd;text-align:left;vertical-align:top;font-size:.9rem}th{background:#edf2f7}
.b{padding:2px 6px;border-radius:4px;font-size:.75rem}.v{background:#c6f6d5}.t{background:#fefcbf}.u{background:#fed7d7}
.cities a{display:block;background:#fff;padding:16px;margin:8px 0;border-radius:8px;font-size:1.2rem}
@media(max-width:700px){thead{display:none}tr{display:block;background:#fff;margin:8px 0;border-radius:8px}td{display:block;border:0;padding:4px 10px}td:before{content:attr(data-l)": ";font-weight:600}}
footer{font-size:.8rem;color:#666;padding:16px;text-align:center}
nav.cats{display:flex;flex-wrap:wrap;gap:.4rem;margin:.6rem 0}nav.cats a{padding:.3rem .7rem;border:1px solid #ccc;border-radius:999px;text-decoration:none}nav.cats a[aria-current]{background:#222;color:#fff}
tr.mh th{text-align:left;background:#f3f3f3;padding:.5rem}#ctl{display:flex;flex-wrap:wrap;gap:.5rem;margin:.5rem 0}
.viewtoggle{display:flex;gap:0;margin:.5rem 0}.viewtoggle button{padding:.4rem 1rem;border:1px solid #222;background:#fff;cursor:pointer}.viewtoggle button[aria-pressed=true]{background:#222;color:#fff}
.calnav{display:flex;justify-content:space-between;align-items:center;margin:.5rem 0}.calnav button{padding:.3rem .8rem}
.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.dow{font-weight:600;text-align:center;font-size:.8rem}
.day{min-height:80px;border:1px solid #ddd;padding:2px;font-size:.75rem;overflow:hidden}.day.empty{border:none}.day.today{outline:2px solid #e60}.day .dn{display:block;color:#666}
.day a{display:block;margin:1px 0;padding:1px 3px;background:#eef4ff;border-radius:3px;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:640px){.grid{grid-template-columns:1fr}.dow,.day.empty,.day:not(.has){display:none}.day{min-height:0}.day a{white-space:normal}.day .dn::after{content:" " attr(data-x)}}
.b.unc{background:#fff3cd;color:#7a5200;border:1px dashed #b38600;font-weight:600}.day a .b.unc{padding:0 3px;font-size:.65rem}
.intro{max-width:70ch;margin:.5rem 0 1rem}
.cityswitch{display:inline-block;margin:.3rem 0}.cityswitch select{font:inherit;padding:2px 4px}
