@font-face { font-family:"Barlow Condensed"; font-style:normal; font-weight:500; font-display:swap; src:url("../../assets/fonts/barlow-condensed-500.woff2") format("woff2"); }
@font-face { font-family:"Barlow Condensed"; font-style:normal; font-weight:700; font-display:swap; src:url("../../assets/fonts/barlow-condensed-700.woff2") format("woff2"); }
@font-face { font-family:"Barlow Condensed"; font-style:normal; font-weight:800; font-display:swap; src:url("../../assets/fonts/barlow-condensed-800.woff2") format("woff2"); }
@font-face { font-family:"Orbitron"; font-style:normal; font-weight:700; font-display:swap; src:url("../../assets/fonts/orbitron-700.woff2") format("woff2"); }
@font-face { font-family:"Roboto Slab"; font-style:normal; font-weight:400; font-display:swap; src:url("../../assets/fonts/roboto-slab-400.woff2") format("woff2"); }
@font-face { font-family:"Roboto Slab"; font-style:normal; font-weight:700; font-display:swap; src:url("../../assets/fonts/roboto-slab-700.woff2") format("woff2"); }
@font-face { font-family:"Michroma"; font-style:normal; font-weight:400; font-display:swap; src:url("../../assets/fonts/michroma-regular.ttf") format("truetype"); }

:root {
  /* Palette unified with the approved Master Card Editor (app/card-editor). */
  --pf-ui-font:"Michroma","Rajdhani",system-ui,sans-serif;
  --pf-card-font:"Barlow Condensed",Arial,sans-serif;
  --pf-bg-deep:#03080c;
  --pf-bg-space:#061017;
  --pf-bg-panel:#08131d;
  --pf-bg-panel-strong:#0d1b25;
  --pf-metal-black:#060b0f;
  --pf-metal-dark:#16252d;
  --pf-metal-mid:#344750;
  --pf-metal-light:#8b98a1;
  --pf-steel-edge:#243b4a;
  --pf-paper:#e9dfcd;
  --pf-paper-worn:#d6c9ae;
  --pf-text-light:#dce9ed;
  --pf-text-dark:#14191b;
  --pf-text-muted:#8fa8b5;
  --pf-blue:#1595ff;
  --pf-blue-bright:#5cc1ff;
  --pf-green:#48c76c;
  --pf-red:#ec4c44;
  --pf-purple:#bb55da;
  --pf-amber:#e5b14a;
  --pf-rust:#835136;
  --pf-leather:#5c402d;
  --pf-alien-crystal:#6bc8ca;
  --pf-serif:"Roboto Slab",Georgia,"Times New Roman",serif;
  --pf-shadow:#000b;
  --z-bg:0;
  --z-atmosphere:1;
  --z-board:3;
  --z-header:6;
  --z-panel:8;
  --z-modal:12;
  /* Canvas-local layers (inside the #board-canvas stacking context created by its
     transform): 1 = market artwork (lane plates, pile grid), 2 = conduit routes
     and stations (stations sit later in the DOM so they still cap the route ends),
     3 = local station. */
  --z-canvas-conduit:0;
  --table-tilt:31deg;
  --table-perspective:3600px;
}
body.flat-view { --table-tilt:0deg; }
body.flat-view .table-surface { opacity:0; }

* { box-sizing:border-box; }
html { min-height:100%; background:var(--pf-bg-deep); }
body {
  min-height:100vh;
  margin:0;
  overflow:hidden;
  color:var(--pf-text-light);
  background:
    radial-gradient(ellipse at 50% 19%,#153d6920 0,transparent 34rem),
    radial-gradient(ellipse at 50% 82%,#e5b14a0d 0,transparent 32rem),
    linear-gradient(180deg,#000106 0,#020911 52%,#000106 100%);
  font:400 14px/1.48 var(--pf-ui-font);
  letter-spacing:0;
  user-select:none;
  -webkit-user-select:none;
}
.game-board {
  position:relative;
  min-height:100vh;
  overflow:hidden;
}
body::before {
  content:"";
  position:fixed;
  inset:0;
  z-index:var(--z-atmosphere);
  pointer-events:none;
  background:
    radial-gradient(ellipse at 50% 48%,transparent 0 30rem,#0104074f 56rem),
    linear-gradient(180deg,#0103082b,#01040778);
}
body::after {
  content:"";
  position:fixed;
  inset:0;
  z-index:var(--z-atmosphere);
  pointer-events:none;
  background-image:
    radial-gradient(circle,#fff 0 1px,transparent 1.7px),
    radial-gradient(circle,#8fdfff 0 1px,transparent 1.5px),
    radial-gradient(circle,#ffffff88 0 .7px,transparent 1.2px);
  background-size:92px 92px,164px 164px,46px 46px;
  background-position:12px 18px,70px 42px,4px 6px;
  opacity:.2;
  mix-blend-mode:screen;
}
.market-piles,
.owned-card-grid,
.preview-panel,
.inspection-dialog {
  scrollbar-width:thin;
  scrollbar-color:#2c4a5e #050d13;
}
.market-piles::-webkit-scrollbar,
.owned-card-grid::-webkit-scrollbar,
.preview-panel::-webkit-scrollbar,
.inspection-dialog::-webkit-scrollbar { width:8px; height:8px; }
.market-piles::-webkit-scrollbar-track,
.owned-card-grid::-webkit-scrollbar-track,
.preview-panel::-webkit-scrollbar-track,
.inspection-dialog::-webkit-scrollbar-track { background:#050d13; }
.market-piles::-webkit-scrollbar-thumb,
.owned-card-grid::-webkit-scrollbar-thumb,
.preview-panel::-webkit-scrollbar-thumb,
.inspection-dialog::-webkit-scrollbar-thumb {
  border:1px solid #12242f;
  border-radius:4px;
  background:linear-gradient(180deg,#33566c,#1d3542);
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
}
button,
select,
input,
.menu-exit { font:inherit; }
img,
.mini-card,
.owned-stack,
.portrait-card,
.landmark,
.station,
.market-console,
.local-station {
  user-select:none;
  -webkit-user-select:none;
  -webkit-user-drag:none;
}
.rules-surface,
.inspection-dialog,
.preview-panel {
  user-select:text;
  -webkit-user-select:text;
}
button,
select,
.menu-exit {
  color:var(--pf-text-light);
  border:1px solid #315568;
  border-radius:6px;
  background:linear-gradient(180deg,#102a38,#07131b);
  box-shadow:inset 0 1px #ffffff14,0 2px 4px #0008;
  transition:border-color 140ms ease,background 140ms ease,box-shadow 140ms ease,transform 100ms ease;
}
button {
  min-height:34px;
  padding:6px 12px;
  cursor:pointer;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.menu-exit {
  display:inline-grid;
  min-height:34px;
  padding:6px 12px;
  place-items:center;
  text-decoration:none;
  text-transform:uppercase;
  letter-spacing:.06em;
}
button:hover,
.menu-exit:hover { border-color:var(--pf-blue); background:linear-gradient(180deg,#14364a,#0b1d29); box-shadow:inset 0 1px #ffffff1c,0 0 10px #1595ff3d,0 2px 4px #0008; }
button:active { transform:translateY(1px); }
button:disabled {
  cursor:not-allowed;
  opacity:.48;
  filter:saturate(.45);
  box-shadow:inset 0 1px #ffffff0d;
}
.station-toolbar button:disabled:hover,
.roll-dice-button:disabled:hover {
  border-color:#315568;
  background:linear-gradient(180deg,#102a38,#07131b);
  box-shadow:inset 0 1px #ffffff14,0 2px 4px #0008;
}
.menu-exit:active { transform:translateY(1px); }
button:focus-visible,
select:focus-visible,
input:focus-visible,
.menu-exit:focus-visible,
.pile-button:focus-visible,
.station:focus-visible,
.landmark:focus-visible { outline:2px solid var(--pf-blue); outline-offset:3px; }

.space-video {
  position:fixed;
  inset:0;
  z-index:var(--z-bg);
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.76;
  filter:saturate(1.04) contrast(1.16) brightness(.7);
  pointer-events:none;
  transform:scale(1.01);
}
.space-atmosphere {
  position:fixed;
  inset:0;
  z-index:var(--z-atmosphere);
  pointer-events:none;
  background-image:
    radial-gradient(circle,#ffffffd8 0 1px,transparent 1.6px),
    radial-gradient(circle,#6bc8caaa 0 1px,transparent 1.4px);
  background-size:150px 150px,230px 230px;
  opacity:.075;
  animation:star-drift 28s linear infinite;
}
body.effects-off .space-video,
body.effects-off .space-atmosphere,
body.effects-off::after { display:none; }

.metal-frame {
  position:relative;
  border:1px solid #47606d;
  background:
    linear-gradient(135deg,#ffffff0d,#ffffff00 18%),
    linear-gradient(145deg,var(--pf-bg-panel-strong),var(--pf-bg-panel) 58%,#050d13);
  box-shadow:
    inset 0 1px #ffffff1f,
    inset 0 0 0 1px #02080c,
    inset 0 0 0 2px #243b4a66,
    inset 0 -14px 22px #0006,
    0 0 0 1px #02070c,
    0 0 20px #1595ff12,
    0 10px 18px var(--pf-shadow);
}
.metal-frame::before,
.metal-frame::after {
  content:"";
  position:absolute;
  pointer-events:none;
}
.metal-frame::before {
  inset:5px;
  border:1px solid #1f3b4a;
}
.metal-frame::after {
  inset:0;
  background:
    linear-gradient(90deg,transparent 0 10%,#e9dfcd20 10.5%,transparent 11% 89%,#e9dfcd18 89.5%,transparent 90%),
    radial-gradient(circle at 12px 12px,#8b98a1 0 2px,#02070c 2.4px 4px,transparent 4.2px),
    radial-gradient(circle at calc(100% - 12px) 12px,#8b98a1 0 2px,#02070c 2.4px 4px,transparent 4.2px),
    radial-gradient(circle at 12px calc(100% - 12px),#8b98a1 0 2px,#02070c 2.4px 4px,transparent 4.2px),
    radial-gradient(circle at calc(100% - 12px) calc(100% - 12px),#8b98a1 0 2px,#02070c 2.4px 4px,transparent 4.2px);
  opacity:.72;
}

.top-command {
  position:fixed;
  top:12px;
  left:12px;
  right:12px;
  z-index:var(--z-header);
  display:grid;
  grid-template-columns:minmax(260px,1fr) auto;
  gap:14px;
  align-items:center;
  min-height:76px;
  padding:12px 16px;
  background:
    linear-gradient(135deg,#ffffff10,#ffffff00 18%),
    linear-gradient(145deg,#102838,#0b1923 58%,#050d13);
  transition:transform 220ms cubic-bezier(.22,1,.36,1),opacity 180ms ease;
}
body.top-command-hidden .top-command {
  opacity:0;
  pointer-events:none;
  transform:translateY(-118%);
}
.show-top-command {
  position:fixed;
  right:16px;
  top:16px;
  z-index:calc(var(--z-header) + 1);
  min-height:36px;
  padding:7px 12px;
  border-color:#315568;
  opacity:0;
  pointer-events:none;
  transform:translateY(-12px);
  transition:opacity 180ms ease,transform 180ms ease;
}
body.top-command-hidden .show-top-command {
  opacity:1;
  pointer-events:auto;
  transform:translateY(0);
}
.brand-block {
  display:flex;
  align-items:center;
  gap:12px;
}
.status-light {
  width:22px;
  height:58px;
  border:1px solid #5abfea;
  background:linear-gradient(#6bc8ca,#1595ff 45%,#082336);
  box-shadow:0 0 16px #1595ff,inset 0 0 10px #ffffff55;
}
.system-label,
.station-label,
.lane-label,
.preview-kicker {
  margin:0;
  color:var(--pf-blue);
  font:700 .74rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
h1 {
  margin:3px 0 0;
  color:#f5f2e9;
  font:800 1.72rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.045em;
  text-transform:uppercase;
  text-shadow:0 2px #000,0 0 10px #1595ff66;
}
.turn-tracker {
  display:grid;
  grid-template-columns:minmax(320px,1fr) 386px;
  gap:12px;
  align-items:center;
}
.turn-readout {
  min-width:150px;
  padding:12px 14px;
  border:2px solid #f8df5b;
  background:linear-gradient(145deg,#3b2b04,#07131de8 58%,#03080c);
  box-shadow:inset 0 0 0 1px #fff6a333,inset 0 0 22px #ffd90055,0 0 18px #ffd90075;
}
.turn-readout strong {
  display:block;
  color:#fff;
  font-size:2rem;
  line-height:1;
  letter-spacing:.04em;
  text-transform:uppercase;
  text-shadow:0 2px #000,0 0 16px #fff06a;
}
.turn-readout span {
  display:block;
  margin-top:4px;
  color:var(--pf-text-muted);
  font-size:.8rem;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.turn-countdown {
  color:#fff35f !important;
  font:800 1.12rem/1 "Barlow Condensed",Arial,sans-serif;
  text-shadow:0 0 12px #ffd900;
}
.turn-readout em {
  display:block;
  margin-top:6px;
  color:#dfeef4;
  font-size:.88rem;
  font-style:normal;
  letter-spacing:.02em;
}
.phase-tabs {
  display:grid;
  grid-template-columns:repeat(4,92px);
  gap:7px;
}
.phase-tab {
  display:block;
  min-height:38px;
  padding:7px 8px;
  border:1px solid #253f4d;
  border-radius:0;
  background:#07121ae8;
  color:#c4d3d9;
  text-align:center;
  font-weight:800;
  letter-spacing:.07em;
  cursor:pointer;
  white-space:nowrap;
  clip-path:polygon(7px 0,calc(100% - 7px) 0,100% 50%,calc(100% - 7px) 100%,7px 100%,0 50%);
}
.phase-tab:hover {
  color:#fff;
  border-color:var(--pf-blue);
  background:linear-gradient(180deg,#123043,#0a1822);
}
.phase-tab.active {
  color:#ffffff;
  border-color:#fff35f;
  background:linear-gradient(180deg,#8a6b00,#2f2403 42%,#07131b);
  box-shadow:inset 0 -3px #fff35f,inset 0 0 20px #ffd90088,0 0 18px #ffd90088;
}
.board-controls {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:8px;
}
.board-controls label {
  display:flex;
  align-items:center;
  gap:6px;
  color:var(--pf-text-muted);
  text-transform:uppercase;
  letter-spacing:.055em;
}
.board-controls select { min-width:64px; min-height:34px; padding:4px 8px; }
.icon-command {
  min-height:34px;
  padding:6px 11px;
}
#sound-toggle[aria-pressed="false"],
#dice-sound-toggle[aria-pressed="false"],
#logging-toggle[aria-pressed="false"] {
  color:#f6a06c;
  border-color:#7a4326;
  background:linear-gradient(180deg,#2a1710,#160b07);
}
.icon-command:disabled {
  opacity:.45;
  cursor:not-allowed;
}
.effects-toggle input { accent-color:var(--pf-blue); }
.view-switch,
.annotation-zoom {
  display:inline-flex;
  gap:4px;
  padding:4px;
  border:1px solid #27475a;
  background:#061017d9;
}
.annotation-zoom {
  border-color:#5c4a22;
  background:#120f08d9;
}
.view-button {
  min-height:30px;
  padding:5px 10px;
  border:1px solid transparent;
  border-radius:3px;
  background:transparent;
  color:#9fb8c4;
  font-weight:800;
  letter-spacing:.055em;
  text-transform:uppercase;
  cursor:pointer;
}
.view-button:hover,
.view-button:focus-visible {
  color:#fff;
  border-color:#315568;
}
.view-button.active {
  color:#f7f1df;
  border-color:#e5b14a99;
  background:linear-gradient(180deg,#483214,#101b22);
  box-shadow:inset 0 0 0 1px #02070c,0 0 8px #e5b14a33;
}

.viewport-shell {
  position:fixed;
  inset:0;
  z-index:var(--z-board);
  padding-top:104px;
  transition:padding-top 220ms cubic-bezier(.22,1,.36,1);
}
body.top-command-hidden .viewport-shell { padding-top:0; }
.board-viewport {
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  cursor:default;
  touch-action:none;
  perspective:var(--table-perspective);
  perspective-origin:50% 8%;
}
.board-viewport.dragging { cursor:default; }
.table-surface {
  position:absolute;
  left:50%;
  top:50%;
  width:2260px;
  height:1560px;
  margin:-780px 0 0 -1130px;
  transform:translate(var(--pan-x, 0px),var(--pan-y, 28px)) scale(var(--zoom, .78)) rotateX(var(--table-tilt));
  transform-origin:center;
  border-radius:0;
  border:0;
  background:
    radial-gradient(ellipse at 50% 44%,#1595ff18 0,transparent 34%),
    radial-gradient(ellipse at 50% 50%,transparent 0 45%,#6bc8ca24 46% 46.4%,transparent 47%),
    radial-gradient(ellipse at 50% 50%,transparent 0 57%,#e5b14a1f 57.6% 58%,transparent 59%);
  box-shadow:none;
  transition:opacity 220ms ease;
  pointer-events:none;
}
.board-canvas {
  position:absolute;
  left:50%;
  top:50%;
  width:1860px;
  height:1160px;
  margin:-580px 0 0 -930px;
  transform:translate(var(--pan-x, 0px),var(--pan-y, 28px)) scale(var(--zoom, .78)) rotateX(var(--table-tilt));
  transform-origin:center;
  transform-style:preserve-3d;
  transition:transform 140ms cubic-bezier(.22,1,.36,1);
  filter:drop-shadow(0 28px 34px #000c) drop-shadow(0 0 34px #1595ff20);
}
.board-view-command .opponent-ring .station {
  opacity:.18;
  /* Was pointer-events:none, which made opponent stations completely
     ungrabbable in the default view. They stay dimmed, but can be dragged. */
  pointer-events:auto;
  filter:saturate(.65) brightness(.72);
}
/* Whatever is being dragged is shown at full strength, reusing the same
   treatment the card-flight focus already uses, so you can see what you are
   moving even in the dimmed Command View. */
.board-view-command .opponent-ring .station.station-dragging {
  opacity:1;
  filter:none;
}
.board-view-command .opponent-ring .station.pf-card-flight-focus {
  opacity:1;
  filter:none;
  pointer-events:none;
}
.board-view-players .opponent-ring .station {
  opacity:1;
  pointer-events:auto;
  filter:none;
}
.board-viewport.dragging .board-canvas,
.board-viewport.dragging .table-surface { transition:none; }
.board-canvas::after {
  display:none;
}
body:not(.flat-view) .market-console,
body:not(.flat-view) .market-row,
body:not(.flat-view) .market-piles,
body:not(.flat-view) .opponent-ring,
body:not(.flat-view) .local-station,
body:not(.flat-view) .local-stacks,
body:not(.flat-view) .owned-card-grid,
body:not(.flat-view) .owned-stack {
  transform-style:preserve-3d;
}
.orbital-ring {
  position:absolute;
  border:1px solid #6bc8ca28;
  border-radius:50%;
  pointer-events:none;
  opacity:.42;
}
.conduit-layer {
  position:absolute;
  inset:0;
  z-index:var(--z-canvas-conduit);
  width:100%;
  height:100%;
  overflow:visible;
  pointer-events:none;
}

.market-console { z-index:2; }
.opponent-ring { z-index:3; }
.local-station { z-index:4; }
.conduit-base {
  fill:none;
  stroke:#16303c;
  stroke-width:9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.conduit-core {
  fill:none;
  stroke:color-mix(in srgb,var(--pf-blue) 64%,#0d1d29);
  stroke-width:3;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.conduit-flow {
  fill:none;
  stroke:var(--pf-blue-bright);
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round;
  stroke-dasharray:4 30;
  opacity:.5;
  animation:conduit-flow 3.1s linear infinite;
}
.conduit-node {
  fill:#0a1620;
  stroke:#3a5464;
  stroke-width:1.6;
}
.conduit-node.lit {
  stroke:color-mix(in srgb,var(--pf-blue) 78%,#dce9ed);
  filter:drop-shadow(0 0 4px #1595ff88);
}
.conduit-route.active .conduit-core { stroke:color-mix(in srgb,var(--pf-amber) 62%,#1a1408); }
.conduit-route.active .conduit-flow { stroke:#f0c66c; opacity:.8; animation-duration:2.1s; }
.conduit-route.active .conduit-node.lit {
  stroke:var(--pf-amber);
  filter:drop-shadow(0 0 5px #e5b14a99);
}
body.effects-off .conduit-flow { animation:none; opacity:.16; }
.credit-animation-layer {
  position:fixed;
  inset:0;
  z-index:13;
  width:100vw;
  height:100vh;
  overflow:visible;
  pointer-events:none;
}
.credit-flow {
  pointer-events:none;
  filter:drop-shadow(0 0 10px #e5b14a7a) drop-shadow(0 4px 7px #000a);
}
.credit-flow-path {
  fill:none;
  stroke:#e5b14a;
  stroke-width:4.6;
  stroke-linecap:round;
  stroke-dasharray:10 16;
  opacity:.62;
  animation:credit-path-glow 5200ms cubic-bezier(.22,1,.36,1) forwards;
}
.credit-flow-coin {
  transition:opacity 120ms ease;
}
.credit-flow-coin circle:first-child {
  fill:#f1bf46;
  stroke:#fff1b8;
  stroke-width:1.8;
}
.credit-flow-coin-shine {
  fill:#fff6cc;
  opacity:.72;
  stroke:none;
}
.credit-flow-coin-mark {
  fill:#5c402d;
  font:800 8px/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:0;
  paint-order:stroke;
  stroke:#f8dc78;
  stroke-width:.7;
}
.credit-flow-amount {
  fill:#fff6b0;
  font:800 20px/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.06em;
  paint-order:stroke;
  stroke:#2a1b04;
  stroke-width:4px;
  text-transform:uppercase;
  filter:drop-shadow(0 0 8px #ffd900);
  transition:opacity 120ms ease;
}
.credit-flow-gain .credit-flow-path { stroke:#65d985; }
.credit-flow-blue .credit-flow-path { stroke:#4fa9f2; }
.credit-flow-steal .credit-flow-path,
.credit-flow-red .credit-flow-path { stroke:#ec4c44; }
.credit-flow-purple .credit-flow-path { stroke:#bb55da; }
.credit-flow-loss .credit-flow-path {
  stroke:#fff35f;
  stroke-width:4.2;
  opacity:.78;
}
.credit-float-label {
  position:fixed;
  z-index:14;
  transform:translate(-50%,-50%);
  pointer-events:none;
  min-width:38px;
  padding:4px 9px;
  border:1px solid #f0c66c;
  color:#fff7e4;
  background:linear-gradient(145deg,#2f2514,#07121a);
  box-shadow:inset 0 0 0 1px #02070c,0 0 13px #e5b14a66,0 6px 9px #000b;
  font:800 1.15rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-align:center;
  text-shadow:0 1px #000;
  clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);
  animation:credit-label-rise 2760ms cubic-bezier(.22,1,.36,1) forwards;
}
.credit-float-label.gain {
  border-color:#65d985;
  box-shadow:inset 0 0 0 1px #02070c,0 0 13px #48c76c77,0 6px 9px #000b;
}
.credit-float-label.steal,
.credit-float-label.red {
  border-color:#ec4c44;
  box-shadow:inset 0 0 0 1px #02070c,0 0 13px #ec4c4477,0 6px 9px #000b;
}
.credit-float-label.purple {
  border-color:#bb55da;
  box-shadow:inset 0 0 0 1px #02070c,0 0 13px #bb55da77,0 6px 9px #000b;
}
.credit-float-label.blue {
  border-color:#4fa9f2;
  box-shadow:inset 0 0 0 1px #02070c,0 0 13px #4fa9f277,0 6px 9px #000b;
}
.credit-float-label.loss {
  color:#f6dfad;
  opacity:.94;
}
.activation-card-label {
  position:fixed;
  z-index:15;
  transform:translate(-50%,-50%);
  pointer-events:none;
  padding:5px 14px;
  border:1px solid #ec4c44;
  color:#fff7e4;
  background:linear-gradient(145deg,#2f1414,#07090c);
  box-shadow:inset 0 0 0 1px #02070c,0 0 16px #ec4c4488,0 6px 9px #000b;
  font:800 1rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.06em;
  text-align:center;
  text-transform:uppercase;
  text-shadow:0 1px #000;
  white-space:nowrap;
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
  animation:credit-label-rise 13600ms cubic-bezier(.22,1,.36,1) forwards;
}
.activation-card-label.purple {
  border-color:#bb55da;
  box-shadow:inset 0 0 0 1px #02070c,0 0 16px #bb55da88,0 6px 9px #000b;
}
.ring-one { inset:90px 210px 110px; transform:rotate(-8deg); }
.ring-two { inset:180px 350px 210px; transform:rotate(12deg); border-color:#bb55da22; }

.market-console {
  position:absolute;
  left:330px;
  top:80px;
  width:1200px;
  min-height:486px;
  padding:26px 30px 30px;
  background:
    radial-gradient(ellipse at 50% 35%,#1595ff16 0,transparent 50%),
    linear-gradient(180deg,#0817238f,#04090d24 74%,transparent);
  border-color:transparent;
  box-shadow:none;
}
.market-console::before {
  display:none;
}
.market-header {
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin:0 0 16px;
  padding:0 8px 12px;
}
.market-header::after {
  content:"";
  position:absolute;
  left:6px;
  right:6px;
  bottom:0;
  height:2px;
  background:linear-gradient(90deg,transparent,#1595ff77 14% 86%,transparent);
  box-shadow:0 0 9px #1595ff4d;
}
.market-title {
  margin:0;
  color:#f3efe6;
  font:800 1.5rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.market-subtitle {
  color:var(--pf-text-muted);
  font-size:.85rem;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.market-row {
  position:relative;
  display:grid;
  grid-template-columns:118px minmax(0,1fr);
  gap:12px;
  align-items:center;
  min-height:128px;
  margin:12px 0;
  padding:13px 14px;
  border:1px solid transparent;
  background:
    linear-gradient(90deg,#09172280,#0a172032 42%,transparent),
    radial-gradient(ellipse at 50% 0,#1595ff1c 0,transparent 46%);
  box-shadow:none;
}
.market-row::before {
  content:"";
  position:absolute;
  left:124px;
  right:12px;
  top:50%;
  height:12px;
  transform:translateY(-50%);
  border-top:1px solid #33506088;
  border-bottom:1px solid #33506088;
  background:
    linear-gradient(180deg,transparent 0 5px,color-mix(in srgb,var(--pf-blue) 62%,#0a1824) 5px 7px,transparent 7px),
    linear-gradient(180deg,#0d1c2666,#08121a88);
  box-shadow:0 0 12px #1595ff20,inset 0 1px #ffffff08;
  opacity:.72;
}
.market-row::after {
  content:"";
  position:absolute;
  left:124px;
  right:12px;
  top:calc(50% - 1px);
  height:2px;
  background:linear-gradient(90deg,transparent,#5cc1ffb8 18% 82%,transparent);
  mix-blend-mode:screen;
  opacity:.34;
  animation:conduit-dash 3.4s linear infinite;
}
body.effects-off .market-row::after { animation:none; opacity:.18; }
.lane-plate {
  position:relative;
  z-index:1;
  display:grid;
  min-height:108px;
  place-items:center;
  padding:14px 11px;
  border:1px solid #8397a0;
  background:
    linear-gradient(#06101705,#06101722),
    url("../../assets/derived/cards/backs/card-back-v1@256.webp") center/cover no-repeat;
  box-shadow:inset 0 0 0 2px #02070c,inset 0 0 0 5px #38525f,0 6px 9px #000b,0 0 18px #1595ff56;
  overflow:hidden;
}
.lane-plate::before {
  content:"";
  position:absolute;
  inset:8px;
  border:1px solid #516873;
  background:transparent;
  box-shadow:inset 0 0 0 1px #02070c,inset 0 0 12px #000b;
}
.lane-plate::after {
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 12%,#1595ff28 0,transparent 30%),linear-gradient(120deg,#ffffff1f,transparent 24%,#0002 74%);
  pointer-events:none;
}
.lane-plate > div {
  position:relative;
  z-index:1;
  display:grid;
  justify-items:center;
  gap:7px;
}
.lane-label {
  color:#ecf7fb;
  font-size:.9rem;
  text-align:center;
  text-shadow:0 2px #000,0 0 9px #1595ff66;
}
.lane-serial {
  display:inline-grid;
  min-width:76px;
  min-height:38px;
  place-items:center;
  padding:6px 10px;
  border:1px solid #84d4ff;
  color:#ffffff;
  background:linear-gradient(180deg,#0e354d,#050d13);
  box-shadow:inset 0 0 0 1px #02070c,0 0 14px #1595ff88;
  font:800 1.14rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.06em;
  text-shadow:0 1px #000;
  text-transform:uppercase;
}
.market-piles {
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(var(--piles-per-row),minmax(110px,1fr));
  gap:12px;
  overflow-x:auto;
  padding:7px 4px 9px;
}
.pile-button {
  position:relative;
  display:block;
  min-width:108px;
  height:100px;
  padding:0;
  border:0;
  background:transparent;
  color:inherit;
  cursor:pointer;
  transform-style:preserve-3d;
}
.market-empty-slot {
  display:block;
  min-width:108px;
  height:100px;
  pointer-events:none;
}
.bank-hub {
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:6;
}
.bank-hub-icon {
  position:absolute;
  left:50%;
  top:398px;
  width:132px;
  height:132px;
  transform:translate(-50%,-50%);
  border:3px solid #6b5225;
  border-radius:50%;
  background:
    radial-gradient(circle,#05090d 0 22px,transparent 23px),
    conic-gradient(from 18deg,#7a5c26,#342715,#8a6a2e,#4a3420,#7a5c26);
  box-shadow:inset 0 0 0 9px #05090d,0 0 12px #e5b14a3e,0 0 22px #e5b14a1e,0 8px 14px #0009;
  animation:bank-hub-pulse 4200ms ease-in-out infinite;
}
.bank-hub-label {
  position:absolute;
  left:calc(50% + 96px);
  right:362px;
  top:398px;
  display:grid;
  justify-items:start;
  padding:12px 18px;
  transform:translateY(-50%);
  overflow:hidden;
  border:1px solid var(--pf-amber);
  color:#f8f1e7;
  background:
    radial-gradient(circle at 18% 28%,#e5b14a2e,transparent 34%),
    linear-gradient(135deg,#ffffff12,#ffffff00 24%),
    linear-gradient(145deg,#312616,#07121a 64%,#03080c);
  box-shadow:inset 0 0 0 1px #02070c,inset 0 0 22px #e5b14a24,0 0 18px #e5b14a30,0 5px 8px #0009;
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
}
.bank-vault-kicker {
  color:var(--pf-amber);
  font:700 .64rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.bank-hub-label strong {
  margin-top:6px;
  color:#fff7e4;
  font:800 1.9rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.07em;
  text-transform:uppercase;
  text-shadow:0 2px #000,0 0 10px #e5b14a66;
}
.bank-hub-label span:last-child {
  margin-top:5px;
  color:#d6c9ae;
  font-size:.86rem;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.pile-button::before,
.pile-button::after {
  content:"";
  position:absolute;
  inset:12px 12px 6px;
  border:1px solid #384c55;
  background:linear-gradient(145deg,#15252d,#080e12);
  box-shadow:0 5px 7px #0009;
  transform:translate(-6px,-5px);
}
.pile-button::after { transform:translate(-3px,-2px); opacity:.85; }
.pile-button:hover .mini-card {
  transform:translateY(-7px) translateZ(22px) rotateX(calc(4deg + var(--tilt-x, 0deg))) rotateY(var(--tilt-y, 0deg));
  box-shadow:0 30px 26px -12px #000e,0 4px 6px #0008,0 0 16px color-mix(in srgb,var(--identity) 30%,transparent);
}
.pile-button.selected .mini-card {
  transform:translateY(-9px) translateZ(28px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
  box-shadow:0 0 0 1px var(--identity),0 0 16px color-mix(in srgb,var(--identity) 68%,transparent),0 32px 28px -12px #000e,0 8px 10px #000b;
}
.pile-button.selected::after {
  border-color:var(--identity);
  box-shadow:0 0 14px color-mix(in srgb,var(--identity) 68%,transparent);
}
.pile-button.pf-card-replacing .mini-card {
  box-shadow:0 0 18px #5cc1ff99,0 0 32px #1595ff55,0 26px 22px -12px #000e;
}
.pile-button.unaffordable { filter:saturate(.68) brightness(.72); }
.pile-button.disabled .mini-card::after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(115deg,transparent 0 42%,#e5b14a33 42.5% 45%,transparent 45.5% 100%);
}
.dock-plate {
  position:absolute;
  inset:9px 6px 0;
  display:grid;
  place-items:center;
  border:1px solid #344750;
  color:#8b98a1;
  background:
    radial-gradient(circle at 50% 20%,#ffffff0e,transparent 32%),
    linear-gradient(145deg,#15252d,#05090d);
  box-shadow:inset 0 0 0 2px #02070c,inset 0 0 22px #000;
  font:800 1rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.08em;
}
.mini-card {
  --identity:var(--pf-blue);
  position:absolute;
  inset:0 8px 0 14px;
  z-index:2;
  display:grid;
  grid-template-rows:16px 1fr 18px;
  overflow:hidden;
  border:1px solid #6d7e85;
  background:#07131d;
  box-shadow:0 6px 8px #000b;
  transform:rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
  transition:transform 160ms cubic-bezier(.22,1,.36,1),box-shadow 160ms ease;
}
.mini-card::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  border:2px solid color-mix(in srgb,var(--identity) 72%,#ffffff11);
  background:radial-gradient(circle at var(--glint-x, 50%) var(--glint-y, 18%),#ffffff2c 0,transparent 44%);
  mix-blend-mode:screen;
  box-shadow:inset 0 0 10px #000,0 0 5px color-mix(in srgb,var(--identity) 48%,transparent);
}
.mini-card-top,
.mini-card-bottom {
  position:relative;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:2px 5px;
  color:#f4efe6;
  background:linear-gradient(90deg,#060b0f,#17252d 50%,#060b0f);
  font-size:.7rem;
  font-weight:800;
  line-height:1;
}
.mini-art {
  position:relative;
  min-height:0;
  background:
    radial-gradient(circle at 42% 24%,color-mix(in srgb,var(--identity) 44%,transparent),transparent 36%),
    linear-gradient(145deg,#0d202c,#04090d);
}
.mini-art img {
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.86;
  filter:saturate(.9) contrast(1.1) brightness(.82);
}
.mini-name {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  max-width:70px;
}
.activation-badge,
.cost-chip,
.quantity-badge,
.credit-badge {
  display:inline-grid;
  place-items:center;
  min-width:22px;
  height:22px;
  padding:0 5px;
  border:1px solid color-mix(in srgb,var(--identity, var(--pf-blue)) 62%,#e9dfcd);
  color:#f8f1e7;
  background:linear-gradient(145deg,#182832,#05090d);
  box-shadow:inset 0 0 0 1px #02070c,0 0 7px color-mix(in srgb,var(--identity, var(--pf-blue)) 55%,transparent);
  font:800 .88rem/1 "Barlow Condensed",Arial,sans-serif;
}
.pile-button > .quantity-badge {
  position:absolute;
  right:-2px;
  bottom:-4px;
  z-index:4;
  min-width:34px;
  height:26px;
  border-radius:0;
  color:#fff;
}
.preview-meta .quantity-badge {
  position:static;
  min-width:34px;
  height:22px;
  color:#fff;
}

.opponent-ring {
  position:absolute;
  inset:0;
  pointer-events:none;
}
.station {
  --identity:var(--pf-blue);
  position:absolute;
  z-index:2;
  width:330px;
  min-height:184px;
  padding:10px;
  pointer-events:auto;
  cursor:pointer;
  clip-path:polygon(4% 0,96% 0,100% 12%,100% 88%,96% 100%,4% 100%,0 88%,0 12%);
  background:
    linear-gradient(135deg,#ffffff0f,#ffffff00 18%),
    linear-gradient(180deg,color-mix(in srgb,var(--identity) 12%,transparent) 0,transparent 3px),
    linear-gradient(145deg,#102734,#0a1720 58%,#050d13);
  filter:drop-shadow(0 10px 10px #000b) drop-shadow(0 0 8px #1595ff14);
  transition:filter 160ms ease,border-color 160ms ease,transform 160ms ease;
}
.station:hover,
.station:focus-visible {
  border-color:color-mix(in srgb,var(--identity) 62%,#47606d);
  filter:drop-shadow(0 34px 22px #000d) drop-shadow(0 0 12px color-mix(in srgb,var(--identity) 38%,transparent));
  transform:translateZ(18px);
}
.station.active {
  border-color:#fff35f;
  box-shadow:inset 0 1px #ffffff24,inset 0 0 0 1px #02080c,inset 0 0 0 4px #fff35fcc,inset 0 0 36px #ffd90088,0 0 32px #ffd900b8;
  filter:drop-shadow(0 26px 18px #000d) drop-shadow(0 0 34px #ffd900);
  transform:translateZ(12px);
}
.station.active::before {
  border-color:#fff35f;
  box-shadow:0 0 22px #ffd900,0 0 42px #ffd90099;
}
.station-header,
.local-header {
  display:grid;
  grid-template-columns:124px 1fr auto;
  gap:9px;
  align-items:center;
}
.portrait-card {
  position:relative;
  margin:0;
  width:124px;
  aspect-ratio:16/9;
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--identity) 70%,#e9dfcd);
  background:#05090d;
  box-shadow:0 0 8px color-mix(in srgb,var(--identity) 58%,transparent);
}
.portrait-card img {
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block;
}
.player-name {
  margin:0;
  color:#f6f1e8;
  font:800 1.05rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.character-name {
  margin:4px 0 0;
  color:var(--pf-text-muted);
  font-size:.78rem;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.credit-badge {
  --identity:var(--pf-amber);
  min-width:48px;
  height:36px;
  border-width:2px;
  background:
    radial-gradient(circle at 50% 26%,#3a2f14 0,transparent 62%),
    linear-gradient(145deg,#182832,#05090d);
  box-shadow:inset 0 0 0 1px #02070c,inset 0 0 0 3px #e5b14a2e,inset 0 1px #ffffff1e,0 0 9px #e5b14a4d,0 3px 5px #0009;
  font-size:1.35rem;
  text-shadow:0 1px #000;
}
.stack-summary {
  display:grid;
  gap:5px;
  margin-top:9px;
}
.stack-line {
  display:grid;
  grid-template-columns:24px 1fr auto;
  gap:6px;
  align-items:center;
  min-height:25px;
  padding:3px 6px;
  border:1px solid #243e4c;
  background:#050d13a8;
}
.stack-swatch {
  width:18px;
  height:18px;
  border:1px solid color-mix(in srgb,var(--identity) 80%,#fff);
  background:radial-gradient(circle at 40% 30%,var(--identity),#07131d 70%);
}
.stack-line span {
  overflow:hidden;
  color:#dce7eb;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:.8rem;
}
.stack-line b { color:#fff; font-size:.92rem; }
.station-landmark-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:4px;
  margin-top:8px;
}
.station-landmark {
  display:grid;
  min-height:24px;
  align-items:center;
  overflow:hidden;
  padding:3px 4px;
  border:1px solid #304650;
  color:#9eb4bd;
  background:linear-gradient(145deg,#101d24,#050b0f);
  font:800 .58rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.04em;
  text-overflow:ellipsis;
  text-transform:uppercase;
  white-space:nowrap;
}
.station-landmark.complete {
  border-color:var(--pf-amber);
  color:#f8f1dc;
  background:linear-gradient(145deg,#4b3518,#111a1d 72%);
  box-shadow:inset 0 0 10px #e5b14a38,0 0 7px #e5b14a4d;
}
.station-landmark.pf-landmark-activating {
  color:#fff7c9;
  border-color:#e5b14a;
  background:linear-gradient(145deg,#4a3317,#0c151a 70%);
  transform-origin:center;
  animation:pf-landmark-activate 760ms cubic-bezier(.22,1,.36,1);
}

.local-station {
  position:absolute;
  left:50%;
  top:650px;
  bottom:auto;
  z-index:3;
  display:grid;
  grid-template-columns:452px 646px 278px;
  grid-template-areas:
    "profile stacks landmarks"
    "turn stacks landmarks";
  grid-template-rows:auto 1fr;
  column-gap:16px;
  row-gap:10px;
  width:1438px;
  min-height:0;
  height:500px;
  padding:14px 18px;
  overflow:hidden;
  transform:translateX(-50%) translateZ(60px);
  border-radius:10px;
  border-color:#3a5464;
  background:
    linear-gradient(180deg,#5cc1ff21 0,transparent 2px),
    radial-gradient(ellipse at 24% 0,#1595ff24 0,transparent 32%),
    radial-gradient(ellipse at 82% 8%,#e5b14a14 0,transparent 28%),
    linear-gradient(180deg,#0d202bcc,#07131de0 52%,#03080cf2);
  backdrop-filter:none;
  box-shadow:
    inset 0 1px #ffffff17,
    inset 0 0 0 1px #02080c,
    inset 0 0 0 2px #243b4a66,
    inset 0 -16px 24px #0007,
    0 0 0 1px #02070c,
    0 18px 32px #000c;
  filter:drop-shadow(0 44px 28px #000d) drop-shadow(0 0 10px #1595ff12);
  transition:clip-path 200ms ease,border-radius 200ms ease,background 220ms ease,backdrop-filter 200ms ease;
}
.local-station.active {
  border-color:#d7b74a;
  box-shadow:
    inset 0 1px #ffffff1d,
    inset 0 0 0 1px #02080c,
    inset 0 0 0 3px #f1d45a8c,
    inset 0 0 24px #d7a90036,
    0 0 0 1px #c8aa3f,
    0 0 18px #d6b40075,
    0 18px 32px #000c;
  filter:drop-shadow(0 34px 24px #000d) drop-shadow(0 0 14px #d6b40080);
}
.local-station.classic-frame {
  border-radius:0;
  clip-path:polygon(3% 0,97% 0,100% 16%,100% 100%,0 100%,0 16%);
  border-color:#5e7885;
  background:
    linear-gradient(180deg,#5cc1ff3d 0,transparent 2px),
    radial-gradient(ellipse at 22% 0,#1595ff33 0,transparent 34%),
    linear-gradient(180deg,#132c3b,#08141d 52%,#04090d);
  backdrop-filter:none;
  filter:drop-shadow(0 0 18px #1595ff1f);
}
.station-frame-toggle {
  min-height:0;
  padding:4px 10px;
  border:1px solid #3a5464;
  border-radius:4px;
  background:transparent;
  color:var(--pf-text-muted);
  font:700 .64rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.06em;
  text-transform:uppercase;
  cursor:pointer;
}
.station-frame-toggle:hover,
.station-frame-toggle:focus-visible { border-color:var(--pf-blue); color:#fff; }
.local-station.classic-frame .station-frame-toggle { border-color:var(--pf-amber); color:#f0c66c; }
.local-profile {
  grid-area:profile;
  display:grid;
  grid-template-columns:214px minmax(0,1fr);
  grid-template-rows:auto 1fr;
  gap:10px 12px;
  align-items:start;
}
.local-profile .portrait-card { grid-column:1; grid-row:1; width:214px; }
.local-title { grid-column:2; grid-row:1/3; }
.profile-dice-tray { grid-column:1; grid-row:2; align-self:start; }
.profile-dice-tray .roll-dice-button { min-height:0; padding:7px 10px; font-size:.68rem; }
.local-title-topline {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  min-height:60px;
  margin:0 0 5px;
}
.local-credit-badge {
  min-width:96px;
  height:60px;
  font-size:2.24rem;
}
.station-utility-buttons {
  display:flex;
  align-items:center;
  gap:8px;
}
.local-title h2 {
  margin:4px 0;
  color:#f8f3e9;
  font:800 1.55rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.055em;
  text-transform:uppercase;
}
.phase-note {
  margin:9px 0 0;
  color:var(--pf-text-muted);
  font-size:.85rem;
  letter-spacing:.03em;
}
.local-actions {
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  margin-top:12px;
}
.character-select-control {
  display:grid;
  gap:4px;
  margin-top:9px;
  color:var(--pf-text-muted);
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:.76rem;
}
.character-select-control select {
  width:100%;
  min-height:32px;
  padding:5px 8px;
}
.local-turn-tracker {
  grid-area:turn;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto auto;
  gap:9px;
  align-self:stretch;
  min-height:0;
  padding-bottom:8px;
}
.local-turn-tracker .turn-readout {
  min-width:0;
  padding:8px 11px;
  border-width:1px;
  box-shadow:inset 0 0 0 1px #fff6a329,inset 0 0 14px #cfa80038,0 0 10px #cfa8004d;
}
.local-turn-tracker .turn-readout strong {
  font-size:1.24rem;
  text-shadow:0 2px #000,0 0 8px #fff06a8c;
}
.local-turn-tracker .turn-readout span {
  margin-top:3px;
  font-size:.72rem;
}
.local-turn-tracker .turn-readout em {
  display:none;
}
.local-turn-tracker .phase-tabs {
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.local-turn-tracker .phase-tab {
  width:100%;
  min-height:46px;
  padding:10px 10px;
  font-size:1rem;
}
.dice-tray {
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  align-items:center;
  padding:8px;
  border:1px solid #315568;
  background:
    radial-gradient(ellipse at 40% 20%,#6bc8ca2b,transparent 45%),
    linear-gradient(145deg,#07131d,#03080c);
  box-shadow:inset 0 0 0 1px #02070c,0 0 10px #1595ff24;
}
.dice-line {
  display:flex;
  gap:8px;
  align-items:center;
}
.die {
  display:grid;
  width:84px;
  height:84px;
  place-items:center;
  border:2px solid #86dfff;
  color:#eaf8ff;
  background:
    radial-gradient(circle at 35% 30%,#3a5968,#07131d 58%,#02070c),
    linear-gradient(145deg,#263b45,#07131d);
  box-shadow:inset 0 0 0 3px #02070c,inset 0 0 12px #1595ff55,0 0 8px #1595ff66,0 4px 6px #000a;
  font:800 3rem/1 "Barlow Condensed",Arial,sans-serif;
}
.pf-station-die {
  width:72px;
  height:72px;
  padding:18px;
  border:0;
  clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);
  color:#c79bff;
  background:
    radial-gradient(circle at 35% 25%,rgba(199,155,255,.34),rgba(9,6,18,.96) 72%),
    linear-gradient(145deg,#1b1530,#05090d);
  box-shadow:
    0 0 18px rgba(199,155,255,.42),
    inset 0 0 14px rgba(95,242,200,.18);
}
.pf-station-die svg {
  width:100%;
  height:100%;
  filter:drop-shadow(0 0 4px rgba(199,155,255,.72));
}
.dice-line.rolling .pf-station-die {
  color:#5ff2c8;
  animation:station-die-pulse 520ms ease-in-out infinite alternate;
}
.roll-orbit {
  display:grid;
  width:54px;
  height:54px;
  place-items:center;
  border:1px solid #315568;
  border-radius:50%;
  background:#061018;
  box-shadow:0 0 8px #1595ff55;
  opacity:.42;
}
.roll-orbit::before {
  content:"";
  width:24px;
  height:24px;
  border:3px solid #5cc1ff;
  border-left-color:transparent;
  border-radius:50%;
  filter:drop-shadow(0 0 6px #1595ff);
}
.dice-line.rolling .roll-orbit {
  opacity:1;
  animation:dice-orbit 820ms linear infinite;
}
.local-stacks,
.local-landmarks { min-width:0; }
.local-stacks {
  grid-area:stacks;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  min-height:0;
  overflow:hidden;
}
.local-section-title {
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin:0 0 8px;
  color:#dfeef4;
  text-transform:uppercase;
  letter-spacing:.07em;
  font-weight:800;
}
.local-landmarks {
  grid-area:landmarks;
}
.owned-card-grid {
  display:grid;
  grid-auto-flow:row;
  grid-template-columns:repeat(5,118px);
  grid-auto-rows:172px;
  align-content:start;
  justify-content:start;
  gap:13px;
  min-height:0;
  max-height:334px;
  overflow:hidden;
  padding:1px 4px 10px;
  scrollbar-width:thin;
  scrollbar-color:#315568 #07131d;
}
.owned-card-grid.sorting {
  cursor:grabbing;
}
.owned-slot-placeholder {
  position:relative;
  display:grid;
  place-items:center;
  width:108px;
  height:138px;
  margin:0 auto;
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none;
  color:transparent;
  opacity:0;
  pointer-events:auto;
  cursor:default;
}
.owned-slot-placeholder::after {
  display:none;
}
.owned-slot-placeholder:focus-visible {
  outline:none;
}
.owned-slot-placeholder i {
  display:none;
}
.owned-stack {
  --identity:var(--pf-blue);
  position:relative;
  z-index:1;
  display:grid;
  min-width:118px;
  min-height:172px;
  padding:0;
  border:0;
  background:transparent;
  cursor:grab;
  text-align:left;
  touch-action:none;
  transform:translate(var(--drag-x,0),var(--drag-y,0));
  user-select:none;
  -webkit-user-drag:none;
}
.owned-stack *,
.owned-slot-placeholder {
  user-select:none;
  -webkit-user-drag:none;
}
.owned-stack:active,
.owned-stack.dragging {
  cursor:grabbing;
}
.owned-stack.dragging {
  opacity:.56;
  z-index:20;
}
.owned-stack-cards {
  position:relative;
  display:block;
  width:108px;
  height:164px;
  margin:0 auto;
  transform-style:preserve-3d;
}
.stored-credit-badge {
  position:absolute;
  right:7px;
  bottom:7px;
  z-index:6;
  min-width:30px;
  padding:4px 6px;
  border:1px solid rgba(255,202,91,.88);
  border-radius:999px;
  background:linear-gradient(180deg,rgba(95,61,9,.96),rgba(30,20,5,.98));
  box-shadow:0 0 12px rgba(255,180,45,.45);
  color:#ffe6a6;
  font:700 .64rem/1 var(--pf-ui-font);
  letter-spacing:.06em;
  text-align:center;
  pointer-events:none;
}
.owned-full-card,
.owned-covered-card {
  position:absolute;
  left:0;
  right:0;
  border:1px solid color-mix(in srgb,var(--identity) 68%,#e9dfcd);
  background:#07131d;
  box-shadow:0 5px 7px #000b,0 0 8px color-mix(in srgb,var(--identity) 34%,transparent);
}
.owned-full-card {
  top:0;
  z-index:4;
  display:grid;
  grid-template-rows:18px 1fr 22px;
  height:138px;
  overflow:hidden;
  transform:rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
  transition:transform 160ms cubic-bezier(.22,1,.36,1),box-shadow 160ms ease;
}
.owned-stack:hover .owned-full-card,
.owned-stack:focus-visible .owned-full-card {
  transform:translateY(-5px) translateZ(24px) rotateX(calc(4deg + var(--tilt-x, 0deg))) rotateY(var(--tilt-y, 0deg));
  box-shadow:0 26px 22px -10px #000e,0 4px 6px #0008,0 0 14px color-mix(in srgb,var(--identity) 58%,transparent);
}
.owned-full-card::after {
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  border:2px solid color-mix(in srgb,var(--identity) 64%,transparent);
  background:radial-gradient(circle at var(--glint-x, 50%) var(--glint-y, 18%),#ffffff38 0,transparent 46%);
  mix-blend-mode:screen;
  box-shadow:inset 0 0 12px #000,0 0 6px color-mix(in srgb,var(--identity) 50%,transparent);
}
.owned-card-art {
  grid-column:1;
  grid-row:1/-1;
  min-height:0;
  background:
    radial-gradient(circle at 44% 24%,color-mix(in srgb,var(--identity) 42%,transparent),transparent 38%),
    linear-gradient(145deg,#102431,#050b10);
}
.owned-card-art img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  opacity:.9;
  filter:saturate(.9) contrast(1.1) brightness(.84);
}
.owned-card-top,
.owned-card-title {
  grid-column:1;
  position:relative;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:2px 5px;
  color:#f5efe4;
  background:linear-gradient(90deg,#05090d,#17252d 50%,#05090d);
  font-weight:800;
  line-height:1;
  text-transform:uppercase;
}
.owned-card-top {
  grid-row:1;
  font-size:.72rem;
}
.owned-card-top i {
  display:grid;
  min-width:18px;
  height:16px;
  place-items:center;
  border:1px solid color-mix(in srgb,var(--identity) 62%,#e9dfcd);
  background:#061018;
  font-style:normal;
}
.owned-card-title {
  grid-row:3;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:.68rem;
}
.owned-covered-card {
  top:calc(132px + (var(--stack-index) * 13px));
  z-index:calc(3 - var(--stack-index));
  height:27px;
  overflow:hidden;
  transform:translateX(calc((var(--stack-index) + 1) * 4px));
}
.owned-covered-card b {
  display:block;
  overflow:hidden;
  padding:7px 7px 6px;
  color:#dfeef4;
  background:linear-gradient(90deg,#05090d,#142630 55%,#05090d);
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:.67rem;
  line-height:1;
  text-transform:uppercase;
}
.owned-stack-meta {
  display:none;
}
.owned-stack-meta strong {
  display:block;
  overflow:hidden;
  color:#fff;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:.88rem;
}
.landmark strong {
  display:block;
  overflow:hidden;
  color:#fff;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:1.2rem;
}
.owned-stack-meta span {
  color:var(--pf-text-muted);
  font-size:.75rem;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.landmark span {
  color:var(--pf-text-muted);
  font-size:.95rem;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.inspection-dialog .owned-card-grid {
  grid-auto-flow:row;
  grid-auto-columns:auto;
  grid-template-columns:repeat(auto-fit,minmax(126px,148px));
  align-items:start;
  min-height:0;
  max-height:360px;
}
.inspection-dialog .owned-stack-cards {
  width:122px;
  height:178px;
}
.inspection-dialog .owned-full-card {
  height:152px;
}
.inspection-dialog .owned-covered-card {
  top:calc(146px + (var(--stack-index) * 13px));
  height:29px;
}
.player-inspection {
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  min-height:360px;
}
.player-dossier {
  display:grid;
  grid-template-columns:248px 1fr auto;
  gap:18px;
  align-items:start;
  margin-top:10px;
  padding:12px;
  border:1px solid #315568;
  background:
    radial-gradient(ellipse at 18% 0,color-mix(in srgb,var(--identity) 24%,transparent),transparent 44%),
    linear-gradient(145deg,#07131de8,#05090de8);
  box-shadow:inset 0 0 0 1px #02070c,0 0 18px color-mix(in srgb,var(--identity) 32%,transparent);
}
.inspection-portrait {
  width:248px;
  box-shadow:0 0 18px color-mix(in srgb,var(--identity) 58%,transparent),0 10px 18px #000b;
}
.player-dossier-copy h2 {
  margin:4px 0 6px;
  color:#fff;
  font:800 2rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.character-ability {
  margin-top:14px;
  padding:11px 12px;
  border:1px solid #315568;
  background:#050d13d9;
}
.character-ability strong {
  display:block;
  color:var(--pf-blue);
  font:700 .66rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.character-ability span {
  display:block;
  margin-top:7px;
  color:#edf6f8;
  font:400 .9rem/1.4 var(--pf-serif);
}
.ability-console {
  display:grid;
  gap:6px;
  margin-top:10px;
  padding:9px;
  border:1px solid #315568;
  background:#050d13d9;
}
.ability-console p {
  margin:0;
  color:#ffd0a3;
  font-size:.78rem;
  letter-spacing:.02em;
}
.player-landmark-track {
  margin-top:18px;
}
.player-landmark-track-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:0 0 8px;
  color:#dfeef4;
  font-weight:800;
  letter-spacing:.07em;
  text-transform:uppercase;
}
.player-landmark-track-header strong {
  color:#f0c66c;
}
.player-landmark-grid {
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
}
.player-landmark-tile {
  min-height:76px;
  padding:11px 10px;
  border:1px solid #354a54;
  color:#dce9ed;
  background:
    radial-gradient(circle at 50% 0,#ffffff10,transparent 46%),
    linear-gradient(145deg,#16242c,#071015);
  box-shadow:inset 0 0 0 1px #02070c,0 3px 5px #0008;
  clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);
}
.player-landmark-tile strong {
  display:block;
  color:#f7f3ea;
  font:800 1rem/1.02 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.player-landmark-tile span {
  display:block;
  margin-top:8px;
  color:var(--pf-text-muted);
  font-size:.86rem;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.player-landmark-tile.complete {
  border-color:var(--pf-amber);
  background:
    linear-gradient(180deg,#e5b14a42 0,transparent 3px),
    radial-gradient(circle at 50% 0,#e5b14a36,transparent 48%),
    linear-gradient(145deg,#3d2a15,#0a1419 72%);
  box-shadow:inset 0 0 0 1px #02070c,inset 0 0 18px #e5b14a42,0 0 12px #e5b14a38;
}
.player-landmark-tile.complete span {
  color:#f0c66c;
}
.focused-station {
  display:grid;
  gap:18px;
}
.focused-header {
  display:grid;
  grid-template-columns:300px 1fr;
  gap:18px;
  align-items:start;
}
.focused-header h2,
.victory-launch h2 {
  margin:6px 0 8px;
  color:#fff8e8;
  font:800 3rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.focused-body {
  display:grid;
  grid-template-columns:360px 1fr;
  gap:18px;
  align-items:start;
}
.weapon-silhouette {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
  padding:12px;
  border:1px solid #315568;
  background:
    radial-gradient(ellipse at 50% 16%,#e5b14a1f,transparent 45%),
    linear-gradient(145deg,#07131de8,#05090de8);
}
.weapon-node {
  display:grid;
  min-height:82px;
  align-items:center;
  padding:10px;
  border:1px solid #354a54;
  color:#a8bbc3;
  background:linear-gradient(145deg,#14222a,#050b0f);
  box-shadow:inset 0 0 0 1px #02070c;
  font:800 .98rem/1.04 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
}
.weapon-node.complete {
  border-color:var(--pf-amber);
  color:#fff4d8;
  background:
    radial-gradient(circle at 50% 0,#e5b14a40,transparent 45%),
    linear-gradient(145deg,#4a3317,#0c151a 70%);
  box-shadow:inset 0 0 0 1px #02070c,inset 0 0 18px #e5b14a42,0 0 12px #e5b14a38;
}
.victory-launch {
  display:grid;
  gap:16px;
}
.victory-launch .weapon-silhouette {
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.victory-actions {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.landmark-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.landmark {
  min-height:132px;
  padding:16px 16px 16px 19px;
  border:1px solid #3c4d55;
  border-radius:0;
  color:var(--pf-text-light);
  background:
    linear-gradient(90deg,#8b98a144 0 2px,transparent 2px),
    radial-gradient(circle at 50% 0,#ffffff11,transparent 42%),
    linear-gradient(145deg,#18252c,#070e13);
  box-shadow:inset 0 1px #ffffff12,inset 0 0 0 1px #02070c,0 3px 5px #0009;
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
  cursor:pointer;
  text-align:left;
  transition:border-color 140ms ease,background 140ms ease,box-shadow 140ms ease;
}
.landmark:hover,
.landmark:focus-visible {
  border-color:var(--pf-blue);
  background:
    linear-gradient(90deg,#5cc1ff66 0 2px,transparent 2px),
    radial-gradient(circle at 50% 0,#ffffff16,transparent 44%),
    linear-gradient(145deg,#1d2f38,#0a141b);
  box-shadow:inset 0 1px #ffffff16,inset 0 0 0 1px #02070c,inset 0 0 12px #1595ff26;
}
.landmark.complete {
  border-color:var(--pf-amber);
  background:
    linear-gradient(90deg,#e5b14a88 0 2px,transparent 2px),
    linear-gradient(145deg,#3e2b15,#0c151a 68%);
  box-shadow:inset 0 1px #ffffff14,inset 0 0 0 1px #02070c,inset 0 0 22px #e5b14a55,0 0 14px #e5b14a4d;
}
.landmark.complete:hover,
.landmark.complete:focus-visible {
  border-color:#f0c66c;
  box-shadow:inset 0 1px #ffffff18,inset 0 0 0 1px #02070c,inset 0 0 18px #e5b14a44;
}
.landmark.pf-landmark-activating {
  transform-origin:center;
  animation:pf-landmark-activate 760ms cubic-bezier(.22,1,.36,1);
}

.preview-card-large {
  --identity:var(--pf-blue);
  display:grid;
  grid-template-columns:86px 1fr;
  gap:12px;
  align-items:start;
}
.preview-card-art {
  position:relative;
  aspect-ratio:63/88;
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--identity) 68%,#e9dfcd);
  background:#07131d;
  box-shadow:0 0 12px color-mix(in srgb,var(--identity) 55%,transparent);
}
.preview-card-art img { width:100%; height:100%; object-fit:cover; }
.preview-card-art::after {
  content:"";
  position:absolute;
  inset:0;
  border:3px solid color-mix(in srgb,var(--identity) 62%,transparent);
  box-shadow:inset 0 0 18px #000;
}
.preview-meta {
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin:8px 0;
}
.rules-surface {
  margin-top:10px;
  padding:12px 14px;
  color:var(--pf-text-dark);
  background:
    repeating-linear-gradient(97deg,#4a392b08 0 1px,transparent 1px 17px),
    repeating-linear-gradient(8deg,#ffffff0b 0 1px,transparent 1px 23px),
    radial-gradient(circle at 20% 20%,#f4edde 0,transparent 36%),
    radial-gradient(circle at 82% 70%,#d7c7ac66 0,transparent 40%),
    linear-gradient(135deg,#efe5d3,#ddd0ba 52%,#eee3d1);
  border:1px solid #7e745f;
  box-shadow:inset 0 0 0 2px #f5eede66,inset 0 0 18px #8b76593d,0 2px 5px #0009;
  clip-path:polygon(9px 0,calc(100% - 9px) 0,100% 9px,100% calc(100% - 9px),calc(100% - 9px) 100%,9px 100%,0 calc(100% - 9px),0 9px);
  font:400 .82rem/1.42 var(--pf-serif);
}
.board-error {
  width:min(520px,calc(100vw - 32px));
  margin:16px;
  padding:18px;
}

.preview-panel {
  position:absolute;
  z-index:var(--z-panel);
  width:720px;
  max-height:520px;
  overflow-y:auto;
  padding:20px 22px 22px;
  clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
  border-color:#3a5464;
  background:
    radial-gradient(ellipse at 50% 0,#1595ff1f 0,transparent 42%),
    linear-gradient(145deg,#07131df7,#03080cf0);
  backdrop-filter:blur(6px) saturate(1.08);
  transform:translateX(-50%);
  transition:left 220ms cubic-bezier(.22,1,.36,1),top 220ms cubic-bezier(.22,1,.36,1);
  cursor:pointer;
}
.preview-panel:empty { display:none; }
.preview-panel::after { opacity:.5; }
.preview-panel h2 {
  margin:6px 0 2px;
  color:#f5f2e9;
  font:800 2.28rem/1.02 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
  text-shadow:0 2px #000;
}
.preview-panel .preview-kicker {
  padding-bottom:8px;
  border-bottom:1px solid #24445488;
}
.preview-panel .rules-surface { font-size:.8rem; }
.preview-panel .preview-card-large {
  grid-template-columns:192px 1fr;
  gap:18px;
}
.preview-panel .preview-card-art {
  width:192px;
}
.preview-panel .rules-surface { font-size:1rem; }
.player-preview-card {
  display:grid;
  grid-template-columns:192px 1fr;
  gap:14px;
  align-items:start;
}
.player-preview-card .portrait-card {
  width:192px;
}
body.preview-hidden #preview-panel { display:none; }

.game-history-panel {
  position:fixed;
  left:18px;
  top:650px;
  z-index:var(--z-panel);
  width:500px;
  max-width:min(500px,calc(100vw - 24px));
  height:500px;
  overflow:hidden;
  padding:16px;
  opacity:0;
  pointer-events:none;
  transform:translateX(-12px);
  transition:opacity 180ms ease,transform 180ms ease;
  background:
    radial-gradient(ellipse at 30% 0,#1595ff26 0,transparent 38%),
    linear-gradient(145deg,#081722f4,#03080cf2);
}
body.history-visible .game-history-panel {
  opacity:1;
  pointer-events:auto;
  transform:translateX(0);
}
.game-history-panel h2 {
  margin:4px 0 10px;
  color:#f5f2e9;
  font:800 1.65rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.history-tabs {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px;
  margin:0 0 12px;
}
.history-tabs button {
  min-height:28px;
  padding:5px 6px;
  border:1px solid #2a5064;
  background:#061017d9;
  color:#a8c4d0;
  font:800 .72rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.06em;
  text-transform:uppercase;
  cursor:pointer;
}
.history-tabs button:hover,
.history-tabs button:focus-visible {
  color:#fff;
  border-color:#5cc1ff;
}
.history-tabs button.active {
  color:#fff7d4;
  border-color:#e5b14a99;
  background:linear-gradient(180deg,#3b2b04,#07131de8);
}
.game-history-panel h3 {
  margin:0 0 8px;
  color:#84d4ff;
  font:800 .92rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.history-tab-panel {
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  min-height:0;
  height:264px;
}
.game-history-panel ol {
  display:grid;
  gap:7px;
  margin:0;
  padding:0;
  list-style:none;
  overflow:auto;
}
.game-history-panel li {
  display:grid;
  grid-template-columns:1fr;
  gap:3px;
  padding:7px 8px;
  border:1px solid #2a5064;
  background:#061017d9;
}
.game-history-panel li strong {
  color:#fff35f;
  font-weight:800;
  font-size:.68rem;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.game-history-panel li.game-timer-row {
  grid-template-columns:1fr;
  justify-items:center;
  gap:2px;
  padding:22px 8px;
}
.game-history-panel li.game-timer-row strong {
  color:#84d4ff;
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.game-history-panel li.game-timer-row span {
  color:#fff7d4;
  font:800 2.3rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.04em;
}
.game-history-panel li span {
  color:#dce9ed;
  font-size:.8rem;
}

.card-choice-dialog {
  width:min(560px,calc(100vw - 32px));
  max-height:min(720px,calc(100vh - 32px));
  padding:0;
  border:1px solid rgba(84,202,255,.62);
  border-radius:4px;
  background:linear-gradient(160deg,rgba(8,27,39,.99),rgba(3,11,18,.99));
  box-shadow:0 24px 80px #000d,0 0 30px rgba(43,177,241,.2),inset 0 0 0 2px #0008;
  color:var(--pf-text-light);
}
.card-choice-dialog::backdrop {
  background:rgba(0,6,12,.76);
  backdrop-filter:blur(4px);
}
.card-choice-dialog form {
  display:grid;
  gap:18px;
  padding:24px;
}
.card-choice-dialog h2 {
  margin:0;
  font:700 1.2rem/1.25 var(--pf-ui-font);
  letter-spacing:.06em;
}
.card-choice-fields {
  display:grid;
  gap:12px;
  overflow:auto;
}
.card-choice-fields label {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(180px,.8fr);
  gap:14px;
  align-items:center;
  padding:12px;
  border:1px solid rgba(93,181,221,.28);
  background:rgba(8,31,44,.72);
}
.card-choice-fields label > span {
  display:grid;
  gap:5px;
}
.card-choice-fields small {
  color:rgba(222,235,241,.72);
  line-height:1.4;
}
.card-choice-fields select,
.card-choice-dialog .choice-submit {
  min-height:40px;
  border:1px solid rgba(84,202,255,.62);
  border-radius:3px;
  background:#061a27;
  color:var(--pf-text-light);
  font:700 .76rem/1 var(--pf-ui-font);
}
.card-choice-dialog .choice-submit {
  justify-self:end;
  padding:0 18px;
  border-color:rgba(255,190,64,.72);
  background:linear-gradient(#6d4910,#2d1c04);
  color:#fff1c5;
  cursor:pointer;
}

.inspection-dialog {
  position:fixed;
  z-index:var(--z-modal);
  width:min(940px,calc(100vw - 32px));
  max-height:calc(100vh - 36px);
  padding:18px;
  border-color:#5e7885;
  color:var(--pf-text-light);
}
.inspection-dialog::backdrop { background:#010407c7; }
.inspection-dialog {
  background:
    linear-gradient(135deg,#ffffff12,#ffffff00 18%),
    linear-gradient(145deg,#102a38,#081722 58%,#050d13);
  box-shadow:inset 0 1px #ffffff22,inset 0 0 0 1px #02080c,0 0 28px #1595ff4d,0 18px 28px #000d;
}
.inspection-dialog.card-zoom-mode {
  width:min(1240px,calc(100vw - 32px));
  overflow:visible;
}
.inspection-dialog.character-zoom-mode {
  width:min(1280px,calc(100vw - 32px));
  overflow:visible;
}
.inspection-dialog.focused-station-mode,
.inspection-dialog.victory-mode,
.inspection-dialog.dice-history-mode {
  width:min(1480px,calc(100vw - 28px));
}
.dice-history-table {
  width:100%;
  border-collapse:collapse;
  margin-top:14px;
  color:#dce9ed;
}
.dice-history-table th,
.dice-history-table td {
  padding:9px 10px;
  border:1px solid #315568;
  background:#061017d9;
  text-align:left;
}
.dice-history-table th {
  color:var(--pf-blue-bright);
  font:700 .72rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.inspection-dialog[open] {
  display:block;
  animation:panel-lock 180ms cubic-bezier(.22,1,.36,1);
}
.close-button {
  position:absolute;
  right:14px;
  top:14px;
  z-index:2;
  width:34px;
  min-height:34px;
  padding:0;
}
.inspection-grid {
  display:grid;
  grid-template-columns:220px 1fr;
  gap:18px;
}
.inspection-card {
  --identity:var(--pf-blue);
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--identity) 72%,#e9dfcd);
  background:#07131d;
  box-shadow:0 0 18px color-mix(in srgb,var(--identity) 54%,transparent);
}
.inspection-card img { display:block; width:100%; aspect-ratio:63/88; object-fit:cover; }
.inspection-card .mini-card {
  position:relative;
  inset:auto;
  width:100%;
  aspect-ratio:63/88;
  height:auto;
}
.inspection-card .mini-art,
.inspection-card .mini-card::before {
  pointer-events:none;
}
.inspection-row-label {
  margin-top:8px;
  padding:7px 8px;
  border:1px solid #315568;
  color:#e9f4f7;
  background:linear-gradient(145deg,#0f222d,#050d13);
  box-shadow:inset 0 0 0 1px #02070c;
  text-align:center;
  font:800 .9rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.inspection-copy h2 {
  margin:0 42px 8px 0;
  font:800 2rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.inspection-copy p { color:var(--pf-text-muted); font-size:.95rem; letter-spacing:.02em; }
.purchase-panel {
  display:grid;
  grid-template-columns:150px 1fr;
  gap:12px;
  align-items:center;
  margin-top:16px;
  padding:10px;
  border:1px solid #315568;
  background:linear-gradient(145deg,#07131de8,#05090de8);
  box-shadow:inset 0 0 0 1px #02070c,0 0 12px color-mix(in srgb,var(--identity, var(--pf-blue)) 32%,transparent);
}
.purchase-panel:has(.purchase-message:only-child) {
  grid-template-columns:1fr;
}
.purchase-button {
  min-height:42px;
  border-color:var(--pf-amber);
  color:#fff8e8;
  background:linear-gradient(180deg,#6c4719,#171a19 68%,#08131b);
  box-shadow:inset 0 -2px #e5b14a,0 0 12px #e5b14a55;
  font-weight:800;
}
.purchase-button:hover {
  border-color:#f0c66c;
  background:linear-gradient(180deg,#835822,#20211d 68%,#0a1820);
}
.purchase-message {
  margin:0;
  color:#c6d7de;
  font-size:.82rem;
}
.purchase-message.warning {
  color:#ffd0a3;
}
.purchase-message.success {
  color:#98f0b6;
}

.zoom-card-stage {
  --identity:var(--pf-blue);
  display:grid;
  grid-template-columns:minmax(360px,520px) minmax(360px,1fr);
  gap:32px;
  align-items:center;
  perspective:1200px;
}
.character-zoom-stage {
  --identity:var(--pf-amber);
  display:grid;
  grid-template-columns:minmax(520px,660px) minmax(360px,1fr);
  gap:32px;
  align-items:center;
  perspective:1200px;
}
.card-preview-scale {
  perspective:1300px;
}
.board-card-preview-scale {
  position:relative;
  width:min(520px,44vw);
  aspect-ratio:63/88;
}
.character-card-preview-scale {
  position:relative;
  width:min(660px,52vw);
  aspect-ratio:16/10;
}
.card-flip {
  position:relative;
  width:100%;
  height:100%;
  transform-style:preserve-3d;
  transition:transform .7s cubic-bezier(.4,.05,.2,1);
}
.board-card-preview-scale.is-inspected .card-flip {
  transform:scale(1.06);
}
.board-card-preview-scale.is-flipped .card-flip {
  transform:rotateY(180deg);
}
.board-card-preview-scale.is-inspected.is-flipped .card-flip {
  transform:scale(1.06) rotateY(180deg);
}
.character-card-preview-scale.is-inspected .card-flip {
  transform:scale(1.04);
}
.character-card-preview-scale.is-flipped .card-flip {
  transform:rotateY(180deg);
}
.character-card-preview-scale.is-inspected.is-flipped .card-flip {
  transform:scale(1.04) rotateY(180deg);
}
.card-shell {
  --tilt-x:0deg;
  --tilt-y:0deg;
  --glint-x:50%;
  --glint-y:28%;
  position:absolute;
  inset:0;
  display:grid;
  grid-template-rows:1fr auto auto;
  overflow:hidden;
  border:2px solid color-mix(in srgb,var(--identity) 72%,#e6dac4);
  background:#05090d;
  backface-visibility:hidden;
  box-shadow:0 0 0 1px #02070c,0 0 34px color-mix(in srgb,var(--identity) 58%,transparent),0 26px 42px #000e;
  transform:rotateX(var(--tilt-x)) rotateY(var(--tilt-y));
  transform-style:preserve-3d;
  transition:transform 120ms ease,box-shadow 180ms ease;
}
.zoom-card-shell::before,
.zoom-card-shell::after,
.character-card-shell::before,
.character-card-shell::after,
.card-back-face::before,
.card-back-face::after {
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
}
.zoom-card-shell::before,
.character-card-shell::before,
.card-back-face::before {
  z-index:4;
  border:8px solid #08131a;
  box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--identity) 74%,transparent),inset 0 0 30px #000;
}
.zoom-card-shell::after,
.character-card-shell::after,
.card-back-face::after {
  z-index:5;
  background:
    radial-gradient(circle at var(--glint-x) var(--glint-y),#ffffff42 0,transparent 23%),
    linear-gradient(120deg,transparent 0 35%,#ffffff18 44%,transparent 55% 100%);
  mix-blend-mode:screen;
  opacity:.58;
}
.character-card-shell {
  grid-template-rows:1fr auto auto;
}
.character-zoom-art {
  position:relative;
  min-height:0;
  overflow:hidden;
  background:#05090d;
}
.character-zoom-art img {
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(1.04) contrast(1.08) brightness(.92);
}
.character-zoom-title {
  z-index:6;
  padding:13px 22px 11px;
  color:#fff;
  background:linear-gradient(90deg,#04080c,#132933 50%,#04080c);
}
.character-zoom-title span {
  display:block;
  color:var(--pf-blue);
  font:700 .68rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.character-zoom-title strong {
  display:block;
  margin-top:5px;
  font:800 1.72rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.character-zoom-rules {
  z-index:6;
  margin:0 18px 18px;
  min-height:72px;
  padding:14px 16px;
  color:var(--pf-text-dark);
  background:
    repeating-linear-gradient(97deg,#4a392b08 0 1px,transparent 1px 17px),
    radial-gradient(circle at 20% 20%,#f4edde 0,transparent 36%),
    linear-gradient(135deg,#efe5d3,#ddd0ba 52%,#eee3d1);
  box-shadow:inset 0 0 0 2px #7e745f,inset 0 0 0 5px #18242a,inset 0 0 0 6px color-mix(in srgb,var(--identity,var(--pf-amber)) 55%,transparent),inset 0 0 22px #8b76593d;
  clip-path:polygon(4% 0,96% 0,100% 10%,100% 90%,96% 100%,4% 100%,0 90%,0 10%);
  font:700 .95rem/1.36 var(--pf-serif);
  text-align:center;
}
.card-back-face {
  grid-template-rows:1fr;
  transform:rotateY(180deg) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));
}
.card-back-image {
  width:100%;
  height:100%;
  object-fit:cover;
}
.zoom-card-art {
  position:relative;
  min-height:0;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 18%,color-mix(in srgb,var(--identity) 34%,transparent),transparent 36%),
    linear-gradient(145deg,#0d202c,#04090d);
}
.zoom-card-art img {
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(.96) contrast(1.08) brightness(.9);
}
.zoom-card-top {
  position:absolute;
  z-index:6;
  left:18px;
  right:18px;
  top:18px;
  display:flex;
  justify-content:space-between;
}
.zoom-card-top span {
  display:grid;
  min-width:42px;
  height:34px;
  place-items:center;
  border:1px solid color-mix(in srgb,var(--identity) 74%,#f1e5cc);
  color:#fff;
  background:linear-gradient(145deg,#102838,#02070c);
  box-shadow:inset 0 0 0 1px #02070c,0 0 12px color-mix(in srgb,var(--identity) 56%,transparent);
  font:800 1.12rem/1 "Barlow Condensed",Arial,sans-serif;
}
.zoom-card-title {
  z-index:6;
  padding:12px 22px 10px;
  color:#fff;
  background:linear-gradient(90deg,#04080c,#132933 50%,#04080c);
  font:800 1.65rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.zoom-card-rules {
  z-index:6;
  margin:0 18px 18px;
  min-height:78px;
  padding:14px 16px;
  color:var(--pf-text-dark);
  background:
    repeating-linear-gradient(97deg,#4a392b08 0 1px,transparent 1px 17px),
    radial-gradient(circle at 20% 20%,#f4edde 0,transparent 36%),
    linear-gradient(135deg,#efe5d3,#ddd0ba 52%,#eee3d1);
  box-shadow:inset 0 0 0 2px #7e745f,inset 0 0 0 5px #18242a,inset 0 0 0 6px color-mix(in srgb,var(--identity,var(--pf-blue)) 55%,transparent),inset 0 0 22px #8b76593d;
  clip-path:polygon(4% 0,96% 0,100% 10%,100% 90%,96% 100%,4% 100%,0 90%,0 10%);
  font:700 .95rem/1.36 var(--pf-serif);
  text-align:center;
}
.zoom-card-copy h2 {
  margin:0 42px 8px 0;
  font:800 2rem/1 "Barlow Condensed",Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.zoom-detail-list {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin:14px 0 0;
}
.zoom-detail-list div {
  padding:9px 10px;
  border:1px solid #315568;
  background:linear-gradient(145deg,#07131de8,#05090de8);
  box-shadow:inset 0 0 0 1px #02070c;
}
.zoom-detail-list dt {
  color:var(--pf-blue);
  font:700 .62rem/1 "Orbitron",Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.zoom-detail-list dd {
  margin:5px 0 0;
  color:#f2f7f8;
  font:800 .95rem/1 "Barlow Condensed",Arial,sans-serif;
  text-transform:uppercase;
}
.zoom-button-row {
  display:flex;
  gap:10px;
  margin-top:14px;
}
.flip-card-button {
  width:150px;
  min-height:42px;
  margin-top:14px;
  border-color:var(--pf-blue);
  color:#f4fbff;
  background:linear-gradient(180deg,#134059,#07131d 72%);
  box-shadow:inset 0 -2px #1595ff,0 0 12px #1595ff4a;
  font-weight:800;
}
.flip-card-button:hover {
  border-color:#6bc8ca;
  background:linear-gradient(180deg,#18506f,#092030 72%);
}
.zoom-action-panel {
  grid-template-columns:150px minmax(0,1fr);
}

[data-accent="blue"],
[data-color="blue"] { --identity:var(--pf-blue); }
[data-accent="green"],
[data-color="green"] { --identity:var(--pf-green); }
[data-accent="red"],
[data-color="red"] { --identity:var(--pf-red); }
[data-accent="purple"],
[data-color="purple"] { --identity:var(--pf-purple); }
[data-accent="amber"],
[data-color="character"] { --identity:var(--pf-amber); }
[data-color="grey"] { --identity:var(--pf-metal-light); }

/* App-shell typography only. Card renderers below keep their approved fonts. */
.top-command,
.show-top-command,
.board-controls,
.view-switch,
.annotation-zoom,
.market-console,
.bank-hub-label,
.station,
.local-station,
.preview-panel,
.game-history-panel,
.inspection-dialog,
.credit-float-label,
.activation-card-label,
.turn-readout,
.phase-tabs,
.landmark,
.weapon-node,
.player-landmark-tile,
button,
select,
input,
.menu-exit {
  font-family:var(--pf-ui-font);
}

.top-command h1,
.system-label,
.station-label,
.lane-label,
.preview-kicker,
.turn-readout strong,
.turn-countdown,
.phase-tab,
.view-button,
.market-title,
.market-subtitle,
.bank-vault-kicker,
.bank-hub-label strong,
.bank-hub-label span,
.dock-plate,
.station-name strong,
.station-name span,
.stack-line,
.local-turn-tracker h2,
.local-turn-tracker strong,
.station-toolbar button,
.player-dossier-copy h2,
.character-ability strong,
.ability-console p,
.player-landmark-track-header,
.player-landmark-tile strong,
.player-landmark-tile span,
.focused-header h2,
.victory-launch h2,
.weapon-node,
.preview-panel h2,
.game-history-panel h2,
.history-tabs button,
.game-history-panel h3,
.game-history-panel li strong,
.game-history-panel li span,
.dice-history-table th,
.inspection-row-label,
.inspection-copy h2,
.zoom-card-copy h2,
.zoom-detail-list dt,
.zoom-detail-list dd,
.purchase-button,
.purchase-message,
.flip-card-button {
  font-family:var(--pf-ui-font);
}

.mini-card,
.zoom-card-shell,
.character-card-shell,
.card-back-face,
.rules-surface {
  font-family:var(--pf-card-font);
}

@keyframes star-drift {
  from { background-position:0 0,0 0; }
  to { background-position:150px 150px,-230px 230px; }
}
@keyframes panel-lock {
  from { opacity:.2; transform:translateY(12px) scale(.985); }
  to { opacity:1; transform:translateY(0) scale(1); }
}
@keyframes dice-orbit {
  from { transform:rotate(0deg) scale(1); filter:hue-rotate(0deg); }
  50% { transform:rotate(180deg) scale(1.08); filter:hue-rotate(40deg); }
  to { transform:rotate(360deg) scale(1); filter:hue-rotate(0deg); }
}
@keyframes station-die-pulse {
  from {
    opacity:.72;
    box-shadow:0 0 14px rgba(95,242,200,.34),inset 0 0 12px rgba(95,242,200,.2);
  }
  to {
    opacity:1;
    box-shadow:0 0 26px rgba(95,242,200,.68),inset 0 0 18px rgba(95,242,200,.34);
  }
}
@keyframes pf-landmark-activate {
  0% {
    transform:rotateY(0deg) scale(1);
    filter:brightness(1);
    box-shadow:0 0 0 rgba(229,177,74,0);
  }
  32% {
    transform:rotateY(82deg) scale(1.05);
    filter:brightness(1.35);
    box-shadow:0 0 28px rgba(229,177,74,.52),inset 0 0 18px rgba(229,177,74,.28);
  }
  58% {
    transform:rotateY(180deg) scale(1.12);
    filter:brightness(1.62);
    box-shadow:0 0 42px rgba(229,177,74,.72),inset 0 0 24px rgba(92,193,255,.24);
  }
  100% {
    transform:rotateY(360deg) scale(1);
    filter:brightness(1);
    box-shadow:0 0 18px rgba(229,177,74,.3),inset 0 0 14px rgba(229,177,74,.18);
  }
}
@keyframes energy-pulse {
  0%,100% { opacity:.34; }
  50% { opacity:.88; }
}
@keyframes bank-hub-pulse {
  0%,100% { box-shadow:inset 0 0 0 9px #05090d,0 0 12px #e5b14a3e,0 0 22px #e5b14a1e,0 8px 14px #0009; }
  50% { box-shadow:inset 0 0 0 9px #05090d,0 0 16px #e5b14a5c,0 0 30px #e5b14a30,0 8px 14px #0009; }
}
@keyframes conduit-dash {
  to { background-position:96px 0; }
}
@keyframes conduit-flow {
  to { stroke-dashoffset:-68; }
}
@keyframes credit-path-glow {
  from { opacity:0; stroke-dashoffset:48; }
  15% { opacity:.92; }
  80% { opacity:.86; }
  to { opacity:0; stroke-dashoffset:-42; }
}
@keyframes credit-label-rise {
  from { opacity:0; transform:translate(-50%,-36%) scale(.84); filter:blur(2px); }
  18% { opacity:1; transform:translate(-50%,-58%) scale(1); filter:blur(0); }
  to { opacity:0; transform:translate(-50%,-132%) scale(.96); filter:blur(1px); }
}

@media (max-width:980px) {
  body { overflow:auto; }
  .preview-panel { display:none; }
  .top-command {
    position:relative;
    inset:auto;
    grid-template-columns:1fr;
    margin:8px;
  }
  .viewport-shell {
    position:relative;
    height:930px;
    padding-top:0;
  }
  .board-canvas { --zoom:.56; }
  .zoom-card-stage {
    grid-template-columns:1fr;
  }
  .board-card-preview-scale {
    width:min(420px,82vw);
  }
  .card-choice-fields label {
    grid-template-columns:1fr;
  }
  .card-choice-dialog .choice-submit {
    width:100%;
  }
}

@media (prefers-reduced-motion:reduce) {
  *,
  *::before,
  *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
  .space-video,
  .space-atmosphere { display:none; }
  .credit-flow-path { opacity:.26; }
  .credit-flow-coin { display:none; }
  .credit-float-label { opacity:1; transform:translate(-50%,-70%); }
}

/* Non-destructive startup failure notice. Replaces the old behaviour of
   wiping document.body, which also destroyed the credit animation layer
   and the inspection dialog. */
.board-error-banner {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 999;
  padding: 10px 18px;
  font: 600 .9rem/1.4 var(--pf-ui-font, system-ui, sans-serif);
  letter-spacing: .02em;
  color: #ffe9e6;
  background: linear-gradient(180deg, #5b1d18f2, #2a0d0af2);
  border-bottom: 1px solid #ec4c4480;
  box-shadow: 0 2px 14px #0009;
}

/* Station dragging. Cursor affordance plus suppression of the tilt/lift
   transitions while a station is being moved, so it tracks the pointer
   exactly instead of easing behind it. */
.station,
.local-station {
  cursor: grab;
}
.station.station-dragging,
.local-station.station-dragging {
  cursor: grabbing;
  transition: none;
  z-index: 20;
  user-select: none;
}
