/* ════════════════════════════════════════════════════════════════════════ ui.css — Status banners, legend, about block, footer, and responsive. ════════════════════════════════════════════════════════════════════════ */ /* ── EVENT BANNER ───────────────────────────────────────────────────── */ /* Animated slide-down banner for cosmic/weather/promo events. */ .event-banner-wrap { overflow: hidden; max-height: 0; transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1); } .event-banner-wrap.visible { max-height: 120px; } .event-banner { display: flex; align-items: center; gap: 14px; padding: 13px 18px; border-radius: 4px; margin-bottom: 12px; position: relative; border-left: 4px solid rgba(255,255,255,0.25); } .event-banner-emoji { font-size: 24px; flex-shrink: 0; line-height: 1; } .event-banner-body { flex: 1; min-width: 0; } .event-banner-title { font-family: Fraunces, serif; font-style: italic; font-weight: 700; font-size: 16px; line-height: 1.2; margin-bottom: 3px; } .event-banner-msg { font-family: Manrope, sans-serif; font-size: 12.5px; line-height: 1.55; opacity: 0.88; } .event-banner-dismiss { background: transparent; border: none; cursor: pointer; font-size: 18px; opacity: 0.55; padding: 4px 6px; line-height: 1; flex-shrink: 0; transition: opacity 0.15s; } .event-banner-dismiss:hover { opacity: 1; } /* Slideshow dots */ .event-banner-dots { display: flex; gap: 5px; margin-top: 7px; align-items: center; } .event-banner-dot { width: 6px; height: 6px; border-radius: 50%; opacity: 0.35; cursor: pointer; transition: opacity 0.2s, transform 0.2s; flex-shrink: 0; } .event-banner-dot.active { opacity: 1; transform: scale(1.3); } .event-banner-dot:hover { opacity: 0.75; } /* Cell tag — tiny event icon in the hour column */ .event-cell-tag { font-size: 11px; line-height: 1; vertical-align: middle; margin-left: 3px; display: inline-block; } /* ── ALMANAC PANEL ──────────────────────────────────────────────────── */ /* "What's Coming" upcoming cosmic events box below the forecast table. */ .almanac-panel { margin: 20px 0 12px; border: 1.5px solid #c9b08a; border-radius: 4px; background: #fdf8ee; overflow: hidden; } .almanac-header { display: flex; align-items: baseline; gap: 12px; padding: 12px 18px 10px; border-bottom: 1px solid #e8d8b8; background: #faf2e2; } .almanac-title { font-family: Fraunces, serif; font-style: italic; font-weight: 700; font-size: 17px; color: #2a1a08; letter-spacing: 0; } .almanac-subtitle { font-family: JetBrains Mono, monospace; font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em; color: #9a7d5a; } .almanac-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 0; } .almanac-entry { display: flex; align-items: flex-start; gap: 13px; padding: 13px 18px; border-bottom: 1px solid #f0e4cc; border-right: 1px solid #f0e4cc; transition: background 0.15s; } .almanac-entry:hover { background: #fef8e8; } .almanac-entry-icon { font-size: 22px; line-height: 1; flex-shrink: 0; margin-top: 1px; } .almanac-entry-body { flex: 1; min-width: 0; } .almanac-entry-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 3px; } .almanac-entry-title { font-family: Fraunces, serif; font-style: italic; font-weight: 700; font-size: 14px; color: #1e1208; line-height: 1.2; } .almanac-entry-date { font-family: JetBrains Mono, monospace; font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: #c8922a; white-space: nowrap; } .almanac-entry-countdown { font-family: JetBrains Mono, monospace; font-size: 10px; color: #9a7d5a; white-space: nowrap; } .almanac-entry-desc { font-family: Manrope, sans-serif; font-size: 12px; color: '#4a3420'; line-height: 1.55; color: #4a3420; } .almanac-entry-visibility { display: inline-block; margin-top: 5px; font-family: JetBrains Mono, monospace; font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: #7a9a6a; background: #eef4e8; border: 1px solid #c0d8b0; border-radius: 3px; padding: 2px 7px; } .almanac-entry-accent { width: 3px; align-self: stretch; border-radius: 2px; flex-shrink: 0; margin-top: 1px; opacity: 0.7; } .almanac-empty { padding: 22px 18px; font-family: Manrope, sans-serif; font-size: 13px; color: #9a7d5a; font-style: italic; } @media (max-width: 600px) { .almanac-list { grid-template-columns: 1fr; } } /* ── CUSTOM SELECT DROPDOWN ─────────────────────────────────────────── */ /* Cross-platform replacement for native