.observatory { position: relative; padding: 46px 0 0; }
.observatory::before { content: ""; position: absolute; z-index: -1; inset: 0 calc(var(--gutter) * -1); background-image: linear-gradient(rgba(20, 35, 31, .025) 1px, transparent 1px), linear-gradient(90deg, rgba(20, 35, 31, .025) 1px, transparent 1px); background-size: 32px 32px; mask-image: linear-gradient(to bottom, black, transparent 68%); pointer-events: none; }
.observatory-intro { display: flex; justify-content: space-between; align-items: flex-end; gap: 28px; margin-bottom: 10px; animation: rise .65s .06s var(--ease-out) both; }
.observatory-intro h1 { margin: 0; font: 700 clamp(34px, 4vw, 50px)/1.12 var(--font-display); letter-spacing: -.045em; }
.priority-count { margin: 10px 0 0; color: var(--muted); font-size: 13px; }
.observatory-date { text-align: right; }
.observatory-date strong { display: block; font: 800 28px/1 var(--font-number); letter-spacing: -.03em; }
.observatory-date span { color: var(--muted-light); font: 500 10px/1.4 var(--font-mono); }
.source-health { display: flex; justify-content: flex-end; align-items: center; gap: 7px; margin: 0 0 18px; color: var(--muted); font-size: 10px; }
.source-health span { width: 6px; height: 6px; border-radius: 50%; background: var(--line-strong); }
.source-health--healthy span { background: var(--signal); }
.source-health--degraded span, .source-health--stale span { background: var(--sun); }
.focus-panel { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(350px, .75fr); border-top: 1px solid var(--ink-soft); border-bottom: 1px solid var(--ink-soft); background: rgba(251, 252, 252, .84); animation: reveal .8s .14s var(--ease-out) both; }
.primary-event--focus { position: relative; padding: 34px 42px 32px 2px; }
.primary-event--focus::after { content: ""; position: absolute; right: 0; top: 26px; bottom: 26px; width: 1px; background: var(--line); }
.event-signal { display: flex; align-items: center; gap: 9px; color: var(--alert); font: 700 10px/1 var(--font-mono); letter-spacing: .06em; }
.live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--alert); animation: pulse 2.2s ease-out infinite; }
.primary-event--focus h2 { max-width: 650px; margin: 18px 0 14px; font: 700 clamp(28px, 3vw, 38px)/1.28 var(--font-display); letter-spacing: -.035em; }
.event-summary { max-width: 610px; margin: 0; color: #5d6b66; line-height: 1.9; }
.detail-link { display: inline-flex; align-items: center; gap: 10px; margin-top: 24px; font-size: 13px; font-weight: 650; }
.detail-link span { width: 36px; height: 1px; background: var(--signal); transition: width .25s ease; }
.detail-link:hover span { width: 50px; }
.fact-line { display: flex; flex-wrap: wrap; gap: 20px; margin: 26px 0 0; padding-top: 19px; border-top: 1px solid var(--line); }
.fact-line div { display: flex; gap: 7px; align-items: baseline; }
.fact-line dt { color: var(--muted-light); font: 600 9px/1.3 var(--font-mono); }
.fact-line dd { margin: 0; font: 650 10px/1.3 var(--font-mono); }
.forecast-panel { min-width: 0; overflow: hidden; padding: 30px 0 25px 32px; }
.forecast-heading { display: flex; justify-content: space-between; gap: 20px; align-items: start; }
.forecast-heading h3 { margin: 0; font: 700 10px/1 var(--font-mono); letter-spacing: .12em; }
.forecast-heading span { padding-bottom: 2px; border-bottom: 1px solid #aebbb6; color: var(--muted); font-size: 9px; }
.forecast-focus { display: flex; align-items: baseline; gap: 14px; margin: 20px 0 8px; }
.forecast-focus time { font: 800 50px/.9 var(--font-number); letter-spacing: -.055em; }
.forecast-focus p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.35; }
.forecast-focus strong { display: block; color: var(--alert); font: 750 17px/1.1 var(--font-number); }
.forecast-cumulative { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 14px 0 18px; color: var(--muted); font-size: 10px; }
.forecast-cumulative strong { color: var(--ink); }
.probability-chart { position: relative; isolation: isolate; min-height: 148px; padding: 18px 4px 10px; border-top: 1px solid #cdd8d4; border-bottom: 1px solid #cdd8d4; display: grid; grid-template-columns: repeat(var(--day-count), minmax(30px, 1fr)); gap: 7px; align-items: end; }
.probability-chart::before { content: ""; position: absolute; z-index: -1; left: 0; right: 0; top: 50%; height: 1px; background: repeating-linear-gradient(90deg, #ccd7d3 0 3px, transparent 3px 7px); }
.date-lens { position: absolute; z-index: 1; left: var(--lens-left); top: 7px; width: var(--lens-width); bottom: 7px; border: 1px solid rgba(20, 148, 130, .42); border-radius: 50% 50% 44% 44% / 16% 16% 12% 12%; background: linear-gradient(135deg, rgba(255, 255, 255, .84), rgba(20, 148, 130, .08)); box-shadow: inset 0 0 22px rgba(255, 255, 255, .72), 0 9px 24px rgba(35, 85, 74, .1); animation: lens-set .9s .6s var(--ease-out) both; pointer-events: none; }
.probability-day { position: relative; z-index: 2; height: 118px; display: grid; grid-template-rows: 18px 76px 16px; align-items: end; justify-items: center; gap: 4px; }
.probability-day strong { font: 700 10px/1 var(--font-number); }
.probability-day time { color: var(--muted); font: 600 9px/1 var(--font-mono); }
.probability-bar { width: 9px; height: 76px; display: flex; align-items: end; }
.probability-bar i { display: block; width: 100%; height: var(--bar-height); min-height: 7px; border-radius: 6px 6px 1px 1px; background: #aebbb6; transform-origin: bottom; transform: scaleY(0); }
.probability-chart[data-animated="true"] .probability-bar i { animation: bar-up .7s var(--ease-out) both; }
.probability-day--best strong, .probability-day--best time { color: var(--signal-deep); }
.probability-day--best .probability-bar i { background: var(--signal); box-shadow: 0 0 0 4px rgba(20, 148, 130, .08); }
.forecast-foot { margin: 13px 0 0; color: var(--muted); font: 500 9px/1.5 var(--font-mono); }
.forecast-empty { display: grid; align-content: center; min-height: 250px; }
.forecast-empty strong { font: 750 42px/1 var(--font-number); }
.forecast-empty p { color: var(--muted); }
.primary-event--secondary { border-top: 0; }
.event-feed { margin-top: 36px; }
.event-feed > header { display: flex; justify-content: space-between; align-items: end; padding-bottom: 12px; border-bottom: 1px solid var(--line-strong); }
.event-feed > header h2 { margin: 0; font-size: 15px; }
.event-feed > header span { color: var(--muted-light); font-size: 10px; }
.feed-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) 150px 24px; gap: 20px; align-items: center; min-width: 0; padding: 20px 0; border-bottom: 1px solid var(--line); transition: padding .23s ease, background .23s ease; }
.feed-row:hover { padding-left: 10px; padding-right: 10px; background: rgba(255, 255, 255, .6); }
.feed-time { color: var(--muted); font: 600 10px/1.5 var(--font-mono); }
.feed-time span { display: block; }
.feed-copy { min-width: 0; }
.feed-copy h2, .feed-copy h3 { margin: 0 0 5px; overflow-wrap: anywhere; font-size: 14px; line-height: 1.45; }
.feed-copy p { margin: 0; color: var(--muted); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.feed-forecast { text-align: right; }
.feed-forecast strong { display: block; font: 800 17px/1 var(--font-number); }
.feed-forecast span { color: var(--muted-light); font-size: 9px; }
.feed-arrow { width: 20px; height: 20px; fill: none; stroke: var(--muted-light); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; transition: transform .22s ease, stroke .22s ease; }
.feed-row:hover .feed-arrow { transform: translateX(4px); stroke: var(--signal); }
.pro-ribbon { margin-top: 30px; padding: 19px 20px; border-left: 3px solid var(--sun); background: #edf2ef; display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.pro-ribbon h2 { margin: 0; font-size: 13px; }
.pro-ribbon p { margin: 2px 0 0; color: var(--muted); font-size: 11px; }
.pro-ribbon a { border-radius: 999px; padding: 9px 16px; background: var(--ink); color: white; font-size: 11px; transition: transform .2s ease, background .2s ease; }
.pro-ribbon a:hover { background: var(--ink-soft); transform: translateY(-1px); }
.empty-state { min-height: 360px; padding: 80px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.empty-state h2 { margin: 0; font: 700 34px/1.2 var(--font-display); }
.empty-state p { color: var(--muted); }
@keyframes rise { from { opacity: 0; transform: translateY(13px); } to { opacity: 1; transform: none; } }
@keyframes reveal { from { opacity: 0; clip-path: inset(0 100% 0 0); } to { opacity: 1; clip-path: inset(0); } }
@keyframes lens-set { from { opacity: 0; transform: translateX(38px) scaleX(.7); } to { opacity: 1; transform: none; } }
@keyframes bar-up { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(216, 102, 85, .48); } 70%, 100% { box-shadow: 0 0 0 8px rgba(216, 102, 85, 0); } }
@media (max-width: 820px) {
  .observatory { padding-top: 34px; }
  .focus-panel { grid-template-columns: 1fr; }
  .primary-event--focus { padding: 28px 0; }
  .primary-event--focus::after { display: none; }
  .forecast-panel { padding: 28px 0; border-top: 1px solid var(--line); }
}
@media (max-width: 600px) {
  .observatory-intro { align-items: flex-start; }
  .observatory-date strong { font-size: 22px; }
  .observatory-date span { display: none; }
  .source-health { justify-content: flex-start; margin-top: 18px; }
  .primary-event--focus h2 { font-size: 29px; }
  .probability-chart { gap: 3px; }
  .forecast-focus time { font-size: 44px; }
  .feed-row { grid-template-columns: 68px minmax(0, 1fr) 88px; gap: 12px; }
  .feed-copy p, .feed-arrow { display: none; }
  .feed-forecast strong { font-size: 14px; }
  .pro-ribbon { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  .probability-bar i { transform: scaleY(1); }
}
