/* ============================================================================
   POLARISTAR — UI KIT  (Design System partagé)
   v1.0.0 · 2026-08-28
   ----------------------------------------------------------------------------
   Feuille de style commune à tous les outils Polaristar (index, constella,
   astrae, akasha, corpus, sapientia, athanor, compte, community, legal…).

   PRINCIPES
   - Tout est préfixé `--ps-` (tokens) et `.ps-` (classes) : zéro collision
     avec le CSS inline existant de chaque page. On peut l'adopter
     progressivement, page par page, sans rien casser.
   - Mobile-first. Les composants sont pensés « application native » :
     bottom-nav, bottom-sheet, feedback tactile, safe-areas iPhone.
   - Cosmique mais LISIBLE : la priorité est lisibilité > ergonomie >
     fluidité > esthétique. Les effets restent subtils.
   - Perf : animations sur transform / opacity uniquement. Ombres et blur
     mesurés. `prefers-reduced-motion` respecté globalement.

   CHARGEMENT
     <link rel="stylesheet" href="/polaristar-ui.css?v=1">
   (le `?v=` sert de cache-buster — .htaccess cache le CSS 1 mois)
   ========================================================================== */

/* ---------------------------------------------------------------------------
   1. TOKENS
   ------------------------------------------------------------------------- */
:root {
  /* ---- Palette cosmique ---- */
  --ps-bg:            #040210;   /* fond spatial profond */
  --ps-bg-alt:        #060411;
  --ps-surface:       #0c0722;   /* carte / panneau niveau 1 */
  --ps-surface-2:     #140b30;   /* carte niveau 2 / hover */
  --ps-surface-3:     #1c1140;
  --ps-overlay:       rgba(4, 2, 16, 0.82);  /* backdrop de sheet/modale */

  --ps-text:          #f2ead8;
  --ps-text-dim:      #c8b898;
  --ps-text-faint:    rgba(200, 185, 230, 0.62);

  --ps-border:        rgba(212, 168, 32, 0.14);
  --ps-border-strong: rgba(212, 168, 32, 0.4);
  --ps-border-cool:   rgba(140, 160, 255, 0.16);

  /* Or Polaristar (accent principal) */
  --ps-gold:          #d4a820;
  --ps-gold-light:    #ffe87a;
  --ps-gold-dim:      #8a6010;
  --ps-purple:        #5a20c8;
  --ps-purple-dark:   #1a0640;

  /* Accents par outil (repris de la landing) */
  --ps-c-constella:   #88ccff;   /* bleu */
  --ps-c-astrae:      #c080ff;   /* violet */
  --ps-c-akasha:      #e8c870;   /* or */
  --ps-c-corpus:      #7de0b0;   /* vert */
  --ps-c-sapientia:   #6fe3ff;   /* cyan */

  /* États sémantiques */
  --ps-success:       #4ad9a0;
  --ps-danger:        #ff6b6b;
  --ps-warning:       #ffc857;
  --ps-info:          var(--ps-c-constella);

  /* ---- Rayons ---- */
  --ps-radius-sm:     8px;
  --ps-radius-md:     14px;
  --ps-radius-lg:     22px;
  --ps-radius-pill:   999px;

  /* ---- Espacements (échelle 4) ---- */
  --ps-space-2xs:     4px;
  --ps-space-xs:      8px;
  --ps-space-sm:      12px;
  --ps-space-md:      16px;
  --ps-space-lg:      24px;
  --ps-space-xl:      32px;
  --ps-space-2xl:     48px;
  --ps-space-3xl:     72px;

  /* ---- Cible tactile ---- */
  --ps-touch:         44px;
  --ps-touch-lg:      52px;

  /* ---- Typo (fluide) ---- */
  --ps-font-serif:    'Crimson Text', Georgia, 'Times New Roman', serif;
  --ps-font-display:  'Cinzel', 'Crimson Text', Georgia, serif;
  --ps-fs-caption:    clamp(11px, 2.6vw, 12px);
  --ps-fs-small:      clamp(13px, 3vw, 14px);
  --ps-fs-body:       clamp(15px, 3.6vw, 17px);
  --ps-fs-lead:       clamp(16px, 4vw, 19px);
  --ps-fs-h3:         clamp(17px, 4.4vw, 21px);
  --ps-fs-h2:         clamp(21px, 5.4vw, 30px);
  --ps-fs-h1:         clamp(26px, 7vw, 44px);

  /* ---- Élévation ---- */
  --ps-shadow-1:      0 1px 3px rgba(0, 0, 0, 0.4);
  --ps-shadow-2:      0 6px 20px rgba(0, 0, 0, 0.45);
  --ps-shadow-3:      0 16px 44px rgba(0, 0, 0, 0.55);
  --ps-glow-gold:     0 0 24px rgba(212, 168, 32, 0.28);

  /* ---- Timing ---- */
  --ps-dur-fast:      150ms;
  --ps-dur:           220ms;
  --ps-dur-slow:      320ms;
  --ps-ease:          cubic-bezier(0.22, 0.61, 0.36, 1);
  --ps-ease-out:      cubic-bezier(0.16, 1, 0.3, 1);

  /* ---- Z-index ---- */
  --ps-z-sticky:      100;
  --ps-z-bottomnav:   900;
  --ps-z-overlay:     1000;
  --ps-z-sheet:       1001;
  --ps-z-toast:       1100;

  /* ---- Safe areas (fallback 0 si non supporté) ---- */
  --ps-safe-top:      env(safe-area-inset-top, 0px);
  --ps-safe-bottom:   env(safe-area-inset-bottom, 0px);
  --ps-safe-left:     env(safe-area-inset-left, 0px);
  --ps-safe-right:    env(safe-area-inset-right, 0px);

  /* Hauteur de la bottom-nav (0 tant qu'elle n'est pas montée — voir .js) */
  --ps-bottomnav-h:   0px;
}

/* ---------------------------------------------------------------------------
   2. BASE / RESET DOUX (n'écrase rien d'agressif)
   ------------------------------------------------------------------------- */

/* iOS : empêche l'auto-zoom du texte en paysage, garde le pinch-zoom */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

body {
  /* Évite le rubber-band qui « déchire » le fixed sur iOS */
  overscroll-behavior-y: none;
}

/* Scroll fluide interne partout où on l'active explicitement */
.ps-scroll {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

/* Quand une sheet/menu est ouverte : fige le body sans « saut » de scroll.
   (le .js pose/retire .ps-locked et gère le décalage) */
body.ps-locked {
  overflow: hidden;
  touch-action: none;
}

/* Cible tactile : jamais de highlight bleu iOS, feedback géré par nous */
.ps-tap,
.ps-btn,
.ps-bottom-nav a,
.ps-sheet__close {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

/* Focus visible cohérent (accessibilité clavier desktop) */
.ps-btn:focus-visible,
.ps-field:focus-visible,
.ps-bottom-nav a:focus-visible,
.ps-sheet__close:focus-visible {
  outline: 2px solid var(--ps-gold-light);
  outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
   3. HELPERS SAFE-AREA / LAYOUT
   ------------------------------------------------------------------------- */
.ps-safe-x   { padding-left: max(var(--ps-space-md), var(--ps-safe-left));
               padding-right: max(var(--ps-space-md), var(--ps-safe-right)); }
.ps-safe-top { padding-top: var(--ps-safe-top); }
.ps-safe-bottom { padding-bottom: var(--ps-safe-bottom); }

/* À poser sur le conteneur principal des pages qui ont une bottom-nav :
   réserve l'espace pour ne jamais masquer le dernier contenu */
.ps-has-bottomnav {
  padding-bottom: calc(var(--ps-bottomnav-h) + var(--ps-safe-bottom) + var(--ps-space-md));
}

.ps-container {
  width: 100%;
  max-width: 640px;
  margin-inline: auto;
  padding-inline: clamp(var(--ps-space-md), 5vw, var(--ps-space-2xl));
}

/* Anti-débordement horizontal : filet de sécurité, à appliquer au besoin */
.ps-no-scroll-x { overflow-x: clip; }

/* ---------------------------------------------------------------------------
   4. TYPOGRAPHIE
   ------------------------------------------------------------------------- */
.ps-h1 { font-family: var(--ps-font-display); font-size: var(--ps-fs-h1);
         line-height: 1.15; letter-spacing: 0.02em; color: #fff; }
.ps-h2 { font-family: var(--ps-font-display); font-size: var(--ps-fs-h2);
         line-height: 1.2; letter-spacing: 0.03em; color: #fff; }
.ps-h3 { font-family: var(--ps-font-display); font-size: var(--ps-fs-h3);
         line-height: 1.3; letter-spacing: 0.04em; color: var(--ps-gold-light); }
.ps-body   { font-family: var(--ps-font-serif); font-size: var(--ps-fs-body); line-height: 1.7; color: var(--ps-text); }
.ps-lead   { font-size: var(--ps-fs-lead); line-height: 1.6; color: var(--ps-text-dim); }
.ps-caption{ font-family: var(--ps-font-display); font-size: var(--ps-fs-caption);
             letter-spacing: 0.32em; text-transform: uppercase; color: var(--ps-gold); }
.ps-muted  { color: var(--ps-text-faint); }

/* ---------------------------------------------------------------------------
   5. BOUTONS
   ------------------------------------------------------------------------- */
.ps-btn {
  --_bg: var(--ps-surface-2);
  --_fg: var(--ps-text);
  --_bd: var(--ps-border-strong);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ps-space-xs);
  min-height: var(--ps-touch);
  padding: 12px 22px;
  font-family: var(--ps-font-display);
  font-size: clamp(12px, 3vw, 13px);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--_fg);
  background: var(--_bg);
  border: 1px solid var(--_bd);
  border-radius: var(--ps-radius-md);
  cursor: pointer;
  transition: transform var(--ps-dur-fast) var(--ps-ease),
              box-shadow var(--ps-dur) var(--ps-ease),
              background var(--ps-dur) var(--ps-ease);
  will-change: transform;
}
.ps-btn:active { transform: scale(0.97); }

.ps-btn--primary {
  --_bg: linear-gradient(135deg, #3a1880, #7a3a00);
  --_fg: var(--ps-gold-light);
  --_bd: var(--ps-gold);
  box-shadow: var(--ps-glow-gold);
}
.ps-btn--primary:hover { box-shadow: 0 0 40px rgba(212, 168, 32, 0.42); }

.ps-btn--ghost { --_bg: transparent; --_fg: var(--ps-text-dim); --_bd: rgba(255,255,255,0.14); }
.ps-btn--ghost:hover { --_fg: var(--ps-text); --_bd: rgba(255,255,255,0.32); }

.ps-btn--block { display: flex; width: 100%; }
.ps-btn--lg { min-height: var(--ps-touch-lg); font-size: clamp(13px, 3.4vw, 14px); padding: 15px 26px; }

.ps-btn[disabled] { opacity: 0.5; pointer-events: none; }

/* Accent par outil : <a class="ps-btn ps-btn--tool" data-tool="astrae"> */
.ps-btn--tool[data-tool="constella"] { --_fg: var(--ps-c-constella); --_bd: var(--ps-c-constella); }
.ps-btn--tool[data-tool="astrae"]    { --_fg: var(--ps-c-astrae);    --_bd: var(--ps-c-astrae); }
.ps-btn--tool[data-tool="akasha"]    { --_fg: var(--ps-c-akasha);    --_bd: var(--ps-c-akasha); }
.ps-btn--tool[data-tool="corpus"]    { --_fg: var(--ps-c-corpus);    --_bd: var(--ps-c-corpus); }
.ps-btn--tool[data-tool="sapientia"] { --_fg: var(--ps-c-sapientia); --_bd: var(--ps-c-sapientia); }
.ps-btn--tool { --_bg: rgba(255,255,255,0.03); }

/* ---------------------------------------------------------------------------
   6. CARTES
   ------------------------------------------------------------------------- */
.ps-card {
  background: linear-gradient(180deg, var(--ps-surface) 0%, var(--ps-bg-alt) 100%);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-lg);
  padding: var(--ps-space-lg);
  box-shadow: var(--ps-shadow-2);
}
.ps-card--flush { padding: 0; overflow: hidden; }
.ps-card__title { font-family: var(--ps-font-display); font-size: var(--ps-fs-h3);
                  letter-spacing: 0.06em; color: #fff; margin-bottom: var(--ps-space-xs); }
.ps-card__body  { font-size: var(--ps-fs-body); line-height: 1.7; color: var(--ps-text-dim); }

/* Accordéon natif accessible : <details class="ps-accordion"><summary>…</summary>…</details> */
.ps-accordion {
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-md);
  background: var(--ps-surface);
  overflow: hidden;
}
.ps-accordion + .ps-accordion { margin-top: var(--ps-space-xs); }
.ps-accordion > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--ps-space-sm);
  min-height: var(--ps-touch-lg);
  padding: var(--ps-space-sm) var(--ps-space-md);
  font-family: var(--ps-font-display);
  font-size: var(--ps-fs-small);
  letter-spacing: 0.08em;
  color: var(--ps-gold-light);
}
.ps-accordion > summary::-webkit-details-marker { display: none; }
.ps-accordion > summary::after {
  content: '▾';
  transition: transform var(--ps-dur) var(--ps-ease);
  opacity: 0.6;
}
.ps-accordion[open] > summary::after { transform: rotate(180deg); }
.ps-accordion__content { padding: 0 var(--ps-space-md) var(--ps-space-md); }

/* ---------------------------------------------------------------------------
   7. CHAMPS DE FORMULAIRE
   ------------------------------------------------------------------------- */
.ps-field-group { margin-bottom: var(--ps-space-md); }
.ps-label {
  display: block;
  font-family: var(--ps-font-display);
  font-size: var(--ps-fs-caption);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ps-gold);
  margin-bottom: var(--ps-space-xs);
}
.ps-field {
  width: 100%;
  min-height: var(--ps-touch);
  padding: 13px 15px;
  /* 16px minimum : empêche le zoom auto d'iOS au focus */
  font-size: 16px;
  font-family: var(--ps-font-serif);
  color: var(--ps-text);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--ps-border-strong);
  border-radius: var(--ps-radius-sm);
  outline: none;
  transition: border-color var(--ps-dur) var(--ps-ease),
              box-shadow var(--ps-dur) var(--ps-ease);
  appearance: none;
}
.ps-field:focus {
  border-color: var(--ps-gold);
  box-shadow: 0 0 0 3px rgba(212, 168, 32, 0.16);
}
.ps-field::placeholder { color: rgba(200, 185, 230, 0.4); }
textarea.ps-field { min-height: 96px; resize: vertical; line-height: 1.6; }

/* Indicateur d'étapes : <ol class="ps-steps"><li class="is-done">…</li>…</ol> */
.ps-steps { display: flex; gap: var(--ps-space-xs); list-style: none; padding: 0; margin: 0 0 var(--ps-space-lg); }
.ps-steps li {
  flex: 1;
  height: 4px;
  border-radius: var(--ps-radius-pill);
  background: rgba(255, 255, 255, 0.1);
  transition: background var(--ps-dur) var(--ps-ease);
}
.ps-steps li.is-current { background: var(--ps-gold); }
.ps-steps li.is-done { background: var(--ps-gold-dim); }

/* ---------------------------------------------------------------------------
   8. BOTTOM NAVIGATION  (barre d'onglets style app)
   ------------------------------------------------------------------------- */
.ps-bottom-nav {
  /* Reset défensif : beaucoup de pages stylent l'élément <nav>/<header>
     (top:0, height, justify-content, background…). On neutralise tout ça. */
  position: fixed;
  top: auto;
  left: 0;
  right: 0;
  bottom: 0;
  width: auto;
  height: auto;
  min-height: 0;
  margin: 0;
  transform: none;
  z-index: var(--ps-z-bottomnav);
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  align-items: stretch;
  gap: 2px;
  padding: 6px max(6px, var(--ps-safe-left)) calc(6px + var(--ps-safe-bottom)) max(6px, var(--ps-safe-right));
  background: rgba(6, 4, 17, 0.86);
  border: none;
  border-top: 1px solid var(--ps-border);
  box-shadow: 0 -2px 18px rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
}
.ps-bottom-nav a {
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-height: var(--ps-touch);
  margin: 0;
  padding: 4px 2px;
  border: none;
  background: none;
  border-radius: var(--ps-radius-sm);
  text-decoration: none;
  color: var(--ps-text-faint);
  font-family: var(--ps-font-display);
  font-size: 9.5px;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
  transition: color var(--ps-dur) var(--ps-ease), background var(--ps-dur) var(--ps-ease);
}
.ps-bottom-nav a::before,
.ps-bottom-nav a::after { content: none; }
.ps-bottom-nav .ps-bn-label {
  font-size: 9.5px;
  line-height: 1;
  letter-spacing: 0.1em;
}
.ps-bottom-nav a .ps-bn-icon {
  font-size: 19px;
  line-height: 1;
  transition: transform var(--ps-dur) var(--ps-ease-out);
}
.ps-bottom-nav a:active .ps-bn-icon { transform: scale(0.86); }
.ps-bottom-nav a[aria-current="page"],
.ps-bottom-nav a.is-active {
  color: var(--ps-gold-light);
}
.ps-bottom-nav a[aria-current="page"] .ps-bn-icon,
.ps-bottom-nav a.is-active .ps-bn-icon {
  filter: drop-shadow(0 0 10px rgba(212, 168, 32, 0.6));
}

/* Masquée au-delà du mobile (les pages gardent leur nav desktop) */
@media (min-width: 768px) {
  .ps-bottom-nav { display: none; }
  .ps-has-bottomnav { padding-bottom: 0; }
}

/* ---------------------------------------------------------------------------
   9. BOTTOM SHEET / MODALE
   ------------------------------------------------------------------------- */
.ps-sheet-backdrop {
  position: fixed;
  inset: 0;
  z-index: var(--ps-z-overlay);
  background: var(--ps-overlay);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity var(--ps-dur) var(--ps-ease);
}
.ps-sheet-backdrop.is-open { opacity: 1; }

.ps-sheet {
  position: fixed;
  z-index: var(--ps-z-sheet);
  left: 0;
  right: 0;
  bottom: 0;
  max-height: min(88dvh, 760px);
  display: flex;
  flex-direction: column;
  background: linear-gradient(180deg, var(--ps-surface-2), var(--ps-bg-alt));
  border: 1px solid var(--ps-border-strong);
  border-bottom: none;
  border-radius: var(--ps-radius-lg) var(--ps-radius-lg) 0 0;
  box-shadow: var(--ps-shadow-3);
  padding: var(--ps-space-xs) var(--ps-space-lg)
           calc(var(--ps-space-lg) + var(--ps-safe-bottom));
  transform: translateY(100%);
  transition: transform var(--ps-dur-slow) var(--ps-ease-out);
}
.ps-sheet.is-open { transform: translateY(0); }

.ps-sheet__handle {
  width: 40px;
  height: 4px;
  border-radius: var(--ps-radius-pill);
  background: rgba(255, 255, 255, 0.22);
  margin: 6px auto var(--ps-space-sm);
  flex-shrink: 0;
}
.ps-sheet__close {
  position: absolute;
  top: 10px;
  right: 12px;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  color: rgba(255, 255, 255, 0.5);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  border-radius: var(--ps-radius-pill);
}
.ps-sheet__close:hover { color: #fff; background: rgba(255, 255, 255, 0.08); }
.ps-sheet__body {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  flex: 1;
  min-height: 0;
}

/* ── Feuille « Outils » (ouverte par l'onglet Outils de la bottom-nav) ── */
.ps-tools-sheet__title {
  font-family: var(--ps-font-display);
  font-size: var(--ps-fs-caption);
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--ps-gold);
  text-align: center;
  margin: 2px 0 var(--ps-space-md);
}
.ps-tools-list { display: flex; flex-direction: column; gap: var(--ps-space-xs); }
.ps-tool-link {
  --_accent: var(--ps-gold);
  display: flex;
  align-items: center;
  gap: var(--ps-space-md);
  min-height: 64px;
  padding: var(--ps-space-sm) var(--ps-space-md);
  border: 1px solid var(--ps-border);
  border-left: 3px solid var(--_accent);
  border-radius: var(--ps-radius-md);
  background: rgba(255, 255, 255, 0.03);
  text-decoration: none;
  transition: transform var(--ps-dur-fast) var(--ps-ease), background var(--ps-dur) var(--ps-ease);
}
.ps-tool-link:active { transform: scale(0.98); }
.ps-tool-link:hover { background: rgba(255, 255, 255, 0.06); }
.ps-tool-link[aria-current="page"] { background: rgba(255, 255, 255, 0.07); }
.ps-tool-link__icon {
  font-size: 24px;
  line-height: 1;
  color: var(--_accent);
  flex-shrink: 0;
  width: 30px;
  text-align: center;
  filter: drop-shadow(0 0 10px color-mix(in srgb, var(--_accent) 45%, transparent));
}
.ps-tool-link__name {
  font-family: var(--ps-font-display);
  font-size: var(--ps-fs-small);
  letter-spacing: 0.16em;
  color: #fff;
  display: block;
}
.ps-tool-link__desc {
  font-size: var(--ps-fs-caption);
  letter-spacing: 0.04em;
  text-transform: none;
  color: var(--ps-text-faint);
  display: block;
  margin-top: 2px;
}
.ps-tool-link[data-tool="constella"] { --_accent: var(--ps-c-constella); }
.ps-tool-link[data-tool="astrae"]    { --_accent: var(--ps-c-astrae); }
.ps-tool-link[data-tool="akasha"]    { --_accent: var(--ps-c-akasha); }
.ps-tool-link[data-tool="corpus"]    { --_accent: var(--ps-c-corpus); }
.ps-tool-link[data-tool="sapientia"] { --_accent: var(--ps-c-sapientia); }

/* Grille de pastilles « outils » (style finale de l'initiation) */
.ps-tools-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  max-width: 420px;
  margin: 0 auto;
  padding: 4px 0 2px;
}
.ps-tool-pill {
  --_accent: var(--ps-gold);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  width: 66px;
  padding: 12px 4px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid var(--_accent);
  border-radius: 14px;
  color: var(--_accent);
  text-decoration: none;
  transition: box-shadow var(--ps-dur) var(--ps-ease), transform var(--ps-dur) var(--ps-ease), background var(--ps-dur) var(--ps-ease);
}
.ps-tool-pill:hover { transform: translateY(-3px); background: rgba(255, 255, 255, 0.05); box-shadow: 0 0 16px var(--_accent); }
.ps-tool-pill:active { transform: translateY(-1px) scale(0.97); }
.ps-tool-pill[aria-current="page"] { background: rgba(255, 255, 255, 0.06); box-shadow: 0 0 12px var(--_accent); }
.ps-tool-pill__icon { font-size: 22px; line-height: 1; }
.ps-tool-pill__name {
  font-family: var(--ps-font-display);
  font-size: 9px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ps-text-faint);
}
.ps-tool-pill[data-tool="constella"] { --_accent: var(--ps-c-constella); }
.ps-tool-pill[data-tool="astrae"]    { --_accent: var(--ps-c-astrae); }
.ps-tool-pill[data-tool="akasha"]    { --_accent: var(--ps-c-akasha); }
.ps-tool-pill[data-tool="corpus"]    { --_accent: var(--ps-c-corpus); }
.ps-tool-pill[data-tool="sapientia"] { --_accent: var(--ps-c-sapientia); }

/* ≥ tablette : la sheet devient une modale centrée */
@media (min-width: 768px) {
  .ps-sheet {
    left: 50%;
    right: auto;
    bottom: auto;
    top: 50%;
    width: min(440px, 92vw);
    max-height: 86dvh;
    border: 1px solid var(--ps-border-strong);
    border-radius: var(--ps-radius-lg);
    transform: translate(-50%, -46%) scale(0.96);
    opacity: 0;
    transition: transform var(--ps-dur) var(--ps-ease-out), opacity var(--ps-dur) var(--ps-ease);
  }
  .ps-sheet.is-open { transform: translate(-50%, -50%) scale(1); opacity: 1; }
  .ps-sheet__handle { display: none; }
}

/* ---------------------------------------------------------------------------
   10. SKELETON / ÉTATS DE CHARGEMENT
   ------------------------------------------------------------------------- */
.ps-skeleton {
  position: relative;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.06);
  border-radius: var(--ps-radius-sm);
}
.ps-skeleton::after {
  content: '';
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.09), transparent);
  animation: ps-shimmer 1.4s ease-in-out infinite;
}
@keyframes ps-shimmer { 100% { transform: translateX(100%); } }
.ps-skeleton--text { height: 0.85em; margin: 0.4em 0; }
.ps-skeleton--title { height: 1.4em; width: 60%; margin-bottom: 0.8em; }

.ps-state {
  text-align: center;
  padding: var(--ps-space-2xl) var(--ps-space-md);
  color: var(--ps-text-faint);
  font-family: var(--ps-font-display);
  font-size: var(--ps-fs-small);
  letter-spacing: 0.14em;
}
.ps-state__icon { font-size: 30px; display: block; margin-bottom: var(--ps-space-sm); opacity: 0.7; }
.ps-state .ps-btn { margin-top: var(--ps-space-md); }

.ps-spinner {
  width: 26px; height: 26px;
  border: 2px solid rgba(255, 255, 255, 0.15);
  border-top-color: var(--ps-gold);
  border-radius: 50%;
  animation: ps-spin 0.8s linear infinite;
  display: inline-block;
}
@keyframes ps-spin { 100% { transform: rotate(360deg); } }

/* ---------------------------------------------------------------------------
   11. TOASTS  (feedback : copié, sauvegardé, erreur…)
   ------------------------------------------------------------------------- */
.ps-toast-host {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--ps-bottomnav-h) + var(--ps-safe-bottom) + var(--ps-space-md));
  z-index: var(--ps-z-toast);
  display: flex;
  flex-direction: column;
  gap: var(--ps-space-xs);
  width: min(420px, calc(100vw - 2 * var(--ps-space-md)));
  pointer-events: none;
}
.ps-toast {
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: var(--ps-space-sm);
  padding: 12px 16px;
  background: var(--ps-surface-3);
  border: 1px solid var(--ps-border-strong);
  border-radius: var(--ps-radius-md);
  box-shadow: var(--ps-shadow-2);
  color: var(--ps-text);
  font-family: var(--ps-font-serif);
  font-size: var(--ps-fs-small);
  line-height: 1.4;
  transform: translateY(12px);
  opacity: 0;
  transition: transform var(--ps-dur) var(--ps-ease-out), opacity var(--ps-dur) var(--ps-ease);
}
.ps-toast.is-in { transform: translateY(0); opacity: 1; }
.ps-toast::before { content: '✦'; color: var(--ps-gold); flex-shrink: 0; }
.ps-toast--success::before { content: '✓'; color: var(--ps-success); }
.ps-toast--error::before { content: '⚠'; color: var(--ps-danger); }

/* ---------------------------------------------------------------------------
   12. SLIM TOP BAR  (barre supérieure fine qui se rétracte au scroll)
   ------------------------------------------------------------------------- */
.ps-topbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: var(--ps-z-sticky);
  display: flex;
  align-items: center;
  gap: var(--ps-space-sm);
  padding: calc(var(--ps-safe-top) + 8px)
           max(var(--ps-space-md), var(--ps-safe-right))
           8px
           max(var(--ps-space-md), var(--ps-safe-left));
  background: linear-gradient(180deg, rgba(4, 2, 16, 0.95), rgba(4, 2, 16, 0));
  transition: transform var(--ps-dur) var(--ps-ease), background var(--ps-dur) var(--ps-ease);
}
.ps-topbar.is-hidden { transform: translateY(-100%); }
.ps-topbar.is-scrolled {
  background: rgba(6, 4, 17, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--ps-border);
}

/* ---------------------------------------------------------------------------
   13. UTILITAIRES
   ------------------------------------------------------------------------- */
.ps-hstack { display: flex; align-items: center; gap: var(--ps-space-sm); }
.ps-vstack { display: flex; flex-direction: column; gap: var(--ps-space-sm); }
.ps-grow { flex: 1; }
.ps-center { display: flex; align-items: center; justify-content: center; }
.ps-hide-mobile { }
.ps-only-mobile { }
@media (max-width: 767px) { .ps-hide-mobile { display: none !important; } }
@media (min-width: 768px) { .ps-only-mobile { display: none !important; } }

.ps-divider { border: none; border-top: 1px solid var(--ps-border); margin: var(--ps-space-lg) 0; }

/* Carrousel horizontal à accroche (uniquement quand ça sert vraiment) */
.ps-hscroll {
  display: flex;
  gap: var(--ps-space-sm);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  padding-bottom: var(--ps-space-xs);
  margin-inline: calc(-1 * var(--ps-space-md));
  padding-inline: var(--ps-space-md);
}
.ps-hscroll::-webkit-scrollbar { display: none; }
.ps-hscroll > * { scroll-snap-align: start; flex: 0 0 auto; }

/* ---------------------------------------------------------------------------
   14. MOUVEMENT RÉDUIT  (accessibilité — s'applique à tout le site)
   ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .ps-sheet, .ps-sheet-backdrop { transition: opacity 0.001ms !important; }
}

/* ---------------------------------------------------------------------------
   15. ESPACE IMMERSIF  (PS.immersive — page plein écran, pas une modale)
   Miroir de PS._css dans polaristar-ui.js.
   ------------------------------------------------------------------------- */
.ps-immersive {
  position: fixed; inset: 0; z-index: var(--ps-z-sheet);
  display: flex; flex-direction: column;
  background: linear-gradient(180deg, var(--ps-bg), var(--ps-bg-alt));
  opacity: 0; transform: translateY(26px);
  transition: opacity var(--ps-dur) var(--ps-ease),
              transform var(--ps-dur-slow) var(--ps-ease-out);
  will-change: opacity, transform;
}
.ps-immersive.is-open { opacity: 1; transform: none; }
.ps-immersive__bar {
  flex-shrink: 0; display: flex; align-items: center; gap: var(--ps-space-sm);
  padding: calc(var(--ps-safe-top) + 10px) max(var(--ps-space-md), var(--ps-safe-right))
           10px max(var(--ps-space-md), var(--ps-safe-left));
  background: linear-gradient(180deg, rgba(4,2,16,.96), rgba(4,2,16,.35));
  border-bottom: 1px solid var(--ps-border);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.ps-immersive__back {
  display: inline-flex; align-items: center; gap: 6px; min-height: var(--ps-touch);
  padding: 8px 15px 8px 11px;
  border: 1px solid var(--ps-border-strong); border-radius: var(--ps-radius-pill);
  background: rgba(255,255,255,.04);
  color: var(--ps-imm-accent, var(--ps-gold-light));
  font-family: var(--ps-font-display); font-size: var(--ps-fs-caption);
  letter-spacing: .14em; text-transform: uppercase; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background var(--ps-dur) var(--ps-ease),
              transform var(--ps-dur-fast) var(--ps-ease);
}
.ps-immersive__back:active { transform: scale(.96); }
.ps-immersive__back:hover { background: rgba(255,255,255,.09); }
.ps-immersive__back > span[aria-hidden] { font-size: 16px; line-height: 1; }
.ps-immersive__title {
  flex: 1; text-align: center;
  font-family: var(--ps-font-display); font-size: var(--ps-fs-caption);
  letter-spacing: .34em; text-transform: uppercase; color: var(--ps-text-faint);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ps-immersive__close {
  width: 44px; height: 44px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: none; border: 1px solid var(--ps-border-strong);
  border-radius: var(--ps-radius-pill);
  color: var(--ps-text-dim); font-size: 15px; line-height: 1; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background var(--ps-dur) var(--ps-ease), color var(--ps-dur) var(--ps-ease);
}
.ps-immersive__close:hover { background: rgba(255,255,255,.09); color: #fff; }
.ps-immersive__scroll {
  flex: 1; min-height: 0; overflow-y: auto;
  -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
  display: flex; flex-direction: column; align-items: center;
  padding: clamp(var(--ps-space-lg), 5vw, var(--ps-space-3xl)) var(--ps-space-md)
           calc(var(--ps-space-3xl) + var(--ps-safe-bottom));
}
.ps-immersive__scroll > * { width: 100%; max-width: 780px; }
@media (max-width: 600px) {
  .ps-immersive__back-txt { display: none; }
  .ps-immersive__close { width: 38px; height: 38px; }
  .ps-immersive__back { padding: 8px 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .ps-immersive { transition: opacity 0.001ms !important; transform: none !important; }
}

/* Conteneur de la page hôte (modale reconvertie) : on efface le "carton" pour
   que les groupes de quêtes vivent directement sur le fond immersif. */
.ps-immersive .compat-modal-box,
.ps-immersive .quests-modal-box,
.ps-immersive .ps-immersive-bare {
  background: none !important; border: none !important; box-shadow: none !important;
  padding: 0 !important; margin: 0 !important;
  width: 100% !important; max-width: 780px !important;
  animation: none !important;
}
.ps-immersive .compat-close,
.ps-immersive .quests-close { display: none !important; }
.ps-immersive .ftitle { margin-bottom: var(--ps-space-xs); }

/* ---------------------------------------------------------------------------
   16. VUE QUÊTES  (PS.buildQuestsHTML — direction artistique commune)
   ------------------------------------------------------------------------- */
.psq__intro {
  font-family: var(--ps-font-serif); font-size: var(--ps-fs-small);
  line-height: 1.7; color: var(--ps-text-dim); margin: 0 0 var(--ps-space-lg);
}
.psq-group { --_pc: var(--ps-gold-light); }
.psq-group[data-tool=constella] { --_pc: var(--ps-c-constella); }
.psq-group[data-tool=astrae]    { --_pc: var(--ps-c-astrae); }
.psq-group[data-tool=akasha]    { --_pc: var(--ps-c-akasha); }
.psq-group[data-tool=corpus]    { --_pc: var(--ps-c-corpus); }
.psq-group[data-tool=sapientia] { --_pc: var(--ps-c-sapientia); }
.psq-group + .psq-group { margin-top: var(--ps-space-xl); }
.psq-group__head {
  display: flex; align-items: center; gap: var(--ps-space-sm);
  margin-bottom: var(--ps-space-sm); padding-bottom: 8px;
  border-bottom: 1px solid var(--ps-border-cool);
}
.psq-group__glyph {
  color: var(--_pc); font-size: 15px; line-height: 1;
  filter: drop-shadow(0 0 8px var(--_pc));
}
.psq-group__name {
  flex: 1; font-family: var(--ps-font-display); font-size: var(--ps-fs-caption);
  letter-spacing: .26em; text-transform: uppercase; color: var(--_pc);
}
.psq-open {
  flex-shrink: 0; display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 12px; border: 1px solid var(--_pc);
  border-radius: var(--ps-radius-sm); background: rgba(255,255,255,.03);
  color: var(--_pc); font-family: var(--ps-font-display); font-size: 10px;
  letter-spacing: .14em; text-transform: uppercase; text-decoration: none;
  -webkit-tap-highlight-color: transparent;
  transition: background var(--ps-dur) var(--ps-ease);
}
.psq-open:hover { background: rgba(255,255,255,.09); }
.psq-card {
  display: flex; align-items: center; gap: var(--ps-space-md);
  padding: var(--ps-space-md); margin-bottom: var(--ps-space-xs);
  border: 1px solid var(--ps-border-cool);
  border-left: 2px solid var(--_pc, var(--ps-gold));
  border-radius: var(--ps-radius-md);
  background: linear-gradient(180deg, rgba(20,11,48,.55), rgba(12,7,34,.5));
  box-shadow: var(--ps-shadow-1);
}
.psq-card.is-done { opacity: .6; }
.psq-card__glyph {
  flex-shrink: 0; width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--ps-radius-pill);
  border: 1px solid var(--_pc, var(--ps-gold));
  background: rgba(255,255,255,.03);
  color: var(--_pc, var(--ps-gold-light)); font-size: 14px; line-height: 1;
}
.psq-card__body { flex: 1; min-width: 0; }
.psq-card__title {
  font-family: var(--ps-font-display); font-size: var(--ps-fs-small);
  letter-spacing: .05em; color: var(--ps-text); margin: 0 0 3px;
}
.psq-card__desc {
  font-family: var(--ps-font-serif); font-size: var(--ps-fs-caption);
  line-height: 1.5; color: var(--ps-text-faint); margin: 0;
}
.psq-card__state {
  display: inline-flex; align-items: center; gap: 5px; margin-top: 6px;
  font-family: var(--ps-font-display); font-size: 9.5px;
  letter-spacing: .1em; text-transform: uppercase;
}
.psq-card__state--done { color: var(--ps-success); }
.psq-card__state--pending { color: var(--ps-warning); }
.psq-card__state--todo {
  color: var(--ps-text-faint); font-style: italic;
  text-transform: none; letter-spacing: .03em;
}
.psq-reward {
  flex-shrink: 0; min-width: 78px; text-align: center; padding: 9px 12px;
  border-radius: var(--ps-radius-sm); border: 1px solid var(--ps-border-strong);
  background: radial-gradient(120% 130% at 50% 0%, rgba(212,168,32,.18), rgba(212,168,32,.03));
  box-shadow: 0 0 18px rgba(212,168,32,.16), inset 0 0 12px rgba(212,168,32,.06);
}
.psq-reward__value {
  font-family: var(--ps-font-display); font-size: var(--ps-fs-h3);
  line-height: 1; color: var(--ps-gold-light);
  text-shadow: 0 0 14px rgba(255,232,122,.5);
}
.psq-reward__label {
  display: block; margin-top: 4px; font-family: var(--ps-font-display);
  font-size: 8px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ps-gold-dim);
}
.psq-empty {
  text-align: center; color: var(--ps-text-faint); font-style: italic;
  padding: var(--ps-space-2xl) 0;
}
@media (max-width: 560px) {
  .psq-card { gap: var(--ps-space-sm); padding: var(--ps-space-sm); }
  .psq-card__glyph { display: none; }
  .psq-reward { min-width: 60px; padding: 8px 7px; }
  .psq-reward__value { font-size: var(--ps-fs-small); }
  .psq-group__head { flex-wrap: wrap; }
  .psq-open { margin-left: auto; }
}

/* ---------------------------------------------------------------------------
   PS.wallet — mini-portefeuille universel (PI · STARDUST)
   Miroir de référence : polaristar-ui.js auto-injecte ces mêmes règles
   (<style id="ps-wallet-style">) pour fonctionner même sans ce fichier.
   ------------------------------------------------------------------------- */
:root {
  --ps-wal-pi: #ffd76a;            --ps-wal-pi-glow: rgba(255,201,90,.30);
  --ps-wal-stardust: #8fd0ff;      --ps-wal-stardust-glow: rgba(120,190,255,.28);
  --ps-wal-bg: #0b0720;            --ps-wal-bg2: #12081f;
}
.ps-wal {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
  justify-content: flex-end; max-width: 100%;
  font-family: var(--ps-font-display, 'Cinzel', serif);
}
.ps-wal[hidden] { display: none; }
.ps-wal__cap {
  --_c: var(--ps-wal-pi); --_g: var(--ps-wal-pi-glow);
  display: inline-flex; align-items: center; gap: 6px; min-height: 30px;
  padding: 4px 10px 4px 6px; max-width: 100%;
  border: 1px solid color-mix(in srgb, var(--_c) 34%, transparent);
  border-radius: var(--ps-radius-pill, 999px);
  background: linear-gradient(180deg, var(--ps-wal-bg2), var(--ps-wal-bg));
  box-shadow: 0 0 0 1px rgba(0,0,0,.35), 0 0 14px -4px var(--_g);
  color: var(--ps-text, #f2ead8); cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform .14s ease, box-shadow .22s ease, border-color .22s ease;
}
@supports not (color: color-mix(in srgb, #fff, #000)) {
  .ps-wal__cap { border-color: var(--_c); }
}
.ps-wal__cap:hover {
  border-color: color-mix(in srgb, var(--_c) 64%, transparent);
  box-shadow: 0 0 0 1px rgba(0,0,0,.35), 0 0 20px -2px var(--_g);
}
.ps-wal__cap:active { transform: scale(.96); }
.ps-wal__cap[data-cur=stardust] { --_c: var(--ps-wal-stardust); --_g: var(--ps-wal-stardust-glow); }
.ps-wal__icon {
  width: 18px; height: 18px; flex-shrink: 0;
  border-radius: 50%; object-fit: cover; background: #0a0616;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--_c) 55%, transparent), 0 0 6px -1px var(--_g);
}
@supports not (color: color-mix(in srgb, #fff, #000)) {
  .ps-wal__icon { box-shadow: inset 0 0 0 1px var(--_c), 0 0 6px -1px var(--_g); }
}
.ps-wal__cap[data-cur=stardust] .ps-wal__icon { animation: ps-wal-twinkle 3.4s ease-in-out infinite; }
.ps-wal__glyph { display: none; color: var(--_c); font-size: 12px; line-height: 1; flex-shrink: 0; }
.ps-wal__name { font-size: 9px; letter-spacing: .14em; color: var(--_c); opacity: .92; white-space: nowrap; }
.ps-wal__val {
  font-family: 'Cinzel Decorative', var(--ps-font-display, 'Cinzel'), serif;
  font-size: 13px; letter-spacing: .03em; color: #fff;
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
/* Présentation « stack » : capsules empilées pleine largeur (dropdown) */
.ps-wal--stack { flex-direction: column; align-items: stretch; gap: 6px; justify-content: flex-start; min-width: 220px; max-width: none; }
.ps-wal--stack .ps-wal__cap { width: 100%; justify-content: flex-start; gap: 11px; padding: 9px 14px; min-height: 42px; border-radius: 12px; }
.ps-wal--stack .ps-wal__icon { width: 24px; height: 24px; }
.ps-wal--stack .ps-wal__name { font-size: 10px; letter-spacing: .18em; }
.ps-wal--stack .ps-wal__val {
  margin-left: auto; font-size: 17px;
  background: linear-gradient(175deg, #fff8ea, var(--_c));
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: var(--_c);
  text-shadow: 0 0 14px var(--_g);
}
@supports not ((-webkit-background-clip: text) or (background-clip: text)) {
  .ps-wal--stack .ps-wal__val { color: #fff; }
}
.ps-wal__cap.is-gain { animation: ps-wal-bump .5s var(--ps-ease-out, cubic-bezier(.16,1,.3,1)); }
@keyframes ps-wal-twinkle {
  0%,100% { filter: drop-shadow(0 0 4px var(--_g)); opacity: 1; }
  50%     { filter: drop-shadow(0 0 9px var(--_g)) brightness(1.25); opacity: .86; }
}
@keyframes ps-wal-bump { 0% { transform: scale(1); } 30% { transform: scale(1.12); } 100% { transform: scale(1); } }
.ps-wal-bubble {
  position: fixed; z-index: 1150; pointer-events: none;
  font-family: var(--ps-font-display, 'Cinzel', serif); font-size: 13px; font-weight: 700;
  color: var(--_c, #ffd76a); text-shadow: 0 0 12px var(--_g, rgba(255,201,90,.6));
  opacity: 0; transform: translate(-50%, 0);
}
.ps-wal-bubble.is-run { animation: ps-wal-rise 1.4s ease-out forwards; }
@keyframes ps-wal-rise {
  0%   { opacity: 0; transform: translate(-50%, 4px) scale(.8); }
  18%  { opacity: 1; transform: translate(-50%, -6px) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -34px) scale(1); }
}
.ps-wal-particle {
  position: fixed; z-index: 1149; pointer-events: none;
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--_c, #ffd76a); box-shadow: 0 0 6px var(--_g, rgba(255,201,90,.7)); opacity: 0;
}
.ps-wal-particle.is-run { animation: ps-wal-spark .9s ease-out forwards; }
@keyframes ps-wal-spark {
  0%   { opacity: 1; transform: translate(0,0) scale(1); }
  100% { opacity: 0; transform: translate(var(--dx,0), var(--dy,-18px)) scale(.3); }
}
.ps-wal-panel {
  box-sizing: border-box;
  position: fixed; z-index: 1120; width: min(288px, calc(100vw - 24px));
  background: #140a26;
  background: linear-gradient(180deg, #1a0f30, #120a22);
  border: 1px solid color-mix(in srgb, var(--_c, #ffd76a) 55%, #2a1c44);
  border-radius: 14px;
  box-shadow: 0 22px 64px rgba(0,0,0,.82), 0 0 0 1px rgba(0,0,0,.5), 0 0 30px -6px var(--_g, rgba(255,201,90,.45));
  padding: 14px 15px; color: #e9e0f5;
  font-family: var(--ps-font-serif, 'Crimson Text', Georgia, serif);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.ps-wal-panel.is-open { animation: ps-wal-pop .16s ease; }
@keyframes ps-wal-pop { from { opacity: .2; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.ps-wal-panel__head {
  display: flex; align-items: center; gap: 7px;
  font-family: var(--ps-font-display, 'Cinzel', serif); font-size: 10px;
  letter-spacing: .2em; color: var(--_c, #ffd76a); text-transform: uppercase;
}
.ps-wal-panel__head img { width: 15px; height: 15px; object-fit: contain; }
.ps-wal-panel__big {
  font-family: var(--ps-font-display, 'Cinzel', serif); font-size: 24px; color: #fff;
  margin: 6px 0 2px; font-variant-numeric: tabular-nums;
}
.ps-wal-panel__today { font-size: 12px; color: var(--ps-success, #4ad9a0); min-height: 15px; }
.ps-wal-panel__today.is-neg { color: var(--ps-text-faint, #9a8fb5); }
.ps-wal-panel__sep { border: none; border-top: 1px solid rgba(255,255,255,.1); margin: 10px 0; }
.ps-wal-panel__label {
  font-family: var(--ps-font-display, 'Cinzel', serif); font-size: 9px;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--ps-text-faint, #9a8fb5); margin-bottom: 6px;
}
.ps-wal-op { display: flex; justify-content: space-between; gap: 10px; font-size: 12.5px; padding: 3px 0; line-height: 1.3; }
.ps-wal-op__amt { font-variant-numeric: tabular-nums; flex-shrink: 0; }
.ps-wal-op__amt.pos { color: var(--ps-success, #4ad9a0); }
.ps-wal-op__amt.neg { color: var(--ps-danger, #ff8080); }
.ps-wal-op__lbl { color: var(--ps-text-dim, #c8b898); text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-wal-panel__see {
  display: flex; align-items: center; justify-content: flex-end; gap: 5px; margin-top: 12px;
  font-family: var(--ps-font-display, 'Cinzel', serif); font-size: 10px; letter-spacing: .14em;
  color: var(--_c, #ffd76a); text-decoration: none;
}
.ps-wal-panel__see:hover { text-shadow: 0 0 10px var(--_g, rgba(255,201,90,.6)); }
@media (max-width: 767px) {
  .ps-wal:not(.ps-wal--stack) { gap: 5px; }
  .ps-wal:not(.ps-wal--stack) .ps-wal__cap { padding: 3px 8px 3px 5px; min-height: 28px; gap: 4px; }
  .ps-wal:not(.ps-wal--stack) .ps-wal__name { font-size: 8px; letter-spacing: .08em; }
  .ps-wal:not(.ps-wal--stack) .ps-wal__cap[data-cur=stardust] .ps-wal__name { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .ps-wal:not(.ps-wal--stack) .ps-wal__val { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  .ps-wal__icon, .ps-wal__cap.is-gain, .ps-wal-bubble.is-run,
  .ps-wal-particle.is-run, .ps-wal-panel.is-open { animation: none !important; }
}
