/* Wall Street - desktop layout (861px and up): a pro tool.
   A slim rail with net worth and what is due, a sticky bar per page with its actions, a summary strip,
   sortable tables with a detail panel beside them, and the keyboard for everything.
   Every rule lives inside the min-width query, so phones (860px and down) never see any of it.
   The looks keep their colours, fonts and panels; this file only places things, plus a few touches per look. */

.desk-only { display: none; }

@media (min-width: 861px) {
  :root {
    --dk-rail: 220px; --dk-pad: 28px; --dk-gap: 18px; --dk-bar-h: 72px;
    --dk-insp: clamp(300px, 25vw, 430px);
    --dk-sel: var(--bg-3); --dk-sel-bar: var(--accent); --dk-th-bg: var(--bg-3); --dk-bar-bg: var(--bg);
    --dk-s1: var(--accent); --dk-s2: var(--pos); --dk-s3: #58a6e8; --dk-s4: #e5a53c; --dk-s5: #df6a8a;
    --dk-rail-bg: var(--bg); --dk-rail-line: var(--line); --dk-rail-lw: 1px;
  }
  .desk-only { display: revert; }
  body { font-size: 15px; }

  /* ---------- shell: the rail ---------- */
  /* the rail's colour is painted on .app so it runs the full height of the page, not just the sticky 100vh */
  .app { grid-template-columns: var(--dk-rail) minmax(0, 1fr); min-height: 100vh;
    background: linear-gradient(90deg, var(--dk-rail-bg) 0 calc(var(--dk-rail) - var(--dk-rail-lw)), var(--dk-rail-line) 0 var(--dk-rail), transparent 0) no-repeat; }
  .side { z-index: 20; padding: 18px 0 14px; background: none; border-right: 0; overflow-y: auto; scrollbar-width: none; }
  .side::-webkit-scrollbar { display: none; }
  .brand { padding: 0 20px 22px; }
  .nav { gap: 2px; }
  .nav-item { gap: 0; padding: 9px 16px 9px 18px; font-size: 15px; position: relative; }
  .nav .ico { display: inline-flex; width: 18px; height: 18px; margin-right: 11px; flex: none; }
  .nav-n { display: none; }
  .nav-n.hot { display: block; font-size: 11px; color: #fff; background: var(--neg); border-radius: 999px; padding: 1px 7px; font-weight: 700; line-height: 16px; }
  .dk-k { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; margin-left: 8px; border: 1px solid currentColor; border-radius: 4px; font: 600 10.5px/1 var(--font); opacity: .32; flex: none; letter-spacing: 0; text-transform: none; }
  .nav-item.on .dk-k, .nav-item:hover .dk-k { opacity: .75; }

  /* net worth and what is due, always in view */
  .dk-ticker { display: flex; flex-direction: column; gap: 8px; margin: 20px 14px 0; }
  .dk-tick { display: flex; flex-direction: column; gap: 2px; padding: 11px 13px 10px; border: 1px solid var(--line); border-radius: var(--r); background: var(--bg-2); color: var(--fg); }
  .dk-tick .label { font-size: 10.5px; }
  .num.dk-tick-n, .dk-tick-n { font-size: 21px; line-height: 1.15; white-space: nowrap; }
  .dk-tick-d { font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .side-foot { padding: 18px 20px 0; gap: 6px; }
  .dk-keys-link { display: inline-flex; align-items: center; }
  .dk-keys-link .dk-kbd { margin-left: 6px; }
  @media (hover: hover) {
    .dk-tick:hover { border-color: var(--line-2); }
  }

  /* ---------- the page: sticky bar, summary strip ---------- */
  .main { max-width: none; padding: 0 var(--dk-pad) 72px; }
  .main .panel { margin-bottom: var(--dk-gap); }
  .page-head.dk-bar { position: sticky; top: 0; z-index: 15; display: flex; align-items: center; justify-content: space-between; gap: 24px;
    height: var(--dk-bar-h); margin: 0 calc(-1 * var(--dk-pad)) 20px; padding: 0 var(--dk-pad); background: var(--dk-bar-bg); border-bottom: 1px solid var(--line); }
  .dk-bar .dk-title { display: flex; align-items: baseline; gap: 18px; min-width: 0; }
  .dk-bar h1 { font-size: 27px; margin: 0; white-space: nowrap; line-height: 1.1; }
  .dk-sub { color: var(--fg-2); font-size: 13px; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dk-actions { display: flex; align-items: center; gap: 10px; flex: none; }
  .dk-bar .btn { height: 36px; padding: 0 15px; font-size: 14px; }

  .summary-row.dk-kpis { display: flex; gap: 0; padding: 0; margin: 0 0 var(--dk-gap); border-bottom-width: 1px; overflow: hidden; }
  :root[data-theme="dark"] .dk-kpis, :root[data-theme="light"] .dk-kpis { background: var(--bg-2); border: 1px solid var(--line); border-radius: var(--r); }
  .dk-kpi { flex: 1 1 0; min-width: 0; padding: 14px 20px 13px; border-left: 1px solid var(--line); }
  .dk-kpi:first-child { border-left: 0; }
  .dk-kpi.big { flex-grow: 1.3; }
  .dk-kpi .num { font-size: 22px; margin-top: 4px; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dk-kpi.big .num { font-size: 30px; }
  .dk-kpi .num.dk-kpi-txt { font-family: var(--font); font-size: 16px; font-weight: 700; letter-spacing: 0; margin-top: 7px; }
  .dk-note { font-size: 12px; color: var(--fg-3); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dk-mix { flex-grow: 1.6; }
  .dk-mix .dk-stack { margin: 10px 0 9px; }
  .dk-mix .dk-legend { flex-wrap: nowrap; gap: 14px; font-size: 12px; overflow: hidden; }
  .dk-legend .num { font-size: inherit; margin: 0; }

  /* ---------- list + detail ---------- */
  .dk-split { display: grid; grid-template-columns: minmax(0, 1fr) var(--dk-insp); gap: var(--dk-gap); align-items: start; }
  .dk-list { min-width: 0; }
  .dk-list > .panel:last-child, .dk-list > .dk-2 > .panel { margin-bottom: 0; }
  .dk-list > .dk-2 { margin-bottom: 0; }
  .dk-side { position: sticky; top: calc(var(--dk-bar-h) + 18px); display: flex; flex-direction: column; max-height: calc(100vh - var(--dk-bar-h) - 36px); }
  .panel.dk-insp { margin: 0; min-height: 0; overflow: auto; scrollbar-width: thin; }
  .dk-ib { padding: 18px 20px 18px; border-bottom: 1px solid var(--line); }
  .dk-it { display: flex; align-items: center; gap: 10px; min-width: 0; }
  .dk-it h2 { margin: 0; font-size: 22px; line-height: 1.2; overflow-wrap: anywhere; }
  .num.dk-ibig { font-size: 38px; line-height: 1.1; margin: 12px 0 2px; letter-spacing: -0.02em; }
  .num.dk-ibig2 { font-size: 28px; line-height: 1.1; }
  .dk-iacts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
  .dk-iacts .btn { height: 36px; }
  .dk-iacts .btn[data-primary] { flex: 1 1 100%; height: 42px; font-size: 15px; }
  .dk-isec { border-bottom: 1px solid var(--line); padding: 6px 0; }
  .dk-isec:last-child { border-bottom: 0; }
  .dk-isec .kv { padding: 7px 20px; border-bottom: 0; gap: 18px; font-size: 14px; }
  .dk-kv-v { text-align: right; min-width: 0; overflow-wrap: anywhere; }
  .dk-il { padding: 8px 20px 4px; }
  .dk-mini li { padding: 6px 20px; border-bottom: 0; font-size: 13.5px; gap: 10px; }
  .dk-mini .w-date { width: 50px; }
  .dk-isec .empty { padding: 6px 20px 12px; }
  .dk-insp .goal-nums { align-items: baseline; margin-top: 10px; }
  .dk-insp .mg-pct { font-size: 28px; }
  .dk-insp .tbar { margin: 14px 0 4px; }
  .dk-hint { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--fg-3); white-space: nowrap; }
  .dk-hint .dk-kbd { margin: 0; }

  /* ---------- tables ---------- */
  .dk-tbl { font-size: 14.5px; }
  .dk-tbl.tbl th { padding: 9px 12px; background: var(--dk-th-bg); position: sticky; top: var(--dk-bar-h); z-index: 2; }
  .dk-tbl.tbl td { padding: 10px 12px; white-space: nowrap; }
  .dk-tbl td.dk-c-main { white-space: normal; min-width: 160px; width: 40%; }
  .dk-edit { width: 30px; padding: 0; }
  .dk-edit svg { display: block; }
  .dk-c-acct { max-width: 190px; overflow: hidden; text-overflow: ellipsis; }
  .dk-tbl.tbl th:first-child, .dk-tbl.tbl td:first-child { padding-left: 18px; }
  .dk-tbl.tbl th:last-child, .dk-tbl.tbl td:last-child { padding-right: 18px; }
  .panel.dk-tpanel { overflow: clip; }
  .dk-sort { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; }
  .dk-sort i { font-style: normal; font-size: 8px; min-width: 8px; }
  th.r .dk-sort { flex-direction: row-reverse; }
  .dk-th.on { color: var(--fg); }
  .dk-row { cursor: pointer; scroll-margin: calc(var(--dk-bar-h) + 48px) 0 20px; }
  .dk-row.sel > td { background: var(--dk-sel); }
  .dk-row.sel > td:first-child { box-shadow: inset 3px 0 0 var(--dk-sel-bar); }
  .dk-row.dim td, .dk-row.dim .strong { color: var(--fg-3); }
  .dk-row.dk-done .strong { color: var(--fg-2); }
  .dk-rsub { font-size: 12.5px; color: var(--fg-2); margin-top: 1px; }
  .dk-faint { color: var(--fg-3); opacity: .8; }
  .dk-nowrap { white-space: nowrap; }
  .dk-c-tag { width: 1%; white-space: nowrap; }
  .dk-c-act { width: 1%; white-space: nowrap; text-align: right; }
  .dk-c-act .btn + .btn { margin-left: 6px; }
  .dk-c-date { width: 86px; white-space: nowrap; line-height: 1.3; }
  .dk-c-share { width: 120px; white-space: nowrap; }
  .dk-tbl .dk-c-prog { width: 170px; }
  .dk-c-prog .bar { display: inline-block; vertical-align: middle; width: 110px; margin: 0 10px 0 0; }
  .dk-tbl .dk-c-drift { width: 170px; min-width: 140px; }
  .dk-c-drift .tbar { margin: 4px 0; }
  .dk-unassigned td { color: var(--fg-3); }
  .dk-share { display: inline-block; vertical-align: middle; width: 60px; height: 6px; margin-right: 10px; background: var(--line); border-radius: 3px; overflow: hidden; flex: none; }
  .dk-share i { display: block; height: 100%; background: var(--pos); border-radius: inherit; }
  .dk-share.neg i { background: var(--neg); }
  .dk-tbl .tag { vertical-align: 1px; }
  .dk-tbl-done.tbl td { padding-top: 8px; padding-bottom: 8px; }
  /* the 30-day cash-flow strip on Upcoming */
  .dk-cf { padding: 12px 18px 8px; border-bottom: 1px solid var(--line); }
  .dk-cf-grid, .dk-cf-axis { display: grid; grid-template-columns: repeat(31, minmax(0, 1fr)); gap: 3px; }
  .dk-cf-d { display: flex; flex-direction: column; height: 64px; border-radius: 3px; }
  .dk-cf-d.we { background: color-mix(in srgb, var(--fg) 4%, transparent); }
  .dk-cf-d.today { background: color-mix(in srgb, var(--accent) 14%, transparent); }
  .dk-cf-d .up, .dk-cf-d .dn { flex: 1; display: flex; }
  .dk-cf-d .up { align-items: flex-end; border-bottom: 1px solid var(--line-2); }
  .dk-cf-d .dn { align-items: flex-start; }
  .dk-cf-d i { display: block; width: 100%; max-width: 16px; margin: 0 auto; }
  .dk-cf-d .up i { background: var(--pos); border-radius: 3px 3px 0 0; }
  .dk-cf-d .dn i { background: var(--neg); border-radius: 0 0 3px 3px; }
  .dk-cf-d.late .dn i { background: repeating-linear-gradient(45deg, var(--neg) 0 4px, color-mix(in srgb, var(--neg) 55%, transparent) 4px 8px); }
  .dk-cf-d.dk-pin { cursor: pointer; }
  .dk-cf-axis { margin-top: 5px; font-size: 10.5px; color: var(--fg-3); white-space: nowrap; }
  .dk-cf-axis span { overflow: visible; }
  @media (hover: hover) { .dk-cf-d.dk-pin:hover { background: var(--bg-3); } }
  .dk-scroll { max-height: 520px; overflow: auto; scrollbar-width: thin; overscroll-behavior: contain; }
  .dk-scroll.dk-scroll-tall { max-height: max(420px, calc(100vh - 330px)); }
  .dk-scroll .dk-tbl th { top: 0; }
  .dk-scroll .dk-row { scroll-margin: 44px 0 8px; }
  @media (hover: hover) {
    .dk-tbl tbody tr.dk-row:hover > td { background: var(--bg-3); }
    .dk-tbl tbody tr.dk-row.sel:hover > td { background: var(--dk-sel); }
    .dk-sort:hover { color: var(--fg); }
  }

  /* keys */
  .dk-kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; margin-left: 9px; border: 1px solid currentColor; border-radius: 4px;
    font: 600 10.5px/1 var(--font); letter-spacing: 0; text-transform: none; opacity: .62; vertical-align: 1px; text-shadow: none; -webkit-text-stroke: 0; }
  .dk-mkeys { display: inline-flex; align-items: center; gap: 2px; font-size: 12px; color: var(--fg-3); white-space: nowrap; }
  .dk-mkeys .dk-kbd { margin: 0 3px 0 10px; }
  .dk-mkeys .dk-kbd:first-child { margin-left: 0; }
  .dk-keys-dlg .tbl td { padding: 8px 10px; }
  .dk-keys-dlg .tbl td:first-child { width: 1%; }
  .dk-keys-dlg .dk-kbd { margin: 0; opacity: .85; }
  .modal { width: min(520px, calc(100vw - 32px)); top: 9vh; }
  .modal:has(.dk-keys-dlg) { width: min(600px, calc(100vw - 32px)); }
  .modal .seg.help-os { width: max-content; }

  /* ---------- overview: a dashboard, not a scroll ---------- */
  .dk-ov { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: auto 1fr; gap: var(--dk-gap); align-items: start; }
  .dk-ov > .panel, .dk-ov > .hero { margin: 0; }
  .dk-ov > .dk-hero { grid-column: 1 / span 8; grid-row: 1; }
  .dk-ov > .dk-chart { grid-column: 1 / span 8; grid-row: 2; }
  .dk-ov > .dk-ov-side { grid-column: 9 / span 4; grid-row: 1 / span 2; display: flex; flex-direction: column; gap: var(--dk-gap); min-width: 0; }
  .dk-ov-side > .panel { margin: 0; }
  .dk-ov > .dk-o-accts { grid-column: 1 / span 5; }
  .dk-ov > .dk-o-goals { grid-column: 6 / span 4; }
  .dk-ov > .dk-o-drift { grid-column: 10 / span 3; }
  .hero.dk-hero { display: flex; align-items: stretch; justify-content: space-between; gap: 28px; padding: 20px 24px 22px; margin: 0; }
  :root[data-theme="dark"] .dk-hero, :root[data-theme="light"] .dk-hero { background: var(--bg-2); border: 1px solid var(--line); border-radius: var(--r); }
  .dk-hero-main { flex: 1; min-width: 0; }
  .dk-hero .hero-top { justify-content: flex-start; gap: 18px; }
  .dk-hero .hero-num { font-size: 72px; margin: 14px 0 14px; }
  .dk-hero-stats { display: grid; grid-template-columns: repeat(2, minmax(0, auto)); gap: 16px 34px; align-content: end; padding: 0 0 4px 28px; border-left: 1px solid var(--line); }
  .dk-hero-stats .num { font-size: 21px; margin-top: 3px; white-space: nowrap; }
  .dk-ov > .dk-chart { align-self: stretch; display: flex; flex-direction: column; }
  .dk-chart .chart .line { stroke-width: 2.5; }
  .chart .grid { stroke: var(--line); stroke-width: 1; }
  .chart .ax { fill: var(--fg-3); font: 600 11px var(--font); letter-spacing: .02em; }
  .chart .area { pointer-events: none; }
  .chart .a0 { stop-color: var(--pos); stop-opacity: .2; }
  .chart .a1 { stop-color: var(--pos); stop-opacity: 0; }
  .chart.down .a0, .chart.down .a1 { stop-color: var(--neg); }
  .dk-chart .chart-wrap { flex: 1 1 0; min-height: 240px; overflow: hidden; padding-top: 16px; }
  .dk-ell { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
  .dk-blk { display: block; }
  .dk-r { text-align: right; flex: none; }
  .dk-due-top { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; padding: 14px 18px 14px; border-bottom: 1px solid var(--line); }
  .num.dk-big { font-size: 40px; line-height: 1.05; margin-top: 5px; letter-spacing: -0.02em; white-space: nowrap; }
  .dk-due-30 { text-align: right; }
  .dk-due-30 .num { font-size: 19px; margin-top: 3px; }
  .dk-due-list li { gap: 10px; padding: 8px 18px; min-height: 46px; }
  .dk-when { display: flex; flex-direction: column; width: 50px; flex: none; line-height: 1.2; }
  .dk-when .num { font-size: 13.5px; }
  .dk-when .small { font-size: 11px; }
  .dk-due-act { flex: none; min-width: 60px; text-align: right; }
  .dk-due-act .btn { height: 26px; padding: 0 10px; }
  .dk-due-list .dk-row.sel, .dk-o-accts .dk-row.sel { background: var(--dk-sel); box-shadow: inset 3px 0 0 var(--dk-sel-bar); }
  .dk-mg-body { padding: 14px 18px 16px; }
  .dk-mg .mg-name { font-size: 17px; }
  .dk-mg .mg-pct { font-size: 28px; line-height: 1; }
  .dk-mg .goal-nums { margin-top: 4px; }
  .dk-mg .meter { margin: 14px 0 12px; }
  .dk-mg-foot { gap: 12px; margin-top: 8px; }
  .dk-o-accts .group-head { padding-top: 10px; }
  .dk-o-accts .acct-row { gap: 10px; padding: 7px 18px; }
  .dk-o-accts .dk-share { width: 56px; margin: 0 4px 0 0; }
  .dk-amt { min-width: 96px; text-align: right; }
  .dk-o-goals .mini-goal { padding: 11px 18px; }
  .dk-o-goals .bar { margin: 7px 0 5px; }
  .dk-o-drift li { align-items: flex-start; }
  .dk-welcome { max-width: 900px; }

  /* ---------- plan ---------- */
  .dk-alloc-body { padding: 16px 20px 16px; }
  .dk-alloc-row { display: grid; grid-template-columns: 58px minmax(0, 1fr); align-items: center; gap: 12px; margin-bottom: 10px; }
  .dk-stack { display: flex; gap: 2px; height: 10px; border-radius: 999px; overflow: hidden; background: var(--line); }
  .dk-stack.big { height: 20px; border-radius: 5px; }
  .dk-stack i { display: block; height: 100%; min-width: 2px; }
  .dk-legend { display: flex; flex-wrap: wrap; gap: 6px 20px; font-size: 13px; }
  .dk-alloc .dk-legend { padding-left: 70px; margin-top: 4px; }
  .dk-legend > span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
  .dk-legend i, .dk-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: none; }
  .dk-dot { margin-right: 9px; vertical-align: 0; }
  :is(.dk-stack, .dk-legend) .s1, .dk-dot.s1 { background: var(--dk-s1); }
  :is(.dk-stack, .dk-legend) .s2, .dk-dot.s2 { background: var(--dk-s2); }
  :is(.dk-stack, .dk-legend) .s3, .dk-dot.s3 { background: var(--dk-s3); }
  :is(.dk-stack, .dk-legend) .s4, .dk-dot.s4 { background: var(--dk-s4); }
  :is(.dk-stack, .dk-legend) .s5, .dk-dot.s5 { background: var(--dk-s5); }
  :is(.dk-stack, .dk-legend) .s0 { background: var(--fg-3); opacity: .45; }
  .dk-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--dk-gap); align-items: start; }
  .dk-2 .income-row .inp-money { width: 140px; margin-left: auto; }

  /* ---------- history: settings as tiles ---------- */
  .dk-settings { margin-top: var(--dk-gap); }
  .dk-set-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); margin: -1px 0 0 -1px; }
  .dk-set { display: flex; flex-direction: column; gap: 6px; padding: 16px 20px 18px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); min-width: 0; }
  .dk-set .acts { margin-top: auto; padding-top: 8px; gap: 8px; flex-wrap: wrap; }
  .dk-set-wide { grid-column: span 2; }
  .dk-set .copies { margin-top: 4px; }

  /* ---------- 1200 to 1399 (a laptop, the Chrome app window): tighter, secondary columns fold into the sub line ---------- */
  .dk-sep { color: inherit; }
  @media (min-width: 1400px) {
    .dk-nx, .dk-nx + .dk-sep, .dk-rsub > .dk-nx:first-child + .dk-sep { display: none; }
  }
  @media (max-width: 1399px) {
    :root { --dk-rail: 200px; --dk-pad: 24px; --dk-insp: 300px; }
    .dk-xl { display: none; }
    .dk-tbl.tbl th, .dk-tbl.tbl td { padding-left: 10px; padding-right: 10px; }
    .dk-tbl.tbl th:first-child, .dk-tbl.tbl td:first-child { padding-left: 16px; }
    .dk-tbl.tbl th:last-child, .dk-tbl.tbl td:last-child { padding-right: 14px; }
    .dk-tbl .dk-c-prog { width: 130px; }
    .dk-c-prog .bar { width: 76px; }
    .brand { padding: 0 16px 22px; }
    .dk-ticker { margin: 20px 12px 0; }
    .side-foot { padding-left: 18px; padding-right: 18px; }
    .dk-ov > .dk-hero, .dk-ov > .dk-chart { grid-column: 1 / span 7; }
    .dk-ov > .dk-ov-side { grid-column: 8 / span 5; }
    .dk-hero .hero-num { font-size: 62px; }
    .dk-hero-stats { gap: 14px 22px; padding-left: 22px; }
    .dk-bar .dk-sub { max-width: 34vw; }
  }

  /* ---------- in between: 861 to 1199 folds the rail to icons ---------- */
  @media (max-width: 1199px) {
    :root { --dk-rail: 78px; --dk-pad: 20px; --dk-insp: clamp(280px, 31vw, 340px); }
    .brand { justify-content: center; padding: 0 0 18px; }
    .brand-name { display: none; }
    .nav { padding: 0 8px; }
    .nav-item { flex-direction: column; gap: 4px; padding: 9px 2px 8px; font-size: 10.5px; line-height: 1.1; text-align: center; border-left: 0; border-radius: 10px; }
    .nav-item .nav-label { flex: none; }
    :root[data-theme] .nav .ico { display: block !important; width: 21px; height: 21px; margin: 0; }
    .nav-n.hot { position: absolute; top: 3px; right: 9px; padding: 0 5px; font-size: 10px; line-height: 15px; }
    .dk-k, .dk-ticker, .side-status { display: none; }
    .side-foot { padding: 14px 4px 0; align-items: center; gap: 8px; }
    .side-foot .link { font-size: 11px; text-align: center; }
    .dk-keys-link .dk-kbd { display: none; }
    .dk-sub { display: none; }
    .dk-kpi { padding: 12px 14px; }
    .dk-kpi .num { font-size: 19px; }
    .dk-kpi.big .num { font-size: 25px; }
    .dk-kpi.dk-mix { display: none; }
    .dk-hide-md { display: none; }
    .dk-hero { flex-direction: column; gap: 16px; }
    .dk-hero .hero-num { font-size: 58px; }
    .dk-hero-stats { grid-template-columns: repeat(4, auto); justify-content: start; padding: 14px 0 0; border-left: 0; border-top: 1px solid var(--line); }
    .dk-ov > .dk-hero, .dk-ov > .dk-chart { grid-column: 1 / span 7; }
    .dk-ov > .dk-ov-side { grid-column: 8 / span 5; }
    .dk-ov > .dk-o-accts { grid-column: 1 / span 7; }
    .dk-ov > .dk-o-goals { grid-column: 8 / span 5; }
    .dk-ov > .dk-o-drift { grid-column: 8 / span 5; }
    .num.dk-big { font-size: 32px; }
    .dk-2 { grid-template-columns: minmax(0, 1fr); }
    .dk-set-wide { grid-column: auto; }
  }
  @media (max-width: 1599px) {
    .dk-hide-lg, .dk-kpi:nth-child(6) { display: none; }
  }
  @media (max-width: 1023px) {
    /* too narrow for list and detail side by side: the detail panel follows the list */
    .dk-split { grid-template-columns: minmax(0, 1fr); }
    .dk-side { position: static; max-height: none; }
    .dk-hide-sm { display: none; }
    .dk-actions .dk-kbd { display: none; }
  }
  .dk-xxl { display: none; }
  @media (min-width: 1600px) {
    :root { --dk-pad: 36px; --dk-gap: 20px; }
    .dk-xxl { display: block; }
    .dk-hero-stats { grid-template-columns: repeat(3, minmax(0, auto)); }
    .dk-hero .hero-num { font-size: 80px; }
    .dk-ov > .dk-o-accts { grid-column: 1 / span 5; }
  }

  /* decoration never takes a click */
  .dk-share, .dk-stack, .dk-dot, .dk-legend i { pointer-events: none; }

  /* ======================================================================
     per look
     ====================================================================== */

  /* dark + paper: quiet. The bar blurs what scrolls under it. */
  :root[data-theme="dark"], :root[data-theme="light"] { --dk-bar-bg: color-mix(in srgb, var(--bg) 90%, transparent); }
  :root[data-theme="dark"] .dk-bar, :root[data-theme="light"] .dk-bar { backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
  :root[data-theme="dark"] .nav-item.on, :root[data-theme="light"] .nav-item.on { background: var(--bg-2); }
  [data-theme] body { min-height: 100vh; }
  :root[data-theme="light"] { --dk-s3: #3b86d6; --dk-s4: #d18a1a; --dk-s5: #c94c72; }

  /* tycoon: the board is the sky; rail and bar are the navy HUD frame around it */
  :root[data-theme="tycoon"] { --dk-sel: #fff0c0; --dk-sel-bar: #ffb800; --dk-th-bg: #fbeccb; --dk-bar-bg: linear-gradient(180deg, #2a4c8c, #16305e);
    --dk-s1: linear-gradient(180deg, #ff6b6b, #d81e1e); --dk-s2: linear-gradient(180deg, #6ee86e, #23a83b); --dk-s3: linear-gradient(180deg, #ffe27a, #e0a300); --dk-s4: linear-gradient(180deg, #5fe0ee, #159bb0); --dk-s5: linear-gradient(180deg, #b896ff, #6f3fd6); }
  :root[data-theme="tycoon"] .app { background: linear-gradient(90deg, #22437f, #15305f calc(var(--dk-rail) - 3px), #fff 0 var(--dk-rail), rgba(0,0,0,.16) 0 calc(var(--dk-rail) + 4px), transparent 0) no-repeat; }
  [data-theme="tycoon"] .nav { padding: 0 12px; gap: 4px; }
  [data-theme="tycoon"] .nav-item { color: #d4e6ff; border: 2px solid transparent; border-radius: 14px; padding: 8px 10px 8px 12px; }
  [data-theme="tycoon"] .nav-item.on { color: var(--navy); background: linear-gradient(180deg, #ffe98f, #ffbd14); border-color: #c98c00; box-shadow: 0 3px 0 #7a5200, inset 0 2px 0 rgba(255,255,255,.65); text-shadow: 0 1px 0 rgba(255,255,255,.45); }
  [data-theme="tycoon"] .nav-n { color: #9dbde8; text-shadow: none; }
  [data-theme="tycoon"] .nav-item.on .nav-n { color: var(--navy); }
  [data-theme="tycoon"] .nav-n.hot { background: linear-gradient(#ff6b6b, #d81e1e); color: #fff; border: 2px solid #fff; box-shadow: 0 2px 0 rgba(0,0,0,.35); font-family: "Lilita One", sans-serif; font-weight: 400; padding: 0 6px; line-height: 15px; text-shadow: 0 1px 0 rgba(0,0,0,.3); }
  [data-theme="tycoon"] .dk-k { color: #d4e6ff; }
  [data-theme="tycoon"] .nav-item.on .dk-k { color: var(--navy); }
  [data-theme="tycoon"] .dk-tick { position: relative; padding: 10px 13px 10px 50px; background: linear-gradient(180deg, rgba(0,0,0,.34), rgba(0,0,0,.22)); border: 2px solid rgba(255,255,255,.28); border-radius: 16px; box-shadow: inset 0 3px 6px rgba(0,0,0,.35); color: #fff; }
  [data-theme="tycoon"] .dk-tick::before { content: ""; position: absolute; left: 9px; top: 50%; width: 34px; height: 34px; margin-top: -17px; background: url(art/tycoon-cash.png) center / contain no-repeat; filter: drop-shadow(0 2px 1px rgba(0,0,0,.4)); pointer-events: none; }
  [data-theme="tycoon"] .dk-tick-due::before { background-image: url(art/tycoon-dice.png); }
  [data-theme="tycoon"] .dk-tick .label { color: #cfe3ff; font-size: 11px; }
  [data-theme="tycoon"] .num.dk-tick-n { font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 24px; letter-spacing: .01em; color: #fff; -webkit-text-stroke: 1px var(--navy); text-shadow: 0 2px 0 var(--navy); }
  [data-theme="tycoon"] .dk-tick-n.neg { color: #ffd0d0; }
  [data-theme="tycoon"] .dk-tick .pos { color: #8dff9a; } [data-theme="tycoon"] .dk-tick .neg:not(.dk-tick-n) { color: #ff9b9b; }
  [data-theme="tycoon"] .dk-tick .muted { color: #b9d3f5; }
  [data-theme="tycoon"] .side-foot .link { font-size: 14px; }
  [data-theme="tycoon"] .dk-bar { border-bottom: 3px solid #fff; box-shadow: 0 4px 0 rgba(0,0,0,.16); }
  [data-theme="tycoon"] .dk-bar h1 { font-size: 32px; -webkit-text-stroke: 1px #0d1f40; text-shadow: 0 3px 0 #0d1f40; }
  [data-theme="tycoon"] .dk-bar h1::before { width: 44px; height: 44px; margin: -10px 10px -10px 0; filter: drop-shadow(0 2px 1px rgba(0,0,0,.4)); }
  [data-theme="tycoon"] [data-view="overview"] .page-head h1::before { background-image: url(art/emblem-board.png); }
  [data-theme="tycoon"] .dk-sub { color: #bcd6f7; text-shadow: none; }
  [data-theme="tycoon"] .dk-bar .btn { height: 40px; font-size: 16px; }
  [data-theme="tycoon"] .btn .dk-kbd { opacity: 1; color: #fff; border-color: rgba(255,255,255,.75); background: rgba(255,255,255,.2); box-shadow: inset 0 -1px 0 rgba(0,0,0,.15); }
  [data-theme="tycoon"] .btn-ghost .dk-kbd { color: var(--fg-2); border-color: var(--fg-3); background: none; box-shadow: none; }
  [data-theme="tycoon"] .dk-kpi { border-left: 2px dashed var(--line); }
  [data-theme="tycoon"] .dk-kpi:first-child { border-left: 0; }
  [data-theme="tycoon"] .dk-kpi.big { background: linear-gradient(180deg, #fff3cf, #ffe9a8); }
  [data-theme="tycoon"] .dk-kpi.big .num { font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 32px; letter-spacing: .01em; }
  [data-theme="tycoon"] .dk-kpi .num.dk-kpi-txt { font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 17px; }
  [data-theme="tycoon"] .dk-tbl th { font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 12.5px; letter-spacing: .05em; color: var(--fg-2); border-bottom: 2px solid var(--line); }
  [data-theme="tycoon"] .dk-th.on { color: var(--navy); }
  [data-theme="tycoon"] .dk-row.sel > td { border-color: #f2d98a; }
  [data-theme="tycoon"] .dk-row.sel > td:first-child { box-shadow: inset 5px 0 0 #ffb800; }
  [data-theme="tycoon"] .dk-rsub { color: var(--fg-3); }
  [data-theme="tycoon"] .dk-ibig, [data-theme="tycoon"] .dk-big, [data-theme="tycoon"] .dk-ibig2 { font-family: "Lilita One", sans-serif; font-weight: 400; letter-spacing: .01em; }
  [data-theme="tycoon"] .num.dk-ibig { font-size: 40px; text-shadow: 0 3px 0 rgba(27,42,74,.14); }
  [data-theme="tycoon"] .dk-it h2 { font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 24px; letter-spacing: .02em; }
  [data-theme="tycoon"] .dk-hero-stats { border-left-color: rgba(255,255,255,.3); }
  [data-theme="tycoon"] .dk-hero .hero-num { font-size: 76px; }
  [data-theme="tycoon"] .dk-due-top { background: linear-gradient(180deg, #fff3cf, #fff8e8); border-bottom: 2px dashed var(--line); }
  [data-theme="tycoon"] .dk-due-list .dk-row.sel, [data-theme="tycoon"] .dk-o-accts .dk-row.sel { background: var(--dk-sel); box-shadow: inset 5px 0 0 #ffb800; }
  [data-theme="tycoon"] .dk-stack { background: #d9e6f5; }
  [data-theme="tycoon"] .dk-stack.big { height: 24px; border: 3px solid var(--navy); border-radius: 999px; box-shadow: inset 0 3px 4px rgba(0,0,0,.2); gap: 0; }
  [data-theme="tycoon"] .dk-stack.big i { box-shadow: inset 0 2px 0 rgba(255,255,255,.45), inset -2px 0 0 rgba(27,42,74,.35); }
  [data-theme="tycoon"] .dk-legend i, [data-theme="tycoon"] .dk-dot { border: 2px solid var(--navy); width: 13px; height: 13px; border-radius: 50%; }
  [data-theme="tycoon"] .dk-share { height: 10px; border: 2px solid var(--navy); border-radius: 999px; background: #d9e6f5; }
  [data-theme="tycoon"] .dk-share i { background: linear-gradient(180deg, #8df58d, #23a83b); }
  [data-theme="tycoon"] .dk-share.neg i { background: linear-gradient(180deg, #ff8a8a, #d81e1e); }
  [data-theme="tycoon"] .dk-set { border-color: var(--line); }
  [data-theme="tycoon"] .dk-cf { background: linear-gradient(180deg, #fff3cf, #fff8e8); }
  [data-theme="tycoon"] .dk-cf-d .up { border-bottom: 2px solid var(--navy); }
  [data-theme="tycoon"] .dk-cf-d .up i { background: linear-gradient(180deg, #8df58d, #23a83b); box-shadow: inset 0 2px 0 rgba(255,255,255,.5), 0 0 0 1.5px #157a2a; border-radius: 5px 5px 0 0; }
  [data-theme="tycoon"] .dk-cf-d .dn i { background: linear-gradient(180deg, #d81e1e, #ff6b6b); box-shadow: inset 0 -2px 0 rgba(255,255,255,.4), 0 0 0 1.5px #9c1414; border-radius: 0 0 5px 5px; }
  [data-theme="tycoon"] .dk-cf-d.today { background: rgba(255,197,49,.35); box-shadow: inset 0 0 0 2px #ffb800; }
  [data-theme="tycoon"] .dk-cf-d.we { background: rgba(27,42,74,.05); }
  [data-theme="tycoon"] .dk-cf-axis { font-family: "Lilita One", sans-serif; color: var(--fg-2); letter-spacing: .02em; }
  [data-theme="tycoon"] .dk-kbd { font-family: "Nunito", sans-serif; font-weight: 800; }
  /* dialogs get the same ribbon as the cards */
  [data-theme="tycoon"] .modal .mform > h3:first-child { margin: -24px -24px 18px; padding: 15px 24px 13px; background: linear-gradient(180deg, #ff5a5a, #d81e1e); color: #fff; border-bottom: 3px solid #fff; text-shadow: 0 2px 0 rgba(0,0,0,.3); font-size: 22px; }
  [data-theme="tycoon"] .modal .mform > h3:first-child + .intro { margin-top: 0; }
  [data-theme="tycoon"] .dk-mkeys .dk-kbd { color: var(--fg-2); border-color: var(--fg-3); background: #fff; }
  /* ribbons: each panel gets its colour on purpose instead of by position */
  :root[data-theme="tycoon"] .panel.rib-red .panel-head { background: linear-gradient(180deg, #ff5a5a, #d81e1e); }
  :root[data-theme="tycoon"] .panel.rib-green .panel-head { background: linear-gradient(180deg, #4fd66c, #1d8f3a); }
  :root[data-theme="tycoon"] .panel.rib-gold .panel-head { background: linear-gradient(180deg, #ffd54a, #e0a300); }
  :root[data-theme="tycoon"] .panel.rib-teal .panel-head { background: linear-gradient(180deg, #3ad0e0, #159bb0); }
  :root[data-theme="tycoon"] .panel.rib-purple .panel-head, :root[data-theme="tycoon"] .panel.dk-insp .panel-head { background: linear-gradient(180deg, #a27bff, #6f3fd6); }
  :root[data-theme="tycoon"] .panel.rib-orange .panel-head { background: linear-gradient(180deg, #ffa63d, #e0761a); }
  :root[data-theme="tycoon"] .panel:is(.rib-red, .rib-green, .rib-teal, .rib-purple, .rib-orange, .dk-insp) .panel-head { color: #fff; text-shadow: 0 2px 0 rgba(0,0,0,.3); }
  :root[data-theme="tycoon"] .panel:is(.rib-red, .rib-green, .rib-teal, .rib-purple, .rib-orange, .dk-insp) .panel-head :is(.label, .link, .muted, .num, .warn, .dk-hint) { color: #fff; }
  :root[data-theme="tycoon"] .panel.rib-gold .panel-head { color: var(--navy); text-shadow: 0 1px 0 rgba(255,255,255,.4); }
  :root[data-theme="tycoon"] .panel.rib-gold .panel-head :is(.label, .link, .muted, .num) { color: var(--navy); }
  :root[data-theme="tycoon"] .panel .panel-head .dk-kbd { border-color: rgba(255,255,255,.7); }
  :root[data-theme="tycoon"] .panel-head .tag { text-shadow: none; }
  @media (hover: hover) {
    [data-theme="tycoon"] .nav-item:hover { background: rgba(255,255,255,.1); color: #fff; }
    [data-theme="tycoon"] .nav-item.on:hover { background: linear-gradient(180deg, #ffe98f, #ffbd14); color: var(--navy); }
    [data-theme="tycoon"] .dk-tbl tbody tr.dk-row:hover > td { background: #fff4d6; }
    [data-theme="tycoon"] .dk-tbl tbody tr.dk-row.sel:hover > td { background: var(--dk-sel); }
    [data-theme="tycoon"] .dk-tick:hover { border-color: rgba(255,255,255,.6); }
  }
  @media (max-width: 1199px) {
    [data-theme="tycoon"] .nav { padding: 0 8px; }
    [data-theme="tycoon"] .nav-item { padding: 8px 2px 7px; border-radius: 14px; font-size: 10.5px; }
    [data-theme="tycoon"] .brand-mark { width: 38px; height: 38px; margin: 0; }
  }

  /* heist: the pause menu. Black bar, white highlight, orange accent line. */
  :root[data-theme="heist"] { --dk-sel: rgba(255,255,255,.075); --dk-sel-bar: var(--orange); --dk-th-bg: #141417; --dk-bar-bg: rgba(10,10,12,.94);
    --dk-s1: #ffffff; --dk-s2: var(--orange); --dk-s3: var(--pos); --dk-s4: #8a8a92; --dk-s5: #e5484d; }
  :root[data-theme="heist"] { --dk-rail-bg: rgba(8,8,10,.72); --dk-rail-line: rgba(255,255,255,.12); }
  [data-theme="heist"] .nav-item { padding-left: 22px; }
  [data-theme="heist"] .dk-bar { border-bottom: 1px solid rgba(255,255,255,.18); box-shadow: inset 0 -2px 0 rgba(240,165,58,.0); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
  [data-theme="heist"] .dk-bar h1 { font-size: 34px; }
  [data-theme="heist"] [data-view="overview"] .page-head h1::before { background-image: url(art/heist-cash.png); }
  [data-theme="heist"] .dk-sub { font-family: "Oswald", sans-serif; text-transform: uppercase; letter-spacing: .12em; font-size: 11.5px; color: #9a9aa0; }
  [data-theme="heist"] .dk-tick { background: rgba(10,10,12,.86); border: 1px solid rgba(255,255,255,.14); border-top: 2px solid rgba(255,255,255,.4); border-radius: 2px; }
  [data-theme="heist"] .num.dk-tick-n { font-family: "Anton", "Impact", sans-serif; font-size: 25px; letter-spacing: .02em; color: #8ee08a; }
  [data-theme="heist"] .dk-tick-n.neg { color: var(--neg); }
  [data-theme="heist"] .dk-kpi { border-left-color: rgba(255,255,255,.1); }
  [data-theme="heist"] .dk-kpi.big { box-shadow: inset 4px 0 0 var(--orange); }
  [data-theme="heist"] .dk-kpi .num.dk-kpi-txt { font-family: "Oswald", sans-serif; text-transform: uppercase; letter-spacing: .06em; font-weight: 500; }
  [data-theme="heist"] .dk-ibig, [data-theme="heist"] .dk-big, [data-theme="heist"] .dk-ibig2 { font-family: "Anton", "Impact", sans-serif; letter-spacing: .02em; font-weight: 400; }
  [data-theme="heist"] .dk-it h2 { font-family: "Anton", "Oswald", sans-serif; font-weight: 400; text-transform: uppercase; letter-spacing: .03em; }
  [data-theme="heist"] .dk-row.sel > td:first-child { box-shadow: inset 4px 0 0 var(--orange); }
  [data-theme="heist"] .dk-row.sel .dk-c-main .strong { color: #fff; }
  [data-theme="heist"] .dk-hero-stats { border-color: rgba(255,255,255,.12); }
  [data-theme="heist"] .dk-due-top, [data-theme="heist"] .dk-ib, [data-theme="heist"] .dk-isec, [data-theme="heist"] .dk-set { border-color: rgba(255,255,255,.1); }
  [data-theme="heist"] .dk-kbd { font-family: "Oswald", sans-serif; font-weight: 500; }
  [data-theme="heist"] .dk-stack.big { border-radius: 0; }
  [data-theme="heist"] .dk-share { border-radius: 0; background: rgba(255,255,255,.12); }
  [data-theme="heist"] .dk-share i { background: #fff; }
  [data-theme="heist"] .dk-share.neg i { background: var(--neg); }
  @media (max-width: 1199px) {
    [data-theme="heist"] .nav-item { padding-left: 2px; font-size: 9.5px; letter-spacing: .06em; }
  }

  /* arcade, comic, casino, passbook: their own chrome on the new pieces */
  :root[data-theme="arcade"] { --dk-sel: rgba(124,242,255,.08); --dk-sel-bar: var(--hud); --dk-th-bg: #0f1428; --dk-bar-bg: rgba(7,8,15,.94);
    --dk-s1: #b388ff; --dk-s2: #7cf2ff; --dk-s3: #2ee6a6; --dk-s4: #ffd166; --dk-s5: #ff5c7a; }
  :root[data-theme="arcade"] { --dk-rail-bg: rgba(7,8,15,.9); --dk-rail-line: rgba(124,242,255,.25); }
  [data-theme="arcade"] .dk-bar { border-bottom: 1px solid rgba(124,242,255,.3); box-shadow: 0 0 24px rgba(124,242,255,.08); }
  [data-theme="arcade"] .dk-bar h1 { font-size: 26px; }
  [data-theme="arcade"] [data-view="overview"] .page-head h1::before { background-image: url(art/emblem-arcade.png); }
  [data-theme="arcade"] .dk-tick { background: rgba(13,16,32,.92); border-color: rgba(179,136,255,.35); box-shadow: 0 0 18px rgba(179,136,255,.08); }
  [data-theme="arcade"] .num.dk-tick-n { font-family: "Chakra Petch", var(--font); font-weight: 600; text-shadow: 0 0 14px rgba(179,136,255,.45); }
  [data-theme="arcade"] .dk-kpi { border-left-color: rgba(124,242,255,.18); }
  [data-theme="arcade"] .dk-row.sel > td:first-child { box-shadow: inset 3px 0 0 var(--hud), 0 0 0 transparent; }
  [data-theme="arcade"] .dk-it h2, [data-theme="arcade"] .dk-sort { font-family: "Chakra Petch", var(--font); }
  [data-theme="arcade"] .dk-tbl th { color: var(--hud); }

  :root[data-theme="comic"] { --dk-sel: #fff1a8; --dk-sel-bar: var(--accent); --dk-th-bg: #fff7d6; --dk-bar-bg: #fff3c4;
    --dk-s1: #ff3b6b; --dk-s2: #2f80ff; --dk-s3: #ffd23f; --dk-s4: #12b886; --dk-s5: #ff9ecf; }
  :root[data-theme="comic"] { --dk-rail-bg: #fff; --dk-rail-line: #111; --dk-rail-lw: 3px; }
  [data-theme="comic"] .dk-bar { border-bottom: 3px solid #111; }
  [data-theme="comic"] .dk-bar h1 { font-size: 34px; }
  [data-theme="comic"] [data-view="overview"] .page-head h1::before { background-image: url(art/emblem-comic.png); }
  [data-theme="comic"] .dk-tick { background: #fff; border: 3px solid #111; border-radius: 12px; box-shadow: 4px 4px 0 #111; }
  [data-theme="comic"] .num.dk-tick-n { font-family: "Bangers", "Impact", sans-serif; font-weight: 400; letter-spacing: .04em; font-size: 24px; }
  [data-theme="comic"] .dk-kpi { border-left: 3px solid #111; }
  [data-theme="comic"] .dk-kpi:first-child { border-left: 0; }
  [data-theme="comic"] .dk-kpi.big { background: var(--pow); }
  [data-theme="comic"] .dk-tbl th { font-family: "Bangers", "Impact", sans-serif; font-weight: 400; font-size: 15px; letter-spacing: .05em; color: var(--fg); text-transform: none; border-bottom: 3px solid #111; }
  [data-theme="comic"] .dk-it h2, [data-theme="comic"] .dk-big, [data-theme="comic"] .dk-ibig { font-family: "Bangers", "Impact", sans-serif; font-weight: 400; letter-spacing: .04em; }
  [data-theme="comic"] .dk-row.sel > td:first-child { box-shadow: inset 5px 0 0 var(--accent); }
  [data-theme="comic"] .dk-stack.big { border: 3px solid #111; height: 24px; border-radius: 999px; gap: 0; }
  [data-theme="comic"] .dk-stack.big i + i { border-left: 3px solid #111; }

  :root[data-theme="casino"] { --dk-sel: rgba(212,175,55,.1); --dk-sel-bar: var(--gold); --dk-th-bg: #17161a; --dk-bar-bg: rgba(11,11,13,.94);
    --dk-s1: linear-gradient(180deg, #f0d275, #b8902c); --dk-s2: #3fd68c; --dk-s3: #e0455a; --dk-s4: #b9b0a0; --dk-s5: #8e6bd8; }
  :root[data-theme="casino"] { --dk-rail-bg: rgba(11,11,13,.85); --dk-rail-line: rgba(212,175,55,.35); }
  [data-theme="casino"] .dk-bar { border-bottom: 1px solid rgba(212,175,55,.45); }
  [data-theme="casino"] .dk-bar h1 { font-size: 36px; }
  [data-theme="casino"] [data-view="overview"] .page-head h1::before { background-image: url(art/emblem-casino.png); }
  [data-theme="casino"] .dk-tick { background: linear-gradient(180deg, #17161a, #111013); border-color: rgba(212,175,55,.5); border-radius: 10px; }
  [data-theme="casino"] .num.dk-tick-n { font-family: "Bebas Neue", "Oswald", sans-serif; font-size: 28px; letter-spacing: .03em; color: var(--accent-text); }
  [data-theme="casino"] .dk-tick-n.neg { color: var(--neg); }
  [data-theme="casino"] .dk-kpi { border-left-color: rgba(212,175,55,.25); }
  [data-theme="casino"] .dk-tbl th { font-family: "Bebas Neue", "Oswald", sans-serif; font-weight: 400; font-size: 14px; letter-spacing: .1em; color: var(--accent-text); }
  [data-theme="casino"] .dk-it h2 { font-family: "Bebas Neue", "Oswald", sans-serif; font-weight: 400; font-size: 28px; letter-spacing: .06em; }
  [data-theme="casino"] .dk-ib, [data-theme="casino"] .dk-due-top { padding-left: 22px; padding-right: 22px; }

  :root[data-theme="passbook"] { --dk-sel: #f3ead3; --dk-sel-bar: var(--stamp); --dk-th-bg: #f1ebdd; --dk-bar-bg: #e9dfcc;
    --dk-s1: #1e2a44; --dk-s2: #b3342e; --dk-s3: #2f7a4f; --dk-s4: #a8844a; --dk-s5: #6c7896; }
  :root[data-theme="passbook"] { --dk-rail-bg: var(--bg-2); --dk-rail-line: var(--line-2); }
  [data-theme="passbook"] .dk-bar { border-bottom: 1px solid var(--line-2); box-shadow: 0 3px 0 rgba(30,42,68,.1); }
  [data-theme="passbook"] .dk-bar h1 { font-size: 30px; }
  [data-theme="passbook"] [data-view="overview"] .page-head h1::before { background-image: url(art/emblem-passbook.png); }
  [data-theme="passbook"] .dk-tick { border: 1px solid var(--line-2); box-shadow: 3px 3px 0 rgba(30,42,68,.18); }
  [data-theme="passbook"] .num.dk-tick-n { font-family: "Courier Prime", "Courier New", monospace; font-weight: 700; }
  [data-theme="passbook"] .dk-tbl th { font-family: "Courier Prime", "Courier New", monospace; font-weight: 700; color: var(--fg); }
  [data-theme="passbook"] .dk-it h2 { font-family: "Fraunces", Georgia, serif; font-style: italic; font-weight: 600; }
  [data-theme="passbook"] .dk-row.sel > td:first-child { box-shadow: inset 3px 0 0 var(--stamp); }
  [data-theme="passbook"] .dk-kpi { border-left-color: var(--line); }

  /* ======================================================================
     game: Wall Street: The Board (the "game (desktop only)" section of app.js).
     Presentation only: every figure is the real one. Decorations never take a click.
     ====================================================================== */
  .gm-tier-white { --gm-tier-c: #e9e4d6; --gm-tier-fg: #1a1400; }
  .gm-tier-red { --gm-tier-c: #c8202f; --gm-tier-fg: #fff; }
  .gm-tier-green { --gm-tier-c: #188c4f; --gm-tier-fg: #fff; }
  .gm-tier-black { --gm-tier-c: #1c1c1f; --gm-tier-fg: #fff; }
  .gm-tier-purple { --gm-tier-c: #6d35c9; --gm-tier-fg: #fff; }
  :root { --gm-star: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); }

  /* ---------- the fx layer: above the rail (20) and the bar (15), under dialogs (50) and toasts (60) ---------- */
  .fx-root { position: fixed; inset: 0; z-index: 40; pointer-events: none; overflow: hidden; }
  .fx-root * { pointer-events: none; }
  .fx-root .fx-live { pointer-events: auto; }

  /* ---------- the rail's player card: level badge, the XP board to the next level ---------- */
  .gm-tick-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; height: 15px; }
  .gm-badge { display: inline-flex; align-items: center; justify-content: center; gap: 2px; flex: none; height: 16px; min-width: 18px; margin: -1px 0; padding: 0 6px; border-radius: 999px;
    font: 700 10.5px/1 var(--mono); letter-spacing: 0; text-transform: none; color: var(--accent-text); border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent); background: color-mix(in srgb, var(--accent) 12%, transparent); }
  .gm-xp { display: block; margin-top: 3px; }
  .gm-xpbar { position: relative; display: block; height: 4px; margin: 2px 0; border-radius: 999px; background: var(--line-2); }
  .gm-xpbar > i { position: relative; display: block; height: 100%; max-width: 100%; border-radius: inherit; background: var(--accent); }
  .gm-xpcap { display: block; margin-top: 3px; font: 600 11px/13px var(--mono); letter-spacing: 0; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

  /* 861-1199: the rail folds, so the emblem wears the XP as a ring, with the level in a bubble */
  @media (max-width: 1199px) {
    .brand-mark[data-lvl] { position: relative; }
    .brand-mark[data-lvl]::before { content: ""; position: absolute; inset: -7px; border-radius: 50%;
      background: conic-gradient(var(--gm-ring, var(--accent)) var(--xp, 0%), var(--gm-ring-bg, color-mix(in srgb, var(--fg) 16%, transparent)) 0);
      -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px)); mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px)); }
    .brand-mark[data-lvl]::after { content: attr(data-lvl); position: absolute; right: -12px; bottom: -10px; min-width: 18px; height: 16px; padding: 0 4px; border-radius: 999px;
      background: var(--gm-ring, var(--accent)); color: var(--accent-fg); font: 700 10px/16px var(--mono); letter-spacing: 0; text-align: center; box-shadow: 0 0 0 2px var(--bg); }
    :root:is([data-theme="dark"], [data-theme="light"]) .brand-mark[data-lvl]::before { inset: -10px; }
    :root:is([data-theme="dark"], [data-theme="light"]) .brand-mark[data-lvl]::after { right: -24px; bottom: -13px; min-width: 16px; height: 14px; font-size: 9px; line-height: 14px; }
    [data-theme="tycoon"] .brand-mark[data-lvl] { --gm-ring: #ffc531; --gm-ring-bg: rgba(0,0,0,.35); }
    [data-theme="tycoon"] .brand-mark[data-lvl]::before { inset: -5px; }
    [data-theme="tycoon"] .brand-mark[data-lvl]::after { color: var(--navy); font: 400 11px/16px "Lilita One", sans-serif; box-shadow: 0 0 0 2px #fff, 0 2px 0 3px rgba(0,0,0,.25); }
    [data-theme="heist"] .brand-mark[data-lvl] { --gm-ring: #5aa0e6; }
    [data-theme="heist"] .brand-mark[data-lvl]::after { background: #000; color: #fff; border: 1.5px solid #fff; font: 500 10px/13px "Oswald", sans-serif; box-shadow: none; }
    [data-theme="arcade"] .brand-mark[data-lvl] { --gm-ring: var(--hud); }
    [data-theme="arcade"] .brand-mark[data-lvl]::after { color: #06121a; font-family: "Chakra Petch", sans-serif; box-shadow: 0 0 8px rgba(124,242,255,.6); }
    [data-theme="comic"] .brand-mark[data-lvl]::after { background: var(--pow); color: #111; border: 2px solid #111; font: 400 11px/12px "Bangers", sans-serif; box-shadow: none; }
    [data-theme="casino"] .brand-mark[data-lvl] { --gm-ring: var(--gold); }
    [data-theme="casino"] .brand-mark[data-lvl]::after { background: var(--gm-tier-c, var(--gold)); font: 400 12px/16px "Bebas Neue", sans-serif; color: #fff; box-shadow: 0 0 0 1.5px var(--gold); }
    [data-theme="passbook"] .brand-mark[data-lvl] { --gm-ring: var(--stamp); }
    [data-theme="passbook"] .brand-mark[data-lvl]::after { font-family: "Courier Prime", monospace; }
  }

  /* ---------- the Overview hero: level chip, record ribbon, today, the board ---------- */
  .dk-hero .lvl { display: inline-block; pointer-events: auto; cursor: default; }
  :root:is([data-theme="dark"], [data-theme="light"]) .dk-hero .lvl { margin-left: 8px; padding: 1px 8px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--accent) 50%, transparent); color: var(--accent-text); font: 600 10.5px/1.5 var(--mono); letter-spacing: .02em; text-transform: none; vertical-align: 1px; }
  [data-theme="comic"] .dk-hero .lvl { margin-left: 8px; padding: 0 9px; border-radius: 999px; border: 2px solid #111; background: var(--pow); color: #111; font: 400 14px/1.4 "Bangers", sans-serif; letter-spacing: .05em; box-shadow: 2px 2px 0 #111; vertical-align: 1px; }
  [data-theme="casino"] .dk-hero .lvl { margin-left: 8px; padding: 1px 9px; border-radius: 999px; border: 2px dashed var(--gold); background: #1d1b20; color: var(--accent-text); font: 400 13px/1.3 "Bebas Neue", sans-serif; letter-spacing: .12em; vertical-align: 1px; }
  [data-theme="passbook"] .dk-hero .lvl { margin-left: 8px; padding: 1px 7px; border: 1.5px solid var(--stamp); border-radius: 2px; color: var(--stamp); font: 700 10.5px/1.5 "Courier Prime", monospace; letter-spacing: .08em; text-transform: uppercase; display: inline-block; transform: rotate(-3deg); }
  .dk-hero .hero-top { row-gap: 10px; }
  .gm-rib { flex: none; margin-left: auto; display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px; font: 700 12px/1 var(--font); letter-spacing: .01em; white-space: nowrap; pointer-events: auto; cursor: default; }
  .gm-rib-best { color: var(--fg-2); border: 1px solid var(--line-2); font-weight: 600; }
  .gm-rib-new { color: var(--pos); border: 1px solid color-mix(in srgb, var(--pos) 55%, transparent); background: color-mix(in srgb, var(--pos) 10%, transparent); }
  .gm-rib-amt { white-space: pre; }
  @media (max-width: 1399px) { .gm-rib-amt { display: none; } }
  .gm-today { white-space: nowrap; }
  :root .hero-delta .gm-today :is(.pos, .neg)::before { content: none; }

  .gm-track { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 14px 0 4px; }
  /* 1200-1399: the hero's four stats stack in one column so the number, the day and the board keep one line each */
  @media (min-width: 1200px) and (max-width: 1399px) {
    .dk-hero-stats { grid-template-columns: minmax(0, auto); gap: 12px; align-content: center; }
    :root[data-theme="tycoon"] .gm-spaces { flex-basis: 170px; }
  }
  .gm-lv, .gm-tok, .gm-cap { display: none; }
  .gm-spaces { position: relative; flex: 1 1 200px; min-width: 0; max-width: 340px; display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); height: 14px; }
  .gm-spaces::before { content: ""; position: absolute; left: 0; right: 0; top: 5px; height: 4px; border-radius: 2px; background: var(--line-2); }
  .gm-sp { position: relative; z-index: 1; display: block; min-width: 0; }
  .gm-fill { position: absolute; left: 0; top: 5px; height: 4px; width: var(--pct); border-radius: 2px; background: var(--accent); text-decoration: none; }
  .gm-cap-line { flex: 0 0 auto; font: 600 12px/1.3 var(--mono); letter-spacing: 0; color: var(--fg-2); white-space: nowrap; }

  /* ---------- the counter: the odometer reels (app.js gRoll) ---------- */
  .rl-w { position: relative; isolation: isolate; display: inline-block; box-sizing: content-box; vertical-align: top; overflow: hidden; padding: 0 .18em; margin: 0 -.18em; text-align: center; }
  .rl-col { display: block; white-space: pre; transition-property: transform; transition-timing-function: cubic-bezier(.2, .75, .25, 1); will-change: transform; }
  .rl-col::before { content: "0\A 1\A 2\A 3\A 4\A 5\A 6\A 7\A 8\A 9\A 0\A 1\A 2\A 3\A 4\A 5\A 6\A 7\A 8\A 9"; white-space: pre; }
  .rl-s::before { content: attr(data-c); white-space: pre; }
  .rl-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

  /* ---------- the scoreboard chart: level lanes, the best close, the flag on a new record ---------- */
  .gm-chart, .gm-chart * { pointer-events: none; }
  .gm-lane line { stroke: var(--fg-3); stroke-width: 1; stroke-dasharray: 2 5; opacity: .7; }
  .gm-lane .gm-band { display: none; }
  .gm-tag text { font: 700 10.5px var(--font); letter-spacing: .03em; fill: var(--fg-3); }
  .gm-tag-bg { fill: var(--bg-2); opacity: .9; }
  .gm-rec line { stroke: var(--pos); stroke-width: 1; opacity: .75; }
  .gm-rec-tag text { fill: var(--pos); }
  .gm-endmk .gm-pole, .gm-endmk .gm-flag, .gm-endmk .gm-flag-ck, .gm-endmk .gm-burst { display: none; }
  .gm-endmk .gm-coin { fill: var(--pos); stroke: var(--bg-2); stroke-width: 2.5; }
  .gm-end-tag text { fill: var(--pos); }
  .chart.gm-rec-now .dot, .chart.gm-rec-now .pulse { display: none; }

  /* ---------- pickups: the real amount the net just rose by ---------- */
  .fx-pick { position: fixed; left: var(--cx); top: var(--ty); translate: -50% -100%; white-space: nowrap; animation: fx-rise 1.1s cubic-bezier(.2, .7, .3, 1) both; }
  .fx-pick-v { display: inline-block; font: 700 14px/1.2 var(--mono); letter-spacing: 0; color: var(--pos); text-shadow: 0 1px 0 var(--bg); }
  @keyframes fx-rise { 0% { opacity: 0; transform: translateY(8px) scale(.85); } 14% { opacity: 1; transform: translateY(0) scale(1.06); } 24% { transform: translateY(-4px) scale(1); } 70% { opacity: 1; } 100% { opacity: 0; transform: translateY(-36px); } }
  @keyframes fx-slide { 0% { opacity: 0; transform: translateX(16px); } 16% { opacity: 1; transform: none; } 72% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-10px); } }

  @keyframes fx-in { from { opacity: 0; transform: translateY(-14px) scale(.9); } to { opacity: 1; transform: none; } }
  @keyframes fx-out { to { opacity: 0; transform: translateY(-10px) scale(.96); } }
  @keyframes fx-fade-in { from { opacity: 0; } }
  @keyframes fx-fade-out { to { opacity: 0; } }
  @keyframes fx-coin { 0% { opacity: 0; transform: rotate(var(--a)) translateY(0) scale(.5); } 15% { opacity: 1; } 100% { opacity: 0; transform: rotate(var(--a)) translateY(-130px) scale(1); } }
  @keyframes gm-blink { 50% { opacity: .3; } }

  /* ---------- per look ---------- */

  /* tycoon: Monopoly GO. Property spaces with a top hat, a red GO corner, gold coins, a counter in slot windows */
  [data-theme="tycoon"] .gm-badge { height: 17px; padding: 0 6px 0 4px; border: 1.5px solid #fff; background: linear-gradient(180deg, #ffe98f, #ffb800); box-shadow: 0 2px 0 rgba(0,0,0,.35); color: var(--navy); font: 400 12px/1 "Lilita One", sans-serif; text-shadow: 0 1px 0 rgba(255,255,255,.45); }
  [data-theme="tycoon"] .gm-badge::before { content: ""; width: 10px; height: 10px; background: var(--navy); clip-path: var(--gm-star); }
  [data-theme="tycoon"] .gm-xp { margin-top: 3px; margin-left: -37px; }   /* under the cash icon: the XP board runs the width of the tile */
  [data-theme="tycoon"] .gm-xpbar { height: 8px; margin: 0 9px 0 2px; background: #0b1b3d; box-shadow: 0 0 0 2px #0b1b3d, inset 0 2px 2px rgba(0,0,0,.45); }
  [data-theme="tycoon"] .gm-xpbar > i { background: linear-gradient(180deg, #fff0a0, #ffc531 55%, #e09a00); }
  [data-theme="tycoon"] .gm-xpbar > i::after { content: ""; position: absolute; right: -8px; top: 50%; width: 16px; height: 16px; margin-top: -8px; background: url(art/tycoon-coin.png) center / contain no-repeat; filter: drop-shadow(0 1px 1px rgba(0,0,0,.5)); }
  [data-theme="tycoon"] .gm-xpcap { margin-top: 3px; font: 400 12px/12px "Lilita One", sans-serif; letter-spacing: .02em; color: #ffe27a; }
  [data-theme="tycoon"] .gm-rib { height: 26px; font: 400 13px/1 "Lilita One", sans-serif; letter-spacing: .03em; }
  [data-theme="tycoon"] .gm-rib-new { gap: 5px; padding: 0 11px 0 8px; color: #fff; background: linear-gradient(180deg, #ff5a5a, #d81e1e); border: 2px solid #ffc531; border-radius: 8px; box-shadow: 0 3px 0 #7a0f0f, 0 0 0 1px rgba(122,82,0,.55); text-shadow: 0 1px 0 rgba(0,0,0,.35); }
  [data-theme="tycoon"] .gm-rib-new::before { content: ""; width: 14px; height: 14px; background: linear-gradient(180deg, #fff3a8, #ffc531); clip-path: var(--gm-star); }
  [data-theme="tycoon"] .gm-rib-amt { color: #ffe9a8; }
  [data-theme="tycoon"] .gm-rib-best { color: #d7ecff; border: 2px solid rgba(255,255,255,.45); background: rgba(0,0,0,.18); font-size: 12px; }
  [data-theme="tycoon"] .gm-track { gap: 8px 12px; margin: 16px 0 6px; }
  [data-theme="tycoon"] .gm-spaces { flex-basis: 210px; max-width: none; height: 30px; gap: 3px; }
  [data-theme="tycoon"] .gm-spaces::before, [data-theme="tycoon"] .gm-fill { display: none; }
  [data-theme="tycoon"] .gm-sp { background: #fff8e8; border: 2px solid var(--navy); border-radius: 5px; box-shadow: inset 0 5px 0 var(--gm-band), 0 2px 0 rgba(0,0,0,.28); }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+1) { --gm-band: #8b5a2b; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+2) { --gm-band: #8fd3f5; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+3) { --gm-band: #e2489a; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+4) { --gm-band: #f7931e; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+5) { --gm-band: #e5312f; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+6) { --gm-band: #ffd21f; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+7) { --gm-band: #1fa64a; }
  [data-theme="tycoon"] .gm-sp:nth-of-type(8n+8) { --gm-band: #1d3b8f; }
  [data-theme="tycoon"] .gm-sp.own::after { content: ""; position: absolute; left: 50%; bottom: 4px; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff3a8, #ffc531 55%, #d99a12); box-shadow: 0 0 0 1px #b07a00; }
  [data-theme="tycoon"] .gm-sp.cur { background: #fff1bf; box-shadow: inset 0 5px 0 var(--gm-band), 0 0 0 2px #ffc531, 0 2px 0 3px rgba(0,0,0,.2); }
  [data-theme="tycoon"] .gm-tok { display: block; position: absolute; left: 50%; bottom: 6px; width: 26px; height: 26px; margin-left: -13px; background: url(art/emblem-board.png) center / contain no-repeat; filter: drop-shadow(0 2px 1px rgba(0,0,0,.45)); }
  [data-theme="tycoon"] .gm-cap { display: inline-flex; flex: none; align-items: center; gap: 6px; height: 30px; padding: 0 10px 0 8px; border: 2px solid #fff; border-radius: 7px; background: linear-gradient(180deg, #ff5a5a, #d81e1e);
    box-shadow: 0 2px 0 rgba(0,0,0,.3), inset 0 2px 0 rgba(255,255,255,.3); color: #fff; font: 400 12px/1 "Lilita One", sans-serif; letter-spacing: .03em; text-shadow: 0 1px 0 rgba(0,0,0,.35); white-space: nowrap; }
  [data-theme="tycoon"] .gm-cap::before { content: "GO"; font-size: 18px; letter-spacing: .02em; text-shadow: 0 2px 0 #7a0f0f; }
  [data-theme="tycoon"] .gm-cap-line { font: 400 14px/1.2 "Lilita One", sans-serif; letter-spacing: .02em; color: #fff; text-shadow: 0 2px 0 rgba(0,0,0,.3); }
  [data-theme="tycoon"] .gm-below .gm-cap-line { color: #d7ecff; }
  [data-theme="tycoon"] .dk-tick-n.rl-on .rl-w::before { content: ""; position: absolute; z-index: -1; top: 2px; bottom: 1px; left: calc(.18em - 1px); right: calc(.18em - 1px); border-radius: 4px;
    background: linear-gradient(180deg, #0a1733, #1d3468 50%, #0a1733); box-shadow: inset 0 0 0 1.5px #ffc531, inset 0 3px 4px rgba(0,0,0,.55); }
  [data-theme="tycoon"] .hero-num.rl-rise { animation: gm-gold 1.1s ease-out both; }
  @keyframes gm-gold { 0% { filter: none; } 35% { filter: drop-shadow(0 0 10px rgba(255,214,80,.95)) drop-shadow(0 0 24px rgba(255,197,49,.55)); } 100% { filter: none; } }
  [data-theme="tycoon"] .fx-pick-v { padding: 3px 11px 3px 28px; border-radius: 999px; border: 2px solid #fff; background: url(art/tycoon-coin.png) 3px 50% / 20px no-repeat, linear-gradient(180deg, #ffe98f, #ffb800);
    box-shadow: 0 3px 0 rgba(0,0,0,.35), 0 6px 14px rgba(0,0,0,.25); color: #fff; font: 400 18px/1.1 "Lilita One", sans-serif; letter-spacing: .02em; -webkit-text-stroke: 1px var(--navy); text-shadow: 0 2px 0 var(--navy); }
  [data-theme="tycoon"] .gm-lane line { display: none; }
  [data-theme="tycoon"] .gm-lane .gm-band { display: inline; opacity: .5; }
  [data-theme="tycoon"] .gm-c0 :is(.gm-band, .gm-tag-bg) { fill: #8b5a2b; }
  [data-theme="tycoon"] .gm-c1 :is(.gm-band, .gm-tag-bg) { fill: #8fd3f5; }
  [data-theme="tycoon"] .gm-c2 :is(.gm-band, .gm-tag-bg) { fill: #e2489a; }
  [data-theme="tycoon"] .gm-c3 :is(.gm-band, .gm-tag-bg) { fill: #f7931e; }
  [data-theme="tycoon"] .gm-c4 :is(.gm-band, .gm-tag-bg) { fill: #e5312f; }
  [data-theme="tycoon"] .gm-c5 :is(.gm-band, .gm-tag-bg) { fill: #ffd21f; }
  [data-theme="tycoon"] .gm-c6 :is(.gm-band, .gm-tag-bg) { fill: #1fa64a; }
  [data-theme="tycoon"] .gm-c7 :is(.gm-band, .gm-tag-bg) { fill: #1d3b8f; }
  [data-theme="tycoon"] .gm-lane-tag .gm-tag-bg { opacity: 1; stroke: #fff; stroke-width: 1.5; }
  [data-theme="tycoon"] .gm-tag text { font: 400 11.5px "Lilita One", sans-serif; letter-spacing: .03em; }
  [data-theme="tycoon"] .gm-lane-tag text { fill: #fff; }
  [data-theme="tycoon"] :is(.gm-c1, .gm-c5) .gm-lane-tag text { fill: var(--navy); }
  [data-theme="tycoon"] .gm-rec line { stroke: #e0a300; stroke-width: 2; stroke-dasharray: 7 5; opacity: 1; }
  [data-theme="tycoon"] .gm-rec-tag .gm-tag-bg { fill: #ffc531; stroke: #b07a00; stroke-width: 1.5; opacity: 1; }
  [data-theme="tycoon"] .gm-rec-tag text { fill: var(--navy); }
  [data-theme="tycoon"] .gm-endmk :is(.gm-pole, .gm-flag, .gm-flag-ck) { display: inline; }
  [data-theme="tycoon"] .gm-endmk .gm-pole { stroke: var(--navy); stroke-width: 2; }
  [data-theme="tycoon"] .gm-endmk .gm-flag { fill: #fff; stroke: var(--navy); stroke-width: 1.2; }
  [data-theme="tycoon"] .gm-endmk .gm-flag-ck { fill: var(--navy); }
  [data-theme="tycoon"] .gm-endmk .gm-coin { fill: #ffc531; stroke: #b07a00; stroke-width: 2; }
  [data-theme="tycoon"] .gm-end-tag .gm-tag-bg { fill: #d81e1e; stroke: #ffc531; stroke-width: 2; opacity: 1; }
  [data-theme="tycoon"] .gm-end-tag text { fill: #fff; font-size: 12px; }

  /* heist: the GTA V pause menu. RP bar with rank circles, a personal-best strap, rank up centre screen */
  [data-theme="heist"] .gm-badge { width: 18px; min-width: 0; height: 18px; margin: -1.5px 0; padding: 0; border: 1.5px solid rgba(255,255,255,.85); border-radius: 50%; background: none; color: #fff; font: 500 9.5px/1 "Oswald", sans-serif; }
  [data-theme="heist"] .gm-xpbar { height: 6px; margin: 1px 0; border-radius: 0; background: rgba(255,255,255,.14); }
  [data-theme="heist"] .gm-xpbar > i { background: #5aa0e6; box-shadow: 0 0 6px rgba(90,160,230,.5); }
  [data-theme="heist"] .gm-xpcap { font: 500 10.5px/13px "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #b8b8bc; }
  [data-theme="heist"] .gm-rib { height: 24px; border-radius: 0; font: 500 11px/1 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; }
  [data-theme="heist"] .gm-rib-new { padding: 0 12px 0 14px; color: #fff; background: #000; border: 0; border-top: 2px solid #fff; box-shadow: inset 4px 0 0 var(--orange), 0 4px 14px rgba(0,0,0,.5); }
  [data-theme="heist"] .gm-rib-amt { color: #8ee08a; }
  [data-theme="heist"] .gm-rib-best { color: #b8b8bc; border: 1px solid rgba(255,255,255,.3); }
  [data-theme="heist"] .gm-track { gap: 8px 10px; }
  [data-theme="heist"] :is(.gm-lv, .gm-cap) { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 26px; height: 26px; border: 1.5px solid rgba(255,255,255,.85); border-radius: 50%; color: #fff; font-size: 0; }
  [data-theme="heist"] :is(.gm-lv, .gm-cap)::before { content: attr(data-n); font: 500 12px/1 "Oswald", sans-serif; letter-spacing: .02em; }
  [data-theme="heist"] .gm-spaces { flex-basis: 160px; max-width: 360px; }
  [data-theme="heist"] .gm-spaces::before { top: 4px; height: 6px; border-radius: 0; background: rgba(255,255,255,.14); }
  [data-theme="heist"] .gm-fill { top: 4px; height: 6px; border-radius: 0; background: #5aa0e6; box-shadow: 0 0 8px rgba(90,160,230,.45); }
  [data-theme="heist"] .gm-cap-line { flex-basis: 100%; font: 500 11px/1.3 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #d0d0d4; }
  [data-theme="heist"] .fx-pick { left: var(--rx); top: var(--my); translate: 10px -50%; animation-name: fx-slide; }
  [data-theme="heist"] .fx-pick-v { font: 400 22px/1 "Anton", "Impact", sans-serif; letter-spacing: .02em; color: #8ee08a; -webkit-text-stroke: 1px #0b2a0b; text-shadow: 0 2px 0 #000; }
  [data-theme="heist"] .gm-lane line { stroke: rgba(255,255,255,.4); }
  [data-theme="heist"] .gm-tag text { font: 500 10px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; fill: #b8b8bc; }
  [data-theme="heist"] .gm-tag-bg { fill: #0c0c0e; }
  [data-theme="heist"] .gm-rec line { stroke: #fff; stroke-dasharray: 6 4; opacity: .65; }
  [data-theme="heist"] .gm-rec-tag .gm-tag-bg { fill: var(--orange); opacity: 1; }
  [data-theme="heist"] .gm-rec-tag text { fill: #141008; }
  [data-theme="heist"] .gm-endmk :is(.gm-pole, .gm-flag) { display: inline; }
  [data-theme="heist"] .gm-endmk .gm-pole { stroke: #fff; stroke-width: 1.5; }
  [data-theme="heist"] .gm-endmk .gm-flag { fill: var(--orange); }
  [data-theme="heist"] .gm-endmk .gm-coin { fill: #8ee08a; stroke: #000; }
  [data-theme="heist"] .gm-end-tag .gm-tag-bg { fill: #000; stroke: #fff; stroke-width: 1; opacity: 1; }
  [data-theme="heist"] .gm-end-tag text { fill: #fff; }
  @keyframes fx-heist-in { from { opacity: 0; transform: scale(1.08); } to { opacity: 1; transform: none; } }

  /* arcade: neon XP segments, the next one blinking when a level is close */
  [data-theme="arcade"] .gm-badge { border-radius: 2px; border-color: var(--hud); color: var(--hud); background: rgba(124,242,255,.08); font: 600 10.5px/1 "Chakra Petch", sans-serif; box-shadow: 0 0 8px rgba(124,242,255,.35); }
  [data-theme="arcade"] .gm-badge::before { content: "LV"; font-size: 8.5px; letter-spacing: .08em; opacity: .75; }
  [data-theme="arcade"] .gm-xpbar { height: 8px; margin: 0; border-radius: 2px; background: rgba(255,255,255,.05); box-shadow: inset 0 0 0 1px rgba(124,242,255,.3); }
  [data-theme="arcade"] .gm-xpbar > i { background: linear-gradient(90deg, var(--hud), var(--accent)); box-shadow: 0 0 8px rgba(124,242,255,.55); }
  [data-theme="arcade"] .gm-xpcap { font: 600 10.5px/13px "Chakra Petch", sans-serif; letter-spacing: .06em; color: var(--pos); }
  [data-theme="arcade"] .gm-rib { border-radius: 2px; font: 600 11px/1 "Chakra Petch", sans-serif; letter-spacing: .12em; }
  [data-theme="arcade"] .gm-rib-new { color: var(--hud); border: 1px solid var(--hud); background: rgba(124,242,255,.08); box-shadow: 0 0 12px rgba(124,242,255,.4); text-shadow: 0 0 8px rgba(124,242,255,.7); }
  [data-theme="arcade"] .gm-rib-best { border-color: rgba(124,242,255,.25); }
  [data-theme="arcade"] .gm-spaces { max-width: 360px; height: 12px; gap: 3px; }
  [data-theme="arcade"] .gm-spaces::before, [data-theme="arcade"] .gm-fill { display: none; }
  [data-theme="arcade"] .gm-sp { border: 1px solid rgba(124,242,255,.3); border-radius: 2px; background: rgba(255,255,255,.04); }
  [data-theme="arcade"] .gm-sp.own { border-color: var(--hud); background: linear-gradient(90deg, var(--hud), var(--accent)); box-shadow: 0 0 8px rgba(124,242,255,.55); }
  [data-theme="arcade"] .gm-sp.cur { border-color: var(--hud); background: linear-gradient(90deg, var(--hud) 0 var(--sp), rgba(255,255,255,.04) var(--sp)); }
  [data-theme="arcade"] .gm-near .gm-sp.cur { animation: gm-blink 1s steps(1, end) infinite; }
  [data-theme="arcade"] .gm-cap { display: inline-block; flex: none; padding: 1px 7px; border: 1px solid var(--hud); border-radius: 2px; color: var(--hud); font: 600 11px/1.5 "Chakra Petch", sans-serif; letter-spacing: .12em; box-shadow: 0 0 8px rgba(124,242,255,.35); }
  [data-theme="arcade"] .gm-cap::before { content: "▶ "; font-size: 9px; }
  [data-theme="arcade"] .gm-cap-line { font: 600 12px/1.3 "Chakra Petch", sans-serif; letter-spacing: .08em; color: var(--pos); text-shadow: 0 0 8px rgba(46,230,166,.4); }
  [data-theme="arcade"] .rl-w:not(.rl-still) { animation: rl-flick 90ms steps(1, end) var(--rl-end) 1; }
  @keyframes rl-flick { 0% { opacity: .2; } 50% { opacity: .85; } }
  [data-theme="arcade"] .fx-pick-v { font: 700 16px/1 "Chakra Petch", sans-serif; letter-spacing: .06em; color: var(--hud); text-shadow: 0 0 10px rgba(124,242,255,.9), 0 0 2px #fff; }
  [data-theme="arcade"] .gm-lane line { stroke: rgba(179,136,255,.55); }
  [data-theme="arcade"] .gm-tag text { font: 600 10.5px "Chakra Petch", sans-serif; letter-spacing: .1em; fill: var(--fg-2); }
  [data-theme="arcade"] .gm-tag-bg { fill: #0d1020; }
  [data-theme="arcade"] .gm-rec line { stroke: var(--hud); stroke-width: 1.5; opacity: 1; filter: drop-shadow(0 0 3px rgba(124,242,255,.9)); }
  [data-theme="arcade"] :is(.gm-rec-tag, .gm-end-tag) .gm-tag-bg { stroke: var(--hud); stroke-width: 1; opacity: 1; }
  [data-theme="arcade"] :is(.gm-rec-tag, .gm-end-tag) text { fill: var(--hud); }
  [data-theme="arcade"] .gm-endmk .gm-coin { fill: var(--hud); stroke: #0d1020; filter: drop-shadow(0 0 5px rgba(124,242,255,.9)); }

  /* comic: an inked thermometer with a halftone fill, speech-bubble pickups */
  [data-theme="comic"] .gm-badge { height: 18px; margin: -1.5px 0; border: 2px solid #111; background: var(--pow); color: #111; font: 400 12px/1 "Bangers", sans-serif; letter-spacing: .05em; box-shadow: 1.5px 1.5px 0 #111; }
  [data-theme="comic"] .gm-xpbar { height: 8px; margin: 0 2px; background: #fff; box-shadow: 0 0 0 2px #111; }
  [data-theme="comic"] .gm-xpbar > i { background: radial-gradient(rgba(17,17,17,.3) 1px, transparent 1.3px) 0 0 / 4px 4px, var(--accent); }
  [data-theme="comic"] .gm-xpcap { margin-top: 4px; font: 700 11px/12px "Fredoka", sans-serif; color: #111; }
  [data-theme="comic"] .gm-rib { font: 400 14px/1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-rib-new { color: #111; background: var(--pow); border: 2.5px solid #111; box-shadow: 3px 3px 0 #111; rotate: -3deg; }
  [data-theme="comic"] .gm-rib-best { color: #444; border: 2px solid #111; background: #fff; }
  [data-theme="comic"] .gm-track { gap: 8px 10px; }
  [data-theme="comic"] .gm-lv { display: inline-flex; flex: none; align-items: center; justify-content: center; position: relative; z-index: 2; width: 34px; height: 34px; margin-right: -16px; border-radius: 50%; background: var(--accent); border: 3px solid #111; color: #fff; font-size: 0; }
  [data-theme="comic"] .gm-lv::before { content: attr(data-n); font: 400 16px/1 "Bangers", sans-serif; letter-spacing: .04em; }
  [data-theme="comic"] .gm-spaces { max-width: 360px; height: 20px; border: 3px solid #111; border-radius: 999px; background: #fff; overflow: hidden; }
  [data-theme="comic"] .gm-spaces::before { display: none; }
  [data-theme="comic"] .gm-sp + .gm-sp { border-left: 2px dotted rgba(17,17,17,.22); }
  [data-theme="comic"] .gm-fill { top: 0; height: 100%; border-radius: 0; background: radial-gradient(rgba(17,17,17,.3) 1.1px, transparent 1.5px) 0 0 / 5px 5px, var(--accent); box-shadow: 3px 0 0 #111; }
  [data-theme="comic"] .gm-cap { display: inline-block; flex: none; padding: 2px 10px; border: 2.5px solid #111; border-radius: 999px; background: var(--pow); box-shadow: 2px 2px 0 #111; color: #111; font: 400 15px/1.2 "Bangers", sans-serif; letter-spacing: .05em; rotate: -3deg; }
  [data-theme="comic"] .gm-cap-line { font: 700 13px/1.3 "Fredoka", sans-serif; color: #111; }
  [data-theme="comic"] .rl-w:not(.rl-still) { animation: rl-bounce 260ms ease-out var(--rl-end) 1; }
  @keyframes rl-bounce { 40% { transform: translateY(-4px); } }
  [data-theme="comic"] .fx-pick-v { position: relative; padding: 3px 10px; border: 2.5px solid #111; border-radius: 14px; background: #fff; box-shadow: 3px 3px 0 #111; color: var(--accent-text); font: 400 19px/1 "Bangers", sans-serif; letter-spacing: .05em; rotate: -4deg; }
  [data-theme="comic"] .fx-pick-v::after { content: "!"; }
  [data-theme="comic"] .fx-pick-v::before { content: ""; position: absolute; left: 12px; bottom: -7px; width: 9px; height: 9px; background: #fff; border: solid #111; border-width: 0 2.5px 2.5px 0; transform: rotate(45deg); }
  [data-theme="comic"] .gm-lane line { stroke: #111; opacity: .4; }
  [data-theme="comic"] .gm-tag text { font: 400 12.5px "Bangers", sans-serif; letter-spacing: .05em; fill: #111; }
  [data-theme="comic"] .gm-tag-bg { fill: #fff; stroke: #111; stroke-width: 1.5; opacity: 1; }
  [data-theme="comic"] .gm-rec line { stroke: var(--accent); stroke-width: 2; stroke-dasharray: 8 5; opacity: 1; }
  [data-theme="comic"] .gm-endmk .gm-burst { display: inline; fill: var(--pow); stroke: #111; stroke-width: 2; }
  [data-theme="comic"] .gm-endmk .gm-coin { fill: var(--accent); stroke: #111; stroke-width: 2; }
  [data-theme="comic"] .gm-end-tag .gm-tag-bg { fill: var(--pow); stroke: #111; stroke-width: 2; }
  [data-theme="comic"] .gm-end-tag text { fill: #111; }

  /* casino: a VIP tier bar in the level's chip colour, a slot-machine clunk on the reels */
  [data-theme="casino"] .gm-badge { width: 18px; min-width: 0; height: 18px; margin: -1.5px 0; padding: 0; border-radius: 50%; border: 2px dashed rgba(255,255,255,.8); background: var(--gm-tier-c); box-shadow: 0 0 0 1px var(--gm-tier-c); color: var(--gm-tier-fg); font: 400 10.5px/1 "Bebas Neue", sans-serif; letter-spacing: .02em; }
  [data-theme="casino"] .gm-xpbar { height: 6px; margin: 1px 0; background: #0b0b0d; box-shadow: 0 0 0 1px rgba(212,175,55,.55); }
  [data-theme="casino"] .gm-xpbar > i { background: linear-gradient(180deg, rgba(255,255,255,.35), transparent 60%), var(--gm-tier-c); }
  [data-theme="casino"] .gm-xpcap { font: 400 13px/13px "Bebas Neue", sans-serif; letter-spacing: .08em; color: var(--fg-2); }
  [data-theme="casino"] .gm-rib { font: 400 14px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; }
  [data-theme="casino"] .gm-rib-new { color: #1a1400; background: linear-gradient(180deg, #f0d275, #b8902c); border: 1px solid #f0d275; box-shadow: 0 0 14px rgba(212,175,55,.45); }
  [data-theme="casino"] .gm-rib-best { color: #e6c25c; border: 1px dashed rgba(212,175,55,.6); }
  [data-theme="casino"] .gm-lv { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; border: 3px dashed rgba(255,255,255,.85); background: var(--gm-tier-c); box-shadow: 0 0 0 2px var(--gm-tier-c), 0 2px 6px rgba(0,0,0,.5); color: var(--gm-tier-fg); font-size: 0; }
  [data-theme="casino"] .gm-lv::before { content: attr(data-n); font: 400 15px/1 "Bebas Neue", sans-serif; letter-spacing: .04em; }
  [data-theme="casino"] .gm-spaces { max-width: 340px; height: 12px; border: 1px solid rgba(212,175,55,.6); border-radius: 999px; background: #0b0b0d; overflow: hidden; }
  [data-theme="casino"] .gm-spaces::before { display: none; }
  [data-theme="casino"] .gm-sp + .gm-sp { border-left: 1px solid rgba(0,0,0,.35); }
  [data-theme="casino"] .gm-fill { top: 0; height: 100%; border-radius: 0; background: linear-gradient(180deg, rgba(255,255,255,.35), transparent 60%), var(--gm-tier-c); }
  [data-theme="casino"] .gm-cap { display: inline-block; flex: none; color: var(--accent-text); font: 400 17px/1 "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="casino"] .gm-cap-line { font: 400 14px/1.2 "Bebas Neue", sans-serif; letter-spacing: .1em; color: var(--fg-2); }
  [data-theme="casino"] .rl-col { transition-timing-function: cubic-bezier(.3, 1.45, .5, 1); }
  /* the hero is gold gradient text, which would paint through every hidden reel digit: while it rolls it is flat gold */
  [data-theme="casino"] .hero-num.rl-on { background: none; -webkit-background-clip: border-box; background-clip: border-box; color: #e6c35f; }
  [data-theme="casino"] .fx-pick-v { padding: 2px 11px 2px 27px; border-radius: 999px; border: 1px solid var(--gold); background: url(art/casino-chip.png) 3px 50% / 20px no-repeat, #141316; color: var(--accent-text); font: 400 20px/1.1 "Bebas Neue", sans-serif; letter-spacing: .06em; box-shadow: 0 0 14px rgba(212,175,55,.45); }
  [data-theme="casino"] .gm-lane line { stroke: rgba(212,175,55,.4); }
  [data-theme="casino"] .gm-tag text { font: 400 12px "Bebas Neue", sans-serif; letter-spacing: .1em; fill: var(--fg-2); }
  [data-theme="casino"] .gm-tag-bg { fill: #141316; }
  [data-theme="casino"] .gm-rec line { stroke: var(--gold); stroke-width: 1.5; stroke-dasharray: 6 4; opacity: 1; }
  [data-theme="casino"] :is(.gm-rec-tag, .gm-end-tag) .gm-tag-bg { fill: var(--gold); opacity: 1; }
  [data-theme="casino"] :is(.gm-rec-tag, .gm-end-tag) text { fill: #1a1400; }
  [data-theme="casino"] .gm-endmk .gm-coin { fill: var(--gold); stroke: #fff; stroke-width: 2; stroke-dasharray: 3 2.3; }

  /* passbook: a ruled pencil line inked tick by tick, stamps, typewriter reels */
  [data-theme="passbook"] .gm-badge { border-radius: 2px; border: 1.5px solid var(--stamp); background: none; color: var(--stamp); font: 700 10.5px/1 "Courier Prime", monospace; rotate: -4deg; }
  [data-theme="passbook"] .gm-xpbar { height: 3px; margin: 2.5px 0; border-radius: 0; background: linear-gradient(#8d8a99, #8d8a99) 0 50% / 100% 1px no-repeat; }
  [data-theme="passbook"] .gm-xpbar > i { border-radius: 0; background: var(--line-2); }
  [data-theme="passbook"] .gm-xpcap { font: 700 11px/13px "Courier Prime", monospace; color: var(--fg-2); }
  [data-theme="passbook"] .gm-below .gm-xpcap { font-size: 10px; }
  [data-theme="passbook"] .gm-rib { border-radius: 2px; font: 700 11px/1 "Courier Prime", monospace; letter-spacing: .06em; text-transform: uppercase; }
  [data-theme="passbook"] .gm-rib-new { color: var(--stamp); border: 2px solid var(--stamp); background: rgba(179,52,46,.05); rotate: -2deg; }
  [data-theme="passbook"] .gm-rib-best { color: var(--fg-2); border: 1px solid var(--line-2); }
  [data-theme="passbook"] .gm-rib-amt { display: none; }   /* the stamp is long already: the amount stays in its title */
  [data-theme="passbook"] .gm-spaces { max-width: 360px; height: 16px; }
  [data-theme="passbook"] .gm-spaces::before { top: 8px; height: 1px; border-radius: 0; background: #8d8a99; }
  [data-theme="passbook"] .gm-fill { top: 7px; height: 3px; border-radius: 0; background: var(--line-2); }
  [data-theme="passbook"] .gm-sp::after { content: ""; position: absolute; right: 0; top: 4px; width: 1px; height: 9px; background: #8d8a99; }
  [data-theme="passbook"] .gm-sp.own::after { width: 2px; background: var(--line-2); }
  [data-theme="passbook"] .gm-sp:first-of-type::before { content: ""; position: absolute; left: 0; top: 4px; width: 2px; height: 9px; background: var(--line-2); }
  [data-theme="passbook"] .gm-cap { display: inline-block; flex: none; color: var(--fg); font: 700 12px/1.3 "Courier Prime", monospace; letter-spacing: .04em; border-bottom: 1.5px solid var(--stamp); }
  [data-theme="passbook"] .gm-cap-line { font: 700 12px/1.3 "Courier Prime", monospace; color: var(--fg-2); }
  [data-theme="passbook"] .rl-col { transition-timing-function: steps(var(--rl-steps, 4), end); }
  [data-theme="passbook"] .fx-pick-v { font: 700 15px/1 "Courier Prime", monospace; color: var(--line-2); text-shadow: 0 0 1px rgba(30,42,68,.45); }
  [data-theme="passbook"] .gm-lane line { stroke: #8d8a99; stroke-dasharray: 1 3; }
  [data-theme="passbook"] .gm-tag text { font: 700 11px "Courier Prime", monospace; fill: var(--fg-2); }
  [data-theme="passbook"] .gm-rec line { stroke: var(--stamp); opacity: 1; }
  [data-theme="passbook"] .gm-rec-tag text { fill: var(--stamp); font-style: italic; }
  [data-theme="passbook"] .gm-end-tag .gm-tag-bg { fill: var(--bg-2); stroke: var(--stamp); stroke-width: 1.5; opacity: 1; }
  [data-theme="passbook"] .gm-end-tag text { fill: var(--stamp); text-transform: uppercase; letter-spacing: .06em; }
  [data-theme="passbook"] .gm-endmk .gm-coin { fill: var(--stamp); }

  /* dark and paper: slim. A hairline for the high, a quiet card for a level */
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-endmk .gm-coin { fill: var(--accent); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-end-tag text { fill: var(--accent-text); }


  /* ======================================================================
     game, part 2: streaks, Quick Wins, the check-in round, trophies, the months in stars, GO! moments.
     Presentation only; decorations never take a click; big motion stops under reduced motion.
     ====================================================================== */
  :root { --gm-amber: #e5a53c; --gm-flame: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1.5c.6 3.1 4.9 5.2 4.9 10A4.9 4.9 0 0 1 5.1 11.6c0-2.3 1.3-3.6 2.2-4.7.2 1.5.8 2.6 1.9 3.2C9.4 7.2 8.6 4.3 10 1.5z'/%3E%3C/svg%3E");
    --gm-cup: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 2.5h10v2h3v1.8c0 2.3-1.6 4-3.8 4.3A5 5 0 0 1 11 13.3V15h3v2.5H6V15h3v-1.7a5 5 0 0 1-3.2-2.7C3.6 10.3 2 8.6 2 6.3V4.5h3zm0 3.8H3.8c.1 1 .6 1.9 1.3 2.3A6 6 0 0 1 5 7.5zm10 0v1.2l-.1 1.1c.7-.4 1.2-1.3 1.3-2.3z'/%3E%3C/svg%3E");
    --gm-tick: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M3.5 10.5l4 4 9-9' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    --gm-t1: #c9894f; --gm-t2: #b9c3cf; --gm-t3: #f2c14e; --gm-t4: #9fe6ee; }
  .gm-svg { display: block; width: 100%; height: 100%; }
  /* decoration never takes a click (the chips, pips and stars keep theirs, for their titles) */
  .gm-job-bar, .gm-job-ico, .gm-qw-meter > i, .gm-gift, .gm-sk-i, .gm-sk-ticks, .gm-medal, .gm-tdots, .gm-tc-bar, .gm-clock, .gm-stars i, .gm-star-g, .gm-rc-stars, .gm-tro-ico, .gm-tro-cnt { pointer-events: none; }

  /* ---------- streak chips ---------- */
  .gm-streaks { display: inline-flex; align-items: center; gap: 6px; flex: none; }
  .gm-sk { display: inline-flex; align-items: center; gap: 4px; height: 22px; padding: 0 8px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--fg-2); font: 600 11.5px/1 var(--font); letter-spacing: 0; text-transform: none; white-space: nowrap; }
  .gm-sk-i { flex: none; width: 11px; height: 11px; background: var(--pos); -webkit-mask: var(--gm-tick) center / contain no-repeat; mask: var(--gm-tick) center / contain no-repeat; }
  .gm-sk .gm-sk-n { font-size: 12px; color: var(--fg); font-weight: 700; }
  .gm-sk-pre, .gm-sk-post { color: var(--fg-2); }
  .gm-sk-best { margin-left: 2px; padding-left: 5px; border-left: 1px solid var(--line-2); color: var(--fg-3); font-weight: 600; }
  .gm-sk.zero .gm-sk-i { background: var(--fg-3); }
  .gm-sk.zero .gm-sk-n { color: var(--fg-3); }
  .gm-sk-ticks { display: none; }
  .gm-qw-head .gm-sk.paused .gm-sk-post { display: none; }   /* 'paused' says enough in the narrow head; the title keeps the reason */
  @media (max-width: 1399px) { .gm-qw-head .gm-sk :is(.gm-sk-pre, .gm-sk-post, .gm-sk-best) { display: none; } }
  /* the rail's due tile carries a mini one: no added height */
  .dk-tick-due .gm-tick-top .label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .dk-tick .gm-sk { height: 16px; margin: -1px 0; padding: 0 6px; gap: 3px; font-size: 10.5px; }
  .dk-tick .gm-sk :is(.gm-sk-pre, .gm-sk-post, .gm-sk-best) { display: none; }
  .dk-tick .gm-sk .gm-sk-n { font-size: 10.5px; }
  .dk-tick .gm-sk-i { width: 9px; height: 9px; }
  /* bills past their day: an amber chip, or heist's wanted stars. Never red. */
  .gm-late { display: inline-flex; align-items: center; height: 16px; margin: -1px 0 -1px 8px; padding: 0 7px; border-radius: 999px; background: color-mix(in srgb, var(--gm-amber) 18%, transparent); border: 1px solid color-mix(in srgb, var(--gm-amber) 70%, transparent); color: var(--gm-amber); font: 700 10.5px/1 var(--font); letter-spacing: .02em; text-transform: none; vertical-align: 1px; white-space: nowrap; }
  .dk-tick .gm-late { margin-left: 0; }
  .gm-wanted { display: inline-flex; gap: 2px; margin-left: 8px; vertical-align: -2px; }
  .gm-wanted i { width: 14px; height: 14px; background: url(art/heist-star.png) center / contain no-repeat; filter: drop-shadow(0 0 3px rgba(255,255,255,.5)); animation: gm-wanted 1s steps(1, end) infinite; }
  .gm-wanted i:nth-child(2n) { animation-delay: .5s; }
  .dk-tick .gm-wanted { margin: -1px 0; }
  @keyframes gm-wanted { 50% { opacity: .25; filter: none; } }
  .dk-tick-due.gm-clear .dk-tick-d { color: var(--pos); }

  /* ---------- Quick Wins on the Overview: row 2 of the left columns ---------- */
  .dk-ov { grid-template-rows: auto auto 1fr; }
  .dk-ov > .dk-qw { grid-column: 1 / span 8; grid-row: 2; margin: 0; min-width: 0; }
  .dk-ov > .dk-chart { grid-row: 3; }
  .dk-ov > .dk-ov-side { grid-row: 1 / span 3; }
  .dk-ov .dk-chart .chart-wrap { min-height: 258px; }
  .dk-qw { overflow: hidden; }
  .gm-qw-head { min-height: 0; height: 34px; padding: 0 14px 0 16px; gap: 10px; }
  .gm-qw-head .label { flex: 0 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-qw-head .gm-streaks { flex: 0 1 auto; min-width: 0; overflow: hidden; }
  .gm-qw-head .grow { flex: 1 0 0; }
  .gm-qw-wk { font-weight: 600; letter-spacing: .02em; text-transform: none; opacity: .75; }
  .gm-qw-meter { display: inline-flex; align-items: center; gap: 3px; flex: none; }
  .gm-qw-meter > i { width: 13px; height: 6px; border-radius: 2px; background: var(--line-2); }
  .gm-qw-meter > i.on { background: var(--pos); }
  .gm-gift { display: none; }
  .gm-qw-n { flex: none; font-size: 12px; color: var(--fg-2); }
  .gm-qw-body { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: center; gap: 10px; padding: 6px 12px 7px; }
  .gm-job { position: relative; display: flex; align-items: center; gap: 9px; min-width: 0; height: 50px; padding: 0 7px 3px 7px; border: 1px solid var(--line); border-radius: var(--r); background: var(--bg-3); overflow: hidden; }
  .gm-job-ico { flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; background: color-mix(in srgb, var(--accent) 14%, transparent); color: var(--accent-text); }
  .gm-job-ico svg { width: 17px; height: 17px; }
  .gm-job-main { flex: 1; min-width: 0; }
  .gm-job-t { font-size: 13px; font-weight: 700; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-job-r { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; margin-top: 2px; }
  .gm-job-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--line); }
  .gm-job-bar i { display: block; height: 100%; background: var(--pos); }
  .gm-job-c { min-width: 0; font-size: 11.5px; line-height: 1.2; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-job-c .num { font-size: 12.5px; color: var(--fg); }
  .gm-qw-body .gm-job-u { display: none; }
  .gm-job .btn.gm-job-go { flex: none; height: 24px; padding: 0 10px; font-size: 12px; }
  .gm-job-go .dk-kbd { margin-left: 7px; }
  .gm-qw-more { flex: none; white-space: nowrap; font-size: 12px; padding: 0; }
  .gm-qw-line { display: flex; align-items: center; gap: 10px; min-height: 64px; padding: 8px 18px; font-size: 13.5px; }
  .gm-qw-line .gm-qw-more { margin-left: auto; }
  .gm-qw-clear b { color: var(--pos); }
  @media (min-width: 1400px) { .gm-qw-more .gm-n, .gm-qw-more.gm-nw0 { display: none; } }
  @media (max-width: 1399px) {
    .dk-ov > .dk-qw { grid-column: 1 / span 7; }
    .gm-qw-body { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gm-job-3, .gm-qw-more .gm-w, .gm-qw-more.gm-nn0, .gm-qw-wk { display: none; }
  }
  @media (max-width: 1199px) {
    .gm-job-ico { display: none; }
    .gm-qw-head { padding: 0 12px; gap: 8px; }
    .gm-qw-head .label { flex: none; }
    .gm-qw-body { padding: 6px 10px 7px; gap: 8px; }
    .gm-qw-meter > i { width: 9px; }
    [data-theme="tycoon"] .gm-qw-meter > i { width: 10px; }
    [data-theme="tycoon"] .gm-qw-head .label { font-size: 15px; }
  }
  .dk-hero .lvl, .dk-hero .gm-track { cursor: pointer; }

  /* ---------- the game's dialogs ---------- */
  .modal:has(.gm-jobs-dlg) { width: min(640px, calc(100vw - 48px)); }
  .modal:has(.gm-tro) { width: min(900px, calc(100vw - 48px)); top: 5vh; max-height: 90vh; }
  .modal:has(.gm-recap) { width: min(540px, calc(100vw - 48px)); top: 8vh; }
  .gm-dlg-streaks { margin: 0 0 8px; }
  .gm-sl { list-style: none; margin: 0 0 14px; padding: 0; font-size: 13px; }
  .gm-sl li { display: flex; align-items: baseline; gap: 8px; padding: 3px 0; }
  .gm-sl-l { width: 120px; color: var(--fg-2); flex: none; }
  .gm-sl .num { min-width: 22px; }
  .gm-joblist { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
  .gm-joblist .gm-job { height: auto; min-height: 64px; padding: 10px 4px; gap: 12px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: none; overflow: visible; }
  .gm-joblist .gm-job-ico { width: 34px; height: 34px; }
  .gm-joblist .gm-job-t { font-size: 14px; display: flex; align-items: center; gap: 8px; }
  .gm-joblist .gm-job-p { display: flex; align-items: center; gap: 8px; min-width: 0; margin-top: 4px; }
  .gm-joblist .gm-job-bar { position: static; flex: none; width: 90px; height: 6px; border-radius: 3px; background: var(--line-2); overflow: hidden; }
  .gm-joblist .gm-job-bar i { border-radius: inherit; }
  .gm-joblist .gm-job-c { font-size: 12.5px; }
  .gm-job-s { margin-top: 3px; font-size: 12px; color: var(--fg-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-joblist .gm-job.done .gm-job-t { text-decoration: line-through; text-decoration-thickness: 1.5px; color: var(--fg-2); }
  .gm-joblist .gm-job.done .gm-job-ico { background: color-mix(in srgb, var(--pos) 16%, transparent); color: var(--pos); }
  .gm-stamp { display: inline-block; padding: 1px 7px; border: 1.5px solid var(--pos); border-radius: 3px; color: var(--pos); font: 800 10px/1.4 var(--font); letter-spacing: .12em; text-transform: uppercase; transform: rotate(-4deg); text-decoration: none; }
  .gm-joblist .gm-job .btn { height: 30px; }

  /* ---------- accounts: how fresh each balance is ---------- */
  .gm-pip { display: inline-block; flex: none; width: 7px; height: 7px; margin: 0 7px 0 0; border-radius: 50%; vertical-align: 1px; background: color-mix(in srgb, var(--pos) 75%, transparent); }
  .gm-pip-ageing { background: var(--gm-amber); }
  .gm-pip-stale { background: transparent; box-shadow: inset 0 0 0 2px var(--gm-amber); }
  .dk-nx .gm-pip { margin-right: 5px; }
  .gm-age { display: inline-flex; align-items: center; gap: 4px; height: 18px; margin-right: 8px; padding: 0 7px; border-radius: 999px; vertical-align: 1px; background: color-mix(in srgb, var(--gm-amber) 16%, transparent); border: 1px solid color-mix(in srgb, var(--gm-amber) 60%, transparent); color: var(--gm-amber); font: 700 10px/1 var(--font); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
  .gm-age:empty { width: 8px; height: 8px; padding: 0; border: 0; background: var(--gm-amber); }
  .gm-age-done { background: color-mix(in srgb, var(--pos) 14%, transparent); border-color: color-mix(in srgb, var(--pos) 55%, transparent); color: var(--pos); }
  .gm-nm { display: flex; align-items: center; min-width: 0; }
  .gm-nm .strong { min-width: 0; }
  .gm-fresh-n { display: inline-flex; align-items: center; height: 18px; margin-left: 10px; padding: 0 8px; border-radius: 999px; border: 1px solid currentColor; font: 700 10.5px/1 var(--font); letter-spacing: .04em; text-transform: none; vertical-align: 1px; opacity: .85; }
  .gm-skip { color: var(--fg-2); }
  .gm-ci-btn .dk-kbd { margin-left: 9px; }

  /* ---------- bills: how each payment landed (late is plain grey, never red) ---------- */
  .gm-pchip { display: inline-block; flex: none; padding: 1px 7px; border-radius: 999px; font: 700 10.5px/1.4 var(--font); letter-spacing: .02em; white-space: nowrap; text-transform: none; border: 1px solid var(--line-2); color: var(--fg-3); }
  .gm-pchip.ok, .gm-pchip.early { color: var(--pos); border-color: color-mix(in srgb, var(--pos) 55%, transparent); }
  .gm-pchip.early { background: color-mix(in srgb, var(--pos) 12%, transparent); }
  .gm-bstreak { padding: 0 20px 4px; font-size: 12.5px; color: var(--fg-2); }
  .dk-tbl-done .strong .gm-pchip { display: none; margin-left: 10px; vertical-align: 1px; }
  @media (min-width: 1400px) { .dk-tbl-done .strong .gm-pchip { display: inline-block; } }

  /* ---------- History: the months in stars ---------- */
  .gm-stars { display: inline-flex; gap: 3px; vertical-align: middle; }
  .gm-stars i { width: 15px; height: 15px; clip-path: var(--gm-star); background: var(--line-2); }
  .gm-stars i.on { background: #f2b632; }
  .gm-stars.big { display: flex; gap: 6px; margin: 10px 0 0; }
  .gm-stars.big i { width: 26px; height: 26px; }
  .gm-c-stars { width: 1%; white-space: nowrap; }
  .gm-seasons .gm-cur td:first-child .small { margin-left: 4px; padding: 1px 6px; border-radius: 999px; border: 1px solid var(--line-2); font-size: 10.5px; }
  .gm-why li { align-items: flex-start; color: var(--fg-3); }
  .gm-why li.on { color: var(--fg); }
  .gm-star-g { flex: none; width: 13px; height: 13px; margin-top: 3px; clip-path: var(--gm-star); background: var(--line-2); }
  .gm-why li.on .gm-star-g { background: #f2b632; }

  /* ---------- the rail's trophy button: on the '?' row, no added height ---------- */
  .side-foot .gm-tro-btn { position: relative; align-self: flex-start; display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; padding: 0; border-radius: 50%; border: 1.5px solid currentColor; opacity: .85; }
  @media (min-width: 1200px) { .side-foot .gm-tro-btn { margin: -32px 0 0 36px; } [data-theme="tycoon"] .side-foot .gm-tro-btn { margin: -36px 0 0 38px; } }
  .gm-tro-ico { width: 13px; height: 13px; background: currentColor; -webkit-mask: var(--gm-cup) center / contain no-repeat; mask: var(--gm-cup) center / contain no-repeat; }
  .gm-tro-cnt { position: absolute; right: -9px; top: -6px; min-width: 15px; height: 15px; padding: 0 3px; border-radius: 999px; background: var(--accent); color: var(--accent-fg); font: 700 9.5px/15px var(--font); letter-spacing: 0; text-align: center; }
  @media (hover: hover) { .side-foot .gm-tro-btn:hover { opacity: 1; } }
  @media (max-width: 1199px) { .side-foot .gm-tro-btn { align-self: center; margin: 0; } }

  /* ---------- trophies dialog ---------- */
  .gm-tro .gm-tro-n { font-size: 15px; color: var(--fg); }
  .gm-pr { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1px; margin: 0 0 16px; border: 1px solid var(--line); border-radius: var(--r); background: var(--line); overflow: hidden; }
  .gm-pr-c { min-width: 0; padding: 9px 11px 8px; background: var(--bg-2); }
  .gm-pr-c .label { font-size: 9.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-pr-v { margin-top: 3px; font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-pr-c .small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-tro-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .gm-tc { display: flex; gap: 12px; min-width: 0; padding: 12px 13px 11px; border: 1px solid var(--line); border-radius: var(--r); background: var(--bg-3); }
  .gm-medal { position: relative; flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; color: #fff; background: var(--line-2); }
  .gm-medal svg { width: 22px; height: 22px; }
  .gm-medal.t1 { background: radial-gradient(circle at 35% 30%, #f3c79c, var(--gm-t1) 60%, #8a5526); }
  .gm-medal.t2 { background: radial-gradient(circle at 35% 30%, #f4f7fb, var(--gm-t2) 60%, #7f8a98); color: #2c3440; }
  .gm-medal.t3 { background: radial-gradient(circle at 35% 30%, #fff1b8, var(--gm-t3) 60%, #b98512); color: #4a3400; }
  .gm-medal.t4 { background: radial-gradient(circle at 35% 30%, #ffffff, var(--gm-t4) 55%, #4fa9b8); color: #0f3a42; }
  .gm-tc-main { flex: 1; min-width: 0; }
  .gm-tc-name { display: flex; align-items: baseline; gap: 8px; font-size: 14px; font-weight: 700; }
  .gm-tc-tier { margin-left: auto; font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--fg-3); }
  .t1 .gm-tc-tier { color: var(--gm-t1); } .t3 .gm-tc-tier { color: #d9a321; } .t4 .gm-tc-tier { color: #3fb3c4; }
  .gm-tdots { display: flex; gap: 4px; margin: 5px 0 7px; }
  .gm-tdots i { width: 8px; height: 8px; border-radius: 50%; background: var(--line-2); }
  .gm-tdots i.on { background: #f2b632; }
  .gm-tc-bar { height: 5px; border-radius: 3px; background: var(--line-2); overflow: hidden; }
  .gm-tc-bar i { display: block; height: 100%; border-radius: inherit; background: var(--pos); }
  .gm-tc-txt { margin-top: 6px; font-size: 12px; line-height: 1.35; color: var(--fg-2); }
  .gm-tc-how { margin-top: 2px; font-size: 11.5px; color: var(--fg-3); }
  .gm-tc.locked .gm-medal { filter: grayscale(1); opacity: .45; }
  .gm-tc.locked .gm-tc-name { color: var(--fg-2); }
  .gm-tro .mactions .dk-kbd { margin: 0 4px 0 0; }
  @media (max-width: 1199px) {
    .modal:has(.gm-tro) { width: min(720px, calc(100vw - 48px)); }
    .gm-tro-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gm-pr { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }

  /* ---------- the month recap ---------- */
  .gm-rc-top { position: relative; margin: 0 0 14px; }
  .gm-rc-kick { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--fg-3); }
  .gm-rc-title { margin: 4px 0 0; font-size: 26px; }
  .gm-rc-grade { display: none; }
  .gm-rc-lines { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
  .gm-rc-lines li { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 8px 2px; border-bottom: 1px solid var(--line); font-size: 14px; }
  .gm-rc-lines li > span { color: var(--fg-2); }
  .gm-rc-lines li b { font-size: 16px; }
  .gm-rc-total b { font-size: 24px !important; }
  .gm-rc-total > span { color: var(--fg) !important; font-weight: 700; }
  .gm-rc-stars { display: flex; justify-content: center; gap: 14px; margin: 18px 0 6px; }
  .gm-rc-stars i { width: 44px; height: 44px; clip-path: var(--gm-star); background: var(--line-2); }
  .gm-rc-stars i.on { background: linear-gradient(180deg, #ffe07a, #f2b632 60%, #d18a12); }
  .gm-rc-why { list-style: none; margin: 8px 0 0; padding: 0; font-size: 12.5px; color: var(--fg-3); }
  .gm-rc-why li { padding: 2px 0 2px 18px; position: relative; }
  .gm-rc-why li::before { content: "☆"; position: absolute; left: 0; }
  .gm-rc-why li.on { color: var(--fg-2); }
  .gm-rc-why li.on::before { content: "★"; color: #f2b632; }
  /* played: lines in one by one, then the stars stamp */
  .gm-rc-play .gm-rc-lines li { animation: gm-rc-line .3s ease-out both; animation-delay: calc(120ms + var(--i) * 170ms); }
  .gm-rc-play .gm-rc-stars i { animation: gm-rc-stamp .34s cubic-bezier(.3, 1.6, .5, 1) both; animation-delay: calc(120ms + var(--i, 7) * 170ms + 250ms + var(--s) * 260ms); }
  .gm-rc-play .gm-rc-stars { --i: 7; }
  @keyframes gm-rc-line { from { opacity: 0; transform: translateY(6px); } }
  @keyframes gm-rc-stamp { 0% { opacity: 0; transform: scale(2.2) rotate(-12deg); } 100% { opacity: 1; transform: none; } }

  /* ---------- GO! moments: the banner (big) and the pops (small) ---------- */
  .fx-moment.fx-big { position: fixed; top: 0; bottom: 0; right: 0; pointer-events: none; }
  .fx-b-band { position: absolute; top: var(--fx-top); left: 50%; translate: -50% 0; display: flex; align-items: center; gap: 12px; max-width: calc(100% - 48px); height: 48px; padding: 0 20px 0 14px; border-radius: 10px;
    background: var(--bg-2); border: 1px solid var(--line-2); box-shadow: 0 14px 34px rgba(0,0,0,.32); color: var(--fg); overflow: hidden; white-space: nowrap; animation: fx-b-in .25s cubic-bezier(.2, .9, .3, 1.15) both; }
  .fx-b-band::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--accent); }
  .fx-big.out .fx-b-band { animation: fx-b-out .3s ease-in both; }
  .fx-big.out.quick .fx-b-band, .fx-big.out.quick .fx-lb, .fx-big.out.quick .fx-b-fx { animation-duration: .16s; }
  .fx-b-mark { flex: none; color: var(--accent-text); font-size: 16px; }
  .fx-b-mark b { font-weight: 400; }
  .fx-b-text { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
  .fx-b-title { font-size: 15px; font-weight: 800; }
  .fx-b-head { font: 700 15px/1 var(--mono); color: var(--accent-text); }
  .fx-b-sub { font-size: 12.5px; color: var(--fg-2); overflow: hidden; text-overflow: ellipsis; }
  .fx-b-sub .dk-kbd { margin: 0 4px 0 0; }
  .fx-b-xp, .fx-lb { display: none; }
  .fx-b-fx { position: absolute; z-index: 0; left: 0; right: 0; top: calc(var(--fx-top) - 70px); height: 300px; overflow: hidden; }
  .fx-b-band { z-index: 1; }
  @keyframes fx-b-in { from { opacity: 0; transform: translateY(-12px) scale(.96); } }
  @keyframes fx-b-out { to { opacity: 0; transform: translateY(-8px) scale(.98); } }
  .fx-pops { position: fixed; translate: -50% 0; display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; }
  .fx-pop { display: flex; align-items: center; gap: 10px; max-width: min(640px, 56vw); padding: 7px 16px 7px 8px; border-radius: 999px; background: var(--bg-2); border: 1px solid var(--line-2);
    box-shadow: 0 10px 26px rgba(0,0,0,.3); color: var(--fg); white-space: nowrap; animation: fx-pop-in .24s cubic-bezier(.2, .9, .3, 1.25) both; }
  .fx-pop.out { animation: fx-pop-out .25s ease-in both; }
  .fx-p-ico { flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--pos); position: relative; }
  .fx-p-ico::after { content: ""; position: absolute; inset: 5px; background: var(--bg-2); -webkit-mask: var(--gm-tick) center / contain no-repeat; mask: var(--gm-tick) center / contain no-repeat; }
  .fx-k-ath .fx-p-ico, .fx-k-stage .fx-p-ico { background: var(--accent); }
  .fx-p-body { display: flex; align-items: baseline; gap: 9px; min-width: 0; }
  .fx-p-t { font-size: 13.5px; font-weight: 800; }
  .fx-p-s { min-width: 0; font-size: 12.5px; color: var(--fg-2); overflow: hidden; text-overflow: ellipsis; }
  @keyframes fx-pop-in { from { opacity: 0; transform: translateY(-10px) scale(.9); } }
  @keyframes fx-pop-out { to { opacity: 0; transform: translateY(-6px) scale(.97); } }
  @keyframes fx-fall { 0% { opacity: 0; transform: translateY(-30px) rotate(0) scale(var(--s, 1)); } 10% { opacity: 1; } 85% { opacity: 1; } 100% { opacity: 0; transform: translateY(250px) rotate(var(--r)) scale(var(--s, 1)); } }
  .fx-coin, .fx-chip, .fx-spark, .fx-dice { position: absolute; top: 0; left: var(--x); }

  /* ======================================================================
     per look
     ====================================================================== */

  /* ---------- tycoon: Monopoly GO. Gold ribbon chips, a gift at the end of the week, chunky tiles, a GO! ribbon ---------- */
  [data-theme="tycoon"] .gm-sk { height: 24px; gap: 3px; padding: 0 9px 0 6px; border: 2px solid #fff; border-radius: 8px; background: linear-gradient(180deg, #ffe98f, #ffb800); box-shadow: 0 2px 0 rgba(0,0,0,.3); color: var(--navy); font: 400 13px/1 "Lilita One", sans-serif; letter-spacing: .02em; text-shadow: 0 1px 0 rgba(255,255,255,.45); }
  [data-theme="tycoon"] .gm-sk-i { width: 13px; height: 14px; background: linear-gradient(180deg, #ffdd57, #ff5a1f 55%, #d81e1e); -webkit-mask-image: var(--gm-flame); mask-image: var(--gm-flame); }
  :root[data-theme="tycoon"] .gm-sk .gm-sk-n, :root[data-theme="tycoon"] .panel .panel-head .gm-sk .gm-sk-n.num { font: inherit; color: var(--navy); text-shadow: 0 1px 0 rgba(255,255,255,.45); }
  [data-theme="tycoon"] .gm-sk-post { color: #6b4a00; font-size: 12px; }
  [data-theme="tycoon"] .gm-sk-best { border-left-color: rgba(27,42,74,.35); color: #6b4a00; }
  [data-theme="tycoon"] .gm-sk.zero { background: linear-gradient(180deg, #f3f6fb, #d6e2f1); }
  [data-theme="tycoon"] .gm-sk.zero .gm-sk-i { background: #9aabc4; }
  :root[data-theme="tycoon"] .gm-sk.zero .gm-sk-n, :root[data-theme="tycoon"] .panel .panel-head .gm-sk.zero .gm-sk-n.num { color: #4a5878; }
  [data-theme="tycoon"] .dk-tick .gm-sk { height: 18px; margin: -2px 0; padding: 0 6px 0 4px; border-width: 1.5px; border-radius: 6px; font-size: 11.5px; }
  [data-theme="tycoon"] .dk-tick-due .gm-tick-top > :is(.gm-sk, .gm-late) { position: absolute; top: -9px; right: 10px; margin: 0; }
  [data-theme="tycoon"] .dk-tick .gm-sk .gm-sk-n { font-size: 11.5px; }
  [data-theme="tycoon"] .dk-tick-due.gm-clear::before { background-image: url(art/tycoon-shield.png); }
  [data-theme="tycoon"] .dk-tick-due.gm-clear .dk-tick-d { color: #8dff9a; }
  [data-theme="tycoon"] .gm-late { height: 18px; border: 1.5px solid #fff; background: linear-gradient(180deg, #ffd27a, #f59a1b); color: var(--navy); font: 400 11px/1 "Lilita One", sans-serif; box-shadow: 0 2px 0 rgba(0,0,0,.25); }
  [data-theme="tycoon"] .dk-qw .gm-qw-head { height: 34px; }
  [data-theme="tycoon"] .gm-qw-head .label { font-size: 17px; }
  [data-theme="tycoon"] .gm-qw-wk { font: 400 13px "Lilita One", sans-serif; opacity: .85; }
  [data-theme="tycoon"] .gm-qw-meter { gap: 0; height: 18px; padding: 2px; border: 2px solid var(--navy); border-radius: 999px; background: #0b1b3d; box-shadow: inset 0 2px 3px rgba(0,0,0,.5); position: relative; margin-right: 14px; }
  [data-theme="tycoon"] .gm-qw-meter > i { width: 16px; height: 10px; border-radius: 0; background: transparent; border-right: 1.5px solid rgba(255,255,255,.15); }
  [data-theme="tycoon"] .gm-qw-meter > i:first-child { border-radius: 999px 0 0 999px; }
  [data-theme="tycoon"] .gm-qw-meter > i.on { background: linear-gradient(180deg, #fff0a0, #ffc531 55%, #e09a00); }
  [data-theme="tycoon"] .gm-gift { display: block; position: absolute; right: -18px; top: 50%; width: 30px; height: 30px; margin-top: -17px; overflow: visible; filter: drop-shadow(0 2px 0 rgba(0,0,0,.35)); }
  [data-theme="tycoon"] .gm-gift-box { fill: #ff5a5a; stroke: #7a0f0f; stroke-width: 1.2; }
  [data-theme="tycoon"] .gm-gift-lid { fill: #ff7a7a; stroke: #7a0f0f; stroke-width: 1.2; transition: transform .35s cubic-bezier(.3, 1.6, .5, 1); transform-origin: 3px 9px; }
  [data-theme="tycoon"] .gm-gift-rib { fill: #ffc531; }
  [data-theme="tycoon"] .gm-gift-bow { fill: #ffc531; stroke: #b07a00; stroke-width: 1; transition: transform .35s cubic-bezier(.3, 1.6, .5, 1); transform-origin: 3px 9px; }
  [data-theme="tycoon"] .gm-gift.open :is(.gm-gift-lid, .gm-gift-bow) { transform: translate(-2px, -5px) rotate(-18deg); }
  [data-theme="tycoon"] .gm-qw-n { font: 400 14px "Lilita One", sans-serif; color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.3); }

  [data-theme="tycoon"] .gm-job { height: 50px; padding-bottom: 5px; border: 2px solid var(--navy); border-radius: 12px; background: #fff; box-shadow: 0 3px 0 rgba(27,42,74,.25); }
  [data-theme="tycoon"] .gm-job-ico { width: 32px; height: 32px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff3a8, #ffc531 55%, #d99a12); box-shadow: 0 0 0 1.5px #b07a00, 0 2px 0 rgba(0,0,0,.2); color: #7a5200; }
  [data-theme="tycoon"] .gm-job-t { font: 400 14px/1.15 "Lilita One", sans-serif; letter-spacing: .02em; color: var(--navy); }
  [data-theme="tycoon"] .gm-job-bar { height: 5px; border-top: 1.5px solid var(--navy); background: #d9e6f5; }
  [data-theme="tycoon"] .gm-job-bar i { background: linear-gradient(180deg, #8df58d, #23a83b); }
  [data-theme="tycoon"] .gm-job-c { color: var(--fg-2); font-weight: 700; }
  [data-theme="tycoon"] .gm-job-c .num { color: var(--navy); font-weight: 800; }
  [data-theme="tycoon"] .btn.gm-job-go { height: 25px; padding: 0 11px; border-radius: 9px; font-size: 13.5px; background: linear-gradient(180deg, #6ee86e, #23a83b); border-color: #157a2a; box-shadow: 0 3px 0 #0f5f1f, inset 0 2px 0 rgba(255,255,255,.55); color: #fff; }
  [data-theme="tycoon"] .gm-job-go .dk-kbd { opacity: 1; color: #fff; border-color: rgba(255,255,255,.75); background: rgba(255,255,255,.2); }
  [data-theme="tycoon"] .gm-qw-more { color: #fff; font-size: 14px; }
  [data-theme="tycoon"] .gm-qw-line .gm-qw-more { color: var(--navy); text-shadow: none; }
  [data-theme="tycoon"] .gm-qw-line .gm-qw-more .dk-kbd { color: var(--navy); border-color: var(--navy); }
  [data-theme="tycoon"] .gm-qw-clear b { color: #1d8f3a; font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 16px; }
  [data-theme="tycoon"] .gm-joblist .gm-job { border: 0; border-bottom: 2px dashed var(--line); border-radius: 0; box-shadow: none; background: none; }
  [data-theme="tycoon"] .gm-joblist .gm-job.done .gm-job-ico { background: radial-gradient(circle at 35% 30%, #c8ffd0, #4fd66c 55%, #1d8f3a); box-shadow: 0 0 0 1.5px #157a2a; color: #fff; }
  [data-theme="tycoon"] .gm-stamp { border: 2px solid #1d8f3a; color: #1d8f3a; font: 400 12px/1.3 "Lilita One", sans-serif; letter-spacing: .06em; background: #e6ffe9; }
  [data-theme="tycoon"] .gm-sl-l { font-family: "Lilita One", sans-serif; }
  [data-theme="tycoon"] .gm-age { height: 22px; gap: 4px; margin-right: 9px; padding: 0 8px 0 3px; border: 2px solid var(--navy); border-radius: 11px; background: #fff; color: var(--navy); font: 400 12px/1 "Lilita One", sans-serif; letter-spacing: .02em; text-transform: none; box-shadow: 0 2px 0 rgba(27,42,74,.25); position: relative; }
  [data-theme="tycoon"] .gm-age::after { content: ""; position: absolute; left: 11px; bottom: -6px; width: 7px; height: 7px; background: #fff; border: solid var(--navy); border-width: 0 2px 2px 0; transform: rotate(45deg); }
  [data-theme="tycoon"] .gm-age-done { width: 22px; padding: 0; justify-content: center; border-radius: 50%; background: linear-gradient(180deg, #8df58d, #23a83b); color: #fff; border-color: #157a2a; font-size: 0; }
  [data-theme="tycoon"] .gm-age-done::before { content: ""; width: 11px; height: 11px; background: #fff; -webkit-mask: var(--gm-tick) center / contain no-repeat; mask: var(--gm-tick) center / contain no-repeat; }
  [data-theme="tycoon"] .gm-age-done::after { display: none; }
  [data-theme="tycoon"] .gm-clock { position: relative; width: 16px; height: 16px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff3a8, #ffc531 55%, #d99a12); box-shadow: 0 0 0 1.5px #b07a00; }
  [data-theme="tycoon"] .gm-clock::before { content: ""; position: absolute; left: 7px; top: 3px; width: 4px; height: 5px; border-left: 2px solid var(--navy); border-bottom: 2px solid var(--navy); }
  [data-theme="tycoon"] .gm-pip { width: 9px; height: 9px; box-shadow: 0 0 0 1.5px var(--navy); }
  [data-theme="tycoon"] .gm-pip-fresh { background: #23a83b; }
  [data-theme="tycoon"] .gm-pip-ageing { background: #ffb800; }
  [data-theme="tycoon"] .gm-pip-stale { background: #fff; box-shadow: 0 0 0 1.5px var(--navy), inset 0 0 0 2.5px #ffb800; }
  [data-theme="tycoon"] .gm-fresh-n { height: 20px; border: 2px solid #fff; background: rgba(0,0,0,.18); font: 400 12px/1 "Lilita One", sans-serif; opacity: 1; }
  [data-theme="tycoon"] .btn.gm-ci-btn { background: linear-gradient(180deg, #ffe98f, #ffbd14); border-color: #c98c00; box-shadow: 0 4px 0 #7a5200, inset 0 2px 0 rgba(255,255,255,.65); color: var(--navy); text-shadow: 0 1px 0 rgba(255,255,255,.45); padding-left: 38px; position: relative; }
  [data-theme="tycoon"] .btn.gm-ci-btn::before { content: ""; position: absolute; left: 9px; top: 50%; width: 22px; height: 22px; margin-top: -11px; background: url(art/tycoon-coin.png) center / contain no-repeat; filter: drop-shadow(0 1px 1px rgba(0,0,0,.35)); }
  [data-theme="tycoon"] .btn.gm-ci-btn .dk-kbd { color: var(--navy); border-color: rgba(27,42,74,.6); background: rgba(255,255,255,.4); }
  [data-theme="tycoon"] .gm-pchip { border: 1.5px solid #9aabc4; color: #4a5878; font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 11px; background: #fff; }
  [data-theme="tycoon"] .gm-pchip.ok, [data-theme="tycoon"] .gm-pchip.early { border-color: #157a2a; color: #fff; background: linear-gradient(180deg, #6ee86e, #23a83b); text-shadow: 0 1px 0 rgba(0,0,0,.3); }
  [data-theme="tycoon"] .gm-bstreak { font-family: "Lilita One", sans-serif; color: var(--navy); font-size: 13.5px; }
  [data-theme="tycoon"] .gm-stars i { width: 18px; height: 18px; background: #c9d6e8; }
  [data-theme="tycoon"] .gm-stars i.on { background: linear-gradient(180deg, #fff3a8, #ffc531 55%, #e09a00); filter: drop-shadow(0 1px 0 #b07a00); }
  [data-theme="tycoon"] .gm-stars.big i { width: 32px; height: 32px; }
  [data-theme="tycoon"] .side-foot .gm-tro-btn { width: 30px; height: 30px; border: 2px solid #fff; background: linear-gradient(180deg, #ffe98f, #ffb800); box-shadow: 0 2px 0 rgba(0,0,0,.35); opacity: 1; color: var(--navy); }
  [data-theme="tycoon"] .gm-tro-ico { width: 20px; height: 20px; -webkit-mask: none; mask: none; background: url(art/trophy.png) center / contain no-repeat; filter: drop-shadow(0 1px 0 rgba(0,0,0,.35)); }
  [data-theme="tycoon"] .gm-tro-cnt { right: -10px; top: -7px; border: 1.5px solid #fff; background: linear-gradient(#ff6b6b, #d81e1e); color: #fff; font: 400 10px/13px "Lilita One", sans-serif; }
  /* the album: a blue page of glossy stickers with gold stars */
  [data-theme="tycoon"] .modal:has(.gm-tro) { background: linear-gradient(180deg, #3b8fe8, #1d55b5); }
  [data-theme="tycoon"] .gm-tro { background: radial-gradient(rgba(255,255,255,.1) 1.4px, transparent 1.6px) 0 0 / 16px 16px; }
  [data-theme="tycoon"] .gm-tro > h3:first-child { background: linear-gradient(180deg, #ffd54a, #e0a300) !important; color: var(--navy) !important; text-shadow: 0 1px 0 rgba(255,255,255,.4) !important; }
  [data-theme="tycoon"] .gm-tro .intro, [data-theme="tycoon"] .gm-tro .mactions .muted { color: #d7ecff; }
  [data-theme="tycoon"] .gm-tro .gm-tro-n { color: #fff; font-family: "Lilita One", sans-serif; font-weight: 400; font-size: 17px; }
  [data-theme="tycoon"] .gm-pr { border: 3px solid #fff; border-radius: 14px; background: #fff; box-shadow: 0 4px 0 rgba(0,0,0,.2); }
  [data-theme="tycoon"] .gm-pr-c { background: #fff8e8; }
  [data-theme="tycoon"] .gm-pr-v { font-family: "Lilita One", sans-serif; font-weight: 400; color: var(--navy); }
  [data-theme="tycoon"] .gm-tc { position: relative; border: 3px solid #fff; border-radius: 16px; background: linear-gradient(160deg, #ffffff, #fff4d6); box-shadow: 0 5px 0 rgba(0,0,0,.2), 0 10px 18px rgba(0,0,0,.15); }
  [data-theme="tycoon"] .gm-tc:nth-child(odd) { rotate: -1deg; } [data-theme="tycoon"] .gm-tc:nth-child(3n) { rotate: 1.2deg; }
  [data-theme="tycoon"] .gm-tc::after { content: ""; position: absolute; inset: 0; border-radius: 13px; background: linear-gradient(115deg, rgba(255,255,255,.7) 0 12%, transparent 30%); pointer-events: none; }
  [data-theme="tycoon"] .gm-tc-name { font: 400 16px "Lilita One", sans-serif; letter-spacing: .02em; color: var(--navy); }
  [data-theme="tycoon"] .gm-tc-tier { font: 400 11px "Lilita One", sans-serif; }
  [data-theme="tycoon"] .gm-medal { width: 50px; height: 50px; border: 3px solid #fff; box-shadow: 0 3px 0 rgba(0,0,0,.25); }
  [data-theme="tycoon"] .gm-tdots i { width: 14px; height: 14px; border-radius: 0; clip-path: var(--gm-star); background: #c9d6e8; }
  [data-theme="tycoon"] .gm-tdots i.on { background: linear-gradient(180deg, #fff3a8, #ffc531 55%, #e09a00); }
  [data-theme="tycoon"] .gm-tc-bar { height: 9px; border: 1.5px solid var(--navy); border-radius: 999px; background: #d9e6f5; }
  [data-theme="tycoon"] .gm-tc-bar i { background: linear-gradient(180deg, #8df58d, #23a83b); }
  [data-theme="tycoon"] .gm-tc.locked { background: #dfe7f2; border-style: dashed; border-color: #b7c7de; box-shadow: none; }
  [data-theme="tycoon"] .gm-tc.locked::after { display: none; }
  [data-theme="tycoon"] .gm-tc.locked .gm-medal { background: #9aabc4; filter: none; opacity: 1; color: #dfe7f2; }
  /* the recap: BOARD COMPLETE! */
  [data-theme="tycoon"] .gm-recap .gm-rc-top { margin: -24px -24px 16px; padding: 16px 24px 16px; text-align: center; background: linear-gradient(180deg, #ff5a5a, #d81e1e); border-bottom: 4px solid #ffc531; }
  [data-theme="tycoon"] .gm-rc-kick { color: #ffe9a8; font: 400 13px "Lilita One", sans-serif; letter-spacing: .06em; }
  [data-theme="tycoon"] .gm-rc-title { font: 400 36px/1.05 "Lilita One", sans-serif; color: #fff; -webkit-text-stroke: 1.5px var(--navy); text-shadow: 0 4px 0 var(--navy); }
  [data-theme="tycoon"] .gm-rc-lines li { border-bottom: 2px dashed var(--line); }
  [data-theme="tycoon"] .gm-rc-lines li > span { font-family: "Lilita One", sans-serif; color: var(--fg-2); }
  [data-theme="tycoon"] .gm-rc-total { position: relative; margin-top: 6px; padding: 10px 14px !important; border: 3px solid #fff !important; border-radius: 14px; background: linear-gradient(180deg, #fff3cf, #ffe9a8); box-shadow: 0 4px 0 rgba(0,0,0,.18); }
  [data-theme="tycoon"] .gm-rc-total b { font-family: "Lilita One", sans-serif; font-weight: 400; }
  [data-theme="tycoon"] .gm-rc-play .gm-rc-total::after { content: ""; position: absolute; right: 18px; top: -10px; width: 26px; height: 26px; background: url(art/tycoon-coin.png) center / contain no-repeat; animation: gm-coin-spill .9s cubic-bezier(.3, .8, .5, 1) 1.5s both; }
  @keyframes gm-coin-spill { 0% { opacity: 0; transform: translateY(-30px) rotate(-60deg); } 60% { opacity: 1; transform: translateY(4px) rotate(10deg); } 100% { opacity: 1; transform: none; } }
  [data-theme="tycoon"] .gm-rc-stars i { width: 60px; height: 60px; background: #c9d6e8; }
  [data-theme="tycoon"] .gm-rc-stars i.on { background: linear-gradient(180deg, #fff3a8, #ffc531 55%, #e09a00); filter: drop-shadow(0 3px 0 #b07a00); }
  [data-theme="tycoon"] .btn.gm-rc-go { min-width: 120px; background: linear-gradient(180deg, #ff6b6b, #d81e1e); border-color: #9c1414; box-shadow: 0 4px 0 #7a0f0f, inset 0 2px 0 rgba(255,255,255,.45); font-size: 20px; height: 42px; }
  /* the banner: a red ribbon with gold edges, a GO! roundel, coins, and dice on a level up */
  [data-theme="tycoon"] .fx-b-band { left: 18px; right: 18px; translate: none; max-width: none; height: 130px; justify-content: center; gap: 24px; padding: 0 60px; border: 0; border-radius: 0; overflow: visible;
    background: linear-gradient(180deg, #ffc531 0 5px, #ff5a5a 5px, #d81e1e 62%, #b71515 calc(100% - 5px), #ffc531 0);
    clip-path: polygon(0 0, 100% 0, calc(100% - 34px) 50%, 100% 100%, 0 100%, 34px 50%); box-shadow: none; filter: drop-shadow(0 8px 0 rgba(122,15,15,.7)) drop-shadow(0 18px 22px rgba(0,0,0,.3));
    transform-origin: left center; animation: fx-ty-sweep .25s cubic-bezier(.2, .9, .3, 1) both; }
  [data-theme="tycoon"] .fx-big { filter: drop-shadow(0 10px 18px rgba(0,0,0,.25)); }
  [data-theme="tycoon"] .fx-b-band::before { display: none; }
  [data-theme="tycoon"] .fx-b-band::after { content: ""; position: absolute; inset: 5px 0; background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.35) 45%, transparent 60%) no-repeat; background-size: 60% 100%; animation: fx-ty-shine 1.1s ease-out .25s both; }
  @keyframes fx-ty-sweep { from { opacity: .3; transform: translateX(-30px) scaleX(.15); } to { opacity: 1; transform: none; } }
  @keyframes fx-ty-shine { from { background-position: -80% 0; } to { background-position: 220% 0; } }
  [data-theme="tycoon"] .fx-b-mark { position: relative; z-index: 1; display: grid; place-items: center; width: 96px; height: 96px; border-radius: 50%; background: radial-gradient(circle, #fff 0 56%, #d81e1e 57% 72%, #fff 73%); box-shadow: 0 0 0 4px #ffc531, 0 5px 0 4px #7a5200; animation: fx-ty-roundel .5s cubic-bezier(.3, 1.5, .5, 1) .08s both; }
  [data-theme="tycoon"] .fx-b-mark b { font: 400 34px/1 "Lilita One", sans-serif; color: #d81e1e; letter-spacing: .01em; transform: rotate(-8deg); text-shadow: 0 2px 0 #7a0f0f; }
  @keyframes fx-ty-roundel { from { transform: scale(.2) rotate(-200deg); } to { transform: none; } }
  /* a sticker unlocked: the roundel is a sticker card that flips out of its pack, one gold star per tier */
  [data-theme="tycoon"] .fx-k-tro .fx-b-mark { width: 84px; height: 104px; border-radius: 14px; background: radial-gradient(rgba(27,42,74,.06) 1.2px, transparent 1.5px) 0 0 / 8px 8px, linear-gradient(160deg, #ffffff, #fff1c4);
    box-shadow: 0 0 0 4px #ffc531, 0 5px 0 4px #7a5200; transform-origin: 50% 50%; animation: fx-ty-flip .6s cubic-bezier(.3, 1.3, .5, 1) .05s both; }
  [data-theme="tycoon"] .fx-k-tro .fx-b-mark b { transform: none; font-size: 22px; letter-spacing: 0; color: #ffb800; text-shadow: 0 2px 0 #b07a00; white-space: nowrap; }
  @keyframes fx-ty-flip { 0% { transform: perspective(500px) rotateY(180deg) scale(.6); filter: brightness(.6); } 60% { filter: brightness(1.3); } 100% { transform: perspective(500px) rotateY(0) scale(1); filter: none; } }
  [data-theme="tycoon"] .fx-b-text { position: relative; z-index: 1; display: grid; grid-template-columns: auto auto; align-items: center; justify-content: start; column-gap: 16px; row-gap: 6px; white-space: nowrap; }
  [data-theme="tycoon"] .fx-b-title { font: 400 46px/1 "Lilita One", sans-serif; letter-spacing: .02em; color: #fff; -webkit-text-stroke: 2px var(--navy); text-shadow: 0 4px 0 var(--navy); }
  [data-theme="tycoon"] .fx-b-head { padding: 4px 14px 5px; border: 3px solid #fff; border-radius: 12px; background: linear-gradient(180deg, #ffe98f, #ffb800); box-shadow: 0 3px 0 #7a5200; color: var(--navy); font: 400 24px/1 "Lilita One", sans-serif; letter-spacing: .02em; text-shadow: 0 1px 0 rgba(255,255,255,.5); max-width: 420px; overflow: hidden; text-overflow: ellipsis; }
  [data-theme="tycoon"] .fx-b-sub { grid-column: 1 / -1; font: 400 17px/1.2 "Lilita One", sans-serif; letter-spacing: .02em; color: #ffe9a8; text-shadow: 0 2px 0 rgba(0,0,0,.35); }
  [data-theme="tycoon"] .fx-b-sub .dk-kbd { color: #fff; }
  [data-theme="tycoon"] .fx-coin { width: 30px; height: 30px; background: url(art/tycoon-coin.png) center / contain no-repeat; filter: drop-shadow(0 2px 1px rgba(0,0,0,.35)); animation: fx-fall 1.5s cubic-bezier(.35, .1, .6, 1) var(--d) both; }
  [data-theme="tycoon"] .fx-dice { top: 110px; width: 58px; height: 58px; background: url(art/tycoon-dice.png) center / contain no-repeat; filter: drop-shadow(0 4px 2px rgba(0,0,0,.35)); animation: fx-dice-roll .9s cubic-bezier(.2, .8, .3, 1) .15s both; }
  [data-theme="tycoon"] .fx-dice.a { left: calc(100% - 150px); } [data-theme="tycoon"] .fx-dice.b { left: calc(100% - 96px); top: 126px; width: 44px; height: 44px; animation-delay: .28s; }
  @keyframes fx-dice-roll { 0% { opacity: 0; transform: translate(260px, -90px) rotate(420deg); } 70% { opacity: 1; transform: translate(-8px, 6px) rotate(-12deg); } 100% { opacity: 1; transform: none; } }
  [data-theme="tycoon"] .fx-big.out .fx-b-band { animation: fx-ty-out .3s ease-in both; }
  [data-theme="tycoon"] .fx-big.out .fx-b-fx { animation: fx-fade-out .3s both; }
  @keyframes fx-ty-out { to { opacity: 0; transform: translateX(40px) scaleY(.6); } }
  [data-theme="tycoon"] .fx-pop { gap: 9px; padding: 5px 18px 5px 6px; border: 3px solid #fff; background: linear-gradient(180deg, #fff8e8, #ffeec2); box-shadow: 0 4px 0 rgba(0,0,0,.25), 0 12px 22px rgba(0,0,0,.2); color: var(--navy); }
  [data-theme="tycoon"] .fx-p-ico { width: 30px; height: 30px; background: url(art/tycoon-coin.png) center / contain no-repeat; }
  [data-theme="tycoon"] .fx-p-ico::after { display: none; }
  [data-theme="tycoon"] .fx-k-fresh .fx-p-ico { background-image: url(art/tycoon-shield.png); }
  [data-theme="tycoon"] .fx-k-stage .fx-p-ico { background-image: url(art/emblem-board.png); }
  [data-theme="tycoon"] .fx-p-t { font: 400 18px/1 "Lilita One", sans-serif; letter-spacing: .02em; color: #d81e1e; text-shadow: 0 1px 0 #fff; }
  [data-theme="tycoon"] .fx-p-s { font: 400 14px "Lilita One", sans-serif; letter-spacing: .02em; color: var(--navy); }

  /* ---------- heist: the GTA V pause menu. MISSION PASSED between letterbox bars, wanted stars, the Awards list ---------- */
  [data-theme="heist"] .gm-sk { height: 22px; gap: 5px; padding: 0 9px; border: 1px solid rgba(255,255,255,.3); border-radius: 0; background: rgba(0,0,0,.35); font: 500 10.5px/1 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #d0d0d4; }
  [data-theme="heist"] .gm-sk-i { display: none; }
  [data-theme="heist"] .gm-sk .gm-sk-n { font: 400 14px/1 "Anton", sans-serif; letter-spacing: .03em; color: #8ee08a; }
  [data-theme="heist"] .gm-sk.zero .gm-sk-n { color: #b8b8bc; }
  [data-theme="heist"] .gm-sk-pre, [data-theme="heist"] .gm-sk-post { color: #d0d0d4; }
  [data-theme="heist"] .gm-sk-best { border-left-color: rgba(255,255,255,.25); color: #8a8a90; }
  @media (max-width: 1399px) { [data-theme="heist"] .gm-qw-head .gm-sk-i { display: block; width: 9px; height: 9px; background: #d0d0d4; } }
  [data-theme="heist"] .dk-tick .gm-sk { padding: 0 5px; }
  [data-theme="heist"] .dk-tick .gm-sk .gm-sk-n { font-size: 11px; }
  [data-theme="heist"] .dk-tick .gm-sk-i { display: block; width: 8px; height: 8px; background: #8ee08a; }
  [data-theme="heist"] .gm-wanted i { width: 15px; height: 15px; }
  [data-theme="heist"] .dk-tick-due.gm-clear .dk-tick-d { color: #8ee08a; font-family: "Oswald", sans-serif; text-transform: uppercase; letter-spacing: .1em; }
  [data-theme="heist"] .gm-qw-wk { font: 500 10.5px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #9a9aa0; opacity: 1; }
  [data-theme="heist"] .gm-qw-meter { gap: 2px; }
  [data-theme="heist"] .gm-qw-meter > i { width: 13px; height: 4px; border-radius: 0; background: rgba(255,255,255,.18); }
  @media (max-width: 1599px) { [data-theme="heist"] .gm-qw-wk { display: none; } }
  [data-theme="heist"] .gm-qw-meter > i.on { background: #fff; }
  [data-theme="heist"] .gm-qw-n { font: 400 15px "Anton", sans-serif; letter-spacing: .03em; color: #fff; }
  [data-theme="heist"] .gm-qw-body { gap: 0; padding: 0; }
  [data-theme="heist"] .gm-job { height: 58px; padding: 0 12px 0 14px; border: 0; border-right: 1px solid rgba(255,255,255,.08); border-radius: 0; background: none; box-shadow: inset 3px 0 0 rgba(255,255,255,.12); }
  [data-theme="heist"] .gm-job:first-child { box-shadow: inset 3px 0 0 var(--orange); background: linear-gradient(90deg, rgba(240,165,58,.1), transparent 70%); }
  [data-theme="heist"] .gm-job-ico { display: none; }
  [data-theme="heist"] .gm-job-t { font: 500 12px/1.2 "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #fff; }
  [data-theme="heist"] .gm-job-bar { height: 2px; background: rgba(255,255,255,.1); }
  [data-theme="heist"] .gm-job-bar i { background: #fff; border-radius: 0; }
  [data-theme="heist"] .gm-job-c { font: 500 10.5px "Oswald", sans-serif; letter-spacing: .1em; text-transform: uppercase; color: #9a9aa0; }
  [data-theme="heist"] .gm-job-c .num { font: 400 12.5px "Anton", sans-serif; letter-spacing: .03em; color: #8ee08a; }
  [data-theme="heist"] .gm-qw-more { color: var(--accent-text); font-size: 11px; }
  [data-theme="heist"] .gm-qw-clear b { font: 400 16px "Anton", sans-serif; letter-spacing: .04em; text-transform: uppercase; color: #f5c342; }
  [data-theme="heist"] .gm-joblist { border-top-color: rgba(255,255,255,.12); }
  [data-theme="heist"] .gm-joblist .gm-job { border: 0; border-bottom: 1px solid rgba(255,255,255,.1); box-shadow: none; background: none; }
  [data-theme="heist"] .gm-joblist .gm-job.done { background: linear-gradient(90deg, rgba(123,214,106,.08), transparent); }
  [data-theme="heist"] .gm-joblist .gm-job.done .gm-job-t { text-decoration: none; color: #8a8a90; }
  [data-theme="heist"] .gm-stamp { transform: none; padding: 2px 9px; border: 0; border-radius: 0; background: #7bd66a; color: #0b1a0b; font: 500 10.5px/1.3 "Oswald", sans-serif; letter-spacing: .18em; font-size: 0; }
  [data-theme="heist"] .gm-stamp::before { content: "PASSED"; font-size: 10.5px; }
  [data-theme="heist"] .gm-sl-l { font: 500 11px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; }
  [data-theme="heist"] .gm-age { height: 17px; border-radius: 0; border: 0; background: var(--orange); color: #141008; font: 500 9.5px/1 "Oswald", sans-serif; letter-spacing: .16em; }
  [data-theme="heist"] .gm-age-done { background: #7bd66a; color: #0b1a0b; }
  [data-theme="heist"] .gm-nm { flex-direction: column; align-items: flex-start; }
  [data-theme="heist"] .gm-nm .gm-age { margin: 0 0 3px; }
  [data-theme="heist"] .gm-pip { border-radius: 0; width: 6px; height: 6px; }
  [data-theme="heist"] .gm-pip-fresh { background: #7bd66a; }
  [data-theme="heist"] .gm-pip-ageing, [data-theme="heist"] .gm-pip-stale { background: var(--orange); box-shadow: none; }
  [data-theme="heist"] .gm-fresh-n { border-radius: 0; font: 500 10px/1 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; }
  [data-theme="heist"] .gm-pchip { border-radius: 0; font: 500 10px/1.5 "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; }
  [data-theme="heist"] .gm-bstreak { font: 500 11px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #d0d0d4; }
  [data-theme="heist"] .gm-stars i.on { background: #fff; }
  [data-theme="heist"] .gm-stars i { background: rgba(255,255,255,.18); }
  [data-theme="heist"] .gm-seasons .gm-cur td:first-child .small { border-radius: 0; border-color: var(--orange); color: var(--orange); font-family: "Oswald", sans-serif; text-transform: uppercase; letter-spacing: .12em; }
  [data-theme="heist"] .side-foot .gm-tro-btn { border-radius: 0; }
  [data-theme="heist"] .gm-tro-cnt { border-radius: 0; background: #fff; color: #000; font-family: "Oswald", sans-serif; }
  /* the Awards list */
  [data-theme="heist"] .gm-pr { border-radius: 0; background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.1); }
  [data-theme="heist"] .gm-pr-c { background: #0e0e10; }
  [data-theme="heist"] .gm-pr-v { font-family: "Anton", sans-serif; letter-spacing: .03em; color: #fff; }
  [data-theme="heist"] .gm-tro-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
  [data-theme="heist"] .gm-tc { padding: 10px 6px 10px 12px; border: 0; border-bottom: 1px solid rgba(255,255,255,.1); border-radius: 0; background: none; }
  [data-theme="heist"] .gm-tc:not(.locked) { box-shadow: inset 3px 0 0 var(--orange); }
  [data-theme="heist"] .gm-tc-name { font: 500 12.5px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #fff; }
  [data-theme="heist"] .gm-medal { width: 40px; height: 40px; box-shadow: 0 0 0 2px rgba(0,0,0,.6), 0 0 0 3px rgba(255,255,255,.25); }
  [data-theme="heist"] .gm-tdots i { border-radius: 0; width: 16px; height: 3px; }
  [data-theme="heist"] .gm-tdots i.on { background: #fff; }
  [data-theme="heist"] .gm-tc-bar { height: 3px; border-radius: 0; background: rgba(255,255,255,.15); }
  [data-theme="heist"] .gm-tc-bar i { background: #5aa0e6; border-radius: 0; }
  [data-theme="heist"] .gm-tc-txt { font-family: "Oswald", sans-serif; letter-spacing: .06em; text-transform: uppercase; font-size: 11px; color: #b8b8bc; }
  /* the recap: HEIST PASSED, the take */
  [data-theme="heist"] .modal:has(.gm-recap) { background: rgba(8,8,10,.97); border: 0; border-top: 2px solid #fff; }
  [data-theme="heist"] .gm-rc-top { text-align: center; }
  [data-theme="heist"] .gm-rc-kick { font: 500 11px "Oswald", sans-serif; letter-spacing: .2em; color: #9a9aa0; }
  [data-theme="heist"] .gm-rc-title { font: 400 52px/1 "Anton", sans-serif; letter-spacing: .03em; color: #f5c342; -webkit-text-stroke: 1.5px #000; text-shadow: 0 3px 0 #000; }
  [data-theme="heist"] .gm-rc-lines { border-top: 0; }
  [data-theme="heist"] .gm-rc-lines li { border-bottom: 1px dotted rgba(255,255,255,.18); font: 500 12px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; }
  [data-theme="heist"] .gm-rc-lines li > span { color: #d0d0d4; }
  [data-theme="heist"] .gm-rc-lines li b { color: #fff; font-family: "Anton", sans-serif; letter-spacing: .03em; }
  [data-theme="heist"] .gm-rc-total { border-bottom: 0 !important; border-top: 2px solid #fff; margin-top: 6px; }
  [data-theme="heist"] .gm-rc-total > span { color: #fff !important; font-size: 15px; }
  [data-theme="heist"] .gm-rc-total b { font-size: 30px !important; color: #8ee08a !important; }
  [data-theme="heist"] .gm-rc-stars i { width: 36px; height: 36px; background: rgba(255,255,255,.15); }
  [data-theme="heist"] .gm-rc-stars i.on { background: #fff; }
  [data-theme="heist"] .gm-rc-why { font-family: "Oswald", sans-serif; letter-spacing: .06em; text-transform: uppercase; font-size: 11px; }
  /* MISSION PASSED */
  [data-theme="heist"] .fx-lb { display: block; position: absolute; left: 0; right: 0; height: 56px; background: rgba(0,0,0,.72); animation: fx-lb-in .25s ease-out both; }
  [data-theme="heist"] .fx-lb-t { top: 0; } [data-theme="heist"] .fx-lb-b { bottom: 0; }
  [data-theme="heist"] .fx-big.out .fx-lb { animation: fx-fade-out .3s ease-in both; }
  @keyframes fx-lb-in { from { opacity: 0; } }
  [data-theme="heist"] .fx-b-band { left: 0; right: 0; translate: none; max-width: none; height: 130px; flex-direction: column; justify-content: center; gap: 8px; padding: 0 24px; border: 0; border-radius: 0; overflow: visible;
    background: linear-gradient(90deg, transparent, rgba(0,0,0,.84) 16%, rgba(0,0,0,.84) 84%, transparent); box-shadow: none; animation-name: fx-heist-in; }
  [data-theme="heist"] .fx-b-band::before { display: none; }
  @keyframes fx-heist-in { from { opacity: 0; transform: scale(1.08); } }
  [data-theme="heist"] .fx-b-text { flex-direction: column; align-items: center; gap: 6px; }
  [data-theme="heist"] .fx-b-title { font: 400 64px/1 "Anton", "Impact", sans-serif; letter-spacing: .03em; text-transform: uppercase; color: #f5c342; -webkit-text-stroke: 2px #000; text-shadow: 0 3px 0 #000, 0 0 30px rgba(0,0,0,.6); }
  [data-theme="heist"] .fx-b-head, [data-theme="heist"] .fx-b-sub { font: 500 13px/1.2 "Oswald", sans-serif; letter-spacing: .2em; text-transform: uppercase; color: #fff; text-shadow: 0 2px 0 #000; }
  [data-theme="heist"] .fx-b-text { display: grid; grid-template-columns: auto auto; justify-content: center; justify-items: center; column-gap: 0; row-gap: 8px; }
  [data-theme="heist"] .fx-b-title { grid-column: 1 / -1; }
  [data-theme="heist"] .fx-b-head::after { content: " · "; white-space: pre; }
  [data-theme="heist"] .fx-big.out .fx-b-band { animation-name: fx-out; }
  /* an award: the black box at top centre, no letterbox */
  [data-theme="heist"] .fx-k-tro .fx-lb { display: none; }
  [data-theme="heist"] .fx-k-tro .fx-b-band { left: 50%; right: auto; translate: -50% 0; width: min(460px, calc(100% - 48px)); height: auto; min-height: 96px; padding: 16px 22px; background: rgba(0,0,0,.92); border-top: 2px solid #fff; box-shadow: 0 16px 40px rgba(0,0,0,.6); }
  [data-theme="heist"] .fx-k-tro .fx-b-title { font: 500 13px/1 "Oswald", sans-serif; letter-spacing: .24em; -webkit-text-stroke: 0; color: #fff; text-shadow: none; }
  [data-theme="heist"] .fx-k-tro .fx-b-head { font: 400 24px/1.1 "Anton", sans-serif; letter-spacing: .04em; color: #f5c342; grid-column: 1 / -1; }
  [data-theme="heist"] .fx-k-tro .fx-b-head::after { content: none; }
  [data-theme="heist"] .fx-k-tro .fx-b-sub { grid-column: 1 / -1; font-size: 11px; color: #d0d0d4; }
  [data-theme="heist"] .fx-pop { gap: 12px; padding: 8px 18px 8px 10px; border: 0; border-top: 2px solid #fff; border-radius: 0; background: rgba(0,0,0,.9); box-shadow: 0 10px 30px rgba(0,0,0,.6); }
  [data-theme="heist"] .fx-p-ico { border-radius: 0; width: 18px; height: 18px; background: #7bd66a; }
  [data-theme="heist"] .fx-p-ico::after { background: #000; inset: 4px; }
  [data-theme="heist"] .fx-k-ath .fx-p-ico, [data-theme="heist"] .fx-k-stage .fx-p-ico { background: #f5c342; }
  [data-theme="heist"] .fx-p-t { font: 400 17px/1 "Anton", sans-serif; letter-spacing: .04em; text-transform: uppercase; color: #8ee08a; }
  [data-theme="heist"] .fx-k-ath .fx-p-t, [data-theme="heist"] .fx-k-stage .fx-p-t { color: #f5c342; }
  [data-theme="heist"] .fx-p-s { font: 500 11.5px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #fff; }

  /* ---------- arcade: weekly quests with XP pips, combo counters, a neon LEVEL UP with sparks ---------- */
  [data-theme="arcade"] .gm-sk { border-radius: 2px; border-color: rgba(124,242,255,.45); background: rgba(124,242,255,.06); font: 600 10.5px/1 "Chakra Petch", sans-serif; letter-spacing: .1em; text-transform: uppercase; color: var(--hud); box-shadow: 0 0 8px rgba(124,242,255,.18); }
  [data-theme="arcade"] .gm-sk-i { background: var(--hud); }
  [data-theme="arcade"] .gm-sk .gm-sk-n { font: 700 12.5px/1 "Chakra Petch", sans-serif; color: #fff; text-shadow: 0 0 8px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-sk-pre { color: var(--hud); }
  [data-theme="arcade"] .gm-sk.zero { color: var(--fg-3); border-color: rgba(124,242,255,.2); box-shadow: none; }
  [data-theme="arcade"] .gm-sk.zero .gm-sk-n { color: var(--fg-2); text-shadow: none; }
  [data-theme="arcade"] .gm-qw-meter { gap: 4px; }
  [data-theme="arcade"] .gm-qw-meter > i { width: 9px; height: 9px; border-radius: 1px; background: transparent; box-shadow: inset 0 0 0 1px rgba(124,242,255,.4); }
  [data-theme="arcade"] .gm-qw-meter > i.on { background: var(--hud); box-shadow: 0 0 8px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-qw-n { font: 600 12px "Chakra Petch", sans-serif; color: var(--hud); }
  [data-theme="arcade"] .gm-job { border-color: rgba(179,136,255,.3); border-radius: 3px; background: rgba(7,8,15,.6); }
  [data-theme="arcade"] .gm-job-ico { border-radius: 3px; background: rgba(124,242,255,.08); color: var(--hud); box-shadow: inset 0 0 0 1px rgba(124,242,255,.4); }
  [data-theme="arcade"] .gm-job-t { font-family: "Chakra Petch", sans-serif; letter-spacing: .04em; }
  [data-theme="arcade"] .gm-job-bar { height: 6px; border-radius: 1px; background: rgba(255,255,255,.06); box-shadow: inset 0 0 0 1px rgba(124,242,255,.3); }
  [data-theme="arcade"] .gm-job-bar i { background: linear-gradient(90deg, var(--hud), var(--accent)); box-shadow: 0 0 6px rgba(124,242,255,.7); }
  [data-theme="arcade"] .gm-job-c .num { color: var(--pos); }
  [data-theme="arcade"] .gm-stamp { border-color: var(--hud); color: var(--hud); transform: none; font-family: "Chakra Petch", sans-serif; box-shadow: 0 0 8px rgba(124,242,255,.4); }
  [data-theme="arcade"] .gm-joblist .gm-job { background: none; }
  [data-theme="arcade"] .gm-age { border-radius: 2px; border-color: #ffd166; color: #ffd166; background: rgba(255,209,102,.08); font-family: "Chakra Petch", sans-serif; letter-spacing: .14em; animation: gm-sync 1.2s steps(1, end) infinite; }
  @keyframes gm-sync { 50% { opacity: .35; } }
  [data-theme="arcade"] .gm-age-done { animation: none; border-color: var(--hud); color: var(--hud); background: rgba(124,242,255,.08); }
  [data-theme="arcade"] .gm-pip { border-radius: 1px; box-shadow: 0 0 6px currentColor; }
  [data-theme="arcade"] .gm-pip-fresh { background: var(--pos); color: var(--pos); }
  [data-theme="arcade"] .gm-pip-ageing, [data-theme="arcade"] .gm-pip-stale { background: #ffd166; color: #ffd166; }
  [data-theme="arcade"] .gm-fresh-n { border-radius: 2px; font-family: "Chakra Petch", sans-serif; letter-spacing: .1em; color: var(--hud); }
  [data-theme="arcade"] .gm-pchip { border-radius: 2px; font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; }
  [data-theme="arcade"] .gm-stars i.on { background: var(--hud); filter: drop-shadow(0 0 3px rgba(124,242,255,.9)); }
  [data-theme="arcade"] .gm-tro-cnt { border-radius: 2px; background: var(--hud); color: #06121a; font-family: "Chakra Petch", sans-serif; }
  [data-theme="arcade"] .gm-late { border-radius: 2px; font-family: "Chakra Petch", sans-serif; letter-spacing: .08em; }
  /* the badge grid: each badge glows by tier */
  [data-theme="arcade"] .gm-pr { border-radius: 3px; border-color: rgba(124,242,255,.25); background: rgba(124,242,255,.18); }
  [data-theme="arcade"] .gm-pr-v { color: var(--hud); font-family: "Chakra Petch", sans-serif; }
  [data-theme="arcade"] .gm-tc { border-radius: 3px; border-color: rgba(179,136,255,.3); background: rgba(7,8,15,.7); }
  [data-theme="arcade"] .gm-medal { border-radius: 0; background: url(art/arcade-badge.png) center / contain no-repeat !important; width: 50px; height: 50px; color: transparent; }
  [data-theme="arcade"] .gm-medal svg { display: none; }
  [data-theme="arcade"] .gm-medal.t0 { filter: grayscale(1) brightness(.55); opacity: 1; }
  [data-theme="arcade"] .gm-medal.t1 { filter: hue-rotate(150deg) saturate(.8) drop-shadow(0 0 4px rgba(201,137,79,.7)); }
  [data-theme="arcade"] .gm-medal.t2 { filter: grayscale(.8) brightness(1.3) drop-shadow(0 0 6px rgba(220,230,255,.8)); }
  [data-theme="arcade"] .gm-medal.t3 { filter: hue-rotate(170deg) saturate(1.6) brightness(1.2) drop-shadow(0 0 8px rgba(255,209,102,.9)); }
  [data-theme="arcade"] .gm-medal.t4 { filter: hue-rotate(-40deg) drop-shadow(0 0 10px rgba(124,242,255,1)); }
  [data-theme="arcade"] .gm-tc-name { font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; text-transform: uppercase; font-size: 13px; }
  [data-theme="arcade"] .gm-tdots i { border-radius: 1px; }
  [data-theme="arcade"] .gm-tdots i.on { background: var(--hud); box-shadow: 0 0 6px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-tc-bar { border-radius: 1px; }
  [data-theme="arcade"] .gm-tc-bar i { background: linear-gradient(90deg, var(--hud), var(--accent)); }
  /* the recap: STAGE CLEAR and a letter grade */
  [data-theme="arcade"] .gm-rc-top { padding-right: 90px; }
  [data-theme="arcade"] .gm-rc-title { font: 700 34px/1 "Chakra Petch", sans-serif; letter-spacing: .14em; color: var(--hud); text-shadow: 0 0 16px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-rc-kick { color: var(--accent-text); font-family: "Chakra Petch", sans-serif; }
  [data-theme="arcade"] .gm-rc-grade { display: grid; place-items: center; position: absolute; right: 0; top: -6px; width: 72px; height: 72px; border: 2px solid var(--hud); border-radius: 4px; font: 700 50px/1 "Chakra Petch", sans-serif; color: #fff; text-shadow: 0 0 18px rgba(124,242,255,1), 0 0 4px var(--hud); box-shadow: inset 0 0 18px rgba(124,242,255,.4), 0 0 18px rgba(124,242,255,.35); }
  [data-theme="arcade"] .gm-rc-play .gm-rc-grade { animation: gm-rc-stamp .4s cubic-bezier(.3, 1.6, .5, 1) 1.9s both; }
  [data-theme="arcade"] .gm-rc-lines li { border-bottom-color: rgba(124,242,255,.12); font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; text-transform: uppercase; font-size: 12.5px; }
  [data-theme="arcade"] .gm-rc-lines li b { color: var(--pos); }
  [data-theme="arcade"] .gm-rc-stars i.on { background: var(--hud); filter: drop-shadow(0 0 8px rgba(124,242,255,.9)); }
  /* LEVEL UP! */
  [data-theme="arcade"] .fx-b-band { height: 112px; padding: 0 34px 0 22px; gap: 20px; border-radius: 4px; border: 1px solid var(--hud); background: rgba(7,8,15,.95); box-shadow: 0 0 0 1px rgba(124,242,255,.2), 0 0 44px rgba(124,242,255,.4), inset 0 0 30px rgba(124,242,255,.12); }
  [data-theme="arcade"] .fx-b-band::before { width: 100%; height: 2px; top: auto; bottom: 0; background: linear-gradient(90deg, transparent, var(--hud), transparent); }
  [data-theme="arcade"] .fx-b-mark { display: grid; place-items: center; width: 70px; height: 70px; border: 2px solid var(--hud); border-radius: 4px; color: #fff; font: 700 17px/1 "Chakra Petch", sans-serif; letter-spacing: .08em; text-shadow: 0 0 10px var(--hud); box-shadow: inset 0 0 16px rgba(124,242,255,.5); }
  [data-theme="arcade"] .fx-b-text { display: grid; grid-template-columns: auto auto; align-items: baseline; column-gap: 14px; row-gap: 6px; }
  [data-theme="arcade"] .fx-b-title { font: 700 40px/1 "Chakra Petch", sans-serif; letter-spacing: .12em; color: var(--hud); text-shadow: 0 0 18px rgba(124,242,255,.9), 0 0 3px #fff; animation: gm-neon .9s steps(1, end) .1s 2; }
  @keyframes gm-neon { 30% { opacity: .35; } 45% { opacity: 1; } 60% { opacity: .6; } }
  [data-theme="arcade"] .fx-b-head { font: 700 22px/1 "Chakra Petch", sans-serif; letter-spacing: .1em; color: #fff; }
  [data-theme="arcade"] .fx-b-sub { grid-column: 1 / -1; font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; color: var(--pos); }
  [data-theme="arcade"] .fx-b-xp { display: block; grid-column: 1 / -1; width: 280px; height: 8px; border-radius: 1px; box-shadow: inset 0 0 0 1px rgba(124,242,255,.5); overflow: hidden; }
  [data-theme="arcade"] .fx-b-xp i { display: block; height: 100%; background: linear-gradient(90deg, var(--hud), var(--accent)); box-shadow: 0 0 10px rgba(124,242,255,.9); animation: gm-xpfill .8s steps(10, end) .15s both; }
  @keyframes gm-xpfill { from { width: 0; } to { width: 100%; } }
  [data-theme="arcade"] .fx-spark { top: var(--y); width: 6px; height: 6px; background: var(--hud); box-shadow: 0 0 8px var(--hud); animation: gm-spark .7s steps(4, end) var(--d) both; }
  [data-theme="arcade"] .fx-spark:nth-child(3n) { background: var(--accent); box-shadow: 0 0 8px var(--accent); }
  @keyframes gm-spark { 0% { opacity: 0; transform: scale(.4); } 30% { opacity: 1; transform: scale(1.4); } 100% { opacity: 0; transform: translateY(-40px) scale(.6); } }
  [data-theme="arcade"] .fx-b-fx { top: var(--fx-top); height: 112px; overflow: visible; }
  [data-theme="arcade"] .fx-pop { border-radius: 3px; border-color: var(--hud); background: rgba(7,8,15,.95); box-shadow: 0 0 22px rgba(124,242,255,.35); }
  [data-theme="arcade"] .fx-p-ico { border-radius: 2px; background: var(--hud); }
  [data-theme="arcade"] .fx-p-ico::after { background: #06121a; }
  [data-theme="arcade"] .fx-p-t { font: 700 14px "Chakra Petch", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--hud); text-shadow: 0 0 8px rgba(124,242,255,.7); }
  [data-theme="arcade"] .fx-p-s { font-family: "Chakra Petch", sans-serif; letter-spacing: .04em; }

  /* ---------- comic: a notepad TO-DO!, burst chips, KA-CHING! and POW! panels ---------- */
  [data-theme="comic"] .gm-sk { height: 24px; border: 2px solid #111; border-radius: 999px; background: var(--pow); box-shadow: 2px 2px 0 #111; color: #111; font: 400 13px/1 "Bangers", sans-serif; letter-spacing: .05em; rotate: -2deg; }
  [data-theme="comic"] .gm-sk:nth-child(2) { rotate: 2deg; background: #7ad3ff; } [data-theme="comic"] .gm-sk:nth-child(3) { background: #b3f0a1; }
  [data-theme="comic"] .gm-sk-i { display: none; }
  [data-theme="comic"] .gm-sk .gm-sk-n { font: 400 15px/1 "Bangers", sans-serif; color: #111; }
  [data-theme="comic"] .gm-sk-post, [data-theme="comic"] .gm-sk-best { color: #111; }
  [data-theme="comic"] .gm-sk.zero { background: #fff; }
  [data-theme="comic"] .gm-sk.zero .gm-sk-n { color: #555; }
  [data-theme="comic"] .dk-tick .gm-sk { height: 18px; border-width: 1.5px; box-shadow: 1.5px 1.5px 0 #111; }
  [data-theme="comic"] .dk-tick .gm-sk .gm-sk-n { font-size: 12px; }
  [data-theme="comic"] .dk-tick .gm-sk .gm-sk-post { display: inline; font-size: 11px; }
  [data-theme="comic"] .gm-late { border: 2px solid #111; background: #ffb347; color: #111; font: 400 12px/1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .dk-qw { background: #fff repeating-linear-gradient(180deg, transparent 0 23px, rgba(47,128,255,.2) 23px 24px); }
  [data-theme="comic"] .dk-qw .gm-qw-head { background: #ff9ecf; }
  [data-theme="comic"] .gm-qw-wk { font: 400 13px "Bangers", sans-serif; letter-spacing: .05em; opacity: .8; }
  [data-theme="comic"] .gm-qw-meter > i { width: 14px; height: 14px; border-radius: 3px; border: 2px solid #111; background: #fff; }
  [data-theme="comic"] .gm-qw-meter > i.on { background: var(--pos) var(--gm-tick) center / 9px no-repeat; }
  [data-theme="comic"] .gm-qw-n { font: 400 15px "Bangers", sans-serif; color: #111; }
  [data-theme="comic"] .gm-qw-body { background: linear-gradient(90deg, transparent 38px, rgba(255,59,107,.35) 38px 40px, transparent 40px); }
  [data-theme="comic"] .gm-job { border: 2.5px solid #111; border-radius: 10px; background: #fff; box-shadow: 3px 3px 0 #111; }
  [data-theme="comic"] .gm-job:nth-child(2) { rotate: .6deg; } [data-theme="comic"] .gm-job:nth-child(1) { rotate: -.5deg; }
  [data-theme="comic"] .gm-job-ico { border: 2px solid #111; border-radius: 6px; background: var(--pow); color: #111; }
  [data-theme="comic"] .gm-job-t { font: 400 15px/1.1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-job-bar { height: 5px; border-top: 2px solid #111; background: #fff; }
  [data-theme="comic"] .gm-job-bar i { background: radial-gradient(rgba(17,17,17,.3) 1px, transparent 1.3px) 0 0 / 4px 4px, var(--accent); }
  [data-theme="comic"] .gm-job-c { color: #333; font-weight: 700; }
  [data-theme="comic"] .gm-stamp { border: 2px solid #111; background: var(--accent); color: #fff; font: 400 13px/1.2 "Bangers", sans-serif; letter-spacing: .06em; font-size: 0; transform: rotate(-6deg); box-shadow: 2px 2px 0 #111; }
  [data-theme="comic"] .gm-stamp::before { content: "POW! DONE"; font-size: 13px; }
  [data-theme="comic"] .gm-joblist .gm-job { border: 0; border-bottom: 2px dashed #111; border-radius: 0; box-shadow: none; rotate: 0deg; background: none; }
  [data-theme="comic"] .gm-age { height: 20px; border: 2px solid #111; background: var(--accent); color: #fff; font: 400 13px/1 "Bangers", sans-serif; letter-spacing: .06em; rotate: -8deg; box-shadow: 1.5px 1.5px 0 #111; }
  [data-theme="comic"] .gm-age-done { background: var(--pos); }
  [data-theme="comic"] .gm-pip { border: 1.5px solid #111; width: 9px; height: 9px; }
  [data-theme="comic"] .gm-pip-ageing, [data-theme="comic"] .gm-pip-stale { background: #ffb347; box-shadow: none; }
  [data-theme="comic"] .gm-fresh-n { border: 2px solid #111; background: #fff; color: #111; font: 400 13px/1 "Bangers", sans-serif; letter-spacing: .05em; opacity: 1; }
  [data-theme="comic"] .gm-pchip { border: 2px solid #111; color: #111; font: 400 12px/1.3 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-pchip.ok, [data-theme="comic"] .gm-pchip.early { background: #b3f0a1; border-color: #111; color: #111; }
  [data-theme="comic"] .gm-stars i, [data-theme="comic"] .gm-star-g { background: #e8e1c8; } [data-theme="comic"] .gm-stars i.on { background: var(--pow); filter: drop-shadow(1px 1px 0 #111); }
  [data-theme="comic"] .gm-tro-cnt { background: var(--accent); border: 1.5px solid #111; color: #fff; font: 400 11px/12px "Bangers", sans-serif; }
  /* the sticker sheet */
  [data-theme="comic"] .gm-tro-grid { padding: 10px; border: 3px solid #111; border-radius: 12px; background: radial-gradient(rgba(233,182,44,.5) 1.2px, transparent 1.4px) 0 0 / 9px 9px, #fff8dc; }
  [data-theme="comic"] .gm-tc { border: 3px solid #111; border-radius: 14px; background: #fff; box-shadow: 4px 4px 0 #111; }
  [data-theme="comic"] .gm-tc:nth-child(even) { rotate: 1.2deg; } [data-theme="comic"] .gm-tc:nth-child(odd) { rotate: -1deg; }
  [data-theme="comic"] .gm-medal { border: 3px solid #111; }
  [data-theme="comic"] .gm-tc-name { font: 400 17px "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-tdots i { border: 1.5px solid #111; width: 10px; height: 10px; background: #fff; }
  [data-theme="comic"] .gm-tdots i.on { background: var(--pow); }
  [data-theme="comic"] .gm-tc-bar { height: 8px; border: 2px solid #111; background: #fff; }
  [data-theme="comic"] .gm-tc-bar i { background: var(--accent); }
  [data-theme="comic"] .gm-pr { border: 3px solid #111; border-radius: 12px; background: #111; }
  [data-theme="comic"] .gm-pr-v { font-family: "Bangers", sans-serif; letter-spacing: .04em; font-size: 19px; }
  /* the recap: a splash page */
  [data-theme="comic"] .gm-recap .gm-rc-top { margin: -24px -24px 16px; padding: 18px 24px; background: radial-gradient(rgba(17,17,17,.18) 1.2px, transparent 1.5px) 0 0 / 7px 7px, var(--pow); border-bottom: 3px solid #111; }
  [data-theme="comic"] .gm-rc-title { font: 400 38px/1 "Bangers", sans-serif; letter-spacing: .05em; color: #fff; -webkit-text-stroke: 1.5px #111; text-shadow: 3px 3px 0 #111; }
  [data-theme="comic"] .gm-rc-kick { color: #111; font: 400 15px "Bangers", sans-serif; letter-spacing: .06em; }
  [data-theme="comic"] .gm-rc-lines li { border-bottom: 2px dashed #111; }
  [data-theme="comic"] .gm-rc-stars i { background: #e8e1c8; }
  [data-theme="comic"] .gm-rc-stars i.on { background: var(--pow); filter: drop-shadow(2px 2px 0 #111); }
  /* KA-CHING! / POW! */
  [data-theme="comic"] .fx-b-band { height: 124px; gap: 18px; padding: 0 30px 0 16px; border: 4px solid #111; border-radius: 16px; overflow: visible; background: radial-gradient(rgba(17,17,17,.22) 1.3px, transparent 1.6px) 0 0 / 8px 8px, var(--pow); box-shadow: 8px 8px 0 #111; rotate: -2deg; animation: fx-slam .42s cubic-bezier(.3, 1.6, .5, 1) both; }
  [data-theme="comic"] .fx-b-band::before { display: none; }
  @keyframes fx-slam { 0% { opacity: 0; transform: scale(1.6) rotate(-6deg); } 100% { opacity: 1; transform: none; } }
  [data-theme="comic"] .fx-b-mark { display: grid; place-items: center; width: 136px; height: 136px; margin: -20px 0 -20px -34px; background: url(art/comic-burst.png) center / contain no-repeat; rotate: -10deg; }
  [data-theme="comic"] .fx-b-mark b { font: 400 25px/1 "Bangers", sans-serif; letter-spacing: .04em; color: #fff; -webkit-text-stroke: 1.2px #111; text-shadow: 2px 2px 0 #111; }
  [data-theme="comic"] .fx-b-text { display: grid; grid-template-columns: auto auto; align-items: baseline; column-gap: 12px; row-gap: 4px; }
  [data-theme="comic"] .fx-b-title { font: 400 44px/1 "Bangers", sans-serif; letter-spacing: .05em; color: #fff; -webkit-text-stroke: 2px #111; text-shadow: 4px 4px 0 #111; }
  [data-theme="comic"] .fx-b-head { padding: 3px 12px; border: 3px solid #111; border-radius: 999px; background: #fff; color: #111; font: 400 20px/1 "Bangers", sans-serif; letter-spacing: .05em; rotate: 3deg; }
  [data-theme="comic"] .fx-b-sub { grid-column: 1 / -1; color: #111; font-weight: 800; font-size: 14px; }
  [data-theme="comic"] .fx-pop { border: 3px solid #111; background: #fff; box-shadow: 4px 4px 0 #111; rotate: -1.5deg; }
  [data-theme="comic"] .fx-p-ico { border: 2px solid #111; background: var(--pos); }
  [data-theme="comic"] .fx-p-ico::after { background: #fff; }
  [data-theme="comic"] .fx-p-t { font: 400 20px/1 "Bangers", sans-serif; letter-spacing: .05em; color: var(--accent-text); }
  [data-theme="comic"] .fx-p-s { color: #111; font-weight: 700; }

  /* ---------- casino: tonight's table on felt, hot-streak chips, a marquee with chasing bulbs and chip rain ---------- */
  [data-theme="casino"] .gm-sk { height: 24px; padding: 0 10px 0 4px; border: 1px solid rgba(212,175,55,.6); background: #141316; color: var(--accent-text); font: 400 13px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; }
  [data-theme="casino"] .gm-sk-i { width: 16px; height: 16px; border-radius: 50%; -webkit-mask: none; mask: none; background: radial-gradient(circle, #c8202f 0 38%, #fff 39% 46%, #c8202f 47%); box-shadow: 0 0 0 1.5px #ffb347, 0 0 8px rgba(255,120,40,.8); }
  [data-theme="casino"] .gm-sk .gm-sk-n { font: 400 15px/1 "Bebas Neue", sans-serif; color: #fff; }
  [data-theme="casino"] .gm-sk.zero .gm-sk-i { background: radial-gradient(circle, #555 0 38%, #999 39% 46%, #555 47%); box-shadow: 0 0 0 1.5px #777; }
  [data-theme="casino"] .gm-sk.zero .gm-sk-n { color: var(--fg-2); }
  [data-theme="casino"] .dk-tick .gm-sk-i { width: 11px; height: 11px; }
  [data-theme="casino"] .gm-qw-wk { font: 400 13px "Bebas Neue", sans-serif; letter-spacing: .1em; opacity: .7; }
  [data-theme="casino"] .gm-qw-meter > i { width: 12px; height: 12px; border-radius: 50%; background: #2a2830; border: 1px dashed rgba(255,255,255,.3); }
  [data-theme="casino"] .gm-qw-meter > i.on { background: var(--gold); border: 1px dashed #fff; box-shadow: 0 0 6px rgba(212,175,55,.6); }
  [data-theme="casino"] .gm-qw-n { font: 400 15px "Bebas Neue", sans-serif; letter-spacing: .08em; color: var(--accent-text); }
  [data-theme="casino"] .gm-qw-body { background: radial-gradient(ellipse at 50% 0%, #1f6b45, #0f3b27 75%); border-top: 1px solid rgba(212,175,55,.3); }
  [data-theme="casino"] .gm-job { border: 0; border-radius: 7px; background: linear-gradient(180deg, #fffdf6, #f1ead6); box-shadow: 0 3px 8px rgba(0,0,0,.45); color: #1b1b1b; position: relative; }
  [data-theme="casino"] .gm-job::after { content: "♠"; position: absolute; right: 5px; top: 1px; font-size: 10px; color: #c8202f; opacity: .7; }
  [data-theme="casino"] .gm-job:nth-child(2)::after { content: "♥"; } [data-theme="casino"] .gm-job:nth-child(3)::after { content: "♦"; }
  [data-theme="casino"] .gm-job:nth-child(1) { rotate: -1deg; } [data-theme="casino"] .gm-job:nth-child(3) { rotate: 1deg; }
  [data-theme="casino"] .gm-job-ico { border-radius: 50%; background: #1b1b1b; color: var(--gold); }
  [data-theme="casino"] .gm-job-t { color: #1b1b1b; font: 400 15px/1.1 "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="casino"] .gm-job-c { color: #555; }
  [data-theme="casino"] .gm-job-c .num { color: #1b1b1b; font-size: 1.05em; }
  [data-theme="casino"] .gm-job-bar { background: #d8cfb8; }
  [data-theme="casino"] .gm-job-bar i { background: #1f8a4c; }
  [data-theme="casino"] .gm-qw-body .gm-job .btn { color: #1a1400; }
  [data-theme="casino"] .gm-qw-body .gm-qw-more { color: #f0d275; }
  [data-theme="casino"] .gm-joblist .gm-job { background: none; box-shadow: none; color: var(--fg); rotate: 0deg; border-bottom: 1px solid rgba(212,175,55,.2); }
  [data-theme="casino"] .gm-joblist .gm-job::after { content: none; }
  [data-theme="casino"] .gm-joblist .gm-job-t { color: var(--fg); }
  [data-theme="casino"] .gm-stamp { border-color: var(--gold); color: var(--gold); font-family: "Bebas Neue", sans-serif; letter-spacing: .14em; font-size: 12px; }
  [data-theme="casino"] .gm-age { border: 1px dashed var(--gold); background: #1d1b20; color: var(--accent-text); font: 400 12px/1 "Bebas Neue", sans-serif; letter-spacing: .12em; }
  [data-theme="casino"] .gm-fresh-n { border-style: dashed; font: 400 12px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; }
  [data-theme="casino"] .gm-pchip { font: 400 12px/1.3 "Bebas Neue", sans-serif; letter-spacing: .1em; }
  [data-theme="casino"] .gm-stars i.on { background: linear-gradient(180deg, #f7e08a, #c9a24a); }
  [data-theme="casino"] .gm-tro-cnt { background: linear-gradient(180deg, #f0d275, #b8902c); color: #1a1400; font-family: "Bebas Neue", sans-serif; font-size: 11px; }
  /* chip denominations: white, red, green, black */
  [data-theme="casino"] .gm-medal { border: 3px dashed rgba(255,255,255,.85); box-shadow: 0 0 0 2px var(--gm-chip, #333), 0 3px 8px rgba(0,0,0,.5); background: var(--gm-chip, #333) !important; }
  [data-theme="casino"] .gm-medal.t0 { --gm-chip: #3a3840; color: #777; }
  [data-theme="casino"] .gm-medal.t1 { --gm-chip: #ece6d6; color: #1a1400; }
  [data-theme="casino"] .gm-medal.t2 { --gm-chip: #c8202f; color: #fff; }
  [data-theme="casino"] .gm-medal.t3 { --gm-chip: #188c4f; color: #fff; }
  [data-theme="casino"] .gm-medal.t4 { --gm-chip: #121214; color: var(--gold); box-shadow: 0 0 0 2px var(--gold), 0 0 14px rgba(212,175,55,.5); }
  [data-theme="casino"] .gm-tc { border-color: rgba(212,175,55,.3); background: #141316; }
  [data-theme="casino"] .gm-tc-name { font: 400 18px "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="casino"] .gm-tdots i.on { background: var(--gold); }
  [data-theme="casino"] .gm-tc-bar i { background: linear-gradient(90deg, #b8902c, #f0d275); }
  [data-theme="casino"] .gm-pr { border-color: rgba(212,175,55,.35); background: rgba(212,175,55,.3); }
  [data-theme="casino"] .gm-pr-c { background: #141316; }
  [data-theme="casino"] .gm-pr-v { color: var(--accent-text); }
  /* the recap: session results with chip stacks */
  [data-theme="casino"] .gm-rc-top { padding-right: 80px; }
  [data-theme="casino"] .gm-rc-top::after { content: ""; position: absolute; right: 0; top: -8px; width: 70px; height: 70px; background: url(art/casino-chips.png) center / contain no-repeat; }
  [data-theme="casino"] .gm-rc-title { font: 400 38px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; background: linear-gradient(180deg, #f7e08a, #c9a24a); -webkit-background-clip: text; background-clip: text; color: transparent; }
  [data-theme="casino"] .gm-rc-lines li { border-bottom-color: rgba(212,175,55,.18); }
  [data-theme="casino"] .gm-rc-total b.pos { color: var(--pos); }
  [data-theme="casino"] .gm-rc-stars i.on { background: linear-gradient(180deg, #f7e08a, #c9a24a); }
  /* the marquee */
  [data-theme="casino"] .fx-b-band { height: 130px; flex-direction: column; justify-content: center; gap: 4px; padding: 0 56px; border-radius: 14px; border: 2px solid var(--gold); background: linear-gradient(180deg, #2c0d13, #170a0d); overflow: visible;
    box-shadow: inset 0 0 0 6px #170a0d, inset 0 0 0 7px rgba(212,175,55,.45), 0 0 50px rgba(212,175,55,.3), 0 18px 40px rgba(0,0,0,.6); }
  [data-theme="casino"] .fx-b-band::before { left: -9px; right: -9px; top: -9px; bottom: -9px; width: auto; border-radius: 20px; background: none; z-index: -1;
    border: 7px dotted #ffe9a0; filter: drop-shadow(0 0 5px rgba(255,220,120,.9)); animation: gm-bulbs .5s steps(2, end) infinite; }
  @keyframes gm-bulbs { 50% { border-color: #b8902c; filter: none; } }
  [data-theme="casino"] .fx-b-mark { font: 400 56px/1 "Bebas Neue", sans-serif; letter-spacing: .14em; background: linear-gradient(180deg, #fff3b0, #f0d275 45%, #b8902c); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 2px 0 #000) drop-shadow(0 0 16px rgba(212,175,55,.6)); }
  [data-theme="casino"] .fx-b-text { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 4px 12px; }
  [data-theme="casino"] .fx-b-title { font: 400 20px/1 "Bebas Neue", sans-serif; letter-spacing: .14em; color: #fff; }
  [data-theme="casino"] .fx-b-head { font: 400 20px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; color: var(--accent-text); }
  [data-theme="casino"] .fx-b-sub { flex-basis: 100%; text-align: center; color: #e6c25c; }
  [data-theme="casino"] .fx-chip { width: 28px; height: 28px; background: url(art/casino-chip.png) center / contain no-repeat; filter: drop-shadow(0 2px 2px rgba(0,0,0,.5)); animation: fx-fall 1.6s cubic-bezier(.35, .1, .6, 1) var(--d) both; }
  [data-theme="casino"] .fx-pop { border-color: var(--gold); background: #141316; box-shadow: 0 0 18px rgba(212,175,55,.35), 0 10px 26px rgba(0,0,0,.5); }
  [data-theme="casino"] .fx-p-ico { width: 26px; height: 26px; background: url(art/casino-chip.png) center / contain no-repeat; }
  [data-theme="casino"] .fx-p-ico::after { display: none; }
  [data-theme="casino"] .fx-p-t { font: 400 18px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; color: var(--accent-text); }

  /* ---------- passbook: entries with ink ticks, stamped streaks, a rubber stamp on a paper slip ---------- */
  [data-theme="passbook"] .gm-sk { height: 22px; border: 1.5px solid var(--line-2); border-radius: 2px; background: var(--bg-2); color: var(--fg); font: 700 11px/1 "Courier Prime", monospace; letter-spacing: .02em; }
  [data-theme="passbook"] .gm-qw-head .gm-sk { border-color: rgba(251,247,239,.55); background: rgba(251,247,239,.08); color: var(--accent-fg); }
  [data-theme="passbook"] .gm-sk-i { display: none; }
  [data-theme="passbook"] .gm-sk-ticks { display: inline-flex; gap: 1px; }
  [data-theme="passbook"] .gm-sk-ticks i { width: 9px; height: 9px; background: var(--stamp); -webkit-mask: var(--gm-tick) center / contain no-repeat; mask: var(--gm-tick) center / contain no-repeat; }
  [data-theme="passbook"] .gm-qw-head .gm-sk-ticks i { background: #f3c3bd; }
  [data-theme="passbook"] .gm-sk-ticks b { font-size: 10px; margin-left: 2px; }
  [data-theme="passbook"] .gm-sk .gm-sk-n { font: 700 12px/1 "Courier Prime", monospace; color: inherit; }
  [data-theme="passbook"] .gm-sk-post, [data-theme="passbook"] .gm-sk-best { color: inherit; opacity: .8; }
  @media (max-width: 1599px) { [data-theme="passbook"] .gm-qw-head .gm-sk-ticks, [data-theme="passbook"] .gm-qw-wk { display: none; } }
  [data-theme="passbook"] .dk-tick .gm-sk-ticks { display: none; }
  [data-theme="passbook"] .gm-late { border-radius: 2px; border: 1.5px solid var(--stamp); background: none; color: var(--stamp); font-family: "Courier Prime", monospace; transform: rotate(-3deg); }
  [data-theme="passbook"] .gm-qw-wk { font: italic 600 13px "Fraunces", serif; opacity: .75; }
  [data-theme="passbook"] .gm-qw-meter > i { width: 12px; height: 12px; border-radius: 0; border: 1.5px solid rgba(251,247,239,.7); background: none; }
  [data-theme="passbook"] .gm-qw-meter > i.on { background: #f3c3bd; -webkit-mask: none; border-color: #f3c3bd; }
  [data-theme="passbook"] .gm-qw-n { font: 700 12px "Courier Prime", monospace; color: var(--accent-fg); }
  [data-theme="passbook"] .gm-qw-body { background: repeating-linear-gradient(180deg, transparent 0 21px, rgba(30,42,68,.1) 21px 22px); }
  [data-theme="passbook"] .gm-job { border: 0; border-left: 1px solid rgba(179,52,46,.35); border-radius: 0; background: none; }
  [data-theme="passbook"] .gm-job-ico { width: 20px; height: 20px; border-radius: 0; border: 1.5px solid var(--line-2); background: none; color: transparent; }
  [data-theme="passbook"] .gm-job-t { font: 700 13px "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-job-bar { height: 2px; background: #cfc6b3; }
  [data-theme="passbook"] .gm-job-bar i { background: var(--line-2); border-radius: 0; }
  [data-theme="passbook"] .gm-job-c { font-family: "Courier Prime", monospace; font-weight: 700; }
  [data-theme="passbook"] .gm-joblist .gm-job { border-left: 0; }
  [data-theme="passbook"] .gm-joblist .gm-job.done .gm-job-ico { background: none; border-color: var(--stamp); color: var(--stamp); }
  [data-theme="passbook"] .gm-joblist .gm-job.done .gm-job-t { text-decoration-color: var(--stamp); }
  [data-theme="passbook"] .gm-stamp { border: 2px solid var(--stamp); color: var(--stamp); background: none; font: 700 10.5px/1.3 "Courier Prime", monospace; letter-spacing: .14em; transform: rotate(-6deg); font-size: 0; }
  [data-theme="passbook"] .gm-stamp::before { content: "POSTED"; font-size: 10.5px; }
  [data-theme="passbook"] .dk-qw.gm-qw-done .gm-qw-clear b { display: inline-block; padding: 2px 10px; border: 2px solid var(--stamp); color: var(--stamp); font: 700 13px "Courier Prime", monospace; letter-spacing: .12em; text-transform: uppercase; transform: rotate(-4deg); font-size: 0; }
  [data-theme="passbook"] .dk-qw.gm-qw-done .gm-qw-clear b::before { content: "Week posted"; font-size: 13px; }
  [data-theme="passbook"] .gm-age { height: 17px; padding: 0 5px; border: 0; border-bottom: 1.5px solid #8d8a99; border-radius: 0; background: none; color: #8d8a99; font: italic 600 12px/1 "Fraunces", serif; letter-spacing: 0; text-transform: none; transform: rotate(-3deg); }
  [data-theme="passbook"] .gm-age-done { color: var(--stamp); border-bottom-color: var(--stamp); font: 700 11px/1 "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-age-done::before { content: "✓ "; }
  [data-theme="passbook"] .gm-pip { border-radius: 0; width: 8px; height: 8px; }
  [data-theme="passbook"] .gm-pip-fresh { background: var(--line-2); }
  [data-theme="passbook"] .gm-pip-ageing { background: #a8844a; }
  [data-theme="passbook"] .gm-pip-stale { box-shadow: inset 0 0 0 1.5px #a8844a; }
  [data-theme="passbook"] .gm-fresh-n { border-radius: 2px; font: 700 11px/1 "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-pchip { border-radius: 2px; font: 700 10.5px/1.4 "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-pchip.ok, [data-theme="passbook"] .gm-pchip.early { color: var(--stamp); border-color: var(--stamp); background: none; transform: rotate(-3deg); }
  [data-theme="passbook"] .gm-stars i.on { background: var(--stamp); }
  [data-theme="passbook"] .gm-tro-cnt { border-radius: 2px; background: var(--stamp); color: #fff; font-family: "Courier Prime", monospace; }
  /* a stamp book of embossed seals */
  [data-theme="passbook"] .gm-tro-grid { gap: 0; border: 1px solid var(--line-2); background: repeating-linear-gradient(180deg, transparent 0 27px, rgba(30,42,68,.07) 27px 28px); }
  [data-theme="passbook"] .gm-tc { border: 0; border-right: 1px dashed rgba(30,42,68,.25); border-bottom: 1px dashed rgba(30,42,68,.25); border-radius: 0; background: none; }
  [data-theme="passbook"] .gm-medal { width: 50px; height: 50px; background: url(art/emblem-passbook.png) center / contain no-repeat !important; color: transparent; }
  [data-theme="passbook"] .gm-medal svg { display: none; }
  [data-theme="passbook"] .gm-medal.t0 { filter: grayscale(1) contrast(.6) brightness(1.4); opacity: .55; }
  [data-theme="passbook"] .gm-medal.t1 { filter: sepia(.9) saturate(.8) hue-rotate(-10deg); }
  [data-theme="passbook"] .gm-medal.t2 { filter: grayscale(1) brightness(1.15) contrast(1.1); }
  [data-theme="passbook"] .gm-medal.t3 { filter: sepia(1) saturate(2.4) hue-rotate(5deg) brightness(1.1); }
  [data-theme="passbook"] .gm-medal.t4 { filter: hue-rotate(200deg) saturate(.7) brightness(1.1); }
  [data-theme="passbook"] .gm-tc-name { font: italic 600 15px "Fraunces", serif; }
  [data-theme="passbook"] .gm-tc-txt { font-family: "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-tdots i { border-radius: 0; }
  [data-theme="passbook"] .gm-tdots i.on { background: var(--stamp); }
  [data-theme="passbook"] .gm-tc-bar { border-radius: 0; height: 3px; }
  [data-theme="passbook"] .gm-tc-bar i { background: var(--line-2); border-radius: 0; }
  [data-theme="passbook"] .gm-pr { border-radius: 2px; }
  [data-theme="passbook"] .gm-pr-v { font-family: "Courier Prime", monospace; font-weight: 700; }
  /* the recap: a typed statement with POSTED stamps */
  [data-theme="passbook"] .gm-rc-title { font: italic 600 30px/1.1 "Fraunces", serif; }
  [data-theme="passbook"] .gm-rc-kick { font-family: "Courier Prime", monospace; letter-spacing: .1em; }
  [data-theme="passbook"] .gm-rc-lines { border-top: 2px solid var(--line-2); }
  [data-theme="passbook"] .gm-rc-lines li { font-family: "Courier Prime", monospace; border-bottom: 1px dashed rgba(30,42,68,.3); }
  [data-theme="passbook"] .gm-rc-total { border-top: 3px double var(--line-2); border-bottom: 0 !important; }
  [data-theme="passbook"] .gm-rc-stars { gap: 10px; }
  [data-theme="passbook"] .gm-rc-stars i { clip-path: none; width: auto; height: auto; padding: 4px 10px; border: 2px solid rgba(30,42,68,.25); background: none; color: rgba(30,42,68,.35); font: 700 12px/1 "Courier Prime", monospace; letter-spacing: .14em; font-style: normal; transform: rotate(-5deg); }
  [data-theme="passbook"] .gm-rc-stars i::before { content: "UNPOSTED"; }
  [data-theme="passbook"] .gm-rc-stars i.on { border-color: var(--stamp); color: var(--stamp); background: rgba(179,52,46,.05); }
  [data-theme="passbook"] .gm-rc-stars i.on::before { content: "POSTED ★"; }
  /* the stamp */
  [data-theme="passbook"] .fx-b-band { height: 110px; width: min(620px, calc(100% - 48px)); gap: 22px; padding: 0 28px 0 22px; border: 1px solid var(--line-2); border-radius: 3px; overflow: visible;
    background: repeating-linear-gradient(180deg, transparent 0 21px, rgba(30,42,68,.08) 21px 22px), var(--bg-2); box-shadow: 5px 5px 0 rgba(30,42,68,.22), 0 16px 34px rgba(0,0,0,.18); rotate: -.6deg; }
  [data-theme="passbook"] .fx-b-band::before { background: var(--stamp); width: 3px; }
  [data-theme="passbook"] .fx-b-mark { order: 2; margin-left: auto; padding: 8px 12px; border: 3px solid var(--stamp); border-radius: 4px; color: var(--stamp); font: 700 18px/1 "Courier Prime", monospace; letter-spacing: .12em; transform: rotate(-6deg); box-shadow: inset 0 0 0 2px rgba(179,52,46,.25); opacity: .92; animation: gm-thunk .38s cubic-bezier(.4, 1.8, .5, 1) .2s both; }
  @keyframes gm-thunk { 0% { opacity: 0; transform: scale(2.4) rotate(-14deg); } 100% { opacity: .92; transform: rotate(-6deg); } }
  [data-theme="passbook"] .fx-b-text { flex-direction: column; align-items: flex-start; gap: 5px; }
  [data-theme="passbook"] .fx-b-title { font: italic 600 26px/1.1 "Fraunces", serif; }
  [data-theme="passbook"] .fx-b-head { font: 700 15px/1 "Courier Prime", monospace; color: var(--fg); }
  [data-theme="passbook"] .fx-b-sub { font-family: "Courier Prime", monospace; }
  [data-theme="passbook"] .fx-pop { border-radius: 3px; border-color: var(--line-2); box-shadow: 3px 3px 0 rgba(30,42,68,.2); }
  [data-theme="passbook"] .fx-p-ico { border-radius: 2px; background: none; box-shadow: inset 0 0 0 2px var(--stamp); }
  [data-theme="passbook"] .fx-p-ico::after { background: var(--stamp); }
  [data-theme="passbook"] .fx-p-t { font: italic 600 15px "Fraunces", serif; }
  [data-theme="passbook"] .fx-p-s { font-family: "Courier Prime", monospace; }

  /* ---------- dark and paper stay slim: counters with tick glyphs, a thin bar, a quiet banner ---------- */
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-qw-head .label { font-size: 11px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-qw-meter > i { width: 18px; height: 3px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-job { background: none; border-color: var(--line); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-job-ico { width: 26px; height: 26px; border-radius: 6px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-job-bar { height: 2px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .dk-qw { background: var(--bg-2); }

  /* big motion stays still when the system asks for less: banners and pops only fade */
  @media (prefers-reduced-motion: reduce) {
    :root .fx-b-band, :root .fx-pop, :root .fx-lb, :root .fx-b-mark, :root .fx-b-title { animation: fx-fade-in .2s ease both !important; }
    :root .fx-big.out .fx-b-band, :root .fx-big.out .fx-lb, :root .fx-pop.out { animation: fx-fade-out .2s ease both !important; }
    :root .fx-b-band::after, .fx-b-fx, .fx-coin, .fx-chip, .fx-spark, .fx-dice { display: none !important; }
    :root .fx-b-band::before { animation: none !important; }
    .gm-wanted i, [data-theme="arcade"] .gm-age { animation: none !important; }
    .gm-rc-play .gm-rc-lines li, .gm-rc-play .gm-rc-stars i, .gm-rc-play .gm-rc-grade { animation: none !important; }
    [data-theme="arcade"] .fx-b-xp i { animation: none !important; width: 100%; }
    [data-theme="tycoon"] .gm-gift :is(.gm-gift-lid, .gm-gift-bow) { transition: none; }
  }

  /* big motion stays still when the system asks for less */
  @media (prefers-reduced-motion: reduce) {
    .fx-pick { display: none !important; }
    .gm-near .gm-sp.cur, .hero-num.rl-rise { animation: none !important; }
  }

  /* ======================================================================
     game, part 3: coins, the PAID stamp, damage numbers, landmarks, bosses and deeds, welcome back,
     the sound button, and the game menu (a sliding cursor, the rail sliding, key prompts, the board strip).
     Presentation only; every figure is the real one. Decorations never take a click.
     ====================================================================== */
  .gm-lm, .gm-lm *, .gm-pips, .gm-hp, .gm-hp *, .gm-sky, .gm-skull, .gm-pow, .gm-cf-hat, .gm-cf-go, .gm-cf-cap, .gm-cf-blip, .dk-cursor, .dk-nav-ghost { pointer-events: none; }
  .gm-lot .gm-lm, .gm-lot * { pointer-events: none; }
  .gm-lot, .gm-hp[title], .gm-boss-tot { pointer-events: auto; }

  /* ---------- flying coins (WAAPI moves them; the sprite is the look's) ---------- */
  .fx-coin.fx-fly { position: fixed; left: 0; top: 0; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 6px color-mix(in srgb, var(--accent) 60%, transparent); animation: none; will-change: transform, opacity; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-coin.fx-fly { width: 6px; height: 6px; }
  [data-theme="tycoon"] .fx-coin.fx-fly { width: 26px; height: 26px; border-radius: 0; box-shadow: none; background: url(art/tycoon-coin.png) center / contain no-repeat; filter: drop-shadow(0 2px 1px rgba(0,0,0,.35)); animation: none; }
  [data-theme="heist"] .fx-coin.fx-fly { width: 34px; height: 26px; border-radius: 0; box-shadow: none; background: url(art/heist-cash.png) center / contain no-repeat; filter: drop-shadow(0 3px 2px rgba(0,0,0,.6)); }
  [data-theme="arcade"] .fx-coin.fx-fly { width: 20px; height: 20px; border-radius: 0; box-shadow: none; background: url(art/arcade-gem.png) center / contain no-repeat; filter: drop-shadow(0 0 5px rgba(124,242,255,.9)); }
  [data-theme="casino"] .fx-coin.fx-fly { width: 24px; height: 24px; box-shadow: none; background: url(art/casino-chip.png) center / contain no-repeat; filter: drop-shadow(0 2px 2px rgba(0,0,0,.5)); animation: none; }
  [data-theme="comic"] .fx-coin.fx-fly { width: 26px; height: 26px; border-radius: 0; box-shadow: none; background: url(art/comic-star.png) center / contain no-repeat; filter: drop-shadow(1px 1px 0 #111); }
  [data-theme="passbook"] .fx-coin.fx-fly { width: 15px; height: 15px; border-radius: 0; box-shadow: none; background: var(--line-2); -webkit-mask: var(--gm-tick) center / contain no-repeat; mask: var(--gm-tick) center / contain no-repeat; }

  /* ---------- damage: the real reduction of a debt, off its balance ---------- */
  .fx-dmg { position: fixed; translate: -100% -30%; white-space: nowrap; font: 800 18px/1 var(--mono); letter-spacing: 0; color: var(--pos); text-shadow: 0 1px 0 var(--bg), 0 0 10px color-mix(in srgb, var(--pos) 50%, transparent); animation: fx-dmg 1.2s cubic-bezier(.2, .7, .3, 1) both; }
  @keyframes fx-dmg { 0% { opacity: 0; transform: translateY(6px) scale(.7); } 12% { opacity: 1; transform: translateY(-6px) scale(1.25); } 24% { transform: translateY(-9px) scale(1); } 72% { opacity: 1; } 100% { opacity: 0; transform: translateY(-48px); } }
  [data-theme="tycoon"] .fx-dmg { font: 400 24px/1 "Lilita One", sans-serif; letter-spacing: .02em; color: #fff; -webkit-text-stroke: 1.5px #b71515; text-shadow: 0 3px 0 #7a0f0f, 0 6px 10px rgba(0,0,0,.25); }
  [data-theme="heist"] .fx-dmg { font: 400 24px/1 "Anton", sans-serif; letter-spacing: .03em; color: #fff; -webkit-text-stroke: 1px #000; text-shadow: 0 2px 0 #000; }
  [data-theme="arcade"] .fx-dmg { font: 700 20px/1 "Chakra Petch", sans-serif; letter-spacing: .06em; color: #ffd166; text-shadow: 0 0 10px rgba(255,209,102,.9), 0 0 2px #fff; }
  [data-theme="comic"] .fx-dmg { font: 400 26px/1 "Bangers", sans-serif; letter-spacing: .05em; color: var(--accent); -webkit-text-stroke: 1.5px #111; text-shadow: 3px 3px 0 #111; }
  [data-theme="casino"] .fx-dmg { font: 400 26px/1 "Bebas Neue", sans-serif; letter-spacing: .06em; color: #f0d275; text-shadow: 0 0 12px rgba(212,175,55,.8), 0 2px 0 #000; }
  [data-theme="passbook"] .fx-dmg { font: 700 18px/1 "Courier Prime", monospace; color: var(--stamp); text-shadow: none; }

  /* ---------- the PAID stamp over the bill's row, and the on-time chip that follows ---------- */
  .fx-stamp { position: fixed; display: flex; align-items: center; justify-content: center; gap: 12px; }
  .fx-st-mark { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border: 3px solid var(--pos); border-radius: 6px; color: var(--pos); background: color-mix(in srgb, var(--bg-2) 80%, transparent);
    font: 800 18px/1.1 var(--font); letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; rotate: -8deg; animation: fx-st-slam .38s cubic-bezier(.3, 1.6, .5, 1) both, fx-fade-out .22s ease-in .72s forwards; }
  @keyframes fx-st-slam { 0% { opacity: 0; transform: scale(2.3); } 55% { opacity: 1; } 100% { opacity: 1; transform: none; } }
  .fx-st-chip { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 11px; border-radius: 999px; background: var(--bg-2); border: 1px solid color-mix(in srgb, var(--pos) 55%, transparent); color: var(--pos); box-shadow: 0 8px 20px rgba(0,0,0,.25);
    font: 800 12px/1 var(--font); letter-spacing: .06em; white-space: nowrap; animation: fx-pop-in .26s cubic-bezier(.2, .9, .3, 1.3) .28s both; }
  .fx-stamp.out { animation: fx-fade-out .3s ease-in both; }
  .fx-stamp.late .fx-st-mark { border-color: var(--fg-3); color: var(--fg-3); background: color-mix(in srgb, var(--bg-2) 85%, transparent); }
  .fx-st-tick { display: none; }
  .fx-stamp.fx-still .fx-st-mark { animation: fx-fade-in .15s both, fx-fade-out .22s ease-in .72s forwards; }
  .fx-stamp.fx-still .fx-st-chip { animation: fx-fade-in .2s .2s both; }
  [data-theme="tycoon"] .fx-stamp:not(.late) .fx-st-mark { padding: 6px 18px 5px; border: 3px solid #fff; border-radius: 10px; background: linear-gradient(180deg, #ff5a5a, #d81e1e); color: #fff; font: 400 28px/1 "Lilita One", sans-serif; letter-spacing: .04em;
    text-shadow: 0 2px 0 #7a0f0f; box-shadow: 0 0 0 3px #ffc531, 0 5px 0 3px #7a0f0f, 0 12px 20px rgba(0,0,0,.25); rotate: -7deg; }
  [data-theme="tycoon"] .fx-st-chip { height: 30px; padding: 0 12px 0 34px; border: 2px solid #fff; background: url(art/tycoon-shield.png) 4px 50% / 24px no-repeat, linear-gradient(180deg, #ffe98f, #ffb800); color: var(--navy); box-shadow: 0 3px 0 #7a5200, 0 8px 18px rgba(0,0,0,.2);
    font: 400 14px/1 "Lilita One", sans-serif; letter-spacing: .03em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
  [data-theme="heist"] .fx-stamp { justify-content: flex-end; padding-right: 16px; }
  [data-theme="heist"] .fx-stamp:not(.late) .fx-st-mark { position: absolute; left: 0; right: 0; top: 16%; bottom: 16%; justify-content: center; padding: 0; border: 0; border-radius: 0; background: #fff; color: #000; rotate: 0deg;
    font: 500 15px/1 "Oswald", sans-serif; letter-spacing: .42em; box-shadow: 0 0 24px rgba(255,255,255,.35); animation: fx-st-sweep .3s cubic-bezier(.3, .8, .3, 1) both, fx-fade-out .22s ease-in .72s forwards; }
  @keyframes fx-st-sweep { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
  [data-theme="heist"] .fx-st-chip { position: relative; z-index: 1; height: 26px; border: 0; border-top: 2px solid #fff; border-radius: 0; background: rgba(0,0,0,.92); color: #8ee08a; font: 500 11px/1 "Oswald", sans-serif; letter-spacing: .16em; }
  [data-theme="arcade"] .fx-stamp:not(.late) .fx-st-mark { padding: 3px 12px; border: 1px solid var(--hud); border-radius: 3px; background: rgba(7,8,15,.85); color: #fff; rotate: 0deg; font: 700 26px/1 "Chakra Petch", sans-serif; letter-spacing: .14em;
    text-shadow: 0 0 14px rgba(124,242,255,1), 0 0 3px var(--hud); box-shadow: 0 0 22px rgba(124,242,255,.5), inset 0 0 12px rgba(124,242,255,.3); animation: fx-st-slam .3s steps(4, end) both, fx-fade-out .2s steps(2, end) .72s forwards; }
  [data-theme="arcade"] .fx-st-chip { border-radius: 3px; border-color: var(--hud); background: rgba(7,8,15,.92); color: var(--hud); font: 700 11.5px/1 "Chakra Petch", sans-serif; letter-spacing: .12em; box-shadow: 0 0 14px rgba(124,242,255,.35); }
  [data-theme="comic"] .fx-stamp:not(.late) .fx-st-mark { width: 170px; height: 96px; justify-content: center; padding: 0; border: 0; background: url(art/comic-burst.png) center / contain no-repeat; color: #fff; rotate: -9deg;
    font: 400 26px/1 "Bangers", sans-serif; letter-spacing: .05em; -webkit-text-stroke: 1.4px #111; text-shadow: 3px 3px 0 #111; }
  [data-theme="comic"] .fx-st-chip { height: 28px; border: 2.5px solid #111; border-radius: 12px; background: var(--pow); color: #111; box-shadow: 3px 3px 0 #111; font: 400 15px/1 "Bangers", sans-serif; letter-spacing: .05em; rotate: 2deg; }
  [data-theme="casino"] .fx-stamp:not(.late) .fx-st-mark { padding: 4px 18px 3px; border: 2px solid #f0d275; border-radius: 4px; background: linear-gradient(180deg, #1d1b20, #0b0b0d); box-shadow: inset 0 0 0 2px #0b0b0d, inset 0 0 0 3px rgba(212,175,55,.5), 0 0 26px rgba(212,175,55,.45);
    color: #f0d275; font: 400 30px/1 "Bebas Neue", sans-serif; letter-spacing: .2em; rotate: -6deg; text-shadow: 0 0 12px rgba(212,175,55,.6); }
  [data-theme="casino"] .fx-st-chip { padding-left: 30px; border-color: var(--gold); background: url(art/casino-chip.png) 4px 50% / 20px no-repeat, #141316; color: var(--accent-text); font: 400 15px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; }
  [data-theme="passbook"] .fx-stamp:not(.late) .fx-st-mark { padding: 5px 12px 4px; border: 3px double #2b4a8a; border-radius: 3px; background: none; color: #2b4a8a; rotate: -7deg; font: 700 19px/1 "Courier Prime", monospace; letter-spacing: .16em;
    -webkit-mask: radial-gradient(rgba(0,0,0,.45) .9px, #000 1.4px) 0 0 / 5px 5px; mask: radial-gradient(rgba(0,0,0,.45) .9px, #000 1.4px) 0 0 / 5px 5px; opacity: .9; }
  [data-theme="passbook"] .fx-st-chip { border: 0; border-bottom: 1.5px solid var(--stamp); border-radius: 0; background: none; box-shadow: none; color: var(--stamp); font: italic 600 14px/1 "Fraunces", serif; letter-spacing: 0; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-stamp:not(.late) .fx-st-mark { padding: 3px 10px 3px 6px; border: 1px solid color-mix(in srgb, var(--pos) 50%, transparent); border-radius: 999px; background: var(--bg-2); color: var(--fg-2); rotate: 0deg;
    font: 600 12px/1.2 var(--font); letter-spacing: .04em; text-transform: none; animation: fx-fade-in .15s both, fx-fade-out .22s ease-in .72s forwards; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-st-tick { display: block; width: 18px; height: 18px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-st-tick path { fill: none; stroke: var(--pos); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 24; stroke-dashoffset: 24; animation: fx-draw .32s ease-out .05s forwards; }
  @keyframes fx-draw { to { stroke-dashoffset: 0; } }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-st-chip { height: 22px; border-color: var(--line-2); color: var(--fg-2); font: 600 11.5px/1 var(--font); letter-spacing: .02em; text-transform: none; box-shadow: none; }

  /* ---------- sound: the speaker beside '?' and the trophies (no added height at 1200 and up) ---------- */
  .side-foot .gm-snd-btn { position: relative; align-self: flex-start; display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; padding: 0; border-radius: 50%; border: 1.5px solid currentColor; opacity: .85; }
  .side-foot .gm-snd-btn.off { opacity: .5; }
  .gm-snd-btn svg { display: block; pointer-events: none; }
  @media (min-width: 1200px) { .side-foot .gm-snd-btn { margin: -32px 0 0 72px; } [data-theme="tycoon"] .side-foot .gm-snd-btn { margin: -36px 0 0 78px; } }
  @media (max-width: 1199px) { .side-foot .gm-snd-btn { align-self: center; margin: 0; } }
  @media (hover: hover) { .side-foot .gm-snd-btn:hover { opacity: 1; } }
  [data-theme="tycoon"] .side-foot .gm-snd-btn { width: 30px; height: 30px; border: 2px solid #fff; background: linear-gradient(180deg, #63d9ff, #2b8fe0); box-shadow: 0 2px 0 rgba(0,0,0,.35); color: #fff; opacity: 1; }
  [data-theme="tycoon"] .side-foot .gm-snd-btn.off { background: linear-gradient(180deg, #c9d6e8, #8fa2bf); }
  [data-theme="heist"] .side-foot .gm-snd-btn { border-radius: 0; }
  [data-theme="arcade"] .side-foot .gm-snd-btn { border-radius: 3px; color: var(--hud); box-shadow: 0 0 8px rgba(124,242,255,.3); }
  [data-theme="comic"] .side-foot .gm-snd-btn { border: 2px solid #111; background: var(--pow); color: #111; box-shadow: 2px 2px 0 #111; opacity: 1; }
  [data-theme="casino"] .side-foot .gm-snd-btn { border: 1.5px dashed var(--gold); color: var(--accent-text); }
  [data-theme="passbook"] .side-foot .gm-snd-btn { border-radius: 3px; }
  .fx-p-ico.fx-p-snd { background: var(--accent) !important; }
  .fx-p-ico.fx-p-snd::after { inset: 5px; background: var(--bg-2) !important; -webkit-mask: none !important; mask: none !important; clip-path: polygon(0 30%, 35% 30%, 75% 0, 75% 100%, 35% 70%, 0 70%); display: block !important; }

  /* ---------- the cursor: one frame that slides to the selected row ---------- */
  .dk-cursor { position: absolute; left: 0; top: 0; z-index: 14; box-sizing: border-box; opacity: 0; border-radius: 4px;
    transition-property: transform, width, height; transition-duration: .12s; transition-timing-function: cubic-bezier(.3, .7, .3, 1); }
  .dk-cursor.on { opacity: 1; }
  .dk-cursor.on.hid { opacity: 0; }
  .dk-cursor.dk-cur-now { transition: none; }
  .dk-cursor::before, .dk-cursor::after { content: none; position: absolute; }
  :root:is([data-theme="dark"], [data-theme="light"]) .dk-cursor { box-shadow: inset 2px 0 0 var(--accent), inset 0 0 0 1px color-mix(in srgb, var(--accent) 28%, transparent); }
  [data-theme="tycoon"] .dk-cursor { border: 3px solid #ffc531; border-radius: 10px; box-shadow: 0 0 0 1.5px rgba(255,255,255,.8), 0 0 14px rgba(255,197,49,.55); }
  [data-theme="tycoon"] .dk-cursor::before { content: ""; left: -20px; top: 50%; width: 20px; height: 20px; margin-top: -10px; background: url(art/tycoon-coin.png) center / contain no-repeat; filter: drop-shadow(0 1px 1px rgba(0,0,0,.4)); animation: dk-coin-bob 1.1s ease-in-out infinite; }
  [data-theme="tycoon"] .dk-cursor::after { content: ""; left: -3px; top: 50%; width: 0; height: 0; margin-top: -5px; border: 5px solid transparent; border-left: 6px solid #ffc531; }
  @keyframes dk-coin-bob { 50% { translate: -3px 0; } }
  [data-theme="heist"] .dk-cursor { border-radius: 0; background: linear-gradient(90deg, rgba(255,255,255,.2), rgba(255,255,255,.07) 70%, rgba(255,255,255,.03)); box-shadow: inset 4px 0 0 #fff, inset 0 1px 0 rgba(255,255,255,.35), inset 0 -1px 0 rgba(255,255,255,.2); }
  [data-theme="arcade"] .dk-cursor { border-radius: 3px; box-shadow: inset 0 0 0 1px rgba(124,242,255,.45), 0 0 14px rgba(124,242,255,.18); }
  [data-theme="arcade"] .dk-cursor::before { content: "▶"; left: -15px; top: 50%; translate: 0 -50%; color: var(--hud); font: 700 12px/1 "Chakra Petch", sans-serif; text-shadow: 0 0 8px var(--hud); animation: gm-blink .9s steps(1, end) infinite; }
  [data-theme="comic"] .dk-cursor { border: 3px solid #111; border-radius: 10px; box-shadow: 5px 5px 0 #111; transition-timing-function: cubic-bezier(.3, 1.7, .5, 1); }
  [data-theme="casino"] .dk-cursor::after { content: ""; left: 12px; right: 12px; bottom: -1px; height: 2px; background: linear-gradient(90deg, transparent, #f0d275 18%, #f0d275 82%, transparent); box-shadow: 0 0 10px rgba(212,175,55,.9); }
  [data-theme="casino"] .dk-cursor::before { content: ""; left: 4px; top: 50%; width: 7px; height: 7px; margin-top: -3.5px; rotate: 45deg; background: #f0d275; box-shadow: 0 0 8px rgba(212,175,55,.9); }
  [data-theme="passbook"] .dk-cursor::after { content: ""; left: -4px; right: -4px; bottom: -6px; height: 9px; border: 1px solid rgba(30,42,68,.45); border-radius: 1px; box-shadow: 0 2px 3px rgba(30,42,68,.2);
    background: repeating-linear-gradient(90deg, rgba(30,42,68,.6) 0 1px, transparent 1px 7px) 0 0 / 100% 3px no-repeat, repeating-linear-gradient(90deg, rgba(30,42,68,.6) 0 1px, transparent 1px 35px) 0 0 / 100% 6px no-repeat, linear-gradient(#efe4c8, #e0d2ae); }

  /* ---------- the rail: the active page's highlight slides between items ---------- */
  .nav { position: relative; }
  .nav .nav-item { z-index: 1; }
  .dk-nav-ghost { position: absolute; z-index: 0; box-sizing: border-box; transition: transform .18s cubic-bezier(.3, .7, .3, 1), width .18s, height .18s; }
  .nav .nav-item.dk-nav-arrive { background: transparent !important; border-color: transparent !important; box-shadow: none !important; }

  /* the shortcut list grew a row (M): tighter rows and a taller box keep Done in view at 1024x768 and up */
  .modal:has(.dk-keys-dlg) { top: 5vh; max-height: 90vh; }
  .dk-keys-dlg .tbl td { padding: 5px 10px; }
  .dk-keys-dlg .intro { margin-bottom: 6px; }

  /* ---------- controller prompts: the key label lights up while its shortcut runs ---------- */
  :is(.dk-kbd, .dk-k).dk-flash { opacity: 1 !important; color: var(--accent-fg) !important; background: var(--accent) !important; border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent), 0 0 12px color-mix(in srgb, var(--accent) 55%, transparent) !important; animation: dk-press .25s ease-out; }
  @keyframes dk-press { 0% { transform: scale(.8); } 45% { transform: scale(1.14); } 100% { transform: none; } }
  [data-theme="tycoon"] :is(.dk-kbd, .dk-k).dk-flash { color: var(--navy) !important; background: #ffc531 !important; border-color: #fff !important; box-shadow: 0 0 0 2px #b07a00, 0 0 14px rgba(255,197,49,.9) !important; }
  [data-theme="heist"] :is(.dk-kbd, .dk-k).dk-flash { color: #000 !important; background: #fff !important; border-color: #fff !important; box-shadow: 0 0 12px rgba(255,255,255,.7) !important; }
  [data-theme="arcade"] :is(.dk-kbd, .dk-k).dk-flash { color: #06121a !important; background: var(--hud) !important; border-color: var(--hud) !important; box-shadow: 0 0 14px rgba(124,242,255,1) !important; }
  [data-theme="comic"] :is(.dk-kbd, .dk-k).dk-flash { color: #111 !important; background: var(--pow) !important; border-color: #111 !important; box-shadow: 2px 2px 0 #111 !important; }
  [data-theme="casino"] :is(.dk-kbd, .dk-k).dk-flash { color: #1a1400 !important; background: #f0d275 !important; border-color: #f0d275 !important; box-shadow: 0 0 14px rgba(212,175,55,.9) !important; }
  [data-theme="passbook"] :is(.dk-kbd, .dk-k).dk-flash { color: #fff !important; background: var(--stamp) !important; border-color: var(--stamp) !important; box-shadow: none !important; }

  /* ---------- the 30-day strip as a board: tycoon's top hat, GO on the 1st, property caps; heist's player arrow and blips ---------- */
  .dk-cf-d { position: relative; }
  .gm-cf-hat, .gm-cf-go, .gm-cf-cap, .gm-cf-blip { display: none; }
  [data-theme="tycoon"] .dk-cf { padding-top: 16px; }
  [data-theme="tycoon"] .gm-cf-hat { display: block; position: absolute; z-index: 2; left: 50%; top: 50%; width: 30px; height: 30px; margin: -29px 0 0 -15px; background: url(art/emblem-board.png) center / contain no-repeat; filter: drop-shadow(0 2px 1px rgba(0,0,0,.45)); }
  [data-theme="tycoon"] .gm-cf-go { display: block; position: absolute; z-index: 3; left: 50%; top: -9px; translate: -50% 0; padding: 2px 4px 1px; border: 1.5px solid #fff; border-radius: 5px; background: linear-gradient(180deg, #ff5a5a, #d81e1e);
    box-shadow: 0 2px 0 rgba(0,0,0,.3); color: #fff; font: 400 10px/1 "Lilita One", sans-serif; letter-spacing: .02em; text-shadow: 0 1px 0 #7a0f0f; }
  [data-theme="tycoon"] .gm-cf-cap { display: block; position: absolute; z-index: 1; left: 1px; right: 1px; top: 0; height: 7px; border: 1.5px solid var(--navy); border-radius: 3px 3px 1px 1px; background: var(--gm-band, #e5312f); }
  .gm-cf-cap.gm-c0 { --gm-band: #8b5a2b; } .gm-cf-cap.gm-c1 { --gm-band: #8fd3f5; } .gm-cf-cap.gm-c2 { --gm-band: #e2489a; } .gm-cf-cap.gm-c3 { --gm-band: #f7931e; }
  .gm-cf-cap.gm-c4 { --gm-band: #e5312f; } .gm-cf-cap.gm-c5 { --gm-band: #ffd21f; } .gm-cf-cap.gm-c6 { --gm-band: #1fa64a; } .gm-cf-cap.gm-c7 { --gm-band: #1d3b8f; }
  [data-theme="heist"] .gm-cf-hat { display: block; position: absolute; z-index: 2; left: 50%; top: 50%; width: 14px; height: 17px; margin: -19px 0 0 -7px; background: #fff; clip-path: polygon(50% 0, 100% 100%, 50% 76%, 0 100%); filter: drop-shadow(0 0 4px rgba(255,255,255,.8)); }
  [data-theme="heist"] .gm-cf-blip { display: block; position: absolute; z-index: 2; left: 50%; top: 4px; width: 9px; height: 9px; margin-left: -4.5px; border-radius: 50%; background: #f5c342; box-shadow: 0 0 0 1.5px #000, 0 0 7px rgba(245,195,66,.85); }

  /* ---------- a light sweep on the primary buttons in tycoon and casino ---------- */
  @media (hover: hover) {
    :root:is([data-theme="tycoon"], [data-theme="casino"]) .btn-primary { position: relative; overflow: hidden; }
    :root:is([data-theme="tycoon"], [data-theme="casino"]) .btn-primary::after { content: ""; position: absolute; top: -2px; bottom: -2px; left: -70%; width: 45%; pointer-events: none; opacity: 0;
      background: linear-gradient(100deg, transparent, rgba(255,255,255,.6) 45%, rgba(255,255,255,.15) 60%, transparent); transform: skewX(-18deg); }
    :root:is([data-theme="tycoon"], [data-theme="casino"]) .btn-primary:hover:not(:disabled)::after { animation: gm-glint .65s ease-out; }
  }
  @keyframes gm-glint { 0% { left: -70%; opacity: 0; } 15% { opacity: 1; } 100% { left: 125%; opacity: 0; } }

  /* ======================================================================
     landmarks: the Goals panel, the table's stage pips, the inspector, the Overview's next landmark
     ====================================================================== */
  .gm-lm { display: block; }
  .gm-lm svg { display: block; width: 100%; height: auto; overflow: visible; }
  .gm-lm .lm-p { stroke-linejoin: round; }
  .lm-ghost * { fill: none; stroke: var(--fg-3); stroke-width: 1; stroke-dasharray: 3 2.5; opacity: .45; }
  .lm-sign line { stroke: var(--fg-2); stroke-width: 2; }
  .lm-sign rect { fill: var(--bg-2); stroke: var(--fg-2); stroke-width: 1.3; }
  .lm-sign text { font: 800 8px var(--font); fill: var(--fg); }
  .gm-lm .lm-found { fill: color-mix(in srgb, var(--fg-3) 60%, var(--bg-2)); }
  .lm-rebar line { stroke: var(--fg-3); stroke-width: 1.2; }
  .gm-lm .lm-wall { fill: var(--bg-3); stroke: var(--fg-2); stroke-width: 1.2; }
  .gm-lm .lm-roof { fill: var(--lm-c); stroke: var(--fg-2); stroke-width: 1.2; }
  .gm-lm .lm-trim { fill: var(--accent); }
  .gm-lm .lm-win { fill: var(--fg-3); }
  .gm-lm .lm-win.lit { fill: #ffd54a; }
  .gm-lm .lm-door { fill: var(--fg-2); }
  .gm-lm .lm-pole { stroke: var(--fg-2); stroke-width: 1.4; }
  .gm-lm .lm-flag { fill: var(--lm-c); }
  .lm-scaf line { stroke: #b07a00; stroke-width: 1.3; stroke-linecap: round; }
  .lm-scaf .lm-brace { stroke-width: .9; opacity: .75; }
  .lm-dust { display: none; }
  .lm-dust circle { fill: #d9cdb0; opacity: 0; }
  /* a stage raised by a change made here: the new part rises out of the lot in a puff of dust */
  .gm-lm.lm-rise .lm-new { animation: lm-rise .6s cubic-bezier(.2, .8, .3, 1.15) both; transform-box: fill-box; transform-origin: 50% 100%; }
  .gm-lm.lm-rise .lm-dust { display: inline; }
  .gm-lm.lm-rise .lm-dust circle { animation: lm-dust .6s ease-out calc(var(--i) * 35ms) both; transform-box: fill-box; transform-origin: center; }
  @keyframes lm-rise { 0% { opacity: 0; transform: translateY(16px) scaleY(.25); } 55% { opacity: 1; } 100% { transform: none; } }
  @keyframes lm-dust { 0% { opacity: .9; transform: scale(.4); } 100% { opacity: 0; transform: translateY(-5px) scale(2.3); } }

  .gm-city .panel-head { gap: 12px; }
  .gm-city-n { margin-left: auto; white-space: nowrap; }
  .gm-lots { display: flex; flex-wrap: wrap; gap: 12px; padding: 14px 16px 16px; }
  .gm-lot { position: relative; display: flex; flex-direction: column; align-items: stretch; width: 140px; padding: 6px 6px 8px; border: 1px solid var(--line); border-radius: var(--r); background: var(--bg-2); color: var(--fg); font: inherit; text-align: left; cursor: pointer; }
  .gm-lot.on { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 30%, transparent); }
  :root:is([data-theme="tycoon"], [data-theme="heist"], [data-theme="comic"], [data-theme="passbook"]) .gm-lot.on { box-shadow: none; }
  .gm-lot-nm { margin-top: 6px; font-size: 13px; font-weight: 700; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-lot-st { font-size: 11.5px; line-height: 1.3; color: var(--fg-2); white-space: nowrap; }
  .gm-lot-st b { color: var(--pos); }
  .gm-lot-v { font-size: 12px; line-height: 1.3; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  @media (hover: hover) { .gm-lot:hover { border-color: var(--line-2); } }
  .gm-sky { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
  .gm-sky svg { display: block; height: 22px; width: auto; }
  .gm-sky svg * { fill: currentColor; stroke: none; }
  .gm-sky-t { white-space: nowrap; }
  .gm-lm-big { margin: -4px -4px 12px; }
  .gm-lm-big .gm-lm { max-width: 300px; margin: 0 auto; }

  /* stage pips: the goals table, the Overview's next landmark, the goal inspector */
  .gm-pips { display: inline-flex; gap: 3px; margin-right: 8px; vertical-align: middle; }
  .gm-pips i { width: 6px; height: 10px; border-radius: 2px; background: var(--line-2); }
  .gm-pips i.on { background: var(--pos); }
  .dk-tbl .dk-c-prog { width: 232px; }
  @media (max-width: 1399px) { .dk-tbl .dk-c-prog { width: 176px; } .dk-c-prog .bar { width: 56px; } .gm-pips { margin-right: 6px; } }
  @media (max-width: 1199px) { .dk-tbl .dk-c-prog { width: 130px; } .dk-c-prog .bar { display: none; } }   /* too narrow for both: the pips and the % carry it */
  .dk-mg .stars.gm-stages, .dk-insp .stars.gm-stages { display: flex; gap: 5px; margin: 2px 0 8px; }
  :root .dk-mg .stars.gm-stages i, :root .dk-insp .stars.gm-stages i { width: 22px; height: 8px; border-radius: 4px; clip-path: none; background: var(--line-2); opacity: 1; filter: none; }
  :root .dk-mg .stars.gm-stages i.on, :root .dk-insp .stars.gm-stages i.on { background: var(--pos); }
  [data-theme="heist"] .dk-mg .stars.gm-stages i, [data-theme="heist"] .dk-insp .stars.gm-stages i { width: 24px; height: 24px; border-radius: 0; background: url(art/heist-star.png) center / contain no-repeat; opacity: .22; }
  [data-theme="heist"] .dk-mg .stars.gm-stages i.on, [data-theme="heist"] .dk-insp .stars.gm-stages i.on { background: url(art/heist-star.png) center / contain no-repeat; opacity: 1; filter: drop-shadow(0 0 6px rgba(255,255,255,.5)); }

  /* ======================================================================
     bosses: the total in the Debt head, a boss card per debt, and title deeds on the assets
     ====================================================================== */
  .gm-boss-tot { flex: 1 1 auto; display: inline-flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; margin: 0 14px; }
  .gm-hp { position: relative; display: block; flex: 1 1 auto; height: 10px; border-radius: 999px; background: var(--line); overflow: hidden; }
  .gm-hp i { display: block; height: 100%; max-width: 100%; border-radius: inherit; background: var(--neg); transition: width .4s cubic-bezier(.3, .7, .3, 1); }
  .gm-hp.gm-drain { animation: gm-hit .4s ease-out; }
  @keyframes gm-hit { 20% { filter: brightness(1.7); } }
  .gm-hp.gm-hp-tot { flex: 0 1 150px; min-width: 60px; height: 8px; }
  .gm-boss-tl { font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
  @media (max-width: 1199px) { .gm-hp.gm-hp-tot { flex-basis: 90px; } }

  .gm-boss { position: relative; padding: 14px 0 6px; }
  .gm-boss > :is(.gm-boss-top, .gm-boss-hp, .gm-boss-l, .gm-boss-clear, .gm-ledger) { margin-left: 20px; margin-right: 20px; }
  .gm-boss-top { display: flex; align-items: center; gap: 8px; min-width: 0; }
  .gm-boss-k { flex: none; font: 700 10.5px/1 var(--font); letter-spacing: .12em; text-transform: uppercase; color: var(--fg-3); }
  .gm-boss-who { flex: 1; min-width: 0; font-weight: 700; font-size: 13.5px; }
  .gm-boss-st { flex: none; font: 800 10.5px/1 var(--font); letter-spacing: .1em; text-transform: uppercase; color: var(--pos); }
  .gm-boss-st:empty { display: none; }
  .gm-boss-hp { display: flex; align-items: center; gap: 12px; margin-top: 12px; margin-bottom: 8px; }
  .gm-hp-n { flex: none; font-size: 13px; }
  .gm-boss-l { padding: 2px 0; font-size: 13px; color: var(--fg-2); }
  .gm-boss-l b { color: var(--fg); font-weight: 700; }
  .gm-boss .gm-hits-l { margin-top: 8px; }
  .gm-hits .num.pos { font-weight: 700; }
  .gm-pow { display: none; }
  .gm-skull { display: none; }
  .gm-boss-clear { display: flex; flex-direction: column; gap: 4px; margin-top: 12px; margin-bottom: 4px; padding: 12px 14px; border-radius: var(--r); background: color-mix(in srgb, var(--pos) 10%, transparent); border: 1px solid color-mix(in srgb, var(--pos) 40%, transparent); }
  .gm-boss-clear b { color: var(--pos); font-size: 17px; }
  .gm-boss-clear span { font-size: 12.5px; color: var(--fg-2); }
  .gm-cleared .gm-boss-clear b::before { content: "✓ "; }
  .gm-boss.gm-flip { animation: gm-flip .65s cubic-bezier(.3, 1.3, .5, 1) both; transform-origin: 50% 50%; }
  @keyframes gm-flip { 0% { opacity: .2; transform: perspective(700px) rotateY(95deg); } 100% { opacity: 1; transform: none; } }
  .gm-ledger { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-top: 8px; font-size: 13px; }
  .gm-ledger s { color: var(--fg-3); text-decoration-thickness: 1.5px; }
  .gm-deed-band { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: -18px -20px 14px; padding: 7px 20px; color: #fff; background: var(--gm-deed, var(--pos)); font: 700 10.5px/1.2 var(--font); letter-spacing: .14em; text-transform: uppercase; }
  .gm-deed-grp { opacity: .85; }
  .gm-deed-band.gm-g-cash { --gm-deed: #1f8a4c; } .gm-deed-band.gm-g-invest { --gm-deed: #b98512; } .gm-deed-band.gm-g-property { --gm-deed: #8b5a2b; }
  :root:is([data-theme="dark"], [data-theme="light"], [data-theme="heist"], [data-theme="arcade"], [data-theme="casino"]) .gm-deed-band { margin: -18px -20px 14px; padding: 0; height: 4px; font-size: 0; }
  :root:is([data-theme="dark"], [data-theme="light"], [data-theme="heist"], [data-theme="arcade"], [data-theme="casino"]) .gm-deed-band > span { display: none; }

  /* ======================================================================
     welcome back: a card under the page bar, before any banner
     ====================================================================== */
  .fx-wb-wrap { position: fixed; top: var(--fx-top); display: flex; justify-content: center; }
  .fx-wb { position: relative; display: flex; align-items: center; gap: 18px; max-width: min(760px, calc(100% - 48px)); padding: 14px 22px; border-radius: 12px; background: var(--bg-2); border: 1px solid var(--line-2);
    box-shadow: 0 18px 44px rgba(0,0,0,.35); color: var(--fg); cursor: pointer; overflow: hidden; animation: fx-wb-in .45s cubic-bezier(.2, .9, .3, 1.12) both; }
  .fx-wb-wrap.out .fx-wb { animation: fx-wb-out .3s ease-in both; }
  .fx-wb-wrap.out.quick .fx-wb { animation-duration: .16s; }
  @keyframes fx-wb-in { from { opacity: 0; transform: translateY(-22px) scale(.97); } }
  @keyframes fx-wb-out { to { opacity: 0; transform: translateY(-12px); } }
  .fx-wb-main { min-width: 0; }
  .fx-wb-title { font-size: 16px; font-weight: 800; }
  .fx-wb-sub { margin-top: 2px; font-size: 13px; color: var(--fg-2); }
  .fx-wb-amt { margin-top: 2px; font-size: 30px; font-weight: 800; line-height: 1.1; color: var(--pos); }
  .fx-wb-line { margin-top: 2px; font-size: 13.5px; color: var(--fg-2); }
  .fx-wb-list { display: flex; flex-wrap: wrap; gap: 3px 14px; list-style: none; margin: 7px 0 0; padding: 0; font-size: 12.5px; color: var(--fg-2); }
  .fx-wb-list li::before { content: "· "; color: var(--fg-3); }
  .fx-wb-list li:first-child::before { content: none; }
  .fx-wb-art, .fx-wb-date, .fx-wb-scan { flex: none; }
  .fx-wb-go { flex: none; }
  /* dark and paper: one slim line that fades */
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb { gap: 10px; padding: 8px 18px 8px 16px; border-radius: 999px; box-shadow: 0 10px 26px rgba(0,0,0,.25); animation-name: fx-fade-in; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-main { display: flex; align-items: baseline; gap: 10px; white-space: nowrap; min-width: 0; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-title { font-size: 13px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-title::before { content: "✦ "; color: var(--accent-text); }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-amt { display: none; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-up .fx-wb-line { color: var(--pos); }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-line, :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-list { margin: 0; font-size: 12.5px; flex-wrap: nowrap; overflow: hidden; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-list li:first-child::before { content: "· "; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-wrap.out .fx-wb { animation-name: fx-fade-out; }

  /* ======================================================================
     per look
     ====================================================================== */

  /* ---------- tycoon: cartoon buildings with gold trim on green plots along a road; MORTGAGED deeds; WELCOME BACK, TYCOON! ---------- */
  /* the street: sky, grass and road tile down the panel, one row per line of lots (a lot is 182px tall, rows 14px apart) */
  [data-theme="tycoon"] .gm-lots-tycoon { gap: 14px 6px; padding: 12px 16px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='196'%3E%3Crect width='12' height='98.7' fill='%23c9ecff'/%3E%3Crect y='98.7' width='12' height='12.0' fill='%235ad16a'/%3E%3Crect y='109.2' width='12' height='1.5' fill='%231d8f3a'/%3E%3Crect y='110.7' width='12' height='17.3' fill='%235b6275'/%3E%3Crect y='118.5' width='7' height='1.7' fill='%23fff'/%3E%3C/svg%3E") 0 12px / 12px 196px repeat; }
  [data-theme="tycoon"] .gm-lots-tycoon .gm-lot { flex: none; width: 160px; height: 182px; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
  [data-theme="tycoon"] .gm-lots-tycoon .gm-lm svg { width: 160px; height: 128px; }
  [data-theme="tycoon"] .gm-lots-tycoon .gm-lot-nm { height: 18px; margin-top: 4px; line-height: 18px; }
  [data-theme="tycoon"] .gm-lots-tycoon .gm-lot-st, [data-theme="tycoon"] .gm-lots-tycoon .gm-lot-v { height: 16px; line-height: 16px; }
  [data-theme="tycoon"] .gm-lm .lm-sky { fill: #c9ecff; }
  [data-theme="tycoon"] .gm-lm .lm-cloud ellipse { fill: #fff; opacity: .9; }
  [data-theme="tycoon"] .gm-lm-big .lm-sky, [data-theme="tycoon"] .gm-lm-big .lm-cloud { display: none; }
  [data-theme="tycoon"] .gm-lots-tycoon .gm-lot-nm, [data-theme="tycoon"] .gm-lots-tycoon .gm-lot-st, [data-theme="tycoon"] .gm-lots-tycoon .gm-lot-v { margin-left: 8px; margin-right: 8px; }
  [data-theme="tycoon"] .gm-lot-nm { font: 400 14px/18px "Lilita One", sans-serif; letter-spacing: .02em; color: var(--navy); }
  [data-theme="tycoon"] .gm-lot.on .gm-lot-nm { align-self: flex-start; max-width: calc(100% - 16px); padding: 0 7px; border-radius: 7px; background: linear-gradient(180deg, #ffe98f, #ffbd14); box-shadow: 0 0 0 1.5px #fff, 0 2px 0 1.5px #7a5200; }
  [data-theme="tycoon"] .gm-lot-st { font: 400 12px/1.3 "Lilita One", sans-serif; color: var(--fg-2); letter-spacing: .02em; }
  [data-theme="tycoon"] .gm-lot-st b { color: #d81e1e; }
  [data-theme="tycoon"] .gm-lot-v { color: var(--fg-2); font-weight: 700; }
  @media (hover: hover) { [data-theme="tycoon"] .gm-lot:hover .gm-lm svg { filter: drop-shadow(0 0 5px rgba(255,197,49,.9)); } }
  [data-theme="tycoon"] .gm-lm .lm-plot { fill: #5ad16a; stroke: #1d8f3a; stroke-width: 1.5; }
  [data-theme="tycoon"] .gm-lm .lm-bush circle { fill: #3dbb55; stroke: #157a2a; stroke-width: 1; }
  [data-theme="tycoon"] .gm-lm .lm-road { fill: #5b6275; }
  [data-theme="tycoon"] .gm-lm .lm-lane { stroke: #fff; stroke-width: 1.3; stroke-dasharray: 6 5; }
  [data-theme="tycoon"] .gm-lm .lm-wall { fill: #fff8e8; stroke: var(--navy); stroke-width: 1.5; }
  [data-theme="tycoon"] .gm-lm-tower .lm-wall { fill: #8fd3f5; }
  [data-theme="tycoon"] .gm-lm-house .lm-wall { fill: #ffe9a8; }
  [data-theme="tycoon"] .gm-lm-dome .lm-wall { fill: #fff1c4; }
  [data-theme="tycoon"] .gm-lm-lighthouse .lm-wall { fill: #ffffff; }
  [data-theme="tycoon"] .gm-lm-stadium .lm-wall { fill: #d9e6f5; }
  [data-theme="tycoon"] .gm-lm .lm-stripe { fill: #e5312f; stroke: var(--navy); stroke-width: .8; }
  [data-theme="tycoon"] .gm-lm .lm-roof { fill: var(--lm-c); stroke: var(--navy); stroke-width: 1.5; }
  [data-theme="tycoon"] .gm-lm .lm-trim { fill: #ffc531; stroke: #9a6a00; stroke-width: .9; }
  [data-theme="tycoon"] .gm-lm .lm-win { fill: #2a4c8c; stroke: var(--navy); stroke-width: .9; }
  [data-theme="tycoon"] .gm-lm .lm-win.lit { fill: #ffe27a; filter: drop-shadow(0 0 2px #ffd21f); }
  [data-theme="tycoon"] .gm-lm .lm-door { fill: #8b5a2b; stroke: var(--navy); stroke-width: 1; }
  [data-theme="tycoon"] .gm-lm .lm-found { fill: #b9c3cf; stroke: var(--navy); stroke-width: 1; }
  [data-theme="tycoon"] .gm-lm .lm-pole { stroke: var(--navy); stroke-width: 1.5; }
  [data-theme="tycoon"] .gm-lm .lm-flag { fill: #d81e1e; stroke: var(--navy); stroke-width: .9; }
  [data-theme="tycoon"] .gm-lm .lm-scaf line { stroke: #c98c00; stroke-width: 1.6; }
  [data-theme="tycoon"] .gm-lm .lm-ghost * { stroke: var(--navy); opacity: .28; }
  [data-theme="tycoon"] .gm-lm .lm-sign line { stroke: #8b5a2b; stroke-width: 2.4; }
  [data-theme="tycoon"] .gm-lm .lm-sign rect { fill: #fff; stroke: var(--navy); stroke-width: 1.6; }
  [data-theme="tycoon"] .gm-lm .lm-sign text { font: 400 8.5px "Lilita One", sans-serif; fill: #d81e1e; }
  [data-theme="tycoon"] .gm-lm .lm-rib path { fill: #d81e1e; stroke: #ffc531; stroke-width: 1.2; }
  [data-theme="tycoon"] .gm-lm .lm-rib text { font: 400 7.5px "Lilita One", sans-serif; letter-spacing: .04em; fill: #fff; }
  [data-theme="tycoon"] .gm-lm .lm-dust circle { fill: #f3e2b5; stroke: #c9a45a; stroke-width: .6; }
  [data-theme="tycoon"] .gm-sky { color: var(--navy); }
  [data-theme="tycoon"] .gm-sky-t { font: 400 15px "Lilita One", sans-serif; color: var(--navy); text-shadow: 0 1px 0 rgba(255,255,255,.5); }
  [data-theme="tycoon"] .gm-lm-big { margin: -18px -20px 12px; padding: 14px 20px 0; background: linear-gradient(180deg, #bfe7ff, #e6f6ff); border-bottom: 2px dashed var(--line); }
  [data-theme="tycoon"] .gm-pips { gap: 2px; }
  [data-theme="tycoon"] .gm-pips i { width: 11px; height: 11px; border-radius: 50%; background: #c9d6e8; box-shadow: inset 0 0 0 1.5px #9aabc4; }
  [data-theme="tycoon"] .gm-pips i.on { background: url(art/tycoon-coin.png) center / 13px no-repeat; box-shadow: none; }
  :root[data-theme="tycoon"] .dk-mg .stars.gm-stages i, :root[data-theme="tycoon"] .dk-insp .stars.gm-stages i { width: 22px; height: 22px; border-radius: 50%; background: #d9e6f5; box-shadow: inset 0 0 0 2px #9aabc4; }
  :root[data-theme="tycoon"] .dk-mg .stars.gm-stages i.on, :root[data-theme="tycoon"] .dk-insp .stars.gm-stages i.on { background: url(art/tycoon-coin.png) center / 24px no-repeat; box-shadow: none; filter: drop-shadow(0 1px 0 rgba(0,0,0,.25)); }
  /* the deed: a cream card with the group's band; debts are MORTGAGED until they are paid off */
  [data-theme="tycoon"] .dk-ib.gm-deed { margin: 14px 14px 0; padding: 0 16px 16px; border: 3px solid var(--navy); border-radius: 12px; background: #fffdf5; box-shadow: 0 4px 0 rgba(27,42,74,.22); }
  [data-theme="tycoon"] .gm-deed-band { margin: 0 -16px 12px; padding: 9px 16px 8px; border-bottom: 3px solid var(--navy); border-radius: 8px 8px 0 0; font: 400 12px/1.1 "Lilita One", sans-serif; letter-spacing: .12em; text-shadow: 0 1px 0 rgba(0,0,0,.3); }
  [data-theme="tycoon"] .gm-deed-band.gm-g-invest { --gm-deed: linear-gradient(180deg, #ffd54a, #e0a300); color: var(--navy); text-shadow: 0 1px 0 rgba(255,255,255,.4); }
  [data-theme="tycoon"] .gm-deed-band.gm-g-cash { --gm-deed: linear-gradient(180deg, #4fd66c, #1d8f3a); }
  [data-theme="tycoon"] .gm-deed-band.gm-g-property { --gm-deed: linear-gradient(180deg, #b07a47, #7a4a1f); }
  [data-theme="tycoon"] .gm-boss { margin: 12px 14px 4px; padding: 0 0 6px; border: 3px solid var(--navy); border-radius: 12px; background: #fffdf5; box-shadow: 0 4px 0 rgba(27,42,74,.22); overflow: hidden; }
  [data-theme="tycoon"] .gm-boss > .gm-boss-top { margin: 0 0 4px; padding: 9px 16px 8px; background: linear-gradient(180deg, #ff5a5a, #d81e1e); border-bottom: 3px solid var(--navy); }
  [data-theme="tycoon"] .gm-cleared > .gm-boss-top { background: linear-gradient(180deg, #4fd66c, #1d8f3a); }
  [data-theme="tycoon"] .gm-boss-k { color: #ffe9a8; font: 400 11px/1 "Lilita One", sans-serif; letter-spacing: .12em; }
  [data-theme="tycoon"] .gm-boss-who { color: #fff; font: 400 16px/1.1 "Lilita One", sans-serif; letter-spacing: .02em; text-shadow: 0 1px 0 rgba(0,0,0,.35); }
  [data-theme="tycoon"] .gm-boss-st { position: absolute; right: 14px; top: 47px; z-index: 1; padding: 4px 7px 3px; border: 2.5px solid #d81e1e; border-radius: 6px; color: #d81e1e; background: rgba(255,253,245,.9); font: 400 13px/1 "Lilita One", sans-serif; letter-spacing: .08em; rotate: -6deg; opacity: .92; }
  [data-theme="tycoon"] .gm-cleared .gm-boss-st { border-color: #1d8f3a; color: #1d8f3a; }
  [data-theme="tycoon"] .gm-boss-hp { margin-top: 14px; margin-right: 132px; }
  [data-theme="tycoon"] .gm-cleared .gm-boss-st { top: 10px; right: 12px; border-color: #fff; color: #fff; background: #1d8f3a; }
  [data-theme="tycoon"] .gm-hp { height: 14px; border: 2px solid var(--navy); background: #0b1b3d; box-shadow: inset 0 2px 3px rgba(0,0,0,.5); }
  [data-theme="tycoon"] .gm-hp i { background: linear-gradient(180deg, #ff9b8a, #e5312f 55%, #b71515); box-shadow: inset 0 2px 0 rgba(255,255,255,.35); }
  [data-theme="tycoon"] .gm-hp-n { font: 400 15px "Lilita One", sans-serif; color: var(--navy); }
  [data-theme="tycoon"] .gm-boss-l { color: var(--fg-2); }
  [data-theme="tycoon"] .gm-boss-l b { font-family: "Lilita One", sans-serif; font-weight: 400; color: var(--navy); }
  [data-theme="tycoon"] .gm-boss-clear { border: 0; background: none; padding: 8px 0 0; }
  [data-theme="tycoon"] .gm-boss-clear b { font: 400 22px "Lilita One", sans-serif; color: #1d8f3a; }
  [data-theme="tycoon"] .gm-boss-tot .gm-hp { height: 12px; border: 2px solid #fff; background: rgba(0,0,0,.3); box-shadow: inset 0 2px 3px rgba(0,0,0,.35); }
  [data-theme="tycoon"] .gm-boss-tot .gm-hp i { background: linear-gradient(180deg, #ffe98f, #ffb800); }
  :root[data-theme="tycoon"] .panel-head .gm-boss-tl { color: #fff; font: 400 13px "Lilita One", sans-serif; letter-spacing: .02em; }
  /* WELCOME BACK, TYCOON! */
  [data-theme="tycoon"] .fx-wb { gap: 20px; padding: 14px 18px 14px 20px; border: 3px solid #ffc531; border-radius: 18px; background: linear-gradient(180deg, #2a4c8c, #16305e); color: #fff; box-shadow: 0 5px 0 #0b1b3d, 0 18px 40px rgba(0,0,0,.35); overflow: visible; }
  [data-theme="tycoon"] .fx-wb-art { position: relative; width: 84px; height: 84px; margin: -14px 0 -14px -6px; }
  [data-theme="tycoon"] .fx-wb-art::before { content: ""; position: absolute; inset: -18px; background: repeating-conic-gradient(rgba(255,214,80,.55) 0 8deg, transparent 8deg 22deg); -webkit-mask: radial-gradient(circle, #000 20%, transparent 70%); mask: radial-gradient(circle, #000 20%, transparent 70%); animation: fx-rays 6s linear infinite; }
  [data-theme="tycoon"] .fx-wb-art::after { content: ""; position: absolute; inset: 8px; background: url(art/tycoon-coin.png) center / contain no-repeat; filter: drop-shadow(0 4px 2px rgba(0,0,0,.4)); animation: fx-coin-pop .5s cubic-bezier(.3, 1.6, .5, 1) .15s both; }
  @keyframes fx-rays { to { rotate: 360deg; } }
  @keyframes fx-coin-pop { from { transform: scale(.2) rotate(-90deg); } }
  [data-theme="tycoon"] .fx-wb-down .fx-wb-art, [data-theme="casino"] .fx-wb-down .fx-wb-art { display: none; }   /* a down day: no coins, no chips */
  [data-theme="tycoon"] .fx-wb-title { font: 400 24px/1.05 "Lilita One", sans-serif; letter-spacing: .03em; color: #fff; -webkit-text-stroke: 1px #0b1b3d; text-shadow: 0 3px 0 #0b1b3d; }
  [data-theme="tycoon"] .fx-wb-amt { font: 400 34px/1.05 "Lilita One", sans-serif; letter-spacing: .02em; color: #ffd54a; -webkit-text-stroke: 1.5px #7a5200; text-shadow: 0 3px 0 #7a5200; }
  [data-theme="tycoon"] .fx-wb-line { font: 400 15px "Lilita One", sans-serif; letter-spacing: .02em; color: #cfe3ff; }
  [data-theme="tycoon"] .fx-wb-list { color: #cfe3ff; font-weight: 700; }
  [data-theme="tycoon"] .fx-wb-list li::before { color: #ffc531; }
  [data-theme="tycoon"] .btn.fx-wb-go { height: 48px; padding: 0 26px; border-radius: 14px; font-size: 22px; }

  /* ---------- heist: planning-board photos on red string; target dossiers; a loading-screen title card ---------- */
  [data-theme="heist"] .gm-lots-heist { gap: 18px 16px; padding: 18px 18px 18px; background: radial-gradient(rgba(255,255,255,.04) 1px, transparent 1.4px) 0 0 / 6px 6px, #1a1a1d; }
  [data-theme="heist"] .gm-lots-heist .gm-lot { width: 140px; padding: 0 2px 4px; border: 0; background: none; box-shadow: none; rotate: -1.6deg; }
  [data-theme="heist"] .gm-lots-heist .gm-lot:nth-child(2n) { rotate: 1.4deg; }
  [data-theme="heist"] .gm-lots-heist .gm-lot:nth-child(3n) { rotate: -.6deg; }
  [data-theme="heist"] .gm-lots-heist .gm-lot::before { content: ""; position: absolute; z-index: 2; left: -10px; right: -10px; top: 8px; height: 1.6px; background: #c1272d; box-shadow: 0 1px 1px rgba(0,0,0,.6); }
  [data-theme="heist"] .gm-lots-heist .gm-lot::after { content: ""; position: absolute; z-index: 3; left: 50%; top: 4px; width: 9px; height: 9px; margin-left: -4.5px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #ff8a8a, #c1272d 55%, #5a0d10); box-shadow: 0 1px 2px rgba(0,0,0,.7); }
  [data-theme="heist"] .gm-lot.on .gm-lm svg { filter: drop-shadow(0 0 0 #fff) drop-shadow(0 0 6px rgba(240,165,58,.8)); }
  [data-theme="heist"] .gm-lot-nm { margin-top: 5px; font: 500 12px/1.2 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #fff; }
  [data-theme="heist"] .gm-lot-st { font: 500 10.5px/1.3 "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #b8b8bc; }
  [data-theme="heist"] .gm-lot-st b { color: #f5c342; }
  [data-theme="heist"] .gm-lot-v { font: 400 13px/1.3 "Anton", sans-serif; letter-spacing: .03em; color: #8ee08a; }
  [data-theme="heist"] .gm-lm .lm-paper { fill: #eeece6; stroke: rgba(0,0,0,.4); stroke-width: .6; }
  [data-theme="heist"] .gm-lm .lm-pic { fill: #8f99a3; }
  [data-theme="heist"] .gm-lm .lm-gnd { fill: #55595e; }
  [data-theme="heist"] .gm-lm .lm-wall { fill: #d4d6d9; stroke: #1b1b1d; stroke-width: 1.2; }
  [data-theme="heist"] .gm-lm .lm-roof { fill: #6f747a; stroke: #1b1b1d; stroke-width: 1.2; }
  [data-theme="heist"] .gm-lm .lm-trim { fill: #a9adb3; }
  [data-theme="heist"] .gm-lm .lm-stripe { fill: #6f747a; }
  [data-theme="heist"] .gm-lm .lm-win { fill: #3a3d42; }
  [data-theme="heist"] .gm-lm .lm-win.lit { fill: #f5c342; }
  [data-theme="heist"] .gm-lm .lm-door { fill: #2a2c30; }
  [data-theme="heist"] .gm-lm .lm-found { fill: #7b7f85; }
  [data-theme="heist"] .gm-lm .lm-flag { fill: #c1272d; }
  [data-theme="heist"] .gm-lm .lm-pole { stroke: #1b1b1d; }
  [data-theme="heist"] .gm-lm .lm-scaf line { stroke: #3f4246; }
  [data-theme="heist"] .gm-lm .lm-ghost * { stroke: #2a2c30; opacity: .4; }
  [data-theme="heist"] .gm-lm .lm-sign rect { fill: #eeece6; stroke: #1b1b1d; }
  [data-theme="heist"] .gm-lm .lm-sign line { stroke: #1b1b1d; }
  [data-theme="heist"] .gm-lm .lm-sign text { font: 500 8px "Oswald", sans-serif; fill: #1b1b1d; }
  [data-theme="heist"] .gm-lm .lm-cap { font: 500 7.5px "Oswald", sans-serif; letter-spacing: .22em; fill: #3a3a3e; }
  [data-theme="heist"] .gm-lm .lm-done rect { fill: rgba(245,195,66,.9); stroke: #000; stroke-width: 1; }
  [data-theme="heist"] .gm-lm .lm-done text { font: 400 9.5px "Anton", sans-serif; letter-spacing: .08em; fill: #000; }
  [data-theme="heist"] .gm-lm .lm-pin, [data-theme="heist"] .gm-lm .lm-pin-hi { display: none; }
  [data-theme="heist"] .gm-lm-big .lm-pin { display: inline; fill: #c1272d; } [data-theme="heist"] .gm-lm-big .lm-pin-hi { display: inline; fill: #ff9d9d; }
  [data-theme="heist"] .gm-sky { color: #fff; }
  [data-theme="heist"] .gm-sky-t { font: 500 11px "Oswald", sans-serif; letter-spacing: .18em; text-transform: uppercase; color: #f5c342; }
  [data-theme="heist"] .gm-pips { gap: 2px; }
  [data-theme="heist"] .gm-pips i { width: 7px; height: 4px; border-radius: 0; background: rgba(255,255,255,.18); }
  [data-theme="heist"] .gm-pips i.on { background: #fff; }
  [data-theme="heist"] .gm-deed-band.gm-g-cash { --gm-deed: #7bd66a; } [data-theme="heist"] .gm-deed-band.gm-g-invest { --gm-deed: #f5c342; }
  [data-theme="heist"] .gm-boss { background: linear-gradient(180deg, rgba(229,72,77,.08), transparent 60%); border-top: 2px solid #fff; }
  [data-theme="heist"] .gm-boss-k { color: var(--orange); font: 500 10.5px/1 "Oswald", sans-serif; letter-spacing: .22em; }
  [data-theme="heist"] .gm-boss-who { font: 400 20px/1.05 "Anton", sans-serif; letter-spacing: .04em; color: #fff; }
  [data-theme="heist"] .gm-boss-hp { margin-top: 12px; }
  [data-theme="heist"] .gm-hp { height: 7px; border-radius: 0; background: rgba(255,255,255,.12); box-shadow: 0 0 0 1px rgba(0,0,0,.8); }
  [data-theme="heist"] .gm-hp i { border-radius: 0; background: linear-gradient(180deg, #ff6b6f, #c42a2f); box-shadow: 0 0 8px rgba(229,72,77,.55); }
  [data-theme="heist"] .gm-hp-n { font: 500 11px "Oswald", sans-serif; letter-spacing: .16em; color: #fff; }
  [data-theme="heist"] .gm-boss-l { font: 500 11px/1.5 "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #b8b8bc; }
  [data-theme="heist"] .gm-boss-l b { font: 400 14px "Anton", sans-serif; letter-spacing: .03em; color: #8ee08a; }
  [data-theme="heist"] .gm-cleared .gm-boss-who { text-decoration: line-through 3px #e5484d; }
  [data-theme="heist"] .gm-boss-st { color: #f5c342; font: 500 10px/1 "Oswald", sans-serif; letter-spacing: .18em; }
  [data-theme="heist"] .gm-boss-clear { border: 0; border-radius: 0; background: rgba(0,0,0,.6); }
  [data-theme="heist"] .gm-boss-clear b { font: 400 26px/1 "Anton", sans-serif; letter-spacing: .04em; color: #f5c342; -webkit-text-stroke: 1px #000; }
  [data-theme="heist"] .gm-boss-clear b::before { content: none; }
  [data-theme="heist"] .gm-boss-tot .gm-hp { height: 6px; border-radius: 0; }
  [data-theme="heist"] .gm-boss-tot .gm-hp i { border-radius: 0; }
  [data-theme="heist"] .gm-boss-tl { font: 500 10.5px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #b8b8bc; }
  /* the loading-screen card */
  [data-theme="heist"] .fx-wb { gap: 24px; padding: 20px 30px 18px; border: 0; border-top: 2px solid #fff; border-radius: 0; background: rgba(0,0,0,.92); box-shadow: 0 20px 50px rgba(0,0,0,.7); animation-name: fx-heist-in; }
  [data-theme="heist"] .fx-wb-title { font: 400 44px/1 "Anton", sans-serif; letter-spacing: .04em; color: #fff; text-shadow: 0 3px 0 #000; }
  [data-theme="heist"] .fx-wb-title::after { content: ""; display: block; width: 90px; height: 3px; margin: 10px 0 8px; background: var(--orange); }
  [data-theme="heist"] .fx-wb-sub { font: 500 13px/1.3 "Oswald", sans-serif; letter-spacing: .22em; text-transform: uppercase; color: #8ee08a; }
  [data-theme="heist"] .fx-wb-amt { display: none; }
  [data-theme="heist"] .fx-wb-line, [data-theme="heist"] .fx-wb-list { font: 500 11px/1.5 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #b8b8bc; }

  /* ---------- arcade: neon gates with five shards; a boss with a pixel skull; CONTINUE? ---------- */
  [data-theme="arcade"] .gm-lot { border-color: rgba(124,242,255,.25); border-radius: 3px; background: rgba(7,8,15,.7); }
  [data-theme="arcade"] .gm-lot.on { border-color: var(--hud); box-shadow: 0 0 14px rgba(124,242,255,.35); }
  [data-theme="arcade"] .gm-lot-nm { font-family: "Chakra Petch", sans-serif; letter-spacing: .04em; }
  [data-theme="arcade"] .gm-lot-st { font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--hud); }
  [data-theme="arcade"] .gm-lot-v { color: var(--pos); font-family: "Chakra Petch", sans-serif; }
  [data-theme="arcade"] .gm-lm :is(.lm-p, .lm-scaf line) { fill: none; stroke: var(--hud); stroke-width: 1.3; filter: drop-shadow(0 0 2px rgba(124,242,255,.9)); }
  [data-theme="arcade"] .gm-lm .lm-roof, [data-theme="arcade"] .gm-lm .lm-flag { stroke: var(--accent); filter: drop-shadow(0 0 2px rgba(179,136,255,.9)); }
  [data-theme="arcade"] .gm-lm .lm-win { stroke: #ffd166; filter: drop-shadow(0 0 2px rgba(255,209,102,.8)); }
  [data-theme="arcade"] .gm-lm .lm-win.lit { fill: rgba(255,209,102,.55); }
  [data-theme="arcade"] .gm-lm .lm-found { fill: rgba(124,242,255,.25); }
  [data-theme="arcade"] .gm-lm .lm-scaf line { stroke: rgba(124,242,255,.45); stroke-dasharray: 2 2; }
  [data-theme="arcade"] .gm-lm .lm-ghost * { stroke: rgba(179,136,255,.5); }
  [data-theme="arcade"] .gm-lm .lm-gline { stroke: rgba(124,242,255,.5); stroke-width: 1; }
  [data-theme="arcade"] .gm-lm .lm-shards path { fill: none; stroke: rgba(124,242,255,.45); stroke-width: 1; }
  [data-theme="arcade"] .gm-lm .lm-shards path.on { fill: var(--hud); stroke: #fff; filter: drop-shadow(0 0 3px var(--hud)); }
  [data-theme="arcade"] .gm-lm .lm-crown { filter: drop-shadow(0 0 5px rgba(255,209,102,.9)); }
  [data-theme="arcade"] .gm-lm .lm-sign rect { fill: #0d1020; stroke: var(--hud); }
  [data-theme="arcade"] .gm-lm .lm-sign line { stroke: var(--hud); }
  [data-theme="arcade"] .gm-lm .lm-sign text { font: 700 8px "Chakra Petch", sans-serif; fill: var(--hud); }
  [data-theme="arcade"] .gm-lm .lm-dust circle { fill: none; stroke: var(--hud); stroke-width: .8; }
  [data-theme="arcade"] .gm-sky { color: var(--hud); filter: drop-shadow(0 0 4px rgba(124,242,255,.8)); }
  [data-theme="arcade"] .gm-sky-t { font: 700 12px "Chakra Petch", sans-serif; letter-spacing: .14em; color: var(--hud); }
  [data-theme="arcade"] .gm-pips { gap: 4px; }
  [data-theme="arcade"] .gm-pips i { width: 7px; height: 7px; border-radius: 0; rotate: 45deg; background: transparent; box-shadow: inset 0 0 0 1px rgba(124,242,255,.45); }
  [data-theme="arcade"] .gm-pips i.on { background: var(--hud); box-shadow: 0 0 6px rgba(124,242,255,.9); }
  :root[data-theme="arcade"] :is(.dk-mg, .dk-insp) .stars.gm-stages { gap: 9px; padding-left: 4px; }
  :root[data-theme="arcade"] :is(.dk-mg, .dk-insp) .stars.gm-stages i { width: 13px; height: 13px; border-radius: 0; rotate: 45deg; background: transparent; box-shadow: inset 0 0 0 1.5px rgba(124,242,255,.45); }
  :root[data-theme="arcade"] :is(.dk-mg, .dk-insp) .stars.gm-stages i.on { background: var(--hud); box-shadow: 0 0 10px rgba(124,242,255,.9); }
  [data-theme="arcade"] .gm-deed-band.gm-g-cash { --gm-deed: var(--pos); } [data-theme="arcade"] .gm-deed-band.gm-g-invest { --gm-deed: #ffd166; } [data-theme="arcade"] .gm-deed-band.gm-g-property { --gm-deed: var(--accent); }
  [data-theme="arcade"] .gm-boss-k { color: #ff5c7a; font-family: "Chakra Petch", sans-serif; letter-spacing: .2em; text-shadow: 0 0 8px rgba(255,92,122,.7); }
  [data-theme="arcade"] .gm-boss-who { font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; text-transform: uppercase; }
  [data-theme="arcade"] .gm-skull { display: block; flex: none; width: 3px; height: 3px; margin: -6px 12px 6px -2px; color: #ff5c7a; background: currentColor; filter: drop-shadow(0 0 3px rgba(255,92,122,.9));
    box-shadow: 3px 0, 6px 0, 9px 0, -3px 3px, 0 3px, 3px 3px, 6px 3px, 9px 3px, 12px 3px, -3px 6px, 3px 6px 0 transparent, 6px 6px, 12px 6px, 0 6px 0 transparent, 9px 6px 0 transparent, -3px 9px, 0 9px, 3px 9px, 6px 9px, 9px 9px, 12px 9px, 0 12px, 6px 12px, 9px 12px 0 transparent, 3px 12px 0 transparent, 0 15px, 3px 15px, 6px 15px, 9px 15px; }
  [data-theme="arcade"] .gm-hp { height: 12px; border-radius: 2px; background: rgba(255,92,122,.08); box-shadow: inset 0 0 0 1px rgba(255,92,122,.6); }
  [data-theme="arcade"] .gm-hp i { border-radius: 1px; background: repeating-linear-gradient(90deg, #ff5c7a 0 7px, #c9304e 7px 8px); box-shadow: 0 0 10px rgba(255,92,122,.7); }
  [data-theme="arcade"] .gm-hp-n { font: 700 12px "Chakra Petch", sans-serif; letter-spacing: .1em; color: #ff5c7a; }
  [data-theme="arcade"] .gm-boss-l b { color: var(--pos); font-family: "Chakra Petch", sans-serif; }
  [data-theme="arcade"] .gm-boss-st, [data-theme="arcade"] .gm-boss-clear b { color: var(--hud); font-family: "Chakra Petch", sans-serif; letter-spacing: .16em; text-shadow: 0 0 10px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-boss-clear { border-color: rgba(124,242,255,.4); background: rgba(124,242,255,.06); border-radius: 3px; }
  [data-theme="arcade"] .gm-boss-tot .gm-hp { height: 8px; }
  [data-theme="arcade"] .fx-wb { border: 1px solid var(--hud); border-radius: 4px; background: rgba(7,8,15,.96); box-shadow: 0 0 0 1px rgba(124,242,255,.2), 0 0 40px rgba(124,242,255,.3), inset 0 0 30px rgba(124,242,255,.1); }
  [data-theme="arcade"] .fx-wb::before { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(180deg, rgba(255,255,255,.035) 0 1px, transparent 1px 3px); pointer-events: none; }
  [data-theme="arcade"] .fx-wb-scan { position: absolute; left: 0; right: 0; top: 0; height: 2px; background: var(--hud); box-shadow: 0 0 12px var(--hud); opacity: .7; animation: fx-scan 1.6s linear infinite; }
  @keyframes fx-scan { from { top: 0; } to { top: 100%; } }
  [data-theme="arcade"] .fx-wb-title { font: 700 32px/1 "Chakra Petch", sans-serif; letter-spacing: .16em; color: var(--hud); text-shadow: 0 0 16px rgba(124,242,255,.9); animation: gm-blink 1s steps(1, end) 3; }
  [data-theme="arcade"] .fx-wb-sub { margin-top: 6px; font: 700 14px "Chakra Petch", sans-serif; letter-spacing: .14em; color: #fff; }
  [data-theme="arcade"] .fx-wb-amt { font: 700 26px "Chakra Petch", sans-serif; color: var(--pos); text-shadow: 0 0 12px rgba(46,230,166,.7); }
  [data-theme="arcade"] .fx-wb-line, [data-theme="arcade"] .fx-wb-list { font-family: "Chakra Petch", sans-serif; letter-spacing: .04em; }

  /* ---------- comic: a panel drawn in stages; villain cards with a POW per hit; Previously, on Wall Street... ---------- */
  [data-theme="comic"] .gm-lot { border: 0; background: none; padding: 0 0 6px; }
  [data-theme="comic"] .gm-lot.on .gm-lm svg { filter: drop-shadow(4px 4px 0 var(--accent)); }
  [data-theme="comic"] .gm-lot-nm { font: 400 17px/1.1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-lot-st { font-weight: 800; color: #333; }
  [data-theme="comic"] .gm-lot-st b { color: var(--accent-text); }
  [data-theme="comic"] .gm-lot-v { color: #333; font-weight: 700; }
  [data-theme="comic"] .gm-lm .lm-panel { fill: #fff; stroke: #111; stroke-width: 3; }
  [data-theme="comic"] .gm-lm .lm-dots { fill: #eaf6ff; }
  [data-theme="comic"] .gm-lm .lm-gline { stroke: #111; stroke-width: 2.2; }
  [data-theme="comic"] .gm-lm .lm-tbc { font: 400 9.5px "Bangers", sans-serif; letter-spacing: .08em; fill: #9a9a9a; }
  [data-theme="comic"] .gm-lm .lm-sign rect { fill: #fff; stroke: #111; stroke-width: 1.8; }
  [data-theme="comic"] .gm-lm .lm-sign line { stroke: #111; }
  [data-theme="comic"] .gm-lm .lm-sign text { font: 400 9px "Bangers", sans-serif; fill: #111; }
  /* 1 pencil, 2 ink, 3 colour, 4 lettering, 5 POW */
  [data-theme="comic"] .gm-st1 .lm-p { fill: none; stroke: #a0a0a0; stroke-width: .9; stroke-dasharray: 2.5 1.5; }
  [data-theme="comic"] .gm-st2 .lm-p { fill: none; stroke: #111; stroke-width: 1.8; }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-p { stroke: #111; stroke-width: 1.8; }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-wall { fill: #7ad3ff; }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-roof, [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-flag { fill: var(--accent); }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-trim { fill: var(--pow); }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-win { fill: #fff; }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-win.lit { fill: var(--pow); }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-door { fill: #ff9ecf; }
  [data-theme="comic"] :is(.gm-st3, .gm-st4, .gm-st5) .lm-found { fill: #c9c1a4; }
  [data-theme="comic"] .gm-lm .lm-capbox rect { fill: var(--pow); stroke: #111; stroke-width: 1.6; }
  [data-theme="comic"] .gm-lm .lm-capbox text { font: 400 7.6px "Bangers", sans-serif; letter-spacing: .06em; fill: #111; }
  [data-theme="comic"] .gm-lm .lm-pow polygon { fill: var(--pow); stroke: #111; stroke-width: 1.6; }
  [data-theme="comic"] .gm-lm .lm-pow text { font: 400 8.5px "Bangers", sans-serif; letter-spacing: .04em; fill: var(--accent); }
  [data-theme="comic"] .gm-lm .lm-dust circle { fill: #fff; stroke: #111; stroke-width: 1; }
  [data-theme="comic"] .gm-sky { color: #111; }
  [data-theme="comic"] .gm-sky-t { font: 400 18px "Bangers", sans-serif; letter-spacing: .05em; color: var(--accent-text); }
  [data-theme="comic"] .gm-pips i { width: 9px; height: 9px; border-radius: 2px; border: 1.5px solid #111; background: #fff; }
  [data-theme="comic"] .gm-pips i.on { background: var(--pow); }
  :root[data-theme="comic"] :is(.dk-mg, .dk-insp) .stars.gm-stages i { width: 22px; height: 22px; border-radius: 0; clip-path: var(--gm-star); background: #e8e1c8; }
  :root[data-theme="comic"] :is(.dk-mg, .dk-insp) .stars.gm-stages i.on { background: var(--pow); filter: drop-shadow(1.5px 1.5px 0 #111); }
  [data-theme="comic"] .gm-deed-band { margin: -18px -20px 14px; border-bottom: 3px solid #111; font: 400 14px/1.1 "Bangers", sans-serif; letter-spacing: .08em; color: #111; }
  [data-theme="comic"] .gm-deed-band.gm-g-cash { --gm-deed: #b3f0a1; } [data-theme="comic"] .gm-deed-band.gm-g-invest { --gm-deed: var(--pow); } [data-theme="comic"] .gm-deed-band.gm-g-property { --gm-deed: #ffb347; }
  [data-theme="comic"] .gm-boss { margin: 12px 14px 4px; padding-top: 12px; border: 3px solid #111; border-radius: 14px; background: radial-gradient(rgba(255,59,107,.15) 1.2px, transparent 1.5px) 0 0 / 7px 7px, #fff; box-shadow: 4px 4px 0 #111; }
  [data-theme="comic"] .gm-boss-k { padding: 3px 8px 2px; border: 2px solid #111; background: var(--accent); color: #fff; font: 400 13px/1 "Bangers", sans-serif; letter-spacing: .08em; rotate: -3deg; }
  [data-theme="comic"] .gm-boss-who { font: 400 20px/1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-hp { height: 14px; border: 2.5px solid #111; background: #fff; }
  [data-theme="comic"] .gm-hp i { border-radius: 0; background: radial-gradient(rgba(17,17,17,.3) 1px, transparent 1.3px) 0 0 / 4px 4px, var(--accent); }
  [data-theme="comic"] .gm-hp-n { font: 400 17px "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-pow { display: inline-block; flex: none; padding: 1px 6px; border: 1.5px solid #111; background: var(--pow); font: 400 12px/1.2 "Bangers", sans-serif; letter-spacing: .05em; color: #111; rotate: -6deg; }
  [data-theme="comic"] .gm-boss-st, [data-theme="comic"] .gm-boss-clear b { font: 400 20px/1 "Bangers", sans-serif; letter-spacing: .05em; color: var(--accent-text); }
  [data-theme="comic"] .gm-boss-clear { border: 2.5px solid #111; border-radius: 10px; background: var(--pow); }
  [data-theme="comic"] .gm-boss-clear span { color: #111; }
  [data-theme="comic"] .gm-boss-tot .gm-hp { height: 12px; border-width: 2px; }
  [data-theme="comic"] .panel-head .gm-boss-tl { font-weight: 800; color: #111; }
  [data-theme="comic"] .fx-wb { gap: 16px; padding: 16px 24px 16px 20px; border: 3px solid #111; border-radius: 0; background: var(--pow); box-shadow: 6px 6px 0 #111; color: #111; rotate: -1deg; animation: fx-slam .42s cubic-bezier(.3, 1.6, .5, 1) both; }
  [data-theme="comic"] .fx-wb-title { font: italic 400 24px/1.1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .fx-wb-amt { font: 400 34px/1 "Bangers", sans-serif; letter-spacing: .04em; color: #fff; -webkit-text-stroke: 1.5px #111; text-shadow: 3px 3px 0 #111; }
  [data-theme="comic"] .fx-wb-line, [data-theme="comic"] .fx-wb-list { color: #111; font-weight: 800; }

  /* ---------- casino: chip stacks rising on felt; the house marker, torn up at $0; a seat back at the table ---------- */
  [data-theme="casino"] .gm-lot { border-color: rgba(212,175,55,.3); background: #141316; }
  [data-theme="casino"] .gm-lot.on { border-color: var(--gold); box-shadow: 0 0 16px rgba(212,175,55,.35); }
  [data-theme="casino"] .gm-lot-nm { font: 400 17px/1.1 "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="casino"] .gm-lot-st { font: 400 13px/1.2 "Bebas Neue", sans-serif; letter-spacing: .1em; color: var(--accent-text); }
  [data-theme="casino"] .gm-lm .lm-felt { fill: #16573a; stroke: var(--gold); stroke-width: 1.2; }
  [data-theme="casino"] .gm-lm .lm-etch * { fill: none; stroke: rgba(240,210,117,.3); stroke-width: 1; filter: none; }
  [data-theme="casino"] .gm-lm .lm-etch .lm-flag, [data-theme="casino"] .gm-lm .lm-etch .lm-pole { display: none; }
  [data-theme="casino"] .gm-lm .lm-chip rect { fill: var(--c); stroke: rgba(0,0,0,.5); stroke-width: .5; }
  [data-theme="casino"] .gm-lm .lm-chip ellipse { fill: var(--c); stroke: rgba(255,255,255,.75); stroke-width: .9; stroke-dasharray: 2 2.3; }
  [data-theme="casino"] .gm-lm .lm-spot { fill: rgba(0,0,0,.18); stroke: rgba(212,175,55,.35); stroke-width: .8; stroke-dasharray: 2 2; }
  [data-theme="casino"] .gm-lm .lm-gem { filter: drop-shadow(0 0 6px rgba(120,220,255,.8)); }
  [data-theme="casino"] .gm-lm .lm-dust circle { fill: rgba(240,210,117,.6); }
  [data-theme="casino"] .gm-sky { color: var(--gold); }
  [data-theme="casino"] .gm-sky-t { font: 400 17px "Bebas Neue", sans-serif; letter-spacing: .12em; color: var(--accent-text); }
  [data-theme="casino"] .gm-pips { gap: 3px; }
  [data-theme="casino"] .gm-pips i { width: 9px; height: 9px; border-radius: 50%; background: #2a2830; border: 1px dashed rgba(255,255,255,.3); }
  [data-theme="casino"] .gm-pips i.on { background: var(--gold); border-color: #fff; }
  :root[data-theme="casino"] :is(.dk-mg, .dk-insp) .stars.gm-stages i { width: 20px; height: 20px; border-radius: 50%; background: #2a2830; box-shadow: inset 0 0 0 2px rgba(255,255,255,.2); }
  :root[data-theme="casino"] :is(.dk-mg, .dk-insp) .stars.gm-stages i.on { background: radial-gradient(circle, var(--gold) 0 38%, #fff 39% 46%, var(--gold) 47%); box-shadow: 0 0 8px rgba(212,175,55,.6); }
  [data-theme="casino"] .gm-deed-band.gm-g-cash { --gm-deed: #3fd68c; } [data-theme="casino"] .gm-deed-band.gm-g-invest { --gm-deed: var(--gold); } [data-theme="casino"] .gm-deed-band.gm-g-property { --gm-deed: #a86b3c; }
  [data-theme="casino"] .gm-boss { margin: 12px 14px 4px; padding-top: 12px; border: 1.5px dashed #8a7a55; border-radius: 4px; background: linear-gradient(180deg, #f7f1e1, #ece3cb); color: #1b1b1b; }
  [data-theme="casino"] .gm-boss-k { color: #8a1a26; font: 400 13px/1 "Bebas Neue", sans-serif; letter-spacing: .18em; }
  [data-theme="casino"] .gm-boss-who { color: #1b1b1b; font: 400 18px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; }
  [data-theme="casino"] .gm-hp { background: #d8cfb8; height: 9px; }
  [data-theme="casino"] .gm-hp i { background: linear-gradient(180deg, #e0455a, #8a1a26); }
  [data-theme="casino"] .gm-hp-n { font: 400 16px "Bebas Neue", sans-serif; letter-spacing: .08em; color: #8a1a26; }
  [data-theme="casino"] .gm-boss-l { color: #555; }
  [data-theme="casino"] .gm-boss-l b { color: #1b1b1b; }
  [data-theme="casino"] .gm-boss .label, [data-theme="casino"] .gm-boss .dk-mini li { color: #555; }
  [data-theme="casino"] .gm-boss .dk-mini .num.pos { color: #1f8a4c; }
  [data-theme="casino"] .gm-boss .muted { color: #7a7060; }
  [data-theme="casino"] .gm-cleared { clip-path: polygon(0 0, 100% 0, 100% 86%, 94% 92%, 88% 86%, 80% 94%, 72% 87%, 63% 95%, 55% 88%, 46% 96%, 38% 88%, 29% 95%, 21% 87%, 12% 94%, 5% 88%, 0 93%); rotate: -1.2deg; }
  [data-theme="casino"] .gm-boss-st, [data-theme="casino"] .gm-boss-clear b { color: #1f8a4c; font: 400 20px/1 "Bebas Neue", sans-serif; letter-spacing: .16em; }
  [data-theme="casino"] .gm-boss-clear { border: 2px solid #1f8a4c; border-radius: 3px; background: rgba(31,138,76,.08); rotate: -3deg; }
  [data-theme="casino"] .gm-boss-clear span { color: #555; }
  [data-theme="casino"] .gm-boss-tot .gm-hp { background: #0b0b0d; box-shadow: 0 0 0 1px rgba(212,175,55,.5); }
  [data-theme="casino"] .gm-boss-tl { font: 400 14px "Bebas Neue", sans-serif; letter-spacing: .1em; color: var(--accent-text); }
  [data-theme="casino"] .fx-wb { gap: 18px; padding: 14px 26px 14px 16px; border: 2px solid var(--gold); border-radius: 14px; background: linear-gradient(180deg, #2c0d13, #170a0d); box-shadow: inset 0 0 0 5px #170a0d, inset 0 0 0 6px rgba(212,175,55,.45), 0 0 40px rgba(212,175,55,.25), 0 18px 40px rgba(0,0,0,.6); }
  [data-theme="casino"] .fx-wb-art { width: 70px; height: 70px; background: url(art/casino-chips.png) center / contain no-repeat; filter: drop-shadow(0 4px 6px rgba(0,0,0,.6)); }
  [data-theme="casino"] .fx-wb-title { font: 400 30px/1 "Bebas Neue", sans-serif; letter-spacing: .1em; background: linear-gradient(180deg, #fff3b0, #f0d275 45%, #b8902c); -webkit-background-clip: text; background-clip: text; color: transparent; }
  [data-theme="casino"] .fx-wb-amt { font: 400 32px/1 "Bebas Neue", sans-serif; letter-spacing: .06em; color: var(--pos); }
  [data-theme="casino"] .fx-wb-line, [data-theme="casino"] .fx-wb-list { color: #e6c25c; }

  /* ---------- passbook: savings-bond certificates stamped five times; a loan ledger page; balance brought forward ---------- */
  [data-theme="passbook"] .gm-lot { border: 0; background: none; padding: 0 0 6px; }
  [data-theme="passbook"] .gm-lot.on .gm-lm svg { filter: drop-shadow(3px 3px 0 rgba(179,52,46,.45)); }
  [data-theme="passbook"] .gm-lot-nm { font: italic 600 14px/1.2 "Fraunces", serif; }
  [data-theme="passbook"] .gm-lot-st, [data-theme="passbook"] .gm-lot-v { font-family: "Courier Prime", monospace; font-weight: 700; }
  [data-theme="passbook"] .gm-lot-st b { color: var(--stamp); }
  [data-theme="passbook"] .gm-lm .lm-cert { fill: #fbf7ef; stroke: var(--line-2); stroke-width: 1.2; filter: drop-shadow(2px 2px 0 rgba(30,42,68,.15)); }
  [data-theme="passbook"] .gm-lm .lm-cert-in { fill: none; stroke: var(--line-2); stroke-width: .5; stroke-dasharray: 1.5 1.5; }
  [data-theme="passbook"] .gm-lm .lm-guil { fill: none; stroke: rgba(30,42,68,.35); stroke-width: .6; }
  [data-theme="passbook"] .gm-lm .lm-cert-t { font: 700 6.5px "Courier Prime", monospace; letter-spacing: .24em; fill: var(--line-2); }
  [data-theme="passbook"] .gm-lm .lm-etch * { fill: none; stroke: var(--line-2); stroke-width: 1.1; }
  [data-theme="passbook"] .gm-lm .lm-etch .lm-win, [data-theme="passbook"] .gm-lm .lm-etch .lm-trim { stroke-width: .7; }
  [data-theme="passbook"] .gm-lm .lm-cert-g { stroke: var(--line-2); stroke-width: .8; }
  [data-theme="passbook"] .gm-lm .lm-stamps circle { fill: none; stroke: rgba(30,42,68,.28); stroke-width: 1; stroke-dasharray: 1.5 1.5; }
  [data-theme="passbook"] .gm-lm .lm-stamps .on circle { fill: rgba(179,52,46,.08); stroke: var(--stamp); stroke-width: 1.6; stroke-dasharray: none; }
  [data-theme="passbook"] .gm-lm .lm-stamps text { font: 700 7.5px "Courier Prime", monospace; fill: var(--stamp); }
  [data-theme="passbook"] .gm-lm .lm-matured rect { fill: rgba(179,52,46,.07); stroke: var(--stamp); stroke-width: 1.8; }
  [data-theme="passbook"] .gm-lm .lm-matured .lm-m2 { fill: none; stroke-width: .8; }
  [data-theme="passbook"] .gm-lm .lm-matured text { font: 700 11px "Courier Prime", monospace; letter-spacing: .22em; fill: var(--stamp); }
  [data-theme="passbook"] .gm-lm .lm-dust circle { fill: rgba(179,52,46,.3); }
  [data-theme="passbook"] .gm-sky { color: var(--line-2); }
  [data-theme="passbook"] .gm-sky-t { font: 700 12px "Courier Prime", monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--stamp); }
  [data-theme="passbook"] .gm-pips i { width: 8px; height: 8px; border-radius: 50%; background: none; box-shadow: inset 0 0 0 1px rgba(30,42,68,.35); }
  [data-theme="passbook"] .gm-pips i.on { background: var(--stamp); box-shadow: none; }
  :root[data-theme="passbook"] :is(.dk-mg, .dk-insp) .stars.gm-stages i { width: 18px; height: 18px; border-radius: 50%; background: none; box-shadow: inset 0 0 0 1.5px rgba(30,42,68,.3); }
  :root[data-theme="passbook"] :is(.dk-mg, .dk-insp) .stars.gm-stages i.on { background: var(--stamp) var(--gm-tick) center / 10px no-repeat; box-shadow: none; }
  [data-theme="passbook"] .gm-deed-band { font-family: "Courier Prime", monospace; letter-spacing: .2em; }
  [data-theme="passbook"] .gm-deed-band.gm-g-cash { --gm-deed: #2f7a4f; } [data-theme="passbook"] .gm-deed-band.gm-g-invest { --gm-deed: #a8844a; } [data-theme="passbook"] .gm-deed-band.gm-g-property { --gm-deed: #7a5230; }
  [data-theme="passbook"] .gm-boss { margin: 12px 14px 4px; padding-top: 12px; border: 1px solid var(--line-2); background: repeating-linear-gradient(180deg, transparent 0 21px, rgba(30,42,68,.08) 21px 22px), #fbf7ef; box-shadow: 3px 3px 0 rgba(30,42,68,.15); }
  [data-theme="passbook"] .gm-boss-k { color: var(--stamp); font-family: "Courier Prime", monospace; letter-spacing: .16em; }
  [data-theme="passbook"] .gm-boss-who { font: italic 600 15px "Fraunces", serif; }
  [data-theme="passbook"] .gm-hp { height: 4px; border-radius: 0; background: #cfc6b3; }
  [data-theme="passbook"] .gm-hp i { border-radius: 0; background: var(--line-2); }
  [data-theme="passbook"] .gm-hp-n { font: 700 13px "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-boss-l, [data-theme="passbook"] .gm-ledger { font-family: "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-ledger s { text-decoration-color: var(--stamp); }
  [data-theme="passbook"] .gm-boss-st { color: var(--stamp); font-family: "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-boss-clear { align-self: flex-start; margin-right: auto; border: 3px double var(--stamp); border-radius: 3px; background: none; rotate: -4deg; }
  [data-theme="passbook"] .gm-boss-clear b { font: 700 18px "Courier Prime", monospace; letter-spacing: .18em; color: var(--stamp); }
  [data-theme="passbook"] .gm-boss-clear b::before { content: none; }
  [data-theme="passbook"] .gm-boss-tot .gm-hp { height: 3px; background: rgba(251,247,239,.35); }
  [data-theme="passbook"] .gm-boss-tot .gm-hp i { background: #fbf7ef; }
  [data-theme="passbook"] .panel-head .gm-boss-tl { font-family: "Courier Prime", monospace; color: inherit; opacity: .85; }
  [data-theme="passbook"] .fx-wb { gap: 20px; padding: 14px 24px 14px 22px; border: 1px solid var(--line-2); border-radius: 3px; background: repeating-linear-gradient(180deg, transparent 0 21px, rgba(30,42,68,.08) 21px 22px), var(--bg-2); box-shadow: 5px 5px 0 rgba(30,42,68,.2), 0 16px 34px rgba(0,0,0,.18); rotate: -.5deg; }
  [data-theme="passbook"] .fx-wb-title { font: italic 600 22px/1.1 "Fraunces", serif; }
  [data-theme="passbook"] .fx-wb-sub { margin-top: 4px; font: 700 20px/1.2 "Courier Prime", monospace; color: var(--fg); }
  [data-theme="passbook"] .fx-wb-amt { display: none; }
  [data-theme="passbook"] .fx-wb-line, [data-theme="passbook"] .fx-wb-list { font-family: "Courier Prime", monospace; }
  [data-theme="passbook"] .fx-wb-date { order: 2; padding: 6px 10px; border: 3px double var(--stamp); border-radius: 4px; color: var(--stamp); font: 700 16px/1 "Courier Prime", monospace; letter-spacing: .14em; rotate: -8deg; opacity: .9; animation: gm-thunk .38s cubic-bezier(.4, 1.8, .5, 1) .25s both; }

  /* ---------- dark and paper: isometric blocks, a plain bar, a quiet tick ---------- */
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm :is(.lm-blk polygon, .lm-blk path) { fill: none; stroke: var(--fg-3); stroke-width: .8; stroke-dasharray: 2 2; opacity: .5; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-blk.on :is(polygon, path) { stroke: color-mix(in srgb, var(--accent) 45%, var(--bg)); stroke-width: .6; stroke-dasharray: none; opacity: 1; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-blk.on .lm-it { fill: color-mix(in srgb, var(--accent) 88%, #fff); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-blk.on .lm-il { fill: color-mix(in srgb, var(--accent) 72%, var(--bg)); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-blk.on .lm-ir { fill: color-mix(in srgb, var(--accent) 50%, var(--bg)); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-st5 .lm-blk.on .lm-it { fill: color-mix(in srgb, var(--pos) 80%, #fff); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-st5 .lm-blk.on .lm-il { fill: color-mix(in srgb, var(--pos) 70%, var(--bg)); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-st5 .lm-blk.on .lm-ir { fill: color-mix(in srgb, var(--pos) 48%, var(--bg)); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-shadow { fill: color-mix(in srgb, var(--fg) 7%, transparent); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-flagq line { stroke: var(--fg-2); stroke-width: 1.2; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-flagq path { fill: var(--pos); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm .lm-pct { font: 700 9px var(--mono); fill: var(--fg-2); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-sky { color: var(--accent); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-sky-t { font-size: 12px; font-weight: 700; color: var(--pos); letter-spacing: .02em; text-transform: none; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-pips i { width: 10px; height: 4px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-pips i.on { background: var(--accent); }
  :root:is([data-theme="dark"], [data-theme="light"]) :is(.dk-mg, .dk-insp) .stars.gm-stages i.on { background: var(--accent); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-lm-big .gm-lm { max-width: 220px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-hp { height: 6px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-hp i { background: var(--accent); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-boss-tot .gm-hp i { background: color-mix(in srgb, var(--neg) 80%, transparent); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-boss-clear { background: none; border-color: var(--line-2); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-boss-clear b { font-size: 14px; }

  /* ======================================================================
     game, round 1: what the first verification found. Desktop only, like everything in this block.
     ====================================================================== */

  /* ---------- 'not earned' is its own colour, so an empty star, dot, pip or bar never looks earned ---------- */
  :root { --gm-empty: var(--line-2); }
  :root[data-theme="casino"] { --gm-empty: rgba(255,255,255,.14); }
  :root[data-theme="passbook"] { --gm-empty: #d9ccb2; }
  .gm-stars i, .gm-star-g, .gm-tdots i, .gm-rc-stars i, .gm-pips i { background: var(--gm-empty); }
  .gm-tc-bar { background: var(--gm-empty); }
  :root:is([data-theme="casino"], [data-theme="passbook"]) :is(.dk-mg, .dk-insp) .stars.gm-stages i:not(.on),
  :root:is([data-theme="casino"], [data-theme="passbook"]) .gm-joblist .gm-job-bar { background: var(--gm-empty); }
  [data-theme="passbook"] .gm-why li.on .gm-star-g { background: var(--stamp); }
  [data-theme="passbook"] .gm-tc-bar { background: var(--gm-empty); }
  /* passbook seals: silver reads as silver, locked reads as empty */
  [data-theme="passbook"] .gm-medal.t2 { filter: grayscale(1) brightness(3.2) contrast(.85); }
  [data-theme="passbook"] .gm-medal.t3 { filter: sepia(1) saturate(3) brightness(2.3) hue-rotate(-8deg); }
  [data-theme="passbook"] .gm-medal.t4 { filter: grayscale(1) sepia(1) hue-rotate(160deg) saturate(2) brightness(3); }
  [data-theme="passbook"] .gm-medal.t0 { filter: grayscale(1) contrast(.35) brightness(1.7); opacity: .4; border-radius: 50%; outline: 1.5px dashed rgba(30,42,68,.35); outline-offset: 1px; }

  /* ---------- casino: the Q dialog's figures are light on the dark dialog (the cream cards keep dark ink) ---------- */
  [data-theme="casino"] .gm-joblist .gm-job-c { color: var(--fg-2); }
  [data-theme="casino"] .gm-joblist .gm-job-c .num { color: var(--accent-text); }

  /* ---------- only the job's title is crossed out, never its Done stamp ---------- */
  .gm-joblist .gm-job.done .gm-job-t { text-decoration: none; color: inherit; }
  .gm-joblist .gm-job.done .gm-job-tt { text-decoration: line-through; text-decoration-thickness: 1.5px; color: var(--fg-2); }
  /* what a job earns, on its progress line */
  .gm-job-rw { min-width: 0; margin-left: auto; padding-left: 10px; font-size: 11.5px; font-weight: 600; color: var(--accent-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-job-rw::before { content: "★ "; }
  [data-theme="tycoon"] .gm-job-rw { font: 400 12.5px "Lilita One", sans-serif; letter-spacing: .02em; color: #d81e1e; }
  [data-theme="heist"] .gm-job-rw { font: 500 10.5px "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #f5c342; }
  [data-theme="arcade"] .gm-job-rw { font-family: "Chakra Petch", sans-serif; letter-spacing: .06em; color: var(--pos); }
  [data-theme="comic"] .gm-job-rw { font: 700 12px "Fredoka", sans-serif; color: var(--accent-text); }
  [data-theme="casino"] .gm-job-rw { font: 400 13px "Bebas Neue", sans-serif; letter-spacing: .08em; color: var(--gold); }
  [data-theme="passbook"] .gm-job-rw { font: italic 600 12px "Fraunces", serif; color: var(--stamp); }

  /* ---------- the game's dialogs fit the window: a taller box, and Done always in view at the bottom ---------- */
  .modal:has(.gm-jobs-dlg) { top: 5vh; max-height: 90vh; }
  .gm-dlg .mactions { position: sticky; bottom: 0; z-index: 3; margin: 16px -24px -24px; padding: 12px 24px 20px; background: var(--bg-2); border-top: 1px solid var(--line); }
  [data-theme="casino"] .gm-dlg .mactions { background: #141316; border-top-color: rgba(212,175,55,.3); }
  [data-theme="heist"] .gm-dlg .mactions { background: #0c0c0e; border-top-color: rgba(255,255,255,.12); }
  [data-theme="comic"] .gm-dlg .mactions { background: #fff; border-top: 2px solid #111; }
  [data-theme="tycoon"] .gm-tro .mactions { background: #1d55b5; border-top-color: rgba(255,255,255,.3); }
  :root:is([data-theme="arcade"], [data-theme="casino"], [data-theme="comic"]) .gm-joblist .gm-job { min-height: 54px; padding-top: 7px; padding-bottom: 7px; }
  :root:is([data-theme="arcade"], [data-theme="casino"], [data-theme="comic"]) .gm-dlg-streaks { margin-bottom: 4px; }
  :root:is([data-theme="arcade"], [data-theme="casino"], [data-theme="comic"]) .gm-sl { margin-bottom: 10px; }
  :root:is([data-theme="arcade"], [data-theme="casino"], [data-theme="comic"]) .gm-sl li { padding: 1px 0; }

  /* ---------- the Quick Wins head: streak chips drop out whole when there is no room, never sliced ---------- */
  .gm-qw-head .gm-streaks { flex-wrap: wrap; justify-content: flex-end; align-content: flex-start; row-gap: 12px; height: 24px; padding: 1px 3px 1px 0; overflow: hidden; }
  :root:is([data-theme="tycoon"], [data-theme="comic"], [data-theme="casino"]) .gm-qw-head .gm-streaks { height: 28px; padding-bottom: 3px; }
  /* below 1400 each chip keeps one word, so the three are never bare numbers */
  .gm-sk-sh { display: none; }
  @media (max-width: 1399px) { .gm-qw-head .gm-sk-sh { display: inline; color: inherit; } }
  [data-theme="heist"] .gm-sk-sh, [data-theme="arcade"] .gm-sk-sh { text-transform: uppercase; }
  @media (max-width: 1599px) { [data-theme="casino"] .gm-qw-wk { display: none; } }
  @media (max-width: 1399px) { .gm-qw-head .label { flex-shrink: 0; } }   /* the name of the board never gives way to a chip */
  /* the week meter fills from the left */
  [data-theme="passbook"] .gm-qw-meter > i.on { background: #f3c3bd; }
  [data-theme="passbook"] .gm-sk .gm-sk-n { line-height: 1; vertical-align: baseline; }
  [data-theme="passbook"] .gm-sk { align-items: baseline; padding-top: 5px; }
  /* dark and paper: a week with every job done collapses to one quiet line */
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-qw-done .gm-qw-line { min-height: 0; padding-top: 11px; padding-bottom: 11px; }

  /* ---------- tycoon's Quick Wins cards: the button clears the progress bar ---------- */
  [data-theme="tycoon"] .gm-qw-body .gm-job { height: 56px; padding-bottom: 9px; }

  /* ---------- tycoon: the gold Seasons head keeps its hint readable ---------- */
  :root[data-theme="tycoon"] .panel.rib-gold .panel-head .dk-hint { color: var(--navy); }
  :root[data-theme="tycoon"] .panel.rib-gold .panel-head .dk-hint .dk-kbd { opacity: 1; border-color: rgba(27,42,74,.45); }

  /* ---------- tycoon: the debt head's HP bar is a boss's health, red with a heart, never a gold 'done' bar ---------- */
  [data-theme="tycoon"] .gm-boss-tot .gm-hp i { background: linear-gradient(180deg, #ff9b8a, #e5312f 55%, #b71515); box-shadow: inset 0 1.5px 0 rgba(255,255,255,.4), inset 0 -1px 0 #ffc531; }
  [data-theme="tycoon"] .gm-boss-tot::before { content: ""; flex: none; width: 16px; height: 15px; margin-right: -4px; background: #fff; clip-path: path("M8 15 1.3 8.2A4.2 4.2 0 0 1 8 2.9a4.2 4.2 0 0 1 6.7 5.3z"); filter: drop-shadow(0 1px 0 rgba(0,0,0,.3)); }

  /* ---------- tycoon: the sticker in the banner is the album's sticker ---------- */
  [data-theme="tycoon"] .fx-k-tro .fx-b-mark.fx-stk { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; width: 92px; height: 112px; rotate: -5deg; overflow: hidden;
    background: linear-gradient(160deg, #ffffff 0 40%, #fff1c4); }
  [data-theme="tycoon"] .fx-stk::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(125deg, rgba(255,255,255,.85) 0 16%, transparent 32%); pointer-events: none; }
  [data-theme="tycoon"] .fx-stk .gm-medal { width: 60px; height: 60px; border: 3px solid #fff; box-shadow: 0 0 0 3px var(--stk-rim, #ffc531), 0 4px 0 3px rgba(0,0,0,.22); }
  [data-theme="tycoon"] .fx-stk .gm-medal svg { width: 30px; height: 30px; }
  [data-theme="tycoon"] .fx-stk.t1 { --stk-rim: var(--gm-t1); } [data-theme="tycoon"] .fx-stk.t2 { --stk-rim: #8f9aa8; } [data-theme="tycoon"] .fx-stk.t3 { --stk-rim: #d9a321; } [data-theme="tycoon"] .fx-stk.t4 { --stk-rim: #3fb3c4; }
  [data-theme="tycoon"] .fx-k-tro .fx-b-mark.fx-stk b.fx-stk-stars { font-size: 15px; line-height: 1; letter-spacing: 1px; color: #ffb800; text-shadow: 0 1.5px 0 #b07a00; }

  /* ---------- tycoon: the chart's level lanes are board lines (navy dots, gold tags); red stays for GO! ---------- */
  [data-theme="tycoon"] .gm-lane line { display: inline; stroke: var(--navy); stroke-width: 1.5; stroke-dasharray: 2 5; opacity: .4; }
  [data-theme="tycoon"] .gm-lane .gm-band { display: none; }
  [data-theme="tycoon"] .gm-lane .gm-lane-tag .gm-tag-bg { fill: #ffc531; stroke: #fff; stroke-width: 1.5; }
  [data-theme="tycoon"] .gm-lane .gm-lane-tag text { fill: var(--navy); }
  /* one GO on the hero: the phone's GO! before the change line stays on the phone */
  :root[data-theme="tycoon"] .dk-hero .hero-delta .pos::before { content: none; display: none; }

  /* ---------- tycoon's board: bigger spaces at 1400 and up, and the hat hops ---------- */
  @media (min-width: 1400px) {
    [data-theme="tycoon"] .gm-spaces { flex-basis: 330px; max-width: 400px; height: 38px; gap: 4px; }
    [data-theme="tycoon"] .gm-sp { border-radius: 6px; box-shadow: inset 0 7px 0 var(--gm-band), 0 2px 0 rgba(0,0,0,.28); }
    [data-theme="tycoon"] .gm-sp.cur { box-shadow: inset 0 7px 0 var(--gm-band), 0 0 0 2px #ffc531, 0 2px 0 3px rgba(0,0,0,.2); }
    [data-theme="tycoon"] .gm-sp.own::after { width: 13px; height: 13px; margin-left: -6.5px; bottom: 6px; }
    [data-theme="tycoon"] .gm-tok { width: 32px; height: 32px; margin-left: -16px; bottom: 8px; }
    [data-theme="tycoon"] .gm-cap { height: 38px; }
  }
  .gm-tok.gm-hop { animation: gm-hop .22s cubic-bezier(.3, .7, .4, 1); }
  @keyframes gm-hop { 45% { translate: 0 -12px; scale: 1.1; } 100% { translate: 0 0; scale: 1; } }
  .gm-cap.gm-go-flash { animation: gm-go-flash .9s ease-out; }
  @keyframes gm-go-flash { 0%, 100% { filter: none; scale: 1; } 25% { filter: brightness(1.35) drop-shadow(0 0 10px #ffd54a); scale: 1.12; } 55% { filter: brightness(1.2) drop-shadow(0 0 6px #ffd54a); scale: 1; } }
  /* the rail's XP bar: a level crossed fills to the top, flashes, then rolls over */
  .gm-xpcap { transition: opacity .18s; }
  .gm-xpcap.gm-xp-hold { opacity: 0; }
  .gm-xpbar.gm-xp-flash { animation: gm-xp-flash .55s ease-out; }
  @keyframes gm-xp-flash { 30% { filter: brightness(1.6) drop-shadow(0 0 8px #ffd54a); } }
  .gm-badge.gm-xp-pop { animation: gm-xp-pop .45s cubic-bezier(.3, 1.6, .5, 1); }
  @keyframes gm-xp-pop { 40% { scale: 1.35; } }

  /* ---------- the 30-day strip: tycoon's hat waits at the start of the board, off the bars ---------- */
  [data-theme="tycoon"] .gm-cf-hat { left: -11px; top: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; }

  /* ---------- the rail: the album count is a collection (gold), and the next sticker to earn has its own tile ---------- */
  .gm-tro-cnt { padding: 0 3px; background: #f2b632; color: #1a1400; }
  [data-theme="tycoon"] .gm-tro-cnt { background: linear-gradient(#ffe98f, #ffb800); color: var(--navy); font-size: 9.5px; }
  @media (min-width: 1200px) { .side-foot:not(:has(.gm-tro-btn)) .gm-snd-btn { margin-left: 36px; } [data-theme="tycoon"] .side-foot:not(:has(.gm-tro-btn)) .gm-snd-btn { margin-left: 38px; } }
  .dk-tick.gm-next { display: none; width: 100%; padding-top: 9px; padding-bottom: 8px; font: inherit; text-align: left; cursor: pointer; }
  @media (min-width: 1200px) and (min-height: 860px) { .dk-tick.gm-next { display: flex; } }
  @media (max-width: 1399px) { .gm-next-t { display: none; } }
  [data-theme="tycoon"] .dk-tick.gm-next::before { background-image: url(art/trophy.png); }
  [data-theme="tycoon"] .gm-next .gm-medal { display: none; }
  .gm-next-t { font: 700 10px/1 var(--font); letter-spacing: .06em; text-transform: uppercase; color: var(--accent-text); white-space: nowrap; }
  .gm-next-row { display: flex; align-items: center; gap: 7px; min-width: 0; margin-top: 1px; }
  .gm-next .gm-medal { width: 22px; height: 22px; }
  .gm-next .gm-medal svg { width: 12px; height: 12px; }
  .gm-next-nm { min-width: 0; font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-next-bar { display: block; height: 4px; margin: 4px 0 2px; border-radius: 2px; background: var(--gm-empty); overflow: hidden; }
  .gm-next-bar i { display: block; height: 100%; border-radius: inherit; background: var(--pos); }
  .gm-next-p { font-size: 11px; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  [data-theme="tycoon"] .gm-next .gm-medal { border-width: 1.5px; box-shadow: none; }
  [data-theme="tycoon"] .gm-next-nm { font: 400 15px "Lilita One", sans-serif; letter-spacing: .02em; color: #fff; }
  [data-theme="tycoon"] .gm-next-t { font: 400 11px "Lilita One", sans-serif; color: #ffd54a; }
  [data-theme="tycoon"] .gm-next-bar { height: 7px; border: 1.5px solid #0b1b3d; background: #0b1b3d; }
  [data-theme="tycoon"] .gm-next-bar i { background: linear-gradient(180deg, #8df58d, #23a83b); }
  [data-theme="tycoon"] .gm-next-p { color: #cfe3ff; font-weight: 700; }
  [data-theme="heist"] .gm-next-nm { font: 500 13px "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; }
  [data-theme="heist"] .gm-next-t { font: 500 10px "Oswald", sans-serif; letter-spacing: .16em; color: #f5c342; }
  [data-theme="heist"] .gm-next-bar { border-radius: 0; background: rgba(255,255,255,.14); }
  [data-theme="heist"] .gm-next-bar i { background: #5aa0e6; }
  [data-theme="arcade"] .gm-next-nm { font-family: "Chakra Petch", sans-serif; letter-spacing: .04em; }
  [data-theme="arcade"] .gm-next-t { font-family: "Chakra Petch", sans-serif; color: var(--hud); }
  [data-theme="arcade"] .gm-next-bar i { background: linear-gradient(90deg, var(--hud), var(--accent)); box-shadow: 0 0 6px rgba(124,242,255,.5); }
  [data-theme="comic"] .gm-next-nm { font: 400 16px "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="comic"] .gm-next-bar { height: 7px; border: 2px solid #111; background: #fff; }
  [data-theme="casino"] .gm-next-nm { font: 400 17px "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="casino"] .gm-next-t { font: 400 12px "Bebas Neue", sans-serif; letter-spacing: .12em; color: var(--gold); }
  [data-theme="casino"] .gm-next-bar i { background: linear-gradient(90deg, #b8902c, #f0d275); }
  [data-theme="passbook"] .gm-next-nm { font: italic 600 14px "Fraunces", serif; }
  [data-theme="passbook"] .gm-next-t { font: 700 10px "Courier Prime", monospace; color: var(--stamp); }
  [data-theme="passbook"] .gm-next-bar { height: 3px; border-radius: 0; }
  [data-theme="passbook"] .gm-next-bar i { background: var(--line-2); border-radius: 0; }
  [data-theme="passbook"] .gm-next .gm-medal { width: 24px; height: 24px; }

  /* ---------- the rail's highlight squashes as it slides, so it never sits on the labels it passes ---------- */
  .dk-nav-ghost { animation: dk-ghost-squash .18s cubic-bezier(.3, .7, .3, 1); transform-origin: 50% 50%; }
  @keyframes dk-ghost-squash { 50% { scale: 1 .32; opacity: .85; } }

  /* ---------- the Overview's right column reaches the bottom of the chart: its last panel takes the room ---------- */
  .dk-ov > .dk-ov-side { align-self: stretch; }
  .dk-ov-side > .panel:last-child { flex: 1 1 auto; }
  .dk-ov-side > .dk-mg:last-child { display: flex; flex-direction: column; }
  .dk-ov-side > .dk-mg:last-child .dk-mg-body { flex: 1 1 auto; display: flex; flex-direction: column; }
  .dk-ov-side > .dk-mg:last-child .dk-mg-foot { margin-top: auto; }
  /* 1600 and up: the hero's stats sit in the middle of their column */
  @media (min-width: 1600px) { .dk-hero-stats { align-content: center; } }

  /* ---------- the Overview board keeps whole names below 1400: the freshness dot waits for the room ---------- */
  @media (max-width: 1399px) { .dk-o-accts .acct-row .gm-pip { display: none; } }

  /* ---------- the lots: names on up to two lines, the stage line always inside its lot, and the row spread at 1600 and up ---------- */
  .gm-lot-st { overflow: hidden; text-overflow: ellipsis; }
  .gm-lots:not(.gm-lots-tycoon) .gm-lot-nm { white-space: normal; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; min-height: 2.5em; overflow-wrap: anywhere; }
  [data-theme="casino"] .gm-lot-st { letter-spacing: .05em; }
  @media (min-width: 1600px) {
    .gm-lots { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 210px)); justify-content: space-between; }
    .gm-lots .gm-lot { width: auto; }
    [data-theme="tycoon"] .gm-lots-tycoon { grid-template-columns: repeat(auto-fit, minmax(160px, 220px)); }
    [data-theme="tycoon"] .gm-lots-tycoon .gm-lot { width: auto; }
    [data-theme="tycoon"] .gm-lots-tycoon .gm-lm svg { display: block; margin: 0 auto; }
  }

  /* ---------- heist: the stage pips are gold marks (green once funded), not a second progress bar ---------- */
  [data-theme="heist"] .gm-pips i { width: 6px; height: 6px; background: rgba(255,255,255,.14); }
  [data-theme="heist"] .gm-pips i.on { background: #f5c342; box-shadow: 0 0 4px rgba(245,195,66,.6); }
  [data-theme="heist"] .gm-pips.full i { background: #8ee08a; box-shadow: none; }

  /* ---------- heist: the banner's head and sub sit side by side, centred as a pair under the title ---------- */
  [data-theme="heist"] .fx-b-text { grid-template-columns: 1fr auto auto 1fr; justify-items: stretch; }
  [data-theme="heist"] .fx-b-head { grid-column: 2; justify-self: end; }
  [data-theme="heist"] .fx-b-sub { grid-column: 3; justify-self: start; }
  [data-theme="heist"] .fx-b-title { justify-self: center; }
  [data-theme="heist"] .fx-k-tro .fx-b-head, [data-theme="heist"] .fx-k-tro .fx-b-sub { grid-column: 1 / -1; justify-self: center; }

  /* ---------- casino: the settled marker's torn edge sits under the text, not through it ---------- */
  [data-theme="casino"] .gm-boss.gm-cleared { padding-bottom: 24px; }

  /* ---------- passbook: the late chip is legible on the navy head; in the rail it stays flat and small ---------- */
  [data-theme="passbook"] .panel-head .gm-late { background: var(--bg-2); border-color: var(--stamp); color: var(--stamp); }
  [data-theme="passbook"] .dk-tick .gm-late { transform: none; padding: 0 5px; }
  [data-theme="passbook"] .dk-tick .gm-sk { padding: 0 4px; }
  /* passbook: the pencilled 'unposted' note sits on the sub line, so a name never wraps */
  [data-theme="passbook"] .gm-nm .gm-age { display: none; }
  .gm-age-in { display: none; }
  [data-theme="passbook"] .gm-age-in { display: inline; }
  [data-theme="passbook"] .gm-age-in .gm-age { height: 14px; margin: 0 8px 0 0; transform: rotate(-2deg); vertical-align: 0; }
  [data-theme="passbook"] .dk-tbl .dk-c-main .dk-rsub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  /* passbook: the ruler stays inside the table */
  [data-theme="passbook"] .dk-cursor::after { left: 0; right: 0; }
  /* passbook: coins are red ink seals with a cream tick, and they do not spin */
  [data-theme="passbook"] .fx-coin.fx-fly { width: 18px; height: 18px; border-radius: 50%; -webkit-mask: none; mask: none;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 10.5l3.2 3.2L15 6.8' fill='none' stroke='%23fbf7ef' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 13px no-repeat, radial-gradient(circle at 40% 35%, #cf4a42, var(--stamp) 70%);
    box-shadow: 0 0 0 1.5px rgba(251,247,239,.9), 0 2px 3px rgba(30,42,68,.3); }

  /* ---------- the welcome card: separators sit in the gap, not beside it ---------- */
  .fx-wb-list { column-gap: 0; }
  .fx-wb-list li::before { content: none; }
  .fx-wb-list li + li::before { content: "·"; margin: 0 7px; color: var(--fg-3); }
  [data-theme="tycoon"] .fx-wb-list li + li::before { color: #ffc531; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-list li::before, :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-list li:first-child::before { content: "·"; margin: 0 7px; }
  .fx-wb { max-width: calc(100% - 32px); }

  /* ---------- the tycoon recap: a small pile of coins beside the total, clear of the number ---------- */
  [data-theme="tycoon"] .gm-rc-play .gm-rc-total::after { content: none; }
  [data-theme="tycoon"] .gm-rc-total > span::after { content: ""; display: inline-block; width: 46px; height: 28px; margin-left: 12px; vertical-align: -9px;
    background: url(art/tycoon-coin.png) 0 100% / 20px no-repeat, url(art/tycoon-coin.png) 13px 100% / 20px no-repeat, url(art/tycoon-coin.png) 26px 100% / 20px no-repeat, url(art/tycoon-coin.png) 7px 0 / 20px no-repeat, url(art/tycoon-coin.png) 20px 2px / 20px no-repeat; }
  [data-theme="tycoon"] .gm-rc-play .gm-rc-total > span::after { animation: gm-coin-spill .6s cubic-bezier(.3, .8, .5, 1) 1.45s both; }

  /* ---------- the plan's moves each carry their Transfer ---------- */
  .gm-moves li { align-items: center; gap: 12px; }
  .gm-moves .btn { flex: none; height: 28px; }

  /* ---------- the PAID stamp: the mark lands, steps aside, then the chip takes its place (never both over the row's text);
     the box stops before the amount, so the real figure stays in view ---------- */
  .fx-stamp { display: grid; place-items: center; }
  .fx-stamp > .fx-st-mark, .fx-stamp > .fx-st-chip { grid-area: 1 / 1; }
  .fx-stamp .fx-st-mark { animation: fx-st-slam .38s cubic-bezier(.3, 1.6, .5, 1) both, fx-st-away .2s ease-in .66s forwards; }
  .fx-stamp .fx-st-chip { animation: fx-pop-in .26s cubic-bezier(.2, .9, .3, 1.3) .74s both; }
  @keyframes fx-st-away { to { opacity: 0; scale: 1.16; } }
  .fx-stamp.fx-still .fx-st-mark { animation: fx-fade-in .15s both, fx-fade-out .2s ease-in .66s forwards; }
  .fx-stamp.fx-still .fx-st-chip { animation: fx-fade-in .2s .74s both; }
  [data-theme="heist"] .fx-stamp { justify-content: stretch; padding-right: 0; }
  [data-theme="heist"] .fx-stamp:not(.late) .fx-st-mark { animation: fx-st-sweep .3s cubic-bezier(.3, .8, .3, 1) both, fx-fade-out .18s ease-in .66s forwards; }
  [data-theme="heist"] .fx-st-chip { justify-self: end; margin-right: 12px; }
  [data-theme="arcade"] .fx-stamp:not(.late) .fx-st-mark { background: rgba(7,8,15,.96); animation: fx-st-slam .3s steps(4, end) both, fx-fade-out .18s steps(2, end) .66s forwards; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-stamp:not(.late) .fx-st-mark { animation: fx-fade-in .15s both, fx-st-away .2s ease-in .66s forwards; }
  [data-theme="passbook"] .fx-stamp:not(.late) .fx-st-mark { background: rgba(251,247,239,.9); }
  [data-theme="passbook"] .fx-st-chip { height: 26px; padding: 0 10px; border: 1px solid var(--stamp); border-bottom-width: 1px; border-radius: 2px; background: var(--bg-2); box-shadow: 0 3px 8px rgba(30,42,68,.22);
    color: var(--stamp); font: 700 12px/1 "Courier Prime", monospace; letter-spacing: .06em; rotate: -2deg; }
  /* off its row (a head, a card, the page title): a little smaller */
  .fx-stamp.fx-st-off .fx-st-mark { zoom: .86; }

  /* big motion stays still when the system asks for less */
  @media (prefers-reduced-motion: reduce) {
    .fx-coin.fx-fly, .fx-dmg { display: none !important; }
    .fx-stamp .fx-st-mark { animation: fx-fade-in .15s both, fx-fade-out .2s ease-in .66s forwards !important; }
    .fx-stamp .fx-st-chip { animation: fx-fade-in .2s .74s both !important; }
    .gm-tok.gm-hop, .gm-cap.gm-go-flash, .gm-xpbar.gm-xp-flash, .gm-badge.gm-xp-pop, .dk-nav-ghost { animation: none !important; }
    .fx-st-tick path { animation: none !important; stroke-dashoffset: 0 !important; }
    .gm-lm.lm-rise .lm-new, .gm-lm.lm-rise .lm-dust circle, .gm-boss.gm-flip, .gm-hp.gm-drain { animation: none !important; }
    .gm-lm.lm-rise .lm-dust { display: none !important; }
    .gm-hp i { transition: none !important; }
    .dk-cursor, .dk-nav-ghost { transition-duration: 0s !important; }
    .dk-cursor::before, .dk-cursor::after { animation: none !important; }
    :is(.dk-kbd, .dk-k).dk-flash { animation: none !important; }
    .fx-wb { animation: fx-fade-in .2s both !important; }
    .fx-wb-wrap.out .fx-wb { animation: fx-fade-out .2s both !important; }
    .fx-wb-scan, .fx-wb-art::before, .fx-wb-art::after, .fx-wb-date, .fx-wb-title { animation: none !important; }
    :root:is([data-theme="tycoon"], [data-theme="casino"]) .btn-primary::after { display: none; }
  }

  /* ======================================================================
     game, round 2: what the second verification found. Desktop only, like everything in this block.
     ====================================================================== */

  /* ---------- the fx never sit on the figures a page leads with: banners and the welcome under the hero, pops (and the quiet
     looks' banners and welcome) in the page bar's empty middle. Only the welcome card's own button takes a click. ---------- */
  .fx-root .fx-wb { cursor: default; }
  .fx-big.fx-in-bar .fx-b-band { max-width: 100%; box-shadow: 0 6px 18px rgba(0,0,0,.2); }
  .fx-pops.fx-in-bar .fx-pop { max-width: var(--pop-max, 640px); }
  .fx-wb-wrap.fx-in-bar .fx-wb { max-width: 100%; box-shadow: 0 6px 18px rgba(0,0,0,.2); }
  .fx-wb-wrap.fx-in-bar .fx-wb-line { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  :root:is([data-theme="dark"], [data-theme="light"]) .fx-wb-list li:first-child::before { margin: 0 7px 0 -3px; }   /* one gap before the dot, like the others */
  [data-theme="tycoon"] .fx-wb-title { white-space: nowrap; }
  [data-theme="tycoon"] .fx-wb-list li { white-space: nowrap; }
  /* a loss is never green: the heist card's line goes neutral when the net is down or flat */
  [data-theme="heist"] .fx-wb-wrap:not(.fx-wb-up) .fx-wb-sub { color: #d8d8dc; }

  /* ---------- tycoon's level-up dice tumble in front of the ribbon (the coins too) ---------- */
  [data-theme="tycoon"] .fx-b-fx { z-index: 2; }
  /* ---------- arcade: the neon headline blinks twice and settles bright for the hold ---------- */
  [data-theme="arcade"] .fx-b-title { animation: gm-neon2 .9s steps(1, end) .1s 1; }
  @keyframes gm-neon2 { 0%, 100% { opacity: 1; } 12% { opacity: .35; } 18% { opacity: 1; } 26% { opacity: .55; } 32% { opacity: 1; } }

  /* ---------- passbook: a table's one-line sub never widens its column (the ellipsis takes it instead) ---------- */
  [data-theme="passbook"] .dk-tbl .dk-c-main .dk-rsub { max-width: 0; min-width: 100%; }

  /* ---------- a debt's hit: a plate beside its balance that drifts along its own row; off the hero's Debt figure, which pulses ---------- */
  .fx-dmg.fx-dmg-row, .fx-dmg.fx-dmg-stat { padding: 3px 9px; border-radius: 999px; background: var(--bg-2); border: 1px solid color-mix(in srgb, var(--pos) 55%, transparent); box-shadow: 0 6px 16px rgba(0,0,0,.22);
    font: 800 14px/1.1 var(--mono); color: var(--pos); text-shadow: none; -webkit-text-stroke: 0; }
  .fx-dmg.fx-dmg-row { translate: -100% -50%; animation: fx-dmg-side 1.2s cubic-bezier(.2, .7, .3, 1) both; }
  .fx-dmg.fx-dmg-stat { translate: -100% -100%; animation: fx-dmg-up 1.2s cubic-bezier(.2, .7, .3, 1) both; }
  @keyframes fx-dmg-side { 0% { opacity: 0; transform: translateX(10px) scale(.8); } 14% { opacity: 1; transform: none; } 75% { opacity: 1; transform: translateX(-14px); } 100% { opacity: 0; transform: translateX(-20px); } }
  @keyframes fx-dmg-up { 0% { opacity: 0; transform: translateY(6px) scale(.85); } 14% { opacity: 1; transform: none; } 75% { opacity: 1; transform: translateY(-6px); } 100% { opacity: 0; transform: translateY(-10px); } }
  .dk-debt-n { transform-origin: 0 50%; }
  .dk-debt-n.gm-hit { animation: gm-hit .7s ease-out; }
  @keyframes gm-hit { 22% { transform: scale(1.1); filter: brightness(1.35); } }
  [data-theme="tycoon"] .fx-dmg:is(.fx-dmg-row, .fx-dmg-stat) { padding: 3px 11px 4px; border: 2px solid #fff; background: linear-gradient(180deg, #ffe98f, #ffb800); box-shadow: 0 3px 0 #7a5200, 0 8px 16px rgba(0,0,0,.25); color: var(--navy); font: 400 17px/1 "Lilita One", sans-serif; letter-spacing: .02em; }
  [data-theme="heist"] .fx-dmg:is(.fx-dmg-row, .fx-dmg-stat) { border: 0; border-top: 2px solid #fff; border-radius: 0; background: rgba(0,0,0,.92); color: #fff; font: 400 17px/1.1 "Anton", sans-serif; letter-spacing: .04em; }
  [data-theme="arcade"] .fx-dmg:is(.fx-dmg-row, .fx-dmg-stat) { border-radius: 3px; border-color: #ffd166; background: rgba(7,8,15,.94); color: #ffd166; font: 700 14px/1.1 "Chakra Petch", sans-serif; letter-spacing: .06em; box-shadow: 0 0 14px rgba(255,209,102,.4); }
  [data-theme="comic"] .fx-dmg:is(.fx-dmg-row, .fx-dmg-stat) { border: 2.5px solid #111; border-radius: 12px; background: #fff; color: var(--accent-text); box-shadow: 3px 3px 0 #111; font: 400 19px/1 "Bangers", sans-serif; letter-spacing: .05em; }
  [data-theme="casino"] .fx-dmg:is(.fx-dmg-row, .fx-dmg-stat) { border-color: var(--gold); background: #141316; color: #f0d275; font: 400 19px/1 "Bebas Neue", sans-serif; letter-spacing: .08em; box-shadow: 0 0 14px rgba(212,175,55,.35); }
  [data-theme="passbook"] .fx-dmg:is(.fx-dmg-row, .fx-dmg-stat) { border: 1.5px solid var(--stamp); border-radius: 2px; background: var(--bg-2); color: var(--stamp); font: 700 14px/1.1 "Courier Prime", monospace; box-shadow: 2px 2px 0 rgba(30,42,68,.2); }

  /* ---------- the rail's pickup: beside the counter, inside its tile ---------- */
  .fx-pick.fx-pick-rail { left: var(--rx); top: var(--my); translate: 0 -50%; animation: fx-rise-s .95s cubic-bezier(.2, .7, .3, 1) both; }
  @keyframes fx-rise-s { 0% { opacity: 0; transform: translateY(8px) scale(.8); } 16% { opacity: 1; transform: scale(1.08); } 26% { transform: none; } 78% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-5px); } }
  .dk-tick .gm-tick-top { transition: opacity .12s; }
  .dk-tick.gm-picking .gm-tick-top { opacity: 0; }
  [data-theme="tycoon"] .fx-pick-rail .fx-pick-v { padding: 2px 9px 3px; background: linear-gradient(180deg, #ffe98f, #ffb800); font-size: 15px; -webkit-text-stroke: .8px var(--navy); text-shadow: 0 1.5px 0 var(--navy); }
  [data-theme="heist"] .fx-pick.fx-pick-rail { translate: 0 -50%; animation-name: fx-slide; }
  [data-theme="heist"] .fx-pick-rail .fx-pick-v { font-size: 19px; }
  [data-theme="comic"] .fx-pick-rail .fx-pick-v { padding: 2px 7px; font-size: 16px; rotate: -3deg; }
  [data-theme="comic"] .fx-pick-rail .fx-pick-v::before { display: none; }
  [data-theme="casino"] .fx-pick-rail .fx-pick-v { padding: 1px 8px; background: #141316; font-size: 17px; }

  /* ---------- the reels: every character in a window of one line, so a digit lands on the same baseline as the rest ---------- */
  .rl-w.rl-sep { padding: 0; margin: 0; }
  [data-theme="tycoon"] .dk-tick-n.rl-on .rl-w.rl-sep::before { content: none; }
  :root:not([data-theme="tycoon"]) .rl-on .rl-w:not(.rl-sep):not(.rl-still) { -webkit-mask-image: linear-gradient(180deg, transparent, #000 16%, #000 84%, transparent); mask-image: linear-gradient(180deg, transparent, #000 16%, #000 84%, transparent); }

  /* ---------- titles: the hero's medallion (1400px and up) and the frame the title gives the level badge ---------- */
  .gm-fr-0 { --gm-frc: #8f9aa8; } .gm-fr-1 { --gm-frc: #c9894f; } .gm-fr-2 { --gm-frc: #c9d2dc; } .gm-fr-3 { --gm-frc: #f2c14e; } .gm-fr-4 { --gm-frc: #9fe6ee; } .gm-fr-5 { --gm-frc: #e0325f; } .gm-fr-6 { --gm-frc: #b9f2ff; }
  .gm-rank { display: none; }
  @media (min-width: 1400px) {
    .dk-hero-stats:has(.gm-rank) { align-content: space-between; }
    .gm-rank { grid-column: 1 / -1; display: flex; align-items: center; gap: 12px; min-width: 0; padding: 2px 0 14px; border-bottom: 1px solid var(--line); cursor: pointer; contain: inline-size; }   /* never widens the stats column */
  }
  .gm-rank-medal { position: relative; flex: none; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--gm-frc) 30%, #fff), var(--gm-frc) 62%, color-mix(in srgb, var(--gm-frc) 62%, #000)); box-shadow: 0 0 0 2px var(--bg-2), 0 0 0 3.5px var(--gm-frc); color: #1a1400; font: 700 17px/1 var(--mono); }
  .gm-rank-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .gm-rank-k { font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--fg-3); }
  .gm-rank-t { font-size: 17px; font-weight: 800; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-rank-n { font-size: 11.5px; line-height: 1.35; color: var(--fg-2); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
  .dk-hero-stats .gm-rank .num { font-size: inherit; margin: 0; white-space: nowrap; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-rank-medal { width: 34px; height: 34px; background: none; box-shadow: inset 0 0 0 1.5px var(--gm-frc); color: var(--fg); font-size: 13px; }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-rank-t { font-size: 15px; font-weight: 700; }
  [data-theme="tycoon"] .gm-rank { border-bottom-color: rgba(255,255,255,.3); }
  [data-theme="tycoon"] .gm-rank-medal { width: 52px; height: 52px; box-shadow: 0 0 0 3px #fff, 0 3px 0 3px rgba(0,0,0,.28); color: var(--navy); font: 400 22px/1 "Lilita One", sans-serif; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
  [data-theme="tycoon"] .gm-rank-medal::before { content: ""; position: absolute; inset: 7px; background: rgba(255,255,255,.3); clip-path: var(--gm-star); z-index: -1; }
  [data-theme="tycoon"] .gm-rank-medal b { position: relative; }
  [data-theme="tycoon"] .gm-rank-k { font: 400 12px/1 "Lilita One", sans-serif; letter-spacing: .06em; color: #ffd54a; }
  [data-theme="tycoon"] .gm-rank-t { font: 400 21px/1.1 "Lilita One", sans-serif; letter-spacing: .02em; color: #fff; -webkit-text-stroke: .8px var(--navy); text-shadow: 0 2px 0 rgba(11,27,61,.6); }
  [data-theme="tycoon"] .gm-rank-n { font: 400 13px/1.3 "Lilita One", sans-serif; letter-spacing: .02em; color: #d7ecff; }
  [data-theme="heist"] .gm-rank { border-bottom-color: rgba(255,255,255,.12); }
  [data-theme="heist"] .gm-rank-medal { background: #000; box-shadow: inset 0 0 0 2px var(--gm-frc), 0 0 12px color-mix(in srgb, var(--gm-frc) 40%, transparent); color: #fff; font: 500 18px/1 "Oswald", sans-serif; }
  [data-theme="heist"] .gm-rank-k { font: 500 10px "Oswald", sans-serif; letter-spacing: .2em; color: var(--orange); }
  [data-theme="heist"] .gm-rank-t { font: 500 17px/1.1 "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; }
  [data-theme="heist"] .gm-rank-n { font: 500 10.5px/1.4 "Oswald", sans-serif; letter-spacing: .07em; text-transform: uppercase; color: #b8b8bc; }
  [data-theme="arcade"] .gm-rank-medal { border-radius: 6px; background: rgba(7,8,15,.9); box-shadow: 0 0 0 1.5px var(--gm-frc), 0 0 12px color-mix(in srgb, var(--gm-frc) 60%, transparent); color: var(--hud); font: 700 18px/1 "Chakra Petch", sans-serif; text-shadow: 0 0 8px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-rank-k { font-family: "Chakra Petch", sans-serif; letter-spacing: .16em; color: var(--hud); }
  [data-theme="arcade"] .gm-rank-t { font: 700 17px/1.1 "Chakra Petch", sans-serif; letter-spacing: .08em; text-transform: uppercase; }
  [data-theme="arcade"] .gm-rank-n { font-family: "Chakra Petch", sans-serif; }
  [data-theme="comic"] .gm-rank-medal { box-shadow: 0 0 0 2.5px #111, 3px 3px 0 2.5px #111; color: #111; font: 400 21px/1 "Bangers", sans-serif; letter-spacing: .04em; }
  [data-theme="comic"] .gm-rank-k { font: 700 11px "Fredoka", sans-serif; letter-spacing: .06em; color: #111; }
  [data-theme="comic"] .gm-rank-t { font: 400 22px/1 "Bangers", sans-serif; letter-spacing: .05em; color: var(--accent-text); }
  [data-theme="comic"] .gm-rank-n { font: 600 12px/1.3 "Fredoka", sans-serif; color: #111; }
  [data-theme="casino"] .gm-rank-medal { background: radial-gradient(circle, var(--gm-frc) 0 52%, #141316 53% 60%, var(--gm-frc) 61%); box-shadow: 0 0 0 1.5px var(--gold), 0 0 14px rgba(212,175,55,.35); color: #1a1400; font: 400 20px/1 "Bebas Neue", sans-serif; }
  [data-theme="casino"] .gm-rank-k { font: 400 12px "Bebas Neue", sans-serif; letter-spacing: .16em; color: var(--gold); }
  [data-theme="casino"] .gm-rank-t { font: 400 22px/1 "Bebas Neue", sans-serif; letter-spacing: .08em; background: linear-gradient(180deg, #fff3b0, #f0d275 45%, #b8902c); -webkit-background-clip: text; background-clip: text; color: transparent; }
  [data-theme="casino"] .gm-rank-n { font: 400 14px/1.2 "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="passbook"] .gm-rank-medal { background: var(--bg-2); box-shadow: inset 0 0 0 1.5px var(--stamp), inset 0 0 0 4px var(--bg-2), inset 0 0 0 5px var(--stamp); color: var(--stamp); font: 700 17px/1 "Courier Prime", monospace; rotate: -6deg; }
  [data-theme="passbook"] .gm-rank-k { font: 700 10px "Courier Prime", monospace; letter-spacing: .14em; color: var(--stamp); }
  [data-theme="passbook"] .gm-rank-t { font: italic 600 18px/1.15 "Fraunces", serif; }
  [data-theme="passbook"] .gm-rank-n { font-family: "Courier Prime", monospace; font-weight: 700; }
  /* the level badge wears the frame */
  .gm-badge:not(.gm-fr-0) { box-shadow: 0 0 0 1.5px var(--gm-frc); }
  [data-theme="tycoon"] .gm-badge:not(.gm-fr-0) { border-color: var(--gm-frc); box-shadow: 0 2px 0 rgba(0,0,0,.35); }
  [data-theme="heist"] .gm-badge:not(.gm-fr-0) { border-color: var(--gm-frc); box-shadow: none; }
  /* casino: the hero's stats sit in the middle of their column from 1400px (the medallion fills its top) */
  @media (min-width: 1400px) { .dk-hero-stats:not(:has(.gm-rank)) { align-content: center; } }

  /* ---------- the goal card: the landmark as it stands, in the room the card stretches to ---------- */
  .gm-mg-lm { display: none; }
  .dk-ov-side > .dk-mg:last-child .gm-mg-lm { flex: 1 1 0; min-height: 0; display: flex; align-items: center; gap: 14px; overflow: hidden; }
  .gm-mg-lm .gm-lm { flex: none; height: 100%; max-height: 108px; aspect-ratio: 120 / 96; }
  .gm-mg-lm .gm-lm svg { width: 100%; height: 100%; }
  .gm-mg-cap { min-width: 0; font-size: 12px; line-height: 1.5; color: var(--fg-2); }
  .gm-mg-cap b { color: var(--pos); }
  [data-theme="tycoon"] .gm-mg-cap { font: 400 13.5px/1.35 "Lilita One", sans-serif; letter-spacing: .02em; color: var(--navy); }
  [data-theme="heist"] .gm-mg-cap { font: 500 11px/1.5 "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #b8b8bc; }
  [data-theme="arcade"] .gm-mg-cap { font-family: "Chakra Petch", sans-serif; }
  [data-theme="comic"] .gm-mg-cap { font: 600 12.5px/1.4 "Fredoka", sans-serif; color: #111; }
  [data-theme="casino"] .gm-mg-cap { font: 400 15px/1.2 "Bebas Neue", sans-serif; letter-spacing: .08em; }
  [data-theme="passbook"] .gm-mg-cap { font: 700 12px/1.5 "Courier Prime", monospace; }

  /* ---------- Quick Wins: each job's segment fills as far as it has got; a cleared board shows the week, stamped ---------- */
  .gm-qw-meter > i { position: relative; overflow: hidden; }
  .gm-qw-meter > i.part::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: var(--f); background: var(--pos); opacity: .75; }
  [data-theme="tycoon"] .gm-qw-meter > i.part::before { background: linear-gradient(180deg, #fff0a0, #ffc531 55%, #e09a00); opacity: .9; }
  [data-theme="heist"] .gm-qw-meter > i.part::before { background: #fff; opacity: .7; }
  [data-theme="arcade"] .gm-qw-meter > i.part::before { background: var(--hud); opacity: .7; }
  [data-theme="comic"] .gm-qw-meter > i.part::before { background: var(--pos); opacity: .8; }
  [data-theme="casino"] .gm-qw-meter > i.part::before { background: var(--gold); opacity: .8; }
  [data-theme="passbook"] .gm-qw-meter > i.part::before { background: #f3c3bd; opacity: .9; }
  [data-theme="tycoon"] .gm-gift.open :is(.gm-gift-lid, .gm-gift-bow) { transform: translate(-2px, -2px) rotate(-14deg); }
  [data-theme="tycoon"] .gm-gift { margin-top: -15px; }
  .gm-qw-line.gm-qw-clear { gap: 14px; }
  .gm-qw-rib { flex: none; font-weight: 800; color: var(--pos); }
  .gm-qw-done { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; overflow: hidden; max-height: 58px; }
  .gm-qw-dj { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px 0 6px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--pos) 45%, transparent); color: var(--fg-2); font-size: 12px; font-weight: 700; white-space: nowrap; }
  .gm-qw-dj i { width: 12px; height: 12px; background: var(--pos); -webkit-mask: var(--gm-tick) center / contain no-repeat; mask: var(--gm-tick) center / contain no-repeat; }
  .gm-qw-nx { min-width: 0; font-size: 12.5px; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gm-qw-nx:empty { display: none; }
  @media (max-width: 1399px) { .gm-qw-nx { display: none; } }
  [data-theme="tycoon"] .gm-qw-rib { position: relative; padding: 6px 20px 7px; background: linear-gradient(180deg, #ff5a5a, #d81e1e); color: #fff; font: 400 17px/1 "Lilita One", sans-serif; letter-spacing: .03em; text-shadow: 0 2px 0 #7a0f0f;
    clip-path: polygon(0 0, 100% 0, calc(100% - 10px) 50%, 100% 100%, 0 100%, 10px 50%); filter: drop-shadow(0 3px 0 #7a0f0f); }
  [data-theme="tycoon"] .gm-qw-dj { height: 26px; border: 2px solid var(--navy); background: #fff; color: var(--navy); font: 400 13px "Lilita One", sans-serif; letter-spacing: .02em; box-shadow: 0 2px 0 rgba(27,42,74,.25); }
  [data-theme="tycoon"] .gm-qw-dj i { background: #1d8f3a; }
  [data-theme="tycoon"] .gm-qw-nx { font: 400 13px "Lilita One", sans-serif; letter-spacing: .02em; color: var(--navy); }
  [data-theme="heist"] .gm-qw-rib { font: 400 16px "Anton", sans-serif; letter-spacing: .04em; text-transform: uppercase; color: #f5c342; }
  [data-theme="heist"] .gm-qw-dj { border-radius: 0; border-color: rgba(255,255,255,.3); font: 500 10.5px "Oswald", sans-serif; letter-spacing: .12em; text-transform: uppercase; }
  [data-theme="heist"] .gm-qw-dj i { background: #8ee08a; }
  [data-theme="arcade"] .gm-qw-rib { font: 700 15px "Chakra Petch", sans-serif; letter-spacing: .14em; color: var(--hud); text-shadow: 0 0 10px rgba(124,242,255,.8); }
  [data-theme="arcade"] .gm-qw-dj { border-radius: 3px; border-color: rgba(124,242,255,.4); font-family: "Chakra Petch", sans-serif; }
  [data-theme="comic"] .gm-qw-rib { padding: 3px 12px; border: 2.5px solid #111; background: var(--pow); color: #111; box-shadow: 3px 3px 0 #111; font: 400 18px/1.1 "Bangers", sans-serif; letter-spacing: .05em; rotate: -2deg; }
  [data-theme="comic"] .gm-qw-dj { border: 2px solid #111; background: #fff; color: #111; }
  [data-theme="casino"] .gm-qw-rib { font: 400 20px "Bebas Neue", sans-serif; letter-spacing: .12em; color: var(--gold); }
  [data-theme="casino"] .gm-qw-dj { border-color: rgba(212,175,55,.45); font-family: "Bebas Neue", sans-serif; font-weight: 400; font-size: 14px; letter-spacing: .08em; }
  [data-theme="casino"] .gm-qw-dj i { background: var(--gold); }
  [data-theme="passbook"] .gm-qw-rib { padding: 2px 10px; border: 2px solid var(--stamp); color: var(--stamp); font: 700 13px "Courier Prime", monospace; letter-spacing: .12em; text-transform: uppercase; rotate: -4deg; }
  [data-theme="passbook"] .gm-qw-dj { border-radius: 2px; border-color: rgba(179,52,46,.45); font: 700 12px "Courier Prime", monospace; }
  [data-theme="passbook"] .gm-qw-dj i { background: var(--stamp); }
  :root:is([data-theme="dark"], [data-theme="light"]) .gm-qw-dj { height: 20px; border-color: var(--line-2); font-weight: 600; font-size: 11.5px; }
  /* the fourth card from 1700px, where it fits */
  .gm-job-4, .gm-qw-more .gm-x { display: none; }
  @media (min-width: 1700px) {
    .gm-qw-body { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .gm-qw-body:not(:has(.gm-job-4)) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .gm-job-4 { display: flex; }
    .gm-qw-more .gm-w { display: none; }
    .gm-qw-more .gm-x { display: inline; }
    .gm-qw-more.gm-nx0 { display: none; }
  }
  /* comic and casino: the card's title clears the top edge */
  :root:is([data-theme="comic"], [data-theme="casino"]) .gm-qw-body .gm-job { padding-top: 4px; padding-bottom: 1px; }
  /* 861-960: the head keeps its meter; the streaks live in the Q dialog */
  @media (max-width: 960px) { .gm-qw-head .gm-streaks { display: none; } }

  /* ---------- the hero's board: the hat can stand on GO; a burst of coins off it ---------- */
  [data-theme="tycoon"] .gm-cap { position: relative; }
  [data-theme="tycoon"] .gm-cap > .gm-tok { bottom: 22px; }
  .fx-coin.fx-burst { position: fixed; left: 0; top: 0; width: 16px; height: 16px; border-radius: 50%; background: #f2b632; }
  [data-theme="tycoon"] .fx-coin.fx-burst { width: 20px; height: 20px; background: url(art/tycoon-coin.png) center / contain no-repeat; border-radius: 0; animation: none; }
  /* the rail's XP bar is a small board in tycoon: ten spaces, and the hat walks it */
  [data-theme="tycoon"] .gm-xpbar::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: repeating-linear-gradient(90deg, transparent 0 calc(10% - 1.5px), rgba(255,255,255,.3) calc(10% - 1.5px) 10%); pointer-events: none; }
  [data-theme="tycoon"] .gm-xpbar > i::after { right: -9px; top: auto; bottom: 1px; width: 18px; height: 18px; margin-top: 0; background-image: url(art/emblem-board.png); }
  .gm-xpbar.gm-xp-hop > i::after { animation: gm-hop .22s cubic-bezier(.3, .7, .4, 1); }

  /* ---------- a star that cannot apply is not scored: a dash, never an empty star ---------- */
  .gm-stars i.na, .gm-rc-stars i.na { clip-path: none; background: none !important; position: relative; }
  .gm-stars i.na::before, .gm-rc-stars i.na::before { content: ""; position: absolute; left: 20%; right: 20%; top: calc(50% - 1px); height: 2px; border-radius: 1px; background: var(--fg-3); opacity: .6; }
  .gm-why li.na .gm-star-g { clip-path: none; height: 2px; margin-top: 9px; background: var(--fg-3); opacity: .6; }
  .gm-rc-why li.na::before { content: "–"; }
  /* comic: an empty star is inked, so it reads as one to earn */
  [data-theme="comic"] .gm-stars i:not(.on):not(.na) { background: #111; }
  [data-theme="comic"] .gm-stars i:not(.on):not(.na)::after { content: ""; position: absolute; inset: 1.5px; clip-path: var(--gm-star); background: #fff; }
  [data-theme="comic"] .gm-stars i { position: relative; }

  /* ---------- the Q dialog: a job's reward gets its own line, never cut; a little wider from 1280px ---------- */
  .gm-joblist .gm-job-p { flex-wrap: wrap; row-gap: 3px; }
  .gm-joblist .gm-job-c { overflow: visible; white-space: normal; }
  .gm-joblist .gm-job-rw { flex-basis: 100%; margin-left: 98px; padding-left: 0; white-space: normal; overflow: visible; }
  @media (min-width: 1280px) { .modal:has(.gm-jobs-dlg) { width: min(760px, calc(100vw - 48px)); } }

  /* ---------- the rail foot: the album count sits on the button's corner; ? trophy and speaker share one shape per look;
     the phone-install help shows a phone, not a second '?' ---------- */
  .side-foot .gm-tro-cnt { top: -8px; right: -11px; min-width: 14px; height: 14px; padding: 0 3px; font-size: 9px; line-height: 14px; box-shadow: 0 0 0 1.5px rgba(0,0,0,.55); }
  .side-foot .link.help { font-size: 0; }
  .side-foot .link.help::before { content: ""; width: 10px; height: 14px; background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 14'%3E%3Cpath d='M2 0h6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 2v8h6V2zm3 9.2a.9.9 0 1 0 0 1.8.9.9 0 0 0 0-1.8z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 14'%3E%3Cpath d='M2 0h6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 2v8h6V2zm3 9.2a.9.9 0 1 0 0 1.8.9.9 0 0 0 0-1.8z'/%3E%3C/svg%3E") center / contain no-repeat; }
  [data-theme="heist"] .side-foot .link.help { border-radius: 0; }
  :root:is([data-theme="arcade"], [data-theme="passbook"]) .side-foot :is(.link.help, .gm-tro-btn, .gm-snd-btn) { border-radius: 3px; }
  /* the speaker says on or off by its look too, not only by its glyph */
  .side-foot .gm-snd-btn[aria-pressed="false"] { opacity: .55; border-style: dashed; }
  [data-theme="comic"] .side-foot .gm-snd-btn[aria-pressed="false"] { background: #fff; box-shadow: none; }
  [data-theme="casino"] .side-foot .gm-snd-btn { border-style: solid; }
  [data-theme="casino"] .side-foot .gm-snd-btn[aria-pressed="true"] { background: rgba(212,175,55,.12); }
  [data-theme="casino"] .side-foot .gm-snd-btn[aria-pressed="false"] { border-color: rgba(255,255,255,.3); border-style: dashed; color: var(--fg-3); }

  /* ---------- the album's odd card spans the last row in the two-column heist list ---------- */
  [data-theme="heist"] .gm-tro-grid > .gm-tc:last-child:nth-child(odd) { grid-column: 1 / -1; }

  /* ---------- comic: the slanted Bangers letters keep their overhang (SAFETY NET, not SAFETY NEI) ---------- */
  [data-theme="comic"] :is(.gm-next-nm, .dk-tick .label, .gm-tick-top .label) { padding-right: .18em; margin-right: -.18em; }
  /* comic: the investments deed is the Asset mix's blue, not the head's yellow */
  [data-theme="comic"] .gm-deed-band.gm-g-invest { --gm-deed: #7fc4ff; }

  /* ---------- the PAID stamp: the chip comes once the mark has gone; on a panel head it sits right, clear of the title ---------- */
  .fx-stamp .fx-st-chip { animation-delay: .9s; }
  .fx-stamp.fx-still .fx-st-chip { animation-delay: .9s; }
  .fx-stamp.fx-st-off .fx-st-chip { justify-self: end; margin-right: 10px; }
  [data-theme="comic"] .fx-stamp:not(.late) .fx-st-mark { width: auto; min-width: 190px; height: 104px; padding: 0 34px; background-size: 100% 100%; font-size: 23px; }
  /* passbook: on the navy head the stamp is inked in cream, not a paper patch */
  [data-theme="passbook"] .fx-stamp.fx-st-off .fx-st-mark { background: none !important; border-color: #fbf7ef; color: #fbf7ef; -webkit-mask: none; mask: none; }

  /* ---------- passbook ---------- */
  /* the streak in the rail: the stamped ticks and the count, on one small line */
  [data-theme="passbook"] .dk-tick .gm-sk { align-items: center; height: 16px; padding: 0 5px; gap: 2px; }
  [data-theme="passbook"] .dk-tick .gm-sk-ticks { display: inline-flex; }
  [data-theme="passbook"] .dk-tick .gm-sk-ticks i { width: 8px; height: 8px; }
  [data-theme="passbook"] .dk-tick .gm-sk-ticks i:nth-child(n+4), [data-theme="passbook"] .dk-tick .gm-sk-ticks b { display: none; }
  [data-theme="passbook"] .dk-tick .gm-sk .gm-sk-n { line-height: 1; }
  /* the bond: MATURED is stamped over the print, and stays readable */
  [data-theme="passbook"] .gm-lm .lm-matured rect:not(.lm-m2) { fill: rgba(251,247,239,.9); }
  /* the loan ledger: PAID IN FULL is the stamp; the sentence is a typed line under it, inside the card */
  [data-theme="passbook"] .gm-boss-clear { align-self: stretch; margin-right: 20px; padding: 0; border: 0; rotate: 0deg; }
  [data-theme="passbook"] .gm-boss-clear b { align-self: flex-start; display: inline-block; margin: 2px 0 4px 6px; padding: 5px 12px; border: 3px double var(--stamp); border-radius: 3px; rotate: -4deg; }
  [data-theme="passbook"] .gm-boss-clear span { font: 700 12px/22px "Courier Prime", monospace; color: var(--fg); }
  /* the HP meter reads as a meter: a tan track with end ticks */
  [data-theme="passbook"] .gm-hp { height: 7px; border: 1px solid var(--line-2); background: repeating-linear-gradient(90deg, #e6dcc6 0 9%, #d8ccb2 9% 10%); }
  [data-theme="passbook"] .gm-hp i { background: var(--line-2); }
  [data-theme="passbook"] .gm-boss-tot .gm-hp { height: 7px; border-color: rgba(251,247,239,.8); background: repeating-linear-gradient(90deg, rgba(251,247,239,.18) 0 9%, rgba(251,247,239,.4) 9% 10%); }
  [data-theme="passbook"] .gm-boss-tot .gm-hp i { background: #fbf7ef; }
  /* a done job is ticked, not its icon */
  [data-theme="passbook"] .gm-job.done .gm-job-ico { color: transparent; border-color: var(--stamp); background: var(--stamp) var(--gm-tick) center / 11px no-repeat; }
  [data-theme="passbook"] .gm-job.done .gm-job-ico svg { display: none; }
  [data-theme="passbook"] .gm-job.done .gm-job-ico { -webkit-mask: none; }

  /* ---------- the chart's level labels keep a halo, so the line never strikes through them ---------- */
  .gm-lane-tag text, .gm-rec-tag text { paint-order: stroke; stroke: var(--bg-2); stroke-width: 3.5px; stroke-linejoin: round; }
  [data-theme="tycoon"] .gm-lane-tag text, [data-theme="tycoon"] .gm-rec-tag text { stroke: none; }

  /* ---------- tycoon ---------- */
  /* the debts' HP: a mortgaged deed and a white track on the red head, drained dark red */
  [data-theme="tycoon"] .gm-boss-tot::before { content: none; }
  .gm-boss-ico { display: none; }
  @media (max-width: 1199px) { .gm-boss-tl2 { display: none; } }
  [data-theme="tycoon"] .gm-boss-ico { display: block; flex: none; width: 15px; height: 18px; margin-right: -3px; border-radius: 2px; background: linear-gradient(180deg, #d81e1e 0 5px, #fff 5px); box-shadow: 0 0 0 1.5px var(--navy), 0 2px 0 1.5px rgba(0,0,0,.25); rotate: -6deg; }
  [data-theme="tycoon"] .gm-boss-tot .gm-hp { background: #fff; border-color: #fff; box-shadow: inset 0 2px 2px rgba(0,0,0,.2); }
  [data-theme="tycoon"] .gm-boss-tot .gm-hp i { background: linear-gradient(180deg, #b71515, #7a0f0f); box-shadow: none; }
  /* the Next sticker label stays on one line */
  .gm-tick-top .label { white-space: nowrap; }
  [data-theme="tycoon"] .gm-next .gm-tick-top { gap: 6px; }
  [data-theme="tycoon"] .gm-next-t { flex: none; }
  /* the 30-day strip's hat stands clear of the strip's edge */
  [data-theme="tycoon"] .dk-cf { padding-left: 26px; }
  /* a stale balance's bubble never wraps the name beside it */
  @media (min-width: 1400px) { [data-theme="tycoon"] .gm-nm .strong { white-space: nowrap; } }
  /* the recap's coins: drawn, crisp at any size */
  [data-theme="tycoon"] .gm-rc-total > span::after { background:
    radial-gradient(circle at 40% 35%, #fff3a8 0 22%, #ffc531 23% 58%, #d99a12 59% 68%, transparent 69%) 0 100% / 20px 20px no-repeat,
    radial-gradient(circle at 40% 35%, #fff3a8 0 22%, #ffc531 23% 58%, #d99a12 59% 68%, transparent 69%) 13px 100% / 20px 20px no-repeat,
    radial-gradient(circle at 40% 35%, #fff3a8 0 22%, #ffc531 23% 58%, #d99a12 59% 68%, transparent 69%) 26px 100% / 20px 20px no-repeat,
    radial-gradient(circle at 40% 35%, #fff3a8 0 22%, #ffc531 23% 58%, #d99a12 59% 68%, transparent 69%) 7px 0 / 20px 20px no-repeat,
    radial-gradient(circle at 40% 35%, #fff3a8 0 22%, #ffc531 23% 58%, #d99a12 59% 68%, transparent 69%) 20px 2px / 20px 20px no-repeat; }

  /* ---------- the lots below 1200px: four fit one row ---------- */
  @media (max-width: 1199px) {
    .gm-lots:not(.gm-lots-tycoon) { gap: 10px; }
    .gm-lots:not(.gm-lots-tycoon) .gm-lot { width: 122px; }
    .gm-lots:not(.gm-lots-tycoon) .gm-lot-v { white-space: normal; overflow: visible; font-size: 11px; line-height: 1.3; }
    [data-theme="tycoon"] .gm-lots-tycoon { zoom: .8; }
  }
  /* arcade: the built lot's line keeps its count */
  [data-theme="arcade"] .gm-lot-st { letter-spacing: .04em; }

  /* ---------- the stakes line in a dialog's intro ---------- */
  .gm-stake { display: block; margin-top: 5px; font-weight: 700; color: var(--accent-text); }
  [data-theme="tycoon"] .gm-stake { font: 400 14px "Lilita One", sans-serif; letter-spacing: .02em; color: #d81e1e; }
  [data-theme="heist"] .gm-stake { font: 500 11px "Oswald", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #f5c342; }
  [data-theme="arcade"] .gm-stake { font-family: "Chakra Petch", sans-serif; letter-spacing: .04em; color: var(--pos); }
  [data-theme="comic"] .gm-stake { font: 600 13px "Fredoka", sans-serif; color: var(--accent-text); }
  [data-theme="casino"] .gm-stake { font: 400 15px "Bebas Neue", sans-serif; letter-spacing: .1em; color: var(--gold); }
  [data-theme="passbook"] .gm-stake { font: italic 600 13px "Fraunces", serif; color: var(--stamp); }

  /* big motion stays still when the system asks for less */
  @media (prefers-reduced-motion: reduce) {
    .fx-dmg.fx-dmg-row, .fx-dmg.fx-dmg-stat, .fx-coin.fx-burst { display: none !important; }
    .dk-debt-n.gm-hit, .gm-xpbar.gm-xp-hop > i::after, [data-theme="arcade"] .fx-b-title { animation: none !important; }
  }
}
