/* ═══════════════════════════════════════════════════════════════
   nier-global.css — règles du thème Nier actives HORS thème.
   Extraites telles quelles de nier-theme.css : elles habillent la
   transition « corruption système » (déclenchable depuis n'importe
   quel thème via playNierTransition(), AVANT que data-theme="nier"
   ne soit posé), l'OSD YoRHa et le ripple. Tout le reste du thème
   vit dans nier-theme.css, chargé à la demande (ThemeRuntime).
   Ne pas ajouter de règles scopées ici — elles vont dans
   nier-theme.css.
   ═══════════════════════════════════════════════════════════════ */

/* ── Transition de thème « Corruption système » ── */
.nier-tr-bar {
    position: absolute;
    left: 0; right: 0;
    top: var(--y); height: var(--h);
    background: var(--nier-ink, #161513);
    transform: scaleX(0);
    transform-origin: left;
    animation: nierCorrupt .3s var(--nier-ease-snap, cubic-bezier(.85, 0, .15, 1)) forwards;
    animation-delay: var(--d);
}
.nier-tr-bar:nth-child(even) {
    transform-origin: right;
    background: var(--nier-red-dark, #8B2519);
}
@keyframes nierCorrupt {
    to { transform: scaleX(1); }
}
#nier-transition .tr-osd {
    position: absolute;
    bottom: 9%; left: 50%;
    transform: translateX(-50%);
    font-family: var(--nier-mono, 'JetBrains Mono', monospace);
    font-size: .7rem;
    letter-spacing: .32em;
    color: var(--nier-paper, #F4EFE6);
    white-space: nowrap;
    text-shadow: 0 0 12px rgba(196, 54, 43, 0.6);
}
#nier-transition.fade-out {
    animation: nierTrFade .28s ease forwards;
}
@keyframes nierTrFade {
    to { opacity: 0; }
}

/* ── index.html — séquence d'amorçage du hero (couleurs de ligne) ──
   Fallbacks systématiques : ces règles s'appliquent HORS thème nier
   (nier-global.css est actif quel que soit le thème) et les variables
   --nier-* ne sont définies que sous html[data-theme="nier"]. ── */
.hero-boot .ok   { color: var(--nier-green, #4A7C59); }
.hero-boot .warn { color: var(--nier-amber, #986F1E); }
.hero-boot .red  { color: var(--nier-red, #C4362B); font-weight: 700; letter-spacing: .22em; }

/* ── OSD YoRHa (toasts) — fallbacks : cf. hero-boot ci-dessus ── */
.nier-osd {
    position: fixed;
    top: 74px;
    right: 18px;
    z-index: 10020;
    background: var(--nier-black, #161513);
    color: var(--nier-paper, #F4EFE6);
    border: 1px solid var(--nier-black-line, #383530);
    border-left: 3px solid var(--nier-red, #C4362B);
    font-family: var(--nier-mono, 'JetBrains Mono', 'IBM Plex Mono', monospace);
    font-size: .72rem;
    letter-spacing: .12em;
    padding: 10px 16px;
    opacity: 0;
    transform: translateX(12px);
    transition: opacity .3s var(--nier-ease, cubic-bezier(.22, .61, .21, 1)), transform .3s var(--nier-ease, cubic-bezier(.22, .61, .21, 1));
    pointer-events: none;
    max-width: min(420px, calc(100vw - 36px));
}
.nier-osd.on {
    opacity: 1;
    transform: none;
}
.nier-osd .osd-d {
    color: var(--nier-red-bright, #E0473B);
    margin-right: 8px;
}
.nier-osd.success { border-left-color: var(--nier-green, #4A7C59); }
.nier-osd.error   { border-left-color: var(--nier-red-bright, #E0473B); }
.nier-osd.success .osd-d { color: var(--nier-green, #4A7C59); }

/* ── Ripple carré sur les boutons ── */
.nier-ripple {
    position: absolute;
    width: 6px; height: 6px;
    margin: -3px;
    background: rgba(196, 54, 43, 0.4);
    pointer-events: none;
    border-radius: 0;
    animation: nierRipple .45s var(--nier-ease, cubic-bezier(.22, .61, .21, 1)) forwards;
}
@keyframes nierRipple {
    to { transform: scale(14); opacity: 0; }
}
