/* Situation Room — standalone blacked-out ops page, cloned from the private
   Situation Room app's look. No Statix site stylesheet is loaded on this page.
   Palette from the private app: charcoal background, faint grid, #121212
   panels, #262626 borders, muted grey body, cyan links, gold DEFCON. */
*{box-sizing:border-box}
html{background:#0b0b0b;color:#c9c9c9}
body{margin:0;background:#0b0b0b;background-image:linear-gradient(rgba(255,255,255,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 1px);background-size:36px 36px;color:#c9c9c9;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;font-size:13px;line-height:1.55}
a{color:#5ec8d4;text-decoration:underline}
a:hover,a:focus{color:#8fdde8}
.skip-link{position:absolute;left:-9999px}
.skip-link:focus{left:1em;top:1em;background:#000;color:#fff;padding:.4em}
/* Top bar: full-bleed, compact, green dot, snapshot time on the right */
.sr-topbar{border-bottom:1px solid #262626;background:#0e0e0e;position:sticky;top:0;z-index:1000}
.sr-topbar-inner{padding:10px 14px;display:flex;justify-content:space-between;align-items:flex-start;gap:1em}
.sr-title{font-weight:700;letter-spacing:.18em;color:#e8e8e8;font-size:15px;display:flex;align-items:center;gap:8px}
.sr-title::before{content:"";width:8px;height:8px;border-radius:50%;background:#2ecc71;box-shadow:0 0 8px #2ecc71;flex:0 0 auto}
.sr-subline{color:#8a8a8a;letter-spacing:.12em;text-transform:uppercase;margin:3px 0 0;font-size:10px}
.sr-top-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.sr-top-time{color:#8a8a8a;letter-spacing:.1em;font-size:10px;text-transform:uppercase;white-space:nowrap}
.sr-topbar a.sr-front-link{color:#c9c9c9;text-decoration:none;border:1px solid #333;padding:5px 10px;white-space:nowrap;font-size:11px;letter-spacing:.08em}
.sr-topbar a.sr-front-link:hover,.sr-topbar a.sr-front-link:focus{border-color:#e8e8e8;color:#fff;outline:none}
/* Page shell: full-bleed, only ~14px side padding — no centred narrow column */
.sr-wrap{padding:12px 14px 24px}
.sr-panel{border:1px solid #262626;padding:14px;margin:0 0 12px;background:#121212}
.sr-panel h2{color:#e8e8e8;margin:0 0 8px;font-size:14px;letter-spacing:.14em;text-transform:uppercase}
.sr-panel h3{color:#e8e8e8;font-size:13px}
.sr-panel p{color:#b0b0b0}
.btn,.btn-ghost{background:transparent;color:#c9c9c9;border:1px solid #333;padding:6px 10px;cursor:pointer;font:inherit;font-size:11px;letter-spacing:.06em}
.btn:hover,.btn:focus,.btn-ghost:hover,.btn-ghost:focus{border-color:#e8e8e8;color:#fff;outline:none}
/* Snapshot honesty: compact line, not a huge banner */
.sr-snapshot{border:1px solid #262626;padding:8px 12px;background:#121212;color:#8a8a8a;font-size:11px;margin:0 0 12px;line-height:1.5}
.sr-snapshot strong{color:#e8e8e8;font-weight:700}
/* Whats-new strip: gold left border, compact, under the snapshot line */
.sr-whats-new{border:1px solid #262626;border-left:3px solid #f0b429;padding:8px 12px;background:#121212;color:#c9c9c9;font-size:11px;margin:0 0 12px;line-height:1.5;letter-spacing:.04em}
/* Ops footer at the bottom of the Situation Room only, with the tip link */
.sr-footer{border:1px solid #262626;padding:12px 14px;background:#121212;margin:16px 0 0;text-align:center}
.sr-footer p{margin:4px 0;font-size:12px}
/* Threat strip: 4 compact cells, one row (the gold divider underneath
   is now the live news ticker bar below, not a border) */
.sr-threat{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 12px}
/* Live news ticker: yellow bar, black scrolling text, looping.
   The track content is duplicated by JS for a seamless loop; the
   animation only runs once JS has duplicated it (class sr-ticker-live),
   so a no-JS load still shows a static yellow bar. Pauses on hover
   and focus, and does not animate under prefers-reduced-motion. */
.sr-ticker{background:#f0b429;color:#000;overflow:hidden;white-space:nowrap;margin:0 0 12px;border:1px solid #c9930a}
.sr-ticker-track{display:block;overflow:hidden;white-space:nowrap}
.sr-ticker-track span{display:inline-block;padding-right:48px}
/* The scrolling text is an inner span (.sr-ticker-text, set by JS), so the
   track itself is the clipping viewport and the text can never slide
   over a label or out of the bar. */
.sr-ticker-text{display:inline-block;padding:7px 0;font-weight:700;letter-spacing:.06em;font-size:12px;white-space:nowrap}
.sr-ticker-live .sr-ticker-text{animation:sr-ticker-scroll 40s linear infinite}
.sr-ticker:hover .sr-ticker-text,.sr-ticker:focus-within .sr-ticker-text{animation-play-state:paused}
@keyframes sr-ticker-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.sr-ticker-live .sr-ticker-text{animation:none}.sr-ticker{overflow-x:auto}}
.sr-threat-cell{border:1px solid #262626;padding:12px;background:#121212;min-width:0}
.sr-threat-label{color:#8a8a8a;letter-spacing:.14em;margin:0;font-size:10px;text-transform:uppercase}
.sr-threat-value{font-size:24px;color:#f0a030;margin:4px 0;line-height:1.1;font-weight:700}
.sr-threat-cell p{color:#8a8a8a;font-size:11px;margin:4px 0}
.sr-threat-cell .btn{color:#5ec8d4;border-color:#333;font-size:10px;padding:5px 8px}
.sr-threat-cell .btn:hover{color:#fff;border-color:#5ec8d4}
.sr-red{color:#ff3b30 !important}
.sr-threat-cell .sr-threat-value.sr-red{color:#ff3b30}
/* DEFCON */
.sr-defcon-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.sr-defcon-head h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sr-badge{background:#f0b429;color:#000;padding:3px 7px;font-size:10px;white-space:nowrap;letter-spacing:.08em}
.sr-badge-dim{background:transparent;color:#c9c9c9;border:1px solid #444}
.sr-levels-btn{color:#5ec8d4;border-color:#333}
.sr-defcon-banner{border:1px solid #7a1f1f;color:#ff9a9a;padding:8px 10px;background:#1a0a0a;font-size:11px;letter-spacing:.04em;margin:10px 0}
.sr-defcon-big{font-size:44px;color:#f0a030;margin:6px 0 0;line-height:1;font-weight:700;letter-spacing:.02em}
.sr-defcon-sub{color:#e8e8e8;font-size:12px;letter-spacing:.16em;margin:4px 0 0}
.sr-defcon-sub span{color:#8a8a8a;letter-spacing:.08em;font-size:10px}
.sr-scale{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:12px 0 6px}
.sr-scale-seg{border:1px solid #333;padding:10px 6px;text-align:center;color:#8a8a8a;font-size:10px;letter-spacing:.06em;background:#0e0e0e}
.sr-scale-seg strong{display:block;color:#c9c9c9;font-size:17px;margin-bottom:2px}
.sr-scale-current{border-color:#f0b429;color:#e8e8e8;background:#1d1700}
.sr-scale-current strong{color:#f0b429}
.sr-scale-note{color:#8a8a8a;font-size:10px;letter-spacing:.08em;text-align:center;margin:0 0 12px}
.sr-defcon-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.sr-defcon-cols h3{color:#8a8a8a;font-size:10px;letter-spacing:.14em;text-transform:uppercase;margin:0 0 6px}
.sr-defcon-cols p{font-size:12px;color:#b0b0b0;margin:0 0 8px}
#sr-defcon-info{display:none;border:1px solid #333;padding:10px;background:#0e0e0e;font-size:12px;color:#b0b0b0;margin-top:10px}
#sr-defcon-info.open{display:block}
/* Filter pills: small, bordered, dot-coloured in private app — kept text-only here to match v26.2 data */
.sr-filter{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.sr-filter .btn{background:#0e0e0e;border-color:#333;font-size:10px;letter-spacing:.1em;padding:6px 10px;text-transform:uppercase}
.sr-filter .btn.active{border-color:#f0b429;color:#fff}
/* Map / feed: 62 / 38 on desktop, stacked on phone, compact feed cards */
.sr-main{display:grid;grid-template-columns:62% 38%;gap:12px;align-items:start}
.sr-map-col{position:sticky;top:62px}
.sr-map-col h2,.sr-feed-col h2{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:#e8e8e8;margin:0 0 6px}
/* Incident feed TO TOP: floating, top-right of the viewport, below the
   sticky top bar. Hidden at the top of the page; shown once the reader
   has scrolled down into the incidents, so it is sitting in that
   top-right spot while scrolling back up through the feed, without
   needing to scroll all the way back to the feed header. */
.sr-feed-top-float{position:fixed;top:70px;right:16px;z-index:2000;background:#000;color:#f0b429;border:1px solid #f0b429;padding:10px 14px;font:inherit;font-size:12px;font-weight:700;letter-spacing:.08em;cursor:pointer;box-shadow:0 0 14px rgba(240,180,41,.35);display:none}
.sr-feed-top-float.sr-feed-top-visible{display:block}
.sr-feed-top-float:hover,.sr-feed-top-float:focus{color:#fff;border-color:#fff;outline:none}
.sr-map-col p,.sr-feed-col p{font-size:11px;color:#8a8a8a}
#sr-map{height:540px;background:#000;border:1px solid #262626;margin:10px 0;scroll-margin-top:70px}
#sr-map .leaflet-tile{filter:grayscale(1) saturate(0) brightness(1.18) contrast(1.25)}
#sr-map .leaflet-container{background:#000;font-family:inherit}
#sr-map .leaflet-control-attribution{background:rgba(0,0,0,.85);color:#8a8a8a;font-size:10px}
#sr-map .leaflet-control-attribution a{color:#b0b0b0}
#sr-map .leaflet-control-zoom a{background:#121212;color:#e8e8e8;border-color:#333}
.sr-pin{display:block;width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 14px currentColor}
.sr-pin-green{background:#2ecc71;color:#2ecc71}
.sr-pin-orange{background:#ff8c1a;color:#ff8c1a}
.sr-pin-red{background:#ff2d2d;color:#ff2d2d;animation:sr-pulse 1.6s infinite}
@keyframes sr-pulse{0%{box-shadow:0 0 6px #ff2d2d}50%{box-shadow:0 0 22px #ff2d2d}100%{box-shadow:0 0 6px #ff2d2d}}
.sr-legend{list-style:none;padding:0;display:flex;gap:14px;flex-wrap:wrap;margin:8px 0}
.sr-legend li{display:flex;align-items:center;gap:6px;color:#8a8a8a;font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.sr-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.sr-dot-green{background:#2ecc71;box-shadow:0 0 8px #2ecc71}
.sr-dot-orange{background:#ff8c1a;box-shadow:0 0 8px #ff8c1a}
.sr-dot-red{background:#ff2d2d;box-shadow:0 0 8px #ff2d2d}
.sr-focus{border:1px solid #333;padding:12px;margin:12px 0;background:#0e0e0e}
.sr-focus:empty{display:none}
.sr-focus h3{color:#e8e8e8;font-size:14px;margin:0 0 6px}
.sr-focus p{font-size:12px;color:#b0b0b0}
.sr-incident{border:1px solid #262626;border-left:3px solid #333;padding:12px;margin:0 0 10px;background:#121212}
.sr-inc-left-red{border-left-color:#ff3b30}
.sr-inc-left-orange{border-left-color:#ff8c1a}
.sr-inc-left-green{border-left-color:#2ecc71}
.sr-incident h3{color:#e8e8e8;margin:6px 0;font-size:14px;line-height:1.4}
.sr-incident-active{border-color:#f0b429 !important;background:#1d1700}
.sr-incident p{font-size:12px;color:#b0b0b0;margin:6px 0}
.sr-tags{display:flex;gap:6px;flex-wrap:wrap}
.sr-tag{border:1px solid #333;padding:2px 6px;font-size:10px;color:#8a8a8a;letter-spacing:.06em}
.sr-tag:first-child{color:#ff6b5e;border-color:#444}
.sr-meta{color:#8a8a8a;font-size:11px}
.sr-meta a{color:#5ec8d4}
.sr-incident .btn{color:#5ec8d4;font-size:10px;padding:5px 8px}
.sr-feed-item{width:100%;text-align:left;background:transparent;color:inherit;border:1px solid #262626;padding:.8em;margin:.4em 0;cursor:pointer;font:inherit}
.sr-hidden{display:none !important}
.sr-cam-frame{width:100%;aspect-ratio:16 / 9;border:0;display:block}
/* Feed collapse: newest 8 only, by article order, filter-hidden cards stay hidden */
.sr-feed-collapsed .sr-incident:nth-of-type(n+9){display:none}
/* Tripwires: 9 compact cells in ONE row on desktop — no scrollbar, no cut-off */
.sr-trip-strip{display:grid;grid-template-columns:repeat(9,1fr);gap:10px;padding-bottom:0}
.sr-trip-card{border:1px solid #262626;padding:10px;background:#121212;min-width:0}
.sr-trip-label{color:#c9c9c9;letter-spacing:.06em;margin:0;font-size:10px;text-transform:uppercase;display:flex;align-items:center;gap:6px;line-height:1.4}
.sr-trip-value{font-size:19px;color:#e8e8e8;margin:6px 0;font-weight:700;line-height:1.1}
.sr-trip-card p{font-size:10px;color:#8a8a8a;margin:4px 0;line-height:1.45}
.sr-trip-card p.sr-trip-value{font-size:19px;color:#e8e8e8}
.sr-trip-note{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
/* Outlook: 3-column grid on desktop, coloured left border by trajectory type */
.sr-outlook-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:start}
.sr-outlook{border:1px solid #262626;border-left:3px solid #333;padding:12px;background:#121212;min-width:0}
.sr-out-left-green{border-left-color:#2ecc71}
.sr-out-left-red{border-left-color:#ff3b30}
.sr-out-left-gold{border-left-color:#f0b429}
.sr-outlook h3{color:#e8e8e8;font-size:14px;margin:6px 0;line-height:1.4}
.sr-outlook p{font-size:12px;color:#b0b0b0;margin:6px 0}
.sr-outlook p strong{color:#8a8a8a;font-size:11px;letter-spacing:.04em}
.sr-unc-moderate{color:#5ec8d4 !important;border-color:#2a5a60 !important}
.sr-unc-high{color:#f0b429 !important;border-color:#6a5510 !important}
.sr-unc-very-high{color:#ff6b5e !important;border-color:#6a2a2a !important}
.sr-out-links{margin-top:10px}
.sr-out-links p{font-size:11px;color:#5ec8d4;word-break:break-all;margin:3px 0}
@media (max-width:1100px){
  .sr-main{grid-template-columns:1fr}
  .sr-map-col{position:static}
  #sr-map{height:420px}
  .sr-trip-strip{grid-template-columns:repeat(3,1fr)}
  .sr-outlook-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:700px){
  .sr-threat{grid-template-columns:1fr 1fr}
  .sr-defcon-cols{grid-template-columns:1fr}
  .sr-defcon-big{font-size:36px}
  #sr-map{height:340px}
  .sr-trip-strip{grid-template-columns:1fr 1fr}
  .sr-outlook-grid{grid-template-columns:1fr}
  .sr-topbar-inner{flex-direction:column}
}

/* Rotating cam, bottom of the Situation Room — ops style, same page only.
   One cam at a time, click-to-load, auto-rotates every 60 seconds. */
.sr-cams{margin-top:16px}
.sr-rot-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.sr-rot-label{font-weight:700;letter-spacing:.04em}
.sr-rot-btns{display:flex;gap:8px;flex-wrap:wrap}
.sr-rot-btns button,.sr-rot-load{background:#000;color:#e8e8e8;border:1px solid #444;padding:8px 12px;font:inherit;cursor:pointer}
.sr-rot-btns button:hover,.sr-rot-load:hover{border-color:#5ec8d4}
.sr-rot-status{color:#ffb300;font-size:12px}
.sr-rot-note{color:#b0b0b0;font-size:12px}
#sr-rot-player{background:#000;min-height:120px;display:flex;align-items:center;justify-content:center;margin:10px 0}
#sr-rot-player iframe{display:block}
.sr-rot-load{width:100%}
.sr-rot-link{color:#5ec8d4}

/* Floating skip button — Situation Room only. Fixed bottom-right, gold text
   on a black ops panel. Label/target changes with scroll position (see
   js/situation-room.js): tripwires, then outlook, then back to top. */
html{scroll-behavior:smooth}
.sr-skip-inline{color:#f0b429;font-size:11px;letter-spacing:.08em}
.sr-skip-float{position:fixed;right:16px;bottom:16px;z-index:2000;background:#000;color:#f0b429;border:1px solid #f0b429;padding:10px 14px;font:inherit;font-size:12px;font-weight:700;letter-spacing:.08em;cursor:pointer;box-shadow:0 0 14px rgba(240,180,41,.35);display:none}
.sr-skip-float.sr-skip-visible{display:block}
.sr-skip-float:hover,.sr-skip-float:focus{color:#fff;border-color:#fff;outline:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
