/* ============================================================================
   MILLION DOLLAR GALAXY · GALAXY INTERFACE SYSTEM  (V10.4.0)
   ----------------------------------------------------------------------------
   THE GALAXY IS THE INTERFACE.

   This file is the single canonical owner of:
     · design tokens          · HUD zone geometry
     · base controls          · header / ticker / primary nav / camera dock
     · object peek            · panels, drawers, modals, overlays
     · placement + object page layout
     · the entire responsive system and accessibility layer

   galaxy.html's inline <style> owns *content* components only (object passport
   internals, composition/trait readouts, developer harness panels). It must not
   position HUD zones. Do not add layout overrides there.

   Sections
     01 TOKENS            08 CAMERA + MAP DOCK    15 CREATE / MASS
     02 BASE              09 OBJECT PEEK          16 MY GALAXY
     03 UTILITIES         10 SIDE DRAWER (MORE)   17 PLACEMENT
     04 HUD FRAME         11 CORE OVERLAYS        18 OBJECT PAGE
     05 HEADER            12 MODALS               19 NOTICES / BIRTH
     06 LIVE TICKER       13 SEARCH               20 DEVELOPER
     07 PRIMARY NAV       14 EVENTS               21 RESPONSIVE
                                                  22 ACCESSIBILITY
   Breakpoint system (only these three, plus input/preference queries):
     compact   max-width: 900px      phone + small tablet
     phone     max-width: 560px
     short     max-height: 560px and orientation: landscape
   ========================================================================== */

/* ============================================================================
   01 · TOKENS
   ========================================================================== */
:root{
  color-scheme:dark;

  /* -- surface + colour ---------------------------------------------------
     DESIGN LAB PRODUCTION DEFAULTS — exported settings replace this block. */
  --gui-space:#020408;
  --gui-panel-opacity:.90;
  --gui-panel-secondary-opacity:.82;
  --gui-panel-primary:rgba(5,14,24,var(--gui-panel-opacity));
  --gui-panel-secondary:rgba(8,20,33,var(--gui-panel-secondary-opacity));
  --gui-panel-solid:#06101b;
  --gui-border:rgba(117,181,218,.24);
  --gui-border-strong:rgba(119,216,255,.52);
  --gui-cyan-ambient:#6f93a8;
  --gui-cyan-interactive:#6edcff;
  --gui-cyan-bright:#b5efff;
  --gui-cyan-emissive:#8be8ff;
  --gui-text-primary:#eef8ff;
  --gui-text-secondary:#9db3c4;
  --gui-text-disabled:#5b7280;
  --gui-divider:rgba(113,163,192,.16);
  --gui-success:#7ee2b4;
  --gui-warning:#e9bc6a;
  --gui-danger:#ff827c;
  --gui-cosmic:#b9a2ff;
  --gui-selected:rgba(91,212,255,.16);
  --gui-hover:rgba(93,198,235,.10);

  /* -- typography --------------------------------------------------------- */
  --gui-font-ui:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --gui-font-tech:"SFMono-Regular",Consolas,"Liberation Mono",monospace;
  --gui-font-display:700 1.375rem/1.12 var(--gui-font-ui);
  --gui-font-title:700 1.0625rem/1.2 var(--gui-font-ui);
  --gui-font-heading:700 .875rem/1.3 var(--gui-font-ui);
  --gui-font-body:500 .8125rem/1.55 var(--gui-font-ui);
  --gui-font-caption:500 .75rem/1.45 var(--gui-font-ui);
  --gui-font-label:700 .6875rem/1.2 var(--gui-font-ui);
  --gui-font-micro:700 .625rem/1.3 var(--gui-font-tech);
  --gui-font-stat:700 .875rem/1.2 var(--gui-font-tech);
  --gui-track-label:.14em;
  --gui-track-wide:.2em;

  /* -- space + shape ------------------------------------------------------ */
  --gui-space-1:4px;
  --gui-space-2:8px;
  --gui-space-3:12px;
  --gui-space-4:16px;
  --gui-space-5:24px;
  --gui-space-6:32px;
  --gui-radius-sm:9px;
  --gui-radius-md:13px;
  --gui-radius-lg:18px;
  --gui-radius-pill:999px;
  --gui-stroke:1px;
  --gui-blur:16px;
  --gui-glow-low:0 0 14px rgba(94,211,255,.07);
  --gui-glow-medium:0 0 24px rgba(94,211,255,.14);
  --gui-lift:0 18px 54px rgba(0,0,0,.55);
  --gui-lift-strong:0 28px 84px rgba(0,0,0,.66);
  --gui-touch:44px;
  --gui-ui-scale:1;

  /* -- renderer tokens (read by the WebGL layer; never remove) ------------ */
  --galaxy-star-flare:1;
  --galaxy-star-bloom:1;
  --galaxy-black-hole-glow:1;
  --galaxy-black-hole-disk:1;
  --galaxy-black-hole-lensing:1;
  --galaxy-orbit-opacity:1;
  --galaxy-haze-opacity:1;

  /* -- motion ------------------------------------------------------------- */
  --gui-motion-fast:130ms;
  --gui-motion-panel:260ms;
  --gui-ease:cubic-bezier(.2,.75,.25,1);

  /* -- layers ------------------------------------------------------------- */
  --gui-z-hud:10;
  --gui-z-hud-raised:14;
  --gui-z-banner:17;
  --gui-z-placement:18;
  --gui-z-drawer:26;
  --gui-z-scrim:43;
  --gui-z-side:44;
  --gui-z-page:55;
  --gui-z-modal:60;
  --gui-z-ceremony:70;
  --gui-z-notice:80;
  --gui-z-lab:85;

  /* -- HUD zone geometry --------------------------------------------------
     Every fixed element derives its position from these. Change the zone,
     not the component. */
  --hud-gutter:14px;
  --hud-left:calc(var(--hud-gutter) + env(safe-area-inset-left));
  --hud-right:calc(var(--hud-gutter) + env(safe-area-inset-right));
  --hud-top:calc(var(--hud-gutter) + env(safe-area-inset-top));
  --hud-bottom:calc(var(--hud-gutter) + env(safe-area-inset-bottom));
  --hud-header-h:46px;
  --hud-ticker-h:30px;
  --hud-ticker-gap:10px;
  /* Single anchor for everything that drops in under the header + ticker band,
     so notices, the event banner and the search surface can never stack on top
     of each other or on the ticker. */
  --hud-below-header:calc(var(--hud-top) + var(--hud-header-h) + var(--hud-ticker-gap) + var(--hud-ticker-h) + 12px);
  --hud-nav-h:58px;
  --hud-nav-w:560px;
  --hud-stack-gap:10px;
  /* distance from the viewport bottom edge to the top of the primary nav */
  --hud-nav-clear:calc(var(--hud-nav-h) + var(--hud-bottom) + var(--hud-stack-gap));
  /* measured by the UI layer; falls back to a safe constant before first paint */
  --hud-peek-h:78px;
  --hud-dock-bottom:var(--hud-nav-clear);
  --hud-peek-bottom:var(--hud-nav-clear);
  /* The map always fits the space the dock actually has, so it can never be
     pushed off the top of a short viewport. */
  --hud-map-chrome:160px;
  --hud-map-size:clamp(80px,calc(100dvh - var(--hud-dock-bottom) - var(--hud-below-header) - var(--hud-map-chrome)),226px);

  /* bridges for selectors that predate the semantic system */
  --panel:var(--gui-panel-primary);
  --line:var(--gui-border);
  --text:var(--gui-text-primary);
}

/* ============================================================================
   02 · BASE
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{font-size:calc(16px * var(--gui-ui-scale));background:var(--gui-space)}
html,body{
  color:var(--gui-text-primary);
  font-family:var(--gui-font-ui);
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
body{margin:0;font:var(--gui-font-body)}

button,input,select,textarea{font-family:var(--gui-font-ui)}
[hidden]{display:none!important}

button{
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:var(--gui-touch);
  padding:0 var(--gui-space-3);
  border:var(--gui-stroke) solid var(--gui-border);
  border-radius:var(--gui-radius-sm);
  background:var(--gui-panel-secondary);
  color:var(--gui-text-primary);
  /* use slightly smaller caption font for buttons to help long labels fit */
  font:var(--gui-font-caption);
  letter-spacing:.04em;
  cursor:pointer;
  touch-action:manipulation;
  transition:
    background-color var(--gui-motion-fast) ease,
    border-color var(--gui-motion-fast) ease,
    color var(--gui-motion-fast) ease,
    transform var(--gui-motion-fast) ease,
    box-shadow var(--gui-motion-fast) ease;
}
button:hover:not(:disabled){background:var(--gui-hover);border-color:var(--gui-border-strong)}
button:active:not(:disabled){transform:scale(.978)}
button:disabled{color:var(--gui-text-disabled);opacity:.5;cursor:not-allowed}
button.active,
button.primary,
.primaryAction,
.massAction{
  border-color:var(--gui-border-strong);
  background:linear-gradient(180deg,rgba(35,112,144,.66),rgba(17,60,83,.78));
  color:var(--gui-text-primary);
  box-shadow:var(--gui-glow-low);
}
.massAction{border-color:rgba(126,226,180,.46);background:linear-gradient(180deg,rgba(28,92,70,.6),rgba(11,45,34,.78));color:#c8ffe4}

:where(button,a,input,select,textarea,[tabindex]):focus{outline:none}
:where(button,a,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--gui-cyan-emissive);
  outline-offset:2px;
  box-shadow:0 0 0 4px rgba(107,219,255,.16);
}

input,select,textarea,
.field input,.field select,.field textarea{
  border:var(--gui-stroke) solid var(--gui-border);
  border-radius:var(--gui-radius-sm);
  background:rgba(2,9,16,.92);
  color:var(--gui-text-primary);
  font:var(--gui-font-body);
}
input::placeholder,textarea::placeholder{color:var(--gui-text-disabled)}
.field label{font:var(--gui-font-label);letter-spacing:var(--gui-track-label);color:var(--gui-cyan-ambient);text-transform:uppercase}

/* technical / archival numerics */
.brand,.pill,.liveTicker,.eventBanner,.navTrail,.streamLegend,
.placementCard,.purchaseStep,.passportItem,.objectPageStat,.bhItem,
.devDiagnostics,.envBadge,.historyEvent .hTime,.miniEvent .miniTime,
.minimapReadout,.objectBarMetaLine,.gui-object-result .resultMeta{
  font-family:var(--gui-font-tech);
  font-variant-numeric:tabular-nums;
}

/* semantic colour helpers used by runtime-generated markup */
.good,.statusAlive,.gravityGood,.archGood,.pGood,.spatialGood,.massEvolution,.lodStat,.orbitSpeedFast{color:var(--gui-success)!important}
.warn,.pWarn,.gravityWarn,.statusDanger,.spatialWarm{color:var(--gui-warning)!important}
.bad,.pBad,.badText,.devRemoved{color:var(--gui-danger)!important}
.statusCaptured{color:var(--gui-cyan-bright)!important}
.statusDestroyed{color:var(--gui-cosmic)!important}
.watchHint{color:var(--gui-cyan-emissive)!important}

/* ============================================================================
   03 · UTILITIES
   ========================================================================== */
.gui-icon{
  width:1rem;height:1rem;flex:0 0 auto;display:inline-block;vertical-align:middle;
  fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;pointer-events:none;
}
/* nudge icons slightly to visually align with text in compact buttons */
.gui-button-content .gui-icon{transform:translateY(0.08rem)}
.gui-button-content{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0}
.gui-button-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gui-icon-only{width:calc(var(--gui-touch) - 4px);min-width:calc(var(--gui-touch) - 4px);padding:0}
.gui-icon-only .gui-button-label,
.gui-hide-label .gui-button-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.gui-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Runtime compatibility nodes: still in the DOM and still clickable from code,
   but never part of the player-facing surface. Removing them breaks boot. */
.gui-compat-node{
  position:absolute!important;
  width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;border:0!important;
  opacity:0!important;pointer-events:none!important;
}

.gui-panel{border:var(--gui-stroke) solid var(--gui-border);border-radius:var(--gui-radius-lg);background:var(--gui-panel-primary);backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));box-shadow:var(--gui-lift),var(--gui-glow-low)}
.gui-divider{height:1px;background:var(--gui-divider)}
.gui-status{display:flex;align-items:flex-start;gap:var(--gui-space-2);padding:var(--gui-space-3);border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:var(--gui-panel-secondary);font:var(--gui-font-body)}
.gui-status[data-kind="success"]{border-color:color-mix(in srgb,var(--gui-success) 45%,transparent);color:var(--gui-success)}
.gui-status[data-kind="warning"]{border-color:color-mix(in srgb,var(--gui-warning) 45%,transparent);color:var(--gui-warning)}
.gui-status[data-kind="error"]{border-color:color-mix(in srgb,var(--gui-danger) 45%,transparent);color:var(--gui-danger)}
.gui-loading{display:inline-flex;align-items:center;gap:var(--gui-space-2);color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-loading::before{content:"";width:11px;height:11px;border:1px solid var(--gui-cyan-interactive);border-top-color:transparent;border-radius:50%;animation:gui-spin .8s linear infinite}
@keyframes gui-spin{to{transform:rotate(1turn)}}
.gui-empty-state{
  display:grid;place-items:center;gap:6px;
  padding:26px 18px;
  border:1px dashed var(--gui-border);border-radius:var(--gui-radius-md);
  color:var(--gui-text-secondary);font:var(--gui-font-body);text-align:center;
}
.gui-empty-state b{display:block;color:var(--gui-text-primary);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-eyebrow{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label);text-transform:uppercase}

/* ============================================================================
   04 · HUD FRAME
   The galaxy canvas fills the viewport. Every HUD zone is a fixed, non-blocking
   layer over it; only the controls inside a zone accept pointer events.
   ========================================================================== */
#gl,#overlay{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}
#overlay{pointer-events:none}

.top{
  position:fixed;
  z-index:var(--gui-z-hud-raised);
  top:0;left:0;right:0;
  padding:var(--hud-top) var(--hud-right) 0 var(--hud-left);
  pointer-events:none;
}
.top > *{pointer-events:auto}

/* Bottom stack: nav (anchored), camera dock and object peek above it. */
.primaryGalaxyNav,.hudDock,.objectBar{position:fixed}

/* Suppress the HUD wholesale in modes that own the screen. */
body.placing #galaxyHud,
body.placing .primaryGalaxyNav,
body.placing .hudDock,
body.placing .objectBar,
body.placing .gui-side-drawer,
body.placing .gui-drawer-scrim,
body.placing .gui-help-overlay,
body.placing .detailDrawer,
body.placing .controls{display:none!important}
/* Dimming only ever applies to a peek that is actually on screen, so a hidden
   card never occupies the band the camera dock is measured against. */
body.menu-open .primaryGalaxyNav,
body.menu-open .hudDock,
body.menu-open .objectBar.show{opacity:.12;pointer-events:none;filter:saturate(.4)}
body.core-overlay-open .hudDock,
body.object-page-open .hudDock,
body.object-page-open .objectBar.show{opacity:.12;pointer-events:none}
body.dev-open .hudDock,body.drawer-open .hudDock{opacity:.2;pointer-events:none}
body.drawer-open .objectBar.show{opacity:0;pointer-events:none}

/* ============================================================================
   05 · HEADER
   Left: identity + live status.   Right: mass readout + MORE.
   Search and Help are reached from the primary nav and the More menu; they are
   not duplicated here.
   ========================================================================== */
.galaxyHudTop{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  gap:var(--gui-space-3);
  width:100%;
  pointer-events:none;
}
.hudIdentity{min-width:0;display:flex;flex-direction:column;gap:3px;pointer-events:none}
.hudIdentity .brand{
  font:var(--gui-font-label);
  font-size:.75rem;
  letter-spacing:var(--gui-track-wide);
  color:var(--gui-text-primary);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  text-shadow:0 1px 12px rgba(0,0,0,.75);
}
.hudKicker{
  display:inline-flex;align-items:center;gap:7px;
  color:var(--gui-text-secondary);
  font:var(--gui-font-micro);
  letter-spacing:var(--gui-track-label);
}
.hudKicker i{
  width:6px;height:6px;border-radius:50%;
  background:var(--gui-success);
  box-shadow:0 0 10px rgba(126,226,180,.8);
  animation:gui-live-pulse 3.4s ease-in-out infinite;
}
@keyframes gui-live-pulse{0%,100%{opacity:1}50%{opacity:.42}}

.hudTools{display:flex;align-items:center;gap:var(--gui-space-2);pointer-events:none}
.hudTools > *{pointer-events:auto}
.hudTools button{
  min-height:var(--gui-touch);
  background:rgba(4,13,23,.78);
  backdrop-filter:blur(var(--gui-blur));
  -webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-glow-low);
}
#menuOpen{width:var(--gui-touch);min-width:var(--gui-touch);padding:0}
#menuOpen .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
#helpOpen{width:var(--gui-touch);min-width:var(--gui-touch);padding:0;border-color:rgba(83,181,210,.25)}
#helpOpen .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
#helpOpen .gui-icon{color:var(--gui-cyan-ambient)}
#helpOpen:hover .gui-icon,#helpOpen:focus-visible .gui-icon{color:var(--gui-cyan-bright)}

.massBalanceChip{
  display:inline-flex;align-items:center;gap:10px;
  min-width:104px;height:var(--gui-touch);
  padding:0 12px;
  border-color:rgba(83,181,210,.34);
  background:rgba(4,17,27,.82);
  color:var(--gui-text-secondary);
  font:var(--gui-font-micro);
  letter-spacing:var(--gui-track-label);
}
.massBalanceChip b{font:var(--gui-font-stat);letter-spacing:.02em;color:var(--gui-cyan-bright);font-variant-numeric:tabular-nums}
/* Without a real balance the chip is a quiet entry point, not a headline. */
.massBalanceChip[data-state="signed-out"] span,
.massBalanceChip[data-state="unsupported"] span,
.massBalanceChip[data-state="error"] span{display:none}
.massBalanceChip[data-state="signed-out"] b,
.massBalanceChip[data-state="unsupported"] b{font:var(--gui-font-label);letter-spacing:var(--gui-track-label);color:var(--gui-text-secondary)}
.massBalanceChip[data-state="signed-out"]:hover b{color:var(--gui-cyan-bright)}
.massBalanceChip[data-state="error"] b{color:var(--gui-danger)}

.envBadge{
  display:none;margin-left:8px;padding:3px 7px;
  border:1px solid rgba(233,188,106,.45);border-radius:var(--gui-radius-pill);
  color:var(--gui-warning);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label);
  vertical-align:middle;
}
.envBadge.show{display:inline-block}
.envBadge.production{border-color:rgba(126,226,180,.45);color:var(--gui-success)}

.syncAlert{
  position:absolute;left:50%;top:var(--hud-below-header);
  transform:translateX(-50%);
  width:min(520px,calc(100vw - 2 * var(--hud-gutter)));
  display:none;align-items:center;gap:10px;
  padding:10px 12px;
  border:1px solid rgba(233,188,106,.45);border-radius:var(--gui-radius-md);
  background:rgba(38,25,8,.94);color:var(--gui-warning);
  font:var(--gui-font-caption);
}
.syncAlert.show{display:flex}
.syncAlert span{flex:1;min-width:0}
.syncAlert button{flex:0 0 auto;min-height:34px;border-color:rgba(233,188,106,.5);background:rgba(56,38,13,.9);color:#ffe0a8}

/* ============================================================================
   06 · LIVE TICKER
   Compact, horizontally flowing, centred beneath the header. Never overlaps
   MORE, never disappears at a breakpoint.
   ========================================================================== */
.liveTicker{
  position:relative;
  width:min(720px,calc(100vw - 2 * var(--hud-gutter)));
  height:var(--hud-ticker-h);
  margin:var(--hud-ticker-gap) auto 0;
  display:flex;align-items:center;
  overflow:hidden;
  border:1px solid var(--gui-divider);
  border-radius:var(--gui-radius-pill);
  background:rgba(2,8,14,.62);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  pointer-events:auto;
  transition:border-color var(--gui-motion-fast) ease,opacity var(--gui-motion-fast) ease;
}
.liveTicker:hover{border-color:var(--gui-border)}
.tickerLiveToggle,.tickerActivityOpen,button.tickerItem{
  appearance:none;min-height:28px;margin:0;
  border:0;border-radius:0;background:transparent;box-shadow:none;
  transform:none!important;
  font-family:var(--gui-font-tech);
}
.tickerLiveToggle{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:100%;padding:0 12px;
  border-right:1px solid var(--gui-divider);
  color:var(--gui-cyan-bright);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label);
}
.tickerLiveToggle i{width:6px;height:6px;border-radius:50%;background:var(--gui-success);box-shadow:0 0 9px var(--gui-success);animation:gui-live-pulse 3.4s ease-in-out infinite}
.liveTicker.paused .tickerLiveToggle i{background:var(--gui-warning);box-shadow:0 0 9px var(--gui-warning);animation:none}
.tickerActivityOpen{
  flex:0 0 auto;height:100%;padding:0 10px;gap:6px;
  border-left:1px solid var(--gui-divider);
  color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label);
}
#tickerUnreadBadge,.navEventBadge{
  min-width:17px;height:17px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--gui-radius-pill);background:var(--gui-danger);color:#fff;
  font:700 .5625rem/1 ui-monospace,monospace;letter-spacing:0;box-shadow:0 0 10px rgba(255,120,130,.22)
}
#tickerUnreadBadge[hidden],.navEventBadge[hidden]{display:none!important}
.primaryGalaxyNav #primaryEvents{position:relative}
.navEventBadge{position:absolute;top:3px;right:9px;pointer-events:none}
.primaryGalaxyNav #primaryEvents.has-unread .gui-icon{color:#ffb8c0;opacity:1}
.tickerLiveToggle:hover,.tickerActivityOpen:hover,
.tickerLiveToggle:focus-visible,.tickerActivityOpen:focus-visible{background:rgba(52,154,194,.14);color:var(--gui-text-primary)}
.tickerViewport{position:relative;flex:1;min-width:0;height:100%;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%);
}
.tickerTrack{position:absolute;left:0;top:0;height:100%;display:flex;align-items:center;white-space:nowrap;will-change:transform}
.tickerGroup{height:100%;display:inline-flex;align-items:center;flex:0 0 auto}
.tickerItem{
  height:100%;display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;
  padding:0 11px;
  color:var(--gui-text-secondary);
  font:var(--gui-font-micro);font-size:.6875rem;letter-spacing:.02em;
  white-space:nowrap;
}
button.tickerItem{cursor:pointer}
button.tickerItem:hover,button.tickerItem:focus-visible{background:rgba(66,176,214,.12);color:var(--gui-text-primary);outline:0}
.tickerItem em{
  padding:2px 6px;border:1px solid currentColor;border-radius:var(--gui-radius-pill);
  font-style:normal;font-size:.5625rem;letter-spacing:.1em;opacity:.72;
}
.tickerSeverity{width:5px;height:5px;display:inline-block;flex:0 0 auto;margin-right:1px;border-radius:50%;background:#7894ad}
.tickerSeverity.severity-noteworthy{background:var(--gui-cyan-bright);box-shadow:0 0 7px rgba(111,216,255,.35)}
.tickerSeverity.severity-warning{background:var(--gui-warning);box-shadow:0 0 7px rgba(233,188,106,.35)}
.tickerSeverity.severity-critical{background:var(--gui-danger);box-shadow:0 0 8px rgba(255,130,124,.42)}
.tickerSep{padding:0 4px;color:rgba(114,151,177,.34);font-size:.625rem}
.liveTicker.collapsed{width:auto}
.liveTicker.collapsed .tickerViewport{display:none}
.liveTicker.collapsed .tickerLiveToggle{border-right:0}

/* Event accent. Type reads through colour AND the tag glyph, never colour alone. */
.tickerItem.purchase{color:var(--gui-success)}
.tickerItem.contribution{color:#9fc1ff}
.tickerItem.evolution{color:var(--gui-warning)}
.tickerItem.discovery{color:#8effe0}
.tickerItem.capture{color:var(--gui-cyan-bright)}
.tickerItem.danger{color:#ffbd76}
.tickerItem.encounter{color:var(--gui-warning)}
.tickerItem.ejection{color:#ffb27a}
.tickerItem.blackhole{color:var(--gui-cosmic)}
.tickerItem.admin{color:var(--gui-danger)}
.tickerItem.system{color:#b6adff}

/* ============================================================================
   07 · PRIMARY NAVIGATION
   Galaxy · Search · Create · Events · My Galaxy
   Create is a peer, never permanently selected.
   ========================================================================== */
.primaryGalaxyNav{
  z-index:var(--gui-z-hud);
  left:50%;bottom:var(--hud-bottom);
  transform:translateX(-50%);
  width:min(var(--hud-nav-w),calc(100vw - 2 * var(--hud-gutter)));
  height:var(--hud-nav-h);
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
  gap:2px;padding:4px;
  border:var(--gui-stroke) solid var(--gui-border);
  border-radius:var(--gui-radius-lg);
  background:rgba(3,11,19,.84);
  backdrop-filter:blur(var(--gui-blur));
  -webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift),var(--gui-glow-low);
  pointer-events:auto;
}
.primaryGalaxyNav button{
  min-width:0;min-height:0;height:100%;
  padding:5px 4px;
  border-color:transparent;background:transparent;box-shadow:none;
  color:var(--gui-text-secondary);
  font:var(--gui-font-micro);
  font-size:.625rem;
  letter-spacing:.08em;
  border-radius:var(--gui-radius-md);
}
.primaryGalaxyNav .gui-button-content{flex-direction:column;gap:5px;line-height:1}
.primaryGalaxyNav .gui-icon{width:1.15rem;height:1.15rem;opacity:.82}
.primaryGalaxyNav button:hover,
.primaryGalaxyNav button:focus-visible{background:var(--gui-hover);color:var(--gui-text-primary)}
.primaryGalaxyNav button:hover .gui-icon{opacity:1}
.primaryGalaxyNav button.active,
.primaryGalaxyNav button[aria-current="page"]{
  background:var(--gui-selected);
  color:var(--gui-cyan-bright);
  box-shadow:inset 0 0 0 1px rgba(110,220,255,.22);
}
.primaryGalaxyNav button.active .gui-icon{opacity:1}
/* Create carries a quiet accent on its glyph only — it is not a call to action
   that shouts, and it must never read as the selected destination. */
.primaryGalaxyNav .primaryCreate .gui-icon{color:var(--gui-cyan-interactive);opacity:.95}
.primaryGalaxyNav .primaryCreate.active .gui-icon{color:var(--gui-cyan-bright)}

/* ============================================================================
   08 · CAMERA + MAP DOCK  (always bottom-right, at every viewport)
   ========================================================================== */
.hudDock{
  z-index:var(--gui-z-hud);
  right:var(--hud-right);
  bottom:var(--hud-dock-bottom);
  display:flex;flex-direction:column;align-items:flex-end;gap:8px;
  pointer-events:none;
  transition:bottom var(--gui-motion-panel) var(--gui-ease),opacity var(--gui-motion-fast) ease;
}
.hudDock > *{pointer-events:auto}
.dockTools{
  display:flex;align-items:center;gap:3px;
  padding:4px;
  border:var(--gui-stroke) solid var(--gui-border);
  border-radius:var(--gui-radius-md);
  background:rgba(4,13,23,.82);
  backdrop-filter:blur(var(--gui-blur));
  -webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift),var(--gui-glow-low);
}
.dockTools button{
  width:var(--gui-touch);min-width:var(--gui-touch);
  height:var(--gui-touch);min-height:var(--gui-touch);
  padding:0;border-color:transparent;background:transparent;box-shadow:none;
  color:var(--gui-text-secondary);border-radius:var(--gui-radius-sm);
}
.dockTools button:hover,.dockTools button:focus-visible{background:var(--gui-hover);color:var(--gui-text-primary)}
.dockTools button .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.dockDivider{width:1px;align-self:stretch;margin:5px 3px;background:var(--gui-divider)}
#minimapToggle[aria-expanded="true"]{background:var(--gui-selected);color:var(--gui-cyan-bright);box-shadow:inset 0 0 0 1px rgba(110,220,255,.22)}
#mainFit{color:var(--gui-text-primary)}

/* Map expands upward from the dock. It never relocates to another corner. */
.galaxyMinimap{
  width:calc(var(--hud-map-size) + 20px);
  display:none;
  overflow:hidden;
  border:var(--gui-stroke) solid var(--gui-border);
  border-radius:var(--gui-radius-md);
  background:rgba(3,11,19,.90);
  backdrop-filter:blur(var(--gui-blur));
  -webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift),var(--gui-glow-low);
  transform-origin:100% 100%;
}
.galaxyMinimap.open{display:block;animation:gui-dock-expand var(--gui-motion-panel) var(--gui-ease)}
@keyframes gui-dock-expand{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}
.minimapHead{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 12px;border-bottom:1px solid var(--gui-divider);
}
.minimapHead > div{min-width:0;display:flex;flex-direction:column;gap:2px}
.minimapHead > div span{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.minimapHead > div b{color:var(--gui-text-primary);font:var(--gui-font-heading);letter-spacing:.06em}
.minimapBody{padding:10px}
#minimapCanvas{
  width:var(--hud-map-size);height:var(--hud-map-size);display:block;
  border:1px solid rgba(99,155,189,.24);border-radius:var(--gui-radius-sm);
  background:#02060b;cursor:crosshair;touch-action:none;
}
#minimapCanvas:active{cursor:grabbing}
#minimapCanvas:focus-visible{outline:2px solid var(--gui-cyan-emissive);outline-offset:2px}
.minimapReadout{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 2px 1px;
  color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.05em;
}
.minimapReadout span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ============================================================================
   09 · OBJECT PEEK  (level 2 of selection · progressive disclosure)
   ========================================================================== */
.objectBar{
  z-index:var(--gui-z-hud-raised);
  left:50%;bottom:var(--hud-peek-bottom);
  width:min(660px,calc(100vw - 2 * var(--hud-gutter)));
  display:flex;flex-direction:column;gap:4px;
  padding:8px 10px;
  border:var(--gui-stroke) solid var(--gui-border);
  border-radius:var(--gui-radius-lg);
  background:var(--gui-panel-primary);
  backdrop-filter:blur(var(--gui-blur));
  -webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift),var(--gui-glow-low);
  opacity:0;pointer-events:none;
  transform:translate(-50%,14px);
  transition:transform var(--gui-motion-panel) var(--gui-ease),opacity var(--gui-motion-fast) ease,bottom var(--gui-motion-panel) var(--gui-ease);
}
.objectBar.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.peekBody{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px}
.objectBarOrb{
  width:38px;height:38px;flex:0 0 38px;
  border:1px solid rgba(210,235,255,.5);border-radius:50%;
  background:#263647;
  box-shadow:0 0 18px color-mix(in srgb,currentColor 45%,transparent),inset 0 0 10px rgba(0,0,0,.45);
}
.objectBarText{min-width:0;display:flex;flex-direction:column;gap:2px}
.objectBarText b{
  font:var(--gui-font-title);letter-spacing:.01em;color:var(--gui-text-primary);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.objectBarText .objectBarType{
  color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label);
  text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.objectBarText > span:not(.objectBarType){
  color:var(--gui-text-secondary);font:var(--gui-font-micro);font-size:.6875rem;letter-spacing:.04em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.objectBarSubline{display:flex;align-items:center;gap:7px;min-width:0;margin-top:2px}
#objectBarRelationship{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.035em}
.objectBarStatus{
  flex:0 0 auto;max-width:190px;padding:2px 7px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-secondary);background:rgba(9,18,29,.78);
  font:var(--gui-font-micro);font-size:.625rem;letter-spacing:.06em
}
.objectBarStatus.good{border-color:rgba(126,226,180,.34);color:var(--gui-success);background:rgba(19,51,39,.48)}
.objectBarStatus.warning{border-color:rgba(255,204,128,.32);color:#ffd18a;background:rgba(54,37,18,.5)}
.objectBarStatus.danger{border-color:rgba(255,130,124,.38);color:var(--gui-danger);background:rgba(52,21,27,.58)}
.peekActions{display:flex;align-items:center;gap:6px}
.peekActions button{flex:0 0 auto;min-height:38px;padding:0 10px}
#objectZoomBtn{border-color:var(--gui-border)}
#objectFollowBtn{border-color:var(--gui-border)}
#objectFollowBtn.following{border-color:rgba(126,226,180,.45);background:rgba(21,60,45,.62);color:var(--gui-success);box-shadow:inset 0 0 0 1px rgba(126,226,180,.1)}
#objectInfo{border-color:var(--gui-border-strong);background:rgba(35,112,144,.3);color:var(--gui-text-primary)}
#objectClose{width:40px;min-width:40px;padding:0;color:var(--gui-text-secondary)}

/* Breadcrumb trail lives inside the peek so the two never fight for the band. */
.navTrail{display:none;align-items:center;gap:6px;min-width:0}
.navTrail.show{display:flex}
.navTrail button{flex:0 0 auto;min-height:34px;padding:0 10px;background:transparent;border-color:transparent;color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.06em}
.navTrail button:hover{background:var(--gui-hover);color:var(--gui-text-primary)}
.navCrumbs{flex:1;display:flex;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none}
.navCrumbs::-webkit-scrollbar{display:none}
.navCrumbs button{display:block;max-width:190px;padding:0 10px;line-height:32px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.navCrumbs .current{border-color:var(--gui-border);background:var(--gui-selected);color:var(--gui-cyan-bright)}

/* ============================================================================
   10 · SIDE DRAWER · MORE
   Secondary destinations only. Never duplicates a primary destination.
   ========================================================================== */
.gui-drawer-scrim{
  position:fixed;z-index:var(--gui-z-scrim);inset:0;
  background:rgba(0,4,8,.72);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  opacity:0;pointer-events:none;
  transition:opacity var(--gui-motion-panel) ease;
}
.gui-drawer-scrim.show{opacity:1;pointer-events:auto}
.gui-side-drawer{
  position:fixed;z-index:var(--gui-z-side);
  top:0;bottom:0;left:0;
  width:min(390px,92vw);
  display:flex;flex-direction:column;
  border-right:1px solid var(--gui-border-strong);
  background:rgba(3,11,19,.98);
  box-shadow:24px 0 80px rgba(0,0,0,.62),var(--gui-glow-medium);
  transform:translateX(-105%);
  opacity:.7;pointer-events:none;
  transition:transform var(--gui-motion-panel) var(--gui-ease),opacity var(--gui-motion-fast) ease;
  padding:calc(14px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left));
}
.gui-side-drawer.open{transform:translateX(0);opacity:1;pointer-events:auto}
.gui-side-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 2px 14px;border-bottom:1px solid var(--gui-divider)}
.gui-side-drawer-head div{display:flex;flex-direction:column;gap:4px}
.gui-side-drawer-head span{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-side-drawer-head b{font:var(--gui-font-display);letter-spacing:.04em}
.gui-side-drawer-head button{flex:0 0 auto;width:var(--gui-touch);min-width:var(--gui-touch);padding:0}
.gui-side-drawer-head button .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.gui-side-drawer-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:12px 2px 16px;scrollbar-width:thin;scrollbar-color:var(--gui-cyan-ambient) transparent}
.gui-menu-section{display:grid;gap:5px;padding:10px 0 16px;border-bottom:1px solid var(--gui-divider)}
.gui-menu-section:last-of-type{border-bottom:0}
.gui-menu-section h2,.gui-menu-status h2{margin:0 0 6px;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-menu-section button{width:100%;justify-content:flex-start;padding:0 14px;text-align:left;background:transparent;border-color:transparent;color:var(--gui-text-primary);font:var(--gui-font-body);font-weight:600}
.gui-menu-section button:hover,.gui-menu-section button:focus-visible{background:var(--gui-hover);border-color:var(--gui-border)}
.gui-menu-section button .gui-button-content{justify-content:flex-start;gap:12px}
.gui-menu-section button .gui-icon{color:var(--gui-cyan-ambient)}
.gui-side-drawer-account{display:grid;gap:7px;padding-top:13px;border-top:1px solid var(--gui-divider)}
.gui-side-drawer-account button{width:100%}
#accountOpen{border-color:var(--gui-border-strong);background:rgba(35,112,144,.24)}

/* Help / How it works */
.gui-help-overlay{
  position:fixed;z-index:var(--gui-z-modal);inset:0;display:flex;align-items:center;justify-content:center;
  padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));
  background:rgba(0,4,8,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;pointer-events:none;transition:opacity var(--gui-motion-fast) ease
}
.gui-help-overlay.show{opacity:1;pointer-events:auto}
.gui-help-panel{
  width:min(900px,100%);max-height:min(86dvh,760px);display:flex;flex-direction:column;overflow:hidden;
  border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-lg);background:var(--gui-panel-solid);
  box-shadow:var(--gui-lift-strong),var(--gui-glow-medium);padding:22px
}
.gui-help-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex:0 0 auto}
.gui-help-head span{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-help-head h1{margin:6px 0 0;font:var(--gui-font-display);letter-spacing:.03em}
.gui-help-head button{flex:0 0 auto;width:var(--gui-touch);min-width:var(--gui-touch);padding:0}
.gui-help-head button .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.gui-help-intro{flex:0 0 auto;max-width:700px;margin:12px 0 16px;color:var(--gui-text-secondary);font:var(--gui-font-body)}
.gui-help-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:14px;min-height:0;overflow:hidden}
.gui-help-topics{display:flex;flex-direction:column;gap:5px;padding-right:12px;border-right:1px solid var(--gui-divider);overflow-y:auto}
.gui-help-topics button{justify-content:flex-start;min-height:39px;padding:0 11px;border-color:transparent;background:transparent;color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.07em;text-align:left}
.gui-help-topics button.active{border-color:var(--gui-border);background:var(--gui-selected);color:var(--gui-cyan-bright)}
.gui-help-content{min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:1px 4px 4px 0;scrollbar-width:thin;scrollbar-color:var(--gui-cyan-ambient) transparent}
.gui-help-topic{animation:gui-help-in var(--gui-motion-fast) ease}
.gui-help-topic[hidden]{display:none!important}
@keyframes gui-help-in{from{opacity:.35;transform:translateY(3px)}to{opacity:1;transform:none}}
.gui-help-topic-head{display:flex;align-items:center;gap:12px;padding:4px 0 13px;border-bottom:1px solid var(--gui-divider)}
.gui-help-step-icon{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border:1px solid var(--gui-border-strong);border-radius:50%;color:var(--gui-cyan-emissive);background:var(--gui-selected)}
.gui-help-step-icon .gui-icon{width:1.2rem;height:1.2rem}
.gui-help-topic-head b{display:block;color:var(--gui-text-primary);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-help-topic-head p{margin:5px 0 0;color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.5}
.gui-help-flow,.gui-help-facts,.gui-help-command-grid,.gui-help-event-levels{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.gui-help-flow article,.gui-help-facts article,.gui-help-command-grid article,.gui-help-event-levels article{min-width:0;padding:11px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:var(--gui-panel-secondary)}
.gui-help-flow i{width:22px;height:22px;display:grid;place-items:center;margin-bottom:8px;border:1px solid var(--gui-border-strong);border-radius:50%;color:var(--gui-cyan-bright);font:var(--gui-font-micro);font-style:normal}
.gui-help-flow b,.gui-help-facts b,.gui-help-command-grid b,.gui-help-event-levels b{display:block;color:var(--gui-text-primary);font:var(--gui-font-label);letter-spacing:.055em}
.gui-help-flow p,.gui-help-facts p,.gui-help-command-grid p,.gui-help-event-levels p{margin:5px 0 0;color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.45}
.gui-help-facts article > span{display:block;margin-bottom:5px;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.08em}
.gui-help-note{margin:12px 0 0;padding:10px 11px;border-left:2px solid var(--gui-cyan-interactive);background:rgba(11,31,45,.58);color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.48}
.gui-help-event-levels article{position:relative;padding-left:28px}
.gui-help-event-levels article > i{position:absolute;left:11px;top:14px;width:7px;height:7px;border-radius:50%;background:var(--gui-text-disabled)}
.gui-help-event-levels i.noteworthy{background:var(--gui-cyan-bright);box-shadow:0 0 7px rgba(111,216,255,.3)}
.gui-help-event-levels i.warning{background:var(--gui-warning);box-shadow:0 0 7px rgba(233,188,106,.3)}
.gui-help-event-levels i.critical{background:var(--gui-danger);box-shadow:0 0 7px rgba(255,130,124,.34)}
.gui-help-control-list{display:grid;gap:0;margin-top:10px}
.gui-help-control-list > div{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;gap:12px;padding:9px 2px;border-top:1px solid var(--gui-divider)}
.gui-help-control-list > div:first-child{border-top:0}
.gui-help-control-list kbd{justify-self:start;padding:4px 7px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);background:rgba(4,16,26,.82);color:var(--gui-cyan-bright);font:var(--gui-font-micro);letter-spacing:.05em}
.gui-help-control-list span{color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-help-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px;padding-top:12px;border-top:1px solid var(--gui-divider)}
.gui-help-actions button{flex:1 1 180px;min-height:42px}

/* First-visit coachmarks */
.gui-tour-layer{position:fixed;z-index:calc(var(--gui-z-modal) + 2);inset:0;pointer-events:none;display:none}
.gui-tour-layer.show{display:block}
.gui-tour-highlight{position:fixed;display:none;border:1px solid var(--gui-cyan-interactive);border-radius:var(--gui-radius-md);box-shadow:0 0 0 5px rgba(80,190,225,.08),0 0 26px rgba(80,190,225,.24);transition:left .18s ease,top .18s ease,width .18s ease,height .18s ease}
.gui-tour-highlight.show{display:block}
.gui-tour-card{position:fixed;width:min(360px,calc(100vw - 28px));pointer-events:auto;padding:14px;border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-md);background:rgba(4,15,25,.97);box-shadow:var(--gui-lift-strong),var(--gui-glow-medium);transition:left .18s ease,top .18s ease}
.gui-tour-progress{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gui-tour-progress span{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.09em}
.gui-tour-progress button{min-height:30px;padding:0 7px;border-color:transparent;background:transparent;color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.gui-tour-card h2{margin:8px 0 5px;color:var(--gui-text-primary);font:var(--gui-font-title);font-size:1rem;letter-spacing:.045em}
.gui-tour-card p{margin:0;color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.5}
.gui-tour-actions{display:flex;justify-content:flex-end;margin-top:12px}
.gui-tour-actions button{min-width:112px;min-height:40px}

/* Zero-player-object state */
.emptyGalaxyPrompt{position:fixed;z-index:var(--gui-z-hud);left:50%;bottom:calc(var(--hud-nav-h) + var(--hud-bottom) + 22px);transform:translate(-50%,12px);width:min(520px,calc(100vw - 32px));padding:14px 16px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:rgba(4,15,25,.9);backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));box-shadow:var(--gui-lift-medium),var(--gui-glow-low);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
.emptyGalaxyPrompt.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.emptyGalaxyPrompt > span{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.09em}
.emptyGalaxyPrompt h2{margin:5px 0 4px;color:var(--gui-text-primary);font:var(--gui-font-title);font-size:1rem}
.emptyGalaxyPrompt p{margin:0;color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.45}
.emptyGalaxyPrompt > div{display:flex;gap:7px;margin-top:11px}
.emptyGalaxyPrompt button{flex:1 1 0;min-height:40px}
body.placing .emptyGalaxyPrompt,body.gui-overlay-open .emptyGalaxyPrompt,body.tour-open .emptyGalaxyPrompt{display:none!important}

/* ============================================================================
   11 · CORE OVERLAYS  (profile / stats)
   ========================================================================== */
.gui-core-overlay{
  position:fixed;z-index:var(--gui-z-modal);inset:0;
  display:flex;align-items:center;justify-content:center;
  padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));
  background:rgba(0,4,8,.78);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;pointer-events:none;transition:opacity var(--gui-motion-fast) ease;
}
.gui-core-overlay.show{opacity:1;pointer-events:auto}
.gui-core-panel{
  width:min(780px,100%);max-height:100%;display:flex;flex-direction:column;
  border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-lg);
  background:var(--gui-panel-solid);
  box-shadow:var(--gui-lift-strong),var(--gui-glow-medium);
  padding:20px;
}
.gui-search-head,.gui-core-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--gui-divider)}
.gui-search-head > div,.gui-core-head > div{display:flex;flex-direction:column;gap:4px;min-width:0}
.gui-search-head span,.gui-core-head span{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-search-head b,.gui-core-head h1{margin:0;color:var(--gui-text-primary);font:var(--gui-font-title);letter-spacing:.04em}
.gui-search-head button,.gui-core-head button{flex:0 0 auto;width:var(--gui-touch);min-width:var(--gui-touch);padding:0}
.gui-search-head button .gui-button-label,.gui-core-head button .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.gui-profile-content,.gui-stats-content{min-height:200px;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding-top:16px}

/* ============================================================================
   12 · MODALS
   ========================================================================== */
.buyModal{
  position:fixed;z-index:var(--gui-z-modal);inset:0;
  display:none;align-items:center;justify-content:center;
  padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));
  background:rgba(0,4,8,.78);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  touch-action:manipulation;
}
.buyModal.show{display:flex}
.buyPanel{
  width:min(640px,100%);max-height:100%;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;
  border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-lg);
  background:var(--gui-panel-solid);
  box-shadow:var(--gui-lift-strong),var(--gui-glow-medium);
  padding:20px;
}
.buyTitle{color:var(--gui-text-primary);font:var(--gui-font-title);letter-spacing:.04em}
.buySub{margin:6px 0 14px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.purchaseStep{margin-bottom:6px;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide)}
.buyActions{display:flex;gap:9px;margin-top:16px}
.buyActions button{flex:1;min-height:46px}
.formGrid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.full{grid-column:1/-1}
.field input,.field select,.field textarea{width:100%;min-width:0;min-height:46px;padding:10px 12px}
.field input[type=color]{height:46px;padding:4px}
.field textarea{min-height:96px;resize:vertical}

/* ============================================================================
   13 · SEARCH
   A command surface for travelling through the universe.
   ========================================================================== */
.top .search{
  position:absolute;
  top:var(--hud-below-header);
  left:50%;transform:translateX(-50%);
  width:min(620px,calc(100vw - 2 * var(--hud-gutter)));
  max-height:min(600px,calc(100dvh - var(--hud-header-h) - 120px));
  display:block;overflow:hidden;
  margin:0;padding:14px;
  border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-lg);
  background:rgba(4,13,22,.96);
  backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift-strong),var(--gui-glow-medium);
  animation:gui-drop-in var(--gui-motion-fast) var(--gui-ease);
}
@keyframes gui-drop-in{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}
.top .search.collapsed{display:none}
.gui-search-input{display:flex;gap:9px;margin-top:12px}
.gui-search-input input{flex:1;min-width:0;min-height:48px;padding:0 14px;font:var(--gui-font-body)}
.gui-search-input button{flex:0 0 var(--gui-touch);width:var(--gui-touch);min-width:var(--gui-touch);padding:0}
.gui-search-input button .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.gui-search-status{min-height:26px;padding:11px 2px 6px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-search-status.loading{color:var(--gui-cyan-bright)}
.gui-search-status.error{color:var(--gui-danger)}
.gui-search-results{display:grid;gap:7px;max-height:min(360px,calc(100dvh - 280px));overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding-right:2px}
.gui-object-result{
  width:100%;min-height:64px;
  display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;
  padding:9px 12px;text-align:left;
  background:rgba(4,13,22,.86);
}
.gui-object-result .resultOrb{width:40px;height:40px;display:block;border:1px solid rgba(210,235,255,.46);border-radius:50%;box-shadow:0 0 16px color-mix(in srgb,currentColor 35%,transparent);overflow:hidden}
.gui-object-result .resultOrb img{width:100%;height:100%;display:block;object-fit:cover;image-rendering:pixelated}
.gui-object-result .resultCopy{min-width:0}
.gui-object-result .resultCopy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--gui-font-heading)}
.gui-object-result .resultCopy span{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-object-result .resultMeta{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);text-align:right;line-height:1.35}

/* ============================================================================
   14 · EVENTS  (the galaxy's news feed)
   ========================================================================== */
#galaxyEventsModal{align-items:stretch;justify-content:flex-end;padding:14px;background:linear-gradient(90deg,rgba(0,0,0,.1),rgba(0,0,0,.62))}
#galaxyEventsModal .galaxyEventsPanel{
  width:min(500px,100%);max-height:none;height:100%;
  display:flex;flex-direction:column;margin:0;padding:18px;
  border-color:var(--gui-border-strong);
  background:rgba(3,13,22,.98);
  box-shadow:-24px 0 80px rgba(0,0,0,.6),var(--gui-glow-low);
}
.activityPanelHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.activityPanelHead > div:first-child > span{display:block;margin-bottom:4px;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.activityPanelHeadActions{display:flex;align-items:center;gap:7px}
.activityPanelHeadActions > i{display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid rgba(126,226,180,.34);border-radius:var(--gui-radius-pill);color:var(--gui-success);font:var(--gui-font-micro);font-style:normal;letter-spacing:var(--gui-track-label)}
.activityPanelHeadActions > i b{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 9px currentColor}
.activityPanelHeadActions > i.offline{border-color:rgba(233,188,106,.36);color:var(--gui-warning)}
#galaxyEventsClose{min-height:34px;padding:0 10px}
#galaxyEventsModal .buySub{margin:8px 0 0}
.eventSummary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:13px}
.eventSummary > div{min-width:0;padding:8px 9px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(5,18,30,.62)}
.eventSummary span{display:block;color:var(--gui-text-disabled);font:var(--gui-font-micro);font-size:.59rem;letter-spacing:.07em}
.eventSummary b{display:block;margin-top:3px;color:var(--gui-text-primary);font:var(--gui-font-stat);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eventFilters{display:flex;gap:6px;overflow-x:auto;margin:12px -2px 0;padding:0 2px 10px;border-bottom:1px solid var(--gui-divider);scrollbar-width:none}
.eventFilters::-webkit-scrollbar{display:none}
.eventFilters button{flex:0 0 auto;min-height:34px;padding:0 11px;border-radius:var(--gui-radius-pill);border-color:var(--gui-divider);background:rgba(5,17,28,.68);font:var(--gui-font-micro);letter-spacing:.065em}
.eventFilters button.active{border-color:var(--gui-cyan-interactive);background:var(--gui-selected);color:var(--gui-cyan-bright)}
.galaxyEventList{flex:1;min-height:0;max-height:none;margin:6px 0 0;padding-right:5px;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-gutter:stable;scrollbar-color:var(--gui-cyan-ambient) transparent}
.galaxyEventRow{
  width:100%;min-height:82px;position:relative;
  display:grid;grid-template-columns:4px minmax(0,1fr) auto;align-items:stretch;gap:11px;
  margin:0;padding:12px 8px 12px 5px;text-align:left;
  border:0;border-top:1px solid var(--gui-divider);border-radius:0;
  background:transparent;color:var(--gui-text-primary);
}
.galaxyEventRow:first-child{border-top:0}
button.galaxyEventRow{cursor:pointer}
button.galaxyEventRow:hover,button.galaxyEventRow:focus-visible{background:rgba(45,128,163,.12);outline:0}
.galaxyEventSeverityRail{width:4px;display:flex;align-items:stretch;padding:3px 0}
.galaxyEventSeverityRail i{width:2px;display:block;border-radius:var(--gui-radius-pill);background:#617a91}
.severity-noteworthy .galaxyEventSeverityRail i{background:var(--gui-cyan-interactive);box-shadow:0 0 8px rgba(105,202,242,.24)}
.severity-warning .galaxyEventSeverityRail i{background:var(--gui-warning);box-shadow:0 0 8px rgba(233,188,106,.24)}
.severity-critical .galaxyEventSeverityRail i{background:var(--gui-danger);box-shadow:0 0 9px rgba(255,130,124,.3)}
.galaxyEventCopy{min-width:0;align-self:center}
.galaxyEventMeta{display:flex;align-items:center;gap:7px;min-width:0;margin-bottom:5px}
.galaxyEventMeta > span:last-child{color:var(--gui-text-disabled);font:var(--gui-font-micro);letter-spacing:.055em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eventSeverityBadge{flex:0 0 auto;display:inline-flex!important;align-items:center;min-height:19px;margin:0!important;padding:0 6px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);color:var(--gui-text-secondary)!important;background:rgba(7,18,29,.72);font:var(--gui-font-micro)!important;font-size:.56rem!important;letter-spacing:.065em!important}
.eventSeverityBadge.noteworthy{border-color:rgba(105,202,242,.28);color:var(--gui-cyan-bright)!important;background:rgba(13,40,54,.48)}
.eventSeverityBadge.warning{border-color:rgba(233,188,106,.3);color:var(--gui-warning)!important;background:rgba(49,36,18,.46)}
.eventSeverityBadge.critical{border-color:rgba(255,130,124,.34);color:#ffb1b9!important;background:rgba(50,20,25,.52)}
.galaxyEventCopy > b{display:block;font:var(--gui-font-body);font-weight:600;color:var(--gui-text-primary);line-height:1.4}
.galaxyEventParticipants{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.galaxyEventParticipants span{display:inline-flex!important;width:auto;margin:0!important;padding:2px 6px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);background:rgba(5,17,28,.7);color:var(--gui-text-secondary)!important;font:var(--gui-font-micro)!important;font-size:.58rem!important;letter-spacing:.055em!important}
.galaxyEventJump{align-self:center;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.055em;white-space:nowrap}
.severity-critical .galaxyEventJump{color:#ffb2ba}
.severity-warning .galaxyEventJump{color:var(--gui-warning)}
.galaxyEventEmpty{margin:auto;padding:34px 10px;color:var(--gui-text-secondary);font:var(--gui-font-body);text-align:center}

/* Escalation above the ticker for genuinely major events only. */
.eventBanner{
  position:fixed;z-index:var(--gui-z-banner);
  left:50%;top:var(--hud-below-header);
  width:min(560px,calc(100vw - 2 * var(--hud-gutter)));
  transform:translate(-50%,-10px);opacity:0;pointer-events:none;
  padding:11px 14px 9px;
  border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);
  background:rgba(4,12,20,.92);
  backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift);
  transition:opacity var(--gui-motion-fast) ease,transform var(--gui-motion-fast) ease;
}
.eventBanner.show{opacity:1;transform:translate(-50%,0)}
/* Ambient escalation yields to anything the player deliberately opened. */
body.search-open .eventBanner,body.gui-overlay-open .eventBanner{opacity:0!important;pointer-events:none}
.eventBannerText{display:flex;align-items:baseline;gap:10px;min-width:0}
.eventBannerText b{flex:0 0 auto;font:var(--gui-font-label);letter-spacing:var(--gui-track-label);color:var(--gui-cyan-bright)}
.eventBannerText span{color:var(--gui-text-secondary);font:var(--gui-font-caption);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eventProgress{height:2px;margin-top:8px;border-radius:var(--gui-radius-pill);background:rgba(21,27,41,.9);overflow:hidden}
.eventProgress i{display:block;height:100%;width:0;background:var(--gui-cyan-interactive)}
.eventBanner.capture{border-color:rgba(119,216,255,.42)}
.eventBanner.capture b,.eventBanner.capture .eventProgress i{color:var(--gui-cyan-bright);background-color:var(--gui-cyan-bright)}
.eventBanner.danger{border-color:rgba(233,188,106,.44)}
.eventBanner.danger b{color:var(--gui-warning)}.eventBanner.danger .eventProgress i{background:var(--gui-warning)}
.eventBanner.blackhole,.eventBanner.playerblackhole{border-color:rgba(185,162,255,.44)}
.eventBanner.blackhole b,.eventBanner.playerblackhole b{color:var(--gui-cosmic)}
.eventBanner.blackhole .eventProgress i,.eventBanner.playerblackhole .eventProgress i{background:var(--gui-cosmic)}
.eventBanner.discovery{border-color:rgba(126,226,180,.42)}
.eventBanner.discovery b{color:#9fffe4}.eventBanner.discovery .eventProgress i{background:#9fffe4}
.eventBanner.birth{border-color:rgba(126,226,180,.5);box-shadow:var(--gui-lift),0 0 30px rgba(126,226,180,.12)}
.eventBanner.birth b{color:var(--gui-success)}.eventBanner.birth .eventProgress i{background:var(--gui-success)}

/* ============================================================================
   15 · CREATE / MASS ECONOMY
   A stepped flow, not one enormous form.
   ========================================================================== */
.massModeTabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:12px 0}
.massModeTabs button{min-height:46px;border-color:var(--gui-divider);background:rgba(5,14,23,.7);color:var(--gui-text-secondary);font:var(--gui-font-label);letter-spacing:.08em}
.massModeTabs button[aria-selected="true"]{border-color:var(--gui-cyan-interactive);background:var(--gui-selected);color:var(--gui-text-primary);box-shadow:inset 0 -2px 0 var(--gui-cyan-interactive)}
.massModePanel{display:none}
.massModePanel.active{display:block}

.massSelectedTarget{display:grid;width:100%;grid-template-columns:1fr auto;gap:3px 12px;align-items:center;margin-top:12px;padding:12px;text-align:left;border-color:rgba(126,226,180,.38);background:rgba(13,49,36,.34)}
.massSelectedTarget span,.massSelectedTarget small{grid-column:1;color:var(--gui-text-secondary);font:var(--gui-font-micro)}.massSelectedTarget b{grid-column:1;color:var(--gui-text-primary);font:var(--gui-font-heading)}.massSelectedTarget:after{content:"→";grid-column:2;grid-row:1/4;color:var(--gui-success);font-size:1.2rem}
.massTargetSearch{margin-top:12px}.massTargetSearch>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.massTargetSearch input{min-height:48px}.massTargetSearch button{min-width:92px}
.massTargetSearchStatus{margin:8px 0;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.massTargetResults{display:grid;gap:6px;max-height:310px;overflow-y:auto;overscroll-behavior:contain}
.massTargetResult{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:58px;padding:8px 10px;text-align:left}
.massTargetResult>i{width:30px;height:30px;border:1px solid rgba(255,255,255,.45);border-radius:50%}.massTargetResult>span{min-width:0}.massTargetResult b,.massTargetResult small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.massTargetResult b{color:var(--gui-text-primary);font:var(--gui-font-heading)}.massTargetResult small{margin-top:3px;color:var(--gui-text-secondary);font:var(--gui-font-micro)}.massTargetResult strong{color:var(--gui-cyan-bright);font:var(--gui-font-stat);white-space:nowrap}

.massAccountCard{
  display:grid;grid-template-columns:1fr auto;gap:4px 14px;
  margin:12px 0;padding:14px;
  border:1px solid rgba(71,139,162,.34);border-radius:var(--gui-radius-md);
  background:linear-gradient(135deg,rgba(18,50,64,.4),rgba(4,14,23,.7));
}
.massAccountCard > div span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.massAccountCard > div b{display:block;margin-top:6px;font:var(--gui-font-display);font-size:1.5rem;color:var(--gui-cyan-bright);font-variant-numeric:tabular-nums}
.massAccountCard > i{align-self:start;padding:5px 9px;border:1px solid rgba(89,165,181,.32);border-radius:var(--gui-radius-pill);color:var(--gui-cyan-bright);font:var(--gui-font-micro);font-style:normal;letter-spacing:.09em}
.massAccountCard p{grid-column:1/-1;margin:8px 0 0;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.massAccountCard[data-state="unsupported"]{border-color:rgba(141,135,105,.32);background:linear-gradient(135deg,rgba(47,43,27,.4),rgba(4,14,23,.7))}
.massAccountCard[data-state="unsupported"] > div b,.massAccountCard[data-state="unsupported"] > i{color:var(--gui-warning)}
.massAccountCard[data-state="error"] > div b,.massAccountCard[data-state="error"] > i{color:var(--gui-danger)}
.massAccountCard.compact{margin:10px 0;padding:11px}
.massAccountCard.compact > div b{font-size:1.125rem}
.massAccountCard.compact p{display:none}

/* Stepper */
.createSteps{display:flex;align-items:center;gap:8px;margin:4px 0 16px;padding:0;list-style:none}
.createStepDot{
  flex:1;min-width:0;display:flex;align-items:center;gap:8px;
  padding-top:9px;border-top:2px solid var(--gui-divider);
  color:var(--gui-text-disabled);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label);
  transition:color var(--gui-motion-fast) ease,border-color var(--gui-motion-fast) ease;
}
.createStepDot i{font-style:normal;opacity:.7}
.createStepDot[data-state="done"]{border-top-color:rgba(126,226,180,.5);color:var(--gui-success)}
.createStepDot[data-state="current"]{border-top-color:var(--gui-cyan-interactive);color:var(--gui-cyan-bright)}
.createStep{display:none}
.createStep.active{display:block;animation:gui-step-in var(--gui-motion-fast) var(--gui-ease)}
@keyframes gui-step-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.createStepHint{margin:10px 0 0;color:var(--gui-text-secondary);font:var(--gui-font-caption)}

.createMassComposer{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.72fr);gap:12px;align-items:stretch}
.createMassControls>label,.massTargetSearch>label{display:block;margin-bottom:6px;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.massStepper{display:grid;grid-template-columns:50px minmax(0,1fr) 50px;gap:6px;align-items:stretch}
.massStepper button{min-height:52px;padding:0;font-size:1.25rem}
.massStepper input{min-width:0;min-height:52px;text-align:center;font:var(--gui-font-display);font-size:1.18rem;font-variant-numeric:tabular-nums}
.massQuickPicks{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin-top:7px}
.massQuickPicks button{min-width:0;min-height:34px;padding:0 2px;font:var(--gui-font-micro)}
.massQuickPicks button.active{border-color:var(--gui-cyan-interactive);background:var(--gui-selected);color:var(--gui-cyan-bright)}
.createMassControls .economyPreview{margin-top:8px}
.massScaleCard{display:flex;flex-direction:column;min-width:0;padding:10px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:rgba(4,13,22,.74)}
.massScaleViewport{position:relative;flex:1 1 auto;min-height:178px;overflow:hidden;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:radial-gradient(circle at 50% 50%,rgba(25,53,72,.24),rgba(2,7,12,.1) 56%,rgba(1,4,8,.65));display:grid;place-items:center}
.massScaleBody,.massScaleReference{display:block;position:absolute;border-radius:50%;border:1px solid rgba(235,243,255,.6)}
.massScaleBody{box-shadow:0 0 24px color-mix(in srgb,currentColor 30%,transparent);transition:width 180ms ease,height 180ms ease,background 180ms ease}
.massScaleReference{left:10px;bottom:10px;background:#d9eaff;box-shadow:0 0 8px rgba(190,224,255,.5)}
.massScaleViewport:after{content:"1 MASS";position:absolute;left:10px;bottom:18px;transform:translateY(-100%);color:var(--gui-text-disabled);font:var(--gui-font-micro);font-size:.55rem;letter-spacing:.04em}
.massScaleReadout{padding-top:8px}.massScaleReadout span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}.massScaleReadout b{display:block;margin-top:3px;color:var(--gui-text-primary);font:var(--gui-font-heading)}.massScaleReadout small{display:block;margin-top:3px;color:var(--gui-text-disabled);font:var(--gui-font-micro);line-height:1.35}

.economyPreview{min-height:46px;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:8px 12px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);background:rgba(2,9,16,.92)}
.economyPreview b{color:var(--gui-text-primary);font:var(--gui-font-heading);letter-spacing:.03em}
.economyPreview span{color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.economyTrack,.massTrack{height:4px;margin-top:4px;border-radius:var(--gui-radius-pill);background:rgba(23,29,43,.9);overflow:hidden}
.economyTrack i,.massTrack i{display:block;height:100%;width:0;background:var(--gui-cyan-interactive);transition:width var(--gui-motion-fast) ease}
.massTrack i{background:var(--gui-success)}

.lineageField[hidden]{display:none}
.lineageChoices{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.lineageChoice{min-height:78px;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;padding:12px;text-align:left;border-color:var(--gui-border);background:rgba(6,16,26,.8)}
.lineageChoice b{display:block;font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.lineageChoice span{display:block;color:var(--gui-text-secondary);font:var(--gui-font-caption);font-size:.6875rem;white-space:normal}
.lineageChoice.active{border-color:var(--gui-cyan-interactive);background:var(--gui-selected);box-shadow:inset 0 0 0 1px rgba(120,216,255,.2)}
.lineageChoice[data-lineage=planetary].active{border-color:rgba(126,226,180,.6)}
.lineageHint{margin-top:6px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.lineageDecision{margin:12px 0;padding:14px;border:1px solid rgba(54,83,107,.8);border-radius:var(--gui-radius-md);background:rgba(8,17,27,.94)}
.lineageDecision strong{display:block;margin-bottom:6px;color:var(--gui-cyan-bright);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.lineageDecision p{margin:0 0 11px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}

.massPurchaseAmount{display:grid;grid-template-columns:1fr auto;gap:6px 14px;align-items:end;margin-top:12px}
.massPurchaseAmount label{grid-column:1/-1;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.massPurchaseAmount input{min-height:52px;font:var(--gui-font-display);font-size:1.25rem;padding:0 14px}
.massPurchaseAmount > div{min-width:136px;padding:10px 12px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);background:rgba(5,14,23,.76)}
.massPurchaseAmount > div span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.massPurchaseAmount > div b{display:block;margin-top:4px;color:var(--gui-text-primary);font:var(--gui-font-title);font-variant-numeric:tabular-nums}
.massClassReference{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:12px}
.massClassReference > div{padding:9px 10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(4,12,20,.62)}
.massClassReference span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro)}
.massClassReference b{display:block;margin-top:4px;color:var(--gui-text-primary);font:var(--gui-font-micro);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.massLedgerGate,.massDeficit{margin-top:12px;padding:11px 12px;border:1px solid rgba(171,137,70,.36);border-radius:var(--gui-radius-sm);background:rgba(66,45,15,.24);color:var(--gui-warning);font:var(--gui-font-caption)}
.massDeficit:empty{display:none}
.massDeficit[data-state="good"]{border-color:rgba(74,156,118,.34);background:rgba(13,55,39,.26);color:var(--gui-success)}

.purchasePreview{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:14px;padding:14px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:rgba(10,15,26,.66)}
.purchasePreview .previewHero{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--gui-divider)}
.purchaseSwatch{width:22px;height:22px;flex:0 0 22px;border-radius:50%;border:1px solid rgba(255,255,255,.5);box-shadow:0 0 14px currentColor}
.purchasePreview span,.reviewStat span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.purchasePreview b,.reviewStat b{display:block;margin-top:4px;color:var(--gui-text-primary);font:var(--gui-font-stat);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.purchasePreview .previewHero b{font:var(--gui-font-heading)}

.massPreviewHero small{display:block;margin-top:4px;color:var(--gui-text-disabled);font:var(--gui-font-micro)}
.summaryMassVisual{position:relative;display:grid;place-items:center;width:126px;height:126px;flex:0 0 126px;overflow:hidden;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(2,8,14,.72)}
.summaryMassBody,.summaryMassRef{position:absolute;display:block;border-radius:50%;border:1px solid rgba(255,255,255,.55)}.summaryMassBody{box-shadow:0 0 20px color-mix(in srgb,currentColor 30%,transparent)}.summaryMassRef{left:7px;bottom:7px;background:#d9eaff}

/* Contribution */
.contribTargetCard{margin:12px 0;padding:13px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:linear-gradient(145deg,rgba(16,32,52,.5),rgba(7,11,20,.66))}
.contribTargetCard .ctTop{display:flex;align-items:center;gap:11px}
.contribTargetCard .ctOrb{width:32px;height:32px;flex:0 0 32px;border:1px solid rgba(255,255,255,.55);border-radius:50%}
.contribTargetCard .ctText{min-width:0}
.contribTargetCard .ctText b{display:block;color:var(--gui-text-primary);font:var(--gui-font-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contribTargetCard .ctText span{display:block;margin-top:3px;color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.contribTargetCard .ctTrack{height:5px;margin-top:10px;border-radius:var(--gui-radius-pill);background:rgba(19,26,40,.9);overflow:hidden}
.contribTargetCard .ctTrack i{display:block;height:100%;background:var(--gui-success)}
.contribPresets{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin-top:11px}
.contribPresets button{min-width:0;min-height:46px;padding:0 2px;font:var(--gui-font-micro)}
.contribPresets button.active{border-color:rgba(126,226,180,.55);background:rgba(25,62,42,.6);color:#c1ffd6}
.contribPreview{margin-top:12px;padding:13px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:rgba(8,11,19,.7);color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.contribPreview b{color:var(--gui-text-primary)}
.contribPreview .change,.contribPreview .critical{color:var(--gui-success);font-weight:700}
.contribPreview .projected{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-top:9px;padding-top:9px;border-top:1px solid var(--gui-divider)}
.contribPreview .projected span{color:var(--gui-cyan-ambient);font:var(--gui-font-micro)}
.contribPreview .projected b{display:block;margin-top:3px;font:var(--gui-font-stat)}

.massChangeVisual{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:center}
.massChangeSide{text-align:center;min-width:0}.massChangeSide>span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}.massChangeSide>b{display:block;margin-top:6px!important;font:var(--gui-font-heading)!important}.massChangeSide>small{display:block;margin-top:3px;color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.massChangeViewport{position:relative;display:grid;place-items:center;height:122px;margin-top:6px;overflow:hidden;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(2,8,14,.68)}.massChangeViewport i{display:block;border-radius:50%;border:1px solid rgba(255,255,255,.58);box-shadow:0 0 18px color-mix(in srgb,currentColor 30%,transparent);transition:width 180ms ease,height 180ms ease}
.massChangeSide.after .massChangeViewport{border-color:rgba(126,226,180,.32);background:rgba(7,28,20,.35)}
.massChangeArrow{display:flex;flex-direction:column;align-items:center;gap:1px;color:var(--gui-success);font:var(--gui-font-micro)}.massChangeArrow b{font:var(--gui-font-heading)!important;color:var(--gui-success)!important}.massChangeArrow i{font-style:normal;font-size:1.35rem}.massChangeScale{margin:8px 0 0;color:var(--gui-text-disabled);font:var(--gui-font-micro);text-align:center}.massChangeSummary{margin-top:9px;padding-top:9px;border-top:1px solid var(--gui-divider)}.massChangeSummary>b,.massChangeSummary>span{display:block}.massChangeSummary>span{margin-top:4px;color:var(--gui-text-secondary)}

/* Placement review */
.reviewPanel{max-width:560px}
.reviewSummary{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:14px;padding:14px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:rgba(6,12,22,.82)}
.reviewHero{grid-column:1/-1;padding:2px 0 11px;border-bottom:1px solid var(--gui-divider)}
.reviewHero b{font:var(--gui-font-display);color:var(--gui-text-primary)}
.reviewHero span{display:block;margin-top:4px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.reviewStat{min-width:0}
.reviewWarning{margin-top:12px;padding:11px 12px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.reviewWarning.good{border-color:rgba(126,226,180,.4);background:rgba(19,56,42,.22);color:var(--gui-success)}
.reviewWarning.warn{border-color:rgba(233,188,106,.42);background:rgba(70,48,15,.2);color:var(--gui-warning)}
.reviewWarning.bad{border-color:rgba(255,130,124,.44);background:rgba(75,19,30,.22);color:var(--gui-danger)}

/* ============================================================================
   16 · MY GALAXY
   ========================================================================== */
.gui-profile-identity{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.gui-profile-identity strong{display:block;font:var(--gui-font-display);letter-spacing:.02em}
.gui-profile-identity span{display:block;margin-top:6px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-profile-badge{flex:0 0 auto;padding:6px 10px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-pill);color:var(--gui-success);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.gui-profile-stats,.gui-galaxy-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:16px}
.gui-profile-stat,.gui-galaxy-stat{min-width:0;padding:13px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:var(--gui-panel-secondary)}
.gui-profile-stat span,.gui-galaxy-stat span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.gui-profile-stat b,.gui-galaxy-stat b{display:block;margin-top:7px;overflow:hidden;text-overflow:ellipsis;color:var(--gui-text-primary);font:var(--gui-font-display);font-size:1.25rem;font-family:var(--gui-font-tech);font-variant-numeric:tabular-nums}
.gui-profile-tabs{display:flex;gap:6px;overflow-x:auto;margin:18px 0 10px;padding-bottom:2px;scrollbar-width:none}
.gui-profile-tabs::-webkit-scrollbar{display:none}
.gui-profile-tabs button{flex:0 0 auto;min-height:40px;padding:0 14px;border-radius:var(--gui-radius-pill);border-color:var(--gui-divider);background:rgba(5,17,28,.68)}
.gui-profile-tabs button.active{border-color:var(--gui-cyan-interactive);background:var(--gui-selected);color:var(--gui-cyan-bright)}
.gui-profile-objects{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gui-profile-objects .gui-empty-state{grid-column:1/-1}
.gui-empty-state span{max-width:46ch;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-empty-state button{margin-top:10px;min-width:190px}
.gui-profile-signed-out{display:grid;place-items:center;min-height:320px;text-align:center}
.gui-profile-signed-out .gui-icon{width:2.75rem;height:2.75rem;color:var(--gui-cyan-emissive)}
.gui-profile-signed-out h2{margin:16px 0 8px;font:var(--gui-font-display)}
.gui-profile-signed-out p{max-width:460px;margin:0 0 18px;color:var(--gui-text-secondary);font:var(--gui-font-body)}
.gui-profile-signed-out button{min-width:200px}
.gui-stats-summary{margin:0;color:var(--gui-text-secondary);font:var(--gui-font-body)}
.gui-stats-foot{display:flex;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--gui-divider);color:var(--gui-text-secondary);font:var(--gui-font-micro)}
#galaxyStatsRefresh{width:100%;margin-top:14px}

/* ============================================================================
   17 · PLACEMENT  (the galaxy stays the surface)
   ========================================================================== */
body.placing #gl{filter:brightness(1.1) saturate(1.06);transition:filter var(--gui-motion-panel) var(--gui-ease)}
body.placing #overlay{filter:brightness(1.06)}
body.reviewing-placement #gl,body.reviewing-placement #overlay{filter:brightness(.88)}
body.reviewing-placement .placementHud{display:none!important}

.placementHud{position:fixed;z-index:var(--gui-z-placement);inset:0;display:none;pointer-events:none;padding:0}
body.placing .placementHud{display:block}
.placementModeBar{
  position:absolute;pointer-events:none;
  top:var(--hud-top);left:50%;transform:translateX(-50%);
  width:min(740px,calc(100vw - 2 * var(--hud-gutter)));
  min-height:50px;
  display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:14px;
  padding:9px 11px 9px 14px;
  border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-md);
  background:rgba(3,15,24,.88);
  backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-glow-medium),var(--gui-lift);
}
.placementModeBar > div:first-child span{display:block;color:var(--gui-cyan-emissive);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide)}
.placementModeBar > div:first-child b{display:block;margin-top:3px;color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.08em}
.placementModeObject{color:var(--gui-text-primary);font:var(--gui-font-stat);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.placementModeValidity{display:flex;align-items:center;justify-content:center;gap:7px;min-width:92px;padding:7px 11px;border:1px solid rgba(126,226,180,.42);border-radius:var(--gui-radius-pill);color:var(--gui-success);font:var(--gui-font-micro);letter-spacing:.09em}
.placementModeValidity i,.placementStatus i{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:currentColor;box-shadow:0 0 9px currentColor}
.placementModeValidity[data-state="warning"]{border-color:rgba(233,188,106,.46);color:var(--gui-warning)}
.placementModeValidity[data-state="danger"]{border-color:rgba(255,130,124,.48);color:var(--gui-danger)}

.placementCard{
  position:absolute;pointer-events:auto;
  top:calc(var(--hud-top) + 66px);left:var(--hud-left);
  width:min(330px,calc(100vw - 2 * var(--hud-gutter)));
  max-height:calc(100dvh - 180px);
  overflow-y:auto;overscroll-behavior:contain;
  margin:0;padding:14px;
  border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);
  background:rgba(3,13,22,.9);
  backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift),var(--gui-glow-low);
  color:var(--gui-text-secondary);font:var(--gui-font-caption);
}
.placementCard .placementStep{margin-bottom:10px;color:var(--gui-cyan-interactive)}
.placementCard .pTitle{display:flex;align-items:center;gap:11px;margin:0 0 11px;min-width:0}
.placementCard .pTitle > i{width:32px;height:32px;flex:0 0 32px;border:1px solid rgba(230,245,255,.66);border-radius:50%;box-shadow:0 0 16px currentColor}
.placementCard .pTitle > div{min-width:0}
.placementCard .pTitle b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-primary);font:var(--gui-font-heading)}
.placementCard .pTitle span{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.placementOrbitChoice{display:grid;gap:6px;margin:0 0 9px;padding:8px;border:1px solid rgba(110,220,255,.2);border-radius:var(--gui-radius-sm);background:rgba(5,18,30,.76)}
.placementOrbitChoice>span{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.placementOrbitChoice>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:5px}
.placementOrbitChoice button{min-width:0;min-height:34px;padding:5px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-color:var(--gui-divider);background:rgba(7,25,40,.86);color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.035em}
.placementOrbitChoice button.active{border-color:var(--gui-cyan-interactive);background:rgba(35,103,132,.62);color:var(--gui-text-primary);box-shadow:var(--gui-glow-low)}
.placementCompact{display:grid;grid-template-columns:1.4fr .9fr;gap:6px;margin-top:0}
.placementCompactItem{min-width:0;padding:9px 10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(5,18,30,.7)}
.placementCompactItem span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.placementCompactItem b{display:block;margin-top:3px;color:var(--gui-text-primary);font:var(--gui-font-stat);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.placementStatus{display:flex;align-items:flex-start;justify-content:center;gap:8px;margin-top:9px;padding:10px 11px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(4,15,25,.76);font:var(--gui-font-micro);letter-spacing:.03em;text-align:left}
.placementStatus i{margin-top:3px}
.placementStatus span{min-width:0}
.placementDetails{display:none;padding:6px 1px 0}
.placementCard.details-open .placementDetails{display:block}
.placementDetails .pRow{padding:6px 0;border-color:var(--gui-divider)}
.placementDetailsToggle{width:100%;min-height:38px;margin-top:10px;border-color:var(--gui-border);background:rgba(7,25,40,.86);color:var(--gui-cyan-bright);font:var(--gui-font-micro);letter-spacing:.07em}
.placementCard .placementInstruction{margin:0 0 10px;padding:8px 10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(13,20,35,.5);color:var(--gui-text-secondary);font:var(--gui-font-micro);text-align:center;letter-spacing:.05em}
.placementCard .sectorTag{color:#9fffe4!important}
.pRow{display:flex;justify-content:space-between;gap:14px;padding:5px 0;border-top:1px solid var(--gui-divider)}
.pRow span:first-child{color:var(--gui-cyan-ambient)}
.pRow span:last-child{text-align:right;color:var(--gui-text-primary)}

.placementCanvasHint{
  position:absolute;pointer-events:none;
  top:calc(var(--hud-top) + 68px);left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:8px 14px;
  border:1px solid rgba(110,220,255,.2);border-radius:var(--gui-radius-pill);
  background:rgba(2,10,17,.6);
  color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.07em;text-align:center;
}
.placementCanvasHint b{color:var(--gui-cyan-bright);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}

.placementTools{
  position:absolute;pointer-events:auto;
  left:50%;bottom:var(--hud-bottom);transform:translateX(-50%);
  width:min(740px,calc(100vw - 2 * var(--hud-gutter)));
  display:grid;grid-template-columns:120px auto minmax(200px,1fr);align-items:center;gap:8px;
  padding:7px;
  border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-lg);
  background:rgba(3,14,23,.93);
  backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift),var(--gui-glow-medium);
}
.placementTools button{min-height:46px}
.placementCameraTools{display:flex;gap:4px}
.placementCameraTools button{width:var(--gui-touch);min-width:var(--gui-touch);padding:0}
.placementCameraTools button .gui-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.placementTools .cancel{min-width:0;border-color:rgba(255,130,124,.42);background:rgba(37,16,22,.9);color:#ffb8c1}
.placementTools .place{min-width:0;border-color:var(--gui-cyan-interactive);background:linear-gradient(180deg,rgba(37,119,151,.88),rgba(18,63,87,.94));color:var(--gui-text-primary);box-shadow:var(--gui-glow-medium)}
#placementReviewModal{align-items:center;justify-content:flex-end;padding:14px}
#placementReviewModal .reviewPanel{width:min(450px,100%);max-height:calc(100dvh - 28px);margin:0;overflow-y:auto}

/* ============================================================================
   18 · OBJECT PAGE  (level 3)
   ========================================================================== */
.objectPage{
  position:fixed;z-index:var(--gui-z-page);inset:0;display:none;
  background:rgba(2,4,8,.96);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));
}
.objectPage.open{display:block;animation:gui-fade-in var(--gui-motion-fast) ease}
@keyframes gui-fade-in{from{opacity:0}to{opacity:1}}
.objectPageShell{
  height:100%;width:min(100%,820px);margin:0 auto;
  display:flex;flex-direction:column;overflow:hidden;
  border:1px solid var(--gui-border);border-radius:var(--gui-radius-lg);
  background:var(--gui-panel-solid);
  box-shadow:var(--gui-lift-strong);
}
.objectPageTop{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--gui-divider);background:rgba(9,13,23,.96)}
.objectPageTop > div span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.objectPageTop > div b{display:block;margin-top:3px;color:var(--gui-text-primary);font:var(--gui-font-stat);letter-spacing:.08em}
.objectPageTop button{flex:0 0 auto;min-height:44px;padding:0 14px}
.objectPageScroll{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:18px 18px 24px}
.objectHero{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;padding:2px 0 18px}
.objectHeroOrb{width:72px;height:72px;border-radius:50%;border:1px solid rgba(255,255,255,.6);box-shadow:0 0 40px color-mix(in srgb,currentColor 30%,transparent);position:relative}
.objectHeroOrb:after{content:"";position:absolute;inset:-10px;border:1px solid currentColor;border-radius:50%;opacity:.14}
.objectHeroThumb{overflow:hidden;background:#070b14;border:1px solid rgba(111,138,185,.35)}
.objectHeroThumb img{width:100%;height:100%;display:block;image-rendering:pixelated;object-fit:cover}
.objectHeroCopy{min-width:0}
.objectHeroCopy .eyebrow{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.objectHeroCopy h1{margin:6px 0 4px;font:var(--gui-font-display);font-size:1.75rem;line-height:1.06;color:var(--gui-text-primary);overflow-wrap:anywhere}
.objectHeroCopy .heroMeta{color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.objectHeroCopy .heroMeta b{color:var(--gui-text-primary)}
.objectPageStatus{display:inline-block;margin-top:9px;padding:5px 10px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-pill);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.objectPageSection{margin-top:18px;padding-top:16px;border-top:1px solid var(--gui-divider)}
.objectPageSection:first-of-type{margin-top:0}
.objectPageSectionHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}
.objectPageSectionHead b{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide)}
.objectPageSectionHead span{color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.objectPageGrid{display:grid;grid-template-columns:1fr 1fr;gap:9px 16px}
.objectPageStat{min-width:0;padding:8px 0;border-top:1px solid var(--gui-divider)}
.objectPageStat span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.05em}
.objectPageStat b{display:block;margin-top:4px;color:var(--gui-text-primary);font:var(--gui-font-stat);font-size:.8125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.objectPageStat b.liveCoord{color:var(--gui-success)}
.ownerCard{padding:14px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:linear-gradient(145deg,rgba(18,35,55,.5),rgba(7,11,20,.6))}
.ownerPrimary{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.ownerPrimary span{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.ownerPrimary h2{margin:5px 0 0;color:var(--gui-text-primary);font:var(--gui-font-title);font-size:1.25rem}
.ownerBadge{flex:0 0 auto;padding:5px 10px;border:1px solid rgba(126,226,180,.4);border-radius:var(--gui-radius-pill);color:var(--gui-success);font:var(--gui-font-micro);white-space:nowrap}
.contributorRows{margin-top:8px}
.contributorRow{display:grid;grid-template-columns:1fr auto;gap:10px;padding:9px 1px;border-top:1px solid var(--gui-divider);font:var(--gui-font-caption)}
.contributorRow b{color:var(--gui-text-primary)}
.contributorRow span{color:var(--gui-text-secondary)}
.objectHistoryMini .miniEvent{padding:10px 1px;border-top:1px solid var(--gui-divider)}
.objectHistoryMini .miniEvent:first-child{border-top:0}
.miniEvent .miniTime{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);margin-bottom:4px}
.miniEvent .miniText{color:var(--gui-text-primary);font:var(--gui-font-caption)}
.objectPageActions{
  position:sticky;bottom:-24px;
  display:grid;grid-template-columns:1fr 1fr;gap:8px;
  margin:20px -18px -24px;padding:14px 18px calc(14px + env(safe-area-inset-bottom));
  border-top:1px solid var(--gui-divider);
  background:rgba(5,8,17,.97);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.objectPageActions button{min-height:46px}
.objectPage .traitSection{margin-top:0}
.objectPage .discoveryStrip{margin-top:10px}
.linkToast{min-height:14px;margin-top:8px;color:var(--gui-success);font:var(--gui-font-micro);text-align:center}

/* Passport drawer (advanced / founder controls such as the lineage decision) */
.detailDrawer{
  position:fixed;z-index:var(--gui-z-drawer);
  left:50%;bottom:0;
  width:min(100vw,720px);max-height:min(60dvh,660px);
  display:flex;flex-direction:column;
  border:1px solid var(--gui-border);border-bottom:0;
  border-radius:var(--gui-radius-lg) var(--gui-radius-lg) 0 0;
  background:rgba(4,12,21,.97);
  backdrop-filter:blur(var(--gui-blur));-webkit-backdrop-filter:blur(var(--gui-blur));
  box-shadow:var(--gui-lift-strong);
  padding:8px 14px calc(14px + env(safe-area-inset-bottom));
  opacity:0;pointer-events:none;transform:translate(-50%,105%);
  transition:transform var(--gui-motion-panel) var(--gui-ease),opacity var(--gui-motion-fast) ease;
}
.detailDrawer.open{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.drawerHandle{width:46px;height:4px;border-radius:var(--gui-radius-pill);background:var(--gui-cyan-ambient);opacity:.45;margin:0 auto 8px}
.drawerTop{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 1px 9px;border-bottom:1px solid var(--gui-divider)}
.drawerTitle{min-width:0;display:flex;flex-direction:column;gap:3px}
.drawerTitle b{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.drawerTitle span{max-width:390px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-secondary);font:var(--gui-font-micro);letter-spacing:.035em}
.drawerTopActions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.drawerTopActions button{min-height:38px;padding:0 11px}
#objectPageBtn{border-color:var(--gui-border-strong);background:rgba(35,112,144,.24);color:var(--gui-text-primary)}
#detail{
  display:none;flex:1 1 auto;min-height:0;width:100%;
  padding:10px 2px 18px;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;
  scroll-padding-bottom:28px;color:var(--gui-text-secondary);font:var(--gui-font-caption)
}
#detail.show{display:block}
.inspectorActionDock{
  display:none;flex:0 0 auto;margin:0 -2px;padding:9px 2px 0;
  border-top:1px solid var(--gui-divider);background:rgba(4,12,21,.99)
}
.inspectorActionDock.show{display:block}
.inspectorPrimaryActions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.inspectorPrimaryActions button{min-width:0;min-height:42px;padding:0 9px}
.inspectorPrimaryActions .contribute{border-color:rgba(126,226,180,.42);background:rgba(21,60,45,.6);color:#c8ffe4}
.inspectorPrimaryActions .follow.active{border-color:rgba(126,226,180,.45);background:rgba(21,60,45,.6);color:var(--gui-success)}
.inspectorPrimaryActions .more.active{border-color:var(--gui-border-strong);background:var(--gui-selected);color:var(--gui-cyan-bright)}
.inspectorMoreActions{display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding-top:7px}
.inspectorMoreActions.open{display:grid}
.inspectorMoreActions button{min-width:0;min-height:40px;padding:0 9px}
.inspectorMoreActions .share{border-color:rgba(117,181,218,.34);background:rgba(11,30,45,.82);color:var(--gui-cyan-bright)}
.inspectorMoreActions .customize{border-color:rgba(184,159,255,.34);background:rgba(30,24,53,.76);color:#d8ceff}
.inspectorMoreActions .delete{border-color:rgba(255,130,124,.4);background:rgba(37,17,22,.8);color:#ffb6c0}

.inspectorHero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:2px 0 13px}
.inspectorOrb{width:54px;height:54px;border:1px solid rgba(220,240,255,.5);border-radius:50%;box-shadow:0 0 24px color-mix(in srgb,currentColor 36%,transparent),inset 0 0 10px rgba(0,0,0,.42)}
.inspectorHeroCopy{min-width:0}
.inspectorHeroCopy h2{margin:0 0 4px;color:var(--gui-text-primary);font:var(--gui-font-title);font-size:1.18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inspectorIdentity{color:var(--gui-text-secondary);font:var(--gui-font-micro);line-height:1.45}
.inspectorStatus{max-width:180px;padding:5px 9px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);font:var(--gui-font-micro);letter-spacing:.06em;text-align:center}
.inspectorStatus.good{border-color:rgba(126,226,180,.36);color:var(--gui-success);background:rgba(19,51,39,.44)}
.inspectorStatus.warning{border-color:rgba(255,204,128,.34);color:#ffd18a;background:rgba(54,37,18,.48)}
.inspectorStatus.danger{border-color:rgba(255,130,124,.4);color:var(--gui-danger);background:rgba(52,21,27,.56)}
.inspectorStatus.neutral{color:var(--gui-text-secondary)}

.inspectorPrimaryGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.inspectorMetric{min-width:0;padding:10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(5,18,30,.68)}
.inspectorMetric span,.inspectorDynamicsGrid span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.055em}
.inspectorMetric b{display:block;margin-top:4px;color:var(--gui-text-primary);font:var(--gui-font-stat);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inspectorMetric small{display:block;margin-top:4px;color:var(--gui-text-disabled);font:var(--gui-font-micro);font-size:.59rem;letter-spacing:.035em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.inspectorRelationship{margin-top:8px;padding:13px 14px;border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-md);background:rgba(10,31,48,.78);box-shadow:inset 0 0 0 1px rgba(105,202,242,.04)}
.inspectorRelationship span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.inspectorRelationship b{display:block;margin-top:5px;color:var(--gui-cyan-bright);font:var(--gui-font-stat);font-size:.9rem}
.inspectorRelationship small{display:block;margin-top:4px;color:var(--gui-text-secondary);font:var(--gui-font-micro);line-height:1.45}

.gravitySchematic{
  display:grid;grid-template-columns:minmax(90px,auto) minmax(80px,1fr) minmax(110px,auto);
  align-items:center;gap:8px;margin:2px 0 10px;padding:12px 10px;
  border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(5,18,30,.55)
}
.gravityNode{min-width:0;display:flex;align-items:center;gap:8px;color:var(--gui-text-primary);font:var(--gui-font-micro)}
.gravityNode i{display:block;flex:0 0 auto;width:18px;height:18px;border:1px solid rgba(210,235,255,.55);border-radius:50%;background:#263647;box-shadow:0 0 12px color-mix(in srgb,currentColor 26%,transparent)}
.gravityNode span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gravityNode.anchor{justify-content:flex-end}
.gravityNode.anchor i{background:rgba(5,8,14,.95);border:2px solid rgba(157,190,224,.48);box-shadow:0 0 14px rgba(113,160,213,.12)}
.gravityLink{min-width:60px;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);text-align:center}
.gravityLink i{display:block;width:100%;height:1px;background:linear-gradient(90deg,rgba(105,202,242,.2),rgba(105,202,242,.72),rgba(105,202,242,.2));position:relative}
.gravityLink i:after{content:"";position:absolute;right:-1px;top:-3px;border-left:5px solid var(--gui-cyan-ambient);border-top:3px solid transparent;border-bottom:3px solid transparent}
.gravityLink span{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.inspectorDecision{margin-top:10px}
.inspectorSection{margin-top:13px;padding-top:12px;border-top:1px solid var(--gui-divider)}
.inspectorSectionHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.inspectorSectionHead b{color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide)}
.inspectorSectionHead span{color:var(--gui-text-disabled);font:var(--gui-font-micro)}
.inspectorSectionHead button{min-height:32px;padding:0 9px;border-color:transparent;background:transparent;color:var(--gui-cyan-bright);font:var(--gui-font-micro)}
.inspectorDynamicsGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}
.inspectorDynamicsGrid > div{min-width:0;padding:7px 0;border-top:1px solid var(--gui-divider)}
.inspectorDynamicsGrid b{display:block;margin-top:3px;color:var(--gui-text-primary);font:var(--gui-font-stat);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.inspectorTimeline{display:grid;gap:0}
.inspectorEvent{padding:9px 1px;border-top:1px solid var(--gui-divider)}
.inspectorEvent:first-child{border-top:0}
.inspectorEvent span{display:block;margin-bottom:3px;color:var(--gui-cyan-ambient);font:var(--gui-font-micro)}
.inspectorEvent b{display:block;color:var(--gui-text-primary);font:var(--gui-font-caption);font-weight:600;line-height:1.42}
.inspectorEvent.blackhole b{color:#ffc4c8}
.inspectorEvent.capture b,.inspectorEvent.encounter b{color:#b6efff}
.inspectorEvent.contribution b{color:#c9d5ff}
.inspectorEmpty{padding:12px 1px;color:var(--gui-text-disabled);font:var(--gui-font-caption)}

.inspectorTechnical{margin-top:13px;border-top:1px solid var(--gui-divider)}
.inspectorTechnical summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:42px;cursor:pointer;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide);list-style:none}
.inspectorTechnical summary::-webkit-details-marker{display:none}
.inspectorTechnical summary:after{content:"+";flex:0 0 auto;color:var(--gui-cyan-bright);font-size:1rem}
.inspectorTechnical[open] summary:after{content:"−"}
.inspectorTechnical summary span{margin-left:auto;color:var(--gui-text-disabled);font:var(--gui-font-micro);letter-spacing:.05em}
.inspectorTechnicalBody{padding:2px 0 8px}
.inspectorTechnicalBody .traitSection{margin-top:12px}


/* ============================================================================
   19 · NOTICES / TOASTS / OBJECT BIRTH
   ========================================================================== */
.loading{position:fixed;z-index:var(--gui-z-notice);inset:0;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.8);color:var(--gui-text-primary);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide)}
.loading.show{display:flex}
.remoteNotice{
  position:fixed;z-index:var(--gui-z-notice);
  left:50%;top:var(--hud-below-header);transform:translateX(-50%);
  width:min(560px,calc(100vw - 2 * var(--hud-gutter)));
  display:none;padding:11px 14px;
  border:1px solid rgba(126,226,180,.36);border-radius:var(--gui-radius-md);
  background:rgba(6,20,15,.95);color:#b8ffd3;font:var(--gui-font-caption);
  backdrop-filter:blur(10px);
}
.remoteNotice.show{display:block}
.streamLegend{
  position:fixed;z-index:var(--gui-z-hud);
  left:50%;top:var(--hud-below-header);transform:translateX(-50%);
  display:none;pointer-events:none;
  padding:6px 12px;
  border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);
  background:rgba(4,8,14,.7);color:var(--gui-text-secondary);
  font:var(--gui-font-micro);letter-spacing:var(--gui-track-label);
  backdrop-filter:blur(8px);
}
.streamLegend.show{display:block}
.stripeReturnNotice{
  position:fixed;z-index:82;
  left:50%;top:var(--hud-below-header);transform:translate(-50%,-10px);
  width:min(560px,calc(100vw - 2 * var(--hud-gutter)));
  display:flex;align-items:flex-start;gap:16px;padding:13px 14px;
  border:1px solid rgba(71,156,182,.46);border-radius:var(--gui-radius-md);
  background:rgba(3,15,24,.97);box-shadow:var(--gui-glow-medium),var(--gui-lift);
  opacity:0;pointer-events:none;transition:opacity var(--gui-motion-fast),transform var(--gui-motion-fast);
}
.stripeReturnNotice.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.stripeReturnNotice > div{min-width:0;flex:1}
.stripeReturnNotice span{display:block;color:var(--gui-cyan-bright);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.stripeReturnNotice b{display:block;margin-top:4px;color:var(--gui-text-primary);font:var(--gui-font-heading)}
.stripeReturnNotice p{margin:5px 0 0;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.stripeReturnNotice button{flex:0 0 auto;min-height:36px}
.stripeReturnNotice[data-state="success"]{border-color:rgba(78,178,128,.5)}
.stripeReturnNotice[data-state="success"] span{color:var(--gui-success)}
.stripeReturnNotice[data-state="error"]{border-color:rgba(200,93,105,.5)}
.stripeReturnNotice[data-state="error"] span{color:var(--gui-danger)}

#error{
  position:fixed;z-index:90;left:var(--hud-left);right:var(--hud-right);
  top:var(--hud-below-header);
  display:none;padding:14px;
  border:1px solid rgba(255,130,124,.44);border-radius:var(--gui-radius-md);
  background:rgba(37,16,22,.96);color:#ffd4da;font:var(--gui-font-caption);white-space:pre-wrap;
}
#error.launchError{
  top:50%;left:50%;right:auto;transform:translate(-50%,-50%);
  width:min(640px,calc(100vw - 28px));padding:24px;
  border-color:var(--gui-border-strong);background:rgba(4,15,24,.98);
  color:var(--gui-text-secondary);font:var(--gui-font-body);white-space:normal;
  box-shadow:var(--gui-lift-strong);
}
#error.launchError b{display:block;margin-bottom:10px;color:var(--gui-cyan-bright);font:var(--gui-font-title)}
#error.launchError code{color:var(--gui-cyan-emissive)}
#error.launchError a{display:inline-block;margin-top:14px;padding:11px 14px;border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-sm);background:rgba(18,49,74,.9);color:var(--gui-text-primary);text-decoration:none;font-weight:700}

/* Object birth — a short spatial ceremony, not a success toast. */
.creationToast{
  position:fixed;z-index:var(--gui-z-ceremony);
  left:50%;top:50%;transform:translate(-50%,-50%) scale(.94);
  width:min(440px,calc(100vw - 2 * var(--hud-gutter)));
  padding:28px 24px 22px;
  text-align:center;pointer-events:none;opacity:0;
  border:1px solid rgba(126,226,180,.4);border-radius:var(--gui-radius-lg);
  background:radial-gradient(120% 90% at 50% 0%,rgba(18,58,46,.5),rgba(3,12,18,.96) 62%);
  box-shadow:var(--gui-lift-strong),0 0 60px rgba(126,226,180,.1);
  transition:opacity var(--gui-motion-panel) ease,transform 420ms var(--gui-ease);
}
.creationToast.show{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}
.creationToast::before{
  content:"";position:absolute;left:50%;top:50%;width:120px;height:120px;
  margin:-60px 0 0 -60px;border:1px solid rgba(126,226,180,.5);border-radius:50%;
  opacity:0;pointer-events:none;
}
.creationToast.show::before{animation:gui-birth-ring 1.6s var(--gui-ease) .12s}
@keyframes gui-birth-ring{0%{opacity:.7;transform:scale(.2)}100%{opacity:0;transform:scale(3.4)}}
.creationToast .createdId{margin:0;color:var(--gui-text-primary);font:var(--gui-font-display);font-size:1.75rem;letter-spacing:.02em;overflow-wrap:anywhere;text-shadow:0 0 26px rgba(170,255,220,.22)}
.creationToast .createdWord{margin-top:9px;color:var(--gui-success);font:var(--gui-font-label);letter-spacing:var(--gui-track-wide)}
.creationToast .createdName{margin-top:12px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.creationToast .createdBalance{margin-top:14px;padding-top:12px;border-top:1px solid rgba(84,120,126,.28);color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.07em}
.creationToast .createdActions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}
.creationToast .createdActions button{min-height:44px}

/* ============================================================================
   20 · DEVELOPER  (never part of the player surface)
   ========================================================================== */
body:not(.dev-tools-enabled) [data-gui-dev-only],
body:not(.dev-tools-enabled) .delete[data-action="delete"]{display:none!important}
#devToggle,#devDrawer,#consoleOpen{display:none!important}
body.dev-tools-enabled #devToggle{display:flex!important}
body.dev-tools-enabled #devDrawer.open{display:block!important}
body.dev-tools-enabled #consoleOpen{display:flex!important}
body.admin-design-enabled #devDrawer,
body.admin-design-enabled #consoleOpen,
body.admin-design-enabled [data-gui-dev-only]{display:none!important}
body.admin-design-enabled #designLab[data-gui-dev-only]{display:none!important}
body.admin-design-enabled #designLab[data-gui-dev-only].open{display:block!important}
body.admin-design-enabled #menuDevSection{display:block!important}
body.admin-design-enabled #devToggle{display:flex!important}
.prelaunchResetButton{display:none!important}
body.admin-design-enabled #prelaunchResetOpen,
body.dev-tools-enabled #prelaunchResetOpen.admin-visible{display:flex!important}
#prelaunchResetOpen{border-color:rgba(255,130,124,.4);background:rgba(36,16,21,.9);color:#ffb5c0}

.controls{
  position:fixed;z-index:var(--gui-z-drawer);
  left:50%;bottom:0;transform:translate(-50%,108%);
  width:min(100vw,720px);max-height:min(76dvh,760px);overflow-y:auto;
  border:1px solid var(--gui-border);border-bottom:0;
  border-radius:var(--gui-radius-lg) var(--gui-radius-lg) 0 0;
  background:rgba(4,10,18,.98);
  padding:12px 14px calc(14px + env(safe-area-inset-bottom));
  opacity:0;pointer-events:none;
  transition:transform var(--gui-motion-panel) var(--gui-ease),opacity var(--gui-motion-fast) ease;
}
.controls.open{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.devHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;color:var(--gui-cyan-ambient);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.devHeader button{flex:0 0 auto;min-height:36px}
.devDiagnostics{margin-bottom:10px;color:var(--gui-text-secondary);font:var(--gui-font-micro);line-height:1.6}
.devDiagnostics b{color:var(--gui-text-primary)}
.controls .row{display:flex;flex-wrap:wrap;gap:7px}
.controls .row + .row{margin-top:8px}
.controls .row button{flex:1 1 92px;min-height:40px}
.controls .tool{flex:0 0 60px}
.hint{margin-top:10px;color:var(--gui-text-disabled);font:var(--gui-font-micro);text-align:center}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:8px}
.pill{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 11px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);
  background:rgba(3,10,18,.7);color:var(--gui-text-secondary);font:var(--gui-font-micro);
}
.pill b{color:var(--gui-text-primary)}
.gui-menu-status{padding:14px 0 4px}
.gui-menu-status-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gui-menu-status-head button{flex:0 0 auto;min-height:38px}
.eventRow button{font:var(--gui-font-micro)}
.eventOn{border-color:rgba(126,226,180,.42)!important;background:rgba(21,56,38,.8)!important;color:#baffd4!important}
.eventOff{border-color:rgba(255,130,124,.4)!important;background:rgba(39,20,24,.8)!important;color:#ffb7c0!important}
.visibilityRow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:8px}
.visibilityRow .visLabel{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:var(--gui-track-label)}
.visibilityRow button{flex:0 0 auto;min-width:52px;min-height:38px}
.debugNote{margin-top:6px;color:var(--gui-text-disabled);font:var(--gui-font-micro);line-height:1.55}
.designLab{
  display:none;position:fixed;z-index:var(--gui-z-lab);top:14px;right:14px;
  width:min(400px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto;
  padding:18px;border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-lg);
  background:var(--gui-panel-solid);box-shadow:var(--gui-lift-strong),var(--gui-glow-medium);
}
body.dev-tools-enabled .designLab.open{display:block}
.designLabHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.designLabHead b{display:block;font:var(--gui-font-heading)}
.designLabHead span{display:block;margin-top:5px;color:var(--gui-success);font:var(--gui-font-micro)}
.designLabGroup{padding:14px 0;border-top:1px solid var(--gui-divider)}
.designLabGroup h3{margin:0 0 10px;color:var(--gui-cyan-bright);font:var(--gui-font-label);letter-spacing:var(--gui-track-label)}
.designLabField{display:grid;grid-template-columns:minmax(120px,1fr) minmax(120px,1.2fr) 52px;align-items:center;gap:9px;margin:9px 0;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.designLabField input[type=color]{width:100%;height:36px;padding:2px}
.designLabField input[type=range]{width:100%}
.designLabValue{text-align:right;color:var(--gui-text-primary);font:var(--gui-font-micro)}
.designLabActions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.designLabStatus{min-height:20px;margin-top:10px;color:var(--gui-success);font:var(--gui-font-micro)}
.designThemeState{padding:8px 1px 4px;color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.designThemeState b{color:var(--gui-cyan-bright)}
#designLabPublish{border-color:rgba(126,226,180,.45);background:rgba(21,53,36,.8);color:#baffd0}
#designLabRevert{border-color:rgba(255,130,124,.4);background:rgba(37,17,22,.8);color:#ffb6c0}

/* ============================================================================
   21 · RESPONSIVE
   Mobile is designed, not compressed. Nothing is hidden to solve an overlap.
   ========================================================================== */

/* Below ~1200px the peek card and the camera dock share the same band, so the
   dock lifts above the card instead of overlapping it. It never leaves the
   bottom-right corner. */
@media (max-width:1199px){
  body.object-selected{--hud-dock-bottom:calc(var(--hud-nav-clear) + var(--hud-peek-h) + var(--hud-stack-gap))}
}

/* --- compact: phones and small tablets ----------------------------------- */
@media (max-width:900px){
  .gui-my-galaxy-hero{flex-direction:column}
  .gui-my-galaxy-actions{width:100%;justify-content:flex-start}
  .gui-my-galaxy-actions button{flex:1 1 150px}
  .gui-portfolio-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .gui-profile-activity-row{grid-template-columns:88px minmax(0,1fr)}
  .gui-profile-activity-row>em{grid-column:2;justify-self:start}
  :root{
    --hud-gutter:10px;
    --gui-touch:46px;
    --hud-nav-h:62px;
    --hud-nav-w:100%;
    --hud-peek-h:112px;
  }
  .top{padding-top:var(--hud-top)}
  .hudIdentity .brand{font-size:.6875rem;letter-spacing:.14em}
  .liveTicker{width:calc(100vw - 2 * var(--hud-gutter))}
  .tickerLiveToggle,.tickerActivityOpen{padding:0 10px}

  .primaryGalaxyNav{width:calc(100vw - 2 * var(--hud-gutter));gap:1px;padding:4px;border-radius:16px}
  .primaryGalaxyNav button{padding:6px 2px;font-size:.5625rem;letter-spacing:.03em}
  .primaryGalaxyNav .gui-icon{width:1.2rem;height:1.2rem}

  .galaxyMinimap{width:min(calc(var(--hud-map-size) + 20px),calc(100vw - 2 * var(--hud-gutter)))}

  /* Peek becomes two rows so nothing is clipped and targets stay 44px+. */
  .objectBar{width:calc(100vw - 2 * var(--hud-gutter));gap:6px;padding:9px 10px}
  .objectBarOrb{width:40px;height:40px;flex-basis:40px}
  .peekBody{grid-template-columns:auto minmax(0,1fr);row-gap:9px;gap:10px}
  .peekActions{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 46px;gap:6px}
  .peekActions button{min-height:46px;width:auto;min-width:0;padding:0 7px}
  #objectClose{width:46px;min-width:46px;padding:0}
  .objectBarSubline{align-items:flex-start;flex-direction:column;gap:4px}
  .objectBarStatus{max-width:100%}
  .inspectorPrimaryGrid{grid-template-columns:1fr 1fr}
  .inspectorHero{grid-template-columns:auto minmax(0,1fr);align-items:start}
  .inspectorStatus{grid-column:1/-1;justify-self:start;max-width:100%}
  .drawerTop{align-items:flex-start}
  .drawerTopActions{gap:4px}
  .drawerTopActions button{padding:0 8px}
  .navTrail button{min-height:38px}
  .navCrumbs button{line-height:36px;max-width:150px}

  /* Panels become bottom sheets. */
  .gui-core-overlay,.buyModal,.gui-help-overlay{align-items:flex-end;padding:0}
  .gui-core-panel,.buyPanel,.gui-help-panel{
    width:100%;max-height:min(90dvh,860px);
    border-width:1px 0 0;border-radius:var(--gui-radius-lg) var(--gui-radius-lg) 0 0;
    padding:18px 16px calc(18px + env(safe-area-inset-bottom));
  }
  .gui-help-layout{grid-template-columns:1fr;overflow:visible}
  .gui-help-topics{flex-direction:row;overflow-x:auto;padding:0 0 9px;border-right:0;border-bottom:1px solid var(--gui-divider);scrollbar-width:none}
  .gui-help-topics::-webkit-scrollbar{display:none}
  .gui-help-topics button{flex:0 0 auto}
  .gui-help-content{overflow-y:auto}
  .gui-help-flow,.gui-help-facts,.gui-help-command-grid,.gui-help-event-levels{grid-template-columns:1fr}
  .gui-help-step-icon{flex:0 0 auto}
  .emptyGalaxyPrompt{bottom:calc(var(--hud-nav-h) + 12px)}
  .gui-profile-stats,.gui-galaxy-stats-grid{grid-template-columns:1fr 1fr}
  .gui-profile-objects{grid-template-columns:1fr}
  .top .search{
    top:var(--hud-below-header);
    width:calc(100vw - 2 * var(--hud-gutter));
    max-height:calc(100dvh - var(--hud-header-h) - 100px);
    padding:12px;
  }
  .gui-search-results{max-height:calc(100dvh - 340px)}
  #galaxyEventsModal{align-items:flex-end;justify-content:center;padding:0}
  #galaxyEventsModal .galaxyEventsPanel{
    width:100%;height:min(84dvh,760px);
    border-width:1px 0 0;border-radius:var(--gui-radius-lg) var(--gui-radius-lg) 0 0;
    padding:18px 16px calc(16px + env(safe-area-inset-bottom));
    box-shadow:0 -22px 64px rgba(0,0,0,.62);
  }
  .eventSummary{grid-template-columns:1fr 1fr}
  .galaxyEventRow{grid-template-columns:4px minmax(0,1fr);min-height:88px}
  .galaxyEventJump{grid-column:2;justify-self:start;margin-top:5px}
  .activityPanelHeadActions > i{display:none}

  #placementReviewModal{align-items:flex-end;justify-content:center;padding:0}
  #placementReviewModal .reviewPanel{width:100%;max-height:88dvh;border-width:1px 0 0;border-radius:var(--gui-radius-lg) var(--gui-radius-lg) 0 0}

  /* Placement */
  .placementModeBar{width:calc(100vw - 2 * var(--hud-gutter));grid-template-columns:1fr auto;gap:10px}
  .placementModeObject{display:none}
  .placementCard{
    top:calc(var(--hud-top) + 62px);left:var(--hud-left);
    width:calc(100vw - 2 * var(--hud-gutter));
    max-height:min(42dvh,calc(100dvh - 200px));padding:12px;
  }
  .placementCompact{grid-template-columns:1fr 1fr}
  .placementCanvasHint{display:none}
  .placementTools{width:calc(100vw - 2 * var(--hud-gutter));grid-template-columns:88px auto minmax(120px,1fr)}
  .placementCameraTools button{width:42px;min-width:42px}

  .objectPage{padding:calc(8px + env(safe-area-inset-top)) 8px calc(8px + env(safe-area-inset-bottom))}
  .objectPageScroll{padding:16px 14px 20px}
  .objectHeroOrb{width:58px;height:58px}
  .objectHeroCopy h1{font-size:1.4375rem}
  .objectPageActions{margin-left:-14px;margin-right:-14px;padding-left:14px;padding-right:14px}
  .formGrid{grid-template-columns:1fr}
  .contribPresets{grid-template-columns:repeat(3,1fr)}
  .detailDrawer{max-height:min(70dvh,700px)}
}

/* --- phone --------------------------------------------------------------- */
@media (max-width:560px){
  .gui-profile-head-actions #profileRefresh{display:none}
  .gui-portfolio-object{grid-template-columns:auto minmax(0,1fr)!important}
  .gui-portfolio-object .resultMeta{grid-column:2;flex-direction:row;align-items:center;justify-content:space-between;width:100%;margin-top:6px}
  .gui-profile-section-head>button{display:none}
  .gui-my-galaxy-footline{display:grid;gap:5px}
  .hudTools{gap:5px}
  #helpOpen,#menuOpen{width:42px;min-width:42px}
  .gui-help-panel{padding:16px}
  .gui-help-control-list > div{grid-template-columns:112px minmax(0,1fr);gap:8px}
  .gui-tour-card{width:min(340px,calc(100vw - 20px))}
  .emptyGalaxyPrompt > div{flex-direction:column}
  .createMassComposer{grid-template-columns:1fr}
  .massScaleViewport{min-height:150px}
  .massQuickPicks{grid-template-columns:repeat(3,1fr)}
  .massModeTabs button{padding:0 6px;font-size:.64rem}
  .summaryMassVisual{width:92px;height:92px;flex-basis:92px}
  .massChangeViewport{height:102px}
  .massChangeVisual{gap:6px}
  .massChangeArrow b{font-size:.7rem!important}
  .inspectorOrb{width:46px;height:46px}
  .inspectorHeroCopy h2{font-size:1.05rem}
  .inspectorPrimaryGrid{gap:6px}
  .inspectorMetric{padding:9px}
  .inspectorDynamicsGrid{grid-template-columns:1fr}
  .gravitySchematic{grid-template-columns:auto 1fr auto;padding:10px 8px}
  .gravityNode span{display:none}
  .gravityLink span{max-width:130px}
  .inspectorPrimaryActions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .inspectorMoreActions{grid-template-columns:1fr 1fr}
  .drawerTitle span{max-width:180px}
  #objectPageBtn .gui-button-label{display:none}
  :root{--hud-nav-h:60px}
  .hudIdentity .hudKicker{font-size:.5625rem}
  .massBalanceChip{min-width:0;gap:7px;padding:0 10px}
  .massBalanceChip span{font-size:.5625rem}
  .primaryGalaxyNav button{font-size:.5rem;letter-spacing:.02em}
  .massClassReference{grid-template-columns:repeat(2,minmax(0,1fr))}
  .massPurchaseAmount{grid-template-columns:1fr 116px}
  .lineageChoices{grid-template-columns:1fr}
  .objectPageGrid{grid-template-columns:1fr}
  .createSteps{gap:5px}
  .createStepDot i{display:none}
}

/* --- short landscape ------------------------------------------------------ */
@media (max-height:560px) and (orientation:landscape){
  :root{--hud-gutter:10px;--hud-nav-h:56px;--hud-nav-w:520px;--hud-peek-h:74px;--hud-ticker-h:28px;--hud-map-chrome:104px}
  /* Landscape has width to spare and no height: the peek moves to the left rail
     so the camera dock keeps its corner without stacking. */
  body.object-selected{--hud-dock-bottom:var(--hud-nav-clear)}
  .hudKicker{display:none}
  
  .primaryGalaxyNav{width:min(var(--hud-nav-w),calc(100vw - 2 * var(--hud-gutter)))}
  .objectBar{left:var(--hud-left);width:min(620px,calc(100vw - 2 * var(--hud-gutter) - 250px));transform:translate(0,14px);padding:8px 10px;gap:6px}
  .objectBar.show{transform:translate(0,0)}
  .peekBody{grid-template-columns:auto minmax(0,1fr) auto;row-gap:0}
  .peekActions{grid-column:auto;display:flex}
  .peekActions button{min-height:44px;padding:0 11px}
  .eventBanner{width:min(430px,calc(100vw - 2 * var(--hud-gutter)))}
  .minimapReadout{flex-direction:column;align-items:flex-start;gap:2px}
  .minimapHead{display:none}
  .minimapBody{padding:8px}
  .minimapReadout{padding-top:7px}
  .gui-help-panel,.gui-core-panel,.buyPanel{max-height:100dvh;border-radius:0}
  .gui-help-flow,.gui-help-facts,.gui-help-command-grid,.gui-help-event-levels{grid-template-columns:1fr 1fr}
  .gui-profile-stats,.gui-galaxy-stats-grid{grid-template-columns:repeat(3,1fr)}
  .placementModeBar{left:auto;right:var(--hud-right);transform:none;width:300px}
  .placementCard{top:calc(var(--hud-top) + 4px);max-height:calc(100dvh - 110px)}
  .placementTools{left:var(--hud-left);right:auto;transform:none;width:min(560px,calc(100vw - 340px))}
  .detailDrawer,.controls{max-height:92dvh}
}

/* --- coarse pointers ------------------------------------------------------ */
@media (pointer:coarse){
  :root{--hud-ticker-h:44px}
  .liveTicker{height:var(--hud-ticker-h)}
  .tickerLiveToggle,.tickerActivityOpen,button.tickerItem{min-height:44px}
  #massBalanceChip,#minimapToggle,#dbReload,#devToggle,#detailCollapse,
  .eventFilters button,#galaxyEventsClose,.gui-profile-tabs button,
  .detailActions button,.objectPageActions button,.peekActions button,
  .createdActions button,#stripeReturnDismiss,.contribPresets button,
  .massModeTabs button,.tabs button,.actions a,.actions button{min-height:44px!important}
  .dockTools button{width:46px;min-width:46px;height:46px;min-height:46px}
  /* The developer harness is intentionally denser than the player surface, but
     never smaller than a comfortable tap. */
  .populationButtons button,.stressButtons button,.visibilityRow button,
  .seedGalaxyActions button,.controls .row button{min-height:40px}
  .navTrail button{min-height:44px}
  .navCrumbs button{line-height:42px}
  #objectClose,#objectInfo{width:46px;min-width:46px}
}

/* ============================================================================
   22 · ACCESSIBILITY
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    scroll-behavior:auto!important;
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
  .tickerTrack{transform:none!important}
  .tickerGroup[aria-hidden="true"]{display:none}
  .hudKicker i,.tickerLiveToggle i{animation:none}
  .creationToast.show::before{animation:none;opacity:0}
}

@media (prefers-contrast:more){
  :root{
    --gui-border:rgba(168,225,255,.6);
    --gui-border-strong:rgba(190,238,255,.85);
    --gui-divider:rgba(150,200,225,.4);
    --gui-text-secondary:#c2d7e4;
    --gui-cyan-ambient:#9fc4d8;
  }
  .buyPanel,.detailDrawer,.controls,.objectBar,.objectPageShell,
  .primaryGalaxyNav,.dockTools,.galaxyMinimap,.liveTicker{background:rgba(2,10,18,.99)}
}

/* Keyboard users always get a visible ring, including inside dense clusters. */
.primaryGalaxyNav button:focus-visible,
.dockTools button:focus-visible,
.peekActions button:focus-visible{outline-offset:-2px}

/* ----------------------------------------------------------------------------
   Component integrity guard.
   Panel-content rules elsewhere style bare <span> elements. Enhanced buttons
   (icon + label, built by galaxy-ui.js) must always own their inner layout, so
   this block is last and wins any specificity tie.
   -------------------------------------------------------------------------- */
button > .gui-button-content{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0}
.primaryGalaxyNav button > .gui-button-content{flex-direction:column;gap:5px;line-height:1}
button .gui-button-label{display:inline-block;margin:0;color:inherit;font:inherit;letter-spacing:inherit}
.gui-icon-only .gui-button-label,.gui-hide-label .gui-button-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.objectBar .navTrail{display:none!important}

@media (min-width:821px){.objectBar .navTrail{display:none!important}}


.gui-profile-head-actions{display:flex;align-items:center;gap:6px}.gui-profile-head-actions button{min-height:38px;padding:0 10px}
.gui-my-galaxy-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.gui-my-galaxy-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.gui-my-galaxy-actions button{min-height:39px;padding:0 11px}
.gui-portfolio-stats{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.gui-portfolio-stats .available{border-color:rgba(126,226,180,.3);background:rgba(15,45,35,.42)}.gui-portfolio-stats .available b{color:var(--gui-success)}
.gui-portfolio-stats .legacy{border-color:rgba(151,132,180,.26);background:rgba(31,25,43,.45)}.gui-portfolio-stats .legacy b{color:#c9bce4}
.gui-my-galaxy-footline{display:flex;flex-wrap:wrap;gap:7px 16px;margin-top:9px;padding:8px 2px;border-top:1px solid var(--gui-divider);border-bottom:1px solid var(--gui-divider)}
.gui-my-galaxy-footline span{color:var(--gui-text-disabled);font:var(--gui-font-micro);letter-spacing:.055em}
.gui-profile-tabs button{display:inline-flex;align-items:center;gap:7px}.gui-profile-tabs button span{min-width:20px;padding:2px 5px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);color:var(--gui-text-disabled);font-size:.56rem}
.gui-profile-tabs button.active span{border-color:rgba(105,202,242,.24);color:var(--gui-cyan-bright)}
.gui-profile-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:8px 0 9px}.gui-profile-section-head b{display:block;color:var(--gui-text-primary);font:var(--gui-font-label);letter-spacing:.07em}.gui-profile-section-head span{display:block;margin-top:4px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}.gui-profile-section-head button{min-height:34px;padding:0 10px}
.gui-portfolio-object{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto!important;min-height:92px!important;align-items:center!important;padding:11px 12px!important}
.gui-portfolio-object.is-legacy{border-color:rgba(151,132,180,.22)!important;background:linear-gradient(90deg,rgba(27,22,37,.48),rgba(5,17,28,.68))!important}.gui-portfolio-object.is-legacy .resultOrb{filter:saturate(.45);opacity:.72}
.gui-object-result-top{display:flex!important;align-items:center;gap:7px;min-width:0}.gui-object-result-top>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gui-object-status{display:inline-flex!important;flex:0 0 auto;margin:0!important;padding:2px 6px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-pill);font:var(--gui-font-micro)!important;font-size:.56rem!important;font-style:normal;letter-spacing:.055em}
.gui-object-status.good{border-color:rgba(126,226,180,.28);color:var(--gui-success)!important}.gui-object-status.warning{border-color:rgba(233,188,106,.3);color:var(--gui-warning)!important}.gui-object-status.legacy{border-color:rgba(177,154,211,.3);color:#cbbce6!important}
.gui-portfolio-object .resultCopy small{display:block;margin-top:5px;color:var(--gui-text-disabled);font:var(--gui-font-micro);line-height:1.4}
.gui-portfolio-object .resultMeta{display:flex!important;flex-direction:column;align-items:flex-end;gap:2px;min-width:68px}.gui-portfolio-object .resultMeta b{color:var(--gui-text-primary);font:var(--gui-font-stat);font-size:.9rem}.gui-portfolio-object .resultMeta small{color:var(--gui-text-disabled);font:var(--gui-font-micro)}.gui-portfolio-object .resultMeta em{margin-top:6px;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);font-style:normal;letter-spacing:.05em}
.gui-profile-activity{display:grid;gap:0;border-top:1px solid var(--gui-divider)}
.gui-profile-activity-row{width:100%;display:grid;grid-template-columns:112px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 6px;border:0;border-bottom:1px solid var(--gui-divider);border-radius:0;background:transparent;text-align:left;color:var(--gui-text-primary)}
button.gui-profile-activity-row:hover,button.gui-profile-activity-row:focus-visible{background:rgba(45,128,163,.1);outline:0}.gui-profile-activity-type{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.065em}.gui-profile-activity-copy{min-width:0}.gui-profile-activity-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--gui-font-label);color:var(--gui-text-primary)}.gui-profile-activity-copy>span{display:block;margin-top:4px;color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.4}.gui-profile-activity-copy small{display:block;margin-top:5px;color:var(--gui-text-disabled);font:var(--gui-font-micro)}.gui-profile-activity-row>em{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);font-style:normal;white-space:nowrap}


/* ============================================================================
   V10.7 · Object Creator & Customization
   ============================================================================ */
.creatorIdentityLayout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:14px;align-items:start}
.creatorLivePreview{min-width:0;padding:13px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-md);background:var(--gui-panel-secondary)}
.creatorLivePreview>span,.creatorSectionHead span{display:block;color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.08em}
.creatorPreviewStage{height:150px;display:grid;place-items:center;margin:8px 0;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:radial-gradient(circle at center,rgba(57,96,126,.16),rgba(3,9,16,.72) 66%)}
.creatorPreviewOrb{width:92px;height:92px;display:grid;place-items:center;border-radius:50%;background:#f2c86b;overflow:hidden}
.creatorPreviewOrb img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.creatorLivePreview>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-primary);font:var(--gui-font-title)}
.creatorLivePreview>small{display:block;margin-top:4px;color:var(--gui-text-secondary);font:var(--gui-font-micro)}
.creatorIdentityFields textarea{min-height:92px;resize:vertical}.creatorFieldNote{display:block;margin-top:5px;color:var(--gui-text-disabled);font:var(--gui-font-micro);line-height:1.4}
.creatorColorRow{display:flex;align-items:center;gap:10px}.creatorColorRow>input[type=color]{width:52px;min-width:52px;height:42px;padding:3px}
.creatorPalette{display:flex;flex-wrap:wrap;gap:6px}.creatorPalette button{width:32px;min-width:32px;height:32px;padding:0;border-radius:50%;background:var(--swatch);border-color:rgba(255,255,255,.16);box-shadow:inset 0 0 0 2px rgba(0,0,0,.25)}
.creatorPalette button:hover,.creatorPalette button:focus-visible{transform:scale(1.08);border-color:var(--gui-cyan-bright)}
.creatorArtwork,.creatorDrafts{margin-top:12px;padding:12px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-md);background:rgba(4,15,25,.45)}
.creatorSectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.creatorSectionHead b{display:block;margin-top:3px;color:var(--gui-text-primary);font:var(--gui-font-label);letter-spacing:.055em}.creatorSectionHead small{color:var(--gui-text-disabled);font:var(--gui-font-micro);text-align:right}
.creatorArtTabs{display:flex;gap:6px;overflow-x:auto;margin-top:10px;padding-bottom:2px;scrollbar-width:none}.creatorArtTabs::-webkit-scrollbar{display:none}.creatorArtTabs button{flex:0 0 auto;min-height:34px;padding:0 11px;border-radius:var(--gui-radius-pill);border-color:var(--gui-divider);background:rgba(5,17,28,.68);font:var(--gui-font-micro)}.creatorArtTabs button.active{border-color:var(--gui-cyan-interactive);background:var(--gui-selected);color:var(--gui-cyan-bright)}
.creatorArtPanel{margin-top:9px;padding:10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm);background:rgba(3,11,19,.65)}.creatorArtPanel[hidden]{display:none!important}.creatorArtPanel p{margin:0;color:var(--gui-text-secondary);font:var(--gui-font-caption);line-height:1.45}
.creatorUploadLayout,.creatorPixelLayout{display:grid;grid-template-columns:132px minmax(0,1fr);gap:12px;align-items:start}
#creatorUploadPreview{width:132px;height:132px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);background:#0d1620;image-rendering:pixelated}
#creatorArtFile{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.creatorFileButton{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 12px;border:1px solid var(--gui-border);border-radius:var(--gui-radius-sm);background:var(--gui-panel-secondary);color:var(--gui-text-primary);font:var(--gui-font-label);cursor:pointer}
.creatorPixelLayout{grid-template-columns:minmax(180px,224px) minmax(0,1fr)}#creatorPixelCanvas{width:224px;height:224px;max-width:100%;aspect-ratio:1;border:1px solid var(--gui-border-strong);border-radius:var(--gui-radius-sm);background:linear-gradient(45deg,#0d1620 25%,#152330 25% 50%,#0d1620 50% 75%,#152330 75%);background-size:28px 28px;image-rendering:pixelated;touch-action:none;cursor:crosshair}
.creatorPixelTools{display:grid;gap:9px}.creatorPixelTools>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px}.creatorPixelTools label{color:var(--gui-text-secondary);font:var(--gui-font-label)}.creatorPixelTools input[type=color]{width:54px;height:40px;padding:3px}.creatorPixelButtons{display:flex;flex-wrap:wrap;gap:6px}.creatorPixelButtons button{flex:1 1 80px}.creatorPixelButtons button.active{border-color:var(--gui-warning);color:var(--gui-warning);background:rgba(57,39,18,.52)}
.creatorArtStatus{margin-top:8px;color:var(--gui-text-disabled);font:var(--gui-font-micro);letter-spacing:.045em}
.creatorDraftActions{display:flex;gap:7px;margin-top:9px}.creatorDraftActions button{flex:1 1 0;min-height:38px}.creatorDraftList{display:grid;gap:5px;margin-top:8px}.creatorDraftList>span{padding:10px;color:var(--gui-text-disabled);font:var(--gui-font-micro);text-align:center}.creatorDraftRow{display:grid;grid-template-columns:minmax(0,1fr) 38px;gap:5px}.creatorDraftRow>button:first-child{min-width:0;display:block;padding:8px 10px;text-align:left}.creatorDraftRow b,.creatorDraftRow span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.creatorDraftRow b{color:var(--gui-text-primary);font:var(--gui-font-label)}.creatorDraftRow span{margin-top:3px;color:var(--gui-text-disabled);font:var(--gui-font-micro)}.creatorDraftRow>button:last-child{padding:0;font-size:1rem}
.summaryMassBody{position:relative;overflow:hidden}.summaryMassArt{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.summaryLegacyMessage{grid-column:1/-1!important}
.summaryLegacyMessage blockquote,.reviewLegacy blockquote,.founderLegacySection blockquote,.inspectorFounderLegacy blockquote{margin:6px 0 0;padding:10px 12px;border-left:2px solid var(--gui-cyan-interactive);background:rgba(11,31,45,.5);color:var(--gui-text-primary);font:var(--gui-font-body);line-height:1.5;white-space:pre-wrap}
.reviewHeroArt{width:54px;height:54px;float:left;margin-right:10px;border:1px solid var(--gui-border);border-radius:50%;object-fit:cover;image-rendering:pixelated}.reviewLegacy{grid-column:1/-1;padding:10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-sm)}.reviewLegacy>span,.inspectorFounderLegacy>span{color:var(--gui-cyan-ambient);font:var(--gui-font-micro);letter-spacing:.065em}
.founderLegacySection blockquote{margin:0}.inspectorFounderLegacy{margin:10px 0;padding:10px 11px;border:1px solid rgba(105,202,242,.19);border-radius:var(--gui-radius-sm);background:rgba(6,22,34,.58)}
@media (max-width:720px){.creatorIdentityLayout{grid-template-columns:1fr}.creatorLivePreview{display:grid;grid-template-columns:92px minmax(0,1fr);column-gap:12px;align-items:center}.creatorLivePreview>span{grid-column:1/-1}.creatorPreviewStage{grid-row:2/4;height:92px;margin:8px 0}.creatorPreviewOrb{width:72px;height:72px}.creatorUploadLayout,.creatorPixelLayout{grid-template-columns:1fr}#creatorUploadPreview{width:108px;height:108px}#creatorPixelCanvas{width:min(224px,100%)}}


/* ============================================================================
   V10.8 · Galaxy Navigation / Wayfinding
   ============================================================================ */
.minimapAddressRow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 1px 2px}
.minimapAddressRow b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-cyan-bright);font:var(--gui-font-label);letter-spacing:.06em}
.minimapAddressRow span{flex:0 0 auto;color:var(--gui-text-disabled);font:var(--gui-font-micro);font-variant-numeric:tabular-nums}
.minimapShortcuts{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:7px}
.minimapShortcuts button{min-width:0;min-height:31px;padding:0 5px;font:var(--gui-font-micro);letter-spacing:.045em}
.minimapShortcuts button:disabled{opacity:.35}
.minimapLegend{display:flex;flex-wrap:wrap;gap:5px 10px;margin-top:8px;padding-top:7px;border-top:1px solid var(--gui-divider)}
.minimapLegend span{display:inline-flex;align-items:center;gap:5px;color:var(--gui-text-disabled);font:var(--gui-font-micro);font-size:.55rem;letter-spacing:.035em}
.minimapLegend i{width:8px;height:8px;display:inline-block;border-radius:50%;border:1px solid currentColor}
.minimapLegend i.viewport{border-radius:1px;color:#8be8ff;background:rgba(106,220,255,.12)}
.minimapLegend i.selected{color:#f0fbff}
.minimapLegend i.following{color:#8effb8;transform:rotate(45deg);border-radius:1px}
.minimapLegend i.mine{color:#62c9ec;background:#62c9ec}
.minimapLegend i.core{color:#a89de8;background:#02060b}
.gui-search-hints{display:flex;gap:5px;overflow-x:auto;margin-top:7px;padding-bottom:1px;scrollbar-width:none}
.gui-search-hints::-webkit-scrollbar{display:none}
.gui-search-hints button{flex:0 0 auto;min-height:29px;padding:0 8px;border-radius:var(--gui-radius-pill);border-color:var(--gui-divider);background:rgba(5,17,28,.58);color:var(--gui-text-disabled);font:var(--gui-font-micro);letter-spacing:.045em}
.gui-search-hints button:hover,.gui-search-hints button:focus-visible{color:var(--gui-cyan-bright);border-color:var(--gui-border-strong)}
.gui-search-result{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px;border:1px solid var(--gui-divider);border-radius:var(--gui-radius-md);background:rgba(5,17,28,.72)}
.gui-search-result.is-legacy{opacity:.72;background:rgba(22,18,30,.62)}
.gui-search-result>.resultOrb{width:34px;height:34px;border-radius:50%;box-shadow:0 0 12px currentColor}
.gui-search-result-copy{min-width:0}
.gui-search-result-copy>div{display:flex;align-items:center;gap:6px;min-width:0}
.gui-search-result-copy b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-text-primary);font:var(--gui-font-label)}
.gui-search-result-copy em{flex:0 0 auto;padding:2px 5px;border:1px solid rgba(126,226,180,.24);border-radius:var(--gui-radius-pill);color:var(--gui-success);font:var(--gui-font-micro);font-size:.54rem;font-style:normal}
.gui-search-result.is-legacy .gui-search-result-copy em{border-color:rgba(177,154,211,.25);color:#cbbce6}
.gui-search-result-copy>span{display:block;margin-top:3px;color:var(--gui-text-secondary);font:var(--gui-font-caption)}
.gui-search-result-copy small{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gui-cyan-ambient);font:var(--gui-font-micro)}
.gui-search-result-actions{display:flex;gap:5px}
.gui-search-result-actions button{min-height:34px;padding:0 9px;font:var(--gui-font-micro)}
