/* ps-theme-pack.css — Neo UI Shell (Theme Pack v0.1 beta)
   Scope: additive layer (no content changes). Opt-in via data-ps-shell="standard".
   Storage keys (read by ps-theme-pack.js):
     ps_shell = legacy|standard
     ps_ui_theme = neo-soft|paper|ink
     ps_bg = auto|black|white|grey|orange
*/

:root{
  --psPack-bg-black:  #0b0b0f;
  --psPack-bg-grey:   #14151a;
  --psPack-bg-white:  #f3f0ea;
  --psPack-bg-orange: #d27a2e;

  --psPack-radius-xl: 18px;
  --psPack-radius-lg: 14px;
  --psPack-radius-md: 12px;

  --psPack-nav-h: 64px;
  --psPack-nav-gap: 6px;

  /* Dock (bottom bar) follows the site's primary dark/light theme.
     We map to Theme Pack tokens by default, but override on html[data-theme="light"]. */
  --psDock-ink: var(--psPack-ink);
  --psDock-ink-dim: var(--psPack-ink-dim);
  --psDock-line: var(--psPack-line);
  --psDock-nav-bg: var(--psPack-nav-bg);
  --psDock-nav-blur: var(--psPack-nav-blur);
  --psDock-nav-active: var(--psPack-nav-active);
}

html[data-theme="light"]{
  --psDock-ink: rgba(0,0,0,0.90);
  --psDock-ink-dim: rgba(0,0,0,0.66);
  --psDock-line: rgba(0,0,0,0.18);
  --psDock-nav-bg: rgba(243,240,234,0.96);
  --psDock-nav-blur: blur(10px);
  --psDock-nav-active: rgba(0,0,0,0.10);
}

html[data-theme="dark"]{
  --psDock-ink: rgba(255,255,255,0.88);
  --psDock-ink-dim: rgba(255,255,255,0.58);
  --psDock-line: rgba(255,255,255,0.12);
  --psDock-nav-bg: rgba(16,17,20,0.92);
  --psDock-nav-blur: blur(10px);
  --psDock-nav-active: rgba(255,255,255,0.14);
}

/* redesign_dock — Theme-driven dock tokens:
   Paper is the only "light" preset; Bitcoin/RitualPlus remain dark-first. */
html[data-ps-preset="paper"]{
  --psDock-ink: rgba(0,0,0,0.90);
  --psDock-ink-dim: rgba(0,0,0,0.66);
  --psDock-line: var(--paper-line, rgba(0,0,0,0.14));
  --psDock-nav-bg: color-mix(in srgb, var(--paper-surface-strong, rgba(248,248,250,0.96)) 94%, transparent);
  --psDock-nav-blur: blur(10px);
  --psDock-nav-active: rgba(0,0,0,0.08);
}
html[data-ps-preset="bitcoin"]{
  --psDock-nav-bg: rgba(7,8,11,0.90);
  --psDock-line: rgba(90,255,160,0.14);
}
html[data-ps-preset="ritualplus"]{
  --psDock-nav-bg: rgba(10,6,8,0.92);
  --psDock-line: rgba(255,90,90,0.20);
}
html[data-ps-preset="invaders"]{
  --psDock-nav-bg: rgba(7,12,30,0.92);
  --psDock-line: rgba(255,79,207,0.22);
}

/* Theme tokens (only used by this pack; does not replace the site's own theme system) */
html[data-ps-ui-theme="neo-soft"]{
  --psPack-ink: rgba(255,255,255,0.88);
  --psPack-ink-dim: rgba(255,255,255,0.58);
  --psPack-line: rgba(255,255,255,0.12);
  --psPack-surface: rgba(255,255,255,0.06);
  --psPack-surface-2: rgba(255,255,255,0.10);
  --psPack-nav-bg: rgba(16,17,20,0.92);
  --psPack-nav-blur: blur(10px);
  --psPack-nav-active: rgba(255,255,255,0.14);
}

html[data-ps-ui-theme="paper"]{
  --psPack-ink: rgba(0,0,0,0.90);
  --psPack-ink-dim: rgba(0,0,0,0.66);
  --psPack-line: var(--paper-line, rgba(0,0,0,0.18));
  --psPack-surface: var(--paper-surface-soft, rgba(255,255,255,0.70));
  --psPack-surface-2: rgba(0,0,0,0.07);
  --psPack-nav-bg: color-mix(in srgb, var(--paper-bg, #f3f0ea) 96%, transparent);
  --psPack-nav-blur: blur(10px);
  --psPack-nav-active: rgba(0,0,0,0.10);
}

html[data-ps-ui-theme="ink"]{
  --psPack-ink: rgba(255,255,255,0.90);
  --psPack-ink-dim: rgba(255,255,255,0.62);
  --psPack-line: rgba(255,255,255,0.10);
  --psPack-surface: rgba(255,255,255,0.05);
  --psPack-surface-2: rgba(255,255,255,0.10);
  --psPack-nav-bg: rgba(0,0,0,0.84);
  --psPack-nav-blur: blur(12px);
  --psPack-nav-active: rgba(255,255,255,0.14);
}

/* Background presets (resolved by JS: data-ps-bg set to black/white/grey/orange) */
html[data-ps-shell="standard"][data-ps-bg="black"] body{ background: var(--psPack-bg-black) !important; background-image:none !important; }
html[data-ps-shell="standard"][data-ps-bg="grey"] body{ background: var(--psPack-bg-grey) !important; background-image:none !important; }
html[data-ps-shell="standard"][data-ps-bg="white"] body{ background: var(--psPack-bg-white) !important; background-image:none !important; }
html[data-ps-shell="standard"][data-ps-bg="orange"] body{ background: var(--psPack-bg-orange) !important; background-image:none !important; }

/* P0.1 — White theme legibility (standard shell) */
html[data-theme="light"][data-ps-shell="standard"][data-ps-bg="white"],
html[data-theme="light"][data-ps-shell="standard"][data-ps-ui-theme="paper"],
html[data-theme="dark"][data-ps-shell="standard"][data-ps-ui-theme="paper"]{
  /* Text */
  --muted: rgba(0,0,0,.78);
  --color-text-secondary: rgba(0,0,0,.78);
  --color-text-tertiary: rgba(0,0,0,.68);

  /* Separation */
  --border: var(--paper-line, rgba(0,0,0,.18));
  --color-border-primary: var(--paper-line, rgba(0,0,0,.18));
  --color-border-secondary: var(--paper-line-strong, rgba(0,0,0,.26));

  /* Surfaces */
  --card: var(--paper-surface-strong, rgba(255,255,255,.92));
  --color-bg-secondary: var(--paper-surface-strong, rgba(255,255,255,.92));
  --color-bg-tertiary: rgba(0,0,0,.04);

  /* Menu + inputs */
  --menu-link-bg: rgba(0,0,0,.04);
  --menu-link-border: rgba(0,0,0,.16);
  --menu-link-hover-bg: rgba(0,0,0,.06);
  --menu-link-hover-border: rgba(0,0,0,.24);
  --menu-btn-border: rgba(0,0,0,.18);
  --menu-panel-border: rgba(0,0,0,.16);
}
html[data-theme="light"][data-ps-shell="standard"][data-ps-ui-theme="paper"] body{
  background: var(--paper-shell-bg, color-mix(in srgb, var(--paper-surface-strong, rgba(226,221,212,.94)) 94%, transparent)) !important;
}

/* Ritual shell: keep legacy layout intact, but make room for the app-like bottom bar */
html[data-ps-shell="standard"] body{
  /* Theme Pack: standard shell should not use the legacy background artwork */
  --site-bg-image: none !important;
  background-image: none !important;
  padding-bottom: calc(var(--psPack-nav-h) + 12px + env(safe-area-inset-bottom));
}

/* Optional subtle "frame" feel for cards (only in standard shell) */
html[data-ps-shell="standard"] .card{
  border-radius: var(--psPack-radius-xl);
}

/* App-like Bottom Navigation Bar */
.psAppNav{
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-dock);
  background: var(--psDock-nav-bg);
  backdrop-filter: var(--psDock-nav-blur);
  -webkit-backdrop-filter: var(--psDock-nav-blur);
  border-top: 1px solid var(--psDock-line);
  padding: 8px 10px;
  padding-bottom: max(10px, env(safe-area-inset-bottom));
}

.psAppNavInner{
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  gap: var(--psPack-nav-gap);
  max-width: 780px;
  margin: 0 auto;
}

.psAppNavItem{
  appearance: none;
  -webkit-appearance: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 56px;
  padding: 8px 10px;
  border-radius: 16px;
  text-decoration: none;
  color: var(--psDock-ink-dim);
  border: 1px solid transparent;
  user-select: none;
}

.psAppNavItem .psAppNavIcon{
  width: 22px;
  height: 22px;
  display: block;
  opacity: 0.9;
}

.psAppNavItem .psAppNavLabel{
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1;
}

.psAppNavItem.isActive{
  color: var(--psDock-ink);
  background: var(--psDock-nav-active);
  border-color: var(--psDock-line);
}

.psAppNavItem.isLocked{
  opacity: 0.65;
}

.psAppNavItem:active{
  transform: scale(0.98);
}

/* Theme pack controls block (inserted into the Home dropdown) */
.psThemePackBlock{
  margin-top: 10px;
  padding: 10px;
  border-radius: var(--psPack-radius-lg);
  border: 1px solid var(--psPack-line);
  background: var(--psPack-surface);
}

.psThemePackTitle{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
  color: var(--psPack-ink);
  font-size: 12px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  flex-wrap: wrap;
}
.psThemePackTitle .psThemePackMeta{ display:none; }

.psThemePackRow{
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 10px;
  align-items: stretch;
}

.psThemePackBtn{
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid var(--psPack-line);
  background: var(--psPack-surface-2);
  color: var(--psPack-ink);
  padding: 8px 10px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  min-height: 34px;
}

.psThemePackBtn.isActive{
  background: var(--psPack-nav-active);
  border-color: var(--psPack-line);
  box-shadow: 0 0 0 1px rgba(0,0,0,0.10), 0 6px 14px rgba(0,0,0,0.16);
}

.psThemePackHint{
  color: var(--psPack-ink-dim);
  font-size: 11px;
  line-height: 1.25;
}

/* Avoid accidental drawer close when interacting with pack controls */
.psThemePackBlock *{ touch-action: manipulation; }

@media (prefers-reduced-motion: reduce){
  .psAppNavItem:active{ transform: none; }
}


/* Preset row: slightly larger buttons */
.psThemePackRow.psThemePackPresetRow .psThemePackBtn{
  flex: 1 1 90px;
  padding: 11px 14px 11px 30px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  position: relative;
  text-align: left;
  border-radius: 16px;
}
.psThemePackRow.psThemePackPresetRow .psThemePackBtn::before{
  content: '';
  position: absolute;
  left: 12px;
  top: 50%;
  width: 9px;
  height: 9px;
  border-radius: 999px;
  transform: translateY(-50%);
  background: rgba(255,255,255,0.45);
  border: 1px solid var(--psPack-line);
}
.psThemePackRow.psThemePackPresetRow .psThemePackBtn[data-ps-pack-val="ritualplus"]::before{
  background: rgba(255,255,255,0.70);
}
.psThemePackRow.psThemePackPresetRow .psThemePackBtn[data-ps-pack-val="paper"]::before{
  background: rgba(243,240,234,0.95);
}
.psThemePackRow.psThemePackPresetRow .psThemePackBtn[data-ps-pack-val="bitcoin"]::before{
  background: #d27a2e;
}
.psThemePackRow.psThemePackPresetRow .psThemePackBtn[data-ps-pack-val="invaders"]::before{
  background: linear-gradient(135deg, #7ef2ff 0%, #ff4fcf 100%);
}
.psThemePackBtn:focus-visible{
  outline: 2px solid var(--psPack-line);
  outline-offset: 2px;
}

.psThemePackRowTight{
  gap: 10px;
}
.psThemePackBtnGhost{
  padding: 10px 14px;
  border-radius: 16px;
  letter-spacing: 0.06em;
}
.psThemePackBtnGhost.isActive{
  box-shadow: 0 0 0 1px var(--psPack-line), 0 6px 14px rgba(0,0,0,.18);
}
html[data-theme="light"] .psThemePackBtnGhost.isActive{
  box-shadow: 0 0 0 1px rgba(0,0,0,.18), 0 6px 14px rgba(0,0,0,.10);
}

/* Advanced (collapsed by default) */
.psThemePackAdvanced{
  margin-top: 10px;
  border-top: 1px dashed var(--psPack-line);
  padding-top: 10px;
}

.psThemePackAdvanced > summary{
  list-style: none;
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--psPack-ink-dim);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 6px 2px;
}
.psThemePackAdvanced > summary::-webkit-details-marker{ display:none; }

.psThemePackAdvanced[open] > summary{
  color: var(--psPack-ink);
}

.psThemePackAdvancedNote{
  color: var(--psPack-ink-dim);
  font-size: 11px;
  line-height: 1.25;
  margin: 2px 0 10px 0;
  opacity: .95;
}


/* Theme Pack Modal (opens from Settings button in header) */
.psThemePackModal .modalCard{
  position:relative;
  width:min(720px, calc(100vw - 24px));
  max-height:min(640px, calc(100dvh - 24px));
  overflow:auto;
  background:var(--psPack-nav-bg);
  color:var(--psPack-ink);
  border:1px solid var(--psPack-line);
  padding:10px 10px 12px;
}
.psThemePackModal .psThemePackBlock{ margin-top:0; }
.psThemePackModal .psThemePackTitle{ padding-right:40px; margin-bottom:6px; }
.psThemePackModal .psThemePackTitle span[aria-hidden="true"]{ margin-left:auto; }
.psThemePackModal .psThemePackRow{ gap:8px; margin-bottom:8px; }
.psThemePackModal .psThemePackBlock{ padding:10px; }
.psThemePackModalClose{
  z-index:2;
  position:absolute;
  top:6px; right:6px;
  width:36px; height:36px;
  border-radius:12px;
  border:1px solid var(--psPack-line);
  background:transparent;
  color:var(--psPack-ink);
  cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  font-size:22px; line-height:1;
}
.psThemePackModalClose:hover{ background:rgba(255,255,255,.06); }
html[data-ps-ui-theme="paper"] .psThemePackModalClose:hover{ background:rgba(0,0,0,.06); }

/* Theme apply toast + Undo */
#psThemeUndoToast{
  position:fixed;
  left:50%;
  bottom:calc(76px + env(safe-area-inset-bottom));
  transform:translateX(-50%);
  z-index:var(--z-theme-undo);
}
#psThemeUndoToast .psThemeToast{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  border-radius:16px;
  background:var(--psPack-nav-bg);
  color:var(--psPack-ink);
  border:1px solid var(--psPack-line);
  box-shadow:0 12px 26px rgba(0,0,0,.38);
}
#psThemeUndoToast .psThemeToastMsg{
  font-size:12px;
  letter-spacing:.02em;
}
#psThemeUndoToast .psThemeUndoBtn{
  border:1px solid var(--psPack-line);
  background:var(--psPack-surface);
  color:var(--psPack-ink);
  border-radius:12px;
  padding:6px 10px;
  font-size:12px;
  font-weight:650;
  cursor:pointer;
}
@media (max-width: 600px){
  #psThemeUndoToast{ bottom:calc(90px + env(safe-area-inset-bottom)); }
}


/* --------------------------------------------------------------------------
   Presets v0.6 (Ritual+ / Cyber / Bitcoin)
   Goal: match the new "metallic" shell by increasing contrast/specular layers,
   while keeping the changes gated behind data-ps-preset.
   -------------------------------------------------------------------------- */

/* Ritual+ — higher contrast, soft/specular "ritual" */
html.dark[data-ps-preset="ritualplus"]{
  --color-bg-primary: radial-gradient(1100px 700px at 20% -10%, rgba(255,255,255,.08), transparent 60%), rgba(0,0,0,.86);
  --color-bg-secondary: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.06) 62%, rgba(0,0,0,.16) 100%);
  --color-bg-tertiary: rgba(255,255,255,.11);
  --color-border: rgba(255,255,255,.22);

  --ps-shell-bg: linear-gradient(180deg, rgba(255,255,255,.18) 0%, rgba(0,0,0,.62) 58%, rgba(255,255,255,.08) 100%);
  --ps-shell-border: rgba(255,255,255,.26);
  --ps-shell-shadow: 0 18px 52px rgba(0,0,0,.48);
}
html.light[data-ps-preset="ritualplus"]{
  --color-bg-primary: radial-gradient(900px 600px at 20% 0%, rgba(0,0,0,.06), transparent 65%), rgba(255,255,255,.90);
  --color-bg-secondary: linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.70));
  --color-bg-tertiary: rgba(255,255,255,.86);
  --color-border: rgba(0,0,0,.18);

  --ps-shell-bg: linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(240,240,240,.78) 62%, rgba(255,255,255,.92) 100%);
  --ps-shell-border: rgba(0,0,0,.16);
  --ps-shell-shadow: 0 14px 44px rgba(0,0,0,.18);
}

/* Cyber — glossy, black, neon accents */
html[data-ps-preset="cyber"]{
  --accent: rgb(70,255,170);
  --accent2: rgb(255,70,190);
  --accentGreen: rgb(70,255,170);
  --accentRed: rgb(255,70,190);
  --color-bg-primary: radial-gradient(1200px 600px at 20% -10%, rgba(70,255,170,.10), transparent 55%), radial-gradient(900px 600px at 80% 20%, rgba(255,70,190,.08), transparent 60%), #050506;
  --color-bg-secondary: linear-gradient(180deg, rgba(255,255,255,.12) 0%, rgba(255,255,255,.05) 64%, rgba(0,0,0,.18) 100%);
  --color-bg-tertiary: rgba(255,255,255,.10);
  --color-border: rgba(255,255,255,.24);

  --ps-shell-bg: linear-gradient(180deg, rgba(255,255,255,.22) 0%, rgba(0,0,0,.68) 60%, rgba(255,255,255,.10) 100%);
  --ps-shell-border: rgba(255,255,255,.28);
  --ps-shell-shadow: 0 20px 58px rgba(0,0,0,.54);

  --psPack-accent: rgba(70,255,170,.96);
}

/* Bitcoin — black + orange ink */
html[data-ps-preset="bitcoin"]{
  --accent: rgb(255,140,0);
  --accent2: rgb(255,200,90);
  --accentGreen: rgb(255,140,0);
  --accentRed: rgb(255,70,190);
  --color-bg-primary: radial-gradient(1200px 650px at 25% -10%, rgba(255,140,0,.12), transparent 55%), radial-gradient(900px 600px at 80% 20%, rgba(255,200,90,.06), transparent 65%), #050506;
  --color-bg-secondary: linear-gradient(180deg, rgba(255,255,255,.12) 0%, rgba(255,255,255,.05) 64%, rgba(0,0,0,.18) 100%);
  --color-bg-tertiary: rgba(255,255,255,.10);
  --color-border: rgba(255,255,255,.24);

  --ps-shell-bg: linear-gradient(180deg, rgba(255,255,255,.22) 0%, rgba(0,0,0,.70) 62%, rgba(255,255,255,.10) 100%);
  --ps-shell-border: rgba(255,255,255,.28);
  --ps-shell-shadow: 0 20px 58px rgba(0,0,0,.54);

  --psPack-accent: rgba(255,140,0,.96);
}

/* Invaders — deep blue + cyan/magenta neon */
html[data-ps-preset="invaders"]{
  --accent: rgb(255,79,207);
  --accent2: rgb(126,242,255);
  --accentGreen: rgb(255,79,207);
  --accentRed: rgb(255,79,207);
  --color-bg-primary: radial-gradient(1200px 700px at 22% -10%, rgba(255,79,207,.13), transparent 56%), radial-gradient(920px 620px at 82% 18%, rgba(255,79,207,.11), transparent 62%), radial-gradient(760px 520px at 8% 72%, rgba(126,242,255,.06), transparent 64%), #050814;
  --color-bg-secondary: linear-gradient(180deg, rgba(255,255,255,.12) 0%, rgba(255,255,255,.05) 64%, rgba(0,0,0,.18) 100%);
  --color-bg-tertiary: rgba(255,255,255,.10);
  --color-border: rgba(255,79,207,.26);

  --ps-shell-bg: linear-gradient(180deg, rgba(255,255,255,.20) 0%, rgba(8,10,28,.76) 62%, rgba(255,255,255,.10) 100%);
  --ps-shell-border: rgba(255,79,207,.30);
  --ps-shell-shadow: 0 20px 58px rgba(0,0,0,.54);

  --psPack-accent: rgba(255,79,207,.96);
}

/* Cyber compact (opt-in): tighter rhythm, slightly smaller radii */
html.psCyberCompact[data-ps-preset="cyber"]{
  --spacing-lg: 18px;
  --spacing-md: 12px;
  --spacing-sm: 6px;
  --radius: 12px;
}

/* A tiny specular hint on cards for glossy presets */
html[data-ps-preset="cyber"] .entry-card,
html[data-ps-preset="bitcoin"] .entry-card,
html[data-ps-preset="ritualplus"] .entry-card,
html[data-ps-preset="invaders"] .entry-card{
  position: relative;
  overflow: hidden;
}
html[data-ps-preset="cyber"] .entry-card::before,
html[data-ps-preset="bitcoin"] .entry-card::before,
html[data-ps-preset="ritualplus"] .entry-card::before,
html[data-ps-preset="invaders"] .entry-card::before{
  content: "";
  pointer-events: none;
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 42%);
  opacity: .55;
  mix-blend-mode: overlay;
}


/* ---- Mobile Dock (Alpha 02) ---- */
/* When a dock sheet is open, lock background scroll (JS also fixes iOS). */
html.psDockModalOpen, html.psDockModalOpen body{ overflow:hidden; }
.psDockOverlay{ overscroll-behavior: contain; }
.psDockSheetBody{ -webkit-overflow-scrolling: touch; }

@media (max-width: 900px){
  html.psDockOn body{ padding-bottom: calc(var(--psPack-nav-h) + 12px + env(safe-area-inset-bottom)); }
}

.psDockNav .psAppNavItem{ background: transparent; border: 0; cursor: pointer; }


/* Dock: active state for open sheets (Contents/Settings/Find) */
.psDockNav .psAppNavItem.isSheetOpen{
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.22);
  transform: translateY(-1px);
}
html[data-theme="light"] .psDockNav .psAppNavItem.isSheetOpen{
  background: rgba(0,0,0,.06);
  border-color: rgba(0,0,0,.16);
}

.psDockNav .psAppNavItem:active{ transform: translateY(1px); }

/* redesign_dock — Dock-home: active pill on icon (iOS-like). */
.psDockNav.psAppNav{
  padding: 10px 12px;
  padding-bottom: max(12px, env(safe-area-inset-bottom));
  box-shadow: 0 -8px 24px rgba(0,0,0,.22);
}
html[data-ps-preset="paper"] .psDockNav.psAppNav{
  box-shadow: 0 -6px 18px rgba(0,0,0,.12);
}

.psDockNav{
  --psDockPillAlpha: .18;
}
html[data-ps-preset="paper"] .psDockNav{
  --psDockPillAlpha: .14;
}

.psDockNav .psAppNavInner{
  width: min(640px, calc(100% - 4px));
  justify-content: space-between;
  gap: 8px;
  max-width: 640px;
}

.psDockNav .psAppNavItem{
  min-width: 62px;
  min-height: 50px;
  flex: 1 1 0;
  padding: 8px 7px 6px;
  gap: 6px;
  color: var(--psDock-ink-dim);
}

.psDockNav .psAppNavLabel{
  text-transform: none;
  letter-spacing: 0.01em;
  font-weight: 600;
  font-size: 11px;
  line-height: 1.1;
  min-height: 12px;
  white-space: nowrap;
  color: inherit;
}

/* topbar_and_effects (PATCH) — dock-home has 5 items; tighten on small screens. */
@media (max-width: 390px){
  .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem{
    min-width: 56px;
    padding: 8px 5px 6px;
  }
  .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavLabel{
    font-size: 10px;
  }
}
@media (max-width: 360px){
  .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem{
    min-width: 52px;
    padding: 8px 4px 6px;
  }
  .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavLabel{
    font-size: 9px;
  }
}

.psDockNav .psAppNavItem .psAppNavIcon{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 32px;
  border-radius: 999px;
  flex: 0 0 auto;
}
.psDockNav .psAppNavItem .psAppNavIcon > svg{
  position: relative;
  z-index: var(--z-base);
}

.psDockNav .psAppNavItem:is(.isActive,.isSheetOpen){
  color: var(--color-accent-primary, var(--accent));
}
.psDockNav .psAppNavItem.isHere{
  color: var(--color-accent-primary, var(--accent));
  cursor: default;
  pointer-events: none;
  opacity: 1;
}
.psDockNav .psAppNavItem.isHere .psAppNavIcon::before{
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: currentColor;
  opacity: .11;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
html[data-ps-preset="paper"] .psDockNav .psAppNavItem.isHere .psAppNavIcon::before{
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.06);
}
.psDockNav .psAppNavItem.isHere .psAppNavLabel{
  font-weight: 700;
}

/* Kill legacy "sheet open" background/border in dock-home: the icon pill is the highlight. */
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem.isSheetOpen{
  background: transparent;
  border-color: transparent;
  transform: none;
}

/* Dock-page: when Find sheet is open, use the same "icon pill" language (neutral). */
.psDockNav[data-ps-nav-mode="dock-page"] .psAppNavItem.isSheetOpen{
  color: var(--color-accent-primary, var(--accent));
  background: transparent;
  border-color: transparent;
  transform: none;
}
.psDockNav[data-ps-nav-mode="dock-page"] .psAppNavItem.isSheetOpen .psAppNavIcon::before{
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: currentColor;
  opacity: var(--psDockPillAlpha);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
html[data-ps-preset="paper"] .psDockNav[data-ps-nav-mode="dock-page"] .psAppNavItem.isSheetOpen .psAppNavIcon::before{
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.06);
}

/* Active pill: icon only */
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem:is(.isActive,.isSheetOpen) .psAppNavIcon::before{
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: currentColor;
  opacity: var(--psDockPillAlpha);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
html[data-ps-preset="paper"] .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem:is(.isActive,.isSheetOpen) .psAppNavIcon::before{
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.06);
}

/* Home dock guest lock: visibly locked, never mistaken for active/current */
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem.isLocked{
  opacity: .58;
  color: var(--psDock-ink-dim);
  border-color: transparent;
  background: transparent;
}
html[data-theme="light"] .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem.isLocked{
  border-color: transparent;
  background: transparent;
}
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem.isLocked::after{
  content: '';
  display: none;
}

/* Guest indicator: use the same "badge" stratagem used on Settings (dock-home only). */
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem[data-ps-appnav="blog"].isLocked[data-ps-locked-abbr]{
  position: relative;
}
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem[data-ps-appnav="blog"].isLocked[data-ps-locked-abbr]::after{
  content: '';
  position: absolute;
  right: 8px;
  top: 8px;
  display: inline-block;
  min-width: 18px;
  height: 18px;
  line-height: 18px;
  text-align: center;
  font-size: 11px;
  letter-spacing: 0;
  padding: 0;
  border-radius: 999px;
  border: 1px solid var(--psDock-line);
  background: rgba(0,0,0,0.28);
  color: #cfd3da;
  pointer-events: none;
  opacity: 0.92;
  z-index: 2;
}
.psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem[data-ps-appnav="blog"].isLocked[data-ps-locked-abbr]::before{
  content: '';
  position: absolute;
  right: 12px;
  top: 12px;
  width: 10px;
  height: 10px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cfd3da' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 3;
}
html[data-ps-preset="paper"] .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem[data-ps-appnav="blog"].isLocked[data-ps-locked-abbr]::after{
  background: rgba(255,255,255,0.70);
  color: #4e535d;
  border-color: rgba(0,0,0,0.16);
}
html[data-ps-preset="paper"] .psDockNav[data-ps-nav-mode="dock-home"] .psAppNavItem[data-ps-appnav="blog"].isLocked[data-ps-locked-abbr]::before{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234e535d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");
}

/* Dock micro-accent (active context only): Blog green, Resources orange */
.psDockNav .psAppNavItem[data-ps-appnav]{
  position: relative;
}
/* redesign_dock_v2: active pill already communicates state; avoid extra underline in dock. */
.psDockNav .psAppNavItem[data-ps-appnav].isActive:not(.isLocked)::after{ content: none; }

.psDockOverlay{
  position: fixed;
  inset: 0;
  z-index: var(--z-dock-sheet);
  display: none;
  align-items: flex-end;
  justify-content: center;
  padding: 12px;
  padding-bottom: calc(12px + env(safe-area-inset-bottom));
  background: rgba(0,0,0,.45);
  backdrop-filter: blur(12px) saturate(150%);
  -webkit-backdrop-filter: blur(12px) saturate(150%);
  --psDock-sheet-bg: rgba(12,12,14,.86);
  --psDock-sheet-border: rgba(255,255,255,.14);
  --psDock-sheet-shadow: 0 18px 48px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.08);
  --psDock-sheet-head-line: rgba(255,255,255,.10);
  --psDock-close-bg: rgba(255,255,255,.06);
  --psDock-close-border: rgba(255,255,255,.14);
}
html[data-theme="light"] .psDockOverlay{ background: rgba(0,0,0,.28); }
.psDockOverlay.open{ display: flex; }

/* ---- PWA advise (iOS Safari) ---- */
.psPwaAdvise{
  position: fixed;
  inset: 0;
  z-index: var(--z-dock-overlay); /* under dock overlay (10050), above dock nav (10000) */
  display: none;
  align-items: flex-end;
  justify-content: center;
  padding: 12px;
  padding-bottom: calc(12px + env(safe-area-inset-bottom));
  background: rgba(0,0,0,.38);
  backdrop-filter: blur(10px) saturate(140%);
  -webkit-backdrop-filter: blur(10px) saturate(140%);
}
html[data-theme="light"] .psPwaAdvise{ background: rgba(0,0,0,.22); }
.psPwaAdvise.open{ display: flex; }

.psPwaAdviseSheet{
  width: min(520px, calc(100% - 24px));
  overflow: hidden;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(12,12,14,.86);
  box-shadow: 0 18px 48px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.10);
}
html[data-theme="light"] .psPwaAdviseSheet{
  background: rgba(250,250,252,.96);
  border-color: rgba(0,0,0,.12);
  box-shadow: 0 18px 48px rgba(0,0,0,.24), inset 0 1px 0 rgba(0,0,0,.06);
}
.psPwaAdviseHead{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 14px 12px;
  border-bottom: 1px solid rgba(255,255,255,.10);
}
html[data-theme="light"] .psPwaAdviseHead{ border-bottom-color: rgba(0,0,0,.10); }
.psPwaAdviseTitle{
  font-weight: 850;
  letter-spacing: .01em;
  font-size: 15px;
}
.psPwaAdviseClose{
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color: inherit;
  width: 40px;
  height: 40px;
  border-radius: 14px;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
html[data-theme="light"] .psPwaAdviseClose{ border-color: rgba(0,0,0,.12); background: rgba(0,0,0,.04); }
.psPwaAdviseBody{ padding: 12px 14px 6px; }
.psPwaAdviseSteps{
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 8px;
  font-size: 14px;
}
.psPwaAdviseNote{
  margin-top: 10px;
  opacity: .72;
  font-size: 13px;
  line-height: 1.35;
}
.psPwaAdviseActions{
  padding: 12px 14px 14px;
  display: flex;
  justify-content: flex-end;
}
.psPwaAdviseOk{
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.08);
  color: inherit;
  border-radius: 16px;
  padding: 12px 16px;
  font-weight: 850;
  cursor: pointer;
  min-width: 120px;
}
html[data-theme="light"] .psPwaAdviseOk{ border-color: rgba(0,0,0,.12); background: rgba(0,0,0,.05); }
.psPwaAdviseOk:active{ transform: translateY(1px); }

html[data-ps-preset="paper"] .psDockOverlay{
  background: var(--paper-overlay, rgba(0,0,0,.22));
  --psDock-sheet-bg: var(--paper-surface-strong, rgba(255,255,255,.92));
  --psDock-sheet-border: var(--paper-line, rgba(0,0,0,.12));
  --psDock-sheet-shadow: 0 18px 48px rgba(0,0,0,.20), inset 0 1px 0 rgba(0,0,0,.04);
  --psDock-sheet-head-line: color-mix(in srgb, var(--paper-line, rgba(0,0,0,.12)) 84%, transparent);
  --psDock-close-bg: rgba(0,0,0,.04);
  --psDock-close-border: var(--paper-line, rgba(0,0,0,.12));
}

/* Splash contract: while splash is loading/open, hide dock and overlay (no click-through). */
html[data-splash="loading"] #psAppNav,
body.splashOpen #psAppNav{
  display: none !important;
}
html[data-splash="loading"] #psDockOverlay{
  display: none !important;
}

.psDockSheet{
  width: min(560px, calc(100% - 24px));
  max-height: 72vh;
  overflow: hidden;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(12,12,14,.86);
  backdrop-filter: blur(18px) saturate(170%);
  -webkit-backdrop-filter: blur(18px) saturate(170%);
  box-shadow: 0 18px 48px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.10);
}
html[data-theme="light"] .psDockSheet{
  background: rgba(250,250,252,.96);
  border-color: rgba(0,0,0,.12);
  box-shadow: 0 18px 48px rgba(0,0,0,.28), inset 0 1px 0 rgba(0,0,0,.06);
}

.psDockSheet{
  background: var(--psDock-sheet-bg);
  border-color: var(--psDock-sheet-border);
  box-shadow: var(--psDock-sheet-shadow);
}

.psDockSheetHead{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  gap: 12px;
  border-bottom: 1px solid var(--psDock-sheet-head-line);
}
html[data-theme="light"] .psDockSheetHead{ border-bottom-color: rgba(0,0,0,.10); }

.psDockSheetTitle{ font-weight: 700; letter-spacing: .02em; font-size: 13px; }
.psDockSheetClose{
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid var(--psDock-close-border);
  background: var(--psDock-close-bg);
  color: inherit;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
html[data-theme="light"] .psDockSheetClose{ border-color: rgba(0,0,0,.12); background: rgba(0,0,0,.04); }

.psDockSheetBody{ padding: 14px 16px 18px; overflow: auto; max-height: calc(72vh - 56px); }

.psDockLink{
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 14px;
  border-radius: 16px;
  text-decoration: none;
  color: inherit;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  margin-bottom: 10px;
}
html[data-theme="light"] .psDockLink{ border-color: rgba(0,0,0,.10); background: rgba(0,0,0,.03); }
.psDockLink:active{ transform: translateY(1px); }
.psDockLinkIcon{ width: 22px; height: 22px; display: inline-flex; align-items:center; justify-content:center; opacity: .92; }
.psDockLinkLabel{ font-weight: 650; }
.psDockLink.isLocked{ opacity: .78; }
.psDockLock{ margin-left: auto; opacity: .88; }

.psDockGroup{ margin-bottom: 16px; }
.psDockGroupTitle{ font-size: 12px; opacity: .72; letter-spacing: .08em; text-transform: uppercase; margin: 2px 0 8px; }
.psDockPills{ display: flex; gap: 10px; flex-wrap: wrap; align-items:center; }
.psDockPresetPills{
  gap: 10px;
  margin-top: 10px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.psDockPresetPills .psDockThemePill{
  min-height: 56px;
  border-radius: 16px;
  justify-content: center;
  padding: 0;
  border-color: rgba(255,255,255,.20);
  background: rgba(255,255,255,.08);
}
.psDockThemePill:not(.isActive){ opacity: .88; }
.psDockThemePill.isActive{
  box-shadow: 0 0 0 1px rgba(255,255,255,.16) inset, 0 8px 18px rgba(0,0,0,.24);
}
html[data-theme="light"] .psDockPresetPills .psDockThemePill{
  border-color: rgba(0,0,0,.18);
  background: rgba(0,0,0,.05);
}
html[data-theme="light"] .psDockThemePill.isActive{
  box-shadow: 0 0 0 1px rgba(0,0,0,.12) inset, 0 8px 16px rgba(0,0,0,.12);
}
.psDockThemeGlyph{
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  line-height: 1;
  font-weight: 800;
  opacity: .82;
  transition: opacity .16s ease, transform .16s ease, filter .16s ease;
}
.psDockThemePill.isActive .psDockThemeGlyph{
  opacity: 1;
  transform: scale(1.06);
}
.psDockThemeGlyph--ritual{
  color: #ff5a5a;
  text-shadow: 0 0 10px rgba(255,90,90,.34);
}
.psDockThemeGlyph--paper{ color: rgba(230,224,212,.96); }
.psDockThemeGlyph--bitcoin{ color: #f7931a; }
.psDockThemeGlyph--invaders{
  color: #ff4fcf;
  text-shadow: 0 0 12px rgba(255,79,207,.34);
}
html[data-theme="light"] .psDockThemeGlyph--ritual{
  color: #d83a3a;
  text-shadow: none;
}
html[data-theme="light"] .psDockThemeGlyph--paper{ color: rgba(45,40,34,.74); }
.psDockPill{
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color: inherit;
  border-radius: 999px;
  padding: 11px 16px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 650;
}
html[data-theme="light"] .psDockPill{ border-color: rgba(0,0,0,.12); background: rgba(0,0,0,.04); }
.psDockPill.isActive{ outline: 2px solid rgba(255,255,255,.22); }
html[data-theme="light"] .psDockPill.isActive{ outline-color: rgba(0,0,0,.18); }

/* Dock Settings: contact fan (icon pills) */
.psDockContactPills{ gap: 10px; }
.psDockContactBtn{
  width: 52px;
  min-width: 52px;
  height: 44px;
  padding: 0;
  justify-content: center;
  font-size: 18px;
  border-radius: 16px;
}

/* Dock Settings: Credits stamp */
.psDockCreditsStamp.siteCopyright{
  margin: 0;
  text-align: left;
  opacity: .88;
  font-size: 12px;
  line-height: 1.3;
}

/* Light theme: slightly stronger contrast for secondary labels inside dock sheets. */
html[data-theme="light"] .psDockGroupTitle{ opacity: .82; }
html[data-theme="light"] .psDockFindHint{ opacity: .80; }
html[data-theme="light"] .psDockThemesMeta{ opacity: .86; }
.psDockPillDot{ opacity: .9; }

.psDockPrimary{
  width: 100%;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.08);
  color: inherit;
  border-radius: 16px;
  padding: 12px 14px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-weight: 800;
  text-decoration: none;
}
html[data-theme="light"] .psDockPrimary{ border-color: rgba(0,0,0,.12); background: rgba(0,0,0,.05); }
.psDockPrimaryIcon{ opacity: .9; }

/* Dock Settings: make Themes entry point prominent (shows active preset). */
.psDockThemesPrimary{ justify-content: flex-start; }
.psDockThemesMeta{ margin-left: 6px; font-size: 12px; opacity: .78; font-weight: 800; letter-spacing: .02em; }

.psDockFind{ display:flex; flex-direction: column; gap: 10px; }
.psDockFindInput{
  width: 100%;
  border-radius: 14px;
  padding: 12px 12px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color: inherit;
}
html[data-theme="light"] .psDockFindInput{ border-color: rgba(0,0,0,.12); background: rgba(0,0,0,.04); }
.psDockFindHint{ font-size: 13px; opacity: .72; }
.psDockPolicy{
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.psDockPolicyCard{
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.03);
  border-radius: 16px;
  padding: 12px;
}
html[data-theme="light"] .psDockPolicyCard{
  border-color: rgba(0,0,0,.12);
  background: rgba(0,0,0,.03);
}
.psDockPolicyH{
  margin: 0 0 5px;
  font-size: 13px;
  letter-spacing: .05em;
  color: var(--color-accent-primary, var(--accent));
}
.psDockPolicyP{
  margin: 0 0 12px;
  opacity: .9;
  line-height: 1.48;
  font-size: 13px;
}
.psDockPolicyLink{
  color: var(--color-accent-primary, var(--accent));
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* EP2 — Glass Pack (desktop-only, safe)
   Goal: premium glass feel without touching templates.
   Gate: hover-capable devices + backdrop-filter support.
*/
@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  @media (hover: hover) and (min-width: 901px) {
    main.wrap > section.card,
    main.wrap > .card,
    .postCard,
    .resourceCard,
    .searchCard,
    .blogFeatureCard,
    .moodCard,
    .psBookCard,
    .lockedCard{
      background: rgba(255,255,255,.045);
      border-color: rgba(255,255,255,.14);
      backdrop-filter: blur(18px) saturate(160%);
      -webkit-backdrop-filter: blur(18px) saturate(160%);
      box-shadow: 0 14px 48px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.08);
    }
    html[data-theme="light"] main.wrap > section.card,
    html[data-theme="light"] main.wrap > .card,
    html[data-theme="light"] .postCard,
    html[data-theme="light"] .resourceCard,
    html[data-theme="light"] .searchCard,
    html[data-theme="light"] .blogFeatureCard,
    html[data-theme="light"] .moodCard,
    html[data-theme="light"] .psBookCard,
    html[data-theme="light"] .lockedCard{
      background: rgba(255,255,255,.82);
      border-color: rgba(0,0,0,.14);
      backdrop-filter: blur(18px) saturate(160%);
      -webkit-backdrop-filter: blur(18px) saturate(160%);
      box-shadow: 0 14px 48px rgba(0,0,0,.22), inset 0 1px 0 rgba(0,0,0,.06);
    }
  }
}

/* Invaders parity: keep the same deep-black base on non-dashboard pages too.
   The generic Glass Pack layer above is intentionally softened for this preset. */
html[data-ps-preset="invaders"] body[data-page="blog"] main.wrap > section.card,
html[data-ps-preset="invaders"] body[data-page="resources"] main.wrap > section.card,
html[data-ps-preset="invaders"] body[data-page="archive"] main.wrap > section.card,
html[data-ps-preset="invaders"] body[data-page="dashboard"] main.wrap > section.card,
html[data-ps-preset="invaders"] body[data-page="post"] main.wrap > section.card,
html[data-ps-preset="invaders"] body[data-page^="dash-"] main.wrap > section.card{
  background: rgba(7,10,24,.66);
  border-color: rgba(255,79,207,.22);
  box-shadow: 0 14px 44px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,79,207,.08);
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  @media (hover: hover) and (min-width: 901px) {
    html[data-ps-preset="invaders"] main.wrap > section.card,
    html[data-ps-preset="invaders"] main.wrap > .card,
    html[data-ps-preset="invaders"] .postCard,
    html[data-ps-preset="invaders"] .resourceCard,
    html[data-ps-preset="invaders"] .searchCard,
    html[data-ps-preset="invaders"] .blogFeatureCard,
    html[data-ps-preset="invaders"] .moodCard,
    html[data-ps-preset="invaders"] .psBookCard,
    html[data-ps-preset="invaders"] .lockedCard{
      background: rgba(7,10,24,.66);
      border-color: rgba(255,79,207,.22);
      box-shadow: 0 14px 44px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,79,207,.08);
    }
  }
}

/* Bitcoin parity: page-aware cards — deep dark base with orange accent. */
html[data-ps-preset="bitcoin"] :where(body[data-page="blog"], body[data-page="resources"], body[data-page="archive"], body[data-page="dashboard"], body[data-page="post"], body[data-page^="dash-"]) main.wrap > section.card{
  background: rgba(5,6,8,.64);
  border-color: rgba(90,255,160,.18);
  box-shadow: 0 14px 44px rgba(0,0,0,.60), inset 0 1px 0 rgba(90,255,160,.06);
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  @media (hover: hover) and (min-width: 901px) {
    html[data-ps-preset="bitcoin"] :where(main.wrap > section.card, main.wrap > .card, .postCard, .resourceCard, .searchCard, .blogFeatureCard, .moodCard, .psBookCard, .lockedCard){
      background: rgba(5,6,8,.64);
      border-color: rgba(90,255,160,.18);
      box-shadow: 0 14px 44px rgba(0,0,0,.60), inset 0 1px 0 rgba(90,255,160,.06);
    }
  }
}

/* RitualPlus parity: page-aware cards — warm dark base with red accent. */
html[data-ps-preset="ritualplus"] :where(body[data-page="blog"], body[data-page="resources"], body[data-page="archive"], body[data-page="dashboard"], body[data-page="post"], body[data-page^="dash-"]) main.wrap > section.card{
  background: rgba(10,6,8,.62);
  border-color: rgba(255,90,90,.18);
  box-shadow: 0 14px 44px rgba(0,0,0,.58), inset 0 1px 0 rgba(255,90,90,.06);
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  @media (hover: hover) and (min-width: 901px) {
    html[data-ps-preset="ritualplus"] :where(main.wrap > section.card, main.wrap > .card, .postCard, .resourceCard, .searchCard, .blogFeatureCard, .moodCard, .psBookCard, .lockedCard){
      background: rgba(10,6,8,.62);
      border-color: rgba(255,90,90,.18);
      box-shadow: 0 14px 44px rgba(0,0,0,.58), inset 0 1px 0 rgba(255,90,90,.06);
    }
  }
}

/* Paper parity: page-aware cards — light parchment with subtle shadow. */
html[data-ps-preset="paper"] :where(body[data-page="blog"], body[data-page="resources"], body[data-page="archive"], body[data-page="dashboard"], body[data-page="post"], body[data-page^="dash-"]) main.wrap > section.card{
  background: rgba(220,215,206,.86);
  border-color: rgba(34,30,24,.14);
  box-shadow: 0 10px 32px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.50);
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  @media (hover: hover) and (min-width: 901px) {
    html[data-ps-preset="paper"] :where(main.wrap > section.card, main.wrap > .card, .postCard, .resourceCard, .searchCard, .blogFeatureCard, .moodCard, .psBookCard, .lockedCard){
      background: rgba(220,215,206,.86);
      border-color: rgba(34,30,24,.14);
      box-shadow: 0 10px 32px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.50);
    }
  }
}

/* Alpha04 — Settings + Theme visibility */
.psThemePackTitle .psThemePackMeta{
  margin-left:auto;
  opacity:0.75;
  font-size:11px;
  letter-spacing:0.12em;
  text-transform:uppercase;
  padding-left:12px;
}
.psThemePackRowTight{
  gap:8px;
}
.psThemePackBtnGhost{
  padding:8px 12px;
  min-height:34px;
  font-size:12px;
  letter-spacing:0.02em;
  opacity:0.95;
}
.psThemePackBtnGhost.isActive{
  opacity:1;
  border-color:rgba(255,255,255,0.26);
  background:rgba(255,255,255,0.08);
  box-shadow:0 0 0 2px rgba(255,255,255,0.16) inset, 0 8px 18px rgba(0,0,0,0.22);
}
html[data-theme="light"] .psThemePackBtnGhost.isActive{
  border-color:rgba(0,0,0,0.20);
  background:rgba(0,0,0,0.03);
  box-shadow:0 0 0 1px rgba(0,0,0,0.05) inset, 0 10px 22px rgba(0,0,0,0.10);
}
.psShellSettingsBlocks{
  display:grid;
  gap:10px;
}

/* Settings: Credits / build stamp */
.psControlsSettings .psShellCreditsStamp{
  margin: 0;
  text-align: left;
  opacity: .88;
  font-size: 12px;
  line-height: 1.3;
}
.psControlsSettings .psShellCreditsStamp .siteSep{ opacity: .55; }
.psControlsSettings .psShellCreditsStamp .siteMode{ opacity: .75; }

#psShellThemeMeta:not(:empty)::before{
  content:"·";
  margin-right:6px;
  opacity:0.65;
}

#psThemeQuickBtn, #psThemePackBtn, #psSettingsThemesBtn{
  position:relative;
}
#psThemePackBtn,
#psSettingsThemesBtn{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  padding-right:54px;
}
#psThemeQuickBtn[data-ps-preset-abbr]::after{
  content: attr(data-ps-preset-abbr);
  position:absolute;
  right:-3px;
  bottom:-3px;
  font-size:9px;
  letter-spacing:0.12em;
  padding:1px 5px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.16);
  background:rgba(0,0,0,0.25);
  color:rgba(255,255,255,0.90);
  pointer-events:none;
}
html[data-theme="light"] #psThemeQuickBtn[data-ps-preset-abbr]::after{
  border-color:rgba(0,0,0,0.16);
  background:rgba(255,255,255,0.62);
  color:rgba(0,0,0,0.84);
}
#psThemePackBtn[data-ps-preset-abbr]::after,
#psSettingsThemesBtn[data-ps-preset-abbr]::after{
  content: attr(data-ps-preset-abbr);
  position:absolute;
  right:10px;
  top:50%;
  transform:translateY(-50%);
  font-size:10px;
  letter-spacing:0.12em;
  padding:2px 7px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.14);
  background:rgba(0,0,0,0.18);
  color:rgba(255,255,255,0.88);
  pointer-events:none;
}
html[data-theme="light"] #psThemePackBtn[data-ps-preset-abbr]::after,
html[data-theme="light"] #psSettingsThemesBtn[data-ps-preset-abbr]::after{
  border-color:rgba(0,0,0,0.16);
  background:rgba(255,255,255,0.62);
  color:rgba(0,0,0,0.84);
}

/* Alpha06 — Mobile dock: preset badge on Settings */
.psDockNav .psAppNavItem[data-act="settings"][data-ps-preset-abbr]{
  position: relative;
}
.psDockNav .psAppNavItem[data-act="settings"][data-ps-preset-abbr]::after{
  content: attr(data-ps-preset-abbr);
  position: absolute;
  right: 8px;
  top: 8px;
  display: inline-block;
  max-width: 38px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 9px;
  letter-spacing: 0.10em;
  padding: 1px 5px;
  border-radius: 999px;
  border: 1px solid var(--psDock-line);
  background: rgba(0,0,0,0.20);
  color: var(--psDock-ink);
  pointer-events: none;
  opacity: 0.92;
  z-index: 2;
}
html[data-theme="light"] .psDockNav .psAppNavItem[data-act="settings"][data-ps-preset-abbr]::after{
  background: rgba(255,255,255,0.70);
  color: rgba(0,0,0,0.84);
  border-color: rgba(0,0,0,0.16);
}


/* Alpha04 — Desktop tray modal hardening (no click-through + focus) */
@media (min-width: 901px){
  .psTrayBackdrop{
    position: fixed;
    inset: 0;
    z-index: var(--z-dock-overlay);
    background: rgba(0,0,0,.55);
    backdrop-filter: blur(14px) saturate(160%);
    -webkit-backdrop-filter: blur(14px) saturate(160%);
  }
  html[data-theme="light"] .psTrayBackdrop{ background: rgba(0,0,0,.30); }
  html[data-theme="light"][data-ps-ui-theme="paper"] .psTrayBackdrop{ background: rgba(0,0,0,.22); }

  /* Ensure trays stay above the backdrop */
  body.psTrayOpen #fixedHeader{ z-index: var(--z-tray-header); }
  body.psTrayOpen #fixedHeader .psShell{ position: relative; z-index: var(--z-tray-header); }
  body.psTrayOpen #fixedHeader .psControlsTray{ position: relative; z-index: calc(var(--z-tray-header) + 1); }
}

/* Alpha04 — Paper polish */
html[data-theme="light"][data-ps-ui-theme="paper"] body::after{
  opacity:0.008;
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceCard,
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceFull{
  background: var(--paper-surface-soft, rgba(255,255,255,0.68));
  border-color: var(--paper-line, rgba(0,0,0,0.12));
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceRefs{
  background: color-mix(in srgb, var(--paper-surface-soft, rgba(216,211,202,.82)) 72%, rgba(0,0,0,.08));
  border-color: color-mix(in srgb, var(--paper-line, rgba(34,30,24,.18)) 88%, transparent);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceList{
  color: rgba(0,0,0,0.80);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceList a{
  color: rgba(0,0,0,0.88);
  border-bottom-color: rgba(0,0,0,0.22);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceList a:visited{
  color: rgba(0,0,0,0.78);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceList a:hover{
  border-bottom-color: rgba(255,90,90,0.55);
}

/* Paper polish (editoriale): cards un filo più presenti, meno "sticker" */
html[data-theme="light"][data-ps-ui-theme="paper"] .post,
html[data-theme="light"][data-ps-ui-theme="paper"] .quote,
html[data-theme="light"][data-ps-ui-theme="paper"] .media{
  background: var(--paper-surface, rgba(255,255,255,0.78));
  border-color: var(--paper-line, rgba(0,0,0,0.14));
}
html[data-theme="light"][data-ps-ui-theme="paper"] .post:hover{
  background: rgba(0,0,0,0.02);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .outLink{
  background: var(--paper-surface-strong, rgba(255,255,255,0.84));
  border-color: var(--paper-line-strong, rgba(0,0,0,0.18));
  box-shadow: 0 0 0 1px rgba(0,0,0,0.05) inset, 0 10px 22px rgba(0,0,0,0.12);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .outLink:hover{
  background: color-mix(in srgb, var(--paper-surface, rgba(220,215,206,.88)) 96%, rgba(0,0,0,.04));
  border-color: color-mix(in srgb, var(--paper-line-strong, rgba(34,30,24,.28)) 92%, transparent);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .resourceToc{
  background: var(--paper-surface, rgba(255,255,255,0.78));
  border-color: var(--paper-line, rgba(0,0,0,0.12));
}


/* Alpha08 — Paper micro-polish (readability): placeholders + light overlays */
/* Placeholders: slightly darker so they read on Paper without becoming “UI noise”. */
html[data-theme="light"][data-ps-ui-theme="paper"] input::placeholder,
html[data-theme="light"][data-ps-ui-theme="paper"] textarea::placeholder{
  color: rgba(0,0,0,0.52);
  opacity: 1;
}

/* Light overlays: reduce saturation a touch on Paper to keep the glass airy. */
html[data-theme="light"][data-ps-ui-theme="paper"] .psDockOverlay{
  background: color-mix(in srgb, var(--paper-overlay, rgba(0,0,0,0.24)) 100%, transparent);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .psDockSheet{
  backdrop-filter: blur(18px) saturate(150%);
  -webkit-backdrop-filter: blur(18px) saturate(150%);
}

@media (min-width: 901px){
  html[data-theme="light"][data-ps-ui-theme="paper"] .psTrayBackdrop{
    background: rgba(0,0,0,.20);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
  }
}


/* Alpha09 — Paper: cards/typography micro-tune (lighter shadow + crisper type) */
html[data-theme="light"][data-ps-ui-theme="paper"] .card{
  /* Override visual-upgrade heavy dark shadow for Paper */
  border-color: rgba(0,0,0,0.12);
  box-shadow:
    0 16px 40px rgba(0,0,0,0.18),
    0 0 0 1px rgba(0,0,0,0.05) inset;
}

@media (hover: hover){
  html[data-theme="light"][data-ps-ui-theme="paper"] .card:hover{
    border-color: rgba(0,0,0,0.18);
    box-shadow:
      0 22px 56px rgba(0,0,0,0.22),
      0 0 0 1px rgba(0,0,0,0.06) inset;
    transform: translateY(-6px) scale(1.01);
  }
}

@media (prefers-reduced-motion: reduce){
  html[data-theme="light"][data-ps-ui-theme="paper"] .card:hover{
    transform:none;
  }
}

/* Typography rhythm inside cards (Paper): slightly tighter headings, calmer body tone */
html[data-theme="light"][data-ps-ui-theme="paper"] .card h1,
html[data-theme="light"][data-ps-ui-theme="paper"] .card h2,
html[data-theme="light"][data-ps-ui-theme="paper"] .card h3{
  color: rgba(0,0,0,0.92);
  letter-spacing: -0.005em;
}
html[data-theme="light"][data-ps-ui-theme="paper"] .card p,
html[data-theme="light"][data-ps-ui-theme="paper"] .card li{
  color: rgba(0,0,0,0.82);
  line-height: 1.45;
}

/* v2.1 — Hero card accent per preset */
html[data-ps-ui-theme="invaders"] body[data-page="resources"] .post.resource-card.resource-card-hero{
  border-color: rgba(255,79,207,.50);
  box-shadow: 0 0 0 1px rgba(255,79,207,.18) inset, 0 0 20px rgba(255,79,207,.08), 0 16px 36px rgba(0,0,0,.48);
}
html[data-ps-ui-theme="bitcoin"] body[data-page="resources"] .post.resource-card.resource-card-hero{
  border-color: rgba(90,255,160,.50);
  box-shadow: 0 0 0 1px rgba(90,255,160,.18) inset, 0 0 20px rgba(90,255,160,.08), 0 16px 36px rgba(0,0,0,.48);
}
html[data-ps-ui-theme="ritualplus"] body[data-page="resources"] .post.resource-card.resource-card-hero{
  border-color: rgba(255,90,90,.50);
  box-shadow: 0 0 0 1px rgba(255,90,90,.18) inset, 0 0 20px rgba(255,90,90,.08), 0 16px 36px rgba(0,0,0,.48);
}
html[data-theme="light"][data-ps-ui-theme="paper"] body[data-page="resources"] .post.resource-card.resource-card-hero{
  border-color: rgba(139,90,43,.32);
  box-shadow: 0 0 0 1px rgba(139,90,43,.14) inset, 0 16px 36px rgba(0,0,0,.14);
}
html[data-theme="light"][data-ps-ui-theme="paper"] .card small,
html[data-theme="light"][data-ps-ui-theme="paper"] .card .meta,
html[data-theme="light"][data-ps-ui-theme="paper"] .card .postMeta,
html[data-theme="light"][data-ps-ui-theme="paper"] .card .resourceMeta{
  color: rgba(0,0,0,0.66);
}


/* Alpha10 (LAB) — Ink parity micro-tune (cards + typography)
   Goal: bring "Ink" preset closer to Paper's editorial clarity, without changing mood.
   Scoped: preset=ink only. */

html.dark[data-ps-preset="ink"] .card,
html[data-theme="dark"][data-ps-preset="ink"] .card{
  background: linear-gradient(180deg, rgba(255,255,255,0.07) 0%, rgba(255,255,255,0.04) 62%, rgba(0,0,0,0.22) 100%);
  border-color: rgba(255,255,255,0.16);
  box-shadow:
    0 18px 52px rgba(0,0,0,0.56),
    0 0 0 1px rgba(255,255,255,0.04) inset;
}

@media (hover: hover){
  html.dark[data-ps-preset="ink"] .card:hover,
  html[data-theme="dark"][data-ps-preset="ink"] .card:hover{
    border-color: rgba(255,255,255,0.22);
    box-shadow:
      0 22px 60px rgba(0,0,0,0.62),
      0 0 0 1px rgba(255,255,255,0.05) inset;
  }
}

/* Typography rhythm inside cards (Ink): slightly calmer contrast, consistent meta tone */
html.dark[data-ps-preset="ink"] .card h1,
html.dark[data-ps-preset="ink"] .card h2,
html.dark[data-ps-preset="ink"] .card h3,
html[data-theme="dark"][data-ps-preset="ink"] .card h1,
html[data-theme="dark"][data-ps-preset="ink"] .card h2,
html[data-theme="dark"][data-ps-preset="ink"] .card h3{
  color: rgba(255,255,255,0.92);
  letter-spacing: -0.006em;
}

html.dark[data-ps-preset="ink"] .card p,
html.dark[data-ps-preset="ink"] .card li,
html[data-theme="dark"][data-ps-preset="ink"] .card p,
html[data-theme="dark"][data-ps-preset="ink"] .card li{
  color: rgba(255,255,255,0.84);
  line-height: 1.48;
}

html.dark[data-ps-preset="ink"] .card small,
html.dark[data-ps-preset="ink"] .card .meta,
html.dark[data-ps-preset="ink"] .card .postMeta,
html.dark[data-ps-preset="ink"] .card .resourceMeta,
html[data-theme="dark"][data-ps-preset="ink"] .card small,
html[data-theme="dark"][data-ps-preset="ink"] .card .meta,
html[data-theme="dark"][data-ps-preset="ink"] .card .postMeta,
html[data-theme="dark"][data-ps-preset="ink"] .card .resourceMeta{
  color: rgba(255,255,255,0.62);
}

/* Ink links inside cards: a touch brighter, keep accent unchanged */
html.dark[data-ps-preset="ink"] .card a,
html[data-theme="dark"][data-ps-preset="ink"] .card a{
  color: rgba(255,255,255,0.92);
  text-decoration-color: rgba(255,255,255,0.26);
}
html.dark[data-ps-preset="ink"] .card a:hover,
html[data-theme="dark"][data-ps-preset="ink"] .card a:hover{
  text-decoration-color: rgba(255,255,255,0.42);
}


/* Alpha11 (LAB) — Ritual+ parity micro-tune (cards + typography)
   Goal: align the default preset with Paper/Ink editorial clarity without changing the Ritual+ mood.
   Scoped: preset=ritualplus only. */

html.dark[data-ps-preset="ritualplus"] .card,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card{
  background: linear-gradient(180deg, rgba(255,255,255,0.09) 0%, rgba(255,255,255,0.05) 60%, rgba(0,0,0,0.24) 100%);
  border-color: rgba(255,255,255,0.18);
  box-shadow:
    0 18px 52px rgba(0,0,0,0.58),
    0 0 0 1px rgba(255,255,255,0.04) inset;
}

@media (hover: hover){
  html.dark[data-ps-preset="ritualplus"] .card:hover,
  html[data-theme="dark"][data-ps-preset="ritualplus"] .card:hover{
    border-color: rgba(255,255,255,0.24);
    box-shadow:
      0 22px 60px rgba(0,0,0,0.64),
      0 0 0 1px rgba(255,255,255,0.05) inset;
  }
}

/* Typography rhythm inside cards (Ritual+): crisp headings, calm body, consistent meta */
html.dark[data-ps-preset="ritualplus"] .card h1,
html.dark[data-ps-preset="ritualplus"] .card h2,
html.dark[data-ps-preset="ritualplus"] .card h3,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card h1,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card h2,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card h3{
  color: rgba(255,255,255,0.94);
  letter-spacing: -0.006em;
}

html.dark[data-ps-preset="ritualplus"] .card p,
html.dark[data-ps-preset="ritualplus"] .card li,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card p,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card li{
  color: rgba(255,255,255,0.86);
  line-height: 1.48;
}

html.dark[data-ps-preset="ritualplus"] .card small,
html.dark[data-ps-preset="ritualplus"] .card .meta,
html.dark[data-ps-preset="ritualplus"] .card .postMeta,
html.dark[data-ps-preset="ritualplus"] .card .resourceMeta,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card small,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card .meta,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card .postMeta,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card .resourceMeta{
  color: rgba(255,255,255,0.63);
}

/* Ritual+ links inside cards: slightly clearer underline, no mood shift */
html.dark[data-ps-preset="ritualplus"] .card a,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card a{
  color: rgba(255,255,255,0.94);
  text-decoration-color: rgba(255,255,255,0.28);
}
html.dark[data-ps-preset="ritualplus"] .card a:hover,
html[data-theme="dark"][data-ps-preset="ritualplus"] .card a:hover{
  text-decoration-color: rgba(255,255,255,0.44);
}


/* Alpha12 (LAB) — Link rhythm + meta spacing parity
   Goal: make link underlines/bottom-lines feel consistent on Paper, and make post meta/date layout more stable on narrow widths.
   Scope: CSS-only, no template edits.
*/

/* Link rhythm: unify bottom-line behavior (lists / toc / refs) */
:where(.resourceList a, .resourceTocList a, .resourceLinks a){
  border-bottom-style: solid;
  border-bottom-width: 1px;
  padding-bottom: 1px;
  transition: border-bottom-color .18s ease, color .18s ease;
}

/* Paper: proper contrast + coherent hover accent across all resource link lists */
html[data-theme="light"][data-ps-ui-theme="paper"] :where(.resourceList a, .resourceTocList a, .resourceLinks a){
  color: rgba(0,0,0,0.86);
  border-bottom-color: rgba(0,0,0,0.22);
}
html[data-theme="light"][data-ps-ui-theme="paper"] :where(.resourceList a:visited, .resourceTocList a:visited, .resourceLinks a:visited){
  color: rgba(0,0,0,0.78);
}
html[data-theme="light"][data-ps-ui-theme="paper"] :where(.resourceList a:hover, .resourceTocList a:hover, .resourceLinks a:hover){
  border-bottom-color: rgba(255,90,90,0.55);
  color: rgba(0,0,0,0.96);
}

/* Meta spacing parity: keep dates aligned on desktop, wrap cleanly on narrow screens */
.postTop .meta{ margin-left: auto; }

@media (max-width: 520px){
  .postTop{ flex-wrap: wrap; row-gap: 6px; }
  .postTop .meta{
    margin-left: 0;
    white-space: normal;
    flex-wrap: wrap;
    row-gap: 6px;
  }
}

/* Alpha13 (LAB) — Bitcoin parity micro-tune (cards + typography + links)
   Goal: bring the Bitcoin preset to the same editorial clarity of Paper/Ink/Ritual+, while keeping the black+orange mood.
   Scope: preset=bitcoin only. CSS-only. */

/* Card surface + depth (Bitcoin) */
html.dark[data-ps-preset="bitcoin"] .card,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card,
html[data-ps-preset="bitcoin"] .card{
  background: linear-gradient(180deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.04) 62%, rgba(0,0,0,0.28) 100%);
  border-color: rgba(255,255,255,0.18);
  box-shadow:
    0 18px 56px rgba(0,0,0,0.62),
    0 0 0 1px rgba(255,255,255,0.04) inset,
    0 0 0 1px rgba(255,140,0,0.06) inset;
}

@media (hover: hover){
  html.dark[data-ps-preset="bitcoin"] .card:hover,
  html[data-theme="dark"][data-ps-preset="bitcoin"] .card:hover,
  html[data-ps-preset="bitcoin"] .card:hover{
    border-color: rgba(255,255,255,0.24);
    box-shadow:
      0 22px 64px rgba(0,0,0,0.68),
      0 0 0 1px rgba(255,255,255,0.05) inset,
      0 0 0 1px rgba(255,140,0,0.10) inset;
  }
}

/* Typography rhythm inside cards (Bitcoin): crisp headings, calm body, consistent meta */
html.dark[data-ps-preset="bitcoin"] .card h1,
html.dark[data-ps-preset="bitcoin"] .card h2,
html.dark[data-ps-preset="bitcoin"] .card h3,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card h1,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card h2,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card h3,
html[data-ps-preset="bitcoin"] .card h1,
html[data-ps-preset="bitcoin"] .card h2,
html[data-ps-preset="bitcoin"] .card h3{
  color: rgba(255,255,255,0.94);
  letter-spacing: -0.006em;
}

html.dark[data-ps-preset="bitcoin"] .card p,
html.dark[data-ps-preset="bitcoin"] .card li,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card p,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card li,
html[data-ps-preset="bitcoin"] .card p,
html[data-ps-preset="bitcoin"] .card li{
  color: rgba(255,255,255,0.86);
  line-height: 1.48;
}

html.dark[data-ps-preset="bitcoin"] .card small,
html.dark[data-ps-preset="bitcoin"] .card .meta,
html.dark[data-ps-preset="bitcoin"] .card .postMeta,
html.dark[data-ps-preset="bitcoin"] .card .resourceMeta,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card small,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card .meta,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card .postMeta,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card .resourceMeta,
html[data-ps-preset="bitcoin"] .card small,
html[data-ps-preset="bitcoin"] .card .meta,
html[data-ps-preset="bitcoin"] .card .postMeta,
html[data-ps-preset="bitcoin"] .card .resourceMeta{
  color: rgba(255,255,255,0.64);
}

/* Bitcoin links: keep the accent orange, but calm the weight */
html.dark[data-ps-preset="bitcoin"] .card a,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card a,
html[data-ps-preset="bitcoin"] .card a{
  color: rgba(255,255,255,0.94);
  text-decoration-color: rgba(255,140,0,0.46);
}
html.dark[data-ps-preset="bitcoin"] .card a:hover,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card a:hover,
html[data-ps-preset="bitcoin"] .card a:hover{
  text-decoration-color: rgba(255,140,0,0.72);
}

/* Bitcoin resource link rhythm (lists/toc/refs): orange bottom-line, clearer contrast */
html.dark[data-ps-preset="bitcoin"] :where(.resourceList a, .resourceTocList a, .resourceLinks a),
html[data-theme="dark"][data-ps-preset="bitcoin"] :where(.resourceList a, .resourceTocList a, .resourceLinks a),
html[data-ps-preset="bitcoin"] :where(.resourceList a, .resourceTocList a, .resourceLinks a){
  color: rgba(255,255,255,0.92);
  border-bottom-color: rgba(255,140,0,0.34);
}
html.dark[data-ps-preset="bitcoin"] :where(.resourceList a:hover, .resourceTocList a:hover, .resourceLinks a:hover),
html[data-theme="dark"][data-ps-preset="bitcoin"] :where(.resourceList a:hover, .resourceTocList a:hover, .resourceLinks a:hover),
html[data-ps-preset="bitcoin"] :where(.resourceList a:hover, .resourceTocList a:hover, .resourceLinks a:hover){
  color: rgba(255,255,255,0.98);
  border-bottom-color: rgba(255,140,0,0.58);
}
/* ==========================================================================
   Alpha14 (LAB) — Greyroom parity + Focus/Visited rhythm
   Intent:
   - "Greyroom" = Ink UI theme + Grey background (no preset) gets the same
     editorial clarity as other presets (cards + borders + subtle depth).
   - Add consistent focus-visible treatment in standard shell (keyboard UX).
   - Add gentle visited/link rhythm in resource lists + cards (no mood shift).
   ========================================================================== */

/* Greyroom parity: Ink UI theme + Grey background (when no explicit preset is set) */
html[data-ps-shell="standard"][data-ps-ui-theme="ink"][data-ps-bg="grey"]:not([data-ps-preset]){
  --psPack-line: rgba(255,255,255,0.14);
  --psPack-surface: rgba(255,255,255,0.055);
  --psPack-surface-2: rgba(255,255,255,0.115);
}

html[data-ps-shell="standard"][data-ps-ui-theme="ink"][data-ps-bg="grey"]:not([data-ps-preset]) .card{
  background: linear-gradient(180deg,
    rgba(255,255,255,0.08) 0%,
    rgba(255,255,255,0.045) 62%,
    rgba(0,0,0,0.22) 100%);
  border-color: rgba(255,255,255,0.18);
  box-shadow:
    0 18px 52px rgba(0,0,0,0.56),
    0 0 0 1px rgba(255,255,255,0.04) inset;
}

@media (hover: hover){
  html[data-ps-shell="standard"][data-ps-ui-theme="ink"][data-ps-bg="grey"]:not([data-ps-preset]) .card:hover{
    border-color: rgba(255,255,255,0.24);
    box-shadow:
      0 22px 60px rgba(0,0,0,0.62),
      0 0 0 1px rgba(255,255,255,0.05) inset;
  }
}

/* Focus rhythm (keyboard): standard shell only */
html[data-ps-shell="standard"] :focus-visible{
  outline: 2px solid rgba(255,255,255,0.22);
  outline-offset: 2px;
}

html.light[data-ps-shell="standard"] :focus-visible,
html[data-theme="light"][data-ps-shell="standard"] :focus-visible{
  outline-color: rgba(0,0,0,0.30);
}

/* Dock focus ring (keyboard): ensure visibility inside Dock + sheets */
html[data-theme="dark"] .psDockNav .psAppNavItem:focus-visible,
html[data-theme="dark"] .psDockOverlay .psDockSheetClose:focus-visible,
html[data-theme="dark"] .psDockOverlay .psDockPrimary:focus-visible,
html[data-theme="dark"] .psDockOverlay .psDockLink:focus-visible,
html[data-theme="dark"] .psDockOverlay .psDockPill:focus-visible,
html[data-theme="dark"] .psDockOverlay .psDockFindInput:focus-visible{
  outline: 2px solid rgba(255,255,255,0.32);
  outline-offset: 2px;
}

html[data-theme="light"] .psDockNav .psAppNavItem:focus-visible,
html[data-theme="light"] .psDockOverlay .psDockSheetClose:focus-visible,
html[data-theme="light"] .psDockOverlay .psDockPrimary:focus-visible,
html[data-theme="light"] .psDockOverlay .psDockLink:focus-visible,
html[data-theme="light"] .psDockOverlay .psDockPill:focus-visible,
html[data-theme="light"] .psDockOverlay .psDockFindInput:focus-visible{
  outline: 2px solid rgba(0,0,0,0.45);
  outline-offset: 2px;
}


/* Link rhythm + visited tone (resource lists + cards) */
html[data-ps-shell="standard"] .resourceList a,
html[data-ps-shell="standard"] .resourceToc a,
html[data-ps-shell="standard"] .resourceRefs a,
html[data-ps-shell="standard"] .resourceLinks a,
html[data-ps-shell="standard"] .card a{
  text-decoration-thickness: 1.5px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255,255,255,0.30);
}

html.light[data-ps-shell="standard"] .resourceList a,
html.light[data-ps-shell="standard"] .resourceToc a,
html.light[data-ps-shell="standard"] .resourceRefs a,
html.light[data-ps-shell="standard"] .resourceLinks a,
html.light[data-ps-shell="standard"] .card a,
html[data-theme="light"][data-ps-shell="standard"] .resourceList a,
html[data-theme="light"][data-ps-shell="standard"] .resourceToc a,
html[data-theme="light"][data-ps-shell="standard"] .resourceRefs a,
html[data-theme="light"][data-ps-shell="standard"] .resourceLinks a,
html[data-theme="light"][data-ps-shell="standard"] .card a{
  text-decoration-color: rgba(0,0,0,0.28);
}

html[data-ps-shell="standard"] .resourceList a:visited,
html[data-ps-shell="standard"] .resourceToc a:visited,
html[data-ps-shell="standard"] .resourceRefs a:visited,
html[data-ps-shell="standard"] .resourceLinks a:visited,
html[data-ps-shell="standard"] .card a:visited{
  opacity: 0.84;
}

/* ==========================================================================
   Alpha15 (LAB) — Focus/Visited parity hardening
   Why:
   - Browsers ignore many properties on :visited (including opacity).
   - Keep the existing rhythm rules, but make visited states visible using
     allowed properties (color + decoration colors).
   Guardrails:
   - Paper resource lists already have curated visited colors (keep them).
   - Bitcoin preset keeps its orange accent for visited underlines/bottom-lines.
   ========================================================================== */

/* Visited (cards): subtle dim, but keep readability */
html[data-ps-shell="standard"] .card a:visited{
  color: rgba(255,255,255,0.80);
  text-decoration-color: rgba(255,255,255,0.22);
}

html.light[data-ps-shell="standard"] .card a:visited,
html[data-theme="light"][data-ps-shell="standard"] .card a:visited{
  color: rgba(0,0,0,0.74);
  text-decoration-color: rgba(0,0,0,0.20);
}

/* Visited (resource lists / toc / refs): use allowed props; avoid Paper override */
html[data-ps-shell="standard"]:not([data-ps-preset="bitcoin"]) :where(.resourceList a, .resourceTocList a, .resourceToc a, .resourceRefs a, .resourceLinks a):visited{
  color: rgba(255,255,255,0.78);
  text-decoration-color: rgba(255,255,255,0.20);
  border-bottom-color: rgba(255,255,255,0.18);
}

html.light[data-ps-shell="standard"]:not([data-ps-ui-theme="paper"]):not([data-ps-preset="bitcoin"]) :where(.resourceList a, .resourceTocList a, .resourceToc a, .resourceRefs a, .resourceLinks a):visited,
html[data-theme="light"][data-ps-shell="standard"]:not([data-ps-ui-theme="paper"]):not([data-ps-preset="bitcoin"]) :where(.resourceList a, .resourceTocList a, .resourceToc a, .resourceRefs a, .resourceLinks a):visited{
  color: rgba(0,0,0,0.70);
  text-decoration-color: rgba(0,0,0,0.18);
  border-bottom-color: rgba(0,0,0,0.18);
}

/* Bitcoin preset: keep orange accent on visited (cards + lists) */
html.dark[data-ps-preset="bitcoin"] .card a:visited,
html[data-theme="dark"][data-ps-preset="bitcoin"] .card a:visited,
html[data-ps-preset="bitcoin"] .card a:visited{
  color: rgba(255,255,255,0.90);
  text-decoration-color: rgba(255,140,0,0.34);
}

html.dark[data-ps-preset="bitcoin"] :where(.resourceList a, .resourceTocList a, .resourceToc a, .resourceRefs a, .resourceLinks a):visited,
html[data-theme="dark"][data-ps-preset="bitcoin"] :where(.resourceList a, .resourceTocList a, .resourceToc a, .resourceRefs a, .resourceLinks a):visited,
html[data-ps-preset="bitcoin"] :where(.resourceList a, .resourceTocList a, .resourceToc a, .resourceRefs a, .resourceLinks a):visited{
  color: rgba(255,255,255,0.88);
  border-bottom-color: rgba(255,140,0,0.24);
  text-decoration-color: rgba(255,140,0,0.28);
}


/* ==========================================================================
   Alpha16 (LAB) — Keyboard UX (Skip link)
   Why:
   - Give keyboard users a first TAB stop to jump directly to main content.
   - Injected by ps-ui.js (no template edits).
   ========================================================================== */

.psSkipLink{
  position: fixed;
  left: -9999px;
  top: 10px;
  z-index: var(--z-skip-link);
  padding: 10px 12px;
  border-radius: 12px;
  background: #000;
  color: #fff;
  border: 1px solid rgba(255,255,255,0.45);
  text-decoration: none;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.psSkipLink:focus{
  left: max(12px, env(safe-area-inset-left));
  outline: 2px solid rgba(255,255,255,0.55);
  outline-offset: 2px;
}

/* Invaders global parity pass:
   make LIVE/dashboard accents magenta-led across all pages and avoid residual green hardcodes. */
html[data-ps-preset="invaders"] .dashHubCard[data-dash-state="live"] .dashHubState{
  border-color: rgba(255,79,207,.40);
  color: rgba(255,196,236,.98);
  background: rgba(255,79,207,.14);
}
html[data-theme="light"][data-ps-preset="invaders"] .dashHubCard[data-dash-state="live"] .dashHubState{
  color: rgba(122,18,80,.98);
  border-color: rgba(198,54,136,.74);
  background: rgba(246,162,214,.62);
}

html[data-ps-preset="invaders"] body[data-page="dashboard"].psDashDesktopBoard .dashDesktopState--live{
  color: rgba(255,196,236,.98);
  border-color: rgba(255,79,207,.40);
  background: rgba(255,79,207,.14);
}
html[data-ps-preset="invaders"] .dashHubV2Global[data-state="live"],
html[data-ps-preset="invaders"] .dashHubV2State[data-state="live"]{
  border-color: rgba(255,79,207,.40);
  background: rgba(255,79,207,.14);
  color: rgba(255,196,236,.98);
}

/* Invaders - Home battery row (desktop capsule) strict purple */
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow.bannerRow.batteryRow{
  border-color: rgba(170,81,243,.22);
  background: rgba(14,8,28,.60);
  box-shadow: 0 0 18px rgba(170,81,243,.08);
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryShell{
  border-color: rgba(170,81,243,.70);
  background: rgba(14,8,28,.92);
  --batteryTickerFg: rgba(220,190,255,.96);
  --batteryTickerGlow: rgba(170,81,243,.40);
  --batteryTickerInfo: rgba(220,190,255,.96);
  --batteryTickerWarn: rgba(255,236,166,.96);
  --batteryTickerAlert: rgba(255,160,200,.96);
  box-shadow:
    0 0 12px rgba(170,81,243,.28),
    0 0 32px rgba(170,81,243,.12),
    0 0 56px rgba(170,81,243,.05),
    0 0 0 1px rgba(170,81,243,.08) inset;
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryShell:hover{
  border-color: rgba(170,81,243,.92);
  box-shadow:
    0 0 18px rgba(170,81,243,.44),
    0 0 40px rgba(170,81,243,.20),
    0 0 72px rgba(170,81,243,.08),
    0 0 0 1px rgba(170,81,243,.12) inset;
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryShell::before{
  background: rgba(170,81,243,.50);
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryShell::after{
  border-color: rgba(170,81,243,.60);
  background: rgba(14,8,28,.88);
  box-shadow: 0 0 6px rgba(170,81,243,.16);
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryPulse{
  border-color: rgba(170,81,243,.14);
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryPulse--b{
  border-color: rgba(170,81,243,.08);
}
html[data-ps-preset="invaders"] body[data-page="home"] #batteryRow .batteryCore{
  background: linear-gradient(90deg, transparent, rgba(170,81,243,.16), transparent);
  box-shadow: 0 0 8px rgba(170,81,243,.10);
}

/* Bitcoin - Home battery row (desktop capsule) neon orange */
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow.bannerRow.batteryRow{
  border-color: rgba(247,147,26,.22);
  background: rgba(12,8,2,.60);
  box-shadow: 0 0 18px rgba(247,147,26,.08);
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryShell{
  border-color: rgba(247,147,26,.65);
  background: rgba(12,8,2,.92);
  --batteryTickerFg: rgba(255,225,180,.96);
  --batteryTickerGlow: rgba(247,147,26,.36);
  box-shadow:
    0 0 12px rgba(247,147,26,.24),
    0 0 32px rgba(247,147,26,.10),
    0 0 56px rgba(247,147,26,.04),
    0 0 0 1px rgba(247,147,26,.06) inset;
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryShell:hover{
  border-color: rgba(247,147,26,.88);
  box-shadow:
    0 0 18px rgba(247,147,26,.38),
    0 0 40px rgba(247,147,26,.16),
    0 0 72px rgba(247,147,26,.06),
    0 0 0 1px rgba(247,147,26,.10) inset;
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryShell::before{
  background: rgba(247,147,26,.50);
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryShell::after{
  border-color: rgba(247,147,26,.55);
  background: rgba(12,8,2,.88);
  box-shadow: 0 0 6px rgba(247,147,26,.12);
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryPulse{
  border-color: rgba(247,147,26,.12);
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryPulse--b{
  border-color: rgba(247,147,26,.06);
}
html[data-ps-preset="bitcoin"] body[data-page="home"] #batteryRow .batteryCore{
  background: linear-gradient(90deg, transparent, rgba(247,147,26,.14), transparent);
  box-shadow: 0 0 8px rgba(247,147,26,.08);
}

/* Ritualplus - Home battery row (desktop capsule) neon crimson */
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow.bannerRow.batteryRow{
  border-color: rgba(255,90,90,.22);
  background: rgba(14,6,6,.60);
  box-shadow: 0 0 18px rgba(255,90,90,.08);
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryShell{
  border-color: rgba(255,90,90,.60);
  background: rgba(14,6,6,.92);
  --batteryTickerFg: rgba(255,220,215,.96);
  --batteryTickerGlow: rgba(255,90,90,.32);
  box-shadow:
    0 0 12px rgba(255,90,90,.22),
    0 0 32px rgba(255,90,90,.10),
    0 0 56px rgba(255,90,90,.04),
    0 0 0 1px rgba(255,90,90,.06) inset;
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryShell:hover{
  border-color: rgba(255,90,90,.85);
  box-shadow:
    0 0 18px rgba(255,90,90,.36),
    0 0 40px rgba(255,90,90,.14),
    0 0 72px rgba(255,90,90,.06),
    0 0 0 1px rgba(255,90,90,.10) inset;
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryShell::before{
  background: rgba(255,90,90,.45);
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryShell::after{
  border-color: rgba(255,90,90,.50);
  background: rgba(14,6,6,.88);
  box-shadow: 0 0 6px rgba(255,90,90,.12);
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryPulse{
  border-color: rgba(255,90,90,.12);
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryPulse--b{
  border-color: rgba(255,90,90,.06);
}
html[data-ps-preset="ritualplus"] body[data-page="home"] #batteryRow .batteryCore{
  background: linear-gradient(90deg, transparent, rgba(255,90,90,.14), transparent);
  box-shadow: 0 0 8px rgba(255,90,90,.08);
}

/* Paper - Home battery row (desktop capsule) warm ink outline */
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow.bannerRow.batteryRow{
  border-color: rgba(139,69,19,.18);
  background: rgba(196,191,181,.50);
  box-shadow: 0 0 14px rgba(139,69,19,.06);
}
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryShell{
  border-color: rgba(139,69,19,.40);
  background: rgba(224,219,210,.94);
  --batteryTickerFg: rgba(60,40,20,.88);
  --batteryTickerGlow: rgba(139,69,19,.14);
  box-shadow:
    0 0 10px rgba(139,69,19,.10),
    0 0 24px rgba(139,69,19,.05),
    0 0 0 1px rgba(139,69,19,.04) inset;
}
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryShell:hover{
  border-color: rgba(139,69,19,.60);
  box-shadow:
    0 0 14px rgba(139,69,19,.18),
    0 0 32px rgba(139,69,19,.08),
    0 0 0 1px rgba(139,69,19,.06) inset;
}
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryShell::before{
  background: rgba(139,69,19,.30);
}
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryShell::after{
  border-color: rgba(139,69,19,.35);
  background: rgba(224,219,210,.90);
  box-shadow: none;
}
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryPulse,
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryPulse--b{
  border-color: rgba(139,69,19,.08);
}
html[data-ps-preset="paper"] body[data-page="home"] #batteryRow .batteryCore{
  background: linear-gradient(90deg, transparent, rgba(139,69,19,.08), transparent);
  box-shadow: none;
}

html[data-ps-preset="invaders"] body[data-page="dashboard"] .dashHubV2Card--nostr{
  --psRimCold: rgba(255,79,207,.20);
  --psRimHot1: rgba(255,79,207,.96);
  --psRimHot2: rgba(126,242,255,.88);
  --psRimHot3: rgba(255,79,207,.74);
  --psRimGlow1: rgba(255,79,207,.18);
  --psRimGlow2: rgba(126,242,255,.08);
  --psRimBorder: rgba(255,79,207,.24);
}
html[data-theme="light"][data-ps-preset="invaders"] body[data-page="dashboard"] .dashHubV2Card--nostr{
  --psRimCold: rgba(198,88,126,.18);
  --psRimHot1: rgba(214,94,136,.92);
  --psRimHot2: rgba(106,179,226,.84);
  --psRimHot3: rgba(198,88,126,.72);
  --psRimGlow1: rgba(198,88,126,.14);
  --psRimBorder: rgba(198,88,126,.24);
}

html[data-ps-preset="invaders"] body[data-page="home"][data-home-mode="updates"] #homeLastUpdateFeed .homeTerminalSection--dashboard[data-signal="cache"],
html[data-ps-preset="invaders"] body[data-page="home"][data-home-mode="updates"] #homeLastUpdateFeed .homeTerminalSection--dashboard[data-signal="live"]{
  border-color: rgba(170,81,243,.72);
  box-shadow:
    0 0 0 1px rgba(170,81,243,.36) inset,
    0 0 20px rgba(170,81,243,.18);
}
html[data-ps-preset="invaders"] body[data-page="home"][data-home-mode="updates"] #homeLastUpdateFeed .homeTerminalSectionSignal--live,
html[data-ps-preset="invaders"] body[data-page="home"][data-home-mode="updates"] #homeLastUpdateFeed .homeTerminalMentionMetricStatus--live{
  border-color: rgba(170,81,243,.72);
  background: rgba(170,81,243,.26);
  color: rgba(250,228,255,.99);
}

/* LIVE badges unified to the same violet tone (game parent color) */
html[data-ps-preset="invaders"] :where(.dashHubState, .dashDesktopState--live, .dashHubV2Global[data-state="live"], .dashHubV2State[data-state="live"], .homeTerminalSectionSignal--live, .homeTerminalMentionMetricStatus--live){
  border-color: rgba(170,81,243,.72) !important;
  background: rgba(170,81,243,.26) !important;
  color: rgba(250,228,255,.99) !important;
}
html[data-theme="light"][data-ps-preset="invaders"] :where(.dashHubState, .dashDesktopState--live, .dashHubV2Global[data-state="live"], .dashHubV2State[data-state="live"], .homeTerminalSectionSignal--live, .homeTerminalMentionMetricStatus--live){
  border-color: rgba(154,96,196,.52) !important;
  background: rgba(214,179,236,.38) !important;
  color: rgba(73,38,104,.96) !important;
}
html[data-theme="light"][data-ps-preset="invaders"] body[data-page="home"][data-home-mode="updates"] #homeLastUpdateFeed .homeTerminalSection--dashboard[data-signal="cache"],
html[data-theme="light"][data-ps-preset="invaders"] body[data-page="home"][data-home-mode="updates"] #homeLastUpdateFeed .homeTerminalSection--dashboard[data-signal="live"]{
  border-color: rgba(154,96,196,.42);
  box-shadow: 0 0 0 1px rgba(154,96,196,.12) inset;
}
