:root {
  --bg: #0f1417;
  --bg-soft: #1a2328;
  --panel: rgba(109, 139, 166, 0.92);
  --panel-strong: #6d8ba6;
  --line: rgba(24, 43, 61, 0.24);
  --text: #13212e;
  --accent: #9f4528;
  --accent-deep: #6e2417;
  --accent-soft: #d88a63;
  --gold: #d3ae57;
  --gold-soft: rgba(211, 174, 87, 0.22);
  --ink-light: #f6f1e6;
  --success: #2d6c52;
  --error: #973838;
  --shadow: 0 18px 45px rgba(0, 0, 0, 0.28);
  --shadow-soft: 0 12px 28px rgba(6, 16, 28, 0.18);
  --shadow-deep: 0 28px 60px rgba(5, 12, 22, 0.34);
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-height: 100vh;
  background:
    linear-gradient(180deg, rgba(8, 15, 24, 0.58), rgba(11, 19, 29, 0.7)),
    radial-gradient(circle at 50% 18%, rgba(157, 216, 255, 0.12), rgba(157, 216, 255, 0) 34%),
    url("/images/icewind-dale-background.jpg") center top / cover fixed no-repeat;
  color: var(--ink-light);
  font-family: "Source Serif 4", serif;
  position: relative;
  overflow-x: hidden;
  background-color: #152330;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 10% 12%, rgba(255, 255, 255, 0.58) 0 2px, transparent 3px),
    radial-gradient(circle at 24% 34%, rgba(255, 255, 255, 0.52) 0 1.6px, transparent 3px),
    radial-gradient(circle at 42% 18%, rgba(255, 255, 255, 0.64) 0 2.2px, transparent 3px),
    radial-gradient(circle at 63% 28%, rgba(255, 255, 255, 0.5) 0 1.8px, transparent 3px),
    radial-gradient(circle at 78% 16%, rgba(255, 255, 255, 0.62) 0 2px, transparent 3px),
    radial-gradient(circle at 92% 30%, rgba(255, 255, 255, 0.48) 0 1.7px, transparent 3px),
    linear-gradient(rgba(210, 237, 255, 0.08), rgba(255, 255, 255, 0)),
    repeating-linear-gradient(
      120deg,
      rgba(255, 255, 255, 0.035) 0,
      rgba(255, 255, 255, 0.035) 1px,
      transparent 1px,
      transparent 160px
    ),
    linear-gradient(180deg, rgba(228, 242, 255, 0.12), rgba(255, 255, 255, 0) 34%);
  opacity: 0.78;
}

body::after {
  content: "";
  position: fixed;
  inset: auto 0 0;
  height: 42vh;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(7, 13, 20, 0) 0%, rgba(11, 20, 31, 0.16) 28%, rgba(14, 25, 38, 0.54) 78%, rgba(16, 28, 40, 0.74) 100%);
  opacity: 1;
}

.snowfall-overlay {
  position: fixed;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 2;
}

.snowflake {
  position: absolute;
  top: -8vh;
  left: var(--snow-left);
  width: var(--snow-size);
  height: var(--snow-size);
  border-radius: 999px;
  opacity: var(--snow-opacity);
  background:
    radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.96), rgba(255, 255, 255, 0.74) 55%, rgba(255, 255, 255, 0) 72%);
  box-shadow:
    0 0 10px rgba(232, 244, 255, 0.34),
    0 0 2px rgba(255, 255, 255, 0.66);
  animation: snowfall-drift var(--snow-duration) linear infinite;
  animation-delay: var(--snow-delay);
  will-change: transform;
}

@keyframes snowfall-drift {
  0% {
    transform: translate3d(0, -10vh, 0) scale(0.88);
  }

  20% {
    transform: translate3d(calc(var(--snow-drift) * 0.45), 18vh, 0) scale(1);
  }

  50% {
    transform: translate3d(calc(var(--snow-drift) * -0.35), 48vh, 0) scale(1.02);
  }

  80% {
    transform: translate3d(var(--snow-drift), 82vh, 0) scale(0.96);
  }

  100% {
    transform: translate3d(calc(var(--snow-drift) * -0.2), 112vh, 0) scale(0.9);
  }
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input,
select,
textarea {
  font: inherit;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  position: sticky;
  top: 0;
  z-index: 10;
  background:
    linear-gradient(180deg, rgba(8, 14, 22, 0.94), rgba(9, 16, 24, 0.88)),
    radial-gradient(circle at 16% 50%, rgba(211, 174, 87, 0.09), transparent 22%);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 0 10px 28px rgba(5, 11, 19, 0.28);
  overflow: visible;
}

.topbar::before {
  content: "";
  position: absolute;
  left: -1.5rem;
  top: 50%;
  width: 18rem;
  height: 8.5rem;
  pointer-events: none;
  background:
    radial-gradient(circle, rgba(255, 214, 132, 0.28) 0, rgba(255, 214, 132, 0.16) 26%, rgba(255, 214, 132, 0.08) 46%, transparent 68%);
  filter: blur(10px);
  opacity: 0.78;
  transform: translateY(-50%);
  animation: lantern-flicker 6.2s ease-in-out infinite;
}

@keyframes lantern-flicker {
  0% {
    opacity: 0.72;
    transform: translateY(-50%) scale(0.98);
  }

  18% {
    opacity: 0.84;
    transform: translateY(-50%) scale(1.02);
  }

  37% {
    opacity: 0.74;
    transform: translateY(-50%) scale(0.99);
  }

  58% {
    opacity: 0.9;
    transform: translateY(-50%) scale(1.04);
  }

  76% {
    opacity: 0.76;
    transform: translateY(-50%) scale(1);
  }

  100% {
    opacity: 0.82;
    transform: translateY(-50%) scale(1.01);
  }
}

.brand,
h1,
h2,
h3,
h4 {
  font-family: "Cinzel", serif;
}

.brand {
  font-size: 1.24rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.22);
  z-index: 1;
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.brand-letter,
.brand-space {
  display: inline-block;
}

.brand-letter {
  opacity: 0;
  filter: blur(6px);
  transform: translateX(-7.5rem) skewX(-10deg) rotate(-1deg);
  animation: brand-letter-wind-arrival 1.2s cubic-bezier(0.16, 0.88, 0.28, 1) var(--brand-delay) forwards;
}

.brand-space {
  width: 0.42em;
}

.topnav {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  position: relative;
  z-index: 1;
}

.topnav > *,
.topbar-menu-anchor {
  opacity: 0;
  filter: blur(3px) brightness(0.18) saturate(0.55);
  animation: topbar-control-emerge 1.9s ease-out forwards;
}

.topnav > *:nth-child(1) {
  animation-delay: 360ms;
}

.topnav > *:nth-child(2) {
  animation-delay: 620ms;
}

.topnav > *:nth-child(3) {
  animation-delay: 920ms;
}

.topnav > *:nth-child(4) {
  animation-delay: 1220ms;
}

.topnav > *:nth-child(5) {
  animation-delay: 1520ms;
}

.topbar-menu-anchor {
  animation-delay: 1080ms;
}

.topbar-menu-anchor {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 3;
}

.topbar-page-indicator {
  position: absolute;
  left: calc(50% - 17.5rem);
  top: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  z-index: 2;
  color: #bfe9ff;
  font-family: "Cinzel Decorative", "Cinzel", serif;
  font-size: 1.38rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  line-height: 1;
  text-transform: uppercase;
  text-shadow:
    0 0 12px rgba(163, 225, 255, 0.2),
    0 1px 0 rgba(235, 249, 255, 0.35);
  opacity: 0;
  filter: blur(2px) brightness(0.42) saturate(0.75);
  animation: topbar-page-indicator-reveal 2.2s ease-out 180ms forwards;
  pointer-events: none;
  white-space: nowrap;
}

.mobile-dashboard-menu {
  display: none;
}

.topnav-menu-shell {
  display: flex;
  align-items: center;
  position: relative;
}

.topnav-menu-trigger {
  min-width: 11.5rem;
  padding: 0.8rem 1.55rem 0.76rem;
  border: 1px solid rgba(201, 238, 255, 0.38);
  border-radius: 999px;
  background:
    linear-gradient(180deg, rgba(229, 248, 255, 0.92), rgba(160, 210, 238, 0.78)),
    radial-gradient(circle at 18% 22%, rgba(255, 255, 255, 0.86), transparent 28%),
    linear-gradient(135deg, rgba(255, 255, 255, 0.2), rgba(112, 176, 220, 0.08));
  color: #0e3957;
  cursor: pointer;
  font-family: "Cinzel Decorative", "Cinzel", serif;
  font-size: 1.28rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  line-height: 1;
  text-transform: uppercase;
  text-shadow:
    0 1px 0 rgba(255, 255, 255, 0.8),
    0 0 10px rgba(211, 241, 255, 0.22);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.66),
    inset 0 -8px 14px rgba(84, 149, 191, 0.12),
    0 12px 28px rgba(7, 20, 33, 0.24);
  transition:
    transform 180ms ease,
    box-shadow 180ms ease,
    border-color 180ms ease,
    filter 180ms ease;
  position: relative;
  overflow: hidden;
}

.topnav-menu-trigger::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(120deg, rgba(255, 255, 255, 0.48), transparent 28%, transparent 72%, rgba(198, 238, 255, 0.22)),
    repeating-linear-gradient(
      116deg,
      rgba(255, 255, 255, 0.18) 0,
      rgba(255, 255, 255, 0.18) 1px,
      transparent 1px,
      transparent 18px
    );
  opacity: 0.7;
}

.topnav-menu-trigger::after {
  content: "";
  position: absolute;
  inset: 0.28rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.24);
  pointer-events: none;
}

.topnav-menu-shell:hover .topnav-menu-trigger,
.topnav-menu-shell:focus-within .topnav-menu-trigger {
  transform: translateY(-1px) scale(1.02);
  border-color: rgba(226, 247, 255, 0.52);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.72),
    inset 0 -8px 14px rgba(84, 149, 191, 0.16),
    0 16px 34px rgba(7, 20, 33, 0.3),
    0 0 20px rgba(181, 227, 255, 0.18);
  filter: saturate(1.05);
}

@keyframes topbar-page-indicator-reveal {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%);
    letter-spacing: 0.18em;
    filter: blur(4px) brightness(0.18) saturate(0.55);
    text-shadow:
      0 0 0 rgba(163, 225, 255, 0),
      0 0 0 rgba(235, 249, 255, 0);
  }

  55% {
    opacity: 0.78;
    filter: blur(1.6px) brightness(0.68) saturate(0.82);
  }

  100% {
    opacity: 1;
    transform: translate(-50%, -50%);
    letter-spacing: 0.12em;
    filter: blur(0) brightness(1) saturate(1);
    text-shadow:
      0 0 12px rgba(163, 225, 255, 0.2),
      0 1px 0 rgba(235, 249, 255, 0.35);
  }
}

@keyframes topbar-control-emerge {
  0% {
    opacity: 0;
    filter: blur(4px) brightness(0.18) saturate(0.55);
  }

  55% {
    opacity: 0.78;
    filter: blur(1.6px) brightness(0.68) saturate(0.82);
  }

  100% {
    opacity: 1;
    filter: blur(0) brightness(1) saturate(1);
  }
}

@keyframes brand-letter-wind-arrival {
  0% {
    opacity: 0;
    transform: translateX(-7.5rem) skewX(-10deg) rotate(-1deg);
    filter: blur(6px);
  }

  58% {
    opacity: 0.9;
    transform: translateX(0.5rem) skewX(1deg) rotate(0.2deg);
    filter: blur(1.5px);
  }

  100% {
    opacity: 1;
    transform: translateX(0) skewX(0) rotate(0);
    filter: blur(0);
  }
}

.dashboard-mega-menu {
  position: absolute;
  left: 50%;
  top: calc(100% + 0.12rem);
  width: min(1120px, calc(100vw - 2rem));
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(-50%) translateY(-0.9rem);
  transition:
    opacity 180ms ease,
    transform 180ms ease,
    visibility 180ms ease;
  z-index: 30;
}

.dashboard-mega-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -1rem;
  height: 1rem;
}

.topnav-menu-shell:hover .dashboard-mega-menu,
.topnav-menu-shell:focus-within .dashboard-mega-menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}

.dashboard-mega-menu-surface {
  display: grid;
  gap: 1.05rem;
  padding: 1.15rem 1.2rem 1.2rem;
  border-radius: 20px;
  border: 1px solid rgba(205, 228, 246, 0.16);
  background:
    linear-gradient(180deg, rgba(10, 18, 28, 0.96), rgba(7, 13, 20, 0.94)),
    radial-gradient(circle at 14% 18%, rgba(160, 195, 222, 0.12), transparent 28%),
    radial-gradient(circle at 86% 14%, rgba(211, 174, 87, 0.1), transparent 20%);
  box-shadow: 0 26px 52px rgba(4, 10, 18, 0.38);
  backdrop-filter: blur(18px);
}

.dashboard-mega-menu-header {
  display: grid;
  gap: 0.2rem;
  padding: 0.15rem 0.15rem 0;
}

.dashboard-mega-menu-header h2 {
  margin: 0;
  font-size: clamp(1.15rem, 1.8vw, 1.5rem);
}

.dashboard-mega-menu-header .helper-copy {
  margin: 0;
  color: rgba(236, 242, 247, 0.78);
}

.dashboard-mega-menu-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.85rem;
}

.dashboard-mega-link {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.78rem;
  align-items: start;
  min-height: 4.6rem;
  padding: 0.9rem 0.95rem;
  border-radius: 16px;
  border: 1px solid rgba(205, 228, 246, 0.12);
  background:
    linear-gradient(180deg, rgba(17, 29, 40, 0.94), rgba(10, 17, 24, 0.92));
  color: inherit;
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.2);
  transition:
    transform 160ms ease,
    border-color 160ms ease,
    box-shadow 160ms ease,
    background 160ms ease;
}

.dashboard-mega-link:hover {
  transform: translateY(-2px);
  border-color: rgba(160, 195, 222, 0.28);
  box-shadow: 0 18px 34px rgba(0, 0, 0, 0.24);
}

.dashboard-mega-link.is-active {
  border-color: rgba(196, 226, 248, 0.4);
  background:
    linear-gradient(180deg, rgba(166, 199, 224, 0.28), rgba(115, 149, 177, 0.2)),
    linear-gradient(180deg, rgba(17, 29, 40, 0.96), rgba(10, 17, 24, 0.94));
  box-shadow:
    inset 0 0 0 1px rgba(215, 236, 252, 0.12),
    0 18px 34px rgba(0, 0, 0, 0.24);
}

.dashboard-mega-link-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.15rem;
  height: 2.15rem;
  border-radius: 0.8rem;
  border: 1px solid rgba(205, 228, 246, 0.16);
  background: rgba(221, 237, 249, 0.08);
  color: rgba(233, 244, 252, 0.84);
  font-family: "Cinzel", serif;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  font-weight: 700;
}

.dashboard-mega-link-copy {
  display: grid;
  gap: 0.22rem;
  min-width: 0;
}

.dashboard-mega-link-label-row {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 0;
}

.dashboard-mega-link-label {
  font-family: "Cinzel", serif;
  font-size: 0.96rem;
  line-height: 1.18;
  color: var(--ink-light);
  min-width: 0;
}

.dashboard-mega-link-meta {
  font-size: 0.82rem;
  line-height: 1.38;
  color: rgba(233, 244, 252, 0.7);
}

.dashboard-mega-link-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.6rem;
  padding: 0.15rem 0.42rem;
  border-radius: 999px;
  background: rgba(214, 232, 246, 0.14);
  border: 1px solid rgba(205, 228, 246, 0.18);
  color: rgba(236, 244, 251, 0.9);
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
}

@media (max-width: 1180px) {
  .dashboard-mega-menu-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.topnav-form {
  margin: 0;
}

.topnav-link,
.brand {
  position: relative;
}

.topnav-link {
  padding: 0.45rem 0.15rem;
  color: rgba(246, 241, 230, 0.8);
  transition: color 160ms ease;
}

.topnav-link:hover,
.brand:hover {
  color: #ffffff;
}

.topnav-link::after,
.brand::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.15rem;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--gold), rgba(216, 138, 99, 0.8));
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 160ms ease;
}

.topnav-link.is-active,
.brand.is-active {
  color: #fff8eb;
}

.topnav-link.is-active::after,
.brand.is-active::after {
  transform: scaleX(1);
}

.shell {
  width: min(1120px, calc(100% - 2rem));
  margin: 0 auto;
  padding: 2rem 0 4rem;
  position: relative;
  z-index: 1;
}

.shell-tight {
  width: min(920px, calc(100% - 2rem));
}

.hero,
.dashboard-grid,
.dashboard-stack,
.split-layout,
.credentials-grid,
.player-grid,
.dashboard-overview {
  display: grid;
  gap: 1.5rem;
}

.dashboard-stack {
  grid-template-columns: 1fr;
}

.hero {
  grid-template-columns: minmax(0, 1.6fr) minmax(280px, 0.9fr);
  align-items: stretch;
  padding-top: 1rem;
}

.landing-shell {
  display: grid;
  gap: 0.65rem;
}

.landing-shell-cinematic {
  gap: 1rem;
}

.landing-hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.6rem;
  align-items: stretch;
}

.landing-story-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);
  gap: 1rem;
  align-items: start;
}

.landing-threat-band {
  display: grid;
}

.landing-map-section {
  display: grid;
}

.hero-copy,
.hero-card,
.panel,
.dashboard-banner {
  border: 1px solid rgba(255, 240, 214, 0.12);
  border-radius: 14px;
  box-shadow: var(--shadow);
}

.hero-copy,
.dashboard-banner {
  padding: 2.2rem 2.1rem;
  background:
    linear-gradient(140deg, rgba(14, 24, 36, 0.96), rgba(8, 13, 20, 0.95)),
    radial-gradient(circle at 14% 20%, rgba(109, 139, 166, 0.18), transparent 32%),
    radial-gradient(circle at 92% 14%, rgba(211, 174, 87, 0.12), transparent 22%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='none' stroke='rgba(255,255,255,0.03)'%3E%3Cpath d='M0 80h160M80 0v160'/%3E%3Ccircle cx='80' cy='80' r='48'/%3E%3C/g%3E%3C/svg%3E");
  position: relative;
  overflow: hidden;
}

.dashboard-banner::before,
.hero-copy::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.08), transparent 18%, transparent 82%, rgba(255, 255, 255, 0.05)),
    linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent 30%);
  mix-blend-mode: screen;
}

.landing-copy {
  position: relative;
  overflow: hidden;
  min-height: 30rem;
  margin-bottom: 0;
}

.landing-copy-epic {
  min-height: 34rem;
  padding: 2.65rem 2.45rem 2.35rem;
  background:
    linear-gradient(145deg, rgba(10, 17, 25, 0.97), rgba(6, 10, 16, 0.96)),
    radial-gradient(circle at 14% 18%, rgba(211, 174, 87, 0.12), transparent 24%),
    radial-gradient(circle at 82% 20%, rgba(109, 139, 166, 0.18), transparent 28%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cg fill='none' stroke='rgba(255,255,255,0.035)'%3E%3Cpath d='M0 90h180M90 0v180'/%3E%3Cpath d='M20 40h140M32 140h116'/%3E%3C/g%3E%3C/svg%3E");
  box-shadow: 0 34px 72px rgba(4, 10, 18, 0.34);
}

.landing-copy::after {
  content: "";
  position: absolute;
  inset: auto -8% -16% 42%;
  height: 340px;
  background:
    radial-gradient(circle, rgba(205, 228, 246, 0.28), transparent 54%),
    radial-gradient(circle, rgba(109, 139, 166, 0.28), transparent 62%);
  filter: blur(12px);
}

.landing-copy .lede {
  max-width: 60ch;
}

.landing-copy-epic .lede {
  max-width: 58ch;
  color: rgba(239, 246, 251, 0.9);
  font-size: 1.08rem;
  line-height: 1.88;
}

.landing-copy-epic .hero-actions {
  margin-top: 1.9rem;
}

.hero-card,
.panel {
  background:
    linear-gradient(180deg, rgba(151, 178, 201, 0.97), rgba(112, 143, 170, 0.96));
  color: var(--text);
  padding: 1.5rem;
  position: relative;
  overflow: hidden;
}

.panel::before,
.hero-card::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0) 28%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.08), transparent 16%, transparent 84%, rgba(7, 15, 25, 0.06));
  opacity: 0.9;
}

.surface-primary {
  background:
    linear-gradient(180deg, rgba(164, 190, 212, 0.99), rgba(117, 148, 174, 0.97));
  border-color: rgba(230, 241, 252, 0.22);
  box-shadow: 0 24px 52px rgba(8, 18, 28, 0.28);
}

.surface-secondary {
  background:
    linear-gradient(180deg, rgba(142, 169, 191, 0.97), rgba(108, 138, 164, 0.96));
  border-color: rgba(24, 43, 61, 0.22);
  box-shadow: 0 18px 40px rgba(8, 18, 28, 0.22);
}

.surface-utility {
  background:
    linear-gradient(180deg, rgba(214, 227, 238, 0.76), rgba(195, 212, 226, 0.7));
  border-color: rgba(24, 43, 61, 0.14);
  box-shadow: var(--shadow-soft);
}

.surface-utility-dark {
  background:
    linear-gradient(180deg, rgba(17, 28, 40, 0.72), rgba(11, 20, 30, 0.68));
  border-color: rgba(229, 240, 251, 0.14);
  box-shadow: 0 12px 28px rgba(8, 18, 28, 0.18);
}

.surface-utility-dark p:last-child,
.surface-utility-dark .eyebrow,
.surface-utility-dark .helper-copy {
  color: rgba(246, 241, 230, 0.8);
}

.dashboard-banner {
  margin-bottom: 1.75rem;
  box-shadow: var(--shadow-deep);
}

.dashboard-banner .eyebrow {
  color: rgba(255, 232, 184, 0.92);
}

.dashboard-banner .lede {
  max-width: 62ch;
  color: rgba(240, 246, 251, 0.86);
  font-size: 1.06rem;
  line-height: 1.8;
}

.current-focus {
  display: grid;
  gap: 1rem;
  margin-bottom: 1.75rem;
}

.current-focus-compact {
  gap: 0.75rem;
  margin-bottom: 1.2rem;
  padding-top: 1.2rem;
  padding-bottom: 1.2rem;
}

.current-focus-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 0.9rem;
}

.current-focus-compact .current-focus-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.75rem;
}

.current-focus-card {
  display: grid;
  gap: 0.35rem;
  padding: 1rem 1.05rem;
  border-radius: 12px;
  border: 1px solid rgba(230, 241, 252, 0.22);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.08)),
    rgba(15, 28, 40, 0.18);
  color: rgba(19, 33, 46, 0.96);
  text-decoration: none;
  box-shadow: 0 14px 28px rgba(8, 18, 28, 0.14);
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease, background 180ms ease;
}

.current-focus-card h3 {
  margin: 0;
  font-size: 1.08rem;
  line-height: 1.3;
}

.current-focus-card p:last-child {
  margin: 0;
  color: rgba(19, 33, 46, 0.76);
  line-height: 1.55;
}

.current-focus-compact .section-heading {
  margin-bottom: 0.25rem;
}

.current-focus-compact .section-heading h2 {
  font-size: clamp(1.35rem, 1.8vw, 1.7rem);
}

.current-focus-compact .current-focus-card {
  padding: 0.85rem 0.95rem;
  gap: 0.25rem;
}

.current-focus-compact .current-focus-card .eyebrow {
  font-size: 0.68rem;
  letter-spacing: 0.12em;
}

.current-focus-compact .current-focus-card h3 {
  font-size: 0.98rem;
  line-height: 1.24;
}

.current-focus-compact .current-focus-card p:last-child {
  font-size: 0.9rem;
  line-height: 1.42;
}

.current-focus-card:hover {
  border-color: rgba(255, 255, 255, 0.26);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.09)),
    rgba(15, 28, 40, 0.24);
  box-shadow: 0 22px 34px rgba(8, 18, 28, 0.18);
  transform: translateY(-2px);
}

.dashboard-overview {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 1.75rem;
}

.shell-dashboard {
  padding-top: 1.15rem;
}

.shell-dashboard .dashboard-overview {
  margin-bottom: 1rem;
}

.overview-stack {
  gap: 1.5rem;
}

.overview-mini-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1rem;
}

.overview-mini-card,
.overview-highlight {
  display: grid;
  gap: 0.45rem;
  padding: 1rem 1.05rem;
  border-radius: 12px;
}

.overview-mini-card h3,
.overview-highlight h3 {
  margin: 0;
  font-size: 1.35rem;
}

.overview-mini-card p:last-child,
.overview-highlight p:last-child {
  margin-bottom: 0;
}

.overview-highlight {
  margin-bottom: 1rem;
}

.overview-card {
  display: grid;
  gap: 0.22rem;
  padding: 0.95rem 1rem;
  border-radius: 12px;
  background: rgba(10, 16, 19, 0.72);
  border: 1px solid rgba(255, 241, 214, 0.12);
  box-shadow: var(--shadow-soft);
  position: relative;
  overflow: hidden;
}

.dashboard-overview .overview-card::after {
  content: "";
  position: absolute;
  inset: -18% auto -18% -36%;
  width: 34%;
  pointer-events: none;
  background: linear-gradient(
    102deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(214, 239, 255, 0.04) 32%,
    rgba(255, 248, 232, 0.2) 52%,
    rgba(255, 255, 255, 0) 100%
  );
  opacity: 0;
  transform: skewX(-16deg) translateX(0);
  animation: overview-card-shimmer 8.6s ease-in-out infinite;
}

.dashboard-overview .overview-card:nth-child(2)::after {
  animation-delay: 1.1s;
}

.dashboard-overview .overview-card:nth-child(3)::after {
  animation-delay: 2.3s;
}

.dashboard-overview .overview-card:nth-child(4)::after {
  animation-delay: 3.4s;
}

.overview-card .eyebrow {
  margin: 0;
}

.overview-card h2 {
  margin: 0;
  font-size: clamp(1.25rem, 1.8vw, 1.8rem);
  line-height: 1.08;
}

.overview-card p:last-child {
  margin: 0.18rem 0 0;
  color: rgba(246, 241, 230, 0.82);
}

.dashboard-section {
  display: grid;
  gap: 1.2rem;
  margin-bottom: 2rem;
  scroll-margin-top: 6.5rem;
}

.shell-dashboard .dashboard-section {
  gap: 1rem;
  margin-bottom: 1.7rem;
}

.dashboard-section-header {
  display: grid;
  gap: 0.28rem;
  padding: 0.05rem 0;
}

.dashboard-section-header h2 {
  margin: 0;
}

.dashboard-section-header .helper-copy {
  margin: 0;
  max-width: 70ch;
  line-height: 1.45;
}

.dashboard-quickbar {
  display: grid;
  gap: 1.25rem;
  margin-bottom: 1.5rem;
}

.dashboard-page-grid {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}

@media (min-width: 861px) {
  .dashboard-has-top-menu .dashboard-page-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .dashboard-has-top-menu .dashboard-sidebar {
    display: none;
  }
}

.shell-dashboard .dashboard-page-grid {
  gap: 1.7rem;
}

.dashboard-page-content {
  display: grid;
  gap: 1.75rem;
}

.shell-dashboard .dashboard-overview,
.shell-dashboard .dashboard-page-content > * {
  opacity: 0;
  animation: parchment-fade-in 440ms ease-out both;
}

.shell-dashboard .dashboard-page-content > *:nth-child(1) {
  animation-delay: 40ms;
}

.shell-dashboard .dashboard-page-content > *:nth-child(2) {
  animation-delay: 90ms;
}

.shell-dashboard .dashboard-page-content > *:nth-child(3) {
  animation-delay: 140ms;
}

.shell-dashboard .dashboard-page-content > *:nth-child(4) {
  animation-delay: 190ms;
}

.shell-dashboard .dashboard-page-content > *:nth-child(5) {
  animation-delay: 240ms;
}

.shell-dashboard .dashboard-page-content > *:nth-child(n + 6) {
  animation-delay: 280ms;
}

@keyframes parchment-fade-in {
  0% {
    opacity: 0;
    transform: translateY(12px) scale(0.992);
    filter: saturate(0.94);
  }

  65% {
    opacity: 1;
  }

  100% {
    opacity: 1;
    transform: none;
    filter: none;
  }
}

@keyframes overview-card-shimmer {
  0%,
  68%,
  100% {
    opacity: 0;
    transform: skewX(-16deg) translateX(0);
  }

  72% {
    opacity: 0.82;
  }

  86% {
    opacity: 0.52;
    transform: skewX(-16deg) translateX(420%);
  }

  100% {
    opacity: 0;
    transform: skewX(-16deg) translateX(440%);
  }
}

.shell-dashboard .dashboard-page-content {
  gap: 1.5rem;
}

.shell-dashboard .panel {
  padding: 1.25rem;
}

.shell-dashboard .section-heading {
  gap: 0.22rem;
  margin-bottom: 0.72rem;
}

.shell-dashboard .section-heading h1,
.shell-dashboard .section-heading h2 {
  margin-bottom: 0.5rem;
}

.shell-dashboard .form-intro {
  margin: 0 0 0.75rem;
  line-height: 1.55;
}

.dashboard-disclosure,
.dashboard-inline-disclosure {
  display: grid;
  gap: 0;
}

.dashboard-disclosure-summary,
.dashboard-inline-disclosure-summary {
  list-style: none;
  display: flex;
  justify-content: space-between;
  gap: 0.9rem;
  align-items: flex-start;
  cursor: pointer;
}

.dashboard-disclosure-summary::-webkit-details-marker,
.dashboard-inline-disclosure-summary::-webkit-details-marker {
  display: none;
}

.dashboard-disclosure-summary {
  padding: 0;
}

.dashboard-inline-disclosure-summary {
  margin: 0;
}

.dashboard-disclosure-summary .section-heading,
.dashboard-inline-disclosure-summary .mini-heading {
  margin-bottom: 0;
}

.dashboard-disclosure-body,
.dashboard-inline-disclosure-body {
  display: grid;
  gap: 0.8rem;
  padding-top: 0.75rem;
}

.dashboard-disclosure-toggle,
.dashboard-inline-disclosure-meta {
  flex-shrink: 0;
  padding: 0.38rem 0.72rem;
  border-radius: 999px;
  border: 1px solid rgba(24, 43, 61, 0.14);
  background: rgba(255, 255, 255, 0.24);
  color: rgba(46, 36, 26, 0.78);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.dashboard-disclosure[open] .dashboard-disclosure-toggle,
.dashboard-inline-disclosure[open] .dashboard-inline-disclosure-meta {
  background: rgba(159, 69, 40, 0.12);
  color: var(--accent-deep);
}

.player-page {
  position: relative;
}

.player-page .dashboard-section-header {
  padding: 0.18rem 0 0.05rem;
}

.player-page .dashboard-section-header h2 {
  text-wrap: balance;
}

.page-hero-panel,
.page-support-panel {
  position: relative;
}

.page-hero-panel::after,
.page-support-panel::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.9;
}

.player-page-campaign .dashboard-section-header .eyebrow,
.player-page-campaign .page-hero-panel .eyebrow {
  color: rgba(122, 72, 42, 0.82);
}

.player-page-campaign .page-campaign-recap {
  background:
    linear-gradient(180deg, rgba(176, 197, 216, 0.98), rgba(130, 156, 181, 0.97));
}

.player-page-campaign .page-campaign-recap::after {
  background:
    linear-gradient(180deg, rgba(255, 248, 230, 0.16), rgba(255, 255, 255, 0) 28%),
    radial-gradient(circle at 92% 16%, rgba(211, 174, 87, 0.16), transparent 26%);
}

.player-page-campaign .page-campaign-character {
  background:
    linear-gradient(180deg, rgba(146, 166, 186, 0.97), rgba(113, 138, 160, 0.96));
}

.player-page-campaign .page-campaign-character::after {
  background:
    radial-gradient(circle at 12% 18%, rgba(236, 244, 251, 0.18), transparent 28%);
}

.player-page-campaign .dashboard-stack,
.player-page-messaging .dashboard-stack,
.dm-page-campaign .dashboard-stack,
.dm-page-messaging .dashboard-stack {
  gap: 1rem;
}

.player-page-campaign .session-list,
.dm-page-campaign .session-list {
  gap: 0.8rem;
  margin-top: 0.65rem;
}

.player-page-campaign .session-card,
.dm-page-campaign .session-card {
  padding: 1rem 1.05rem;
}

.player-page-campaign .hero-actions,
.dm-page-campaign .hero-actions {
  margin-top: 0.9rem;
}

.player-page-messaging .dashboard-section-header .eyebrow,
.player-page-messaging .page-hero-panel .eyebrow {
  color: rgba(90, 58, 95, 0.82);
}

.player-page-messaging .page-messaging-journal {
  background:
    linear-gradient(180deg, rgba(170, 183, 205, 0.98), rgba(124, 140, 170, 0.97));
}

.player-page-messaging .page-messaging-journal::after {
  background:
    radial-gradient(circle at 88% 16%, rgba(255, 236, 204, 0.14), transparent 24%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0) 26%);
}

.player-page-messaging .page-messaging-party,
.player-page-messaging .page-messaging-send {
  background:
    linear-gradient(180deg, rgba(145, 164, 190, 0.96), rgba(109, 131, 158, 0.95));
}

.player-page-messaging .journal-block-head {
  align-items: end;
}

.player-page-messaging .stack-form,
.dm-page-campaign .stack-form,
.dm-page-messaging .stack-form {
  gap: 0.95rem;
}

.player-page-messaging .form-cluster,
.player-page-messaging .player-note-block,
.dm-page-messaging .message-list,
.dm-page-campaign .session-archive-body {
  gap: 0.8rem;
}

.player-page-messaging .player-note-block,
.dm-page-messaging .message-card,
.dm-page-campaign .session-card {
  margin-top: 0.35rem;
}

.player-page-messaging .journal-entries,
.dm-page-messaging .message-list {
  gap: 0.85rem;
}

.player-page-messaging .journal-block-head,
.dm-page-messaging .section-heading,
.dm-page-campaign .section-heading {
  margin-bottom: 0.55rem;
}

.player-page-locations .dashboard-section-header .eyebrow,
.player-page-locations .page-support-panel .eyebrow {
  color: rgba(64, 84, 56, 0.84);
}

.player-page-locations .page-locations-ledger {
  background:
    linear-gradient(180deg, rgba(156, 176, 168, 0.96), rgba(118, 143, 135, 0.95));
}

.player-page-schedule .dashboard-section-header .eyebrow,
.player-page-schedule .page-schedule-panel .eyebrow {
  color: rgba(158, 84, 42, 0.92);
}

.player-page-schedule .page-schedule-panel {
  background:
    linear-gradient(180deg, rgba(233, 229, 218, 0.97), rgba(215, 210, 197, 0.95));
}

.player-page-weather .dashboard-section-header .eyebrow,
.player-page-weather .page-weather-panel .eyebrow {
  color: rgba(86, 111, 141, 0.9);
}

.player-page-weather .page-weather-panel {
  background:
    linear-gradient(180deg, rgba(182, 200, 220, 0.98), rgba(130, 154, 181, 0.97));
}

.player-page-quests .dashboard-section-header .eyebrow,
.player-page-quests .page-hero-panel .eyebrow {
  color: rgba(88, 68, 40, 0.82);
}

.player-page-quests .page-quests-log {
  background:
    linear-gradient(180deg, rgba(178, 194, 210, 0.98), rgba(129, 150, 171, 0.97));
}

.player-page-quests .page-quests-log::after {
  background:
    linear-gradient(180deg, rgba(255, 249, 238, 0.16), rgba(255, 255, 255, 0) 24%),
    repeating-linear-gradient(90deg, rgba(34, 48, 64, 0.03) 0, rgba(34, 48, 64, 0.03) 1px, transparent 1px, transparent 96px);
}

.player-page-quests .quest-group-header {
  padding: 0.35rem 0.15rem 0.55rem;
  border-bottom: 1px solid rgba(33, 48, 64, 0.08);
}

.player-page-clues .dashboard-section-header .eyebrow,
.player-page-clues .page-hero-panel .eyebrow {
  color: rgba(54, 74, 93, 0.86);
}

.player-page-clues .page-clues-add {
  background:
    linear-gradient(180deg, rgba(173, 193, 211, 0.99), rgba(122, 147, 171, 0.97));
}

.player-page-clues .page-clues-add::after {
  background:
    radial-gradient(circle at 14% 16%, rgba(235, 245, 255, 0.16), transparent 28%),
    radial-gradient(circle at 88% 18%, rgba(159, 69, 40, 0.08), transparent 18%);
}

.player-page-clues .page-clues-board,
.player-page-clues .page-clues-party {
  background:
    linear-gradient(180deg, rgba(144, 165, 189, 0.96), rgba(108, 131, 156, 0.95));
}

.player-page-clues .clue-panel summary {
  background:
    linear-gradient(180deg, rgba(231, 238, 244, 0.62), rgba(221, 232, 240, 0.28));
}

.player-page-map-pins .dashboard-section-header .eyebrow,
.player-page-map-pins .page-hero-panel .eyebrow {
  color: rgba(52, 82, 88, 0.84);
}

.player-page-map-pins .page-map-workspace {
  background:
    linear-gradient(180deg, rgba(165, 189, 204, 0.99), rgba(119, 147, 171, 0.97));
}

.player-page-map-pins .page-map-workspace::after {
  background:
    radial-gradient(circle at 88% 16%, rgba(231, 244, 247, 0.18), transparent 24%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0) 28%);
}

.player-page-map-pins .page-map-saved-pins {
  background:
    linear-gradient(180deg, rgba(146, 167, 182, 0.96), rgba(107, 130, 148, 0.95));
}

.player-page-npcs .dashboard-section-header .eyebrow,
.player-page-npcs .page-hero-panel .eyebrow {
  color: rgba(89, 69, 51, 0.84);
}

.player-page-npcs .page-npcs-add {
  background:
    linear-gradient(180deg, rgba(179, 193, 206, 0.99), rgba(128, 148, 166, 0.97));
}

.player-page-npcs .page-npcs-add::after {
  background:
    linear-gradient(180deg, rgba(255, 251, 243, 0.16), rgba(255, 255, 255, 0) 25%),
    radial-gradient(circle at 14% 18%, rgba(216, 191, 164, 0.15), transparent 24%);
}

.player-page-npcs .page-npcs-ledger {
  background:
    linear-gradient(180deg, rgba(151, 169, 184, 0.96), rgba(110, 132, 150, 0.95));
}

.player-page-npcs .npc-panel summary {
  background:
    linear-gradient(180deg, rgba(234, 238, 242, 0.58), rgba(220, 227, 233, 0.3));
}

.player-page-character .dashboard-section-header .eyebrow,
.player-page-character .page-hero-panel .eyebrow {
  color: rgba(86, 62, 42, 0.84);
}

.player-page-character .page-character-forge {
  background:
    linear-gradient(180deg, rgba(182, 195, 209, 0.99), rgba(131, 151, 169, 0.97));
}

.player-page-character .page-character-forge::after {
  background:
    radial-gradient(circle at 88% 16%, rgba(211, 174, 87, 0.14), transparent 22%),
    linear-gradient(180deg, rgba(255, 252, 244, 0.14), rgba(255, 255, 255, 0) 24%);
}

.player-page-character .character-summary {
  background:
    linear-gradient(180deg, rgba(230, 236, 241, 0.74), rgba(211, 223, 232, 0.6));
}

.player-page-inbox .dashboard-section-header .eyebrow,
.player-page-inbox .page-support-panel .eyebrow {
  color: rgba(60, 77, 96, 0.84);
}

.player-page-inbox .page-inbox-ledger {
  background:
    linear-gradient(180deg, rgba(152, 171, 193, 0.96), rgba(113, 136, 160, 0.95));
}

.player-page-inbox .stack-form,
.dm-page-inbox .stack-form,
.dm-page-players .stack-form {
  gap: 0.95rem;
}

.player-page-inbox .message-list,
.dm-page-inbox .message-list,
.dm-page-players .message-list,
.dm-page-players .mini-inbox {
  gap: 0.85rem;
}

.player-page-inbox .message-card,
.dm-page-inbox .message-card,
.dm-page-players .message-card {
  gap: 0.7rem;
  padding: 0.9rem;
}

.player-page-inbox .message-card-head,
.dm-page-inbox .message-card-head,
.dm-page-players .message-card-head {
  gap: 0.42rem;
}

.player-page-inbox .message-actions,
.dm-page-inbox .message-actions,
.dm-page-players .message-actions {
  gap: 0.55rem;
  margin-top: 0.65rem;
}

.player-page-inbox .form-intro,
.dm-page-inbox .form-intro,
.dm-page-players .form-intro {
  margin-bottom: 0.55rem;
}

.player-page-inbox .reply-context,
.dm-page-inbox .reply-context {
  margin-bottom: 0.75rem;
  padding: 0.7rem 0.85rem;
}

.dm-page-inbox .panel,
.player-page-inbox .panel,
.dm-page-players .panel {
  padding: 1.15rem;
}

.player-page-table .dashboard-section-header .eyebrow,
.player-page-table .page-support-panel .eyebrow {
  color: rgba(72, 77, 58, 0.84);
}

.player-page-table .page-table-links {
  background:
    linear-gradient(180deg, rgba(160, 176, 186, 0.92), rgba(120, 140, 152, 0.9));
}

.shell-dm-dashboard .dashboard-banner {
  background:
    linear-gradient(140deg, rgba(11, 18, 28, 0.97), rgba(6, 10, 18, 0.96)),
    radial-gradient(circle at 14% 18%, rgba(159, 69, 40, 0.18), transparent 26%),
    radial-gradient(circle at 88% 20%, rgba(211, 174, 87, 0.12), transparent 24%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cg fill='none' stroke='rgba(255,255,255,0.035)'%3E%3Cpath d='M0 90h180M90 0v180'/%3E%3Cpath d='M28 28l124 124M152 28L28 152'/%3E%3C/g%3E%3C/svg%3E");
}

.shell-dm-dashboard .dashboard-banner .eyebrow {
  color: rgba(255, 209, 140, 0.94);
}

.shell-dm-dashboard .dashboard-overview .overview-card {
  background:
    linear-gradient(180deg, rgba(14, 23, 36, 0.82), rgba(10, 17, 28, 0.76));
  border-color: rgba(230, 241, 252, 0.12);
}

.dm-page {
  position: relative;
}

.dm-page .dashboard-section-header {
  padding: 0.18rem 0 0.05rem;
}

.dm-page .dashboard-section-header h2 {
  text-wrap: balance;
}

.dm-hero-panel,
.dm-support-panel {
  position: relative;
}

.dm-hero-panel::after,
.dm-support-panel::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.95;
}

.dm-page-campaign .dashboard-section-header .eyebrow,
.dm-page-campaign .dm-hero-panel .eyebrow {
  color: rgba(182, 96, 64, 0.9);
}

.dm-page-campaign .dm-campaign-recap {
  background:
    linear-gradient(180deg, rgba(168, 177, 193, 0.98), rgba(110, 124, 146, 0.97));
}

.dm-page-campaign .dm-campaign-recap::after {
  background:
    linear-gradient(180deg, rgba(255, 246, 233, 0.16), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 88% 16%, rgba(159, 69, 40, 0.16), transparent 24%);
}

.dm-page-campaign .dm-campaign-archive-add,
.dm-page-campaign .dm-campaign-archive-view {
  background:
    linear-gradient(180deg, rgba(121, 138, 160, 0.95), rgba(88, 103, 122, 0.94));
  color: #eff4f8;
}

.dm-page-campaign .dm-campaign-archive-add::after,
.dm-page-campaign .dm-campaign-archive-view::after {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0) 24%);
}

.dm-page-messaging .dashboard-section-header .eyebrow,
.dm-page-messaging .dm-hero-panel .eyebrow {
  color: rgba(211, 174, 87, 0.9);
}

.dm-page-messaging .dm-messaging-direct {
  background:
    linear-gradient(180deg, rgba(166, 180, 198, 0.98), rgba(111, 130, 154, 0.97));
}

.dm-page-messaging .dm-messaging-direct::after {
  background:
    radial-gradient(circle at 14% 16%, rgba(255, 243, 216, 0.14), transparent 26%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0) 26%);
}

.dm-page-messaging .dm-messaging-broadcast {
  background:
    linear-gradient(180deg, rgba(142, 120, 122, 0.96), rgba(106, 84, 88, 0.95));
  color: #f7efea;
}

.dm-page-messaging .dm-messaging-party-journal,
.dm-page-messaging .dm-messaging-announcements {
  background:
    linear-gradient(180deg, rgba(114, 129, 147, 0.95), rgba(82, 95, 114, 0.94));
  color: #edf3f7;
}

.dm-page-messaging .form-intro,
.dm-page-campaign .form-intro,
.player-page-messaging .form-intro,
.player-page-campaign .form-intro {
  margin-bottom: 0.6rem;
}

.dm-page-quests .dashboard-section-header .eyebrow,
.dm-page-quests .dm-hero-panel .eyebrow {
  color: rgba(221, 187, 106, 0.92);
}

.dm-page-quests .dm-quests-add {
  background:
    linear-gradient(180deg, rgba(168, 177, 193, 0.99), rgba(111, 124, 145, 0.97));
}

.dm-page-quests .dm-quests-add::after {
  background:
    repeating-linear-gradient(90deg, rgba(34, 48, 64, 0.04) 0, rgba(34, 48, 64, 0.04) 1px, transparent 1px, transparent 96px),
    linear-gradient(180deg, rgba(255, 250, 239, 0.14), rgba(255, 255, 255, 0) 25%);
}

.dm-page-quests .dm-quests-command {
  background:
    linear-gradient(180deg, rgba(122, 136, 154, 0.95), rgba(87, 100, 118, 0.94));
  color: #eef4f8;
}

.dm-page-quests .quest-group-header {
  padding: 0.38rem 0.15rem 0.58rem;
  border-bottom: 1px solid rgba(235, 241, 247, 0.08);
}

.dm-page-npcs .dashboard-section-header .eyebrow,
.dm-page-npcs .dm-hero-panel .eyebrow {
  color: rgba(213, 183, 130, 0.92);
}

.dm-page-npcs .dm-npcs-add {
  background:
    linear-gradient(180deg, rgba(164, 174, 188, 0.99), rgba(109, 123, 141, 0.97));
}

.dm-page-npcs .dm-npcs-add::after {
  background:
    radial-gradient(circle at 86% 16%, rgba(211, 174, 87, 0.14), transparent 22%),
    linear-gradient(180deg, rgba(255, 249, 236, 0.14), rgba(255, 255, 255, 0) 24%);
}

.dm-page-npcs .dm-npcs-ledger {
  background:
    linear-gradient(180deg, rgba(121, 133, 150, 0.95), rgba(87, 99, 115, 0.94));
  color: #eef4f8;
}

.dm-page-npcs .npc-panel summary {
  background:
    linear-gradient(180deg, rgba(225, 231, 238, 0.38), rgba(210, 220, 229, 0.16));
}

.dm-page-planner .dashboard-section-header .eyebrow,
.dm-page-planner .dm-hero-panel .eyebrow {
  color: rgba(255, 211, 146, 0.92);
}

.dm-page-planner .dm-planner-add {
  background:
    linear-gradient(180deg, rgba(167, 176, 192, 0.98), rgba(109, 122, 142, 0.97));
}

.dm-page-planner .dm-planner-add::after {
  background:
    linear-gradient(180deg, rgba(255, 248, 233, 0.14), rgba(255, 255, 255, 0) 24%),
    repeating-linear-gradient(180deg, rgba(32, 46, 64, 0.045) 0, rgba(32, 46, 64, 0.045) 1px, transparent 1px, transparent 42px);
}

.dm-page-planner .dm-planner-history {
  background:
    linear-gradient(180deg, rgba(119, 131, 149, 0.95), rgba(84, 95, 112, 0.94));
  color: #eef4f8;
}

.dm-page-schedule .dashboard-section-header .eyebrow,
.dm-page-schedule .dm-hero-panel .eyebrow {
  color: rgba(255, 209, 142, 0.92);
}

.dm-page-schedule .dm-schedule-editor {
  background:
    linear-gradient(180deg, rgba(172, 180, 194, 0.98), rgba(112, 124, 142, 0.97));
}

.dm-page-schedule .dm-schedule-editor::after {
  background:
    linear-gradient(180deg, rgba(255, 250, 240, 0.14), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 15% 20%, rgba(214, 171, 88, 0.12), transparent 24%);
}

.dm-page-schedule .dm-schedule-attendance {
  background:
    linear-gradient(180deg, rgba(121, 133, 151, 0.95), rgba(87, 99, 118, 0.94));
  color: #eef4f8;
}

.dm-page-weather .dashboard-section-header .eyebrow,
.dm-page-weather .dm-hero-panel .eyebrow {
  color: rgba(194, 222, 248, 0.94);
}

.dm-page-weather .dm-weather-roller {
  background:
    linear-gradient(180deg, rgba(169, 184, 204, 0.98), rgba(109, 129, 151, 0.97));
}

.dm-page-weather .dm-weather-roller::after {
  background:
    linear-gradient(180deg, rgba(255, 252, 245, 0.13), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 86% 18%, rgba(228, 240, 252, 0.14), transparent 22%);
}

.dm-page-weather .dm-weather-reference {
  background:
    linear-gradient(180deg, rgba(121, 136, 156, 0.95), rgba(87, 101, 120, 0.94));
  color: #eef4f8;
}

.dm-page-clocks .dashboard-section-header .eyebrow,
.dm-page-clocks .dm-hero-panel .eyebrow {
  color: rgba(255, 206, 136, 0.92);
}

.dm-page-clocks .dm-clocks-add {
  background:
    linear-gradient(180deg, rgba(173, 170, 191, 0.98), rgba(118, 112, 144, 0.97));
}

.dm-page-clocks .dm-clocks-add::after {
  background:
    linear-gradient(180deg, rgba(255, 249, 237, 0.14), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 18% 24%, rgba(214, 171, 88, 0.12), transparent 24%);
}

.dm-page-clocks .dm-clocks-history {
  background:
    linear-gradient(180deg, rgba(124, 129, 154, 0.95), rgba(88, 91, 117, 0.94));
  color: #eef4f8;
}

.dm-page-players .dashboard-section-header .eyebrow,
.dm-page-players .dm-hero-panel .eyebrow {
  color: rgba(255, 210, 138, 0.92);
}

.dm-page-players .dm-players-overview {
  background:
    linear-gradient(180deg, rgba(168, 177, 193, 0.99), rgba(110, 124, 146, 0.97));
}

.dm-page-players .dm-players-overview::after {
  background:
    linear-gradient(180deg, rgba(255, 251, 241, 0.14), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 14% 18%, rgba(211, 174, 87, 0.14), transparent 24%);
}

.dm-page-players .dm-players-filters,
.dm-page-players .dm-players-party-clues {
  background:
    linear-gradient(180deg, rgba(121, 134, 153, 0.95), rgba(87, 100, 118, 0.94));
  color: #edf4f8;
}

.dm-page-locations .dashboard-section-header .eyebrow,
.dm-page-locations .dm-hero-panel .eyebrow {
  color: rgba(198, 181, 121, 0.92);
}

.dm-page-locations .dm-locations-add {
  background:
    linear-gradient(180deg, rgba(162, 178, 166, 0.98), rgba(119, 138, 125, 0.97));
}

.dm-page-locations .dm-locations-ledger {
  background:
    linear-gradient(180deg, rgba(121, 136, 124, 0.95), rgba(88, 102, 93, 0.94));
  color: #edf4f8;
}

.dm-page-players .dashboard-stack {
  gap: 1rem;
}

.dm-page-players .management-summary {
  gap: 0.8rem;
}

.dm-page-players .player-grid {
  gap: 0.95rem;
  margin-top: 0.8rem;
}

.dm-page-players .player-review-card {
  gap: 0.75rem;
  padding: 0.95rem;
}

.dm-page-players .player-admin-stats {
  gap: 0.32rem;
  padding: 0.68rem 0.78rem;
}

.dm-page-players .player-note-block {
  margin-top: 0.35rem;
  padding: 0.78rem 0.85rem;
}

.dm-page-players .player-note-block .mini-heading,
.dm-page-players .mini-inbox .mini-heading {
  margin-bottom: 0.42rem;
}

.dm-page-players .journal-entries {
  gap: 0.75rem;
}

.dm-page-players .player-card-heading {
  gap: 0.45rem;
}

.dm-page-players .player-review-date {
  font-size: 0.88rem;
}

.dm-page-players .dashboard-inline-disclosure {
  margin-top: 0.2rem;
}

.dm-page .surface-secondary .helper-copy,
.dm-page .surface-secondary .form-status,
.dm-page .surface-secondary .form-intro,
.dm-page .surface-utility .helper-copy,
.dm-page .surface-utility .form-status,
.dm-page .surface-utility .form-intro,
.dm-page .surface-secondary .empty-state,
.dm-page .surface-utility .empty-state,
.dm-page .surface-secondary .notes-copy,
.dm-page .surface-utility .notes-copy,
.dm-page .surface-secondary .message-body,
.dm-page .surface-utility .message-body,
.dm-page .surface-secondary .message-timestamp,
.dm-page .surface-utility .message-timestamp,
.dm-page .surface-secondary .meta-label,
.dm-page .surface-utility .meta-label,
.dm-page .surface-secondary .section-heading p:last-child,
.dm-page .surface-utility .section-heading p:last-child {
  color: rgba(236, 242, 247, 0.84);
}

.dm-page .surface-secondary input,
.dm-page .surface-secondary select,
.dm-page .surface-secondary textarea,
.dm-page .surface-utility input,
.dm-page .surface-utility select,
.dm-page .surface-utility textarea {
  background: linear-gradient(180deg, rgba(243, 247, 250, 0.86), rgba(223, 231, 238, 0.72));
}

.change-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.9rem;
}

.change-summary-card {
  display: grid;
  gap: 0.28rem;
  padding: 0.95rem 1rem;
  border-radius: 14px;
  border: 1px solid rgba(24, 43, 61, 0.12);
  background: rgba(221, 232, 240, 0.46);
  box-shadow: 0 10px 24px rgba(8, 18, 28, 0.1);
  color: rgba(19, 33, 46, 0.96);
  text-decoration: none;
}

.change-summary-card h3 {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.2;
}

.change-summary-card:hover {
  border-color: rgba(115, 149, 177, 0.26);
  background: rgba(221, 232, 240, 0.58);
}

.dashboard-sidebar {
  position: sticky;
  top: 6.5rem;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  gap: 1.25rem;
  max-height: calc(100vh - 7.25rem);
  overflow: hidden;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  margin-left: -5.5rem;
}

.dashboard-side-tabs {
  display: grid;
  gap: 0.6rem;
  height: 100%;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  padding-right: 0.45rem;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.dashboard-side-tabs::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}

.dashboard-side-tab {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 0.72rem;
  padding: 0.85rem 0.95rem;
  min-height: 4.45rem;
  border-radius: 16px;
  border: 1px solid rgba(205, 228, 246, 0.12);
  background:
    linear-gradient(180deg, rgba(12, 21, 30, 0.92), rgba(8, 15, 22, 0.88));
  transition:
    transform 160ms ease,
    border-color 160ms ease,
    box-shadow 160ms ease,
    background 160ms ease,
    color 160ms ease;
  box-shadow: var(--shadow);
  overflow: visible;
}

.dashboard-side-tab::before {
  content: "";
  position: absolute;
  left: 0;
  top: 12px;
  bottom: 12px;
  width: 4px;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(205, 228, 246, 0.22), rgba(205, 228, 246, 0));
  opacity: 0;
  transform: scaleY(0.6);
  transition:
    opacity 160ms ease,
    transform 160ms ease,
    background 160ms ease;
}

.dashboard-side-tab:hover {
  transform: translateX(5px);
  border-color: rgba(160, 195, 222, 0.3);
  box-shadow: 0 18px 30px rgba(0, 0, 0, 0.2);
}

.dashboard-side-tab:hover::before {
  opacity: 0.7;
  transform: scaleY(1);
}

.dashboard-side-tab.is-active {
  background:
    linear-gradient(180deg, rgba(166, 199, 224, 0.34), rgba(115, 149, 177, 0.26)),
    linear-gradient(180deg, rgba(17, 29, 40, 0.96), rgba(10, 17, 24, 0.94));
  border-color: rgba(196, 226, 248, 0.42);
  box-shadow:
    inset 0 0 0 1px rgba(215, 236, 252, 0.14),
    0 20px 36px rgba(0, 0, 0, 0.24);
  transform: translateX(8px);
}

.dashboard-side-tab.is-active::before {
  opacity: 1;
  transform: scaleY(1);
  background: linear-gradient(180deg, #d8ecfb, #91b7d7);
}

.dashboard-side-tab-copy {
  display: grid;
  gap: 0.22rem;
  min-width: 0;
  align-content: start;
  padding-bottom: 0.08rem;
}

.dashboard-side-tab-label-row {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 0;
}

.dashboard-side-tab-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  margin-top: 0.05rem;
  border-radius: 0.72rem;
  border: 1px solid rgba(205, 228, 246, 0.16);
  background: rgba(221, 237, 249, 0.08);
  color: rgba(233, 244, 252, 0.82);
  font-family: "Cinzel", serif;
  font-size: 0.67rem;
  letter-spacing: 0.08em;
  font-weight: 700;
  transition:
    border-color 160ms ease,
    background 160ms ease,
    color 160ms ease,
    transform 160ms ease;
}

.dashboard-side-tab:hover .dashboard-side-tab-icon {
  border-color: rgba(178, 211, 236, 0.26);
  background: rgba(214, 232, 246, 0.12);
}

.dashboard-side-tab.is-active .dashboard-side-tab-icon {
  border-color: rgba(215, 236, 252, 0.34);
  background: linear-gradient(180deg, rgba(221, 237, 249, 0.22), rgba(164, 196, 220, 0.18));
  color: #f2f8fc;
  transform: translateX(1px);
}

.dashboard-side-tab-label {
  font-family: "Cinzel", serif;
  font-size: 0.96rem;
  line-height: 1.16;
  color: var(--ink-light);
  min-width: 0;
}

.dashboard-side-tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.6rem;
  padding: 0.15rem 0.42rem;
  border-radius: 999px;
  background: rgba(214, 232, 246, 0.14);
  border: 1px solid rgba(205, 228, 246, 0.18);
  color: rgba(236, 244, 251, 0.9);
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
}

.dashboard-side-tab-meta {
  display: block;
  color: rgba(246, 241, 230, 0.7);
  font-size: 0.92rem;
  line-height: 1.5;
  padding-bottom: 0.08rem;
}

.dashboard-side-tab.is-active .dashboard-side-tab-label {
  color: #f7fbfe;
}

.dashboard-side-tab.is-active .dashboard-side-tab-meta {
  color: rgba(235, 245, 252, 0.86);
}

.dashboard-side-tab.is-active .dashboard-side-tab-count {
  background: rgba(229, 241, 250, 0.24);
  border-color: rgba(229, 241, 250, 0.24);
  color: #f7fbfe;
}

.dashboard-quickbar-header {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: end;
  flex-wrap: wrap;
}

.dashboard-quickbar-header h2 {
  margin: 0;
}

.dashboard-quickbar-header .helper-copy {
  margin: 0;
  max-width: 48ch;
}

.dashboard-jump-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.9rem;
}

.dashboard-jump-card {
  display: grid;
  gap: 0.35rem;
  min-height: 100%;
  padding: 1rem 1.05rem;
  border-radius: 20px;
  border: 1px solid var(--line);
  background: rgba(197, 214, 229, 0.72);
  transition:
    transform 160ms ease,
    border-color 160ms ease,
    box-shadow 160ms ease;
}

.dashboard-jump-card:hover {
  transform: translateY(-2px);
  border-color: rgba(159, 69, 40, 0.3);
  box-shadow: 0 14px 24px rgba(68, 47, 27, 0.1);
}

.jump-label {
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.72rem;
  font-weight: 700;
  color: rgba(46, 36, 26, 0.62);
}

.jump-meta {
  color: rgba(46, 36, 26, 0.78);
  line-height: 1.5;
}

.hero-actions {
  display: flex;
  gap: 0.9rem;
  flex-wrap: wrap;
  margin-top: 1.25rem;
  position: relative;
  z-index: 1;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.82rem 1.2rem;
  border: 1px solid rgba(104, 32, 20, 0.24);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(224, 152, 117, 0.98), rgba(159, 69, 40, 0.98));
  color: #fff5ef;
  cursor: pointer;
  font-weight: 700;
  letter-spacing: 0.015em;
  box-shadow: 0 12px 24px rgba(110, 36, 23, 0.24);
  transition: transform 160ms ease, box-shadow 160ms ease, filter 160ms ease, border-color 160ms ease;
}

.button:hover {
  filter: brightness(1.04);
  transform: translateY(-1px);
  box-shadow: 0 16px 26px rgba(110, 36, 23, 0.3);
}

.button-ghost {
  background: linear-gradient(180deg, rgba(247, 251, 255, 0.24), rgba(255, 255, 255, 0.08));
  color: inherit;
  border: 1px solid currentColor;
  box-shadow: none;
}

.button-small {
  padding: 0.55rem 0.85rem;
  font-size: 0.9rem;
}

.button-danger {
  border-color: rgba(151, 56, 56, 0.45);
  color: var(--error);
}

.form-intro {
  margin: 0 0 1rem;
  color: rgba(46, 36, 26, 0.82);
  line-height: 1.7;
}

.eyebrow {
  margin: 0 0 0.45rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.75rem;
  font-weight: 700;
  color: rgba(64, 84, 104, 0.76);
}

.lede {
  font-size: 1.1rem;
  line-height: 1.65;
  max-width: 62ch;
}

.section-heading h1,
.section-heading h2,
.hero-copy h1,
.dashboard-banner h1 {
  margin: 0 0 0.75rem;
  line-height: 1.1;
  letter-spacing: 0.015em;
}

.section-heading {
  display: grid;
  gap: 0.35rem;
  margin-bottom: 0.95rem;
}

.section-heading .eyebrow {
  margin-bottom: 0;
}

.section-heading .helper-copy,
.section-heading p:last-child {
  margin-top: 0;
  line-height: 1.68;
}

.hero-copy h1,
.dashboard-banner h1 {
  font-size: clamp(2.25rem, 4vw, 4.4rem);
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.18);
}

.landing-copy h1 {
  max-width: 15ch;
}

.landing-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin-top: 1.6rem;
  position: relative;
  z-index: 1;
}

.landing-tags span {
  border: 1px solid rgba(255, 245, 230, 0.14);
  border-radius: 999px;
  padding: 0.55rem 0.9rem;
  background: rgba(246, 241, 230, 0.06);
  font-size: 0.92rem;
}

.landing-copy-epic .landing-tags {
  margin-top: 1.85rem;
}

.landing-copy-epic .landing-tags span {
  border-color: rgba(255, 233, 191, 0.16);
  background:
    linear-gradient(180deg, rgba(255, 248, 235, 0.08), rgba(255, 255, 255, 0.02));
  color: rgba(244, 235, 213, 0.92);
  box-shadow: 0 10px 24px rgba(4, 10, 18, 0.18);
}

.landing-tableau {
  display: grid;
  gap: 0.75rem;
  align-content: start;
  max-width: 540px;
}

.tableau-card {
  border-radius: 28px;
  padding: 1.5rem;
  box-shadow: var(--shadow);
}

.tableau-card-main {
  background:
    linear-gradient(160deg, rgba(22, 18, 15, 0.95), rgba(53, 32, 21, 0.88)),
    radial-gradient(circle at top right, rgba(211, 174, 87, 0.26), transparent 35%);
  border: 1px solid rgba(211, 174, 87, 0.18);
  position: relative;
  overflow: hidden;
}

.tableau-card-main::after {
  content: "";
  position: absolute;
  inset: auto -30px -40px auto;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(211, 174, 87, 0.24), transparent 66%);
}

.tableau-card-accent {
  background:
    linear-gradient(180deg, rgba(241, 227, 196, 0.97), rgba(214, 186, 132, 0.95));
  color: var(--text);
  border: 1px solid rgba(79, 52, 27, 0.18);
}

.tableau-label {
  margin: 0 0 0.5rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.76rem;
  font-weight: 700;
  color: rgba(246, 241, 230, 0.72);
}

.tableau-card-accent .tableau-label {
  color: rgba(46, 36, 26, 0.7);
}

.tableau-card h2 {
  margin: 0;
  font-size: clamp(1.8rem, 2.5vw, 2.5rem);
  line-height: 1.15;
}

.tableau-list {
  margin: 1rem 0 0;
  padding-left: 1.1rem;
  line-height: 1.9;
  position: relative;
  z-index: 1;
}

.tableau-quote {
  margin: 0;
  font-size: 1.08rem;
  line-height: 1.8;
}

.landing-board {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.board-card {
  padding: 1.35rem;
  border-radius: 24px;
  background: rgba(10, 16, 19, 0.72);
  border: 1px solid rgba(255, 241, 214, 0.12);
  box-shadow: var(--shadow);
}

.board-card h2 {
  margin: 0 0 0.75rem;
  font-size: 1.5rem;
  line-height: 1.2;
}

.board-card p:last-child {
  margin-bottom: 0;
  color: rgba(246, 241, 230, 0.84);
  line-height: 1.7;
}

.landing-recap {
  background:
    linear-gradient(180deg, rgba(145, 173, 197, 0.98), rgba(109, 139, 166, 0.96)),
    radial-gradient(circle at top right, rgba(19, 33, 46, 0.08), transparent 34%);
  position: relative;
  overflow: hidden;
  margin-top: -0.05rem;
}

.landing-lore-panel-epic {
  background:
    linear-gradient(180deg, rgba(171, 192, 211, 0.99), rgba(124, 151, 174, 0.97));
  box-shadow: 0 24px 50px rgba(7, 16, 26, 0.22);
}

.landing-lore-panel-epic::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255, 253, 246, 0.16), rgba(255, 255, 255, 0) 26%),
    radial-gradient(circle at 86% 18%, rgba(211, 174, 87, 0.14), transparent 22%);
}

.landing-recap-chronicle {
  background:
    linear-gradient(180deg, rgba(157, 184, 205, 0.99), rgba(108, 137, 164, 0.97)),
    radial-gradient(circle at top right, rgba(19, 33, 46, 0.1), transparent 34%);
  box-shadow: 0 24px 50px rgba(7, 16, 26, 0.24);
}

.landing-recap-chronicle .section-heading {
  margin-bottom: 1.15rem;
}

.landing-lore-panel,
.landing-recap,
.threat-card {
  min-height: 100%;
}

.landing-lore-points {
  display: grid;
  gap: 0.9rem;
  margin-top: 1.1rem;
}

.landing-map-panel {
  display: grid;
  gap: 1rem;
}

.landing-map-panel-epic {
  background:
    linear-gradient(180deg, rgba(171, 191, 209, 0.99), rgba(122, 149, 171, 0.97));
  box-shadow: 0 24px 50px rgba(7, 16, 26, 0.22);
}

.landing-map-panel-epic::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255, 250, 240, 0.14), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 12% 18%, rgba(236, 244, 251, 0.16), transparent 24%);
}

.campaign-map {
  position: relative;
  overflow: hidden;
  border-radius: 16px;
  border: 1px solid rgba(24, 43, 61, 0.18);
  background: rgba(221, 232, 240, 0.62);
  box-shadow: 0 16px 32px rgba(8, 18, 28, 0.16);
}

.landing-map-panel-epic .campaign-map {
  border-radius: 20px;
  border-color: rgba(35, 53, 70, 0.14);
  box-shadow: 0 22px 42px rgba(8, 18, 28, 0.18);
}

.campaign-map-image {
  display: block;
  width: 100%;
  height: auto;
}

.party-marker {
  position: absolute;
  width: 4.2rem;
  height: 4.1rem;
  transform: translate(-50%, -50%);
  cursor: grab;
  touch-action: none;
}

.party-marker span {
  position: absolute;
}

.party-marker-flag {
  top: 0;
  left: 0.45rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 3.2rem;
  height: 1.35rem;
  padding: 0 0.5rem;
  border-radius: 0.35rem 0.4rem 0.4rem 0.12rem;
  background: linear-gradient(180deg, #d94b4b, #8f1717);
  color: #fff5ef;
  font-family: "Cinzel", "Times New Roman", serif;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  box-shadow:
    0 0 0 1px rgba(82, 8, 8, 0.2),
    0 6px 14px rgba(91, 8, 8, 0.28);
}

.party-marker-pole {
  left: 0.95rem;
  top: 0.95rem;
  width: 0.18rem;
  height: 2.35rem;
  border-radius: 999px;
  background: linear-gradient(180deg, #6a4e30, #3c2817);
  box-shadow: 0 1px 0 rgba(255, 242, 224, 0.18);
}

.party-marker-base {
  left: 0.54rem;
  top: 3.05rem;
  width: 0.98rem;
  height: 0.48rem;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(52, 36, 22, 0.5), rgba(52, 36, 22, 0) 72%);
}

.shared-map-flag {
  position: absolute;
  width: max-content;
  height: 3.15rem;
  transform: translate(-50%, -50%) rotate(var(--flag-tilt, 0deg));
  transform-origin: 0.78rem 2.58rem;
  pointer-events: none;
  z-index: 2;
}

.campaign-map .shared-map-flag {
  transition: transform 180ms ease, filter 180ms ease;
}

.campaign-map .shared-map-flag:hover {
  transform: translate(-50%, -50%) rotate(var(--flag-tilt, 0deg)) scale(1.03);
  filter: brightness(1.04);
}

.shared-map-flag-banner,
.shared-map-flag-pole,
.shared-map-flag-base {
  position: absolute;
}

.shared-map-flag-banner {
  top: 0;
  left: 0.28rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  min-height: 1.05rem;
  padding: 0.15rem 0.42rem;
  border-radius: 0.28rem 0.32rem 0.32rem 0.1rem;
  color: #fff9f2;
  font-family: "Cinzel", "Times New Roman", serif;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow:
    0 0 0 1px rgba(22, 26, 32, 0.14),
    0 5px 12px rgba(10, 16, 24, 0.18);
}

.shared-map-flag-pole {
  left: 0.76rem;
  top: 0.78rem;
  width: 0.16rem;
  height: 1.85rem;
  border-radius: 999px;
  background: linear-gradient(180deg, #73593e, #3b2818);
}

.shared-map-flag-base {
  left: 0.38rem;
  top: 2.38rem;
  width: 0.82rem;
  height: 0.42rem;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(52, 36, 22, 0.42), rgba(52, 36, 22, 0) 72%);
}

.shared-map-flag-crimson .shared-map-flag-banner {
  background: linear-gradient(180deg, #d54a49, #8b1717);
}

.shared-map-flag-gold .shared-map-flag-banner {
  background: linear-gradient(180deg, #d1a53b, #8c6310);
}

.shared-map-flag-sky .shared-map-flag-banner {
  background: linear-gradient(180deg, #64a9d7, #2c6b9a);
}

.shared-map-flag-emerald .shared-map-flag-banner {
  background: linear-gradient(180deg, #4fa36d, #245f39);
}

.shared-map-flag-slate .shared-map-flag-banner {
  background: linear-gradient(180deg, #718397, #435265);
}

.shared-map-flag-violet .shared-map-flag-banner {
  background: linear-gradient(180deg, #9d78cf, #5b3488);
}

.shared-map-flag-frost .shared-map-flag-banner {
  background: linear-gradient(180deg, #d9f4ff, #79c3ea);
  color: #123349;
}

.shared-map-flag-ember .shared-map-flag-banner {
  background: linear-gradient(180deg, #ef9254, #8d3512);
}

.shared-map-flag-midnight .shared-map-flag-banner {
  background: linear-gradient(180deg, #5168a8, #1d2957);
}

.shared-map-flag.is-draft {
  opacity: 0.86;
  filter: saturate(0.92);
}

.shared-map-flag.is-editable {
  pointer-events: auto;
  cursor: grab;
  background: transparent;
  border: 0;
  padding: 0;
}

.shared-map-flag.is-editable:active {
  cursor: grabbing;
}

.shared-map-flag.is-editable.is-active .shared-map-flag-banner {
  box-shadow:
    0 0 0 1px rgba(22, 26, 32, 0.14),
    0 5px 12px rgba(10, 16, 24, 0.18),
    0 0 0 2px rgba(214, 232, 255, 0.65);
}

.landing-map-admin-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}

.landing-map-admin-card {
  display: grid;
  gap: 1rem;
}

.campaign-map[data-editable="true"] .party-marker-flag {
  cursor: grab;
}

.campaign-map[data-editable="true"] .party-marker:active .party-marker-flag {
  cursor: grabbing;
}

.campaign-map[data-editable="true"] .party-marker:active {
  transform: translate(-50%, -50%) scale(1.02);
}

.campaign-map[data-editable="true"] .party-marker:active .party-marker-flag {
  box-shadow:
    0 0 0 1px rgba(82, 8, 8, 0.22),
    0 9px 18px rgba(91, 8, 8, 0.3);
}

.party-marker span {
  position: absolute;
}

.campaign-map[data-editable="true"] .party-marker {
  cursor: grab;
}

.campaign-map[data-editable="true"] .party-marker:active {
  cursor: grabbing;
}

.player-map-pins-board {
  position: relative;
}

.player-map-panel-expanded {
  padding: 1.7rem;
}

.map-pin-tools {
  display: grid;
  gap: 1rem;
  margin: 0 0 1rem;
  padding: 1rem 1.1rem;
}

.map-pin-tool-block {
  display: grid;
  gap: 0.5rem;
}

.map-pin-filter-row,
.map-pin-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

.map-pin-filter-row .button.is-active {
  background: linear-gradient(180deg, rgba(67, 98, 125, 0.22), rgba(43, 68, 92, 0.18));
  border-color: rgba(43, 68, 92, 0.3);
  color: #18324b;
}

.map-pin-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.3rem 0.55rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
  color: #173042;
  font-size: 0.88rem;
  font-weight: 600;
}

.weather-mini-grid {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.weather-detail-block {
  margin-top: 1rem;
}

.weather-table-card p {
  margin: 0;
}

.weather-phenomena-list {
  display: grid;
  gap: 0.32rem;
  margin-top: 0.55rem;
}

.map-pin-legend-dot {
  position: relative;
  left: auto;
  top: auto;
  transform: none;
  flex: 0 0 auto;
  pointer-events: none;
}

.player-map-panel-expanded .campaign-map {
  max-width: 100%;
}

.player-map-panel-expanded .campaign-map-image {
  width: 100%;
  height: auto;
  object-fit: contain;
}

.map-overlay-open {
  overflow: hidden;
}

.map-overlay {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  place-items: center;
  padding: 1.25rem;
}

.map-overlay[hidden] {
  display: none;
}

.map-overlay-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(6, 12, 18, 0.82);
  backdrop-filter: blur(6px);
}

.map-overlay-panel {
  position: relative;
  z-index: 1;
  width: min(94vw, 1400px);
  max-height: calc(100vh - 2.5rem);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: 1rem;
  padding: 1.15rem;
  border-radius: 18px;
  border: 1px solid rgba(177, 205, 224, 0.18);
  background:
    linear-gradient(180deg, rgba(23, 38, 52, 0.96), rgba(13, 23, 33, 0.96)),
    radial-gradient(circle at top right, rgba(106, 145, 177, 0.12), transparent 34%);
  box-shadow: 0 28px 70px rgba(0, 0, 0, 0.4);
}

.map-overlay-toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.map-overlay-toolbar h3 {
  margin: 0.3rem 0 0;
  color: #edf6fc;
}

.map-overlay-status {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  align-items: center;
  margin-top: 0.7rem;
}

.map-overlay-status-label,
.map-overlay-status-help {
  display: inline-flex;
  align-items: center;
  min-height: 1.9rem;
  padding: 0.22rem 0.72rem;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.map-overlay-status-label {
  background: linear-gradient(180deg, rgba(133, 168, 198, 0.26), rgba(72, 104, 132, 0.2));
  border: 1px solid rgba(187, 214, 233, 0.24);
  color: #edf6fc;
}

.map-overlay-status-help {
  background: rgba(238, 245, 250, 0.08);
  border: 1px solid rgba(238, 245, 250, 0.1);
  color: rgba(230, 240, 247, 0.82);
}

.map-overlay-toolbar .form-actions {
  margin: 0;
  justify-content: flex-end;
}

.map-overlay-viewport {
  position: relative;
  overflow: hidden;
  min-height: 0;
  border-radius: 14px;
  border: 1px solid rgba(177, 205, 224, 0.18);
  background:
    linear-gradient(180deg, rgba(179, 201, 219, 0.14), rgba(81, 107, 127, 0.12)),
    rgba(9, 18, 26, 0.94);
  cursor: grab;
  touch-action: none;
}

.map-overlay-viewport:active {
  cursor: grabbing;
}

.map-overlay-stage {
  position: relative;
  width: 100%;
  transform-origin: 0 0;
  will-change: transform;
}

.map-overlay-image {
  width: 100%;
  height: auto;
  user-select: none;
  -webkit-user-drag: none;
}

.player-map-pin {
  position: absolute;
  width: 0.8rem;
  height: 0.8rem;
  transform: translate(-50%, -50%);
  border: 0;
  background: transparent;
  padding: 0;
  cursor: pointer;
  transition: transform 160ms ease, filter 160ms ease;
}

.player-map-pin-dot {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 999px;
  border: 2px solid rgba(255, 248, 235, 0.9);
  box-shadow: 0 6px 14px rgba(8, 18, 28, 0.22);
}

.player-map-pin:hover {
  transform: translate(-50%, -50%) scale(1.16);
  filter: brightness(1.07);
}

.player-map-pin.is-active {
  transform: translate(-50%, -50%) scale(1.2);
}

.player-map-pin.is-active .player-map-pin-dot {
  box-shadow:
    0 0 0 2px rgba(231, 241, 252, 0.82),
    0 8px 18px rgba(8, 18, 28, 0.28);
}

.player-map-pin-lead .player-map-pin-dot {
  background: linear-gradient(180deg, #4f81b6, #21405a);
}

.player-map-pin-danger .player-map-pin-dot {
  background: linear-gradient(180deg, #b85b5b, #6d2525);
}

.player-map-pin-ally .player-map-pin-dot {
  background: linear-gradient(180deg, #4c8c70, #174835);
}

.player-map-pin-mystery .player-map-pin-dot {
  background: linear-gradient(180deg, #9276bc, #51406e);
}

.player-map-pin-destination .player-map-pin-dot {
  background: linear-gradient(180deg, #d6ae62, #8c6422);
}

.player-map-pin.is-draft {
  pointer-events: none;
  opacity: 0.9;
}

.player-map-pin-type {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 6.6rem;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
}

.player-map-pin-type-lead {
  background: linear-gradient(180deg, rgba(69, 112, 159, 0.18), rgba(53, 90, 131, 0.12));
  color: #21405a;
  border: 1px solid rgba(69, 112, 159, 0.16);
}

.player-map-pin-type-danger {
  background: linear-gradient(180deg, rgba(151, 56, 56, 0.16), rgba(122, 43, 43, 0.1));
  color: #6d2525;
  border: 1px solid rgba(151, 56, 56, 0.12);
}

.player-map-pin-type-ally {
  background: linear-gradient(180deg, rgba(45, 108, 82, 0.2), rgba(28, 84, 62, 0.14));
  color: #174835;
  border: 1px solid rgba(45, 108, 82, 0.2);
}

.player-map-pin-type-mystery {
  background: linear-gradient(180deg, rgba(110, 89, 153, 0.18), rgba(81, 64, 110, 0.12));
  color: #4b3d66;
  border: 1px solid rgba(110, 89, 153, 0.16);
}

.player-map-pin-type-destination {
  background: linear-gradient(180deg, rgba(214, 174, 98, 0.2), rgba(140, 100, 34, 0.12));
  color: #6f4a10;
  border: 1px solid rgba(140, 100, 34, 0.16);
}

.map-overlay-panel .form-status {
  margin: 0;
  color: rgba(230, 240, 247, 0.82);
}

.map-overlay-footer {
  margin: 0;
  align-items: center;
  justify-content: space-between;
}

@media (max-width: 720px) {
  .map-pin-tools,
  .map-overlay-footer {
    gap: 0.8rem;
  }

  .map-overlay-footer {
    align-items: flex-start;
  }
}

.threat-card {
  padding: 1.6rem;
}

.threat-card-cinematic {
  background:
    linear-gradient(180deg, rgba(11, 19, 29, 0.8), rgba(7, 12, 19, 0.78)),
    radial-gradient(circle at 12% 22%, rgba(159, 69, 40, 0.18), transparent 20%),
    radial-gradient(circle at 88% 24%, rgba(109, 139, 166, 0.12), transparent 24%);
  box-shadow: 0 24px 50px rgba(4, 10, 18, 0.32);
}

.threat-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin-top: 0.65rem;
}

.threat-card-cinematic .threat-list > div {
  padding: 1rem 1.05rem;
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02));
  border: 1px solid rgba(240, 246, 251, 0.08);
}

.threat-list h3 {
  margin: 0 0 0.4rem;
  color: #f2f8fc;
}

.threat-list p {
  margin: 0;
  color: rgba(241, 247, 252, 0.82);
  line-height: 1.7;
}

.landing-recap::after {
  content: "";
  position: absolute;
  inset: 18px 18px auto auto;
  width: 140px;
  height: 140px;
  border-radius: 50%;
  border: 1px solid rgba(109, 69, 35, 0.1);
  opacity: 0.6;
}

.feature-list {
  margin: 1rem 0 0;
  padding-left: 1.2rem;
  line-height: 1.9;
}

.card-label,
.helper-copy,
.empty-state,
.message-meta,
.player-card-heading span,
.mini-heading {
  color: rgba(46, 36, 26, 0.78);
}

.recap-copy p,
.notes-copy,
.message-card p {
  line-height: 1.75;
}

.recap-copy-preserved,
.session-summary-preserved {
  white-space: pre-wrap;
  line-height: 1.75;
}

.credentials-grid,
.player-grid {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  margin-top: 1rem;
  gap: 1.15rem;
}

.character-form-grid,
.character-detail-grid,
.character-hero,
.character-facts,
.session-list,
.account-settings-grid {
  display: grid;
  gap: 1rem;
}

.credential-card,
.player-card,
.message-card {
  background: rgba(197, 214, 229, 0.76);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1rem;
  position: relative;
  overflow: hidden;
}

.player-card-spotlight {
  display: grid;
  gap: 1rem;
}

.player-card-heading,
.message-meta {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.character-card h2,
.character-summary-copy h3 {
  margin: 0;
}

.split-layout,
.dashboard-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.stack-form {
  display: grid;
  gap: 1.15rem;
}

label {
  display: grid;
  gap: 0.42rem;
  font-weight: 600;
}

.field-hint {
  font-size: 0.92rem;
  font-weight: 400;
  line-height: 1.55;
  color: rgba(46, 36, 26, 0.76);
}

input,
select,
textarea {
  width: 100%;
  border-radius: 10px;
  border: 1px solid rgba(24, 43, 61, 0.22);
  padding: 0.9rem 1rem;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.54), rgba(255, 255, 255, 0.34));
  color: var(--text);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.22),
    0 6px 14px rgba(16, 28, 40, 0.06);
}

input:focus,
select:focus,
textarea:focus {
  outline: 2px solid rgba(109, 139, 166, 0.24);
  outline-offset: 1px;
  border-color: rgba(159, 69, 40, 0.42);
  background: rgba(234, 241, 246, 0.96);
  box-shadow:
    0 0 0 3px rgba(159, 69, 40, 0.1),
    0 8px 18px rgba(16, 28, 40, 0.08);
}

textarea {
  resize: vertical;
}

.form-actions {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  flex-wrap: wrap;
  margin-top: 0.15rem;
}

.form-status {
  color: rgba(46, 36, 26, 0.76);
  line-height: 1.55;
}

.form-cluster {
  display: grid;
  gap: 1rem;
  padding: 1rem;
  border-radius: 14px;
  border: 1px solid rgba(24, 43, 61, 0.16);
  background: rgba(203, 219, 232, 0.52);
}

.form-cluster-heading h3 {
  margin: 0 0 0.35rem;
}

.form-cluster-heading .helper-copy {
  margin: 0;
}

.reply-context {
  margin: 0 0 1rem;
  padding: 0.85rem 1rem;
  border-radius: 14px;
  background: rgba(159, 69, 40, 0.08);
  border: 1px solid rgba(159, 69, 40, 0.16);
  color: rgba(46, 36, 26, 0.84);
}

.flash {
  width: min(1120px, calc(100% - 2rem));
  margin: 1rem auto 0;
  padding: 0.95rem 1.1rem;
  border-radius: 14px;
  color: white;
  box-shadow: 0 14px 26px rgba(8, 18, 28, 0.16);
  border: 1px solid rgba(255, 255, 255, 0.14);
  transition: opacity 180ms ease, transform 180ms ease;
}

.flash.is-dismissing {
  opacity: 0;
  transform: translateY(-6px);
}

@media (prefers-reduced-motion: reduce) {
  .snowfall-overlay {
    display: none;
  }

  .topbar::before {
    animation: none;
    opacity: 0.74;
  }

  .shell-dashboard .dashboard-overview,
  .shell-dashboard .dashboard-page-content > * {
    opacity: 1;
    animation: none;
    transform: none;
    filter: none;
  }

  .message-card-unread,
  .message-card-unread::before,
  .message-card-unread::after,
  .message-card-unread .badge-attention {
    animation: none;
    transform: none;
  }

  .message-card-unread::before,
  .message-card-unread::after {
    display: none;
  }

  .dashboard-overview .overview-card::after {
    animation: none;
    display: none;
  }

  .handout-card-dream::after,
  .handout-card-vision::before,
  .handout-card-vision::after,
  .handout-card-official-notice::after {
    animation: none;
  }

  .topbar-page-indicator {
    animation: none;
    opacity: 1;
    transform: translate(-50%, -50%);
    letter-spacing: 0.12em;
  }

  .brand,
  .brand-letter {
    animation: none;
    opacity: 1;
    filter: none;
    transform: none;
  }

  .topnav > *,
  .topbar-menu-anchor {
    animation: none;
    opacity: 1;
    filter: none;
  }
}

.flash-success {
  background: var(--success);
}

.flash-error {
  background: var(--error);
}

.badge {
  display: inline-block;
  padding: 0.24rem 0.58rem;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.36), rgba(255, 255, 255, 0.18));
  border: 1px solid rgba(35, 52, 68, 0.1);
  color: rgba(32, 45, 58, 0.8);
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  text-decoration: none;
  letter-spacing: 0.02em;
}

.badge-attention {
  background: linear-gradient(180deg, rgba(189, 100, 100, 0.24), rgba(151, 56, 56, 0.16));
  color: var(--accent-deep);
}

.badge-muted {
  background: linear-gradient(180deg, rgba(53, 72, 88, 0.08), rgba(53, 72, 88, 0.04));
  color: rgba(38, 53, 68, 0.72);
}

.badge-update {
  background: linear-gradient(180deg, rgba(45, 108, 82, 0.2), rgba(28, 84, 62, 0.14));
  color: #174835;
}

.badge-handout {
  background: linear-gradient(180deg, rgba(119, 146, 173, 0.28), rgba(82, 110, 140, 0.16));
  color: rgba(24, 44, 66, 0.84);
}

.crosslink-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-top: 0.8rem;
}

.crosslink-row .button {
  min-width: 0;
}

.onboarding-prompt {
  display: grid;
  gap: 0.55rem;
  margin-top: 0.9rem;
  padding: 0.95rem 1rem;
  border: 1px dashed rgba(42, 60, 78, 0.28);
}

.onboarding-list {
  margin: 0;
  padding-left: 1.15rem;
  display: grid;
  gap: 0.35rem;
  color: rgba(31, 43, 55, 0.84);
}

.inline-feedback {
  margin: 0.6rem 0 0;
  padding: 0.7rem 0.9rem;
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(45, 108, 82, 0.16), rgba(28, 84, 62, 0.1));
  border: 1px solid rgba(45, 108, 82, 0.24);
  color: #1d4a38;
  font-size: 0.94rem;
}

.message-list,
.mini-inbox {
  display: grid;
  gap: 1.15rem;
}

.message-card {
  display: grid;
  gap: 0.9rem;
}

.message-card-head {
  display: grid;
  gap: 0.55rem;
}

.message-topline {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  align-items: flex-start;
  flex-wrap: wrap;
}

.message-badges {
  display: flex;
  gap: 0.45rem;
  flex-wrap: wrap;
}

.management-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.9rem;
  margin-bottom: 0.2rem;
}

.npc-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

.npc-card {
  display: grid;
  gap: 0.95rem;
}

.npc-panel .player-note-block {
  margin-top: 0;
}

.related-panel {
  gap: 0.75rem;
}

.related-row {
  display: grid;
  gap: 0.45rem;
}

.related-row .meta-label {
  margin: 0;
}

.npc-panel-body {
  display: grid;
  gap: 0.95rem;
}

.npc-summary-preview {
  display: inline-flex;
  margin-left: 0.4rem;
  color: rgba(46, 36, 26, 0.72);
  max-width: min(24ch, 100%);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.npc-summary-preview-strong {
  color: rgba(19, 33, 46, 0.84);
}

.npc-panel-trusted {
  border-color: rgba(45, 108, 82, 0.28);
  background: linear-gradient(180deg, rgba(214, 234, 224, 0.58), rgba(203, 219, 232, 0.5));
}

.npc-panel-friendly {
  border-color: rgba(69, 112, 159, 0.24);
  background: linear-gradient(180deg, rgba(214, 227, 239, 0.58), rgba(203, 219, 232, 0.5));
}

.npc-panel-neutral {
  border-color: rgba(43, 70, 93, 0.16);
}

.npc-panel-suspicious {
  border-color: rgba(159, 69, 40, 0.22);
  background: linear-gradient(180deg, rgba(236, 220, 211, 0.56), rgba(203, 219, 232, 0.48));
}

.npc-panel-hostile {
  border-color: rgba(151, 56, 56, 0.22);
  background: linear-gradient(180deg, rgba(233, 218, 218, 0.56), rgba(203, 219, 232, 0.48));
}

.npc-relationship-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 6.4rem;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
}

.npc-relationship-trusted {
  background: linear-gradient(180deg, rgba(45, 108, 82, 0.2), rgba(28, 84, 62, 0.14));
  color: #174835;
  border: 1px solid rgba(45, 108, 82, 0.2);
}

.npc-relationship-friendly {
  background: linear-gradient(180deg, rgba(69, 112, 159, 0.18), rgba(53, 90, 131, 0.12));
  color: #21405a;
  border: 1px solid rgba(69, 112, 159, 0.16);
}

.npc-relationship-neutral {
  background: linear-gradient(180deg, rgba(43, 70, 93, 0.16), rgba(43, 70, 93, 0.1));
  color: #20394d;
  border: 1px solid rgba(43, 70, 93, 0.12);
}

.npc-relationship-suspicious {
  background: linear-gradient(180deg, rgba(159, 69, 40, 0.18), rgba(125, 49, 27, 0.12));
  color: #6d2917;
  border: 1px solid rgba(159, 69, 40, 0.16);
}

.npc-relationship-hostile {
  background: linear-gradient(180deg, rgba(151, 56, 56, 0.16), rgba(122, 43, 43, 0.1));
  color: #6d2525;
  border: 1px solid rgba(151, 56, 56, 0.12);
}

.quest-filter-bar {
  margin-bottom: 1rem;
}

.quest-filter-bar label {
  max-width: 16rem;
}

.quest-groups {
  display: grid;
  gap: 1.25rem;
}

.location-stack,
.location-directory,
.search-results {
  display: grid;
  gap: 1rem;
}

.location-directory {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.location-directory-card {
  display: grid;
  gap: 0.8rem;
}

.location-panel summary {
  background:
    linear-gradient(180deg, rgba(228, 236, 228, 0.32), rgba(210, 220, 214, 0.12));
}

.location-panel-body {
  display: grid;
  gap: 0.9rem;
}

.location-summary-preview {
  display: inline-flex;
  margin-left: 0.4rem;
  color: rgba(46, 36, 26, 0.72);
  max-width: min(22ch, 100%);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.location-profile-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.search-panel {
  margin-bottom: 0.25rem;
}

.search-result-card {
  display: grid;
  gap: 0.75rem;
}

.quest-compass {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin: 1rem 0 1.35rem;
}

.quest-compass-card {
  display: grid;
  gap: 0.45rem;
  padding: 1rem 1.05rem;
  border-radius: 12px;
}

.quest-compass-card h3 {
  margin: 0;
  font-size: 1.1rem;
  line-height: 1.25;
}

.quest-compass-card p:last-child {
  margin-bottom: 0;
}

.quest-group {
  display: grid;
  gap: 0.85rem;
  padding: 1rem;
  border-radius: 16px;
  border: 1px solid rgba(24, 43, 61, 0.12);
  background: rgba(221, 232, 240, 0.34);
}

.quest-group-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}

.quest-group-header h3 {
  margin: 0.18rem 0 0;
  color: rgba(19, 33, 46, 0.96);
}

.quest-group-active {
  background: linear-gradient(180deg, rgba(189, 223, 209, 0.34), rgba(221, 232, 240, 0.26));
}

.quest-group-rumor {
  background: linear-gradient(180deg, rgba(228, 204, 190, 0.34), rgba(221, 232, 240, 0.26));
}

.quest-group-resolved {
  background: linear-gradient(180deg, rgba(194, 209, 221, 0.3), rgba(221, 232, 240, 0.24));
}

.quest-group-abandoned {
  background: linear-gradient(180deg, rgba(227, 197, 197, 0.3), rgba(221, 232, 240, 0.24));
}

.quest-stack {
  display: grid;
  gap: 1rem;
}

.clue-stack {
  display: grid;
  gap: 1rem;
}

.quest-panel {
  box-shadow: 0 10px 24px rgba(8, 18, 28, 0.12);
}

.clue-panel {
  box-shadow: 0 10px 24px rgba(8, 18, 28, 0.12);
}

.quest-panel-active {
  border-color: rgba(45, 108, 82, 0.24);
  background: linear-gradient(180deg, rgba(214, 234, 224, 0.6), rgba(203, 219, 232, 0.52));
}

.quest-panel-rumor {
  border-color: rgba(159, 69, 40, 0.22);
  background: linear-gradient(180deg, rgba(236, 220, 211, 0.58), rgba(203, 219, 232, 0.52));
}

.quest-panel-resolved {
  border-color: rgba(43, 70, 93, 0.2);
}

.quest-panel-abandoned {
  border-color: rgba(122, 43, 43, 0.18);
  background: linear-gradient(180deg, rgba(233, 218, 218, 0.52), rgba(203, 219, 232, 0.48));
}

.clue-panel-new {
  border-color: rgba(69, 112, 159, 0.2);
  background: linear-gradient(180deg, rgba(214, 227, 239, 0.56), rgba(203, 219, 232, 0.5));
}

.clue-panel-important {
  border-color: rgba(45, 108, 82, 0.24);
  background: linear-gradient(180deg, rgba(214, 234, 224, 0.58), rgba(203, 219, 232, 0.5));
}

.clue-panel-unresolved {
  border-color: rgba(159, 69, 40, 0.22);
  background: linear-gradient(180deg, rgba(236, 220, 211, 0.56), rgba(203, 219, 232, 0.48));
}

.clue-panel-answered {
  border-color: rgba(43, 70, 93, 0.16);
}

.clue-panel-false-lead {
  border-color: rgba(151, 56, 56, 0.22);
  background: linear-gradient(180deg, rgba(233, 218, 218, 0.56), rgba(203, 219, 232, 0.48));
}

.quest-panel-body {
  display: grid;
  gap: 0.95rem;
  padding: 1rem 1.1rem 1.1rem;
}

.quest-journal-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.9rem;
  padding: 0.95rem 1rem;
  border-radius: 12px;
}

.quest-journal-strip p {
  margin: 0;
}

.quest-status-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 6.5rem;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
}

.quest-priority-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 6.5rem;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
}

.quest-next-preview {
  display: inline-flex;
  margin-left: 0.4rem;
  max-width: min(36ch, 100%);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: rgba(46, 36, 26, 0.74);
}

.clue-status-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 7rem;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
}

.quest-status-active {
  background: linear-gradient(180deg, rgba(45, 108, 82, 0.2), rgba(28, 84, 62, 0.14));
  color: #174835;
  border: 1px solid rgba(45, 108, 82, 0.2);
}

.quest-status-rumor {
  background: linear-gradient(180deg, rgba(159, 69, 40, 0.18), rgba(125, 49, 27, 0.12));
  color: #6d2917;
  border: 1px solid rgba(159, 69, 40, 0.16);
}

.quest-status-resolved {
  background: linear-gradient(180deg, rgba(43, 70, 93, 0.16), rgba(43, 70, 93, 0.1));
  color: #20394d;
  border: 1px solid rgba(43, 70, 93, 0.12);
}

.quest-status-abandoned {
  background: linear-gradient(180deg, rgba(151, 56, 56, 0.16), rgba(122, 43, 43, 0.1));
  color: #6d2525;
  border: 1px solid rgba(151, 56, 56, 0.12);
}

.quest-priority-main {
  background: linear-gradient(180deg, rgba(211, 174, 87, 0.24), rgba(177, 138, 51, 0.16));
  color: #6c4a12;
  border: 1px solid rgba(177, 138, 51, 0.16);
}

.quest-priority-secondary {
  background: linear-gradient(180deg, rgba(69, 112, 159, 0.18), rgba(53, 90, 131, 0.12));
  color: #21405a;
  border: 1px solid rgba(69, 112, 159, 0.16);
}

.quest-priority-background {
  background: linear-gradient(180deg, rgba(43, 70, 93, 0.16), rgba(43, 70, 93, 0.1));
  color: #20394d;
  border: 1px solid rgba(43, 70, 93, 0.12);
}

.clue-status-new {
  background: linear-gradient(180deg, rgba(69, 112, 159, 0.18), rgba(53, 90, 131, 0.12));
  color: #21405a;
  border: 1px solid rgba(69, 112, 159, 0.16);
}

.clue-status-important {
  background: linear-gradient(180deg, rgba(45, 108, 82, 0.2), rgba(28, 84, 62, 0.14));
  color: #174835;
  border: 1px solid rgba(45, 108, 82, 0.2);
}

.clue-status-unresolved {
  background: linear-gradient(180deg, rgba(159, 69, 40, 0.18), rgba(125, 49, 27, 0.12));
  color: #6d2917;
  border: 1px solid rgba(159, 69, 40, 0.16);
}

.clue-status-answered {
  background: linear-gradient(180deg, rgba(43, 70, 93, 0.16), rgba(43, 70, 93, 0.1));
  color: #20394d;
  border: 1px solid rgba(43, 70, 93, 0.12);
}

.clue-status-false-lead {
  background: linear-gradient(180deg, rgba(151, 56, 56, 0.16), rgba(122, 43, 43, 0.1));
  color: #6d2525;
  border: 1px solid rgba(151, 56, 56, 0.12);
}

.planner-stack {
  display: grid;
  gap: 0.95rem;
}

.planner-panel {
  border: 1px solid rgba(24, 43, 61, 0.16);
  border-radius: 12px;
  background: rgba(203, 219, 232, 0.52);
  overflow: hidden;
  box-shadow: 0 10px 22px rgba(10, 18, 28, 0.08);
}

.planner-panel summary {
  display: grid;
  gap: 0.22rem;
  list-style: none;
  cursor: pointer;
  padding: 1rem 1.1rem;
  background: linear-gradient(180deg, rgba(221, 232, 240, 0.58), rgba(221, 232, 240, 0.34));
}

.planner-panel summary::-webkit-details-marker {
  display: none;
}

.planner-panel summary span {
  font-family: "Cinzel", serif;
  font-size: 1rem;
  color: rgba(19, 33, 46, 0.96);
}

.planner-panel summary small {
  color: rgba(46, 36, 26, 0.72);
  font-size: 0.9rem;
  line-height: 1.5;
}

.planner-panel[open] summary {
  border-bottom: 1px solid rgba(24, 43, 61, 0.12);
  background: linear-gradient(180deg, rgba(228, 237, 244, 0.66), rgba(221, 232, 240, 0.38));
}

.planner-panel label {
  padding: 1rem 1.1rem 1.1rem;
}

.planner-form-body {
  padding: 1rem 1.1rem 0.2rem;
}

.planner-form-body label {
  padding: 0;
}

.planner-delete-row {
  padding: 0 1.1rem 1.1rem;
}

.compact-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.clock-panel {
  background: rgba(205, 214, 233, 0.56);
}

.clock-panel-dormant {
  border-color: rgba(73, 96, 128, 0.16);
}

.clock-panel-advancing {
  border-color: rgba(159, 120, 69, 0.24);
  background: linear-gradient(180deg, rgba(233, 224, 205, 0.56), rgba(205, 214, 233, 0.48));
}

.clock-panel-critical {
  border-color: rgba(151, 56, 56, 0.28);
  background: linear-gradient(180deg, rgba(237, 221, 221, 0.62), rgba(210, 219, 236, 0.48));
}

.clock-panel-resolved {
  border-color: rgba(45, 108, 82, 0.24);
  background: linear-gradient(180deg, rgba(216, 232, 224, 0.56), rgba(205, 214, 233, 0.48));
}

.clock-panel-body {
  display: grid;
  gap: 0.85rem;
}

.schedule-mini-grid {
  margin-bottom: 1rem;
}

.schedule-prep-block {
  margin-top: 0.25rem;
}

.schedule-response-block {
  margin-top: 0.35rem;
}

.schedule-attendance-card p:last-child {
  margin-bottom: 0;
}

.schedule-clear-form {
  margin-top: 0.7rem;
}

.clock-meter {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(1.25rem, 1fr));
  gap: 0.45rem;
}

.clock-segment {
  height: 0.75rem;
  border-radius: 999px;
  background: rgba(49, 68, 92, 0.12);
  border: 1px solid rgba(39, 55, 76, 0.12);
}

.clock-segment.is-filled {
  background: linear-gradient(180deg, rgba(188, 104, 76, 0.88), rgba(152, 68, 43, 0.92));
  border-color: rgba(128, 51, 29, 0.28);
  box-shadow: inset 0 1px 0 rgba(255, 238, 227, 0.24);
}

.management-stat {
  padding: 0.95rem 1rem;
  border-radius: 14px;
}

.management-stat h3 {
  margin: 0.35rem 0 0;
  font-size: clamp(1.35rem, 2vw, 1.8rem);
  line-height: 1.1;
}

.player-admin-card,
.player-review-card {
  display: grid;
  gap: 0.95rem;
}

.player-admin-heading {
  display: grid;
  gap: 0.18rem;
}

.player-admin-heading span,
.player-review-date {
  color: rgba(46, 36, 26, 0.74);
}

.player-admin-stats {
  display: grid;
  gap: 0.42rem;
  padding: 0.8rem 0.9rem;
  border-radius: 12px;
  border: 1px solid rgba(24, 43, 61, 0.12);
  background: rgba(221, 232, 240, 0.52);
}

.player-admin-stats p {
  margin: 0;
  color: rgba(46, 36, 26, 0.82);
}

.player-admin-controls {
  padding-top: 0.1rem;
}

.player-review-date {
  font-size: 0.92rem;
  text-align: right;
}

.message-timestamp {
  margin: 0;
  color: rgba(46, 36, 26, 0.68);
  font-size: 0.94rem;
}

.message-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, max-content));
  gap: 0.45rem 1.2rem;
}

.clue-meta-grid {
  display: grid;
  gap: 0.45rem 1.2rem;
  grid-template-columns: repeat(2, minmax(0, max-content));
}

.message-meta-grid p {
  margin: 0;
  color: rgba(46, 36, 26, 0.78);
}

.clue-meta-grid p {
  margin: 0;
  color: rgba(46, 36, 26, 0.78);
}

.meta-label {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
  color: rgba(46, 36, 26, 0.56);
  margin-right: 0.35rem;
}

.message-body {
  padding-top: 0.1rem;
}

.message-body-copy,
.handout-body-copy {
  margin: 0;
  white-space: pre-line;
}

.is-hidden {
  display: none !important;
}

.handout-card {
  gap: 1rem;
  border-width: 1px;
}

.handout-title-band {
  display: inline-flex;
  align-items: center;
  align-self: start;
  max-width: 100%;
  padding: 0.42rem 0.82rem;
  border-radius: 999px;
  border: 1px solid rgba(31, 49, 66, 0.14);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  box-shadow: 0 8px 18px rgba(12, 18, 28, 0.08);
}

.handout-title-band span {
  display: inline-block;
}

.handout-title-band-letter {
  background: linear-gradient(180deg, rgba(248, 240, 221, 0.98), rgba(228, 212, 183, 0.92));
  border-color: rgba(122, 93, 56, 0.18);
  color: rgba(88, 56, 19, 0.88);
  font-family: "Cinzel", "Times New Roman", serif;
}

.handout-title-band-dream {
  background: linear-gradient(180deg, rgba(62, 82, 116, 0.82), rgba(31, 46, 68, 0.9));
  border-color: rgba(208, 226, 255, 0.12);
  color: rgba(229, 239, 252, 0.9);
  font-family: "Cinzel Decorative", "Cinzel", serif;
  letter-spacing: 0.18em;
}

.handout-title-band-secret-note {
  background: linear-gradient(180deg, rgba(224, 234, 244, 0.96), rgba(200, 214, 230, 0.9));
  border-color: rgba(84, 111, 141, 0.2);
  color: rgba(46, 74, 104, 0.9);
}

.handout-title-band-vision {
  background: linear-gradient(180deg, rgba(237, 246, 255, 0.98), rgba(210, 225, 243, 0.94));
  border-color: rgba(121, 156, 196, 0.18);
  color: rgba(46, 80, 120, 0.88);
  font-family: "Cinzel Decorative", "Cinzel", serif;
}

.handout-title-band-official-notice {
  background: linear-gradient(180deg, rgba(155, 45, 39, 0.95), rgba(120, 21, 21, 0.96));
  border-color: rgba(255, 214, 208, 0.14);
  color: rgba(255, 241, 233, 0.96);
  font-family: "Cinzel", "Times New Roman", serif;
}

.handout-title-band-rumor-slip {
  background: linear-gradient(180deg, rgba(228, 239, 217, 0.98), rgba(204, 220, 188, 0.94));
  border-color: rgba(87, 117, 79, 0.18);
  color: rgba(50, 82, 44, 0.9);
}

.handout-card .message-card-head {
  gap: 0.7rem;
}

.handout-card .message-body {
  display: grid;
  gap: 0.9rem;
}

.handout-card .message-actions {
  margin-top: 0.5rem;
}

.handout-card .message-meta-grid {
  align-items: center;
}

.handout-body-copy {
  line-height: 1.8;
  font-size: 1rem;
}

.handout-image {
  display: block;
  width: min(100%, 26rem);
  max-height: 22rem;
  object-fit: cover;
  border-radius: 14px;
  border: 1px solid rgba(31, 49, 66, 0.16);
  box-shadow: 0 12px 28px rgba(10, 18, 28, 0.16);
  background: rgba(255, 255, 255, 0.28);
}

.handout-preview-shell {
  gap: 1rem;
}

.handout-recipient-cluster {
  gap: 0.85rem;
}

.handout-recipient-cluster legend {
  font-weight: 700;
  padding: 0 0.2rem;
}

.handout-recipient-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.8rem;
}

.handout-recipient-option {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.8rem 0.95rem;
  border-radius: 14px;
  border: 1px solid rgba(24, 43, 61, 0.16);
  background: rgba(231, 239, 246, 0.5);
  font-weight: 600;
}

.handout-recipient-option input {
  width: auto;
  margin: 0;
  accent-color: #55789a;
}

.handout-preview-card {
  margin-top: 0.15rem;
}

.handout-signature {
  margin: 0;
  text-align: right;
  font-style: italic;
  font-size: 0.95rem;
  opacity: 0.82;
}

.handout-card h3,
.handout-card .handout-body-copy,
.handout-card .handout-signature {
  position: relative;
  z-index: 1;
}

.handout-card-letter {
  background:
    linear-gradient(180deg, rgba(239, 227, 203, 0.96), rgba(221, 203, 175, 0.92));
  border-color: rgba(108, 79, 45, 0.28);
  box-shadow:
    inset 0 1px 0 rgba(255, 247, 230, 0.46),
    0 14px 30px rgba(64, 44, 18, 0.14);
}

.handout-card-letter::after {
  content: "";
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 1.1rem;
  height: 1.1rem;
  background: linear-gradient(135deg, rgba(255, 246, 227, 0.94), rgba(208, 189, 156, 0.74));
  clip-path: polygon(0 0, 100% 0, 100% 100%);
  box-shadow: -1px 1px 0 rgba(122, 93, 56, 0.18);
}

.handout-card-letter .badge-handout {
  background: linear-gradient(180deg, rgba(156, 118, 68, 0.2), rgba(118, 82, 40, 0.12));
  color: rgba(86, 56, 20, 0.88);
}

.handout-card-letter h3 {
  font-family: "Cinzel", "Times New Roman", serif;
  letter-spacing: 0.03em;
}

.handout-card-letter .handout-body-copy,
.handout-card-letter .handout-signature {
  font-family: "Source Serif 4", Georgia, serif;
}

.handout-card-dream {
  background:
    radial-gradient(circle at top, rgba(119, 146, 197, 0.2), rgba(11, 20, 30, 0) 44%),
    linear-gradient(180deg, rgba(18, 28, 40, 0.94), rgba(11, 18, 28, 0.9));
  border-color: rgba(184, 209, 236, 0.18);
  box-shadow:
    inset 0 1px 0 rgba(208, 226, 255, 0.08),
    0 18px 38px rgba(4, 10, 18, 0.32);
  color: rgba(235, 242, 252, 0.92);
}

.handout-card-dream::after {
  content: "";
  position: absolute;
  inset: auto 10% 0;
  height: 3rem;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(165, 197, 238, 0.14), rgba(165, 197, 238, 0) 72%);
  filter: blur(12px);
  pointer-events: none;
  animation: handout-dream-mist 7.8s ease-in-out infinite alternate;
}

.handout-card-dream .meta-label,
.handout-card-dream .message-timestamp,
.handout-card-dream .handout-signature {
  color: rgba(214, 228, 246, 0.72);
}

.handout-card-dream .badge {
  border-color: rgba(209, 226, 246, 0.12);
  color: rgba(232, 240, 251, 0.86);
}

.handout-card-dream .handout-image {
  border-color: rgba(215, 231, 248, 0.18);
  box-shadow: 0 16px 34px rgba(4, 10, 18, 0.3);
}

.handout-card-dream .badge-handout {
  background: linear-gradient(180deg, rgba(129, 166, 225, 0.24), rgba(82, 112, 167, 0.16));
}

.handout-card-dream .badge-muted {
  background: linear-gradient(180deg, rgba(221, 232, 244, 0.1), rgba(221, 232, 244, 0.06));
  color: rgba(223, 232, 242, 0.76);
}

.handout-card-dream .message-actions .button {
  border-color: rgba(220, 232, 246, 0.16);
  color: rgba(237, 243, 252, 0.92);
}

.handout-card-dream h3 {
  font-family: "Cinzel Decorative", "Cinzel", serif;
  font-size: 1.15rem;
  letter-spacing: 0.08em;
}

.handout-card-dream .handout-body-copy,
.handout-card-dream .handout-signature {
  font-family: "Source Serif 4", Georgia, serif;
  font-style: italic;
  line-height: 1.95;
}

.handout-card-secret-note {
  background:
    linear-gradient(180deg, rgba(213, 224, 236, 0.92), rgba(187, 201, 217, 0.9));
  border-color: rgba(64, 90, 120, 0.22);
  box-shadow:
    inset 0 1px 0 rgba(248, 252, 255, 0.28),
    0 12px 26px rgba(20, 34, 50, 0.12);
}

.handout-card-secret-note::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 0.26rem;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(104, 133, 166, 0.92), rgba(61, 87, 118, 0.86));
}

.handout-card-secret-note::after {
  content: "";
  position: absolute;
  top: 0.95rem;
  right: 1rem;
  width: 1rem;
  height: 1rem;
  border-radius: 999px;
  background: radial-gradient(circle at 35% 35%, rgba(188, 214, 242, 0.98), rgba(99, 132, 169, 0.92));
  box-shadow: 0 0 0 4px rgba(188, 214, 242, 0.12);
}

.handout-card-secret-note h3 {
  font-family: "Cinzel", "Times New Roman", serif;
  letter-spacing: 0.06em;
}

.handout-card-secret-note .handout-body-copy {
  font-family: "Source Serif 4", Georgia, serif;
  font-size: 0.98rem;
}

.handout-card-vision {
  background:
    radial-gradient(circle at 50% 0%, rgba(198, 226, 255, 0.32), rgba(198, 226, 255, 0) 42%),
    linear-gradient(180deg, rgba(227, 238, 248, 0.96), rgba(191, 208, 226, 0.94));
  border-color: rgba(116, 150, 186, 0.26);
  box-shadow:
    inset 0 1px 0 rgba(250, 254, 255, 0.46),
    0 16px 32px rgba(34, 54, 74, 0.14);
}

.handout-card-vision::before {
  content: "✦";
  position: absolute;
  top: 0.85rem;
  right: 1rem;
  color: rgba(117, 153, 194, 0.54);
  font-size: 1rem;
  text-shadow: 0 0 10px rgba(198, 226, 255, 0.28);
  animation: handout-vision-spark 5.6s ease-in-out infinite;
}

.handout-card-vision::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(
      120deg,
      rgba(255, 255, 255, 0) 0%,
      rgba(228, 243, 255, 0.08) 38%,
      rgba(255, 255, 255, 0.18) 50%,
      rgba(255, 255, 255, 0) 62%
    );
  opacity: 0;
  transform: translateX(-12%) skewX(-8deg);
  animation: handout-vision-sheen 8.4s ease-in-out infinite;
}

.handout-card-vision .handout-body-copy {
  font-style: italic;
  letter-spacing: 0.01em;
}

.handout-card-vision .badge-handout {
  background: linear-gradient(180deg, rgba(152, 190, 234, 0.28), rgba(103, 138, 180, 0.16));
  color: rgba(27, 53, 78, 0.84);
}

.handout-card-vision h3 {
  font-family: "Cinzel Decorative", "Cinzel", serif;
  letter-spacing: 0.07em;
  font-size: 1.14rem;
}

.handout-card-vision .handout-body-copy,
.handout-card-vision .handout-signature {
  font-family: "Source Serif 4", Georgia, serif;
  font-style: italic;
}

.handout-card-official-notice {
  background:
    linear-gradient(180deg, rgba(233, 223, 199, 0.96), rgba(211, 194, 162, 0.92));
  border-color: rgba(116, 79, 36, 0.32);
  box-shadow:
    inset 0 1px 0 rgba(255, 246, 230, 0.5),
    0 14px 30px rgba(66, 43, 16, 0.16);
}

.handout-card-official-notice::after {
  content: "";
  position: absolute;
  right: 1.1rem;
  bottom: 1rem;
  width: 2.65rem;
  height: 2.65rem;
  border-radius: 999px;
  background:
    radial-gradient(circle at 35% 35%, rgba(210, 58, 52, 0.94), rgba(142, 18, 18, 0.96));
  box-shadow:
    inset 0 1px 0 rgba(255, 200, 200, 0.28),
    0 8px 18px rgba(90, 20, 18, 0.18);
  opacity: 0.92;
  animation: handout-notice-seal-glint 9.2s ease-in-out infinite;
}

.handout-card-official-notice .message-card-head h3 {
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: "Cinzel Decorative", "Cinzel", serif;
}

.handout-card-official-notice .badge-handout {
  background: linear-gradient(180deg, rgba(166, 122, 66, 0.24), rgba(121, 79, 31, 0.14));
  color: rgba(88, 52, 18, 0.88);
}

.handout-card-rumor-slip {
  background:
    linear-gradient(180deg, rgba(220, 229, 211, 0.96), rgba(194, 208, 185, 0.9));
  border-color: rgba(78, 110, 77, 0.24);
  box-shadow:
    inset 0 1px 0 rgba(245, 252, 238, 0.34),
    0 12px 26px rgba(32, 54, 34, 0.12);
}

.handout-card-rumor-slip::before {
  content: "";
  position: absolute;
  top: 0;
  right: 16%;
  width: 34%;
  height: 0.36rem;
  background: linear-gradient(90deg, rgba(128, 155, 122, 0.36), rgba(128, 155, 122, 0.06));
  border-bottom-left-radius: 999px;
  border-bottom-right-radius: 999px;
}

.handout-card-rumor-slip .handout-body-copy {
  font-size: 0.98rem;
}

.handout-card-rumor-slip .badge-handout {
  background: linear-gradient(180deg, rgba(117, 153, 112, 0.24), rgba(79, 115, 75, 0.14));
  color: rgba(45, 77, 43, 0.88);
}

.handout-card-rumor-slip h3 {
  font-family: "Cinzel", "Times New Roman", serif;
  letter-spacing: 0.05em;
}

.handout-card-rumor-slip .handout-body-copy,
.handout-card-rumor-slip .handout-signature {
  font-family: "Source Serif 4", Georgia, serif;
  letter-spacing: 0.01em;
}

.message-actions {
  display: flex;
  gap: 0.7rem;
  flex-wrap: wrap;
  margin-top: 1rem;
}

.message-actions form {
  margin: 0;
}

.compact-empty {
  margin: 0;
  padding: 0.65rem 0.8rem;
  font-size: 0.92rem;
}

.clue-meta-grid a,
.message-timestamp a,
.player-admin-stats a {
  color: #21405a;
  text-decoration-thickness: 1px;
}

.message-card-unread {
  border-color: rgba(159, 69, 40, 0.45);
  box-shadow:
    inset 0 0 0 1px rgba(159, 69, 40, 0.08),
    0 0 0 rgba(0, 0, 0, 0);
  background:
    linear-gradient(180deg, rgba(215, 227, 237, 0.88), rgba(190, 208, 223, 0.76));
  animation: unread-note-arrival 620ms cubic-bezier(0.2, 0.82, 0.24, 1) both;
}

.message-card-unread::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 0.28rem;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(216, 138, 99, 0.98), rgba(159, 69, 40, 0.82));
  box-shadow: 0 0 0 rgba(216, 138, 99, 0);
  animation: unread-note-accent 820ms ease-out both;
}

.message-card-unread::after {
  content: "";
  position: absolute;
  inset: 0 auto 0 -42%;
  width: 40%;
  pointer-events: none;
  background: linear-gradient(
    100deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 246, 224, 0.1) 36%,
    rgba(255, 246, 224, 0.28) 52%,
    rgba(255, 255, 255, 0) 100%
  );
  transform: skewX(-18deg);
  opacity: 0;
  animation: unread-note-sheen 1050ms ease-out 180ms both;
}

.message-card-unread .badge-attention {
  animation: unread-badge-settle 860ms ease-out both;
}

.handout-card-letter.message-card-unread {
  background:
    linear-gradient(180deg, rgba(239, 227, 203, 0.96), rgba(221, 203, 175, 0.92));
}

.handout-card-dream.message-card-unread {
  background:
    radial-gradient(circle at top, rgba(119, 146, 197, 0.2), rgba(11, 20, 30, 0) 44%),
    linear-gradient(180deg, rgba(18, 28, 40, 0.94), rgba(11, 18, 28, 0.9));
  border-color: rgba(184, 209, 236, 0.24);
}

.handout-card-dream.message-card-unread::before {
  background: linear-gradient(180deg, rgba(161, 194, 242, 0.98), rgba(91, 123, 181, 0.84));
}

.handout-card-secret-note.message-card-unread {
  background:
    linear-gradient(180deg, rgba(213, 224, 236, 0.92), rgba(187, 201, 217, 0.9));
}

.handout-card-vision.message-card-unread {
  background:
    radial-gradient(circle at 50% 0%, rgba(198, 226, 255, 0.32), rgba(198, 226, 255, 0) 42%),
    linear-gradient(180deg, rgba(227, 238, 248, 0.96), rgba(191, 208, 226, 0.94));
}

.handout-card-official-notice.message-card-unread {
  background:
    linear-gradient(180deg, rgba(233, 223, 199, 0.96), rgba(211, 194, 162, 0.92));
}

.handout-card-rumor-slip.message-card-unread {
  background:
    linear-gradient(180deg, rgba(220, 229, 211, 0.96), rgba(194, 208, 185, 0.9));
}

@keyframes handout-dream-mist {
  0% {
    opacity: 0.28;
    transform: translateY(0) scaleX(0.96);
  }

  100% {
    opacity: 0.5;
    transform: translateY(-0.2rem) scaleX(1.04);
  }
}

@keyframes handout-vision-spark {
  0%,
  72%,
  100% {
    opacity: 0.34;
    transform: scale(0.94);
    text-shadow: 0 0 8px rgba(198, 226, 255, 0.18);
  }

  80% {
    opacity: 0.92;
    transform: scale(1.08);
    text-shadow:
      0 0 14px rgba(198, 226, 255, 0.34),
      0 0 26px rgba(198, 226, 255, 0.16);
  }
}

@keyframes handout-vision-sheen {
  0%,
  78%,
  100% {
    opacity: 0;
    transform: translateX(-12%) skewX(-8deg);
  }

  86% {
    opacity: 1;
    transform: translateX(12%) skewX(-8deg);
  }
}

@keyframes handout-notice-seal-glint {
  0%,
  80%,
  100% {
    box-shadow:
      inset 0 1px 0 rgba(255, 200, 200, 0.28),
      0 8px 18px rgba(90, 20, 18, 0.18);
    filter: brightness(1);
  }

  87% {
    box-shadow:
      inset 0 1px 0 rgba(255, 226, 226, 0.34),
      0 8px 18px rgba(90, 20, 18, 0.18),
      0 0 0 2px rgba(255, 215, 196, 0.12),
      0 0 16px rgba(255, 215, 196, 0.2);
    filter: brightness(1.08);
  }
}

@keyframes unread-note-arrival {
  0% {
    transform: translateX(-12px) scale(0.99);
    box-shadow:
      inset 0 0 0 1px rgba(159, 69, 40, 0.12),
      0 0 0 rgba(0, 0, 0, 0);
  }

  55% {
    transform: translateX(3px) scale(1);
    box-shadow:
      inset 0 0 0 1px rgba(159, 69, 40, 0.12),
      0 16px 28px rgba(159, 69, 40, 0.16);
  }

  100% {
    transform: translateX(0) scale(1);
    box-shadow:
      inset 0 0 0 1px rgba(159, 69, 40, 0.08),
      0 0 0 rgba(0, 0, 0, 0);
  }
}

@keyframes unread-note-accent {
  0% {
    opacity: 0;
    transform: scaleY(0.72);
    box-shadow: 0 0 0 rgba(216, 138, 99, 0);
  }

  35% {
    opacity: 1;
    transform: scaleY(1.05);
    box-shadow: 0 0 18px rgba(216, 138, 99, 0.26);
  }

  100% {
    opacity: 1;
    transform: scaleY(1);
    box-shadow: 0 0 0 rgba(216, 138, 99, 0);
  }
}

@keyframes unread-note-sheen {
  0% {
    opacity: 0;
    transform: translateX(0) skewX(-18deg);
  }

  20% {
    opacity: 0.9;
  }

  100% {
    opacity: 0;
    transform: translateX(380%) skewX(-18deg);
  }
}

@keyframes unread-badge-settle {
  0% {
    transform: translateY(-5px) scale(0.92);
  }

  45% {
    transform: translateY(0) scale(1.08);
  }

  100% {
    transform: translateY(0) scale(1);
  }
}

.account-settings-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 1rem;
  gap: 1.15rem;
}

.account-card {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1rem;
  background: rgba(197, 214, 229, 0.76);
}

.account-card h3 {
  margin: 0 0 0.45rem;
}

input:disabled {
  opacity: 0.72;
  cursor: not-allowed;
}

.character-summary {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
  padding: 1rem;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(197, 214, 229, 0.76);
  margin-bottom: 1rem;
}

.character-portrait-frame {
  width: 7rem;
  min-width: 7rem;
  aspect-ratio: 4 / 5;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(24, 43, 61, 0.16);
  background: rgba(221, 232, 240, 0.62);
  box-shadow: 0 10px 24px rgba(8, 18, 28, 0.14);
}

.character-portrait-frame-roster {
  width: 100%;
  min-width: 0;
  margin-bottom: 0.2rem;
}

.character-portrait-frame-profile {
  width: 100%;
  min-width: 0;
  max-width: 16rem;
  margin: 0 auto 1rem;
}

.character-portrait {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.character-summary-copy p,
.character-facts p,
.character-snippet {
  margin: 0.4rem 0 0;
  line-height: 1.65;
}

.character-form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.character-card {
  display: grid;
  gap: 0.9rem;
}

.character-card h2 {
  color: rgba(46, 36, 26, 0.96);
}

.character-card .eyebrow {
  color: rgba(46, 36, 26, 0.88);
}

.character-card .character-facts p,
.character-card .character-snippet {
  color: rgba(46, 36, 26, 0.92);
}

.session-list {
  margin-top: 0.9rem;
}

.session-timeline {
  display: grid;
  gap: 1.15rem;
  margin-top: 0.9rem;
}

.session-card {
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 1.15rem 1.2rem;
  background: rgba(197, 214, 229, 0.76);
}

.session-card-structured {
  display: grid;
  gap: 0.8rem;
}

.session-card-featured {
  border-color: rgba(159, 69, 40, 0.26);
  box-shadow: inset 0 0 0 1px rgba(159, 69, 40, 0.06);
}

.session-card-head {
  display: flex;
  justify-content: space-between;
  gap: 0.9rem;
  flex-wrap: wrap;
  align-items: center;
}

.session-date-chip {
  padding: 0.42rem 0.75rem;
  border-radius: 999px;
  background: rgba(159, 69, 40, 0.1);
  color: var(--accent-deep);
  font-size: 0.9rem;
  font-weight: 700;
}

.session-kicker {
  color: rgba(46, 36, 26, 0.62);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.72rem;
  font-weight: 700;
}

.session-card h3 {
  margin: 0;
}

.session-card-divider {
  height: 1px;
  background: linear-gradient(90deg, rgba(159, 69, 40, 0.16), rgba(159, 69, 40, 0));
}

.session-summary {
  margin: 0;
  color: rgba(46, 36, 26, 0.84);
  line-height: 1.7;
}

.session-archive-item {
  padding: 0;
  overflow: hidden;
}

.session-archive-summary {
  list-style: none;
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
  padding: 1.15rem 1.2rem;
  cursor: pointer;
}

.session-archive-summary::-webkit-details-marker {
  display: none;
}

.session-archive-summary-main {
  display: grid;
  gap: 0.7rem;
  min-width: 0;
}

.session-archive-preview {
  margin: 0;
  color: rgba(46, 36, 26, 0.78);
  line-height: 1.65;
}

.session-archive-toggle {
  flex-shrink: 0;
  padding: 0.45rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(24, 43, 61, 0.14);
  background: rgba(255, 255, 255, 0.36);
  color: rgba(46, 36, 26, 0.8);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.session-archive-item[open] .session-archive-toggle {
  background: rgba(159, 69, 40, 0.12);
  color: var(--accent-deep);
}

.session-archive-body {
  display: grid;
  gap: 1rem;
  padding: 0 1.2rem 1.2rem;
  border-top: 1px solid rgba(24, 43, 61, 0.1);
}

.character-snippet {
  color: rgba(46, 36, 26, 0.86);
}

.character-hero {
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.8fr);
  margin-bottom: 1.5rem;
}

.character-detail-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-bottom: 1.5rem;
}

.character-facts.stacked {
  gap: 0.5rem;
}

.compact h4,
.message-card h3 {
  margin: 0.55rem 0 0.5rem;
}

.compact .message-card-head {
  gap: 0.45rem;
}

.compact .message-meta-grid {
  grid-template-columns: 1fr;
}

.player-note-block {
  margin-top: 0.6rem;
  padding: 0.95rem 1rem;
  border-radius: 14px;
  border: 1px solid rgba(24, 43, 61, 0.14);
  background: rgba(213, 226, 237, 0.62);
}

.journal-entries {
  display: grid;
  gap: 1.1rem;
}

.journal-block-head {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: end;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}

.journal-find {
  display: grid;
  gap: 0.35rem;
  font-weight: 600;
  min-width: min(280px, 100%);
}

.journal-find span {
  font-size: 0.88rem;
  color: rgba(46, 36, 26, 0.76);
}

.journal-find input {
  min-width: 220px;
}

.journal-entry {
  display: grid;
  gap: 0.45rem;
}

.journal-stamp {
  margin: 0;
  font-family: "Cinzel", serif;
  font-size: 0.92rem;
  letter-spacing: 0.05em;
  color: var(--accent-deep);
}

.journal-empty {
  margin-top: 0.75rem;
}

.journal-highlight {
  padding: 0.05rem 0.22rem;
  border-radius: 0.35rem;
  background: rgba(211, 174, 87, 0.52);
  color: var(--text);
}

.player-note-block .mini-heading,
.mini-inbox .mini-heading {
  margin: 0 0 0.55rem;
}

.centered-panel {
  text-align: center;
}

code {
  padding: 0.12rem 0.35rem;
  border-radius: 8px;
  background: rgba(31, 31, 31, 0.08);
}

.panel.surface-primary,
.player-card.surface-primary,
.message-card.surface-primary,
.account-card.surface-primary,
.session-card.surface-primary,
.form-cluster.surface-primary,
.character-summary.surface-primary,
.player-note-block.surface-primary,
.tableau-card.surface-primary,
.overview-card.surface-primary {
  background:
    linear-gradient(180deg, rgba(152, 180, 202, 0.98), rgba(116, 147, 174, 0.97));
  border-color: rgba(230, 241, 252, 0.22);
  box-shadow: 0 24px 52px rgba(8, 18, 28, 0.28);
}

.panel.surface-secondary,
.player-card.surface-secondary,
.message-card.surface-secondary,
.account-card.surface-secondary,
.session-card.surface-secondary,
.form-cluster.surface-secondary,
.character-summary.surface-secondary,
.player-note-block.surface-secondary,
.tableau-card.surface-secondary,
.overview-card.surface-secondary {
  background:
    linear-gradient(180deg, rgba(133, 161, 185, 0.97), rgba(109, 139, 166, 0.96));
  border-color: rgba(24, 43, 61, 0.22);
  box-shadow: 0 18px 40px rgba(8, 18, 28, 0.24);
}

.panel.surface-utility,
.player-card.surface-utility,
.message-card.surface-utility,
.account-card.surface-utility,
.session-card.surface-utility,
.form-cluster.surface-utility,
.character-summary.surface-utility,
.player-note-block.surface-utility,
.tableau-card.surface-utility,
.overview-card.surface-utility {
  background:
    linear-gradient(180deg, rgba(207, 221, 233, 0.74), rgba(190, 208, 223, 0.68));
  border-color: rgba(24, 43, 61, 0.14);
  box-shadow: 0 10px 24px rgba(8, 18, 28, 0.14);
}

.panel.surface-utility-dark,
.player-card.surface-utility-dark,
.message-card.surface-utility-dark,
.account-card.surface-utility-dark,
.session-card.surface-utility-dark,
.form-cluster.surface-utility-dark,
.character-summary.surface-utility-dark,
.player-note-block.surface-utility-dark,
.tableau-card.surface-utility-dark,
.overview-card.surface-utility-dark {
  background:
    linear-gradient(180deg, rgba(17, 28, 40, 0.72), rgba(11, 20, 30, 0.68));
  border-color: rgba(229, 240, 251, 0.14);
  box-shadow: 0 12px 28px rgba(8, 18, 28, 0.18);
}

@media (max-width: 860px) {
  .hero,
  .landing-hero,
  .landing-story-grid,
  .threat-list,
  .landing-board,
  .character-hero,
  .character-detail-grid,
  .location-profile-grid,
  .account-settings-grid,
  .dashboard-grid,
  .split-layout {
    grid-template-columns: 1fr;
  }

  .topbar {
    gap: 0.55rem;
    align-items: flex-start;
    flex-direction: column;
    padding: 1rem 0.95rem 0.85rem;
  }

  .topnav {
    width: 100%;
    gap: 0.55rem 0.85rem;
  }

  .brand {
    width: 100%;
    font-size: 1.08rem;
    letter-spacing: 0.09em;
    animation: none;
    opacity: 1;
    filter: none;
    transform: none;
  }

  .brand-letter {
    animation: none;
    opacity: 1;
    filter: none;
    transform: none;
  }

  .topnav-menu-shell,
  .dashboard-mega-menu {
    display: none;
  }

  .mobile-dashboard-menu {
    display: grid;
    width: 100%;
    margin: 0;
    border-radius: 18px;
    border: 1px solid rgba(191, 233, 255, 0.18);
    background:
      linear-gradient(180deg, rgba(12, 21, 30, 0.88), rgba(8, 15, 22, 0.84));
    box-shadow: 0 14px 30px rgba(5, 11, 19, 0.18);
    overflow: hidden;
  }

  .mobile-dashboard-menu summary {
    list-style: none;
  }

  .mobile-dashboard-menu summary::-webkit-details-marker {
    display: none;
  }

  .mobile-dashboard-menu-trigger {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 3.25rem;
    padding: 0.85rem 1rem 0.8rem;
    cursor: pointer;
    color: #bfe9ff;
    font-family: "Cinzel Decorative", "Cinzel", serif;
    font-size: 1.08rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    line-height: 1;
    text-transform: uppercase;
    text-shadow:
      0 0 10px rgba(163, 225, 255, 0.16),
      0 1px 0 rgba(235, 249, 255, 0.2);
  }

  .mobile-dashboard-menu-body {
    display: grid;
    gap: 0.55rem;
    padding: 0 0.7rem 0.7rem;
    border-top: 1px solid rgba(191, 233, 255, 0.12);
    max-height: min(60vh, 26rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    touch-action: pan-y;
  }

  .mobile-dashboard-menu-body::-webkit-scrollbar {
    width: 0;
    display: none;
  }

  .mobile-dashboard-menu-link {
    display: grid;
    gap: 0.18rem;
    padding: 0.8rem 0.85rem;
    border-radius: 14px;
    border: 1px solid rgba(205, 228, 246, 0.12);
    background: rgba(221, 237, 249, 0.06);
  }

  .mobile-dashboard-menu-link.is-active {
    background:
      linear-gradient(180deg, rgba(166, 199, 224, 0.24), rgba(115, 149, 177, 0.16)),
      rgba(221, 237, 249, 0.06);
    border-color: rgba(196, 226, 248, 0.26);
  }

  .mobile-dashboard-menu-link-main,
  .mobile-dashboard-menu-link-meta-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
  }

  .mobile-dashboard-menu-link-main {
    justify-content: flex-start;
  }

  .mobile-dashboard-menu-link-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 0.7rem;
    border: 1px solid rgba(205, 228, 246, 0.16);
    background: rgba(221, 237, 249, 0.08);
    color: rgba(233, 244, 252, 0.82);
    font-family: "Cinzel", serif;
    font-size: 0.62rem;
    letter-spacing: 0.08em;
    font-weight: 700;
    flex-shrink: 0;
  }

  .mobile-dashboard-menu-link-label {
    font-family: "Cinzel", serif;
    font-size: 0.96rem;
    line-height: 1.2;
    color: var(--ink-light);
  }

  .mobile-dashboard-menu-link-meta {
    color: rgba(233, 244, 252, 0.7);
    font-size: 0.82rem;
    line-height: 1.35;
  }

  .mobile-dashboard-menu-link-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.55rem;
    padding: 0.12rem 0.4rem;
    border-radius: 999px;
    background: rgba(214, 232, 246, 0.14);
    border: 1px solid rgba(205, 228, 246, 0.18);
    color: rgba(236, 244, 251, 0.9);
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1;
    flex-shrink: 0;
  }

  .topbar-page-indicator {
    position: static;
    transform: none;
    animation: none;
    opacity: 1;
    font-size: 0.98rem;
    letter-spacing: 0.1em;
    order: 3;
    width: 100%;
    text-align: left;
  }

  .topbar-menu-anchor {
    display: none;
  }

  .topnav-link,
  .topnav-form .button-ghost {
    font-size: 0.95rem;
  }

  .topnav-form .button-ghost {
    padding: 0.62rem 0.9rem;
  }

  .topnav-link::after,
  .brand::after {
    bottom: -0.05rem;
  }

  .dashboard-quickbar-header {
    align-items: flex-start;
  }

  .dashboard-page-grid {
    grid-template-columns: 1fr;
    gap: 1.15rem;
  }

  .dashboard-sidebar {
    display: none;
  }

  .dashboard-overview {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem;
  }

  .management-summary {
    grid-template-columns: 1fr;
  }

  .current-focus-grid,
  .dashboard-jump-grid {
    grid-template-columns: 1fr;
  }

  .current-focus-compact .current-focus-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .npc-grid {
    grid-template-columns: 1fr;
  }

  .player-grid,
  .credentials-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hero-copy,
  .dashboard-banner,
  .panel,
  .hero-card {
    padding: 1.3rem;
  }

  .landing-copy {
    min-height: auto;
  }

  .landing-copy h1 {
    max-width: none;
  }

  body {
    background-attachment: scroll;
  }

  .character-form-grid {
    grid-template-columns: 1fr;
  }

  .character-summary {
    flex-direction: column;
  }

  .character-portrait-frame {
    width: 100%;
    min-width: 0;
    max-width: 14rem;
  }

  .message-meta-grid {
    grid-template-columns: 1fr;
  }

  .clue-meta-grid {
    grid-template-columns: 1fr;
  }

  .map-overlay-toolbar,
  .quest-group-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .map-overlay-toolbar .form-actions {
    justify-content: flex-start;
  }

  .quest-next-preview {
    display: block;
    margin-left: 0;
    margin-top: 0.35rem;
    max-width: none;
  }

  .session-card-head {
    align-items: flex-start;
  }

}

@media (max-width: 640px) {
  .shell {
    width: min(100%, calc(100% - 1rem));
    padding: 1.35rem 0 2.5rem;
  }

  .topbar {
    padding: 0.9rem 0.8rem 0.75rem;
  }

  .topnav {
    gap: 0.45rem 0.65rem;
  }

  .topnav-link,
  .topnav-form .button-ghost {
    font-size: 0.9rem;
  }

  .dashboard-overview,
  .player-grid,
  .credentials-grid,
  .account-settings-grid,
  .character-detail-grid,
  .location-profile-grid,
  .split-layout {
    grid-template-columns: 1fr;
  }

  .player-card-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .player-review-date {
    text-align: left;
  }

  .dashboard-page-content {
    gap: 1.2rem;
  }

  .dashboard-side-tabs {
    grid-auto-columns: minmax(145px, 84vw);
    gap: 0.65rem;
    padding-bottom: 0.35rem;
    scroll-snap-type: x mandatory;
  }

  .dashboard-side-tab {
    padding: 0.9rem 0.95rem;
    min-height: 4.75rem;
  }

  .dashboard-side-tab-label {
    font-size: 0.95rem;
  }

  .dashboard-side-tab-meta {
    font-size: 0.86rem;
    line-height: 1.4;
  }

  .current-focus-compact .current-focus-grid {
    grid-template-columns: 1fr;
  }

  .hero-copy,
  .dashboard-banner,
  .panel,
  .hero-card,
  .tableau-card,
  .overview-card {
    padding: 1.15rem;
  }

  .landing-copy {
    min-height: auto;
  }

  .landing-tags {
    gap: 0.5rem;
  }

  .landing-tags span {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  .map-pin-tools {
    padding: 0.9rem 0.95rem;
  }

  .map-pin-filter-row .button {
    width: auto;
  }

  .threat-card {
    padding: 1.15rem;
  }

  .section-heading {
    margin-bottom: 0.8rem;
  }

  .hero-actions,
  .form-actions {
    gap: 0.7rem;
  }

  .form-actions {
    align-items: stretch;
  }

  .form-actions .button,
  .form-actions .button-ghost,
  .hero-actions .button,
  .hero-actions .button-ghost {
    width: 100%;
  }

  .message-actions {
    gap: 0.55rem;
  }

  .message-actions form {
    width: 100%;
  }

  .message-actions .button,
  .message-actions .button-ghost {
    width: 100%;
  }

  .map-overlay-panel {
    width: min(96vw, 1400px);
    max-height: calc(100vh - 1rem);
    padding: 0.9rem;
  }

  .map-overlay-toolbar .form-actions,
  .map-overlay-footer {
    flex-direction: column;
    align-items: stretch;
  }

  .map-overlay-toolbar .form-actions .button,
  .map-overlay-footer .button {
    width: 100%;
  }

  .map-pin-legend-item {
    font-size: 0.82rem;
  }

  .player-map-pin-type,
  .quest-status-badge,
  .quest-priority-badge,
  .clue-status-badge,
  .npc-relationship-badge {
    min-width: 0;
  }

  .planner-panel summary small {
    display: grid;
    gap: 0.3rem;
  }

  .journal-block-head {
    align-items: stretch;
  }

  .journal-find {
    width: 100%;
    min-width: 0;
  }

  .journal-find input {
    min-width: 0;
  }

}
