/* WorldRiskWatch intelligence observatory. Purely visual public-feed layer. */
:root{--obs-cyan:#5dc9d8;--obs-cyan-rgb:93,201,216;--obs-grid:rgba(108,156,183,.1)}
html[data-theme="light"]{--obs-cyan:#18788d;--obs-cyan-rgb:24,120,141;--obs-grid:rgba(48,92,114,.1)}
.hero.observatory-hero{position:relative;background:
  radial-gradient(ellipse at 70% 40%,rgba(var(--obs-cyan-rgb),.09),transparent 43%),
  linear-gradient(135deg,rgba(12,32,52,.35),transparent 64%);}
.hero.observatory-hero::before{position:absolute;inset:0;content:"";pointer-events:none;
  background-image:linear-gradient(var(--obs-grid) 1px,transparent 1px),
  linear-gradient(90deg,var(--obs-grid) 1px,transparent 1px);
  background-size:74px 74px;mask-image:linear-gradient(90deg,transparent 10%,#000 72%);opacity:.32}
.hero.observatory-hero .hero-grid,
.hero.observatory-hero.geo-quiet .hero-grid{grid-template-columns:minmax(310px,.87fr) minmax(520px,1.25fr);
  min-height:680px;gap:12px}
.hero.observatory-hero .hero-copy,
.hero.observatory-hero.geo-quiet .hero-copy{padding:56px 0 48px}
.obs-eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--obs-cyan);font-weight:700}
.obs-eyebrow:before{content:"";height:1px;width:26px;background:currentColor}
.hero.observatory-hero .hero-kicker{font-size:clamp(20px,2.15vw,33px);font-weight:520;
  text-transform:none;letter-spacing:-.035em;line-height:1.18;max-width:470px;
  color:var(--text);margin:17px 0 18px}
.obs-score-context{display:block;margin:13px 0 7px;color:var(--obs-cyan);font-size:10px;
  letter-spacing:.12em;text-transform:uppercase;line-height:1.5}
.hero.observatory-hero .score-line strong{font-size:clamp(76px,9.5vw,144px)}
.hero.observatory-hero .score-line span{font-size:20px}
.hero.observatory-hero .hero-summary{max-width:530px;font-size:17px;line-height:1.52}
.hero.observatory-hero .hero-signal{max-width:515px}
.obs-bridge{display:flex;align-items:center;gap:8px;padding:12px 0;border-top:1px solid var(--line);
  margin-top:16px;font-size:11px;color:var(--soft)}
.obs-monitor-dot{display:inline-block;width:7px;height:7px;flex-shrink:0;border-radius:50%;
  background:var(--muted)}
.obs-monitor-dot.is-recent{background:var(--obs-cyan);box-shadow:0 0 12px rgba(var(--obs-cyan-rgb),.55);
  animation:obs-heartbeat 3.4s ease-in-out infinite}
.obs-bridge strong{font-size:10px;letter-spacing:.13em;color:var(--obs-cyan)}
.obs-bridge span:last-child{color:var(--muted)}
.hero.observatory-hero .globe-stage,
.hero.observatory-hero.geo-quiet .globe-stage{min-height:680px;overflow:visible;isolation:isolate}
.hero.observatory-hero .globe-host,
.hero.observatory-hero.geo-quiet .globe-host{width:min(660px,94%);opacity:1;
  filter:none;transform:none;box-shadow:0 0 90px rgba(var(--obs-cyan-rgb),.095)}
.hero.observatory-hero .globe-stage::before{content:"";position:absolute;width:97%;
  aspect-ratio:1;left:50%;top:50%;transform:translate(-50%,-50%);
  border:1px solid color-mix(in srgb,var(--obs-cyan) 14%,transparent);
  border-radius:50%;pointer-events:none;opacity:.55}
.hero.observatory-hero .globe-orbit{opacity:.23;pointer-events:none}
.obs-globe-top{position:absolute;z-index:8;top:9%;left:4%;max-width:60%;
  background:color-mix(in srgb,var(--panel) 89%,transparent);
  padding:13px 14px;border-left:2px solid var(--obs-cyan);backdrop-filter:blur(12px);
  display:grid;gap:4px;pointer-events:none}
.obs-globe-top small{font-size:9px;letter-spacing:.17em;color:var(--muted)}
.obs-globe-top strong{font-size:12px;letter-spacing:.03em}
.obs-globe-top span{font-size:10px;color:var(--soft)}
.obs-globe-coordinates{position:absolute;z-index:8;top:10%;right:3%;display:grid;
  text-align:right;gap:4px;pointer-events:none;color:var(--muted);
  text-transform:uppercase;font-size:9px;letter-spacing:.14em}
.obs-globe-coordinates b{color:var(--obs-cyan);font-weight:600}
.obs-geo-controls{position:absolute;z-index:10;bottom:13%;left:50%;transform:translateX(-50%);
  display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:99px;
  background:color-mix(in srgb,var(--panel) 93%,transparent);backdrop-filter:blur(16px);
  white-space:nowrap}
.obs-geo-controls button{border:0;border-radius:99px;padding:9px 13px;background:transparent;
  color:var(--muted);font-size:11px;cursor:pointer;min-height:40px}
.obs-geo-controls button[aria-pressed=true]{background:color-mix(in srgb,var(--obs-cyan) 17%,var(--panel));
  color:var(--text);box-shadow:inset 0 0 0 1px rgba(var(--obs-cyan-rgb),.34)}
.obs-geo-controls button:focus-visible,.obs-domain:focus-visible,.obs-geo-item:focus-visible,
.obs-filter:focus-visible{outline:2px solid var(--obs-cyan);outline-offset:2px}
.hero.observatory-hero .globe-status{bottom:5%;border:0;background:none;
  color:var(--muted);font-size:10px;white-space:normal;width:76%;line-height:1.35}
.obs-signal-rail{position:absolute;z-index:9;right:1%;top:33%;max-height:33%;
  width:min(210px,33%);overflow:auto;scrollbar-width:thin;
  padding:12px;border:1px solid color-mix(in srgb,var(--line) 80%,transparent);
  border-radius:10px;background:color-mix(in srgb,var(--panel) 93%,transparent);
  backdrop-filter:blur(14px)}
.obs-signal-rail h3{font-size:10px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--soft);margin:0 0 7px}
.obs-geo-item{width:100%;text-align:left;display:flex;gap:9px;align-items:flex-start;
  border:0;background:none;color:var(--text);padding:9px 0;border-top:1px solid var(--line);cursor:pointer}
.obs-geo-marker{color:var(--obs-cyan);font-size:10px;font-weight:700;font-variant-numeric:tabular-nums}
.obs-geo-name{min-width:0}.obs-geo-name b{display:block;font-size:11px;font-weight:580;overflow-wrap:anywhere}
.obs-geo-name small{display:block;font-size:9px;line-height:1.35;color:var(--muted);margin-top:3px}
.obs-empty{color:var(--muted);font-size:11px;line-height:1.5;margin:0}
.obs-live-deck{border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--panel) 72%,transparent)}
.obs-deck-head{display:flex;justify-content:space-between;align-items:center;gap:18px;
  padding:21px 0 14px}
.obs-deck-head h2{font-size:17px;margin:0;font-weight:600;letter-spacing:-.02em}
.obs-deck-head p{font-size:11px;margin:3px 0 0;color:var(--muted)}
.obs-filter{background:transparent;border:1px solid var(--line);border-radius:7px;
  padding:8px 12px;font-size:11px;color:var(--soft);cursor:pointer}
.obs-domain-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding-bottom:22px}
.obs-domain{min-height:124px;border:1px solid var(--line);border-radius:10px;
  padding:14px 12px;background:color-mix(in srgb,var(--panel2) 83%,transparent);
  color:var(--text);display:flex;flex-direction:column;justify-content:space-between;
  gap:9px;cursor:pointer;text-align:left;transition:border-color .2s,background .2s,transform .2s}
.obs-domain:hover,.obs-domain[aria-pressed=true]{border-color:color-mix(in srgb,var(--obs-cyan) 65%,var(--line));
  background:color-mix(in srgb,var(--obs-cyan) 9%,var(--panel2));transform:translateY(-2px)}
.obs-domain-top{display:flex;justify-content:space-between;gap:5px;align-items:start}
.obs-domain-name{font-size:10px;font-weight:600;line-height:1.35;color:var(--soft);max-width:112px}
.obs-domain-score{font-size:20px;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}
.obs-sparkline{width:100%;height:35px;overflow:visible;display:block}
.obs-spark-line{fill:none;stroke:var(--obs-cyan);stroke-width:1.5;vector-effect:non-scaling-stroke;
  stroke-linecap:round;stroke-linejoin:round}
.obs-spark-area{fill:rgba(var(--obs-cyan-rgb),.11);stroke:none}
.obs-spark-empty{display:block;color:var(--muted);font-size:10px;min-height:35px}
.obs-domain-track{height:3px;background:var(--line);border-radius:99px;display:block;overflow:hidden}
.obs-domain-fill{height:100%;width:var(--obs-fill);display:block;
  background:linear-gradient(90deg,var(--obs-cyan),var(--risk));
  transform-origin:left;animation:obs-reveal .95s cubic-bezier(.22,.68,.18,1) backwards}
.obs-telemetry-section{padding:27px 0}
.obs-telemetry{display:grid;grid-template-columns:1.05fr 1fr 1fr 1.15fr;gap:10px}
.obs-telemetry article{padding:17px 18px;border:1px solid var(--line);border-radius:10px;
  background:color-mix(in srgb,var(--panel) 90%,transparent);min-width:0}
.obs-telemetry span{display:block;color:var(--muted);font-size:10px;letter-spacing:.075em;text-transform:uppercase}
.obs-telemetry strong{display:block;font-size:15px;font-weight:610;margin-top:9px;overflow-wrap:anywhere;
  font-variant-numeric:tabular-nums}
.obs-telemetry small{display:block;color:var(--muted);font-size:10px;line-height:1.45;margin-top:5px}
.obs-mission{font-size:12px;color:var(--muted);margin:0 0 10px;max-width:960px}
@keyframes obs-heartbeat{0%,100%{opacity:.6;box-shadow:0 0 0 0 rgba(var(--obs-cyan-rgb),.35)}
  50%{opacity:1;box-shadow:0 0 0 6px rgba(var(--obs-cyan-rgb),0)}}
@keyframes obs-reveal{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:1200px){
  .obs-domain-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hero.observatory-hero .hero-grid,.hero.observatory-hero.geo-quiet .hero-grid{
    grid-template-columns:minmax(300px,1fr) minmax(420px,1.2fr)}
  .obs-signal-rail{top:34%;width:34%;max-height:31%}
}
@media(max-width:900px){
  .hero.observatory-hero .hero-grid,.hero.observatory-hero.geo-quiet .hero-grid{
    display:block;min-height:0}
  .hero.observatory-hero .hero-copy,.hero.observatory-hero.geo-quiet .hero-copy{
    padding:40px 0 5px}
  .hero.observatory-hero .globe-stage,.hero.observatory-hero.geo-quiet .globe-stage{
    min-height:600px}
  .obs-telemetry{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .hero.observatory-hero .hero-copy,.hero.observatory-hero.geo-quiet .hero-copy{
    padding:31px 0 0}
  .hero.observatory-hero .hero-kicker{font-size:26px}
  .hero.observatory-hero .globe-stage,.hero.observatory-hero.geo-quiet .globe-stage{
    min-height:435px}
  .hero.observatory-hero .globe-host,.hero.observatory-hero.geo-quiet .globe-host{
    width:min(100%,455px)}
  .obs-globe-top{left:2%;top:4%;padding:9px 10px;max-width:58%}
  .obs-globe-top small{font-size:8px}.obs-globe-top strong{font-size:10px}
  .obs-globe-coordinates{right:2%;top:6%;font-size:8px}
  .obs-signal-rail{top:30%;right:0;width:38%;max-height:34%;padding:8px}
  .obs-geo-name b{font-size:10px}.obs-geo-name small{font-size:8px}
  .obs-geo-controls{bottom:12%;max-width:94%}
  .obs-geo-controls button{font-size:10px;padding:8px 10px}
  .obs-domain-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding-bottom:14px}
  .obs-domain{min-height:119px;padding:11px}
  .obs-deck-head{align-items:flex-start}
  .obs-deck-head h2{font-size:16px}
  .obs-telemetry article{padding:14px 12px}
  .obs-telemetry strong{font-size:13px}
}
@media(max-width:390px){
  .obs-signal-rail{width:40%}
  .obs-geo-controls button{font-size:9px}
  .obs-telemetry{gap:6px}
}
@media(prefers-reduced-motion:reduce){
  .obs-domain-fill,.obs-monitor-dot.is-recent{animation:none}
  .obs-domain{transition:none}
  .obs-domain:hover{transform:none}
}

/* Small-screen: lead with the Earth, not an oversized static assessment report. */
@media(max-width:900px){
  .hero.observatory-hero .hero-grid,.hero.observatory-hero.geo-quiet .hero-grid{
    display:flex;flex-direction:column;gap:0}
  .hero.observatory-hero .globe-stage,.hero.observatory-hero.geo-quiet .globe-stage{
    order:-1;width:100%;align-self:center}
  .hero.observatory-hero .hero-copy,.hero.observatory-hero.geo-quiet .hero-copy{
    order:1;width:100%;padding-top:8px}
}
@media(max-width:600px){
  .hero.observatory-hero .hero-kicker{font-size:24px;margin:11px 0 11px}
  .hero.observatory-hero .hero-copy,.hero.observatory-hero.geo-quiet .hero-copy{
    padding:6px 0 24px}
  .hero.observatory-hero .globe-stage,.hero.observatory-hero.geo-quiet .globe-stage{
    min-height:435px}
  .hero.observatory-hero .hero-signal{display:none}
  .hero.observatory-hero .hero-summary{font-size:14px;line-height:1.45}
  .hero.observatory-hero .score-line strong{font-size:clamp(78px,23vw,112px)}
  .obs-bridge{margin-top:10px;padding:11px 0}
}

/* Orthographic signal overlay for devices without WebGL. The 2D fallback
   reuses the exact 720 px / 308 px fixed-view SVG Earth projection. */
.globe-host .obs-fallback-layer{position:absolute;inset:0;width:100%;height:100%;
  z-index:3;pointer-events:none;overflow:visible;transition:opacity .2s ease}
.globe-host.is-live .obs-fallback-layer{opacity:0}
.obs-fallback-halo{fill:rgba(var(--obs-cyan-rgb),.14);stroke:var(--obs-cyan);stroke-width:1.7}
.obs-fallback-core{fill:var(--obs-cyan);stroke:#f5fbff;stroke-width:2}
.obs-fallback-index{fill:var(--obs-cyan);font-size:18px;font-weight:750;
  letter-spacing:.08em;paint-order:stroke;stroke:var(--panel);stroke-width:4}
@media(prefers-reduced-motion:reduce){.globe-host .obs-fallback-layer{transition:none}}

/* Keep the coordinate sector clear. Source locations in the eastern
   hemisphere would otherwise sit behind the overlay on both viewports. */
.hero.observatory-hero .obs-signal-rail{left:1%;right:auto}
@media(max-width:600px){
  .hero.observatory-hero .obs-signal-rail{left:0;right:auto}
}

/* Camera-projected globe annotations use Globe.GL's own getScreenCoords,
   not a guessed 2D position. No motion pulse for archived records. */
.globe-host .obs-webgl-signal-layer{position:absolute;inset:0;z-index:6;
  pointer-events:none;overflow:hidden}
.globe-host:not(.is-live) .obs-webgl-signal-layer{display:none}
.obs-webgl-pin{position:absolute;transform:translate(-50%,-50%);
  width:25px;height:25px;border:2px solid var(--obs-cyan);
  border-radius:50%;display:grid;place-items:center;
  background:color-mix(in srgb,var(--panel) 90%,transparent);
  color:var(--obs-cyan);font-size:9px;font-weight:800;
  box-shadow:0 0 0 5px rgba(var(--obs-cyan-rgb),.17),0 0 16px rgba(var(--obs-cyan-rgb),.5);
  font-variant-numeric:tabular-nums;line-height:1}
.obs-webgl-pin[hidden]{display:none}

/* A selected time window without actual assessments must never look like a
   broken or zero-valued chart. State exactly what is and is not plotted. */
.chart-wrap .chart-message{position:absolute;z-index:2;top:0;left:40px;right:12px;
  font-size:10px;line-height:1.3;color:var(--muted);letter-spacing:.015em;
  white-space:normal;pointer-events:none}
.chart-wrap .chart-message[data-empty="true"]{top:46%;left:50%;
  transform:translate(-50%,-50%);width:min(88%,390px);text-align:center;
  background:var(--panel2);border:1px solid var(--line);border-radius:9px;
  padding:14px 18px;font-size:12px;line-height:1.55}
@media(max-width:600px){.chart-wrap .chart-message{left:38px;font-size:9px}
  .chart-wrap .chart-message[data-empty="true"]{left:50%;font-size:11px}}
