/* app/assets/stylesheets/shell.css */
.app-header { position: sticky; top: 0; z-index: 20; display: flex; justify-content: space-between;
  align-items: center; background: var(--c-chrome-2); border-bottom: 3px solid var(--c-ink); padding: 8px 12px; }
.app-header__brand { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
.app-header__word { font-family: var(--font-title); font-size: 14px; color: var(--c-gold); }
.app-header__slot { display: inline-flex; align-items: center; gap: 8px; color: var(--c-panel); }
.px-icon { width: 20px; height: 20px; color: var(--c-panel); }
.tab-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 20; display: flex;
  background: var(--c-ink); border-top: 3px solid var(--c-chrome-2);
  padding-bottom: env(safe-area-inset-bottom); }
.tab { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 8px 0 10px; min-height: 44px; text-decoration: none; color: var(--c-panel);
  font-family: var(--font-body); font-size: 11px; position: relative; }
.tab--active { color: var(--c-gold); }
.tab--active .px-icon { color: var(--c-gold); }
.badge { background: var(--c-danger); color: #fff; font-size: 10px; padding: 1px 5px;
  border: 2px solid var(--c-ink); position: absolute; top: 2px; right: 18%; }
.app-header__pending .badge { position: static; }
main.app-main { padding-bottom: calc(84px + env(safe-area-inset-bottom)); } /* higher specificity than .container's padding shorthand (theme.css) so it always wins, regardless of stylesheet load order */
.muted { opacity: .7; }
@media (min-width: 768px) { .tab { font-size: 12px; } }
.toast-zone { position: fixed; top: 52px; left: 0; right: 0; z-index: 40; display: flex;
  flex-direction: column; align-items: center; gap: 6px; pointer-events: none; }
.rpg-toast { pointer-events: auto; background: var(--c-chrome-2); color: #fff; border: 3px solid #fff;
  box-shadow: 4px 4px 0 rgba(0,0,0,.4); padding: 10px 16px; font-family: var(--font-body);
  animation: toast-in .18s steps(3) both; max-width: 90%; cursor: pointer; }
.rpg-toast--danger { border-color: var(--c-danger); }
@keyframes toast-in { from { transform: translateY(-16px); opacity: 0; } to { transform: none; opacity: 1; } }
.avatar-plate { display: inline-flex; align-items: center; justify-content: center;
  background: var(--plate); border: 2px solid var(--c-ink); box-shadow: 2px 2px 0 rgba(0,0,0,.35); }
.avatar-sprite { width: 85%; height: 85%; image-rendering: pixelated; }
.avatar-initial { font-family: var(--font-title); color: var(--c-ink); font-size: 60%; }
.exit-kid-mode--header { position: relative; }
.exit-kid-mode--header summary { list-style: none; cursor: pointer; display: inline-flex;
  align-items: center; gap: 4px; color: var(--c-panel); font-size: 12px; min-height: 44px; }
.exit-kid-mode--header .exit-form { position: absolute; right: 0; top: 100%; background: var(--c-panel);
  border: 3px solid var(--c-ink); padding: 10px; z-index: 30; width: 200px; }
.rpg-button--big { font-size: 14px; padding: 14px 18px; }

/* ── Hero banner ── */
.hero-banner { position: relative; border: 3px solid var(--c-ink); box-shadow: 4px 4px 0 var(--c-chrome-2);
  margin-bottom: 16px; overflow: hidden; }
.hero-banner svg { display: block; width: 100%; height: 120px; }
.hero-banner--compact svg { height: 96px; }
.hero-banner__text { position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; padding-bottom: 22px; text-align: center; }
.hero-banner__word { font-family: var(--font-title); color: var(--c-gold); font-size: 22px;
  text-shadow: 2px 2px 0 var(--c-ink); letter-spacing: 2px; }
.hero-banner__tag { font-family: var(--font-body); color: var(--c-panel); font-size: 12px; margin-top: 6px; }
@media (min-width: 768px) { .hero-banner svg { height: 160px; } .hero-banner__word { font-size: 28px; } }
/* ── End hero banner ── */
