/* ===== V6.33 : style unifié =====
   Chargé seulement si « Style unifié » est coché dans Administration › Interface : décocher la case
   rend l’affichage d’avant. Les sélecteurs :where() gardent une spécificité nulle, pour que les écrans
   qui ont déjà leur propre style le conservent. */

.dbrpg-shell{
  --ui-ink:#1c0b36;--ui-paper:#fff;--ui-soft:#fbf7ff;--ui-muted:#4a3373;--ui-line:#d6cbe8;
  --ui-violet:#8b2cf5;--ui-gold:#ffd21f;--ui-red:#e8384f;--ui-green:#1fb86a;--ui-blue:#2f8cff;
  --ui-r-s:10px;--ui-r-m:14px;--ui-r-l:18px;
  --ui-shadow:4px 4px 0 var(--ui-ink);--ui-shadow-s:2px 2px 0 var(--ui-ink);
  --ui-fs-1:clamp(1.35rem,1.05rem + 1vw,1.8rem);--ui-fs-2:1.12rem;--ui-fs-3:.92rem;--ui-fs-4:.78rem;
}

/* Typographie : 4 tailles, la police manga pour les titres seulement. */
:where(.dbrpg-main) h2{font-size:var(--ui-fs-1);line-height:1.1}
:where(.dbrpg-main) h3{font-size:var(--ui-fs-2);line-height:1.2}
:where(.dbrpg-main) h4{font-size:var(--ui-fs-3);line-height:1.25;font-family:var(--m-font-body,inherit);font-weight:900}
:where(.dbrpg-main) p{font-size:var(--ui-fs-3);line-height:1.45}
:where(.dbrpg-main) small{line-height:1.35}
.dbrpg-main .dbrpg-section-head{margin-bottom:14px}
.dbrpg-main .dbrpg-section-head p{max-width:68ch;color:var(--ui-muted)}
.dbrpg-main .dbrpg-muted{color:var(--ui-muted)}

/* Accessibilité : un seul contour de focus, bien visible, partout. */
.dbrpg-shell :focus-visible,.dbrpg-confirm :focus-visible,.dbrpg-search :focus-visible,.dbrpg-where-modal :focus-visible{outline:3px solid var(--ui-gold,#ffd21f);outline-offset:2px}

/* Boutons : trois niveaux et des cibles tactiles d’au moins 44 px sur écran tactile. */
@media (pointer:coarse){
  .dbrpg-main :is(.dbrpg-primary,.dbrpg-secondary,.dbrpg-danger),.dbrpg-confirm-actions button{min-height:44px}
  .dbrpg-main .dbrpg-link{min-height:36px}
}
.dbrpg-main :is(.dbrpg-primary,.dbrpg-secondary):disabled{opacity:.55;cursor:not-allowed;filter:grayscale(.35)}

/* Cartes : un rayon et une ombre communs. */
.dbrpg-main :is(.dbrpg-panel,.dbrpg-ob-card,.dbrpg-pg-block,.dbrpg-rub-tile,.dbrpg-track,.dbrpg-plan-card,.dbrpg-beginner,.dbrpg-shop-item,.dbrpg-dungeon-card,.dbrpg-technique-card,.dbrpg-duo-card,.dbrpg-mentor-card,.dbrpg-item){border-radius:var(--ui-r-l)}
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  .dbrpg-main :is(.dbrpg-ob-card,.dbrpg-shop-item,.dbrpg-dungeon-card,.dbrpg-mentor-card,.dbrpg-technique-card){transition:transform .15s ease,box-shadow .15s ease}
  .dbrpg-main :is(.dbrpg-ob-card,.dbrpg-shop-item,.dbrpg-dungeon-card,.dbrpg-mentor-card,.dbrpg-technique-card):hover{transform:translateY(-2px)}
}

/* Récompense prête : légère pulsation dorée pour attirer l’œil. */
@media (prefers-reduced-motion:no-preference){
  .dbrpg-main .dbrpg-ob-card.is-ready{animation:dbrpg-ui-ready 2.4s ease-in-out infinite}
}
@keyframes dbrpg-ui-ready{50%{box-shadow:4px 4px 0 #f0a500,0 0 0 5px rgba(255,210,31,.35)}}

/* Écrans vides : une carte illustrée, centrée, avec son action. */
.dbrpg-main .dbrpg-empty{display:grid;justify-items:center;gap:6px;padding:24px 16px;border:3px dashed #b9a9d6;border-radius:var(--ui-r-l);background:var(--ui-soft);color:var(--ui-ink);text-align:center}
.dbrpg-main .dbrpg-empty>span:first-child{display:grid;place-items:center;width:64px;height:64px;border:3px solid var(--ui-ink);border-radius:18px;background:#fff3b0;font-size:2rem;box-shadow:var(--ui-shadow-s)}
.dbrpg-main .dbrpg-empty h3{margin:4px 0 0}
.dbrpg-main .dbrpg-empty p{margin:0;max-width:52ch;color:var(--ui-muted)}

/* Chargement : squelettes animés. */
.dbrpg-skel{display:grid;gap:10px;padding:4px 0}
.dbrpg-skel i{display:block;height:58px;border-radius:var(--ui-r-m,14px);background:linear-gradient(90deg,#efe8fa 25%,#fbf7ff 50%,#efe8fa 75%);background-size:200% 100%;animation:dbrpg-ui-skel 1.2s linear infinite}
.dbrpg-skel i:first-child{height:96px}
@keyframes dbrpg-ui-skel{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.dbrpg-skel i{animation:none}}

/* Réclamation : étincelles autour du bouton. */
.dbrpg-burst{position:fixed;z-index:100004;width:0;height:0;pointer-events:none}
.dbrpg-burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border:1.5px solid #1c0b36;background:#ffd21f;transform:rotate(var(--a)) translateY(0);animation:dbrpg-ui-burst .8s cubic-bezier(.2,.8,.3,1) forwards}
.dbrpg-burst i:nth-child(3n){background:#ff5a36}.dbrpg-burst i:nth-child(3n+1){background:#2f8cff}
.dbrpg-burst b{position:absolute;left:-14px;top:-18px;font-size:28px;color:#ffd21f;text-shadow:2px 2px 0 #1c0b36;animation:dbrpg-ui-pop .7s ease-out forwards}
@keyframes dbrpg-ui-burst{to{transform:rotate(var(--a)) translateY(calc(-1 * var(--d)));opacity:0}}
@keyframes dbrpg-ui-pop{0%{transform:scale(.3);opacity:0}40%{transform:scale(1.25);opacity:1}100%{transform:scale(1) translateY(-16px);opacity:0}}
