/* Ultra War sci-fi panel system.
   Shared by the Command Deck, the match screen and the Galactic Front. Loaded last on each page.
   The look follows the collectible cards: dark-glass faces, brushed-metal bezels, one faction trim
   colour per frame (glow strips, corner diamonds, chamfer edges) and Rajdhani numerals that glow.
   Presentation only: no layout mechanics the apps measure are changed here, and nothing here is
   required for a screen to work. Sections (9 and 10 hold the field manual and the profile progression):
     1 Fonts, registered properties and tokens       5 Dialogs and toasts (both pages)
     2 Components (.uw-panel, .uw-tile, .uw-btn,     6 Match HUD
       .uw-cta, focus, .uw-num, .uw-overline)        7 Galactic Front
     3 Keyframes                                     8 Accessibility (last, so it wins)
     4 Command Deck
   Frame recipe: a chamfered clip-path (top-left and bottom-right corners cut, like the card
   frames), a 1px brushed-metal bezel drawn as the border-box background, trim-coloured chamfer
   edges, quarter "corner diamonds" on the two square corners, a short glowing trim strip on the
   top edge, a faint scanline texture and a glass sheen. Everything is background layers, so it
   costs one paint and needs no extra elements. */

/* ================================================================== 1 Fonts, properties, tokens */
@font-face{font-family:Rajdhani;src:url('/v/a0ee930253a5/fonts/Rajdhani-Bold.ttf') format('truetype');font-weight:100 900;font-display:swap}
@font-face{font-family:Barlow;src:url('/v/a0ee930253a5/fonts/Barlow-Regular.ttf') format('truetype');font-weight:100 500;font-display:swap}
@font-face{font-family:Barlow;src:url('/v/a0ee930253a5/fonts/Barlow-SemiBold.ttf') format('truetype');font-weight:600 900;font-display:swap}

/* Animatable custom properties: the holographic sweep position and the spinning trim ring. */
@property --uw-sweep{syntax:'<percentage>';inherits:false;initial-value:-40%}
@property --uw-spin{syntax:'<angle>';inherits:false;initial-value:0deg}
@property --uw-glow{syntax:'<number>';inherits:false;initial-value:0}

:root{
 --uw-font-display:Rajdhani,Bahnschrift,'DIN Alternate','Segoe UI',sans-serif;
 --uw-font-ui:Barlow,Inter,'Segoe UI',system-ui,sans-serif;
 /* Owner-approved faction trim colours (outputs/design/faction-trim-colors.md). */
 --uw-trim-solari:#f5b400;--uw-trim-hegemony:#eadbb8;--uw-trim-nereid:#3fb4ff;--uw-trim-fungus:#8c9a24;
 --uw-trim-synthari:#e0261c;--uw-trim-spacers:#2a6cff;--uw-trim-veilborn:#8b2cf0;--uw-trim-neutral:#7c8591;--uw-trim-gobbos:#c4501a;
 --uw-trim-game:#6be2ef; /* the shared game accent used on standard card backs */
 --uw-trim:var(--uw-trim-game);
 --uw-ink:#eef3f8;--uw-ink-2:#c8d3dc;--uw-muted:#a3b3c0;
 --uw-good:#7fe0b0;--uw-warn:#ffb4a4;--uw-danger:#ff6b6b;--uw-gold:#f3cf7a;
 /* Surfaces */
 --uw-glass:radial-gradient(130% 100% at 50% 0%,#18212ff2,#080c13f7 72%);
 --uw-glass-flat:linear-gradient(170deg,#141c28f2,#070b11f5);
 --uw-bezel:linear-gradient(135deg,#a9b3c0 0%,#2b3139 16%,#5d6673 34%,#1b2027 55%,#4c5561 78%,#b6bfcb 100%);
 --uw-bezel-dim:linear-gradient(135deg,#6f7986 0%,#262c34 22%,#454d58 45%,#1a1e25 70%,#5b6470 100%);
 --uw-scan:repeating-linear-gradient(0deg,#ffffff05 0 1px,#0000 1px 3px);
 --uw-sheen:linear-gradient(180deg,#ffffff0e,#0000 32%);
 --uw-cut:14px;--uw-dia:6px;
 --uw-ease:cubic-bezier(.2,.8,.2,1);
 --uw-focus:#ffffff;
}

/* ================================================================== 2 Components */
/* Framed panel. Bindings below add existing selectors to these lists, so app markup is untouched. */
.uw-panel,
.command-shell :is(.home-dossier,.home-war,.home-news,.home-deck,.home-launch),
.command-shell .home-deck .affinity-panel,
dialog:not(.card-reveal):not(.uw-celebrate),
.game-layout .side-panel>.panel,
.game-layout .reactor-panel,
.result .affinity-panel,.mulligan.panel,.result.panel,
:root:has(#war) :is(.rail,#planetPanel,.sorties),
:root:has(#war) :is(.tcol,.tdetail),
#player-profile .uw-tcol{
 border:1px solid transparent;border-radius:0;
 clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));
 background:
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-trim) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-trim) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(225deg,var(--uw-trim) calc(var(--uw-dia)*.7071),#0000 0) border-box 100% 0/calc(var(--uw-dia)*2) calc(var(--uw-dia)*2) no-repeat,
  linear-gradient(45deg,var(--uw-trim) calc(var(--uw-dia)*.7071),#0000 0) border-box 0 100%/calc(var(--uw-dia)*2) calc(var(--uw-dia)*2) no-repeat,
  linear-gradient(90deg,var(--uw-trim),color-mix(in srgb,var(--uw-trim) 0%,transparent)) border-box calc(var(--uw-cut) + 5px) 0/min(38%,260px) 2px no-repeat,
  linear-gradient(180deg,color-mix(in srgb,var(--uw-trim) 11%,transparent),#0000 70%) padding-box 0 0/100% 56px no-repeat,
  var(--uw-scan) padding-box,
  var(--uw-sheen) padding-box,
  var(--uw-glass) padding-box,
  var(--uw-bezel) border-box;
 box-shadow:none;
}

/* Light tile: chamfer, bezel and glass only. For small repeated items (rows, chips, tiles). */
.uw-tile,
.command-shell :is(.home-steps .home-step-static,.home-steps a,.home-start li,.gf-tile,.gf-commander),
.command-shell .home-deck .deck-row,
:root:has(#war) :is(.cmd,.sortie,.faction-pick,.cbonus,.name-rights,.feed){
 --uw-cut:8px;
 border:1px solid transparent;border-radius:0;
 clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));
 background:
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-edge,#5d6673) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-edge,#5d6673) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  var(--uw-sheen) padding-box,
  var(--uw-glass-flat) padding-box,
  var(--uw-bezel-dim) border-box;
 transition:--uw-glow .25s,filter .25s;
}

/* Metal button with a chamfer. Focus is drawn inside the shape, because clip-path hides outlines. */
.uw-btn,
.command-shell :is(.home-secondary,.home-step-action:not(.primary-step)),
.command-shell .home-deck .deck-tools button,
.command-shell .home-launch>button:not(.primary):not(#resume),
dialog:not(.card-reveal):not(.uw-celebrate) button:not(.primary):not([data-portrait]):not(.uw-node),
.game-layout .side-panel button:not(.primary):not(.turn-button),
.result button:not(.primary):not(.hand-card),
:root:has(#war) button:not(.primary):not(.node):not(.linkish):not(.cmd):not(.faction-pick):not(.perk):not(.portrait-pick):not(.sn-item):not(.sn-toggle),
:root:has(#war) .back{
 --uw-cut:7px;
 border:1px solid transparent;border-radius:0;
 clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));
 background:
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-btn-edge,#7d8794) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-btn-edge,#7d8794) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(180deg,#ffffff12,#0000 55%) padding-box,
  linear-gradient(180deg,#1b2431,#0c1119) padding-box,
  var(--uw-bezel-dim) border-box;
 color:var(--uw-btn-ink,var(--uw-ink-2));
 transition:color .15s,filter .2s,transform .15s var(--uw-ease);
}
:is(.uw-btn,
.command-shell :is(.home-secondary,.home-step-action:not(.primary-step)),
.command-shell .home-deck .deck-tools button,
.command-shell .home-launch>button:not(.primary):not(#resume),
dialog:not(.card-reveal):not(.uw-celebrate) button:not(.primary):not([data-portrait]):not(.uw-node),
.game-layout .side-panel button:not(.primary):not(.turn-button),
.result button:not(.primary):not(.hand-card),
:root:has(#war) button:not(.primary):not(.node):not(.linkish):not(.cmd):not(.faction-pick):not(.perk):not(.portrait-pick):not(.sn-item):not(.sn-toggle),
:root:has(#war) .back):is(:hover:not(:disabled),:focus-visible){
 --uw-btn-edge:var(--uw-trim);
 color:#fff;
 background:
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-trim) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-trim) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(180deg,color-mix(in srgb,var(--uw-trim) 22%,transparent),#0000 70%) padding-box,
  linear-gradient(180deg,#1f2a38,#0e141d) padding-box,
  linear-gradient(135deg,color-mix(in srgb,var(--uw-trim) 85%,#fff),color-mix(in srgb,var(--uw-trim) 40%,#1b2027) 50%,color-mix(in srgb,var(--uw-trim) 85%,#fff)) border-box;
 text-shadow:0 0 10px color-mix(in srgb,var(--uw-trim) 55%,transparent);
}

/* Primary call to action: trim-coloured, with a holographic sweep (a registered custom property,
   so the browser animates it without script). */
.uw-cta,
.command-shell :is(.home-play,.gf-cta,.home-step-action.primary-step),
.command-shell .home-launch .primary,
dialog:not(.card-reveal):not(.uw-celebrate) .primary,
.game-layout .turn-button,
.result .primary,
.mulligan .primary,
:root:has(#war) button.primary{
 --uw-cut:10px;--uw-cta:var(--uw-trim);
 border:0;border-radius:0;
 clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));
 background:
  linear-gradient(105deg,#0000 calc(var(--uw-sweep) - 16%),#ffffffa6 var(--uw-sweep),#0000 calc(var(--uw-sweep) + 16%)),
  linear-gradient(100deg,#ff7ad91c,#7af3ff24 35%,#fff27a1c 65%,#b57aff1c),
  linear-gradient(180deg,color-mix(in srgb,var(--uw-cta) 72%,#fff) 0%,var(--uw-cta) 48%,color-mix(in srgb,var(--uw-cta) 72%,#000) 100%);
 color:var(--uw-cta-ink,#0b0f15);text-shadow:0 1px 1px #00000040;
 box-shadow:inset 0 1px #ffffffa0,inset 0 -2px #0000004d;
 font-family:var(--uw-font-display);font-weight:700;letter-spacing:.06em;text-transform:uppercase;
 animation:uw-sheen 6s var(--uw-ease) 1.2s infinite;
}
:is(.uw-cta,.command-shell :is(.home-play,.gf-cta,.home-step-action.primary-step),.command-shell .home-launch .primary,dialog:not(.card-reveal):not(.uw-celebrate) .primary,.game-layout .turn-button,.result .primary,.mulligan .primary,:root:has(#war) button.primary):hover:not(:disabled){
 filter:brightness(1.08) saturate(1.1);animation-duration:1.4s;animation-delay:0s;
}
:is(.uw-cta,.command-shell :is(.home-play,.gf-cta,.home-step-action.primary-step),.command-shell .home-launch .primary,dialog:not(.card-reveal):not(.uw-celebrate) .primary,.game-layout .turn-button,.result .primary,.mulligan .primary,:root:has(#war) button.primary):disabled{animation:none;filter:saturate(.3)}

/* Focus: a bright inset double ring, visible inside clipped shapes. */
:is(.uw-btn,.uw-cta,.uw-tile,
.command-shell :is(.home-secondary,.home-step-action,.home-play,.gf-cta,.home-steps a),
.command-shell .home-deck .deck-tools button,.command-shell .home-deck .deck-row button,
.command-shell .home-launch :is(button,.primary),
dialog:not(.card-reveal):not(.uw-celebrate) button,
.game-layout .side-panel button,.result button:not(.hand-card),.mulligan .primary,
:root:has(#war) :is(button,.back)):focus-visible{
 outline:none;
 box-shadow:inset 0 0 0 2px var(--uw-focus),inset 0 0 0 4px #000c,0 0 0 0 transparent!important;
}

/* Glowing numerals (stat badges on the cards use Rajdhani Bold with a coloured glow). */
.uw-num{font-family:var(--uw-font-display);font-weight:700;font-variant-numeric:tabular-nums;text-shadow:0 0 10px color-mix(in srgb,var(--uw-trim) 60%,transparent),0 1px 0 #000}

/* Overline with a trim diamond. */
.uw-overline{font:700 12px/1.3 var(--uw-font-display);letter-spacing:.2em;text-transform:uppercase;color:var(--uw-trim-ink,var(--uw-trim))}

/* ================================================================== 3 Keyframes */
@keyframes uw-sheen{0%{--uw-sweep:-40%}40%,100%{--uw-sweep:140%}}
@keyframes uw-spin{to{--uw-spin:360deg}}
@keyframes uw-rise{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
@keyframes uw-pulse{50%{--uw-glow:1}}
@keyframes uw-toast{from{opacity:0;translate:0 12px;filter:blur(3px)}to{opacity:1;translate:0 0;filter:none}}

/* ================================================================== 4 Command Deck */
body:has(.command-shell){background:radial-gradient(ellipse at 80% 0,color-mix(in srgb,var(--command-color) 9%,transparent),transparent 45%),radial-gradient(ellipse at 10% 90%,#1d2f4a33,transparent 50%),#05080d}
.command-shell,body:has(.command-shell)>header{
 --uw-trim:var(--c);--uw-trim-ink:var(--c-ink);--uw-cta-ink:var(--c-cta-ink);
 --serif:var(--uw-font-display);--sans:var(--uw-font-ui);
 --surface-2:#0a0f17d9;--border:#2b333f;
}
/* Top bar: dark glass, a trim line with a travelling glint, Rajdhani navigation. */
:root body>header{
 background:linear-gradient(90deg,#0000,color-mix(in srgb,var(--uw-trim) 75%,transparent) 50%,#0000) 0 100%/100% 1px no-repeat,linear-gradient(180deg,#0a0f17e6,#05080dd9);
 border-bottom:0;backdrop-filter:blur(14px) saturate(1.3);
 box-shadow:0 10px 30px -18px #000;
}
:root body>header .brand{font-family:var(--uw-font-display);font-size:18px;letter-spacing:.3em}
:root body>header .brand>span{text-shadow:0 0 14px var(--uw-trim),0 0 2px var(--uw-trim)}
:root body>header .brand small{font:700 11px/1 var(--uw-font-display);letter-spacing:.14em;border-radius:0;clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);border:0;background:#ffffff12;padding:5px 11px;color:var(--uw-ink-2)}
/* The navigation buttons and the War chest are the shared site nav (site-nav.css): the same frames on every page. */
@media (max-width:860px){:root body>header .brand{font-size:14px;letter-spacing:.22em}}
@media (max-width:700px){:root body>header .brand{letter-spacing:.14em;gap:8px}}

/* Hero: chamfered frame drawn by an overlay; the faction's key art stays unobstructed. */
.command-shell .home-hero{
 --uw-cut:28px;--uw-dia:10px;
 border:0;border-radius:0;
 clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));
 background:#070b11;
}
.command-shell .home-hero:after{
 border-radius:0;z-index:0;
 background:
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--c) 0 calc(var(--uw-cut)*.7071 + 2px),#0000 0) 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),var(--c) 0 calc(var(--uw-cut)*.7071 + 2px),#0000 0) 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(225deg,var(--c) calc(var(--uw-dia)*.7071),#0000 0) 100% 0/calc(var(--uw-dia)*2) calc(var(--uw-dia)*2) no-repeat,
  linear-gradient(45deg,var(--c) calc(var(--uw-dia)*.7071),#0000 0) 0 100%/calc(var(--uw-dia)*2) calc(var(--uw-dia)*2) no-repeat,
  linear-gradient(90deg,var(--c),#0000) calc(var(--uw-cut) + 8px) 0/40% 2px no-repeat,
  linear-gradient(90deg,#0000 4%,var(--c) 30%,var(--c) 70%,#0000 96%) 0 100%/100% 2px no-repeat,
  linear-gradient(90deg,#b6bfcb99,#2b313999 30%,#5d667399 60%,#b6bfcb99) 0 0/100% 1px no-repeat,
  linear-gradient(#b6bfcb99,#2b313999 40%,#b6bfcb99) 0 0/1px 100% no-repeat,
  linear-gradient(#b6bfcb99,#2b313999 60%,#b6bfcb99) 100% 0/1px 100% no-repeat,
  var(--uw-scan);
 box-shadow:inset 0 0 90px #0009,inset 0 -40px 60px -40px color-mix(in srgb,var(--c) 35%,transparent);
}
.command-shell .home-hero h1{font-weight:700;font-size:clamp(46px,5vw,84px);line-height:.98;letter-spacing:.005em;background:linear-gradient(180deg,#fffaf0 20%,color-mix(in srgb,var(--c) 45%,#fff3dc) 62%,color-mix(in srgb,var(--c) 85%,#a37a3a));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 3px 18px #000c)}
.command-shell .home-kicker{font-family:var(--uw-font-display);font-size:15px;letter-spacing:.18em}
.command-shell .home-description{font-size:17px}
.command-shell .home-mechanic span{font:700 13px/1 var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;border-radius:0;clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);padding:8px 14px;border:0;background:linear-gradient(90deg,color-mix(in srgb,var(--c) 24%,#0a0f17),#0a0f17e6)}
.command-shell .home-mechanic span:last-child{background:#0a0f17d9}
.command-shell .home-overline,.command-shell .home-rail-label,.command-shell .home-steps small,.command-shell .home-showcase-label{font-family:var(--uw-font-display);font-weight:700;font-size:12px;letter-spacing:.2em}
.command-shell .home-overline:before{content:'';display:inline-block;width:6px;height:6px;margin:0 9px 2px 1px;background:var(--c);transform:rotate(45deg);box-shadow:0 0 8px var(--c)}
.command-shell .home-play{min-height:54px;padding:14px 30px;font-size:18px;border-radius:0;animation:uw-sheen 6s var(--uw-ease) 1.2s infinite}
.command-shell .home-play:hover:not(:disabled){transform:translateY(-1px);border:0}
.command-shell .home-secondary{min-height:54px;font:700 16px/1.1 var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;padding:14px 22px}
.command-shell .home-steps b{font-size:14px}
.command-shell .home-step-mark{border-radius:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);border:0;width:24px;height:26px}
.command-shell .home-steps a:hover{--uw-edge:var(--c);filter:brightness(1.12)}
/* Faction rail: a trim ring that turns while a faction is selected. */
.command-shell .rail-faction{border:1.5px solid transparent;background:radial-gradient(circle at 50% 35%,#1f2838,#05070b 75%) padding-box,conic-gradient(from var(--uw-spin),#ffffff26,#ffffff0d 30%,#ffffff26 50%,#ffffff0d 80%,#ffffff26) border-box}
.command-shell .rail-faction[aria-pressed=true]{background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--tile-color) 30%,#1f2838),#05070b 75%) padding-box,conic-gradient(from var(--uw-spin),var(--tile-color),#0000 25%,var(--tile-color) 50%,#0000 75%,var(--tile-color)) border-box;border-color:transparent;animation:uw-spin 6s linear infinite}
.command-shell .rail-faction span{border-radius:0;clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);font-family:var(--uw-font-display);letter-spacing:.08em;text-transform:uppercase;font-size:13px;padding:6px 12px}
/* Signature cards: the cost gem becomes the cards' Flux hexagon in dark glass. */
.command-shell .hero-card{border-radius:10px;border-color:#c9d2dd66}
.command-shell .hero-card-cost{isolation:isolate;width:30px;height:33px;border:0;border-radius:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:linear-gradient(135deg,color-mix(in srgb,var(--c) 70%,#fff),color-mix(in srgb,var(--c) 70%,#000));font:700 17px/1 var(--uw-font-display);color:#fff6e5;text-shadow:0 0 8px var(--c),0 1px 0 #000}
.command-shell .hero-card-cost:before{content:'';position:absolute;inset:2px;z-index:-1;clip-path:inherit;background:radial-gradient(circle at 50% 30%,#2a3547,#030407 80%)}
.command-shell .hero-card-name{font-family:var(--uw-font-display);font-size:14px;letter-spacing:.02em}

/* Briefing panels */
.command-shell :is(.home-dossier,.home-war,.home-news){--uw-cut:16px}
.command-shell .home-war{border-top:1px solid transparent}
.command-shell :is(.ops-head h2,.home-section-heading h2,.home-start-head h2,.home-deck h2,.home-launch h2){font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.command-shell .home-section-heading h2{font-size:clamp(28px,2.6vw,38px);text-shadow:0 0 30px color-mix(in srgb,var(--c) 25%,transparent)}
.command-shell .ops-head h2{font-size:clamp(23px,2vw,28px)}
.command-shell .home-identity .command-profile strong{font-size:26px;font-weight:700}
.command-shell .home-identity .command-profile>img{box-shadow:0 0 0 2px #05080d,0 0 0 3px var(--c),0 0 18px color-mix(in srgb,var(--c) 45%,transparent)}
.command-shell .home-stats{border:0;background:none;gap:6px}
.command-shell .home-stats div{--uw-cut:8px;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));background:linear-gradient(180deg,#ffffff0d,#0000 45%),radial-gradient(120% 120% at 50% 0,#1a2331,#06090e)}
.command-shell .home-stats dt{font:700 12px/1.3 var(--uw-font-display);letter-spacing:.14em}
.command-shell .home-stats dd{font:700 28px/1.1 var(--uw-font-display);color:#fff4df;text-shadow:0 0 12px color-mix(in srgb,var(--c) 55%,transparent),0 1px 0 #000}
.command-shell .home-stats dd small{font-family:var(--uw-font-display);font-size:14px}
.command-shell :is(.home-affinity-meter,.home-start-meter){height:6px;border-radius:0;clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%)}
.command-shell :is(.home-affinity-meter,.home-start-meter) b{border-radius:0;background:linear-gradient(90deg,color-mix(in srgb,var(--c) 55%,#000),var(--c));box-shadow:0 0 10px var(--c)}
.command-shell .home-form li{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);font-family:var(--uw-font-display);font-size:13px;width:26px}
.command-shell .home-start li:first-child{--uw-edge:var(--c)}
.command-shell .home-start strong{font-size:15px}
.command-shell .gf-tile strong{font-size:21px;font-weight:700}
.command-shell .gf-tile>small,.command-shell .gf-level small,.command-shell .home-war h3{font-family:var(--uw-font-display);font-weight:700;font-size:12px;letter-spacing:.14em}
.command-shell .gf-order,.command-shell .gf-commander{border-left:1px solid transparent;box-shadow:inset 3px 0 0 var(--c)}
.command-shell .gf-order{--uw-edge:var(--c)}
.command-shell .gf-commander-main strong{font-size:17px;font-weight:700}
.command-shell :is(.gf-level,.gf-facts b){font-family:var(--uw-font-display);font-weight:700;text-shadow:0 0 10px color-mix(in srgb,var(--c) 55%,transparent)}
.command-shell .gf-level{font-size:22px}.command-shell .gf-facts b{font-size:28px}
.command-shell .gf-state{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);font-family:var(--uw-font-display);font-size:12px;padding:4px 9px}
.command-shell .gf-bar{border-radius:0;clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);height:12px}
.command-shell .gf-cta{min-height:46px;padding:10px 20px;font-size:15px}
.command-shell .gf-invite-map{border-color:color-mix(in srgb,var(--c) 40%,#4a5b64);box-shadow:0 0 40px color-mix(in srgb,var(--c) 18%,transparent),inset 0 0 30px #000}
.command-shell .news-build{border-radius:0;clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);border:0;background:color-mix(in srgb,var(--c) 16%,#0a0f17);font-family:var(--uw-font-display);font-size:13px;letter-spacing:.06em}
.command-shell .news-list li{border-left-color:#ffffff1f}
.command-shell .news-list li:before{border-radius:0;transform:rotate(45deg);left:-4px;width:7px;height:7px}
.command-shell .news-list strong{font-size:18px;font-weight:700}
.command-shell .news-tag{font-family:var(--uw-font-display);font-size:12px;letter-spacing:.16em}

/* Deck workshop and deployment */
.command-shell :is(.home-deck,.home-launch){--uw-cut:18px}
.command-shell .home-deck .affinity-panel{--uw-cut:10px;--uw-dia:4px}
.command-shell .home-deck .deck-row{--uw-cut:7px;padding:8px}
.command-shell .home-deck .deck-row:hover{--uw-edge:var(--c)}
.command-shell .home-deck .deck-row>img{border-radius:3px;box-shadow:0 0 0 1px #ffffff24}
.command-shell .home-deck .row-title b{font:700 15px/1.2 var(--uw-font-display);letter-spacing:.02em}
.command-shell .home-deck .deck-row button{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);border-color:#ffffff24;font-family:var(--uw-font-display)}
.command-shell .home-deck .deck-tools button{font:700 13px/1.1 var(--uw-font-display);letter-spacing:.08em;text-transform:uppercase;padding:10px 14px}
.command-shell .home-deck .home-preset[aria-pressed=true]{--uw-btn-edge:var(--c);--uw-btn-ink:var(--c);text-shadow:0 0 10px color-mix(in srgb,var(--c) 50%,transparent)}
.command-shell .home-deck .deck-tools input,.command-shell .home-launch select{border-radius:0;border-color:#ffffff24;background:#05080de6;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}
.command-shell .home-deck .deck-tools input:focus-visible,.command-shell .home-launch select:focus-visible{outline:none;border-color:var(--c);box-shadow:inset 0 0 0 1px var(--c),0 0 0 0 transparent}
.command-shell .home-deck .curve-track{border-radius:0}
.command-shell .home-deck .curve-column b{font-family:var(--uw-font-display);font-size:14px}
.command-shell .home-launch .primary{min-height:54px;font-size:18px;border-radius:0}
.command-shell .home-launch #resume{--uw-cta:#7fe0b0}
.command-shell .home-launch #resume{--uw-cut:10px;border:0;border-radius:0;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));background:linear-gradient(180deg,#2c5a4c,#15332b);color:#e6fff4;font:700 16px/1.1 var(--uw-font-display);letter-spacing:.08em;text-transform:uppercase}
/* The deployment panel warns in amber while the deck cannot launch. */
.command-shell .home-launch:has(#start:disabled){--uw-trim:#f3a58f}

/* Faction gallery: chamfered tiles with faction trim edges and a holographic pass on hover. */
.command-shell .home-factions .faction{--uw-cut:14px;border-radius:0;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));border-color:color-mix(in srgb,var(--tile-color) 26%,#2b333f)}
.command-shell .home-factions .faction:before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
 background:
  linear-gradient(105deg,#0000 calc(var(--uw-sweep) - 14%),#ffffff2e var(--uw-sweep),#0000 calc(var(--uw-sweep) + 14%)),
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071 - 1px),var(--tile-color) 0 calc(var(--uw-cut)*.7071 + 1px),#0000 0) 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071 - 1px),var(--tile-color) 0 calc(var(--uw-cut)*.7071 + 1px),#0000 0) 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(225deg,var(--tile-color) 4px,#0000 0) 100% 0/12px 12px no-repeat,
  linear-gradient(45deg,var(--tile-color) 4px,#0000 0) 0 100%/12px 12px no-repeat;
 transition:--uw-sweep .9s var(--uw-ease)}
.command-shell .home-factions .faction:hover:before,.command-shell .home-factions .faction:focus-visible:before{--uw-sweep:140%}
.command-shell .home-factions .faction strong{font:700 19px/1.1 var(--uw-font-display);letter-spacing:.06em;text-transform:uppercase}
.command-shell .home-factions .faction-resource{font-family:var(--uw-font-display);font-size:12px;letter-spacing:.08em}
.command-shell .home-factions .faction-front{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);font-family:var(--uw-font-display);font-size:12px;letter-spacing:.06em;z-index:2}
.command-shell .home-factions .faction.selected{box-shadow:inset 0 -3px var(--tile-color),inset 0 -40px 40px -30px color-mix(in srgb,var(--tile-color) 40%,transparent)}
.command-shell .home-factions .faction:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--uw-focus),inset 0 0 0 4px #000c}
/* Footer and phone dock */
.command-shell .home-footer{border-top:0;background:linear-gradient(90deg,#0000,color-mix(in srgb,var(--c) 60%,transparent),#0000) 0 0/100% 1px no-repeat;font-family:var(--uw-font-display);font-size:13px;letter-spacing:.16em}
.command-shell .home-dock{background:linear-gradient(90deg,#0000,var(--c),#0000) 0 0/100% 1px no-repeat,#05080de6;border-top:0}
.command-shell .home-dock b{font-family:var(--uw-font-display);font-size:16px;letter-spacing:.08em;text-transform:uppercase}

/* Faction switch: a cross-fade through the View Transitions API (command-home.mjs starts it). */
.command-shell .home-hero-art{view-transition-name:uw-hero-art}
.command-shell .home-hero h1{view-transition-name:uw-hero-title}
::view-transition-old(root),::view-transition-new(root){animation-duration:.32s}
::view-transition-old(uw-hero-art){animation:.45s var(--uw-ease) both uw-vt-out}
::view-transition-new(uw-hero-art){animation:.55s var(--uw-ease) both uw-vt-in}
::view-transition-group(uw-hero-title){animation-duration:.35s}
@keyframes uw-vt-out{to{opacity:0;transform:scale(1.03);filter:blur(4px)}}
@keyframes uw-vt-in{from{opacity:0;transform:scale(1.04) translateX(12px);filter:blur(4px)}}

/* ================================================================== 5 Dialogs and toasts (both pages) */
dialog:not(.card-reveal):not(.uw-celebrate){--uw-cut:20px;--uw-dia:8px;color:var(--uw-ink);font-family:var(--uw-font-ui);scrollbar-width:thin;scrollbar-color:#4b5563 #0000}
dialog:not(.card-reveal):not(.uw-celebrate)::backdrop{background:radial-gradient(ellipse at 50% 40%,#0a121fb3,#010307eb 75%),var(--uw-scan);backdrop-filter:blur(8px) saturate(.8)}
dialog:not(.card-reveal):not(.uw-celebrate)[open]{animation:uw-rise .28s var(--uw-ease)}
dialog:not(.card-reveal):not(.uw-celebrate) :is(h1,h2,.dialog-head h2){font-family:var(--uw-font-display);font-weight:700;letter-spacing:.04em}
dialog:not(.card-reveal):not(.uw-celebrate) .dialog-head{padding-bottom:12px;background:linear-gradient(90deg,var(--uw-trim),#0000 60%) 0 100%/100% 1px no-repeat}
dialog:not(.card-reveal):not(.uw-celebrate) .dialog-head h2{text-transform:uppercase;font-size:24px}
dialog:not(.card-reveal):not(.uw-celebrate) h3{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:16px;color:var(--uw-ink)}
dialog:not(.card-reveal):not(.uw-celebrate) :is(input:not([type=file]),select,textarea){border-radius:0}
dialog:not(.card-reveal):not(.uw-celebrate) .eyebrow{font-family:var(--uw-font-display);font-weight:700;color:var(--uw-trim-ink,var(--uw-trim))}
#manual-content dt{font-family:var(--uw-font-display);font-size:16px;letter-spacing:.04em}
#manual-content dt:before{content:'';display:inline-block;width:6px;height:6px;margin:0 9px 2px 0;background:currentColor;transform:rotate(45deg)}
#manual>a{display:inline-block;margin-top:14px;font:700 14px var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--uw-trim-ink,var(--uw-trim))}
#inspect-content img{border-radius:10px;box-shadow:0 0 0 1px #ffffff26,0 18px 40px -16px #000}
/* Player profile */
#player-profile{--uw-trim:var(--uw-gold);border:1px solid transparent;border-radius:0}
#player-profile .profile-heading h1{font-size:clamp(28px,3.4vw,42px);text-transform:uppercase;letter-spacing:.05em}
#player-profile .profile-preview>img{box-shadow:0 0 0 3px #05080d,0 0 0 4px var(--uw-gold),0 0 30px #f3cf7a40}
#player-profile .profile-preview h2{font-size:30px}
#player-profile .profile-totals>div{--uw-cut:7px;border:0;border-radius:0;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));background:linear-gradient(180deg,#ffffff0f,#0000 45%),radial-gradient(120% 120% at 50% 0,#1f2838,#040609)}
#player-profile .profile-totals strong{font:700 28px/1.05 var(--uw-font-display);color:#ffe3a0;text-shadow:0 0 12px #f5b40080,0 1px 0 #000}
#player-profile .profile-totals small{font:700 11px var(--uw-font-display);letter-spacing:.12em;text-transform:uppercase}
#player-profile .portrait-gallery button{border-radius:0;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);border-color:#2b333f}
#player-profile .portrait-gallery button[aria-pressed=true]{border-color:var(--uw-gold);background:linear-gradient(180deg,#f3cf7a2e,#081725)}
#player-profile .portrait-gallery button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--uw-focus)}
#player-profile .portrait-gallery img{border-radius:0}
#player-profile .portrait-gallery span{font:700 12px/1.2 var(--uw-font-display);letter-spacing:.04em}
#player-profile .profile-footer{background:linear-gradient(90deg,#0000,#f3cf7a80,#0000) 0 0/100% 1px no-repeat,#080c13;border-top:0}
#player-profile .profile-columns aside{border-left-color:#ffffff14}
#hand-intel{--uw-trim:#6fe4ff}
#hand-intel .intel-card{border-radius:0;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
/* Toasts: a chamfered glass chip with a trim edge, rising in. */
#toast:not(:empty){
 --uw-cut:10px;
 border:1px solid transparent;border-radius:0;
 clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));
 background:linear-gradient(90deg,var(--uw-trim) 0 3px,#0000 0) padding-box,linear-gradient(180deg,#ffffff12,#0000 50%) padding-box,linear-gradient(170deg,#141c28f7,#070b11fa) padding-box,var(--uw-bezel) border-box;
 color:var(--uw-ink);font-family:var(--uw-font-ui);font-weight:600;padding:12px 20px 12px 22px;
 animation:uw-toast .3s var(--uw-ease);
}
body:has(.command-shell) #toast{--uw-trim:var(--command-color)}

/* ================================================================== 6 Match HUD */
.game-layout{--uw-trim:var(--uw-trim-game)}
.game-layout .side-panel>.panel{--uw-cut:12px;--uw-dia:5px}
.game-layout .side-panel h3,.game-layout .reactor-panel h4{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.game-layout .side-panel h3{font-size:16px}
.game-layout .turn-banner{font:700 14px/1.2 var(--uw-font-display);letter-spacing:.24em;color:var(--uw-gold);text-shadow:0 0 12px #f5b40066}
.game-layout .turn-banner:before{content:'';display:inline-block;width:6px;height:6px;margin:0 9px 2px 0;background:currentColor;transform:rotate(45deg);box-shadow:0 0 8px currentColor}
.game-layout .turn-button{--uw-cta:#f3cf7a;--uw-cut:12px;font-size:17px;letter-spacing:.14em!important;box-shadow:inset 0 1px #ffffffa0,inset 0 -3px #0000004d!important}
.game-layout .turn-button:active:not(:disabled){transform:translateY(1px);box-shadow:inset 0 2px 6px #0006!important}
.game-layout .side-panel button:not(.primary):not(.turn-button){font-size:13px}
.game-layout .action-options button{font-family:var(--uw-font-ui)}
.game-layout .battle-log p{border-bottom-color:#ffffff10;padding-left:12px;background:linear-gradient(#6be2efaa,#6be2efaa) 1px .72em/4px 4px no-repeat}
.game-layout .battle-log{scrollbar-width:thin;scrollbar-color:#3d4a5a #0000}
/* The panel holding the Reactor turns red, and pulses on an overload (:has keeps this CSS-only). */
.game-layout .reactor-panel{--uw-trim:var(--uw-trim-synthari);--uw-cut:9px;--uw-dia:4px;margin:10px 0}
.game-layout .reactor-panel h4{color:#ffc2c0}
.game-layout .heat-bar{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);border-color:#6a3a40}
.game-layout .heat-bar span{box-shadow:0 0 10px #ff5d62}
.game-layout .side-panel>.panel:has(.reactor-panel.overload){--uw-trim:var(--uw-trim-synthari)}
.game-layout .reactor-panel.overload{animation:uw-overload 1.6s ease-in-out infinite}
@keyframes uw-overload{50%{filter:brightness(1.25) drop-shadow(0 0 0 transparent)}}
.game-layout .reactor-actions button small{font-family:var(--uw-font-ui)}
/* Commander bars: square corners with trim notches (no clip-path, so target labels and forecast
   badges that sit over the edge stay visible). */
.game-layout .arena>.commander{border-radius:0;border:1px solid color-mix(in srgb,var(--power-color) 40%,#3a424e);border-left:4px solid var(--power-color);
 background:
  linear-gradient(135deg,var(--power-color) 6px,#0000 0) 0 0/16px 16px no-repeat,
  linear-gradient(315deg,var(--power-color) 6px,#0000 0) 100% 100%/16px 16px no-repeat,
  linear-gradient(90deg,var(--power-color),#0000) 16px 0/30% 1px no-repeat,
  var(--uw-scan),
  linear-gradient(180deg,#ffffff10,#0000 45%),
  linear-gradient(110deg,color-mix(in srgb,var(--power-color) 16%,#101722),#0a0f17f2 60%,#0c121bf2)}
.game-layout .commander .name{font-family:var(--uw-font-display);font-weight:700;font-size:17px;letter-spacing:.04em}
.game-layout .commander .name small{font-family:var(--uw-font-ui);letter-spacing:.02em}
.game-layout .commander .health{font-family:var(--uw-font-display);font-weight:700;border-radius:0;clip-path:polygon(0 0,100% 0,100% 62%,50% 100%,0 62%);padding:3px 12px 9px;background:linear-gradient(180deg,#ffffff14,#0000 50%),radial-gradient(120% 120% at 50% 0,#3a1620,#12060a);border:0;color:#ffd0d4;text-shadow:0 0 10px #ff5d6ecc,0 1px 0 #000}
.game-layout .commander .flux{font-family:var(--uw-font-display);font-weight:700;border-radius:0;clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,8px 100%,0 50%);border:0;padding:5px 14px;background:linear-gradient(180deg,#ffffff14,#0000 50%),radial-gradient(120% 120% at 50% 0,#12344a,#03101a);color:#c8f4ff;text-shadow:0 0 10px #4fd8ffcc,0 1px 0 #000}
.game-layout .commander .resource{font-family:var(--uw-font-display);font-weight:700;font-size:14px;letter-spacing:.03em}
.game-layout .commander-power{border-radius:0;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}
.game-layout .commander-power b{font-family:var(--uw-font-display);font-size:13px;letter-spacing:.06em}
.game-layout .commander-power:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--uw-focus)!important}
.game-layout .midline{font-family:var(--uw-font-display);font-weight:700;font-size:12px;letter-spacing:.3em}
/* Card stat numerals, matching the cards' glowing Rajdhani badges. */
.game-layout .unit .unit-stats{font-family:var(--uw-font-display);font-weight:700}
.game-layout .attack-value{text-shadow:0 0 8px #ffb84dbb,0 1px 0 #000}
.game-layout .hp-value{text-shadow:0 0 8px #ff6d7dbb,0 1px 0 #000}
:is(.game-layout,.mulligan) .hand-card .mana{font-family:var(--uw-font-display);font-weight:700;border-radius:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);border:0;background:radial-gradient(circle at 50% 30%,#1f4a66,#04121c 80%);color:#d6f7ff;text-shadow:0 0 8px #4fd8ff}
:is(.game-layout,.mulligan) .hand-card.affordable .mana{background:radial-gradient(circle at 50% 30%,#1d6a5c,#04161a 80%)}
.game-layout .hand-card .hand-stats{font-family:var(--uw-font-display);font-weight:700;font-size:14px}
.game-layout .arena{border-radius:0;--uw-cut:24px;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut))}
.game-layout .arena::after{display:block;content:'';position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:0;
 background:
  linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),#b6bfcb 0 calc(var(--uw-cut)*.7071 + 2px),#0000 0) 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),#b6bfcb 0 calc(var(--uw-cut)*.7071 + 2px),#0000 0) 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,
  linear-gradient(225deg,var(--uw-trim) 7px,#0000 0) 100% 0/20px 20px no-repeat,
  linear-gradient(45deg,var(--uw-trim) 7px,#0000 0) 0 100%/20px 20px no-repeat,
  linear-gradient(90deg,#0000 10%,#6be2ef99 30%,#0000 50%) 0 0/100% 1px no-repeat,
  linear-gradient(90deg,#0000 50%,#6be2ef99 70%,#0000 90%) 0 100%/100% 1px no-repeat}
@media (max-width:600px){.game-layout .arena{--uw-cut:12px}.game-layout .side-panel>.panel{--uw-cut:9px}dialog:not(.card-reveal):not(.uw-celebrate){--uw-cut:14px}}
.game-layout .theater-label{font-family:var(--uw-font-display);font-weight:700;font-size:11px;letter-spacing:.3em}
.result h1,.mulligan h1{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.result h1{font-size:clamp(44px,6vw,72px);background:linear-gradient(180deg,#fff 30%,#bfeff5 70%,#6be2ef);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px #6be2ef44)}
.result .reward{font-family:var(--uw-font-display);font-weight:700;font-size:34px;letter-spacing:.06em;color:#ffe3a0;text-shadow:0 0 16px #f5b40099,0 1px 0 #000}
.result .affinity-panel{--uw-cut:12px;--uw-dia:5px}
/* Laptop and 1080p heights: the result panel was about 1,090 px tall, so "Return to command" sat below a 768 px screen
   (and Rematch below a 1080 px one). A smaller emblem and tighter spacing keep every line and put the buttons on screen. */
@media (max-height:1100px) and (min-width:700px){
 .result{margin:12px auto}
 .result .result-emblem{width:clamp(64px,14vh - 44px,150px);height:clamp(64px,14vh - 44px,150px)}
 .result .eyebrow{margin:4px 0}
 .result h1{margin:.06em 0;font-size:clamp(40px,6vh,72px)}
 .result>p{margin:6px 0}
 .result .result-flavor{margin:8px auto 4px}
 .result .reward{margin:8px 0}
 .result .affinity-panel{margin:8px auto;padding:10px 16px}
 .result .affinity-panel :is(p,div){margin-block:2px}
 .result .affinity-panel progress{margin:6px 0 4px}
 .result button.primary{margin-top:10px}
 .result .help{margin:6px 0}
}
.result button:not(.hand-card),.mulligan .primary{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.08em;text-transform:uppercase}

/* ================================================================== 7 Galactic Front */
:root:has(#war){--font:var(--uw-font-ui);--uw-trim:var(--accent);--panel:#0a0f17eb}
:root:has(#war) body{background:radial-gradient(ellipse at 50% 0,#12203033,transparent 60%),var(--bg)}
:root:has(#war) :is(h2,.modal-head h1,.panel h1,.cbox h1,.clock,.wallet span,.kv h3,.brand b,.brand small,.order b,.chip,.status,.tag,.cmd b,.sortie b,.thead b,.nname,.nlvl,.ckicker,.cstats b,.cstats small,.chint,label.field,.kicker,.hint,.legend span){font-family:var(--uw-font-display);font-weight:700}
:root:has(#war) h2{letter-spacing:.24em}
:root:has(#war) .topbar{background:linear-gradient(90deg,#0000,color-mix(in srgb,var(--accent) 70%,transparent) 50%,#0000) 0 100%/100% 1px no-repeat,var(--uw-scan),linear-gradient(180deg,#0c131c,#05080d);border-bottom:0}
:root:has(#war) .brand .glyph{text-shadow:0 0 14px var(--accent),0 0 2px var(--accent)}
:root:has(#war) .brand b{font-size:17px;letter-spacing:.22em}
:root:has(#war) .topbar{gap:12px}
:root:has(#war) .brand small{font-size:13px;letter-spacing:.1em}
:root:has(#war) .order{border-left:0;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);padding:7px 20px;
 background:linear-gradient(105deg,#0000 calc(var(--uw-sweep) - 10%),#ffffff1f var(--uw-sweep),#0000 calc(var(--uw-sweep) + 10%)),linear-gradient(90deg,var(--accent) 0 3px,#0000 0),linear-gradient(90deg,var(--accent-dim),#ffd23d05 80%);
 animation:uw-sheen 9s linear 2s infinite}
:root:has(#war) .order b{letter-spacing:.24em;font-size:13px;text-shadow:0 0 10px #ffd23d80}
:root:has(#war) .chip{border-radius:0;clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);border:0;background:#ffffff0d;padding:5px 10px;letter-spacing:.04em;font-size:13px}
:root:has(#war) .chip.now{background:linear-gradient(180deg,#ffd23d2e,#ffd23d12);text-shadow:0 0 10px #ffd23d70}
/* War Marks wallet */
:root:has(#war) .wallet{--uw-cut:9px;padding:5px 14px 5px 16px;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));border:1px solid transparent;background:linear-gradient(180deg,#ffffff14,#0000 50%) padding-box,radial-gradient(120% 140% at 50% 0,#1f2838,#05070b) padding-box,linear-gradient(135deg,#ffe7a3,#8a6414 40%,#f5c64a 70%,#6e4f10) border-box}
:root:has(#war) .wallet span{font-size:24px;line-height:1;color:#ffe3a0;text-shadow:0 0 12px #f5b400aa,0 1px 0 #000}
:root:has(#war) .wallet small{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#e2c98c}
:root:has(#war) .back{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.05em;text-transform:uppercase;font-size:13px;padding:8px 10px}
:root:has(#war) button.icon{--uw-cut:6px}
/* Rails and panel */
:root:has(#war) :is(.rail,#planetPanel){--uw-cut:18px;--uw-dia:7px}
:root:has(#war) .sorties{--uw-cut:14px}
:root:has(#war) #planetPanel{container-type:inline-size}
:root:has(#war) #planetPanel h1{font-family:var(--uw-font-display);font-weight:700;font-size:32px;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 0 24px #ffd23d33}
:root:has(#war) #planetPanel .kicker{font-size:13px;letter-spacing:.24em;color:var(--accent)}
:root:has(#war) .kv{border-top:0;background:linear-gradient(90deg,#a0c8dc3d,#0000 70%) 0 0/100% 1px no-repeat}
:root:has(#war) .kv h3{font-size:13px;letter-spacing:.2em}
:root:has(#war) .kv h3:before{content:'';display:inline-block;width:5px;height:5px;margin:0 8px 2px 0;background:var(--accent);transform:rotate(45deg)}
:root:has(#war) :is(.bar,.hp){border-radius:0;clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%)}
:root:has(#war) .bar i{box-shadow:0 0 8px var(--accent)}
:root:has(#war) .tag{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);font-size:12px;letter-spacing:.14em}
:root:has(#war) .deploy{font-size:18px;padding:13px}
@container (max-width:300px){:root:has(#war) .progress-row{grid-template-columns:72px 1fr 38px;font-size:12px}}
/* Commanders and sorties */
:root:has(#war) .cmd{--uw-cut:9px;padding:10px 12px}
:root:has(#war) .cmd:hover{--uw-edge:#8fa3b1;filter:brightness(1.1)}
:root:has(#war) .cmd.active{--uw-edge:var(--accent);box-shadow:inset 3px 0 0 var(--accent),inset 0 0 30px -12px var(--accent)}
:root:has(#war) .cmd b{font-size:17px;letter-spacing:.03em}
:root:has(#war) .cmd:focus-visible,:root:has(#war) .faction-pick:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--uw-focus)}
:root:has(#war) .status{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);font-size:12px;letter-spacing:.14em}
:root:has(#war) .sortie{--uw-cut:8px}
:root:has(#war) .sortie .pip{border-radius:0;clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%)}
:root:has(#war) .clock{font-size:26px;text-shadow:0 0 12px #ffd23d99,0 1px 0 #000}
:root:has(#war) .legend span{border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);background:#04070bd9;font-size:12px;letter-spacing:.12em;padding:4px 10px}
:root:has(#war) .legend i{border-radius:0;transform:rotate(45deg);width:7px;height:7px}
:root:has(#war) .hint{font-size:13px;letter-spacing:.12em;text-transform:uppercase}
/* Modal */
:root:has(#war) #modal{--uw-cut:22px;--uw-dia:8px}
:root:has(#war) .modal-head{padding-bottom:12px;background:linear-gradient(90deg,var(--accent),#0000 60%) 0 100%/100% 1px no-repeat}
:root:has(#war) .modal-head h1{font-size:28px;letter-spacing:.06em;text-transform:uppercase}
:root:has(#war) .faction-pick{--uw-cut:9px}
:root:has(#war) .faction-pick.sel{--uw-edge:var(--accent);box-shadow:inset 0 -3px 0 var(--accent),inset 0 0 30px -10px var(--accent)}
:root:has(#war) .faction-pick span{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
:root:has(#war) :is(input[type=text],select){border-radius:0}
:root:has(#war) .seg button.sel{--uw-btn-edge:var(--accent);--uw-btn-ink:var(--accent);text-shadow:0 0 10px #ffd23d66}
:root:has(#war) .faction-pick span{filter:brightness(1.35)}
:root:has(#war) .feed{--uw-cut:8px}
:root:has(#war) .feed .turn{font-family:var(--uw-font-display);font-weight:700;letter-spacing:.2em}
/* Skill tree */
:root:has(#war) .tcol{--uw-cut:12px;--uw-dia:5px;--uw-trim:var(--fc,var(--accent))}
:root:has(#war) .tcol.primary{box-shadow:inset 0 0 30px color-mix(in srgb,var(--fc) 22%,transparent)}
:root:has(#war) .tdetail{--uw-cut:12px;--uw-dia:5px}
:root:has(#war) .thead b{font-size:15px;letter-spacing:.02em;line-height:1.05;hyphens:auto;-webkit-hyphens:auto}
:root:has(#war) .cicon{border-radius:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);border:0;background:radial-gradient(circle at 50% 30%,#223043,#05080d 80%)}
:root:has(#war) .cbonus{--uw-cut:7px;opacity:.7}
:root:has(#war) .cbonus.on{--uw-edge:var(--fc);opacity:1;background:linear-gradient(180deg,color-mix(in srgb,var(--fc) 20%,transparent),#0000) padding-box,var(--uw-glass-flat) padding-box,linear-gradient(135deg,var(--fc),#1b2027 50%,var(--fc)) border-box}
:root:has(#war) .hex{background:radial-gradient(circle at 50% 30%,#1c2635,#0a0f16 80%)}
:root:has(#war) .node:focus-visible{outline:none}
:root:has(#war) .node:focus-visible .hex{outline:none;filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 2px #fff)}
:root:has(#war) .nlvl{letter-spacing:.14em}
/* Celebrations */
:root:has(#war) .cbox h1{background:linear-gradient(180deg,#fff 25%,color-mix(in srgb,var(--cc) 60%,#fff) 60%,var(--cc));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 0 20px color-mix(in srgb,var(--cc) 60%,transparent))}
:root:has(#war) .cbox:before{content:'';position:absolute;inset:-6px 8%;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#0000,var(--cc),#0000) 0 0/100% 1px no-repeat,linear-gradient(90deg,#0000,var(--cc),#0000) 0 100%/100% 1px no-repeat,radial-gradient(ellipse at 50% 50%,#05080dcc,#0000 70%)}
:root:has(#war) .cstats b{font-size:40px;color:#ffe3a0;text-shadow:0 0 14px #f5b400aa,0 1px 0 #000}
:root:has(#war) .ckicker{letter-spacing:.44em;font-size:16px;text-shadow:0 0 12px var(--cc)}
:root:has(#war) .cbadge{background:linear-gradient(160deg,color-mix(in srgb,var(--cc) 85%,white),color-mix(in srgb,var(--cc) 50%,black)),linear-gradient(105deg,#0000 30%,#fff8 50%,#0000 70%)}
:root:has(#war) #toast{--uw-trim:var(--accent)}

/* ================================================================== 9 Field manual (field-manual.mjs) */
#manual{width:min(1180px,96vw);max-width:none;height:min(92dvh,980px);max-height:none;padding:0;overflow:auto;overscroll-behavior:contain}
#manual .dialog-head{margin:0;padding:18px 24px 12px}
#manual-content{padding:0 24px 8px;font-size:15px;line-height:1.6}
#manual>a{margin:4px 24px 22px}
.fm{container-type:inline-size}
.fm-search{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:10px;margin:0 -24px;padding:10px 24px;background:linear-gradient(180deg,#0b1119fa,#0b1119eb);border-bottom:1px solid #ffffff14;backdrop-filter:blur(8px)}
.fm-search svg{flex:none;width:20px;height:20px;fill:none;stroke:var(--uw-trim);stroke-width:2;stroke-linecap:round}
.fm-search input{flex:1;min-width:0;font:500 16px/1.2 var(--uw-font-ui);color:var(--uw-ink);padding:12px 14px;border:1px solid #ffffff26;border-radius:0;background:#05080de6;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}
.fm-search input:focus-visible{outline:none;border-color:var(--uw-trim);box-shadow:inset 0 0 0 1px var(--uw-trim),0 0 0 0 transparent}
.fm-search input::placeholder{color:#8d9dab}
.fm-search kbd,#manual kbd{font:700 12px/1 var(--uw-font-display);padding:4px 7px;border:1px solid #ffffff33;border-bottom-width:2px;background:#ffffff0d;color:var(--uw-ink-2);border-radius:3px}
.fm-count{flex:none;font:700 12px var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--uw-muted);min-width:0}
/* Report a bug (report-bug.mjs opens its dialog from [data-report-bug]) */
#manual .fm-report{flex:none;min-height:0;margin:0;padding:8px 12px;font:700 12px/1 var(--uw-font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--uw-ink);background:#ffffff0d;border:1px solid #ffffff2e;border-radius:4px;cursor:pointer;white-space:nowrap}
#manual .fm-report:hover,#manual .fm-report:focus-visible{border-color:var(--uw-trim);outline:none}
/* The early-access note at the top of the manual (early-access.mjs) and its Report a bug button */
#manual .fm-early{margin:0 0 14px;font-style:italic}
#manual .fm-early .uw-early-access-report{margin-left:6px;padding:3px 9px;font:600 12px/1.3 var(--uw-font-ui,inherit);font-style:normal;color:var(--uw-ink);background:#ffffff0d;border:1px solid #ffffff2e;border-radius:4px;cursor:pointer}
#manual .fm-early .uw-early-access-report:hover,#manual .fm-early .uw-early-access-report:focus-visible{border-color:var(--uw-trim);outline:none}
.fm-body{display:grid;grid-template-columns:200px minmax(0,1fr);gap:28px;padding-top:18px}
.fm-body[hidden]{display:none}
.fm-toc{position:sticky;top:74px;align-self:start}
.fm-toc ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.fm-toc a{display:flex;gap:10px;align-items:baseline;padding:7px 10px;color:var(--uw-ink-2);text-decoration:none;font:700 15px/1.2 var(--uw-font-display);letter-spacing:.04em;border-left:2px solid #ffffff14}
.fm-toc a i{font-style:normal;font-size:11px;color:var(--uw-muted);letter-spacing:.1em}
.fm-toc a:hover{color:#fff;border-left-color:#ffffff55;background:#ffffff08}
.fm-toc a[aria-current]{color:#fff;border-left-color:var(--uw-trim);background:linear-gradient(90deg,color-mix(in srgb,var(--uw-trim) 16%,transparent),transparent)}
.fm-toc a[aria-current] i{color:var(--uw-trim-ink,var(--uw-trim))}
.fm-content{min-width:0}
.fm-section{scroll-margin-top:78px;padding-bottom:28px;margin-bottom:28px;background:linear-gradient(90deg,#ffffff1a,#0000 70%) 0 100%/100% 1px no-repeat}
.fm-section h3{font:700 27px/1.15 var(--uw-font-display)!important;letter-spacing:.05em!important;margin:0 0 12px}
.fm-section h3:before{content:'';display:inline-block;width:8px;height:8px;margin:0 12px 5px 2px;background:var(--uw-trim);transform:rotate(45deg);box-shadow:0 0 10px var(--uw-trim)}
.fm-section h3:focus-visible{outline:none;text-shadow:0 0 14px var(--uw-trim)}
.fm-section h4{font:700 16px/1.2 var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--uw-ink);margin:20px 0 8px}
.fm-section p,.fm-section li{color:var(--uw-ink-2)}
.fm-lead{font-size:16px;color:var(--uw-ink)!important;margin-top:0}
.fm-ruleset{padding:10px 14px;border-left:3px solid var(--uw-gold);background:#f3cf7a14;color:var(--uw-ink)!important}
.fm-steps{list-style:none;counter-reset:fm;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0;margin:0 0 8px}
.fm-steps li,.fm-tile,.fm-kw li,.fm-faq details,.fm-marks{--uw-cut:9px;border:1px solid transparent;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));background:linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--uw-edge,#5d6673) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,var(--uw-sheen) padding-box,var(--uw-glass-flat) padding-box,var(--uw-bezel-dim) border-box}
.fm-steps li{counter-increment:fm;padding:14px 14px 14px 16px;display:grid;gap:4px}
.fm-steps li:before{content:counter(fm);font:700 26px/1 var(--uw-font-display);color:var(--uw-trim-ink,var(--uw-trim));text-shadow:0 0 10px color-mix(in srgb,var(--uw-trim) 60%,transparent)}
.fm-steps b{font:700 17px/1.2 var(--uw-font-display);color:var(--uw-ink)}
.fm-steps span{font-size:14px;line-height:1.45;color:var(--uw-ink-2)}
.fm-keys{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px}
.fm-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
.fm-tile{padding:14px 16px}.fm-tile h4{margin-top:0}.fm-tile p{margin:0}
/* Galactic Credits art (gc-art-v1): the emblem beside the topic heading, the painted Credit chip inline */
.fm-tile .fm-gc-emblem{float:right;width:96px;height:96px;margin:-30px 0 6px 12px;object-fit:contain;filter:drop-shadow(0 0 10px rgba(47,214,195,.3))}.fm-tile .fm-gc-chip{width:28px;height:28px;margin:-6px 3px -6px 0;vertical-align:middle;object-fit:contain}
.fm-coming{margin-top:14px;--uw-edge:var(--uw-trim,#6be2ef)}.fm-coming p+p{margin-top:8px}
.fm-table{overflow-x:auto;margin:10px 0}
.fm-table table{border-collapse:collapse;width:100%;font-size:14px}
.fm-table th,.fm-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #ffffff14;vertical-align:top;color:var(--uw-ink-2)}
.fm-table thead th{font:700 12px var(--uw-font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--uw-muted)}
.fm-table tbody th{color:var(--uw-ink);font-family:var(--uw-font-display);font-size:15px;white-space:nowrap}
#manual code{font:13px ui-monospace,Consolas,monospace;background:#ffffff10;padding:1px 5px}
/* Turn flow diagram */
.fm-flow-wrap{margin:6px 0 12px}
.fm-flow{display:block;width:100%;height:auto;max-width:820px}
.fm-flow-v{display:none;max-width:250px;margin:0 auto}
.fm-flow .fm-flow-step path{fill:#0d1520;stroke:var(--uw-trim);stroke-width:1.5}
.fm-flow .fm-flow-step.enemy path{stroke:#ff8a7a;fill:#1a0f14}
.fm-flow text{fill:#c8d3dc;font:500 13px var(--uw-font-ui)}
.fm-flow text.n{fill:var(--uw-trim);font:700 22px var(--uw-font-display)}
.fm-flow .enemy text.n{fill:#ff9c8c}
.fm-flow text.t{fill:#fff;font:700 18px var(--uw-font-display);letter-spacing:.04em}
.fm-flow line,.fm-flow .loop{stroke:var(--uw-trim);stroke-width:2;fill:none}
.fm-flow .loop{stroke-dasharray:5 6;opacity:.7}
@container (max-width:560px){.fm-flow-h{display:none}.fm-flow-v{display:block}}
/* Card anatomy */
.fm-anatomy{display:grid;grid-template-columns:320px minmax(0,1fr);gap:26px;align-items:center;margin:10px 0 18px}
.fm-card{position:relative;width:240px;aspect-ratio:2/3;margin:14px auto;--t:#f5b400;border:6px solid transparent;background:linear-gradient(#070b11,#070b11) padding-box,linear-gradient(135deg,#d7dde4,#4b525d 30%,#a9b1bb 55%,#3a4049 80%,#e3e8ee) border-box;box-shadow:0 0 0 1px var(--t),0 20px 40px -18px #000}
.fm-card-art{position:absolute;inset:0 0 38%;overflow:hidden;border-bottom:2px solid var(--t)}
.fm-card-art img{width:100%;height:100%;object-fit:cover;object-position:center 25%}
.fm-card-face{position:absolute;left:0;right:0;bottom:0;height:38%;padding:8px 10px;background:linear-gradient(180deg,#141c28,#05080d);display:grid;align-content:start;gap:2px}
.fm-card-face b{font:700 15px/1.1 var(--uw-font-display);color:#fff}
.fm-card-face small{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#aebccb}
.fm-card-kw{justify-self:start;font:700 10px/1 var(--uw-font-display);letter-spacing:.06em;padding:3px 6px;border:1px solid #6be2ef;color:#b9f4fb;margin:2px 0}
.fm-card-face p{margin:0;font-size:10.5px!important;line-height:1.3;color:#d5dde6!important;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.fm-b{position:absolute;display:grid;place-items:center;width:40px;height:44px;font:700 20px/1 var(--uw-font-display);color:#fff;background:radial-gradient(circle at 50% 30%,#2a3547,#030407 78%);z-index:2}
.fm-flux{top:-10px;left:-12px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);text-shadow:0 0 8px #4fd8ff;box-shadow:inset 0 0 0 2px var(--t)}
.fm-rarity{top:-10px;right:-12px;width:38px;height:38px;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);color:#ffe39a;font-size:16px}
.fm-atk{bottom:-10px;left:-12px;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);width:44px;text-shadow:0 0 8px #ffb84d}
.fm-hp{bottom:-10px;right:-12px;clip-path:polygon(0 0,100% 0,100% 60%,50% 100%,0 60%);text-shadow:0 0 8px #ff6d7d;padding-bottom:8px}
.fm-flux:before,.fm-rarity:before,.fm-atk:before,.fm-hp:before{content:'';position:absolute;inset:0;z-index:-1;background:var(--t);clip-path:inherit}
.fm-flux,.fm-rarity,.fm-atk,.fm-hp{isolation:isolate}
.fm-flux:after,.fm-rarity:after,.fm-atk:after,.fm-hp:after{content:'';position:absolute;inset:3px;z-index:-1;clip-path:inherit;background:radial-gradient(circle at 50% 30%,#2a3547,#030407 78%)}
.fm-pin{position:absolute;z-index:3;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--uw-gold);color:#0b0f15;font:700 12px/1 var(--uw-font-display);font-style:normal;box-shadow:0 0 0 2px #05080d,0 0 12px #f3cf7a99}
.fm-pin-1{top:30px;left:28px}.fm-pin-2{top:28px;right:26px}.fm-pin-3{top:63%;right:-32px}.fm-pin-4{top:72%;right:-32px}.fm-pin-5{top:84%;right:-32px}.fm-pin-6{bottom:4px;left:-34px}.fm-pin-7{bottom:4px;right:-34px}
.fm-callouts{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fm-callouts li{display:grid;gap:2px}
.fm-callouts b{display:flex;align-items:center;gap:8px;font:700 16px/1.2 var(--uw-font-display);color:var(--uw-ink)}
.fm-callouts b i{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--uw-gold);color:#0b0f15;font:700 12px/1 var(--uw-font-display);font-style:normal}
.fm-callouts span{padding-left:28px;font-size:14px;color:var(--uw-ink-2)}
.fm-note{font-size:13px!important;color:var(--uw-muted)!important}
/* Keywords */
.fm-kw{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.fm-kw li{padding:12px 14px;scroll-margin-top:80px}
.fm-kw li p{margin:8px 0 0;font-size:14px;line-height:1.5}
.fm-kw .effect-badge{font:700 13px/1.1 var(--uw-font-display);letter-spacing:.04em;padding:5px 8px}
.fm-kw .effect-badge svg{width:18px;height:18px}
/* Factions */
.fm-factions{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:10px 0 16px}
.fm-faction{--uw-cut:12px;scroll-margin-top:80px;padding:14px 16px;border:1px solid transparent;clip-path:polygon(var(--uw-cut) 0,100% 0,100% calc(100% - var(--uw-cut)),calc(100% - var(--uw-cut)) 100%,0 100%,0 var(--uw-cut));background:linear-gradient(90deg,var(--ft),color-mix(in srgb,var(--ft) 0%,transparent)) border-box calc(var(--uw-cut) + 4px) 0/50% 2px no-repeat,linear-gradient(135deg,#0000 calc(var(--uw-cut)*.7071),var(--ft) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 0 0/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,linear-gradient(315deg,#0000 calc(var(--uw-cut)*.7071),var(--ft) 0 calc(var(--uw-cut)*.7071 + 1.5px),#0000 0) border-box 100% 100%/calc(var(--uw-cut)*2) calc(var(--uw-cut)*2) no-repeat,linear-gradient(180deg,color-mix(in srgb,var(--ft) 14%,transparent),#0000 40%) padding-box,var(--uw-glass-flat) padding-box,var(--uw-bezel-dim) border-box}
.fm-faction header{display:flex;align-items:center;gap:12px;position:static;padding:0;margin:0;background:none;border:0;box-shadow:none;backdrop-filter:none;height:auto;min-height:0}
#manual-content .fm-faction dt:before{display:none}
#manual-content .fm-faction dt{margin:0;color:var(--uw-muted);font-weight:700}
.fm-faction header img{width:46px;height:46px;object-fit:contain;filter:drop-shadow(0 2px 6px #000)}
.fm-faction h4{margin:0!important;font-size:20px!important;color:var(--fc)!important}
.fm-faction header small{font:700 11px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--uw-muted)}
.fm-faction dl{margin:12px 0 0;display:grid;gap:8px}
.fm-faction dt{font:700 11px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--uw-muted)}
.fm-faction dd{margin:2px 0 0;font-size:14px;color:var(--uw-ink)}
.fm-faction dd small{color:var(--uw-ink-2);font-size:13px}
.fm-faction>p{font-size:13.5px;line-height:1.5;margin:10px 0 0}
.fm-swatch{display:inline-block;width:10px;height:10px;margin-right:8px;background:var(--ft);transform:rotate(45deg);box-shadow:0 0 8px var(--ft)}
/* Economy and collectibles */
.fm-marks{display:flex;gap:14px;align-items:center;padding:12px 16px;margin-bottom:8px}
/* War Marks art (wm-art-v1): the painted emblem replaces the CSS-drawn ◆ badge; the painted chit beside the chits text */
.fm-marks-badge{display:block;width:56px;height:56px;flex:none;object-fit:contain;filter:drop-shadow(0 0 8px #efc57955)}.fm-tile .fm-wm-chit,.fm-wm-chit{width:28px;height:28px;margin:-6px 3px -6px 0;vertical-align:middle;object-fit:contain}
.fm-marks b{font:700 18px var(--uw-font-display);color:#ffe3a0}.fm-marks p{margin:2px 0 0}
.fm-finishes{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
.fm-finish{font:700 13px/1 var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;padding:9px 14px;color:#0b0f15;clip-path:polygon(7px 0,100% 0,calc(100% - 7px) 100%,0 100%)}
.fm-finish-regular{background:linear-gradient(135deg,#5d6673,#2b3139);color:#e6edf2}
.fm-finish-copper{background:linear-gradient(135deg,#f0a47a,#8a4a2a 50%,#d98a5e)}
.fm-finish-silver{background:linear-gradient(135deg,#f4f7fa,#8d96a1 50%,#dfe5ea)}
.fm-finish-gold{background:linear-gradient(135deg,#fff0b0,#b88a1a 50%,#f5d060)}
.fm-finish-holographic{background:conic-gradient(from var(--uw-spin),#ff7ad9,#7af3ff,#fff27a,#b57aff,#ff7ad9);animation:uw-spin 8s linear infinite}
/* FAQ */
.fm-faq{display:grid;gap:8px}
.fm-more{margin:12px 0 0}
.fm-more summary{cursor:pointer;font:700 14px var(--uw-font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--uw-trim-ink,var(--uw-trim));padding:6px 0;width:max-content}
.fm-more summary:focus-visible{outline:2px solid var(--uw-focus);outline-offset:3px}
/* Dominion buildings (dominion/dm-describe.mjs): purpose line and stat block per building */
.fm-dm-build td p{margin:0 0 4px;color:var(--uw-ink)}
.fm-dm-stats{display:grid;margin:0;font-size:13px}
.fm-dm-stats>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;padding:2px 0}
#manual-content .fm-dm-stats dt{margin:0;color:var(--uw-muted);font:700 11px var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;padding-top:2px}
#manual-content .fm-dm-stats dt:before{display:none}
.fm-dm-stats dd{margin:0;overflow-wrap:anywhere}
.fm-faq details{scroll-margin-top:80px}
.fm-faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px;padding:13px 16px;font:700 17px/1.25 var(--uw-font-display);letter-spacing:.02em;color:var(--uw-ink)}
.fm-faq summary::-webkit-details-marker{display:none}
.fm-faq summary:after{content:'+';flex:none;color:var(--uw-trim-ink,var(--uw-trim));font-size:20px;line-height:1}
.fm-faq details[open] summary:after{content:'−'}
.fm-faq details[open]{--uw-edge:var(--uw-trim)}
.fm-faq summary:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--uw-focus)}
.fm-faq details>div{padding:0 16px 14px;font-size:14.5px}
.fm-faq details>div p{margin:6px 0}
.fm-flash{animation:fm-flash 1.4s var(--uw-ease)}
@keyframes fm-flash{0%,30%{--uw-edge:#fff;box-shadow:inset 0 0 0 2px var(--uw-trim),inset 0 0 40px color-mix(in srgb,var(--uw-trim) 30%,transparent)}}
/* Search results */
.fm-results{padding:14px 0 20px}
.fm-results[hidden]{display:none}
.fm-group+.fm-group{margin-top:14px}
.fm-group-label{font:700 12px var(--uw-font-display);letter-spacing:.2em;text-transform:uppercase;color:var(--uw-trim-ink,var(--uw-trim));margin:0 0 6px}
.fm-result{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;cursor:pointer;border-left:2px solid transparent;background:#ffffff05}
.fm-result+.fm-result{margin-top:4px}
.fm-result[aria-selected=true]{border-left-color:var(--uw-trim);background:linear-gradient(90deg,color-mix(in srgb,var(--uw-trim) 16%,transparent),#ffffff05)}
.fm-result img{width:40px;height:60px;object-fit:cover;flex:none;box-shadow:0 0 0 1px #ffffff26}
.fm-kind{flex:none;min-width:64px;font:700 11px/1.4 var(--uw-font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--uw-muted);padding-top:3px}
.fm-result b{display:block;font:700 16px/1.2 var(--uw-font-display);color:var(--uw-ink)}
.fm-result small{display:block;font-size:12px;color:var(--uw-muted)}
.fm-result p,.fm-rule-hit{margin:3px 0 0;font-size:13.5px;line-height:1.45;color:var(--uw-ink-2)}
.fm-results mark{background:color-mix(in srgb,var(--uw-trim) 34%,transparent);color:#fff;padding:0 1px;box-shadow:0 1px 0 var(--uw-trim)}
.fm-empty{color:var(--uw-muted)}
/* Field Manual topics (field-manual.mjs TOPICS): anchors, the Star Captain essentials and key table, the Campaign steps. */
.fm-section h4[id],.fm-tile[id],.fm-ach-cat,.fm-sc-missions tr{scroll-margin-top:78px}
.fm-sc-ess{list-style:none;padding:0;margin:8px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px}
.fm-sc-ess li{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:5px 0;border-bottom:1px solid #ffffff10;font-size:14px}
.fm-sc-k{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:4px;text-align:right}
.fm-sc-k small{color:var(--uw-muted);font-size:12px;margin-left:4px}
.fm-sc-keys tbody th{white-space:normal;min-width:7.5em}.fm-sc-keys kbd{display:inline-block;margin:0 2px 3px 0}
.fm-sc-missions ol{margin:4px 0 6px;padding-left:20px}.fm-sc-missions li small{color:var(--uw-muted)}.fm-sc-missions td p{margin:0 0 4px}
.fm-campaign{display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:8px 0;list-style:none;counter-reset:fmc}
.fm-campaign li{counter-increment:fmc;padding:6px 10px;border:1px solid #ffffff1f;background:#ffffff08;font-size:14px}
.fm-campaign li:before{content:counter(fmc) '. ';color:var(--uw-trim-ink,var(--uw-trim));font-weight:700}
@container (max-width:760px){.fm-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.fm-grid2{grid-template-columns:minmax(0,1fr)}.fm-anatomy{grid-template-columns:minmax(0,1fr)}.fm-sc-ess{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
 #manual{width:100vw;height:100dvh;max-height:none;margin:0}
 #manual .dialog-head{padding:14px 16px 10px}
 #manual-content{padding:0 16px 8px}
 .fm-search{margin:0 -16px;padding:8px 16px}.fm-search kbd{display:none}.fm-count{display:none}
 .fm-body{grid-template-columns:minmax(0,1fr);gap:8px;padding-top:10px}
 .fm-toc{position:static}
 .fm-toc ol{display:flex;overflow-x:auto;gap:6px;padding-bottom:6px;scrollbar-width:thin}
 .fm-toc a{white-space:nowrap;border-left:0;border-bottom:2px solid #ffffff14;padding:7px 10px}
 .fm-toc a[aria-current]{border-bottom-color:var(--uw-trim)}
 .fm-section h3{font-size:23px!important}
 .fm-section,.fm-kw li,.fm-faction,.fm-faq details{scroll-margin-top:66px}
 .fm-toc{display:none}
 .fm .fm-filter{flex-wrap:nowrap;overflow-x:auto;margin:0 -16px 14px;padding:0 16px 6px;scrollbar-width:thin}
 #manual .fm .fm-filter button{white-space:nowrap}
 .fm-search .fm-mark{display:none}
 .fm .fm-layers{grid-template-columns:minmax(0,1fr)}
}
/* Field Manual v2 (outputs/design/field-manual-v2.md): a readable measure, "In short" lines, fact lists, chips, the
   grouped contents, the filter and the "New since your last visit" strip. */
.fm-search .fm-mark{flex:none;width:28px;height:28px;object-fit:contain;filter:drop-shadow(0 0 6px #ff9d3a44)}
.fm-section>p,.fm-section>ul,.fm-section>ol,.fm-section>details,.fm-section>.fm-faq,.fm-tile>p,.fm-tile>ul,.fm-tile>ol{max-width:72ch}
.fm-section{line-height:1.6}
.fm-short{margin:0 0 10px!important;padding:8px 12px 9px 14px;border-left:3px solid var(--uw-trim);background:color-mix(in srgb,var(--uw-trim) 9%,transparent);color:var(--uw-ink)!important;font-size:15.5px;line-height:1.5}
.fm-short:before{content:'In short';display:block;margin-bottom:2px;font:700 11px/1.4 var(--uw-font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--uw-trim-ink,var(--uw-trim))}
.fm-facts{list-style:none;padding:0;margin:8px 0 10px;display:grid;gap:7px}
.fm-facts li{position:relative;padding-left:18px}
.fm-facts li:before{content:'';position:absolute;left:2px;top:.62em;width:6px;height:6px;background:var(--uw-trim);transform:rotate(45deg)}
.fm-tile p+p,.fm-tile p+ul,.fm-tile ul+p,.fm-tile ol+p,.fm-tile p+ol{margin-top:8px}
.fm-tile .fm-more{margin-top:8px}
.fm-more summary{max-width:100%;white-space:normal}
.fm-more[open]{padding-bottom:4px}
.fm-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.fm-chip{display:inline-grid;gap:1px;padding:6px 10px;border:1px solid #ffffff24;background:#ffffff08;font:700 15px/1.2 var(--uw-font-display);color:var(--uw-ink)}
.fm-chip small{font:700 10px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--uw-muted)}
.fm-layers{list-style:none;padding:0;margin:8px 0 16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.fm-layers a{display:grid;grid-template-columns:48px minmax(0,1fr);gap:2px 12px;height:100%;box-sizing:border-box;padding:12px 14px;text-decoration:none;border:1px solid #ffffff1f;background:#ffffff06}
.fm-layers a:hover,.fm-layers a:focus-visible{border-color:var(--uw-trim);outline:none;background:#ffffff0c}
.fm-layers i{grid-row:span 2;display:grid;place-items:center;width:48px;height:48px;overflow:hidden;font-style:normal;font-size:22px;color:var(--uw-trim);border:1px solid #ffffff26;background:#05080d}
.fm-layers i img{width:100%;height:100%;object-fit:cover;object-position:center 25%}
.fm-layers b{font:700 17px/1.2 var(--uw-font-display);color:var(--uw-ink)}
.fm-layers span{font-size:13.5px;line-height:1.45;color:var(--uw-ink-2)}
.fm-toc>ol{gap:0}
.fm-toc-group>span{display:block;margin:14px 0 4px;padding-left:12px;font:700 11px var(--uw-font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--uw-muted)}
.fm-toc-group:first-child>span{margin-top:0}
.fm-toc-group ol{display:grid;gap:1px;list-style:none;margin:0;padding:0}
.fm-toc-group a{padding:5px 10px 5px 12px;font-size:14px}
.fm-toc-solo{margin-top:10px}.fm-toc-solo:first-child{margin-top:0}
.fm-toc-solo a{font-size:15px;color:var(--uw-ink)}
.fm-content a:not([class]),.fm-new-since a{color:var(--uw-trim-ink,var(--uw-trim));text-underline-offset:3px}
.fm-content a:not([class]):visited,.fm-new-since a:visited{color:var(--uw-trim-ink,var(--uw-trim))}
.fm-content a:not([class]):hover,.fm-new-since a:hover{color:#fff}
.fm-filter{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px}
#manual .fm-filter button{min-height:0;margin:0;padding:6px 10px;font:700 12px/1.1 var(--uw-font-display);letter-spacing:.05em;color:var(--uw-ink-2);background:#ffffff08;border:1px solid #ffffff24;border-radius:4px;cursor:pointer}
#manual .fm-filter button:hover,#manual .fm-filter button:focus-visible{border-color:var(--uw-trim);outline:none;color:#fff}
#manual .fm-filter button[aria-pressed=true]{color:#0b0f15;background:var(--uw-trim);border-color:var(--uw-trim)}
.fm-section[hidden]{display:none}
.fm-new-since{margin:0 0 14px;padding:10px 14px;border:1px solid color-mix(in srgb,var(--uw-gold) 45%,transparent);background:#f3cf7a12}
.fm-new-since b{font:700 12px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--uw-gold)}
.fm-new-since ul{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-wrap:wrap;gap:6px 16px}
.fm-new-badge{display:inline-block;margin-left:8px;padding:2px 6px;font:700 10px/1.2 var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:#0b0f15;background:var(--uw-gold);vertical-align:middle}
.fm-thumbs{list-style:none;padding:0;margin:8px 0;display:grid;gap:10px}
.fm-thumbs li{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:start}
.fm-thumbs img{width:48px;height:72px;object-fit:cover;box-shadow:0 0 0 1px #ffffff26}
.fm-emblem{width:24px;height:24px;margin:0 8px 0 0;object-fit:contain;vertical-align:middle}
.fm-table,.fm-sc-ess,.fm-steps{max-width:100%}

/* ================================================================== 10 Player profile: tabs, Galactic Front, level and skill tree */
#player-profile .pp-tabs{display:flex;gap:6px;margin:18px 0 4px;flex-wrap:wrap}
#player-profile .pp-tabs [role=tab]{font:700 15px/1.1 var(--uw-font-display);letter-spacing:.08em;text-transform:uppercase;padding:10px 16px}
#player-profile .pp-tabs [role=tab][aria-selected=true]{--uw-btn-edge:var(--uw-gold);--uw-btn-ink:#ffe3a0;text-shadow:0 0 10px #f5b40080}
#player-profile [role=tabpanel]{padding-top:14px}
#player-profile [role=tabpanel][hidden]{display:none}
#player-profile #pp-panel-front h3,#player-profile #pp-panel-level h3{margin:22px 0 10px}
.pp-level-chip{margin:6px 0 0!important;font:700 12px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:#bff4fb!important}
.pp-level-chip:empty{display:none}
.pp-season{font:700 14px var(--uw-font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--uw-gold);margin:0 0 12px}
#player-profile .pp-front-totals{grid-template-columns:repeat(3,minmax(0,1fr))}
.pp-best{display:flex;gap:14px;align-items:center;margin:14px 0 0;padding:12px 16px;border-left:3px solid var(--fc);background:linear-gradient(90deg,color-mix(in srgb,var(--fc) 18%,transparent),#0000)}
.pp-best img{width:48px;height:48px;object-fit:contain}
.pp-best small{display:block;font:700 11px var(--uw-font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--uw-muted)}
.pp-best b{display:block;font:700 22px/1.1 var(--uw-font-display);color:#fff}
.pp-best span{font-size:13px;color:var(--uw-ink-2)}
.pp-cmds{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pp-cmds li{display:grid;grid-template-columns:36px minmax(0,1fr) auto auto;gap:4px 14px;align-items:center;padding:10px 14px;background:linear-gradient(90deg,color-mix(in srgb,var(--fc) 12%,#0a0f17),#0a0f17);box-shadow:inset 3px 0 0 var(--fc);clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}
.pp-cmds img{width:34px;height:34px;object-fit:contain}
.pp-cmds b{display:block;font:700 17px/1.2 var(--uw-font-display);color:#fff}
.pp-cmds small{display:block;font-size:12px;color:var(--uw-ink-2)}
.pp-lvl,.pp-rec{font:700 22px/1 var(--uw-font-display);color:#fff4df;text-align:center;text-shadow:0 0 10px color-mix(in srgb,var(--fc) 60%,transparent)}
.pp-lvl small{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--uw-muted)}
.pp-rec{font-size:16px;color:var(--uw-ink-2);text-shadow:none}
.pp-bar{display:block;height:5px;margin-top:6px;background:#ffffff14;clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%)}
.pp-bar i{display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--fc,#6be2ef) 55%,#000),var(--fc,#6be2ef));box-shadow:0 0 8px var(--fc,#6be2ef)}
.pp-bar.big{height:10px;margin:10px 0 6px}
.pp-held{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.pp-held li{display:flex;align-items:baseline;gap:8px;padding:8px 12px;background:#ffffff08;border-left:2px solid var(--fc);font-size:14px;color:var(--uw-ink)}
.pp-held i{width:8px;height:8px;background:var(--fc);transform:rotate(45deg);flex:none;align-self:center}
.pp-held b{margin-left:auto;font:700 20px var(--uw-font-display);color:#fff}
.pp-held small{font-size:11px;color:var(--uw-muted)}
.pp-worlds{display:flex;flex-wrap:wrap;gap:6px}
.pp-worlds span{font:700 13px var(--uw-font-display);letter-spacing:.04em;padding:5px 10px;border:1px solid color-mix(in srgb,var(--fc) 60%,transparent);color:#fff;background:color-mix(in srgb,var(--fc) 14%,transparent);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%)}
.pp-empty{padding:20px;border:1px dashed #ffffff26}
.pp-link{font:700 15px var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--uw-gold)}
.pp-level{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:20px;align-items:center}
.pp-level-badge{width:92px;height:102px;display:grid;place-items:center;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:linear-gradient(160deg,#bff4fb,#1c6f7a);filter:drop-shadow(0 0 18px #6be2ef88)}
.pp-level-badge span{display:grid;place-items:center;width:84px;height:94px;clip-path:inherit;background:radial-gradient(circle at 50% 30%,#223447,#03060a 78%);font:700 40px/1 var(--uw-font-display);color:#fff;text-shadow:0 0 14px #6be2ef}
.pp-level-main h3{margin:0!important;font-size:28px}
.pp-level-main small{font-size:13px;color:var(--uw-ink-2)}
.pp-sources{display:flex;flex-wrap:wrap;gap:4px 16px;margin:6px 0 0;font-size:12.5px;color:var(--uw-muted)}
.pp-points{text-align:center;display:grid;gap:4px;justify-items:center}
.pp-points strong{font:700 40px/1 var(--uw-font-display);color:#ffe3a0;text-shadow:0 0 14px #f5b400aa}
.pp-points small{font:700 11px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--uw-muted)}
.pp-points button{font-size:12px;padding:6px 10px}
.pp-chip{display:inline-block;margin-top:6px;font:700 11px/1 var(--uw-font-display);letter-spacing:.12em;text-transform:uppercase;padding:5px 9px;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.pp-chip.live{background:#1f4a3a;color:#bff0d6}.pp-chip.server{background:#27405e;color:#cfe3ff}
.pp-owned,.pp-need{font:700 13px var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--uw-muted);flex:none}
.pp-owned{color:var(--uw-good)}
/* Skill tree (same visual language as the Galactic Front Commander tree) */
.uw-tree{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:10px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
.uw-tcol{--uw-cut:12px;--uw-dia:5px;--uw-trim:var(--fc);padding:12px 8px 14px;text-align:center}
.uw-thead{display:flex;align-items:center;gap:8px;text-align:left;min-height:44px}
.uw-thead b{display:block;font:700 16px/1.1 var(--uw-font-display);letter-spacing:.06em;text-transform:uppercase;color:#fff}
.uw-thead small{display:block;font-size:11px;line-height:1.3;color:var(--uw-muted)}
.uw-cicon{flex:none;display:grid;place-items:center;width:36px;height:40px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:radial-gradient(circle at 50% 30%,#223043,#05080d 80%);color:var(--fc)}
.uw-ic{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.uw-nodes{display:flex;flex-direction:column;align-items:center;margin-top:10px}
.uw-link{width:3px;height:14px;background:#ffffff1a}
.uw-link.lit{background:var(--fc);box-shadow:0 0 8px var(--fc)}
#player-profile .uw-node{background:none;border:0;padding:3px;display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;color:inherit;cursor:pointer;border-radius:0}
#player-profile .uw-node:hover .uw-hex{filter:brightness(1.25)}
#player-profile .uw-node:focus-visible{outline:none;box-shadow:none!important}
#player-profile .uw-node:focus-visible .uw-hex{filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 2px #fff)}
.uw-hex{width:50px;height:56px;display:grid;place-items:center;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:radial-gradient(circle at 50% 30%,#1c2635,#0a0f16 80%);color:#56697a;font:700 18px var(--uw-font-display);transition:filter .2s}
.uw-hex.big{width:62px;height:70px}
.uw-node.owned .uw-hex,.uw-hex.owned{background:linear-gradient(160deg,color-mix(in srgb,var(--fc) 85%,white),color-mix(in srgb,var(--fc) 55%,black));color:#0b0f14;filter:drop-shadow(0 0 10px var(--fc))}
.uw-node.available .uw-hex,.uw-hex.available{background:linear-gradient(160deg,#2a2410,#151d26);color:var(--uw-gold);animation:uw-node-pulse 1.8s ease-in-out infinite}
.uw-node.reachable .uw-hex{background:#18232e;color:#9fb4c8}
.uw-node.focus .uw-hex{outline:2px solid #fff;outline-offset:-2px}
.uw-nname{font:700 13px/1.15 var(--uw-font-display);letter-spacing:.02em;color:#e6edf2;max-width:130px}
.uw-node.locked .uw-nname,.uw-node.reachable .uw-nname{color:var(--uw-muted)}
.uw-nlvl{font:700 10.5px var(--uw-font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--uw-muted)}
.uw-node.available .uw-nlvl{color:var(--uw-gold)}.uw-node.owned .uw-nlvl{color:var(--fc)}
@keyframes uw-node-pulse{50%{filter:drop-shadow(0 0 10px #f3cf7ae6)}}
.uw-tdetail{display:flex;gap:16px;align-items:center;margin-top:12px;padding:12px 16px;border:1px solid #ffffff1f;background:#05080dcc;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.uw-tdetail>div{flex:1;min-width:0}
.uw-tdetail b{font:700 20px var(--uw-font-display);color:#fff}
.uw-tdetail small{color:var(--uw-muted)}
.uw-tdetail p{margin:4px 0;font-size:14px;color:var(--uw-ink-2)}
.uw-tdetail .uw-hex{flex:none;--fc:inherit}
.uw-tdetail.empty{color:var(--uw-muted);font-size:14px}
/* Live Legacy cosmetics */
#player-profile.pp-ring .profile-preview>img,.home-identity.pp-ring .command-profile>img{padding:4px;background:conic-gradient(from var(--uw-spin),#f5b400,#0000 28%,#6be2ef 50%,#0000 78%,#f5b400);border-color:transparent!important;animation:uw-spin 5s linear infinite}
#player-profile.pp-glow [data-preview-name]{color:var(--pp-fav);text-shadow:0 0 16px var(--pp-fav),0 1px 0 #000}
@media (max-width:700px){
 .pp-level{grid-template-columns:auto minmax(0,1fr);gap:14px}.pp-points{grid-column:1/-1;grid-auto-flow:column;justify-content:start;align-items:center;gap:10px}
 .pp-level-badge{width:70px;height:78px}.pp-level-badge span{width:64px;height:72px;font-size:30px}
 #player-profile .pp-front-totals{grid-template-columns:repeat(2,minmax(0,1fr))}
 .pp-cmds li{grid-template-columns:30px minmax(0,1fr) auto}.pp-rec{display:none}
 .uw-tdetail{flex-wrap:wrap}
 #player-profile .pp-tabs [role=tab]{flex:1 1 auto;padding:9px 10px;font-size:14px}
}
/* Celebration (level-ups and unlocks), in the Galactic Front style */
dialog.uw-celebrate{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;color:#fff;background:radial-gradient(ellipse at 50% 42%,color-mix(in srgb,var(--cc) 24%,#020407d6),#020407eb 70%);overflow:hidden;cursor:pointer}
dialog.uw-celebrate[open]{display:grid;place-items:center}
dialog.uw-celebrate::backdrop{background:transparent}
.uw-rays{position:absolute;left:50%;top:42%;width:160vmax;height:160vmax;transform:translate(-50%,-50%);background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--cc) 18%,transparent) 0deg 6deg,transparent 6deg 18deg);mask-image:radial-gradient(circle,#000 0,transparent 45%);-webkit-mask-image:radial-gradient(circle,#000 0,transparent 45%);animation:uw-rays 18s linear infinite;pointer-events:none}
@keyframes uw-rays{to{transform:translate(-50%,-50%) rotate(360deg)}}
.uw-cbox{position:relative;text-align:center;padding:20px;max-width:92vw;animation:uw-cpop .55s cubic-bezier(.2,1.6,.4,1)}
@keyframes uw-cpop{from{transform:scale(.6);opacity:0}}
.uw-ckicker{color:var(--cc);letter-spacing:.4em;font:700 15px var(--uw-font-display);text-transform:uppercase;text-shadow:0 0 12px var(--cc);margin:0}
.uw-cbadge{width:118px;height:132px;margin:14px auto;display:grid;place-items:center;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:linear-gradient(160deg,color-mix(in srgb,var(--cc) 80%,white),color-mix(in srgb,var(--cc) 50%,black));color:#0b0f14;filter:drop-shadow(0 0 30px var(--cc));font:700 46px var(--uw-font-display)}
.uw-cbadge .uw-ic{stroke-width:2}
.uw-cbox h2{font:700 clamp(34px,6vw,62px)/1.05 var(--uw-font-display);letter-spacing:.06em;text-transform:uppercase;margin:6px 0;background:linear-gradient(180deg,#fff 25%,color-mix(in srgb,var(--cc) 60%,#fff) 60%,var(--cc));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 20px color-mix(in srgb,var(--cc) 60%,transparent))}
.uw-cbox p{color:#d5e2ea;font-size:17px;margin:4px auto 12px;max-width:520px}
.uw-cstats{display:flex;justify-content:center;gap:28px;margin:12px 0 18px}
.uw-cstats b{display:block;font:700 38px var(--uw-font-display);color:#ffe3a0;text-shadow:0 0 14px #f5b400aa}
.uw-cstats small{font:700 12px var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--uw-muted)}
.uw-cbox .primary{--uw-trim:var(--cc);min-width:180px;padding:12px 24px;font-size:17px}

/* ================================================================== 11 Commander portraits (galactic-front/gf-portrait.mjs) */
/* 4:5 framed placeholder until the art exists: dark backdrop, emblem watermark, a head-and-shoulders silhouette with a
   faction-trim rim light, the class badge and a "Portrait coming" tag. Real art (.cp-art) covers it when present. */
.cp{--cut:9px;position:relative;display:inline-block;flex:none;width:var(--cp-w,140px);aspect-ratio:4/5;overflow:hidden;isolation:isolate;vertical-align:middle;
 clip-path:polygon(var(--cut) 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%,0 var(--cut));
 background:
  linear-gradient(135deg,#0000 calc(var(--cut)*.7071),var(--ft) 0 calc(var(--cut)*.7071 + 1.5px),#0000 0) 0 0/calc(var(--cut)*2) calc(var(--cut)*2) no-repeat,
  linear-gradient(315deg,#0000 calc(var(--cut)*.7071),var(--ft) 0 calc(var(--cut)*.7071 + 1.5px),#0000 0) 100% 100%/calc(var(--cut)*2) calc(var(--cut)*2) no-repeat,
  radial-gradient(ellipse 70% 55% at 62% 30%,color-mix(in srgb,var(--ft) 26%,transparent),transparent 70%),
  radial-gradient(ellipse at 50% 110%,#000,transparent 60%),
  linear-gradient(170deg,#152030,#070b11 70%);
 box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ft) 55%,#2b333f),inset 0 -30px 40px -20px #000}
.cp:after{content:'';position:absolute;inset:0;z-index:3;pointer-events:none;background:var(--uw-scan),linear-gradient(180deg,#ffffff14,#0000 28%)}
.cp .cp-emblem{height:auto;position:absolute;z-index:0;width:92%;left:4%;top:4%;aspect-ratio:1;object-fit:contain;opacity:.13;filter:grayscale(1) brightness(1.6) drop-shadow(0 0 0 transparent);mix-blend-mode:screen}
.cp-figure{position:absolute;z-index:1;left:4%;right:4%;bottom:0;width:92%;height:auto}
.cp-body{fill:#0a0f17;filter:drop-shadow(1.6px -1.2px 0 var(--ft)) drop-shadow(0 0 5px color-mix(in srgb,var(--ft) 55%,transparent))}
.cp-armour{fill:none;stroke:color-mix(in srgb,var(--ft) 45%,#3a4350);stroke-width:1.1;stroke-linecap:round;opacity:.7}
.cp-insignia{fill:var(--ft);filter:drop-shadow(0 0 3px var(--ft))}
.cp-class{position:absolute;z-index:4;left:7%;bottom:7%;display:grid;place-items:center;width:26px;height:29px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:linear-gradient(160deg,color-mix(in srgb,var(--ft) 80%,#fff),color-mix(in srgb,var(--ft) 50%,#000));color:#0b0f14}
.cp-class svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cp-tag{position:absolute;z-index:4;right:6%;top:6%;font:700 9px/1 var(--uw-font-display);letter-spacing:.14em;text-transform:uppercase;color:#e6edf2;padding:4px 7px;background:#05080dcc;border:1px solid color-mix(in srgb,var(--ft) 60%,transparent);clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.cp .cp-art{position:absolute;max-width:none;inset:0;z-index:5;width:100%;height:100%;object-fit:cover;object-position:center 22%}
.cp.has-art .cp-tag,.cp.has-art .cp-emblem,.cp.has-art .cp-figure{display:none}
/* Sizes: sm = roster (circle crop, 40–56px); md = cards (120–160px); lg = hero (~220px). */
.cp-sm{--cp-w:44px;aspect-ratio:1;border-radius:50%;clip-path:none;box-shadow:inset 0 0 0 1.5px var(--ft),0 0 10px color-mix(in srgb,var(--ft) 35%,transparent)}
.cp-sm .cp-figure{left:-6%;right:auto;width:112%;bottom:-18%}
.cp-sm .cp-tag,.cp-sm .cp-class,.cp-sm .cp-emblem{display:none}
.cp-sm .cp-art{object-position:center 18%}
.cp-md{--cp-w:128px}
.cp-lg{--cp-w:220px;--cut:14px}
.cp-lg .cp-tag{font-size:11px}.cp-lg .cp-class{width:34px;height:38px}.cp-lg .cp-class svg{width:20px;height:20px}
/* Placements */
.gf-commander>.cp{grid-area:e;--cp-w:32px}
.pp-cmds .cp{--cp-w:36px}
.pp-best .cp{--cp-w:72px}.pp-best .cp .cp-tag{display:none}
:root:has(#war) .cmd{grid-template-columns:48px 1fr;align-items:center}
:root:has(#war) .cmd .cp{--cp-w:46px}
:root:has(#war) .sortie .cp{--cp-w:36px}
:root:has(#war) .battle .cp{--cp-w:88px}
:root:has(#war) .battle .cp .cp-tag{display:none}
:root:has(#war) .sheet-head{display:flex;gap:16px;align-items:center;margin-bottom:6px}
:root:has(#war) .sheet-head .cp{--cp-w:112px}
:root:has(#war) .grid.portraits{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
:root:has(#war) .portrait-pick{display:flex;flex-direction:column;align-items:center;gap:5px;padding:5px;background:none;border:1px solid transparent;cursor:pointer;color:var(--muted);font:700 11px/1.2 var(--uw-font-display);letter-spacing:.06em;text-transform:uppercase}
:root:has(#war) .portrait-pick .cp{--cp-w:100%;max-width:110px}
:root:has(#war) .portrait-pick .cp-tag{display:none}
:root:has(#war) .portrait-pick.sel{color:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 20px -8px var(--accent)}
:root:has(#war) .portrait-pick:hover .cp{filter:brightness(1.15)}
:root:has(#war) .portrait-pick:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--uw-focus)}
:root:has(#war) label.field small{letter-spacing:.06em;text-transform:none;color:var(--muted)}
/* Celebrations: a portrait replaces the hex badge (commissioned and level-up). */
:root:has(#war) .cbadge:has(.cp){width:auto;height:auto;clip-path:none;background:none;filter:drop-shadow(0 0 26px var(--cc))}
:root:has(#war) .cbadge .cp{--cp-w:150px}
.cel-portrait{position:relative;display:inline-block}
.cel-portrait>b{position:absolute;right:-12px;bottom:-8px;z-index:6;display:grid;place-items:center;width:46px;height:52px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:linear-gradient(160deg,color-mix(in srgb,var(--cc) 80%,white),color-mix(in srgb,var(--cc) 50%,black));color:#0b0f14;font:700 24px/1 var(--uw-font-display)}
@media (max-width:700px){:root:has(#war) .grid.portraits{grid-template-columns:repeat(3,minmax(0,1fr))}:root:has(#war) .battle .cp{--cp-w:64px}:root:has(#war) .sheet-head .cp{--cp-w:84px}}
@media (forced-colors:active){.cp{forced-color-adjust:none}}

/* ================================================================== 8 Accessibility */
@media (prefers-reduced-motion:reduce){
 .uw-cta,.command-shell :is(.home-play,.gf-cta,.home-step-action.primary-step),.command-shell .home-launch .primary,dialog:not(.card-reveal):not(.uw-celebrate) .primary,.game-layout .turn-button,.result .primary,.mulligan .primary,:root:has(#war) button.primary,
 .command-shell .rail-faction[aria-pressed=true],:root:has(#war) .order,dialog:not(.card-reveal):not(.uw-celebrate)[open],#toast:not(:empty),.game-layout .reactor-panel.overload{animation:none!important}
 .command-shell .home-factions .faction:before{transition:none}
 .command-shell .home-factions .faction:hover:before{--uw-sweep:-40%}
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
 .uw-rays,.uw-cbox,.uw-node.available .uw-hex,.uw-hex.available,.pp-ring img,#player-profile.pp-ring .profile-preview>img,.fm-finish-holographic,.fm-flash{animation:none!important}
 .fm-results mark{transition:none}
}
@media (prefers-contrast:more){
 :root{--uw-scan:linear-gradient(#0000,#0000);--uw-muted:#d0dae2;--uw-ink-2:#e6edf2;--uw-bezel:linear-gradient(#e6edf2,#e6edf2);--uw-bezel-dim:linear-gradient(#c8d3dc,#c8d3dc)}
 .command-shell{--muted:#d0dae2;--subtle:#c0ccd5;--ink-2:#e6edf2}
 :root:has(#war){--muted:#d0dae2}
}
/* Windows high contrast and other forced palettes: drop the decorative shapes and let the system
   colours draw plain, bordered boxes. */
@media (forced-colors:active){
 .uw-panel,.uw-tile,.uw-btn,.uw-cta,
 .command-shell :is(.home-dossier,.home-war,.home-news,.home-deck,.home-launch,.home-hero,.gf-tile,.gf-commander,.home-steps a,.home-start li,.home-play,.gf-cta,.home-secondary,.home-step-action,.deck-row,.faction,.home-stats div),
 dialog,#toast,.game-layout :is(.arena,.side-panel>.panel,.reactor-panel,.turn-button,.side-panel button,.commander .health,.commander .flux,.hand-card .mana),
 :root:has(#war) :is(.rail,#planetPanel,.sorties,.cmd,.sortie,.faction-pick,.tcol,.tdetail,.cbonus,.order,.chip,.wallet,button,.back,.feed){
  clip-path:none!important;border:1px solid CanvasText!important;background:Canvas!important;color:CanvasText!important;text-shadow:none!important;animation:none!important;
 }
 .command-shell .home-factions .faction:before,.command-shell .home-hero:after,.game-layout .arena::after{display:none}
 .command-shell .home-hero h1,.result h1,:root:has(#war) .cbox h1{background:none;color:CanvasText;filter:none}
 :is(button,a,[tabindex]):focus-visible{outline:2px solid Highlight!important;outline-offset:2px}
}
