/* Brand palette: #780000 deep red · #C1121F red · #FDF0D5 cream · #003049 navy · #669BBC light blue */
:root{--primary:#C1121F;--deep:#780000;--secondary:#003049;--accent:#669BBC;--cream:#FDF0D5;--on-primary:#FDF0D5;--ptext:var(--primary);
  --bg:#FDF0D5;--card:#FFF8E7;--text:#003049;--muted:#4C6973;--border:#E3D3AE}
[data-mode=dark]{--bg:#00263A;--card:#003049;--text:#FDF0D5;--muted:#669BBC;--border:#1A4B66;--ptext:var(--accent)}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Tahoma,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}
a{color:var(--ptext)}
.site-head{background:var(--secondary);color:var(--cream);padding:12px 20px;border-bottom:3px solid var(--primary)}
.bar{max-width:1100px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.brand{display:flex;gap:12px;align-items:center;color:inherit;text-decoration:none;min-width:0}
.brand img{height:44px;width:auto;max-width:170px;object-fit:contain;flex-shrink:0}
.brand-text{display:flex;flex-direction:column;min-width:0}
.site-name{font-weight:800;font-size:20px;line-height:1.2}.tag{opacity:.8;font-size:13px}
button,.btn{background:var(--primary);color:var(--on-primary);border:0;border-radius:8px;padding:9px 16px;font-weight:600;cursor:pointer;text-decoration:none;font-size:14px;display:inline-block}
button:hover,.btn:hover{background:var(--deep)}
button.sec{background:transparent;border:1px solid var(--border);color:inherit}button.sec:hover{background:var(--border)}
.site-head button.sec{border-color:rgba(253,240,213,.45);color:var(--cream)}.site-head button.sec:hover{background:rgba(253,240,213,.12)}
button:focus-visible,.btn:focus-visible,.day:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.hero{position:relative;min-height:clamp(300px,48vh,520px);display:flex;align-items:flex-end;justify-content:center;text-align:center;color:var(--cream);
  background:linear-gradient(135deg,var(--secondary) 0%,var(--secondary) 35%,var(--deep) 100%) center/cover no-repeat;padding:0 20px;overflow:hidden}
.hero .shade{position:absolute;inset:0;background:#000;opacity:.35;transition:opacity .3s}
.hero-inner{position:relative;max-width:760px;padding:40px 0 44px}
.hero h1{margin:0 0 10px;font-size:clamp(26px,4.2vw,44px);line-height:1.15;text-shadow:0 2px 14px rgba(0,0,0,.35)}
.hero p{margin:0 auto 20px;max-width:620px;font-size:clamp(15px,1.6vw,18px);opacity:.95;white-space:pre-line}
.hero p:empty{display:none}
.hero-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.hero-btns a{min-width:140px;padding:11px 20px;border-radius:10px;font-weight:700;text-decoration:none;background:var(--primary);color:var(--on-primary)}
.hero-btns a:hover{background:var(--deep)}
.hero-btns a.outline{background:transparent;border:2px solid var(--cream);color:var(--cream)}.hero-btns a.outline:hover{background:rgba(253,240,213,.15)}
.hero-btns a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
main{max-width:1100px;margin:24px auto;padding:0 16px;display:grid;grid-template-columns:1.2fr 1fr;gap:20px}@media(max-width:850px){main{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px}
.cal-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.cal-h b{font-size:17px;text-align:center;flex:1}
.cal-r{display:flex;gap:6px}.today-btn{padding:9px 14px}.today-btn.on{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.dn{text-align:center;font-size:12px;color:var(--muted);padding:4px 0}
.day{min-height:62px;border:1px solid var(--border);border-radius:8px;padding:3px 4px;cursor:pointer;overflow:hidden;font-size:11px;background:var(--card);color:inherit;text-align:start}
button.day:hover{background:color-mix(in srgb,var(--accent) 22%,var(--card));border-color:var(--accent)} /* beats the generic button:hover (deep red) */
button.day.sel:hover{background:color-mix(in srgb,var(--accent) 34%,var(--card))}
.day.empty{border:0;cursor:default;background:none}.day.empty:hover{background:none}.day.today{border:2px solid var(--primary)}.day.sel{background:color-mix(in srgb,var(--accent) 28%,var(--card))}
.day .n{font-weight:700;font-size:12px}
.dot{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--cream);border-radius:3px;padding:0 3px;margin-top:2px;font-size:10px}
.more{color:var(--muted);font-size:10px}
.ev{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer}.ev:last-child{border:0}.ev:hover h4{color:var(--ptext)}
.bar-c{width:5px;border-radius:3px;flex-shrink:0;box-shadow:0 0 0 1px var(--muted)}.ev h4{margin:0}.ev p{margin:2px 0 0;color:var(--muted);font-size:13px}
.tools{display:flex;gap:8px;margin-bottom:10px}.tools input,.tools select{flex:1;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:inherit;font:inherit}
.modal{position:fixed;inset:0;background:rgba(0,48,73,.7);display:flex;align-items:center;justify-content:center;padding:16px;z-index:9}
.modal .card{max-width:620px;width:100%;max-height:90vh;overflow:auto}
.modal img{width:100%;border-radius:10px;max-height:260px;object-fit:cover}.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.muted{color:var(--muted);font-size:13px}
.ad{margin:16px auto;max-width:1100px;padding:0 16px}.ad a{display:block;text-decoration:none;color:inherit}.ad .card{display:flex;gap:12px;align-items:center;border-inline-start:4px solid var(--accent)}.ad img{height:70px;border-radius:8px}.ad small{color:var(--muted)}
.site-foot{background:var(--secondary);color:var(--cream);text-align:center;padding:8px 16px 28px;margin-top:32px}
.site-foot p{opacity:.75;font-size:13px;margin:14px 0 0}
.get-app{display:flex;flex-direction:column;align-items:center;gap:12px;padding-top:24px}.get-app h3{margin:0;font-size:16px}
.badges{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;align-items:flex-start}   /* clear space >= 1/4 badge height */
.badge-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}.badge-wrap small{opacity:.75;font-size:12px}
.badge-link{display:block;line-height:0;border-radius:9px}.badge-link img{height:48px;width:auto;display:block}
.badge-link img.gp-legacy{height:71px;margin:-11.5px -9px}   /* Google's hosted PNG has built-in padding; this matches the App Store badge size */
.badge-link:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.badge-text{display:inline-flex;align-items:center;height:48px;padding:0 20px;border-radius:9px;background:#000;color:#fff;border:1px solid #A6A6A6;font-weight:700;line-height:1}

/* connection pulse in the footer */
.pulse{display:inline-flex;align-items:center;gap:8px;margin:12px 0 0;font-size:12px;opacity:.85;cursor:help}
.pulse .dot{width:9px;height:9px;border-radius:50%;background:#9AA5AD;position:relative;flex-shrink:0}
.pulse.live .dot{background:#5CC98A}
.pulse.live .dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:#5CC98A;animation:ping 2s ease-out infinite}
.pulse.down .dot{background:#FF6B6B}
@keyframes ping{0%{transform:scale(1);opacity:.7}100%{transform:scale(2.8);opacity:0}}
@media (prefers-reduced-motion:reduce){.pulse.live .dot::after{animation:none}}
