:root{color-scheme:light;--bg:#f5f6f8;--surface:#fff;--text:#172026;--muted:#596674;--line:#dde3e8;--accent:#176c54;--on:#23996c;--off:#df5360;--maybe:#e7b540;--unknown:#a2acb5}
*{box-sizing:border-box}body{margin:0;background:var(--tg-theme-secondary-bg-color,var(--bg));color:var(--tg-theme-text-color,var(--text));font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}main{max-width:640px;margin:auto;padding:20px 16px calc(28px + env(safe-area-inset-bottom))}header{display:flex;align-items:center;justify-content:space-between;margin:4px 0 24px}.brand{display:flex;gap:12px;align-items:center}.brand strong{letter-spacing:.1em;font-size:18px}.brand small{display:block;font-size:12px;color:var(--muted)}.mark{width:40px;height:40px;flex:0 0 40px;border-radius:50%;object-fit:cover;display:block;box-shadow:0 0 0 1px var(--line)}.card{background:var(--tg-theme-bg-color,var(--surface));border-radius:16px;padding:20px;margin-bottom:16px;box-shadow:0 0 0 1px var(--line),0 4px 12px #00000004}.section-head{display:flex;justify-content:space-between;gap:12px;align-items:center}h1,h2{font-size:18px;font-weight:600;letter-spacing:-.03em;margin:0}.eyebrow{font-size:9px;letter-spacing:.07em;color:var(--muted);text-align:right}label{display:block;font-size:12px;font-weight:600;margin:16px 0 6px}input,select,button{font:inherit;color:inherit;min-height:44px;border-radius:9px;border:1px solid var(--line);background:var(--tg-theme-bg-color,var(--surface))}input,select{width:100%;padding:10px 12px}button{cursor:pointer;padding:8px 14px}button:disabled,input:disabled{opacity:.5;cursor:default}:focus-visible{outline:3px solid #2686cf;outline-offset:2px}details{margin-top:16px}summary{cursor:pointer;min-height:44px;padding:10px 0;color:var(--tg-theme-link-color,var(--accent));font-weight:500}.muted,footer{color:var(--tg-theme-hint-color,var(--muted));font-size:13px}.field{position:relative}[role=listbox]{position:absolute;z-index:5;top:100%;left:0;right:0;margin-top:4px;background:var(--tg-theme-bg-color,var(--surface));border:1px solid var(--line);border-radius:10px;max-height:240px;overflow:auto;box-shadow:0 8px 24px #0002;padding:4px}[role=option]{display:block;width:100%;text-align:left;border:0;border-radius:6px}[role=option]:hover,[role=option]:focus{background:var(--tg-theme-secondary-bg-color,var(--bg))}.badge{font-size:12px;background:var(--tg-theme-secondary-bg-color,var(--bg));border:1px solid var(--line);padding:5px 9px;border-radius:20px;white-space:nowrap}.tabs{display:flex;gap:4px;padding:4px;background:var(--tg-theme-secondary-bg-color,var(--bg));border-radius:12px;margin-top:20px}.tabs button{flex:1;border:0;background:none}.tabs [aria-pressed=true]{background:var(--tg-theme-bg-color,var(--surface));box-shadow:0 1px 4px #0001;font-weight:600}.date{font-size:13px;font-weight:500;margin-top:20px}.ruler{display:flex;justify-content:space-between;font:11px ui-monospace,monospace;color:var(--muted);margin-bottom:7px}.timeline{display:flex;height:36px;border-radius:8px;overflow:hidden;background:var(--unknown);gap:1px}.on{background:var(--on)}.off{background:var(--off)}.maybe{background:repeating-linear-gradient(135deg,var(--maybe),var(--maybe) 5px,#7c55004d 5px,#7c55004d 7px)}.unknown{background:var(--unknown)}.legend{display:flex;flex-wrap:wrap;gap:12px;margin:14px 0;font-size:11px;color:var(--tg-theme-hint-color,var(--muted))}.legend span{display:flex;gap:5px;align-items:center}.legend i,.dot{display:inline-block;width:9px;height:9px;border-radius:3px;flex-shrink:0}.intervals{list-style:none;padding:0;margin:20px 0 0}.intervals li{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:10px;padding:12px 0;border-top:1px solid var(--line)}.intervals strong{font:500 14px ui-monospace,monospace}.intervals small{display:block;font-size:11px;color:var(--muted)}.intervals .state{font-size:12px}.empty{text-align:center;padding:22px 0;color:var(--muted);font-size:14px}.metadata{border-top:1px solid var(--line);padding-top:12px;margin-bottom:0;font-size:11px}#feedback:not(:empty){border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:16px;font-size:13px}footer{text-align:center;font-size:11px;line-height:1.8;margin-top:22px}[hidden]{display:none!important}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#11171b;--surface:#1b242b;--text:#e7edf0;--muted:#a7b3be;--line:#35434d;--accent:#248965}}@media(max-width:350px){main{padding:14px 10px}.card{padding:16px}.eyebrow{display:none}.legend{gap:8px}.intervals strong{font-size:12px}}

/* Monitor hierarchy: schedule color encodes data, never a loading placeholder. */
.section-head{flex-wrap:wrap;row-gap:8px}
#refresh{min-width:44px;font-size:22px;line-height:1}
#address{overflow-wrap:anywhere;margin:12px 0 0}
.schedule-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:18px 0 14px}
.schedule-meta .date{flex:1 1 100%;margin:0;font-weight:600}
#schedule-status{font-size:12px;font-weight:600;color:var(--muted)}
.monitor[data-state=populated] #schedule-status{color:#176c54}
.monitor[data-state=error] #schedule-status{color:#a92338}
.monitor[data-state=loading] #schedule-status{color:#176c54}
.monitor[data-state=idle] .timeline,.monitor[data-state=empty] .timeline,.monitor[data-state=error] .timeline,.monitor[data-state=loading] .timeline{background:transparent;border:1px dashed var(--line)}
.monitor[data-state=loading] .timeline{background:var(--tg-theme-secondary-bg-color,var(--bg));animation:waiting 1.6s ease-in-out infinite}
.timeline span{min-width:0}
.empty{text-align:left;padding:16px;background:var(--tg-theme-secondary-bg-color,var(--bg));border-radius:10px;line-height:1.65;margin:18px 0 0}
.intervals:empty,.metadata:empty{display:none}
.intervals li{grid-template-columns:10px minmax(0,1fr) minmax(0,42%)}
.intervals .state{text-align:right;overflow-wrap:anywhere;line-height:1.4}
.intervals strong{font-variant-numeric:tabular-nums;white-space:nowrap}
.legend{font-size:12px;gap:8px 14px}
.tabs [aria-pressed=true]{color:#176c54;box-shadow:0 1px 4px #0001,inset 0 -2px #176c54}
button:not(:disabled):hover{border-color:var(--muted)}
.metadata[data-stale=true]{font-size:12px;font-weight:500}
@keyframes waiting{50%{opacity:.45}}
@media(prefers-color-scheme:dark){summary{color:var(--tg-theme-link-color,#8dd8ba)}.monitor[data-state=populated] #schedule-status,.monitor[data-state=loading] #schedule-status,.tabs [aria-pressed=true]{color:#8dd8ba}.monitor[data-state=error] #schedule-status{color:#ffa0ac}}
@media(prefers-reduced-motion:reduce){.monitor[data-state=loading] .timeline{animation:none}}
