/* House colors — 3B's chrome. Loaded after loyalty.css. */

@font-face {
  font-family: "Figtree";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("figtree-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Figtree";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("figtree-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Oswald";
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url("oswald-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Oswald";
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url("oswald-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

.loyalty-site {
  --bg: #10172c;
  --bg-raised: #182246;
  --bg-sunken: #0c1224;
  --brand: #284493;
  --brand-bright: #3d5cb5;
  --cream: #f4f1ea;
  --muted: #c5cbe0;
  --line: #3a4a7a;
  --punch: #9b1b3e;
  --punch-hot: #c42a55;
  --focus: #f4f1ea;
  --radius: .85rem;
  --font-body: "Figtree", system-ui, sans-serif;
  --font-display: "Oswald", system-ui, sans-serif;
  --shadow: 0 .7rem 1.8rem rgba(8, 12, 28, .48);
  background:
    radial-gradient(70rem 28rem at 50% -12%, rgba(40, 68, 147, .5), transparent 62%),
    var(--bg);
  color: var(--cream);
  font: 18px/1.45 var(--font-body);
}

.loyalty-site h1, .loyalty-site h2, .loyalty-site h3 {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: .02em;
  line-height: 1.15;
}

.loyalty-site a { color: #c9d4f4; }
.loyalty-site a:hover, .loyalty-site a:focus-visible { color: var(--cream); }
.loyalty-site :focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 3px;
}

.eyebrow {
  color: #b9c6ea;
  font-family: var(--font-display);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .16em;
  margin: 0 0 .35rem;
  text-transform: uppercase;
}

.loyalty-header {
  align-items: center;
  background: rgba(16, 23, 44, .9);
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  gap: .7rem 1.1rem;
  justify-content: center;
  padding: .8rem 1rem;
  text-align: left;
}

.brand-lockup {
  align-items: center;
  color: inherit;
  display: inline-flex;
  gap: .7rem;
  text-decoration: none;
}

.brand-lockup:hover, .brand-lockup:focus-visible { color: inherit; }

.brand-mark {
  background: var(--brand);
  border-radius: 50%;
  box-shadow: 0 0 0 2px var(--cream), 0 0 0 3px var(--punch);
  display: block;
  height: 2.7rem;
  object-fit: cover;
  width: 2.7rem;
}

.brand-lockup strong {
  display: block;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: .08em;
  line-height: 1;
}

.brand-lockup small {
  color: var(--muted);
  display: block;
  font-family: var(--font-display);
  font-size: .68rem;
  font-weight: 500;
  letter-spacing: .16em;
  margin-top: .2rem;
  text-transform: uppercase;
}

.header-tools {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem .8rem;
}

.header-tools a {
  color: var(--muted);
  font-family: var(--font-display);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-decoration: none;
  text-transform: uppercase;
}

.loyalty-main { max-width: 54rem; }

.loyalty-main input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.loyalty-main select,
.loyalty-main textarea {
  background: var(--bg-sunken);
  border: 1px solid var(--line);
  border-radius: .55rem;
  color: var(--cream);
  padding: .75rem .85rem;
}

.loyalty-main input[type="checkbox"],
.loyalty-main input[type="radio"] {
  accent-color: var(--punch);
  max-width: none;
  width: auto;
}

.loyalty-main input::placeholder, .loyalty-main textarea::placeholder { color: #8b97b8; }

.loyalty-main input[type=submit],
.loyalty-main button,
.button-link {
  background: var(--punch);
  border: 0;
  border-radius: 999px;
  box-shadow: 0 .18rem 0 #5c1026;
  color: var(--cream);
  cursor: pointer;
  display: inline-block;
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: .06em;
  padding: .7rem 1.05rem;
  text-decoration: none;
  text-transform: uppercase;
}

.loyalty-main input[type=submit]:hover,
.loyalty-main button:hover,
.button-link:hover {
  background: var(--punch-hot);
  color: var(--cream);
}

.loyalty-main input[type=submit]:active,
.loyalty-main button:active,
.button-link:active {
  box-shadow: 0 .08rem 0 #5c1026;
  transform: translateY(.1rem);
}

.button-link.secondary-action,
.loyalty-main button.secondary-action,
.secondary-action {
  background: transparent;
  border: 1px solid var(--line);
  box-shadow: none;
  color: var(--cream);
}

.button-link.secondary-action:hover,
.loyalty-main button.secondary-action:hover,
.secondary-action:hover {
  background: var(--bg-sunken);
  border-color: var(--brand-bright);
  color: var(--cream);
}

.settings-signout {
  background: transparent;
  border: 1px solid var(--line);
  box-shadow: none;
  color: var(--muted);
}

.notice, .alert {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-left: .3rem solid var(--brand-bright);
  border-radius: .6rem;
  padding: .85rem 1rem;
}

.alert { border-left-color: var(--punch); }

.stat, .progress-card, .reward-card, .admin-card,
.avatar-summary, .avatar-setup, .portrait-card,
.item-detail, .help-popover {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}

.stat span, .progress-card p, .reward-card p, .reward-card small,
.form-help, .compact-list span, .item-rarity {
  color: var(--muted);
}

.stat {
  text-align: center;
}

.stat strong {
  font-family: var(--font-display);
  font-size: 1.9rem;
  font-weight: 600;
  letter-spacing: .04em;
}

.progress-track {
  background: var(--bg-sunken);
  border-radius: 1rem;
  height: .55rem;
}

.progress-track span {
  background: linear-gradient(90deg, var(--brand), var(--punch-hot));
}

.inline-nav, .admin-nav {
  gap: .65rem 1rem;
}

.inline-nav a, .admin-nav a {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--cream);
  font-family: var(--font-display);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .08em;
  padding: .4rem .8rem;
  text-decoration: none;
  text-transform: uppercase;
}

.inline-nav a:hover, .admin-nav a:hover {
  border-color: var(--brand-bright);
  color: var(--cream);
}

.compact-list li { border-bottom-color: var(--line); }

.night-mark {
  background: var(--bg-sunken);
  border-color: var(--line);
}

.night-mark-filled {
  background: var(--brand);
  border-color: var(--brand-bright);
}

.night-mark-dot {
  background: transparent;
  border-color: var(--line);
}

.night-mark-filled .night-mark-dot {
  background: var(--cream);
  border-color: var(--cream);
  box-shadow: none;
}

.night-mark-day { color: var(--muted); }
.night-streak { color: #b9c6ea; }

.qr-display svg, .qr-stamp svg, .redemption-qr svg {
  background: #fff;
  border-radius: .6rem;
}

.skip-link:focus { background: var(--cream); color: var(--bg); }

.item-artwork {
  background: var(--bg-sunken);
  border-color: var(--line);
}

.staff-notice {
  background: var(--bg-raised);
  border: 1px solid var(--punch);
  border-radius: var(--radius);
}

.codex-card {
  background: var(--bg-raised);
  border-color: var(--line);
}

.item-grid-cell {
  background: var(--bg-raised);
}

.item-wearing { color: #b9c6ea; }

.player-game-header { border-bottom-color: var(--line); }

.player-shell-bar {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: .85rem;
  gap: .45rem;
  padding: .35rem .45rem;
}

.shell-brand {
  align-items: center;
  display: inline-flex;
  flex: 0 0 auto;
}

.brand-mark-shell {
  height: 2.15rem;
  width: 2.15rem;
}

.game-tab {
  background: transparent;
  border: 1px solid transparent;
  border-radius: 999px;
  color: var(--muted);
  font-family: var(--font-display);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.game-tab:hover, .game-tab:focus-visible {
  border-color: var(--line);
  color: var(--cream);
  outline: 0;
}

.game-tab-current,
.game-tab-current:hover,
.game-tab-current:focus-visible {
  background: var(--brand);
  border-color: var(--brand-bright);
  color: var(--cream);
}

.player-shell-username {
  background: var(--bg-sunken);
  border-color: var(--line);
  border-radius: 999px;
  color: #b9c6ea;
  font-family: var(--font-display);
  letter-spacing: .04em;
}

.shell-utility-nav { border-left-color: var(--line); }

.shell-utility-nav .game-tab { color: var(--muted); }

.character-profile-panel, .character-inventory-panel {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: 1rem;
}

.character-profile-panel {
  border-color: var(--brand);
  box-shadow: var(--shadow);
}

.dashboard-portrait-link:hover, .dashboard-portrait-link:focus-visible {
  outline: 3px solid var(--focus);
}

.profile-portrait, .dashboard-portrait {
  border-radius: .85rem;
}

.character-empty-art {
  background: radial-gradient(circle, var(--brand), var(--bg-sunken));
  border-color: var(--brand-bright);
}

.character-empty-art span { color: var(--cream); }

.character-archetype, .avatar-archetype, .profile-character-name { color: var(--muted); }

.avatar-identity-copy { color: #b9c6ea; }

.avatar-hero { border-color: var(--brand); }

.equipped-item {
  background: var(--bg-sunken);
  border-color: var(--line);
}

.equipped-item:hover, .equipped-item:focus-visible {
  border-color: var(--brand-bright);
  box-shadow: none;
}

.dashboard-subsection, .progress-supporting-data { border-top-color: var(--line); }

.panel-link {
  color: #c9d4f4;
  font-family: var(--font-display);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.house-panel {
  background: var(--bg-raised);
  border: 1px solid var(--brand);
  border-radius: 1rem;
  padding: 1rem;
}

.tables-chalkboard {
  background: var(--bg-sunken);
  border-color: var(--brand);
  box-shadow: none;
}

.tables-board-row { border-bottom-color: var(--line); }

.tables-board-game, .tables-board-time { color: var(--muted); }

.tables-board-result-copy { color: #b9c6ea; }

.table-record {
  background: var(--bg-raised);
  border-color: var(--line);
}

.loyalty-main .help-button,
.loyalty-main input[value="Hide"],
.loyalty-main input[value="Take off"] {
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 999px;
  box-shadow: none;
  color: var(--cream);
  font-family: var(--font-display);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.loyalty-main .help-button:hover,
.loyalty-main input[value="Hide"]:hover,
.loyalty-main input[value="Take off"]:hover {
  background: var(--bg-sunken);
  border-color: var(--brand-bright);
  color: var(--cream);
}

.help-popover {
  border-color: var(--brand);
}

.item-detail-facts div, .item-appearance dl div {
  background: var(--bg-sunken);
}

.item-detail-facts dt, .item-appearance dt { color: var(--muted); }

.claim-hero {
  background: linear-gradient(155deg, var(--brand) 0%, var(--bg-raised) 68%);
  border: 1px solid var(--brand-bright);
  border-radius: 1.1rem;
  box-shadow: var(--shadow);
}

.claim-hero::after {
  border-color: rgba(244, 241, 234, .18);
}

.claim-hero-copy { color: var(--cream); }

.claim-cta {
  background: var(--punch);
  box-shadow: 0 .25rem 0 #5c1026;
}

.claim-cta:active { box-shadow: 0 .1rem 0 #5c1026; }

.claim-cta:focus-visible { outline-color: var(--focus); }

.claim-result-hero {
  background: var(--bg-raised);
  border: 1px solid var(--brand);
  border-radius: 1rem;
}

.claim-result-hero p:last-child { color: #b9c6ea; }

.claim-next, .redemption-next { border-top-color: var(--line); }

.redemption-backup summary { color: #c9d4f4; }

.auth-page .loyalty-header { display: none; }

.auth-page .loyalty-main {
  align-content: start;
  display: grid;
  justify-items: center;
  min-height: calc(100svh - 2rem);
  padding-top: 8vh;
}

.auth-panel {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: 1.15rem;
  box-shadow: var(--shadow);
  margin: 0 auto;
  max-width: 26rem;
  padding: 1.7rem 1.4rem 1.5rem;
  width: 100%;
}

.auth-panel form { max-width: none; }
.auth-panel code, .auth-panel strong { overflow-wrap: anywhere; word-break: break-word; }
.auth-page .notice, .auth-page .alert { max-width: 26rem; width: 100%; }

.check-row {
  align-items: flex-start;
  display: flex;
  gap: .55rem;
}

.check-row input { margin-top: .2rem; }
.check-row label { margin: 0; }

.raised-panel {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: 1.15rem;
  box-shadow: var(--shadow);
  max-width: 28rem;
  padding: 1.4rem;
}

.raised-panel form { max-width: none; }

.brand-mark-lg {
  background: var(--brand);
  border-radius: 50%;
  box-shadow: 0 0 0 3px var(--cream), 0 0 0 5px var(--punch);
  display: block;
  height: 6.4rem;
  margin: 0 auto 1.1rem;
  object-fit: cover;
  width: 6.4rem;
}

.auth-panel h1 {
  font-size: clamp(2rem, 8vw, 2.6rem);
  margin: .15rem 0 .4rem;
  text-align: center;
}

.auth-panel > p { color: var(--muted); text-align: center; }

.auth-panel .eyebrow { text-align: center; }

.display-page .qr-display {
  background:
    radial-gradient(42rem 24rem at 50% 0%, rgba(40, 68, 147, .55), transparent 70%),
    var(--bg);
}

.display-page .qr-display > p:first-of-type {
  color: #b9c6ea;
  font-family: var(--font-display);
  letter-spacing: .18em;
}

.display-badge {
  height: 5.5rem;
  margin: 0 auto;
  width: 5.5rem;
}

.portrait-placeholder { background: var(--bg-sunken); }

.loadout-grid select { background: var(--bg-sunken); color: var(--cream); }

.admin-nav { border-top-color: var(--line); }

/* Game boards: same navy chrome. Ivory dice faces and Hot Dice specials stay. */
.dice-game-page, .last-call-game-page, .hot-dice-game-page {
  --dice-wood: var(--bg);
  --dice-felt: var(--bg-sunken);
  --dice-amber: var(--brand-bright);
}

.dice-title-row p:last-child,
.dice-message,
.dice-empty-copy,
.dice-roll-source,
.dice-mini-source,
.dice-leader-player small,
.dice-extra-list small,
.hot-dice-hint,
.hot-dice-turn-status,
.hot-dice-board-heading span,
.hot-dice-board-empty,
.hot-dice-prize-list span,
.hot-dice-prize-credit { color: var(--muted); }

.dice-status-pill {
  background: var(--bg-raised);
  border-color: var(--brand-bright);
  color: var(--cream);
  font-family: var(--font-display);
}

.dice-tray {
  background:
    radial-gradient(circle at 50% 0%, rgba(40, 68, 147, .55), var(--bg-sunken) 52%, var(--bg));
  border-color: var(--brand-bright);
  box-shadow: inset 0 0 0 .3rem rgba(8, 12, 28, .45), inset 0 .2rem 1rem rgba(61, 92, 181, .16), 0 .35rem 0 var(--bg-sunken);
}

.dice-tray::before { border-color: rgba(244, 241, 234, .14); }

.dice-panel:not(.dice-tray),
.dice-board,
.dice-roll-card,
.dice-rail-panel,
.dice-other-table,
.hot-dice-board,
.hot-dice-board-panel,
.hot-dice-rules-card {
  background: var(--bg-raised);
  border-color: var(--line);
  box-shadow: none;
}

.dice-roll-card { border-left-color: var(--brand-bright); }

.dice-rail-heading,
.dice-compact-list li,
.dice-leader-list li,
.dice-extra-list li,
.hot-dice-board-list li,
.hot-dice-prize { border-color: var(--line); }

.dice-rail-heading h2,
.hot-dice-board-heading h2,
.hot-dice-rules-card h2 { font-family: var(--font-display); }

.dice-rail-heading strong,
.dice-rail-heading span,
.dice-mini-total,
.dice-leader-score,
.dice-total,
.dice-panel-result-copy strong,
.dice-board-score strong,
.dice-board-result-copy,
.hot-dice-board-panel h3,
.hot-dice-board-entry span,
.hot-dice-board-list li > span:last-child,
.hot-dice-prize h3,
.hot-dice-recap-hand,
.hot-dice-dealer-line { color: #b9c6ea; }

.dice-outcome, .dice-hero-outcome { color: var(--cream); }

.hot-dice-chain {
  color: var(--punch-hot);
  text-shadow: 0 0 .75rem rgba(196, 42, 85, .45);
}

.loyalty-main .dice-practice-button {
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 999px;
  box-shadow: none;
  color: var(--cream);
  font-family: var(--font-display);
}

.loyalty-main .dice-practice-button:hover,
.loyalty-main .dice-practice-button:focus-visible {
  border-color: var(--brand-bright);
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}

.loyalty-main .dice-roll-button,
.loyalty-main .dice-use-button,
.loyalty-main .hot-dice-rules-button,
.loyalty-main .hot-dice-rules-card button {
  background: var(--punch);
  border-radius: 999px;
  box-shadow: 0 .18rem 0 #5c1026;
  color: var(--cream);
  font-family: var(--font-display);
}

.loyalty-main .dice-roll-button:hover,
.loyalty-main .dice-use-button:hover,
.loyalty-main .hot-dice-rules-button:hover,
.loyalty-main .hot-dice-rules-card button:hover,
.loyalty-main .dice-roll-button:focus-visible,
.loyalty-main .dice-use-button:focus-visible,
.loyalty-main .hot-dice-rules-button:focus-visible,
.loyalty-main .hot-dice-rules-card button:focus-visible {
  background: var(--punch-hot);
  color: var(--cream);
  outline-color: var(--focus);
}

.last-call-game-page .game-play-controls .high-low-button,
.last-call-game-page .lucky-number-button {
  background: var(--bg-sunken);
  box-shadow: 0 .25rem 0 var(--bg);
  color: var(--cream);
  font-family: var(--font-display);
}

.last-call-game-page .lucky-number-button { border-color: var(--brand-bright); }

.last-call-game-page .game-play-controls .high-low-button:hover:not(:disabled),
.last-call-game-page .game-play-controls .high-low-button:focus-visible,
.last-call-game-page .lucky-number-button:hover:not(:disabled),
.last-call-game-page .lucky-number-button:focus-visible {
  background: var(--bg-raised);
  box-shadow: 0 .25rem 0 var(--bg), 0 0 .9rem rgba(61, 92, 181, .28);
  outline-color: var(--focus);
}

.last-call-game-page .loyalty-main .red-button { background: var(--bg-sunken); color: var(--cream); }
.last-call-game-page .loyalty-main .black-button {
  background: var(--bg);
  border-color: var(--cream);
  color: var(--cream);
}

.game-play-art::before { background: radial-gradient(circle, rgba(61, 92, 181, .28), transparent 68%); }

.games-lobby-heading {
  background: linear-gradient(120deg, var(--bg), var(--bg-raised) 60%, var(--bg-sunken));
  border-color: var(--line);
  border-bottom-color: var(--brand-bright);
  box-shadow: none;
}

.games-lobby-heading::after { border-color: rgba(244, 241, 234, .14); }
.games-lobby-heading p:last-child, .games-lobby-meta { color: var(--muted); }

.game-card {
  background: var(--bg-raised);
  border-color: var(--line);
  box-shadow: 0 .25rem 0 var(--bg-sunken);
}

.game-card:hover, .game-card:focus-visible {
  border-color: var(--brand-bright);
  box-shadow: 0 .35rem 0 var(--bg-sunken), 0 0 1rem rgba(61, 92, 181, .28);
}

.game-card:focus-visible { outline-color: var(--focus); }

.game-card-art {
  background: var(--bg-sunken);
  border-bottom-color: var(--line);
}

.game-card-kicker { color: #b9c6ea !important; }
.game-card-body > p:not(.game-card-kicker) { color: var(--muted); }
.game-card-action { border-top-color: var(--line); color: var(--cream); }
.game-card-action span { color: #b9c6ea; }
.game-card-open { border-color: var(--brand-bright); box-shadow: inset 0 0 0 1px var(--brand); }
.game-card-needs-visit { border-color: var(--punch); }
.game-card-spent { border-color: var(--line); opacity: .7; }

.dice-other-table {
  background: var(--bg-raised);
  border-color: var(--line);
  border-left-color: var(--brand-bright);
}

.dice-other-table:hover, .dice-other-table:focus-visible {
  border-color: var(--brand-bright);
  outline-color: var(--focus);
}

.still-open-tables {
  background: var(--bg-raised);
  border-color: var(--brand);
}

.still-open-table a {
  background: var(--bg-sunken);
  border-color: var(--line);
  color: var(--cream);
}

.still-open-table a:hover, .still-open-table a:focus-visible {
  border-color: var(--brand-bright);
  box-shadow: 0 0 0 .15rem var(--bg);
}

.still-open-table span { color: #b9c6ea; }

.hot-dice-recap {
  background: rgba(12, 18, 36, .92);
  border-color: var(--line);
}

.notification-overlay-card {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  color: var(--cream);
  height: fit-content;
  inset: 0;
  margin: auto;
  max-width: 24rem;
  padding: 1.2rem 1.2rem 1.1rem;
  position: fixed;
  width: calc(100% - 2rem);
}
.notification-overlay-card:not([open]) { display: none !important; }
.notification-overlay-card::backdrop { background: rgba(8, 12, 28, .72); }
.notification-overlay-card h2 { margin: 0 0 .55rem; }
.notification-overlay-card p { margin: .4rem 0; }
.notification-overlay-celebration {
  font-size: clamp(1.8rem, 8vw, 2.6rem);
  font-weight: 700;
  letter-spacing: .04em;
}
.notification-overlay-card input[type="submit"],
.notification-overlay-card button[type="submit"] {
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  font-size: 1rem;
  margin-top: .7rem;
  min-height: 2.75rem;
  padding: .55rem 1.1rem;
  width: 100%;
}
.notification-overlay-dismiss {
  background: transparent;
  border: 0;
  cursor: pointer;
  font-size: 1.4rem;
  line-height: 1;
  min-height: 2.5rem;
  min-width: 2.5rem;
  position: absolute;
  right: .35rem;
  top: .2rem;
}
.notification-overlay-card h2,
.notification-overlay-celebration { font-family: var(--font-display); }
.notification-overlay-celebration { color: var(--cream); }
.loyalty-main .notification-overlay-card input[type="submit"],
.loyalty-main .notification-overlay-card button[type="submit"] {
  background: var(--punch);
  box-shadow: 0 .18rem 0 #5c1026;
  color: var(--cream);
  font-family: var(--font-display);
}
.loyalty-main .notification-overlay-card input[type="submit"]:hover,
.loyalty-main .notification-overlay-card button[type="submit"]:hover,
.loyalty-main .notification-overlay-card input[type="submit"]:focus-visible,
.loyalty-main .notification-overlay-card button[type="submit"]:focus-visible {
  background: var(--punch-hot);
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}
.notification-overlay-dismiss { color: var(--muted); }

.notification-bell { position: relative; }
.notification-bell-icon { display: block; }
.notification-bell-badge {
  background: var(--punch);
  border-radius: 999px;
  color: var(--cream);
  font-size: .65rem;
  font-weight: 800;
  line-height: 1;
  min-width: 1.1rem;
  padding: .15rem .3rem;
  position: absolute;
  right: -.15rem;
  top: -.15rem;
  text-align: center;
}
.notification-page .notification-history { margin: 0; }
.notification-history-list {
  display: grid;
  gap: .45rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
  list-style: none;
  margin: 0;
  padding: 0;
}
.notification-history-item {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  display: grid;
  gap: .1rem .65rem;
  grid-template-columns: minmax(0, 1fr) auto;
  padding: .45rem .65rem;
}
.notification-history-item.is-uncollected { border-color: var(--brand-bright); }
.notification-history-meta {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: .15rem .45rem;
  grid-column: 1;
  justify-content: space-between;
  min-width: 0;
}
.notification-history-meta .eyebrow { margin: 0; min-width: 0; }
.notification-history-time {
  color: var(--muted);
  flex: 0 0 auto;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}
.notification-history-item h2,
.notification-history-item h2 + p { grid-column: 1; margin: 0; }
.notification-history-item h2 { font-size: 1rem; line-height: 1.2; }
.notification-history-item h2 + p { color: var(--muted); }
.notification-history-item form {
  align-self: center;
  display: block;
  gap: 0;
  grid-column: 2;
  grid-row: 1 / span 3;
  margin: 0;
  max-width: none;
  width: auto;
}
.loyalty-main .notification-history-item input[type="submit"] {
  background: var(--punch);
  border: 0;
  border-radius: 999px;
  box-shadow: 0 .18rem 0 #5c1026;
  color: var(--cream);
  font-family: var(--font-display);
  margin: 0;
  min-height: 2.1rem;
  padding: .25rem .7rem;
  white-space: nowrap;
  width: auto;
}

.hot-dice-recap-total { color: var(--cream); }
.hot-dice-recap-note, .hot-dice-keep-it { color: #b9c6ea; }

.dice-other-table span { color: var(--muted); }

@media (max-width: 40rem) {
  .loyalty-header { justify-content: flex-start; }
  .auth-page .loyalty-main { padding-top: 1.5rem; }
  .brand-mark-lg { height: 5.4rem; width: 5.4rem; }
}

.roles-page .loyalty-main { padding-top: 1rem; padding-bottom: 1.5rem; }
.roles-page .loyalty-main form { display: grid; gap: .4rem; max-width: none; }
.roles-page h1 { font-size: clamp(1.2rem, 2vw, 1.7rem); margin: 0 0 .55rem; }
.roles-page h2 { font-size: 1.05rem; margin: 0 0 .45rem; }
.roles-desk {
  align-items: start;
  display: grid;
  gap: .85rem 1.25rem;
  grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
}
.roles-grant, .roles-active {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: .7rem .8rem .75rem;
}
.roles-email-wrap { position: relative; }
.roles-suggest {
  background: var(--bg-sunken);
  border: 1px solid var(--line);
  border-radius: .5rem;
  left: 0;
  list-style: none;
  margin: .2rem 0 0;
  max-height: 12rem;
  overflow: auto;
  padding: .2rem;
  position: absolute;
  right: 0;
  z-index: 6;
}
.roles-suggest-item {
  align-items: center;
  border-radius: .4rem;
  cursor: pointer;
  display: grid;
  gap: .45rem;
  grid-template-columns: 1.8rem minmax(0, 1fr);
  padding: .28rem .35rem;
}
.roles-suggest-item.is-active, .roles-suggest-item:hover { background: var(--brand); }
.roles-suggest-item span { color: var(--muted); display: block; font-size: .75rem; overflow: hidden; text-overflow: ellipsis; }
.roles-picked, .roles-list-item {
  align-items: center;
  display: grid;
  gap: .55rem;
}
.roles-picked { border: 1px solid var(--line); border-radius: .5rem; grid-template-columns: 2.4rem minmax(0, 1fr); margin: .15rem 0 .2rem; padding: .4rem .5rem; }
.roles-picked[hidden], .roles-suggest[hidden] { display: none !important; }
.roles-suggest-item .roles-face { height: 1.8rem; width: 1.8rem; }
.roles-list-item { grid-template-columns: 2.4rem minmax(0, 1fr) auto; }
.roles-picked-email { color: var(--muted); font-size: .78rem; margin: .1rem 0 0; }
.roles-face {
  background: var(--bg-sunken);
  border: 1px solid var(--line);
  border-radius: .4rem;
  display: block;
  height: 2.4rem;
  object-fit: cover;
  width: 2.4rem;
}
.roles-face-fallback {
  align-items: center;
  color: var(--cream);
  display: grid;
  font-weight: 800;
  place-items: center;
}
.roles-list { display: grid; gap: .35rem; list-style: none; margin: 0; max-height: calc(100vh - 9rem); overflow: auto; padding: 0; }
.roles-list-copy { display: grid; min-width: 0; }
.roles-list-copy strong { overflow: hidden; text-overflow: ellipsis; }
.roles-list-role { color: var(--muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.roles-page .roles-list-item button, .roles-page .roles-grant input[type="submit"] { width: auto; }
@media (max-width: 48rem) {
  .roles-desk { grid-template-columns: 1fr; }
  .roles-list { max-height: none; }
}

.loyalty-main > .admin-nav {
  border-bottom: 1px solid var(--line);
  border-top: 0;
  gap: .25rem .55rem;
  margin: 0 0 .75rem;
  padding: .15rem 0 .5rem;
}
.admin-nav a[aria-current="page"] { color: var(--cream); font-weight: 800; }

.admin-page .loyalty-main form { display: grid; gap: .4rem; max-width: none; }
.admin-page h1 { font-size: clamp(1.2rem, 2vw, 1.7rem); margin: 0 0 .45rem; }
.admin-page h2 { font-size: 1.05rem; }
.admin-split { align-items: start; display: grid; gap: .85rem 1.25rem; grid-template-columns: minmax(16rem, 24rem) minmax(0, 1fr); }
.admin-form-panel, .admin-list-panel {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: .7rem .8rem .8rem;
}
.admin-list { display: grid; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.admin-list-item {
  align-items: center;
  background: var(--bg-sunken);
  border: 1px solid var(--line);
  border-radius: .5rem;
  display: grid;
  gap: .55rem;
  grid-template-columns: 3rem minmax(0, 1fr) auto;
  padding: .4rem .5rem;
}
.admin-art, .admin-hero-art {
  background: var(--bg-sunken);
  border: 1px solid var(--line);
  border-radius: .4rem;
  display: block;
  object-fit: cover;
}
.admin-art { height: 3rem; width: 3rem; }
.admin-hero-art { height: min(18rem, 40vw); width: min(18rem, 40vw); }
.admin-meta { color: var(--muted); font-size: .78rem; margin: .1rem 0 0; }
.admin-status-ok { color: #8dffa6; font-weight: 800; }
.admin-status-bad { color: #ff8d9d; font-weight: 800; }
.admin-hero { align-items: start; display: grid; gap: 1rem; grid-template-columns: auto minmax(0, 1fr); margin-bottom: .8rem; }
.admin-event-list { display: grid; gap: .35rem; list-style: none; margin: 0; padding: 0; }
.admin-event {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: .45rem;
  padding: .45rem .6rem;
}
@media (max-width: 48rem) {
  .admin-split, .admin-hero { grid-template-columns: 1fr; }
  .admin-hero-art { width: 100%; height: auto; max-height: 18rem; }
}

.admin-catalog { display: grid; gap: .45rem; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); }
.admin-catalog-card {
  background: var(--bg-raised);
  border: 1px solid var(--line);
  border-radius: .5rem;
  overflow: hidden;
  padding: 0 0 .55rem;
}
.admin-catalog-card .admin-art { border: 0; border-radius: 0; height: auto; width: 100%; aspect-ratio: 1; }
.admin-catalog-card h3 { font-size: .95rem; margin: .45rem .55rem .1rem; }
.admin-catalog-card p { margin: 0 .55rem; }
.admin-portrait-grid { display: grid; gap: .4rem; grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); }
.admin-portrait-pick { background: none; border: 2px solid var(--line); border-radius: .4rem; padding: 0; }
.admin-portrait-pick.is-selected { border-color: var(--brand-bright); }
.admin-portrait-pick img { aspect-ratio: 1; display: block; object-fit: cover; width: 100%; }

.settings-identity { display: grid; gap: .55rem; margin: 0 0 1rem; }
.settings-identity div { display: grid; gap: .1rem; }
.settings-identity dt { color: var(--muted); font-size: .78rem; }
.settings-identity dd { margin: 0; overflow-wrap: anywhere; }
