/* IGW Sky 0.1.3 — every object in orbit. Tokens from docs/design/SPEC.md.
   0.1.1: the body has a fixed height on desktop so the side list scrolls inside
   it instead of stretching the stage (measured on staging at 1440: a 40-row
   list made the stage 3,000 px tall and pushed the globe off the screen). */
.igwsky { --sky-ground:#050505; --sky-surface:#0b0d0f; --sky-raised:#12161a; --sky-text:#f5f5f5; --sky-muted:#9fa7af; --sky-cap:#8A94A0;
  --sky-hair:rgba(255,255,255,.10); --sky-edge:rgba(255,255,255,.14); --sky-edge-i:rgba(255,255,255,.36); --sky-edge-h:rgba(255,255,255,.60);
  --sky-accent:#7DB8EA; --sky-accent-fill:rgba(125,184,234,.12);
  --sky-display:var(--_igw-2-0---font--display),"Clashdisplay Variable","Clash Display",sans-serif;
  --sky-body:var(--_igw-2-0---font--body),"Plus Jakarta Sans",system-ui,sans-serif;
  font-family:var(--sky-body); color:var(--sky-text); background:var(--sky-ground); min-width:0; font-variant-numeric:tabular-nums; }
.igwsky *, .igwsky *::before, .igwsky *::after { box-sizing:border-box; }
.igwsky-top { display:grid; grid-template-columns:1fr auto; gap:16px 24px; align-items:end; padding:0 0 18px; border-bottom:1px solid var(--sky-edge); }
.igwsky-kicker { font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--sky-cap); margin:0 0 10px; }
.igwsky-n { font-family:var(--sky-display); font-size:64px; font-weight:500; line-height:.95; letter-spacing:-.02em; margin:0; }
.igwsky-of { font-size:14px; color:var(--sky-muted); margin:10px 0 0; max-width:60ch; line-height:1.45; }
.igwsky-of b { color:var(--sky-text); font-weight:600; }
.igwsky-state { font-size:12px; color:var(--sky-cap); margin:6px 0 0; }
.igwsky-views { display:flex; gap:8px; }
.igwsky .igwsky-tab { font:inherit; font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--sky-text); background:transparent; border:1px solid var(--sky-edge-i); border-radius:4px; padding:9px 14px; cursor:pointer; min-height:38px; }
.igwsky .igwsky-tab:hover { border-color:var(--sky-edge-h); background:rgba(255,255,255,.06); }
.igwsky .igwsky-tab[aria-selected="true"] { background:var(--sky-text); color:var(--sky-ground); border-color:var(--sky-text); }
.igwsky .igwsky-tab:focus-visible, .igwsky .igwsky-chip:focus-visible, .igwsky .igwsky-btn:focus-visible, .igwsky .igwsky-row:focus-visible { outline:2px solid var(--sky-accent); outline-offset:2px; }
.igwsky-body { display:grid; grid-template-columns:minmax(0,1fr) 340px; grid-template-rows:minmax(0,1fr); gap:0; border:1px solid var(--sky-edge); border-top:0; border-radius:0 0 4px 4px; background:var(--sky-surface); height:clamp(560px, 72vh, 780px); }
.igwsky-stage { position:relative; min-height:0; height:100%; overflow:hidden; background:var(--sky-ground); touch-action:none; cursor:grab; }
.igwsky-stage.is-dragging { cursor:grabbing; }
.igwsky-gl { position:absolute; inset:0; width:100%; height:100%; display:block; }
.igwsky-labels { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.igwsky-label { position:absolute; transform:translate(-50%,-140%); font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--sky-text); white-space:nowrap; padding:4px 7px; background:rgba(5,5,5,.72); border:1px solid var(--sky-edge); border-radius:2px; }
.igwsky-label small { display:block; font-weight:500; letter-spacing:.02em; text-transform:none; color:var(--sky-muted); font-size:11px; }
.igwsky-label.is-sel { border-color:var(--sky-accent); }
.igwsky-label.is-dim { color:var(--sky-muted); background:transparent; border-color:transparent; padding:0; }
.igwsky-hud { position:absolute; left:14px; bottom:12px; font-size:11px; color:var(--sky-cap); letter-spacing:.04em; pointer-events:none; }
.igwsky-hud b { color:var(--sky-muted); font-weight:600; }
.igwsky-me { position:absolute; width:14px; height:14px; margin:-7px 0 0 -7px; border:1px solid var(--sky-accent); border-radius:50%; box-shadow:0 0 0 3px rgba(125,184,234,.2); pointer-events:none; }
.igwsky-side { border-left:1px solid var(--sky-edge); display:flex; flex-direction:column; min-width:0; min-height:0; overflow:hidden; }
.igwsky-tools { padding:14px; border-bottom:1px solid var(--sky-edge); display:flex; flex-direction:column; gap:10px; }
.igwsky .igwsky-search { font:inherit; font-size:14px; color:var(--sky-text); background:transparent; border:1px solid var(--sky-edge-i); border-radius:4px; padding:10px 12px; width:100%; min-height:42px; }
.igwsky .igwsky-search::placeholder { color:var(--sky-cap); }
.igwsky .igwsky-search:focus { outline:0; border-color:var(--sky-accent); box-shadow:0 0 0 3px rgba(125,184,234,.25); }
.igwsky-chips { display:flex; flex-wrap:wrap; gap:6px; }
.igwsky .igwsky-chip { font:inherit; font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--sky-muted); background:transparent; border:1px solid var(--sky-edge); border-radius:2px; padding:6px 9px; cursor:pointer; min-height:30px; }
.igwsky .igwsky-chip:hover { border-color:var(--sky-edge-i); color:var(--sky-text); }
.igwsky .igwsky-chip[aria-pressed="true"] { color:var(--sky-text); border-color:var(--sky-edge-h); background:rgba(255,255,255,.10); }
.igwsky .igwsky-btn { font:inherit; font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--sky-text); background:transparent; border:1px solid var(--sky-edge-i); border-radius:4px; padding:9px 12px; cursor:pointer; min-height:38px; text-align:left; }
.igwsky .igwsky-btn:hover { border-color:var(--sky-edge-h); background:rgba(255,255,255,.06); }
.igwsky .igwsky-btn[disabled] { border-color:var(--sky-edge); color:var(--sky-cap); cursor:default; }
.igwsky-scroll { overflow:auto; min-height:0; flex:1 1 auto; }
.igwsky-panel { padding:16px 14px; border-bottom:1px solid var(--sky-edge); }
.igwsky-panel-k { font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--sky-cap); margin:0 0 6px; }
.igwsky-panel-h { font-family:var(--sky-display); font-size:28px; font-weight:500; line-height:1.05; letter-spacing:-.01em; margin:0 0 4px; overflow-wrap:anywhere; }
.igwsky-panel-sub { font-size:13px; color:var(--sky-muted); margin:0 0 14px; }
.igwsky-kv { display:grid; grid-template-columns:auto 1fr; gap:6px 14px; font-size:13px; margin:0; }
.igwsky-kv dt { color:var(--sky-cap); margin:0; }
.igwsky-kv dd { margin:0; color:var(--sky-text); text-align:right; overflow-wrap:anywhere; }
.igwsky-kv dd.is-live { color:var(--sky-text); }
.igwsky-mini { display:block; width:100%; height:180px; margin:14px 0 0; background:var(--sky-ground); border:1px solid var(--sky-edge); border-radius:2px; }
.igwsky-mini-cap { font-size:11px; color:var(--sky-cap); margin:6px 0 0; line-height:1.4; }
.igwsky-close { margin-top:14px; }
.igwsky-list { margin:0; padding:6px 0; list-style:none; }
.igwsky-row { display:grid; grid-template-columns:1fr auto; gap:10px; width:100%; text-align:left; font:inherit; color:var(--sky-text); background:transparent; border:0; border-bottom:1px solid var(--sky-hair); padding:10px 14px; cursor:pointer; }
.igwsky-row:hover { background:rgba(255,255,255,.04); }
.igwsky-row[aria-current="true"] { background:var(--sky-accent-fill); }
.igwsky-row-n { font-size:13px; font-weight:600; letter-spacing:.02em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.igwsky-row-s { font-size:11px; color:var(--sky-cap); margin-top:2px; }
.igwsky-row-r { font-size:11px; color:var(--sky-muted); text-align:right; white-space:nowrap; }
.igwsky-note { padding:12px 14px; font-size:12px; color:var(--sky-cap); line-height:1.5; }
.igwsky-empty { display:flex; align-items:center; justify-content:center; position:absolute; inset:0; padding:24px; text-align:center; color:var(--sky-muted); font-size:14px; line-height:1.5; pointer-events:none; }
.igwsky-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; }
@media (max-width: 900px) {
  .igwsky-top { grid-template-columns:1fr; align-items:start; }
  .igwsky-n { font-size:44px; }
  .igwsky-body { grid-template-columns:1fr; grid-template-rows:auto auto; height:auto; }
  .igwsky-stage { height:min(78vw, 480px); }
  .igwsky-side { border-left:0; border-top:1px solid var(--sky-edge); max-height:none; }
  .igwsky-scroll { max-height:420px; }
}
@media (max-width: 480px) { .igwsky-n { font-size:28px; } }
@media (prefers-reduced-motion: reduce) { .igwsky .igwsky-tab, .igwsky .igwsky-chip, .igwsky .igwsky-btn, .igwsky-row { transition:none; } }

/* Hidden state must outrank component flex/grid/block declarations. */
.igwsky [hidden] { display:none !important; }


/* Observatory controls and functional GPU-off catalog. */
.igwsky .igwsky-tab,.igwsky .igwsky-chip,.igwsky .igwsky-btn {min-height:44px;font-size:12px;letter-spacing:.03em;text-transform:none;transition:background-color .25s,border-color .25s,color .25s}
.igwsky .igwsky-search {min-height:48px;font-size:16px}
.igwsky-row {min-height:48px;align-items:center}
.igwsky [disabled] {opacity:.55;cursor:default}
.igwsky[data-igw-sky-propagator="not-running-catalogue-only"] .igwsky-scroll {max-height:440px}
.igwsky[data-igw-sky-propagator="not-running-catalogue-only"] .igwsky-side {border-left:0}
.igwsky[data-igw-sky-state^="unavailable"] .igwsky-n {display:none}
@media(prefers-reduced-motion:reduce){.igwsky button{transition:none!important}}
