:root {
  /* Disco-Dark — deep navy with cyan glow + Discord blurple accents */
  --ew-bg: #0a0e1a;
  --ew-bg-deep: #060812;
  --ew-bg-glow:
    radial-gradient(ellipse 80% 50% at 10% 0%, rgba(88, 101, 242, .14), transparent 60%),
    radial-gradient(ellipse 60% 50% at 90% 0%, rgba(0, 217, 255, .10), transparent 55%),
    radial-gradient(ellipse 70% 40% at 50% 100%, rgba(124, 77, 255, .10), transparent 60%),
    #0a0e1a;
  --ew-panel: rgba(17, 22, 38, .72);
  --ew-panel-solid: #111626;
  --ew-panel-2: #161c2e;
  --ew-panel-3: #1c2338;
  --ew-border: rgba(0, 217, 255, .14);
  --ew-border-strong: rgba(0, 217, 255, .28);
  --ew-border-soft: rgba(255, 255, 255, .06);

  --ew-text: #f2f4fb;
  --ew-text-normal: #c9d1e3;
  --ew-muted: #6b7593;
  --ew-interactive: #aab3cc;
  --ew-interactive-hover: #e6ebf7;

  --ew-cyan: #00d9ff;
  --ew-cyan-soft: rgba(0, 217, 255, .85);
  --ew-purple: #7c4dff;
  --ew-primary: #5865f2;
  --ew-primary-hover: #4752c4;
  --ew-pink: #ff4da6;
  --ew-success: #23a55a;
  --ew-warning: #f0b232;
  --ew-danger: #f23f43;
  --ew-mention: #faa61a;

  /* Bootstrap overrides — applied at :root, then Bootstrap's data-bs-theme="dark"
     on <body> overrides --bs-*-color/-bg again; we re-override after with
     [data-bs-theme="dark"] for the values we actually want. */
  color-scheme: dark;
  --bs-body-bg: transparent;
  --bs-body-color: var(--ew-text-normal);
  --bs-body-color-rgb: 201, 209, 227;
  --bs-emphasis-color: var(--ew-text);
  --bs-emphasis-color-rgb: 242, 244, 251;
  --bs-secondary-color: var(--ew-muted);
  --bs-secondary-color-rgb: 107, 117, 147;
  --bs-tertiary-color: var(--ew-muted);
  --bs-heading-color: var(--ew-text);
  --bs-border-color: var(--ew-border);
  --bs-border-color-translucent: var(--ew-border);
  --bs-primary: var(--ew-primary);
  --bs-primary-rgb: 88, 101, 242;
  --bs-success: var(--ew-success);
  --bs-success-rgb: 35, 165, 90;
  --bs-warning: var(--ew-warning);
  --bs-warning-rgb: 240, 178, 50;
  --bs-danger: var(--ew-danger);
  --bs-danger-rgb: 242, 63, 67;
  --bs-link-color: var(--ew-cyan);
  --bs-link-color-rgb: 0, 217, 255;
  --bs-link-hover-color: #57e5ff;
  --bs-code-color: var(--ew-cyan);
  --bs-highlight-color: var(--ew-text);
  --bs-highlight-bg: rgba(0, 217, 255, .18);

  --ew-radius: 14px;
  --ew-radius-sm: 8px;
  --ew-radius-lg: 18px;
  --ew-transition: 180ms cubic-bezier(.2, .8, .2, 1);
  --ew-glow-cyan: 0 0 0 1px rgba(0, 217, 255, .22), 0 0 24px rgba(0, 217, 255, .12);
  --ew-glow-primary: 0 0 0 1px rgba(88, 101, 242, .35), 0 0 28px rgba(88, 101, 242, .25);
  --ew-shadow: 0 8px 24px rgba(0, 0, 0, .4);
  --ew-shadow-lg: 0 24px 64px rgba(0, 0, 0, .55);

  /* ─── Design system v2 — additive tokens (Phase 1) ─── */
  /* Spacing scale */
  --ew-space-1: 4px;
  --ew-space-2: 8px;
  --ew-space-3: 12px;
  --ew-space-4: 16px;
  --ew-space-5: 24px;
  --ew-space-6: 32px;
  --ew-space-7: 48px;
  --ew-space-8: 64px;
  /* Opacity scale (for hover/active/disabled tints) */
  --ew-opacity-hover: .08;
  --ew-opacity-active: .14;
  --ew-opacity-muted: .55;
  --ew-opacity-disabled: .38;
  /* Shadow scale */
  --ew-shadow-sm: 0 2px 6px rgba(0, 0, 0, .25);
  --ew-shadow-md: 0 8px 24px rgba(0, 0, 0, .4);
  --ew-shadow-xl: 0 32px 80px rgba(0, 0, 0, .6);
  /* Z-index scale */
  --ew-z-sidebar: 1020;
  --ew-z-navbar: 1030;
  --ew-z-dropdown: 1040;
  --ew-z-drawer: 1050;
  --ew-z-modal: 1060;
  --ew-z-toast: 1070;
  /* Layout */
  --ew-sidebar-w: 260px;
  --ew-shell-gap: 16px;
  --ew-mobile-breakpoint: 992px;
}

* { scrollbar-width: thin; scrollbar-color: rgba(0, 217, 255, .25) transparent; }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: rgba(0, 217, 255, .22);
  border-radius: 8px;
}
*::-webkit-scrollbar-thumb:hover { background: rgba(0, 217, 255, .4); }

html, body { min-height: 100vh; }

body {
  background: var(--ew-bg-glow);
  background-attachment: fixed;
  color: var(--ew-text-normal);
  font-family: "gg sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 14.5px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Re-assert dark theme values after Bootstrap's [data-bs-theme="dark"] rules apply */
[data-bs-theme="dark"] {
  --bs-body-bg: transparent;
  --bs-body-color: var(--ew-text-normal);
  --bs-body-color-rgb: 201, 209, 227;
  --bs-emphasis-color: var(--ew-text);
  --bs-emphasis-color-rgb: 242, 244, 251;
  --bs-secondary-color: var(--ew-muted);
  --bs-secondary-color-rgb: 107, 117, 147;
  --bs-tertiary-color: var(--ew-muted);
  --bs-heading-color: var(--ew-text);
  --bs-border-color: var(--ew-border);
  --bs-border-color-translucent: var(--ew-border);
  --bs-link-color: var(--ew-cyan);
  --bs-link-color-rgb: 0, 217, 255;
  --bs-link-hover-color: #57e5ff;
  --bs-code-color: var(--ew-cyan);
  --bs-secondary-bg: var(--ew-panel-2);
  --bs-tertiary-bg: var(--ew-panel-3);
  color-scheme: dark;
}

h1, h2, h3, h4, h5, h6 { color: var(--ew-text); font-weight: 700; }

p, span, li, dd, dt, small, strong, em, label, address, time, figcaption {
  color: inherit;
}

code, pre, samp, kbd:not(.topbar-search kbd) {
  color: var(--ew-cyan);
}
pre {
  background: rgba(6, 8, 18, .55);
  border: 1px solid var(--ew-border-soft);
  border-radius: var(--ew-radius-sm);
  padding: 12px 14px;
  color: var(--ew-text-normal);
}

/* Bootstrap utility classes that might still try to render dark on dark */
.text-dark, .text-body, .text-body-emphasis, .text-black { color: var(--ew-text) !important; }
.text-body-secondary, .text-body-tertiary, .text-secondary { color: var(--ew-muted) !important; }
.bg-light, .bg-white { background-color: var(--ew-panel) !important; color: var(--ew-text) !important; }

/* Select option fallback — system colors on Windows render light-on-white */
option, optgroup {
  background-color: var(--ew-panel-solid);
  color: var(--ew-text);
}

a { color: var(--ew-cyan); text-decoration: none; transition: color var(--ew-transition); }
a:hover { color: #57e5ff; }

/* ------------------ Top navbar ------------------ */
.navbar {
  background: rgba(10, 14, 26, .55);
  backdrop-filter: blur(18px);
  border: 1px solid var(--ew-border);
  border-radius: var(--ew-radius);
  margin: 16px 16px 0;
  padding: 14px 22px;
  box-shadow: var(--ew-shadow);
  position: relative;
  z-index: 1030;
}
.navbar .dropdown-menu {
  z-index: 1040;
}

.navbar .navbar-brand { color: var(--ew-text); font-weight: 800; letter-spacing: -.01em; }

.topbar-title { display: flex; flex-direction: column; line-height: 1.15; }
.topbar-title strong { color: var(--ew-text); font-size: 1.25rem; font-weight: 800; letter-spacing: -.01em; }
.topbar-title span { color: var(--ew-muted); font-size: .82rem; }

.topbar-search {
  position: relative;
  width: min(420px, 38vw);
}
.topbar-search input {
  background: rgba(6, 8, 18, .7);
  border: 1px solid var(--ew-border);
  border-radius: 999px;
  color: var(--ew-text);
  padding: 10px 16px 10px 40px;
  width: 100%;
  transition: border-color var(--ew-transition), box-shadow var(--ew-transition);
}
.topbar-search input::placeholder { color: var(--ew-muted); }
.topbar-search input:focus {
  outline: none;
  border-color: var(--ew-cyan-soft);
  box-shadow: 0 0 0 3px rgba(0, 217, 255, .15);
}
.topbar-search .bi-search {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ew-muted);
  font-size: 1rem;
}
.topbar-search kbd {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 217, 255, .12);
  color: var(--ew-cyan);
  font-size: .72rem;
  padding: 2px 8px;
  border-radius: 6px;
  border: 1px solid rgba(0, 217, 255, .2);
}

.icon-btn {
  width: 40px;
  height: 40px;
  display: inline-grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid var(--ew-border);
  background: rgba(6, 8, 18, .5);
  color: var(--ew-interactive);
  position: relative;
  transition: all var(--ew-transition);
}
.icon-btn:hover {
  color: var(--ew-cyan);
  border-color: var(--ew-cyan-soft);
  box-shadow: 0 0 16px rgba(0, 217, 255, .25);
}
.icon-btn .badge-dot {
  position: absolute;
  top: 6px;
  right: 8px;
  width: 8px;
  height: 8px;
  background: var(--ew-danger);
  border-radius: 50%;
  box-shadow: 0 0 0 2px var(--ew-bg);
}

.avatar-ring {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--ew-primary), var(--ew-cyan));
  padding: 2px;
}
.avatar-ring > div {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: var(--ew-bg-deep);
}

/* ------------------ Layout ------------------ */
.app-shell {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 16px;
  padding: 16px;
}

/* ------------------ Sidebar ------------------ */
.sidebar {
  background: rgba(17, 22, 38, .65);
  backdrop-filter: blur(18px);
  border: 1px solid var(--ew-border);
  border-radius: var(--ew-radius);
  padding: 18px 14px;
  min-height: calc(100vh - 32px);
  display: flex;
  flex-direction: column;
  gap: 6px;
  box-shadow: var(--ew-shadow);
  position: sticky;
  top: 16px;
}

.brand-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 8px 16px;
  border-bottom: 1px solid var(--ew-border-soft);
  margin-bottom: 12px;
  text-decoration: none;
  color: inherit;
  transition: opacity var(--ew-transition);
}
.brand-card:hover { opacity: .88; text-decoration: none; color: inherit; }
.brand-logo {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--ew-primary), var(--ew-purple));
  display: grid;
  place-items: center;
  color: #fff;
  font-weight: 900;
  font-size: 1.1rem;
  box-shadow: 0 0 18px rgba(124, 77, 255, .45);
  flex-shrink: 0;
}
.brand-logo img { display: block; }

/* Wordmark variant — SVG already contains the brand name */
.brand-card--wordmark {
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  padding: 6px 4px 16px;
}
.brand-wordmark {
  display: block;
  width: 100%;
  height: auto;
  max-height: 80px;
  object-fit: contain;
  object-position: left center;
}
.brand-card--wordmark .brand-tag {
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ew-muted);
  font-weight: 700;
  padding-left: 2px;
}
.brand-name { color: var(--ew-text); font-weight: 800; line-height: 1.15; }
.brand-tag  { color: var(--ew-muted); font-size: .78rem; }

.nav-section {
  color: var(--ew-muted);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 14px 12px 6px;
}

.sidebar .nav-link {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--ew-interactive);
  padding: 10px 12px;
  border-radius: 10px;
  font-weight: 500;
  transition: background var(--ew-transition), color var(--ew-transition);
}
.sidebar .nav-link i {
  font-size: 1.05rem;
  width: 20px;
  text-align: center;
  color: var(--ew-muted);
  transition: color var(--ew-transition);
}
.sidebar .nav-link:hover {
  color: var(--ew-text);
  background: rgba(0, 217, 255, .06);
}
.sidebar .nav-link:hover i { color: var(--ew-cyan); }
.sidebar .nav-link.active {
  color: #fff;
  background: linear-gradient(135deg, rgba(88, 101, 242, .35), rgba(124, 77, 255, .25));
  box-shadow: inset 0 0 0 1px rgba(124, 77, 255, .35), 0 0 18px rgba(88, 101, 242, .25);
}
.sidebar .nav-link.active i { color: #fff; }

.sidebar-user {
  margin-top: auto;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: rgba(6, 8, 18, .6);
  border: 1px solid var(--ew-border);
  border-radius: 12px;
}
.sidebar-user .avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--ew-primary), var(--ew-cyan));
  display: grid;
  place-items: center;
  font-weight: 800;
  color: #fff;
  position: relative;
}
.sidebar-user .avatar::after {
  content: '';
  position: absolute;
  right: -2px;
  bottom: -2px;
  width: 12px;
  height: 12px;
  background: var(--ew-success);
  border-radius: 50%;
  border: 2px solid var(--ew-panel-solid);
  box-shadow: 0 0 8px rgba(35, 165, 90, .6);
}
.sidebar-user strong { color: var(--ew-text); font-size: .9rem; display: block; }
.sidebar-user span  { color: var(--ew-muted); font-size: .76rem; }

.system-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  background: rgba(6, 8, 18, .55);
  border: 1px solid var(--ew-border);
  border-radius: 10px;
  font-size: .78rem;
  color: var(--ew-muted);
  margin-top: 8px;
}
.system-status .dot {
  width: 8px;
  height: 8px;
  background: var(--ew-success);
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(35, 165, 90, .65);
  margin-right: 8px;
  display: inline-block;
  vertical-align: middle;
}

/* Sidebar refinements (Phase 1.4) — tighter rhythm, active accent bar, scrollable nav block.
   These extend the existing .sidebar / .nav-link rules above, they do not replace them. */
.sidebar-nav {
  display: flex;
  flex-direction: column;
  gap: var(--ew-space-1);
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  margin: 0 -4px;
  padding: 0 4px;
}
.sidebar-nav::-webkit-scrollbar { width: 4px; }
.sidebar .nav-link span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar .nav-link.active { position: relative; }
.sidebar .nav-link.active::before {
  content: '';
  position: absolute;
  left: -14px;            /* matches sidebar padding so the bar hugs the panel edge */
  top: 8px;
  bottom: 8px;
  width: 3px;
  background: linear-gradient(180deg, var(--ew-cyan), var(--ew-primary));
  border-radius: 0 3px 3px 0;
  box-shadow: 0 0 12px rgba(0, 217, 255, .35);
}
.nav-section:first-child,
.brand-card + .sidebar-nav .nav-section:first-child { padding-top: 6px; }
.nav-section + .nav-link { margin-top: 2px; }

/* Mobile drawer (Phase 1.3) — sidebar slides in from the left, backdrop fades in, body locks. */
.sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .55);
  backdrop-filter: blur(4px);
  z-index: calc(var(--ew-z-drawer) - 1);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--ew-transition);
}
@media (max-width: 991.98px) {
  .app-shell { grid-template-columns: 1fr; padding: 12px; gap: 12px; }
  .sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: min(300px, 86vw);
    height: 100vh;
    min-height: 0;
    z-index: var(--ew-z-drawer);
    margin: 0;
    border-radius: 0 var(--ew-radius-lg) var(--ew-radius-lg) 0;
    border-left: 0;
    transform: translateX(-105%);
    transition: transform var(--ew-transition);
    box-shadow: var(--ew-shadow-xl);
  }
  .sidebar.is-open { transform: translateX(0); }
  .sidebar-backdrop { display: block; }
  .sidebar-backdrop.is-visible { opacity: 1; pointer-events: auto; }
  body.is-drawer-open { overflow: hidden; }
  .navbar { margin: 0; }
}

/* ------------------ Main column ------------------ */
.main-col { min-width: 0; display: flex; flex-direction: column; gap: 16px; }

/* ------------------ Cards ------------------ */
.card, .modal-content, .dropdown-menu, .offcanvas {
  background: var(--ew-panel);
  backdrop-filter: blur(18px);
  border: 1px solid var(--ew-border);
  color: var(--ew-text-normal);
  border-radius: var(--ew-radius);
  box-shadow: var(--ew-shadow);
}
.card { padding: 18px; }

.card-header, .card-footer {
  background: transparent;
  border-color: var(--ew-border-soft);
  color: var(--ew-text);
  padding: 14px 18px;
}

.card-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}
.card-title-row h2 {
  font-size: 1rem;
  font-weight: 700;
  margin: 0;
  color: var(--ew-text);
  display: flex;
  align-items: center;
  gap: 10px;
}
.card-title-row h2 i { color: var(--ew-cyan); }

/* Stat cards with sparkline */
.stat-card {
  position: relative;
  overflow: hidden;
  padding: 20px 22px 0;
  min-height: 168px;
}
.stat-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(255, 255, 255, .02), transparent 35%);
}
.stat-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 18px;
}
.stat-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: 1.2rem;
  background: rgba(124, 77, 255, .14);
  color: var(--ew-purple);
  border: 1px solid rgba(124, 77, 255, .25);
  box-shadow: 0 0 18px rgba(124, 77, 255, .2);
}
.stat-icon.cyan {
  background: rgba(0, 217, 255, .12);
  color: var(--ew-cyan);
  border-color: rgba(0, 217, 255, .28);
  box-shadow: 0 0 18px rgba(0, 217, 255, .18);
}
.stat-icon.pink {
  background: rgba(255, 77, 166, .12);
  color: var(--ew-pink);
  border-color: rgba(255, 77, 166, .28);
  box-shadow: 0 0 18px rgba(255, 77, 166, .18);
}
.stat-label { color: var(--ew-muted); font-size: .85rem; margin-bottom: 6px; }
.stat-value {
  font-size: 2.1rem;
  font-weight: 800;
  color: var(--ew-text);
  letter-spacing: -.02em;
  line-height: 1;
}
.stat-value small {
  font-size: .9rem;
  font-weight: 600;
  color: var(--ew-muted);
  margin-left: 4px;
}
.stat-sub { color: var(--ew-muted); font-size: .82rem; margin-top: 6px; }
.stat-spark {
  position: relative;
  left: -22px;
  right: -22px;
  width: calc(100% + 44px);
  margin-top: 14px;
  display: block;
}

.kebab {
  background: transparent;
  border: 0;
  color: var(--ew-muted);
  width: 28px;
  height: 28px;
  border-radius: 8px;
  transition: background var(--ew-transition), color var(--ew-transition);
}
.kebab:hover { background: rgba(255, 255, 255, .06); color: var(--ew-text); }

/* Server group section */
.server-group-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.server-group-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  color: var(--ew-text);
  font-size: 1.05rem;
}
.server-group-title .count-pill {
  background: rgba(0, 217, 255, .12);
  color: var(--ew-cyan);
  border: 1px solid rgba(0, 217, 255, .25);
  border-radius: 999px;
  padding: 2px 10px;
  font-size: .78rem;
  font-weight: 700;
}

.server-card {
  background: rgba(6, 8, 18, .55);
  border: 1px solid var(--ew-border);
  border-radius: var(--ew-radius);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: border-color var(--ew-transition), transform var(--ew-transition), box-shadow var(--ew-transition);
}
.server-card:hover {
  transform: translateY(-2px);
  border-color: var(--ew-cyan-soft);
  box-shadow: var(--ew-glow-cyan);
}
.server-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.server-card-head strong { color: var(--ew-text); font-size: 1rem; }
.server-card-head .sub { color: var(--ew-muted); font-size: .78rem; }
.server-thumb {
  border-radius: 10px;
  width: 100%;
  height: 110px;
  background: linear-gradient(135deg, #1a2238, #232c4d);
  object-fit: cover;
  display: block;
}
.server-stats { display: grid; gap: 8px; font-size: .85rem; }
.server-stats .row-stat {
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: var(--ew-muted);
}
.server-stats .row-stat strong { color: var(--ew-text); font-weight: 600; }
.server-stats .progress {
  height: 4px;
  background: rgba(0, 217, 255, .08);
  border-radius: 999px;
  overflow: hidden;
}
.server-stats .progress .bar {
  height: 100%;
  background: linear-gradient(90deg, var(--ew-cyan), var(--ew-primary));
  border-radius: 999px;
}
.server-stats .progress .bar.purple {
  background: linear-gradient(90deg, var(--ew-purple), var(--ew-pink));
}
.server-card-actions { display: flex; gap: 6px; }
.server-card-actions .btn { flex: 1; }

.status-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ew-success);
  box-shadow: 0 0 8px rgba(35, 165, 90, .7);
  margin-right: 6px;
}
.status-dot.offline { background: var(--ew-muted); box-shadow: none; }
.status-pill {
  display: inline-flex;
  align-items: center;
  font-size: .76rem;
  font-weight: 600;
  color: var(--ew-success);
  background: rgba(35, 165, 90, .12);
  border: 1px solid rgba(35, 165, 90, .3);
  border-radius: 999px;
  padding: 3px 10px;
}
.status-pill.offline {
  color: var(--ew-muted);
  background: rgba(107, 117, 147, .12);
  border-color: rgba(107, 117, 147, .25);
}
.status-pill.pill-danger {
  color: var(--ew-danger);
  background: rgba(242, 63, 67, .14);
  border-color: rgba(242, 63, 67, .35);
}
.status-pill.pill-warning {
  color: var(--ew-warning);
  background: rgba(240, 178, 50, .14);
  border-color: rgba(240, 178, 50, .35);
}
.status-pill.pill-info {
  color: var(--ew-cyan);
  background: rgba(0, 217, 255, .12);
  border-color: rgba(0, 217, 255, .3);
}

/* Live Map card (Phase 2.8) — darker panel so the SVG world contrasts cleanly. */
.map-card {
  background: rgba(6, 8, 18, .7);
}

/* Detection card (Phase 2.7) — card-per-detection layout with evidence rows + actions. */
.detection-card { padding: 0; overflow: hidden; }
.detection-card__head {
  padding: var(--ew-space-3) var(--ew-space-4);
  border-bottom: 1px solid var(--ew-border-soft);
  background: rgba(255, 255, 255, .02);
  margin: 0;
  gap: var(--ew-space-3);
}
.detection-card__type {
  font-weight: 700;
  color: var(--ew-text);
  font-size: .98rem;
  display: inline-flex;
  align-items: center;
  gap: var(--ew-space-2);
}
.detection-card__type i { color: var(--ew-warning); }
.detection-card__body {
  padding: var(--ew-space-2) var(--ew-space-4) var(--ew-space-3);
}
.detection-card__actions {
  display: flex;
  gap: var(--ew-space-2);
  padding: var(--ew-space-3) var(--ew-space-4);
  border-top: 1px solid var(--ew-border-soft);
  background: rgba(0, 0, 0, .15);
  flex-wrap: wrap;
}
.detection-card__actions--meta { background: transparent; color: var(--ew-muted); }

/* Ports & status list */
.port-row {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  align-items: center;
  gap: 12px;
  padding: 10px 4px;
  border-bottom: 1px solid var(--ew-border-soft);
  font-size: .88rem;
}
.port-row:last-child { border-bottom: 0; }
.port-row strong { color: var(--ew-text); font-weight: 600; }
.port-row .label { color: var(--ew-muted); font-size: .82rem; }

/* Console */
.console-panel { display: flex; flex-direction: column; }
.console-log {
  background: rgba(6, 8, 18, .65);
  border: 1px solid var(--ew-border-soft);
  border-radius: 10px;
  padding: 12px 14px;
  font-family: "JetBrains Mono", "SF Mono", Consolas, monospace;
  font-size: .82rem;
  line-height: 1.7;
  max-height: 280px;
  overflow-y: auto;
}
.console-log .line { display: flex; gap: 10px; white-space: pre-wrap; }
.console-log .ts { color: var(--ew-muted); }
.console-log .lvl-info  { color: var(--ew-cyan); }
.console-log .lvl-warn  { color: var(--ew-warning); }
.console-log .lvl-error { color: var(--ew-danger); }
.console-log .lvl-join  { color: var(--ew-success); }
.console-log .lvl-leave { color: var(--ew-danger); }
.console-log .msg { color: var(--ew-text-normal); flex: 1; }

.console-input {
  margin-top: 10px;
  display: flex;
  gap: 8px;
  align-items: center;
  background: rgba(6, 8, 18, .65);
  border: 1px solid var(--ew-border);
  border-radius: 10px;
  padding: 4px 6px 4px 14px;
}
.console-input input {
  flex: 1;
  background: transparent;
  border: 0;
  color: var(--ew-text);
  font-family: "JetBrains Mono", "SF Mono", Consolas, monospace;
  font-size: .85rem;
  padding: 8px 4px;
}
.console-input input::placeholder { color: var(--ew-muted); }
.console-input input:focus { outline: none; }
.console-input .send-btn {
  background: linear-gradient(135deg, var(--ew-cyan), var(--ew-primary));
  border: 0;
  color: #fff;
  border-radius: 8px;
  width: 36px;
  height: 32px;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: filter var(--ew-transition);
}
.console-input .send-btn:hover { filter: brightness(1.15); }

/* Live pill */
.live-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--ew-success);
  background: rgba(35, 165, 90, .12);
  border: 1px solid rgba(35, 165, 90, .3);
  border-radius: 999px;
  padding: 3px 12px;
  font-size: .78rem;
  font-weight: 700;
}
.live-pill::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--ew-success);
  box-shadow: 0 0 8px rgba(35, 165, 90, .8);
  animation: ew-pulse 1.4s ease-out infinite;
}

@keyframes ew-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(35, 165, 90, .6); }
  70%  { box-shadow: 0 0 0 8px rgba(35, 165, 90, 0); }
  100% { box-shadow: 0 0 0 0 rgba(35, 165, 90, 0); }
}

/* Generic info rows (system overview) */
.kv-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 0;
  border-bottom: 1px solid var(--ew-border-soft);
}
.kv-row:last-child { border-bottom: 0; }
.kv-row .k { color: var(--ew-muted); display: flex; align-items: center; gap: 10px; }
.kv-row .k i { color: var(--ew-cyan); width: 18px; text-align: center; }
.kv-row .v { color: var(--ew-text); font-weight: 600; }

/* Backups list */
.backup-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid var(--ew-border-soft);
}
.backup-row:last-child { border-bottom: 0; }
.backup-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(0, 217, 255, .1);
  color: var(--ew-cyan);
  border: 1px solid rgba(0, 217, 255, .22);
  display: grid;
  place-items: center;
}
.backup-row strong { display: block; color: var(--ew-text); font-size: .9rem; }
.backup-row .sub { color: var(--ew-muted); font-size: .78rem; }

/* Forms */
.form-control, .form-select {
  background: rgba(6, 8, 18, .7);
  border: 1px solid var(--ew-border);
  color: var(--ew-text);
  border-radius: 10px;
  padding: 10px 12px;
  transition: border-color var(--ew-transition), box-shadow var(--ew-transition);
}
.form-control::placeholder { color: var(--ew-muted); }
.form-control:focus, .form-select:focus {
  background: rgba(6, 8, 18, .7);
  border-color: var(--ew-cyan-soft);
  color: var(--ew-text);
  box-shadow: 0 0 0 3px rgba(0, 217, 255, .15);
}
.form-label { color: var(--ew-text-normal); font-weight: 600; }

/* Buttons */
.btn {
  border-radius: 10px;
  font-weight: 600;
  padding: 9px 16px;
  transition: all var(--ew-transition);
  border: 1px solid transparent;
}
.btn:active { transform: translateY(1px); }

.btn-primary {
  background: var(--ew-primary);
  border-color: var(--ew-primary);
  color: #fff;
  box-shadow: 0 0 0 1px rgba(88, 101, 242, .3), 0 6px 18px rgba(88, 101, 242, .35);
}
.btn-primary:hover {
  background: var(--ew-primary-hover);
  border-color: var(--ew-primary-hover);
  color: #fff;
  box-shadow: 0 0 0 1px rgba(88, 101, 242, .4), 0 8px 22px rgba(88, 101, 242, .45);
}

.btn-success { background: var(--ew-success); border-color: var(--ew-success); color: #fff; }
.btn-danger  { background: var(--ew-danger);  border-color: var(--ew-danger);  color: #fff; }

.btn-ghost, .btn-secondary {
  background: rgba(255, 255, 255, .04);
  border: 1px solid var(--ew-border);
  color: var(--ew-text-normal);
}
.btn-ghost:hover, .btn-secondary:hover {
  background: rgba(0, 217, 255, .08);
  border-color: var(--ew-cyan-soft);
  color: var(--ew-text);
}

.btn-outline-light {
  border-color: var(--ew-border-strong);
  color: var(--ew-text-normal);
  background: transparent;
}
.btn-outline-light:hover {
  background: rgba(0, 217, 255, .08);
  border-color: var(--ew-cyan-soft);
  color: var(--ew-text);
}

.btn-sm { padding: 6px 12px; font-size: .85rem; }

/* Badges */
.badge { font-weight: 600; padding: 4px 10px; border-radius: 999px; }
.badge-soft {
  background: rgba(0, 217, 255, .12);
  color: var(--ew-cyan);
  border: 1px solid rgba(0, 217, 255, .22);
}

/* Tables */
.table, [data-bs-theme="dark"] .table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--ew-text-normal);
  --bs-table-color-state: var(--ew-text-normal);
  --bs-table-color-type: var(--ew-text-normal);
  --bs-table-border-color: var(--ew-border-soft);
  --bs-table-hover-bg: rgba(0, 217, 255, .06);
  --bs-table-hover-color: var(--ew-text);
  --bs-table-striped-bg: rgba(255, 255, 255, .02);
  --bs-table-striped-color: var(--ew-text-normal);
  --bs-table-active-bg: rgba(0, 217, 255, .1);
  --bs-table-active-color: var(--ew-text);
  color: var(--ew-text-normal);
}
.table > :not(caption) > * > * { color: inherit; background-color: transparent; }
.table thead th, .table th {
  color: var(--ew-muted);
  font-weight: 700;
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-bottom-color: var(--ew-border);
}
.table td { color: var(--ew-text-normal); }
.table td code, .table td strong { color: var(--ew-text); }

/* Modals & dropdowns */
.modal-content { border-radius: var(--ew-radius-lg); box-shadow: var(--ew-shadow-lg); }
.modal-header, .modal-footer { border-color: var(--ew-border-soft); }
.dropdown-menu { padding: 6px; }
.dropdown-item {
  border-radius: 8px;
  padding: 8px 10px;
  color: var(--ew-text-normal);
  transition: background var(--ew-transition), color var(--ew-transition);
}
.dropdown-item:hover, .dropdown-item:focus { background: var(--ew-primary); color: #fff; }

/* Alerts */
.alert { border-radius: var(--ew-radius); border: 1px solid transparent; }
.alert-primary { background: rgba(88, 101, 242, .14); border-color: rgba(88, 101, 242, .35); color: #c3c9ff; }
.alert-success { background: rgba(35, 165, 90, .14); border-color: rgba(35, 165, 90, .35); color: #88e0a9; }
.alert-warning { background: rgba(240, 178, 50, .14); border-color: rgba(240, 178, 50, .4); color: #ffd58a; }
.alert-danger  { background: rgba(242, 63, 67, .14); border-color: rgba(242, 63, 67, .4); color: #ff9498; }

/* Progress */
.progress {
  background: rgba(6, 8, 18, .65);
  border-radius: 999px;
  height: 8px;
}
.progress-bar { background: linear-gradient(90deg, var(--ew-cyan), var(--ew-primary)); }

/* List groups */
.list-group-item {
  background: rgba(17, 22, 38, .45);
  border-color: var(--ew-border-soft);
  color: var(--ew-text-normal);
}
.list-group-item.active { background: var(--ew-primary); border-color: var(--ew-primary); }

/* Metric (legacy) */
.metric { font-size: 2rem; font-weight: 800; color: var(--ew-text); letter-spacing: -.02em; }

/* ------------------ Auth shell ------------------ */
.auth-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
}

/* ============================================================
   Toast notifications — replaces inline .alert flash banners
   for in-app feedback. Auth pages keep the inline alerts.
   ============================================================ */
.dmw-toast-stack {
  position: fixed;
  top: 16px;
  right: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  z-index: 9999;
  max-width: min(440px, calc(100vw - 32px));
  pointer-events: none;
}
.dmw-toast {
  pointer-events: auto;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: rgba(17, 22, 38, .96);
  backdrop-filter: blur(16px);
  border: 1px solid var(--ew-border);
  border-radius: 12px;
  padding: 12px 14px;
  color: var(--ew-text);
  font-size: .9rem;
  line-height: 1.45;
  box-shadow: 0 12px 32px rgba(0, 0, 0, .55), 0 0 0 1px rgba(255, 255, 255, .02);
  opacity: 0;
  transform: translateX(120%);
  transition: opacity .22s ease, transform .22s ease;
  cursor: pointer;
  min-width: 280px;
}
.dmw-toast.is-visible { opacity: 1; transform: translateX(0); }
.dmw-toast.is-leaving { opacity: 0; transform: translateX(120%); }
.dmw-toast:hover { box-shadow: 0 16px 40px rgba(0, 0, 0, .65), 0 0 0 1px rgba(255, 255, 255, .04); }

.dmw-toast-icon { font-size: 1.2rem; flex-shrink: 0; margin-top: 1px; }
.dmw-toast-body { flex-grow: 1; min-width: 0; word-wrap: break-word; }
.dmw-toast-body a { color: var(--ew-cyan); text-decoration: underline; }
.dmw-toast-body code {
  background: rgba(0, 0, 0, .35);
  border: 1px solid var(--ew-border-soft);
  padding: 0 5px;
  border-radius: 4px;
  font-size: .82em;
}
.dmw-toast-close {
  background: transparent;
  border: 0;
  color: var(--ew-muted);
  font-size: 1.1rem;
  padding: 0;
  cursor: pointer;
  flex-shrink: 0;
  line-height: 1;
  margin-top: 2px;
  transition: color .15s ease;
}
.dmw-toast-close:hover { color: var(--ew-text); }

/* Type-coloured left accent stripe */
.dmw-toast { position: relative; overflow: hidden; }
.dmw-toast::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--ew-muted);
}
.dmw-toast--success      { border-color: rgba(35, 165, 90, .35); }
.dmw-toast--success::before, .dmw-toast--success .dmw-toast-icon { background: var(--ew-success); color: var(--ew-success); }
.dmw-toast--success .dmw-toast-icon { background: transparent; }
.dmw-toast--danger       { border-color: rgba(242, 63, 67, .45); }
.dmw-toast--danger::before { background: var(--ew-danger); }
.dmw-toast--danger .dmw-toast-icon  { color: var(--ew-danger); }
.dmw-toast--warning      { border-color: rgba(240, 178, 50, .42); }
.dmw-toast--warning::before { background: var(--ew-warning, #f0b232); }
.dmw-toast--warning .dmw-toast-icon { color: var(--ew-warning, #f0b232); }
.dmw-toast--info         { border-color: rgba(0, 217, 255, .35); }
.dmw-toast--info::before { background: var(--ew-cyan); }
.dmw-toast--info .dmw-toast-icon    { color: var(--ew-cyan); }

@media (max-width: 640px) {
  .dmw-toast-stack { top: 10px; left: 10px; right: 10px; max-width: none; }
  .dmw-toast { min-width: 0; transform: translateY(-120%); }
  .dmw-toast.is-visible { transform: translateY(0); }
  .dmw-toast.is-leaving { transform: translateY(-120%); }
}

/* ============================================================
   Rich user profile hero (banner + avatar overlay + badges)
   ============================================================ */
.profile-hero {
  --profile-accent: var(--ew-primary);
  position: relative;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--ew-border);
  background: rgba(17, 22, 38, .6);
  margin-bottom: 4px;
}
.profile-hero-banner {
  height: 200px;
  background: linear-gradient(135deg, var(--profile-accent), color-mix(in srgb, var(--profile-accent) 60%, var(--ew-bg-deep)));
  background-size: cover;
  background-position: center;
  position: relative;
}
.profile-hero--no-banner .profile-hero-banner {
  background:
    radial-gradient(ellipse 60% 80% at 80% 0%, color-mix(in srgb, var(--profile-accent) 30%, transparent), transparent 60%),
    linear-gradient(135deg, color-mix(in srgb, var(--profile-accent) 22%, var(--ew-bg-deep)), var(--ew-bg-deep));
}
.profile-hero-overlay {
  position: absolute;
  inset: 0;
  height: 200px;
  background: linear-gradient(180deg, rgba(10, 14, 26, .15) 0%, rgba(10, 14, 26, .55) 100%);
  pointer-events: none;
}
.profile-hero-actions {
  position: absolute;
  top: 14px;
  right: 14px;
  display: flex;
  gap: 6px;
  z-index: 2;
}
.profile-hero-content {
  display: flex;
  gap: 22px;
  align-items: flex-end;
  padding: 0 28px 22px;
  margin-top: -56px;
  position: relative;
  z-index: 1;
}
.profile-hero-avatar {
  width: 128px;
  height: 128px;
  border-radius: 50%;
  border: 4px solid var(--ew-panel-solid);
  background: var(--ew-bg-deep);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .4);
  flex-shrink: 0;
}
.profile-hero-text { flex-grow: 1; min-width: 0; padding-bottom: 4px; }
.profile-hero-name {
  font-size: clamp(1.4rem, 2.4vw, 1.85rem);
  font-weight: 800;
  margin: 0 0 4px;
  color: var(--ew-text);
  letter-spacing: -.01em;
}
.profile-hero-title {
  font-size: .92rem;
  color: var(--profile-accent);
  font-weight: 700;
  letter-spacing: .02em;
  margin-bottom: 6px;
}
.profile-hero-meta {
  color: var(--ew-muted);
  font-size: .88rem;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.profile-hero-meta .profile-meta-dot { color: var(--ew-border); }
.profile-hero-bio {
  color: var(--ew-text-normal);
  font-size: .95rem;
  line-height: 1.5;
  max-width: 720px;
}
.profile-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}
.profile-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: color-mix(in srgb, var(--badge-color) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--badge-color) 45%, transparent);
  color: var(--badge-color);
  padding: 3px 10px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .02em;
}
.profile-badge i { font-size: .82rem; }

@media (max-width: 640px) {
  .profile-hero-banner, .profile-hero-overlay { height: 140px; }
  .profile-hero-content { flex-direction: column; align-items: center; text-align: center; padding: 0 18px 22px; }
  .profile-hero-text { padding-bottom: 0; }
  .profile-badges { justify-content: center; }
  .profile-hero-meta { justify-content: center; }
}

/* Banner position-adjust preview (modal) — same height as the real .profile-hero-banner */
.banner-preview {
  position: relative;
  height: 220px;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--ew-border);
  background: var(--ew-bg-deep);
  cursor: grab;
  user-select: none;
}
.banner-preview.is-dragging { cursor: grabbing; }
.banner-preview-img {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-repeat: no-repeat;
  pointer-events: none;
}
.banner-preview-hint {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0, 0, 0, .65);
  color: rgba(255, 255, 255, .92);
  border: 1px solid rgba(255, 255, 255, .15);
  border-radius: 999px;
  padding: 5px 14px;
  font-size: .76rem;
  font-weight: 600;
  letter-spacing: .02em;
  pointer-events: none;
  backdrop-filter: blur(6px);
  transition: opacity .2s ease;
}
.banner-preview.is-dragging .banner-preview-hint { opacity: 0; }

/* AA8: avatar overlay actions on the profile hero. Hover-reveal so the
   normal-state avatar isn't cluttered with controls. */
.profile-hero-avatar-wrap {
  position: relative;
  display: inline-block;
}
.profile-hero-avatar-actions {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 6px;
  padding-bottom: 8px;
  opacity: 0;
  transition: opacity .15s ease;
  pointer-events: none;
}
.profile-hero-avatar-wrap:hover .profile-hero-avatar-actions,
.profile-hero-avatar-wrap:focus-within .profile-hero-avatar-actions {
  opacity: 1;
  pointer-events: auto;
}
.profile-hero-avatar-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(0,0,0,.65);
  color: #e7eaf3;
  cursor: pointer;
  font-size: 14px;
  backdrop-filter: blur(6px);
  transition: background .12s ease, border-color .12s ease;
}
.profile-hero-avatar-btn:hover { background: rgba(98,224,255,.25); border-color: rgba(98,224,255,.6); color: #fff; }
.profile-hero-avatar-btn--danger:hover { background: rgba(239,111,120,.3); border-color: rgba(239,111,120,.7); }

/* Circular avatar crop preview (modal). Slightly larger than the actual avatar
   so users can pan accurately; output is the 512x512 GD'd PNG either way. */
.avatar-preview-wrap {
  display: flex;
  justify-content: center;
  padding: 6px 0 4px;
}
.avatar-preview {
  position: relative;
  width: 240px;
  height: 240px;
  border-radius: 50%;
  overflow: hidden;
  background: #0d0f1c;
  cursor: grab;
  box-shadow: 0 0 0 2px rgba(98,224,255,.35), 0 8px 28px rgba(0,0,0,.5);
  touch-action: none;
}
.avatar-preview.is-dragging { cursor: grabbing; }
.avatar-preview-img {
  width: 100%;
  height: 100%;
  background-repeat: no-repeat;
  background-size: cover;
  transition: none;
}
.avatar-preview-hint {
  position: absolute;
  bottom: 10px; left: 50%;
  transform: translateX(-50%);
  background: rgba(0, 0, 0, .55);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, .15);
  border-radius: 999px;
  padding: 4px 12px;
  font-size: .72rem;
  font-weight: 600;
  pointer-events: none;
  backdrop-filter: blur(6px);
  transition: opacity .2s ease;
}
.avatar-preview.is-dragging .avatar-preview-hint { opacity: 0; }

/* Range slider polish so the value-change visualization feels nicer in the modal */
.modal .form-range::-webkit-slider-thumb { background: var(--ew-cyan); }
.modal .form-range::-moz-range-thumb     { background: var(--ew-cyan); }

/* Stats card grid inside the profile sidebar */
.profile-stats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.profile-stat {
  background: rgba(6, 8, 18, .35);
  border: 1px solid var(--ew-border-soft);
  border-radius: 10px;
  padding: 14px;
  text-align: center;
}
.profile-stat-value {
  font-size: 1.6rem;
  font-weight: 800;
  color: var(--ew-text);
  line-height: 1;
  letter-spacing: -.02em;
}
.profile-stat-label {
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ew-muted);
  margin-top: 4px;
  font-weight: 600;
}

/* Social sign-in buttons */
.social-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid transparent;
  transition: filter .15s ease, transform .15s ease, box-shadow .15s ease;
}
.social-btn:hover { transform: translateY(-1px); }
.social-btn--steam   { background: #1b2838; color: #c7d5e0; border-color: #2a475e; }
.social-btn--steam:hover   { background: #2a475e; color: #fff; box-shadow: 0 4px 14px rgba(27,40,56,.45); }
.social-btn--discord { background: #5865f2; color: #fff; border-color: #5865f2; }
.social-btn--discord:hover { background: #4752c4; color: #fff; box-shadow: 0 4px 14px rgba(88,101,242,.45); }

.auth-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--ew-muted);
  font-size: .8rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  margin: 14px 0;
}
.auth-divider::before, .auth-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--ew-border);
}

/* ------------------ Landing ------------------ */

.landing-shell {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

/* Layered Rust-themed atmosphere — radial dusk glows behind the scene */
.landing-shell::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -2;
  background:
    radial-gradient(ellipse 70% 45% at 62% 78%, rgba(255, 138, 92, .22), transparent 60%),
    radial-gradient(ellipse 50% 35% at 18% 28%, rgba(124, 77, 255, .12), transparent 60%),
    linear-gradient(180deg, #0a0e1a 0%, #100a08 100%);
}

/* Real Rust-style photo backdrop with dusk/dark overlay layered on top so copy stays readable.
   Heavy dark wash + a stronger left vignette where most hero copy lives, plus a warm
   ember radial in the lower-right corner. The photo stays visible but never competes with text. */
.landing-shell::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;
  background-image:
    /* left-side darken so hero copy on the left always has high contrast */
    linear-gradient(90deg,
      rgba(6, 10, 22, .92) 0%,
      rgba(6, 10, 22, .82) 22%,
      rgba(6, 10, 22, .55) 50%,
      rgba(6, 10, 22, .35) 100%),
    /* top/bottom dusk wash */
    linear-gradient(180deg,
      rgba(8, 12, 24, .85) 0%,
      rgba(10, 14, 26, .72) 30%,
      rgba(20, 12, 20, .68) 60%,
      rgba(6, 4, 4, .92) 100%),
    /* warm ember in the lower-right */
    radial-gradient(ellipse 55% 45% at 82% 88%, rgba(196, 90, 38, .25), transparent 70%),
    url("/assets/img/rust-landing-bg.jpg");
  background-size: cover, cover, cover, cover;
  background-position: center bottom, center bottom, center bottom, center center;
  background-repeat: no-repeat;
  background-blend-mode: normal, normal, screen, normal;
  pointer-events: none;
}

/* Very subtle ambient breathing on the overlay */
@keyframes ew-ember-pulse {
  0%, 100% { filter: brightness(1)    contrast(1); }
  50%      { filter: brightness(1.02) contrast(1.02); }
}
.landing-shell::after { animation: ew-ember-pulse 9s ease-in-out infinite; }

/* Drop-shadow on hero/section headings so they read crisply against the photo */
.hero-copy h1,
.hero-copy p,
.section-heading h2,
.section-heading p,
.protection-grid h2,
.final-cta h2,
.final-cta p {
  text-shadow: 0 2px 18px rgba(0, 0, 0, .55), 0 1px 3px rgba(0, 0, 0, .6);
}
.hero-copy .eyebrow,
.section-heading .eyebrow {
  text-shadow: 0 1px 4px rgba(0, 0, 0, .7);
}

.landing-nav {
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(10, 14, 26, .72);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--ew-border);
}

.landing-hero {
  min-height: calc(100vh - 72px);
  display: flex;
  align-items: center;
  padding: 96px 0 88px;
}

.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 520px);
  gap: 48px;
  align-items: center;
}

.eyebrow {
  display: inline-flex;
  margin-bottom: 14px;
  color: var(--ew-mention);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
}

.hero-copy h1 {
  max-width: 780px;
  font-size: clamp(2.6rem, 6vw, 5.8rem);
  line-height: .98;
  font-weight: 900;
  letter-spacing: -.02em;
  background: linear-gradient(180deg, #fff 0%, #c7cad1 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.hero-copy p {
  max-width: 660px;
  color: var(--ew-text-normal);
  font-size: 1.14rem;
  line-height: 1.7;
  margin: 22px 0 30px;
}

.hero-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 40px;
  max-width: 720px;
}
.hero-metrics > div {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 20px;
  background: linear-gradient(180deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.015) 100%);
  border: 1px solid var(--ew-border-soft);
  border-radius: 14px;
  transition: border-color .15s ease, transform .15s ease;
}
.hero-metrics > div:hover {
  border-color: rgba(0, 217, 255, .35);
  transform: translateY(-2px);
}
.hero-metrics strong {
  font-size: 1.4rem;
  font-weight: 800;
  line-height: 1.1;
  color: #fff;
  background: linear-gradient(180deg, #fff 0%, var(--ew-cyan) 130%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  letter-spacing: -.01em;
}
.hero-metrics span {
  font-size: .82rem;
  color: var(--ew-muted);
  line-height: 1.4;
  font-weight: 500;
}

.plugin-note {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 20px;
  padding: 14px 18px;
  background: linear-gradient(135deg, rgba(124, 77, 255, .12) 0%, rgba(0, 217, 255, .08) 100%);
  border: 1px solid rgba(124, 77, 255, .35);
  border-radius: 12px;
  font-size: .92rem;
  line-height: 1.5;
  color: var(--ew-text-normal);
  max-width: 720px;
}
.plugin-note i {
  font-size: 1.2rem;
  color: var(--ew-cyan);
  flex-shrink: 0;
  margin-top: 2px;
}
.plugin-note strong { color: #fff; font-weight: 700; }
.plugin-note code {
  background: rgba(0,0,0,.35);
  border: 1px solid var(--ew-border-soft);
  border-radius: 5px;
  padding: 1px 7px;
  font-size: .82em;
  color: var(--ew-cyan);
}

@media (max-width: 720px) {
  .hero-metrics { grid-template-columns: 1fr; gap: 10px; }
  .hero-metrics > div { padding: 14px 16px; }
}

.landing-band, .landing-section {
  padding: 88px 0;
  position: relative;
}
@media (max-width: 991px) { .landing-band, .landing-section { padding: 64px 0; } }

.landing-section + .landing-section { border-top: 1px solid rgba(255, 255, 255, .04); }

.section-heading {
  max-width: 760px;
  margin: 0 auto 40px;
  text-align: center;
}
.section-heading.section-heading-left {
  text-align: left;
  margin-left: 0;
}
.section-heading p {
  font-size: 1.05rem;
  color: var(--ew-muted);
  margin-top: 12px;
}

.feature-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
@media (max-width: 991px) { .feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } }
@media (max-width: 640px) { .feature-grid { grid-template-columns: 1fr; gap: 12px; } }

/* Feature section headers — appear above each themed group */
.feature-section-block + .feature-section-block { margin-top: 48px; padding-top: 36px; border-top: 1px solid rgba(255,255,255,.04); }
.feature-section-header { margin-bottom: 28px !important; }
.feature-section-title {
  font-size: clamp(1.4rem, 2.4vw, 2rem);
  font-weight: 800;
  margin: 0 auto 12px;
  letter-spacing: -.015em;
  max-width: 760px;
  color: var(--ew-text);
}
.feature-section-subtitle {
  color: var(--ew-muted);
  max-width: 620px;
  margin: 0 auto;
  line-height: 1.55;
  font-size: 1rem;
}

/* Per-card category badge + colored icon variant */
.feature-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 18px;
}
.feature-cat-badge {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid transparent;
}
.feature-cat-badge--cyan   { background: rgba(0,217,255,.10);  color: var(--ew-cyan);    border-color: rgba(0,217,255,.30); }
.feature-cat-badge--purple { background: rgba(124,77,255,.10); color: var(--ew-purple); border-color: rgba(124,77,255,.32); }
.feature-cat-badge--pink   { background: rgba(240,71,156,.10); color: #f0479c;           border-color: rgba(240,71,156,.32); }

.feature-card .feature-icon--cyan   { background: rgba(0,217,255,.12);  color: var(--ew-cyan);    border-color: rgba(0,217,255,.30); }
.feature-card .feature-icon--purple { background: rgba(124,77,255,.13); color: var(--ew-purple); border-color: rgba(124,77,255,.32); }
.feature-card .feature-icon--pink   { background: rgba(240,71,156,.13); color: #f0479c;           border-color: rgba(240,71,156,.32); }

/* Marquee variant — spans 2 columns, taller, gradient background */
.feature-card--marquee {
  grid-column: span 2;
  padding: 36px 32px;
  position: relative;
  overflow: hidden;
}
.feature-card--marquee::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 60% 80% at 100% 0%, rgba(0,217,255,.10), transparent 70%);
  pointer-events: none;
}
.feature-card--marquee.feature-card--purple::before {
  background: radial-gradient(ellipse 60% 80% at 100% 0%, rgba(124,77,255,.12), transparent 70%);
}
.feature-card--marquee.feature-card--pink::before {
  background: radial-gradient(ellipse 60% 80% at 100% 0%, rgba(240,71,156,.12), transparent 70%);
}
.feature-card--marquee > * { position: relative; z-index: 1; }
.feature-card--marquee h3 {
  font-size: 1.55rem;
  font-weight: 800;
  letter-spacing: -.01em;
  background: linear-gradient(180deg, #fff 0%, #c7cad1 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.feature-card--marquee p { font-size: 1.02rem; }
.feature-card--marquee .feature-icon {
  width: 56px;
  height: 56px;
  font-size: 1.5rem;
}
@media (max-width: 991px) { .feature-card--marquee { grid-column: span 2; } }
@media (max-width: 640px) { .feature-card--marquee { grid-column: 1 / -1; } }

.pricing-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  align-items: stretch;
  max-width: 1180px;
  margin: 0 auto;
}

.feature-card, .price-card {
  border: 1px solid var(--ew-border);
  background: rgba(17, 22, 38, .65);
  backdrop-filter: blur(14px);
  border-radius: var(--ew-radius);
  padding: 22px 22px;
  transition: transform var(--ew-transition), border-color var(--ew-transition), box-shadow var(--ew-transition);
  display: flex;
  flex-direction: column;
}
.feature-card:hover, .price-card:hover {
  transform: translateY(-3px);
  border-color: var(--ew-cyan-soft);
  box-shadow: var(--ew-glow-cyan);
}

.feature-card h3 {
  font-size: 1.1rem;
  margin-bottom: 8px;
}
.feature-card p {
  color: var(--ew-muted);
  margin-bottom: 0;
  line-height: 1.55;
}
.feature-card .feature-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: rgba(0, 217, 255, .12);
  color: var(--ew-cyan);
  border: 1px solid rgba(0, 217, 255, .28);
  font-size: 1.2rem;
  margin-bottom: 18px;
}

.price-card {
  position: relative;
  padding: 36px 28px 32px;
}
.price-card h3 { font-size: 1.3rem; margin-bottom: 4px; }
.price-card .price-headline {
  font-size: 2.4rem;
  font-weight: 800;
  color: var(--ew-text);
  letter-spacing: -.02em;
  line-height: 1;
  margin: 18px 0 4px;
}
.price-card .price-headline small {
  font-size: 1rem;
  font-weight: 600;
  color: var(--ew-muted);
}
.price-card .price-limit {
  color: var(--ew-cyan);
  font-weight: 600;
  margin-bottom: 18px;
  font-size: .92rem;
}
.price-card .price-divider {
  height: 1px;
  background: rgba(255, 255, 255, .06);
  margin: 16px 0 18px;
}
.price-card .price-features {
  list-style: none;
  padding: 0;
  margin: 0 0 24px;
  font-size: .92rem;
}
.price-card .price-features li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 6px 0;
  color: var(--ew-text-normal);
}
.price-card .price-features li i {
  color: var(--ew-success);
  margin-top: 3px;
  flex-shrink: 0;
}
.price-card .price-cta { margin-top: auto; }

.price-card.featured {
  border-color: var(--ew-primary);
  box-shadow: 0 0 0 1px var(--ew-primary), 0 0 40px rgba(88, 101, 242, .25);
  background: linear-gradient(180deg, rgba(88, 101, 242, .12), rgba(17, 22, 38, .85));
  transform: scale(1.02);
  z-index: 1;
}
.price-card.featured:hover { transform: scale(1.02) translateY(-3px); }

/* Replaced the pseudo-element ribbon with a real DOM element for richer styling */
.price-card-ribbon {
  position: absolute;
  top: -14px;
  left: 50%;
  transform: translateX(-50%);
  background: linear-gradient(135deg, var(--ew-primary), var(--ew-purple));
  color: #fff;
  padding: 6px 16px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  box-shadow: 0 6px 20px rgba(88, 101, 242, .45);
  white-space: nowrap;
}

/* Plan card header — name + tagline above the price */
.price-card-head { margin-bottom: 14px; }
.price-card-head p { margin-top: 4px; line-height: 1.4; }

/* Bigger, more prominent price */
.price-card .price-amount { font-size: inherit; }
.price-card .price-cycle-note {
  margin-top: -6px;
  margin-bottom: 6px;
  min-height: 1.2em;
}
.price-card .price-cycle-note.is-monthly { color: transparent; }

/* Annual savings badge — only renders when .is-visible */
.price-savings-badge {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  background: rgba(35, 165, 90, .12);
  color: var(--ew-success);
  border: 1px solid rgba(35, 165, 90, .35);
  padding: 4px 10px;
  border-radius: 999px;
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .02em;
  margin-bottom: 12px;
  opacity: 0;
  transform: translateY(-2px);
  transition: opacity .2s ease, transform .2s ease;
  pointer-events: none;
  height: 0;
  overflow: hidden;
}
.price-savings-badge.is-visible {
  opacity: 1;
  transform: translateY(0);
  height: auto;
  pointer-events: auto;
}

.price-features-more {
  color: var(--ew-muted);
  font-style: italic;
}
.price-features-more i { color: var(--ew-cyan) !important; }

/* Reassurance line below pricing cards */
.pricing-reassurance {
  color: var(--ew-muted);
  font-size: .88rem;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}
.pricing-reassurance i { color: var(--ew-cyan); }
.pricing-reassurance .reassurance-dot { color: var(--ew-border); }

/* Compare every feature — expandable table below pricing */
/* ============================================================
   Repositioned pricing — server count as hero, "everything included"
   ============================================================ */

.pricing-promise {
  max-width: 720px;
  margin: 0 auto;
}
.pricing-promise-pill {
  display: inline-flex;
  align-items: center;
  background: linear-gradient(135deg, rgba(35, 165, 90, .14), rgba(0, 217, 255, .10));
  border: 1px solid rgba(35, 165, 90, .35);
  color: var(--ew-success);
  padding: 8px 18px;
  border-radius: 999px;
  font-weight: 700;
  font-size: .9rem;
  letter-spacing: .01em;
}
.pricing-promise-note {
  margin-top: 14px;
  font-size: 1.02rem;
  line-height: 1.5;
}

/* Server-count hero block inside each price card */
.price-server-hero {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 12px;
  padding: 18px 0 14px;
  margin: 14px 0 6px;
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 217, 255, .07), rgba(255, 255, 255, 0));
  border: 1px solid rgba(0, 217, 255, .12);
  text-align: center;
}
.price-card.featured .price-server-hero {
  background: linear-gradient(180deg, rgba(124, 77, 255, .12), rgba(255, 255, 255, 0));
  border-color: rgba(124, 77, 255, .28);
}
.price-server-count {
  font-size: 3rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.04em;
  background: linear-gradient(180deg, #fff 0%, var(--ew-cyan) 130%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.price-card.featured .price-server-count {
  background: linear-gradient(180deg, #fff 0%, var(--ew-primary) 130%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.price-server-label {
  color: var(--ew-muted);
  font-weight: 600;
  font-size: .92rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}

/* "Everything included" replacement for the per-card feature list */
.price-included-block {
  text-align: center;
  padding: 14px 8px;
  margin: 4px 0 18px;
  background: rgba(35, 165, 90, .06);
  border: 1px solid rgba(35, 165, 90, .22);
  border-radius: 10px;
}
.price-included-title {
  font-weight: 700;
  color: var(--ew-success);
  font-size: 1rem;
  margin-bottom: 4px;
}
.price-included-note {
  color: var(--ew-muted);
  font-size: .82rem;
  line-height: 1.4;
}

/* Included-everywhere showcase — grid below the pricing cards */
.included-showcase {
  max-width: 1180px;
  margin: 0 auto;
}
.included-showcase-title {
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
  font-weight: 800;
  letter-spacing: -.01em;
  margin: 0 auto 10px;
  color: var(--ew-text);
  max-width: 760px;
}
.included-showcase-sub {
  max-width: 640px;
  margin: 0 auto;
  line-height: 1.55;
}
.included-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
}
.included-cat {
  background: rgba(17, 22, 38, .55);
  border: 1px solid var(--ew-border);
  border-radius: 14px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: border-color .15s ease, transform .15s ease;
}
.included-cat:hover {
  border-color: var(--ew-cyan-soft);
  transform: translateY(-2px);
}
.included-cat-head {
  display: flex;
  align-items: center;
  gap: 12px;
}
.included-cat-icon {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  font-size: 1.1rem;
  flex-shrink: 0;
}
.included-cat--cyan   .included-cat-icon { background: rgba(0,217,255,.12);  color: var(--ew-cyan);    border: 1px solid rgba(0,217,255,.30); }
.included-cat--purple .included-cat-icon { background: rgba(124,77,255,.13); color: var(--ew-purple); border: 1px solid rgba(124,77,255,.32); }
.included-cat--pink   .included-cat-icon { background: rgba(240,71,156,.13); color: #f0479c;           border: 1px solid rgba(240,71,156,.32); }
.included-cat-name {
  font-size: 1rem;
  font-weight: 700;
  margin: 0;
  color: var(--ew-text);
}
.included-cat-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.included-cat-list li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: .88rem;
  color: var(--ew-text-normal);
  line-height: 1.4;
}
.included-cat-list i {
  color: var(--ew-success);
  margin-top: 3px;
  flex-shrink: 0;
}

.pricing-compare {
  max-width: 1180px;
  margin: 0 auto;
}
.pricing-compare > summary {
  list-style: none;
  cursor: pointer;
  text-align: center;
  padding: 14px 20px;
  background: rgba(17, 22, 38, .55);
  border: 1px solid var(--ew-border);
  border-radius: 12px;
  color: var(--ew-text);
  font-weight: 600;
  transition: border-color var(--ew-transition), background var(--ew-transition);
}
.pricing-compare > summary::-webkit-details-marker { display: none; }
.pricing-compare > summary:hover {
  border-color: var(--ew-cyan-soft);
  background: rgba(17, 22, 38, .8);
}
.pricing-compare[open] > summary {
  border-color: var(--ew-cyan-soft);
  background: rgba(17, 22, 38, .8);
}
.pricing-compare .compare-chevron { transition: transform .2s ease; }
.pricing-compare[open] .compare-chevron { transform: rotate(180deg); }

.pricing-compare-wrap {
  margin-top: 18px;
  border-radius: 12px;
  border: 1px solid var(--ew-border);
  background: rgba(17, 22, 38, .5);
  overflow-x: auto;
}
.pricing-compare-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 600px;
}
.pricing-compare-table th,
.pricing-compare-table td {
  padding: 10px 14px;
  text-align: left;
  border-bottom: 1px solid rgba(255, 255, 255, .04);
  color: var(--ew-text-normal);
  font-size: .9rem;
}
.pricing-compare-table thead th {
  background: rgba(6, 8, 18, .5);
  color: var(--ew-text);
  border-bottom: 1px solid var(--ew-border);
  position: sticky;
  top: 0;
  z-index: 1;
}
.pricing-compare-table .compare-cat-cell { width: 50%; font-weight: 700; }
.pricing-compare-table .compare-plan-cell {
  text-align: center;
  vertical-align: top;
  padding: 12px 8px;
  min-width: 110px;
}
.pricing-compare-table .compare-plan-cell.is-featured {
  background: rgba(88, 101, 242, .08);
  border-bottom-color: rgba(88, 101, 242, .35);
}
.pricing-compare-table .compare-plan-name {
  font-weight: 700;
  font-size: .98rem;
  letter-spacing: .01em;
}
.pricing-compare-table .compare-plan-price {
  color: var(--ew-cyan);
  font-weight: 700;
  font-size: 1rem;
  margin-top: 2px;
}
.pricing-compare-table .compare-plan-price span {
  color: var(--ew-muted);
  font-weight: 500;
  font-size: .82rem;
}
.pricing-compare-table .compare-cell {
  text-align: center;
  font-weight: 600;
}
.pricing-compare-table .compare-check {
  color: var(--ew-success);
  font-size: 1.15rem;
}
.pricing-compare-table .compare-dash {
  color: var(--ew-muted);
  opacity: .5;
}
.pricing-compare-table .compare-cat-row td {
  background: rgba(6, 8, 18, .55);
  color: var(--ew-muted);
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .12em;
  padding: 10px 14px;
}
.pricing-compare-table tbody tr:hover td { background: rgba(255, 255, 255, .02); }
.pricing-compare-table tbody tr:hover .compare-cat-row td,
.pricing-compare-table tbody tr.compare-cat-row:hover td { background: rgba(6, 8, 18, .55); }

.landing-footer {
  padding: 32px 0;
  border-top: 1px solid var(--ew-border);
  color: var(--ew-muted);
  background: rgba(6, 8, 18, .85);
  position: relative;
  z-index: 1;
}

.final-cta {
  padding: 110px 0;
  text-align: center;
  position: relative;
}

/* Streamline Servers affiliate banner */
.partner-banner {
  padding: 36px 0 64px;
  position: relative;
}
.partner-card {
  max-width: 920px;
  margin: 0 auto;
  /* AA11.3: recolored to #ffc600 (Volt Hosting gold) — partner shadow + label
     accents now match their brand instead of Streamline's green. */
  background:
    radial-gradient(ellipse 80% 60% at 0% 50%, rgba(255, 198, 0, .16), transparent 70%),
    radial-gradient(ellipse 80% 60% at 100% 50%, rgba(255, 198, 0, .12), transparent 70%),
    rgba(17, 22, 38, .72);
  border: 1px solid rgba(255, 198, 0, .38);
  border-radius: var(--ew-radius);
  padding: 28px 32px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 28px;
  align-items: center;
  backdrop-filter: blur(14px);
  box-shadow: 0 0 0 1px rgba(255, 198, 0, .14), 0 18px 48px rgba(255, 198, 0, .18);
  position: relative;
  overflow: hidden;
}
.partner-card::before {
  content: 'PARTNER';
  position: absolute;
  top: 10px;
  right: 14px;
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: .18em;
  color: rgba(255, 198, 0, .8);
}
.partner-logo {
  /* AA11.2: was a tight 200x64 box that off-centered tall partner logos
     (Volt Hosting's wordmark + glyph sits ~85px tall). Bumped height + use
     symmetric padding so any uploaded logo lands centered. */
  width: 220px;
  height: 96px;
  display: grid;
  place-items: center;
  background: rgba(6, 8, 18, .55);
  border: 1px solid rgba(255, 198, 0, .28);
  border-radius: 10px;
  padding: 12px;
  flex-shrink: 0;
}
.partner-logo img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}
.partner-logo-fallback {
  font-weight: 900;
  letter-spacing: .04em;
  color: #ffc600;
  font-size: 1rem;
  text-align: center;
  line-height: 1;
}
.partner-logo-fallback small {
  display: block;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .18em;
  color: var(--ew-muted);
  margin-top: 4px;
}
.partner-body { min-width: 0; }
.partner-body strong {
  display: block;
  font-size: 1.05rem;
  color: var(--ew-text);
  margin-bottom: 2px;
}
.partner-body span {
  display: block;
  color: var(--ew-muted);
  font-size: .9rem;
  line-height: 1.5;
}
.partner-promo {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  background: rgba(255, 198, 0, .12);
  border: 1px dashed rgba(255, 198, 0, .55);
  color: #ffe27a;
  font-family: "JetBrains Mono", "SF Mono", Consolas, monospace;
  font-size: .78rem;
  padding: 4px 10px;
  border-radius: 6px;
  letter-spacing: .04em;
}
.partner-promo strong {
  display: inline;
  color: #fff2b3;
  font-size: .85rem;
  margin: 0;
  letter-spacing: .08em;
}
.partner-cta {
  background: linear-gradient(135deg, #ffc600, #d99d00);
  border: 0;
  color: #1a1300;
  font-weight: 700;
  padding: 12px 22px;
  border-radius: 10px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  box-shadow: 0 0 0 1px rgba(255, 198, 0, .55), 0 8px 22px rgba(255, 198, 0, .4);
  transition: filter var(--ew-transition), transform var(--ew-transition);
}
.partner-cta:hover { color: #fff; filter: brightness(1.1); transform: translateY(-1px); }
.partner-cta:active { transform: translateY(0); }

@media (max-width: 767px) {
  .partner-card { grid-template-columns: 1fr; text-align: center; padding: 24px 20px; gap: 18px; }
  .partner-logo { margin: 0 auto; }
  .partner-cta { justify-self: center; }
}
.final-cta h2 {
  font-size: clamp(2rem, 4vw, 3rem);
  margin-bottom: 12px;
}
.final-cta p {
  color: var(--ew-muted);
  max-width: 580px;
  margin: 0 auto 28px;
}

.protection-grid {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 60px;
  align-items: center;
}
.signal-list {
  display: grid;
  gap: 16px;
  margin-top: 24px;
}
.signal-list > div {
  background: rgba(17, 22, 38, .55);
  border: 1px solid var(--ew-border);
  border-left: 3px solid var(--ew-cyan);
  border-radius: 0 var(--ew-radius-sm) var(--ew-radius-sm) 0;
  padding: 14px 18px;
}
.signal-list strong { color: var(--ew-text); display: block; margin-bottom: 4px; }
.signal-list span { color: var(--ew-muted); font-size: .9rem; }

.evidence-panel {
  background: rgba(17, 22, 38, .65);
  border: 1px solid var(--ew-border);
  backdrop-filter: blur(14px);
  border-radius: var(--ew-radius);
  padding: 28px;
}
.evidence-row {
  display: flex;
  justify-content: space-between;
  padding: 12px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .05);
}
.evidence-row:last-of-type { border-bottom: 0; }
.evidence-row span { color: var(--ew-muted); }
.evidence-row strong { color: var(--ew-text); }
.evidence-action {
  margin-top: 18px;
  padding: 12px 16px;
  background: rgba(240, 178, 50, .12);
  border: 1px solid rgba(240, 178, 50, .3);
  color: var(--ew-warning);
  border-radius: var(--ew-radius-sm);
  font-weight: 600;
  text-align: center;
}

@media (max-width: 991px) {
  .protection-grid { grid-template-columns: 1fr; gap: 32px; }
  .landing-band, .landing-section, .final-cta { padding: 72px 0; }
}

/* ------------------ Responsive ------------------ */
@media (max-width: 1199px) {
  .app-shell { grid-template-columns: 220px 1fr; }
}
@media (max-width: 991px) {
  /* .sidebar positioning is handled by the drawer rule in the Phase 1 section above */
  .hero-grid { grid-template-columns: 1fr; }
  .feature-grid, .pricing-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Phase 1 helpers — responsive tables, empty states, mobile search.
   Pages opt in by adding the class; nothing here applies unless asked.
   ============================================================ */

/* Responsive tables: under 768px, rows collapse to stacked cards.
   Usage: add .table-responsive-cards to <table>, and data-label="Column Name" to each <td>. */
@media (max-width: 767.98px) {
  .table-responsive-cards thead { display: none; }
  .table-responsive-cards,
  .table-responsive-cards tbody,
  .table-responsive-cards tr,
  .table-responsive-cards td { display: block; width: 100%; }
  .table-responsive-cards tr {
    background: rgba(255, 255, 255, .02);
    border: 1px solid var(--ew-border);
    border-radius: var(--ew-radius-sm);
    padding: var(--ew-space-3);
    margin-bottom: var(--ew-space-3);
  }
  .table-responsive-cards td {
    border: 0;
    padding: var(--ew-space-2) 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--ew-space-3);
    text-align: right;
  }
  .table-responsive-cards td::before {
    content: attr(data-label);
    color: var(--ew-muted);
    font-weight: 700;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    flex-shrink: 0;
    text-align: left;
  }
  .table-responsive-cards td:not([data-label])::before { content: ''; }
  .table-responsive-cards td:empty { display: none; }
}

/* Empty-state block: standard "no items yet" message.
   Usage: <div class="empty-state"><i class="bi bi-inbox"></i><h3>None yet</h3><p>...</p></div> */
.empty-state {
  padding: var(--ew-space-7) var(--ew-space-5);
  text-align: center;
  color: var(--ew-muted);
}
.empty-state > .bi {
  font-size: 2.4rem;
  color: var(--ew-cyan);
  opacity: .6;
  display: block;
  margin-bottom: var(--ew-space-3);
}
.empty-state h3 {
  color: var(--ew-text);
  font-size: 1rem;
  font-weight: 700;
  margin: 0 0 var(--ew-space-2);
}
.empty-state p {
  color: var(--ew-muted);
  font-size: .9rem;
  margin: 0 auto;
  max-width: 42ch;
  line-height: 1.55;
}
.empty-state .empty-actions {
  margin-top: var(--ew-space-4);
  display: flex;
  gap: var(--ew-space-2);
  justify-content: center;
  flex-wrap: wrap;
}

/* Flag badges used across pages (watchlist/whitelist on players, etc.) */
.badge-watchlist {
  background: rgba(240, 178, 50, .18);
  color: var(--ew-warning);
  border: 1px solid rgba(240, 178, 50, .4);
}
.badge-whitelist {
  background: rgba(35, 165, 90, .16);
  color: var(--ew-success);
  border: 1px solid rgba(35, 165, 90, .4);
}

/* Top bar dropdowns — notification bell + account menu.
   These replace the inline style="..." blob that used to live in app_shell_start(). */
.notif-badge {
  width: 16px;
  height: 16px;
  background: var(--ew-danger);
  color: #fff;
  font-size: .62rem;
  font-weight: 800;
  display: grid;
  place-items: center;
  border-radius: 50%;
  line-height: 1;
}
.notif-dropdown {
  min-width: 340px;
  max-width: 380px;
}
.notif-dropdown__head,
.notif-dropdown__footer {
  border-top: 1px solid var(--ew-border-soft);
}
.notif-dropdown__head {
  border-top: 0;
  border-bottom: 1px solid var(--ew-border-soft);
  padding: var(--ew-space-2) var(--ew-space-3);
}
.notif-dropdown__head strong { font-size: .82rem; }
.notif-dropdown__head .notif-new { color: var(--ew-danger); }
.notif-dropdown__list {
  max-height: 380px;
  overflow-y: auto;
}
.notif-item {
  border-bottom: 1px solid var(--ew-border-soft);
  white-space: normal;
  padding: var(--ew-space-2) var(--ew-space-3);
  display: flex;
  gap: var(--ew-space-2);
  align-items: flex-start;
}
.notif-item--unread { background: rgba(0, 217, 255, .06); }
.notif-item i { color: var(--ew-cyan); margin-top: 2px; }
.notif-item__body { flex: 1 1 auto; min-width: 0; }
.notif-item__title { font-weight: 600; color: var(--ew-text); font-size: .86rem; line-height: 1.3; }
.notif-item__msg { color: var(--ew-muted); font-size: .78rem; line-height: 1.35; margin-top: 2px; }
.notif-item__time { color: var(--ew-muted); font-size: .7rem; margin-top: 2px; }
.notif-item__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--ew-cyan);
  margin-top: 6px;
  flex-shrink: 0;
}
.notif-empty {
  text-align: center;
  color: var(--ew-muted);
  padding: var(--ew-space-5) var(--ew-space-3);
  font-size: .85rem;
}

.account-dropdown { min-width: 240px; }
.account-dropdown__header {
  padding: var(--ew-space-2) var(--ew-space-3);
  border-bottom: 1px solid var(--ew-border-soft);
}
.account-dropdown__header strong { color: var(--ew-text); display: block; }
.account-dropdown__divider {
  height: 0;
  border-top: 1px solid var(--ew-border-soft);
  margin: var(--ew-space-1) 0;
}
.avatar-btn {
  background: linear-gradient(135deg, var(--ew-primary), var(--ew-cyan));
  cursor: pointer;
}
.avatar-btn > div {
  background: var(--ew-bg-deep);
  background-size: cover;
  background-position: center;
  display: grid;
  place-items: center;
  color: var(--ew-text);
  font-weight: 800;
}
.avatar-btn > div span {
  font-size: .85rem;
  letter-spacing: .01em;
}

/* Mobile search row: hidden by default; clicking the mobile search icon-btn flips .is-mobile-open. */
@media (max-width: 767.98px) {
  .topbar-search { display: none; }
  .topbar-search.is-mobile-open {
    display: block;
    position: absolute;
    left: 12px;
    right: 12px;
    top: calc(100% + 6px);
    width: auto;
    z-index: var(--ew-z-dropdown);
  }
  .topbar-search.is-mobile-open input { width: 100%; }
  .topbar-title span { display: none; }
}
.btn-mobile-search {
  display: none;
}
@media (max-width: 767.98px) {
  .btn-mobile-search { display: inline-flex; }
}

/* ============================================================
   Subscription summary card (Billing page hero)
   ============================================================ */
.sub-card {
  padding: var(--ew-space-5);
  border: 1px solid var(--ew-border);
  position: relative;
  overflow: hidden;
}
.sub-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 60% 50% at 0% 0%, rgba(88, 101, 242, .14), transparent 60%);
  pointer-events: none;
  z-index: 0;
}
.sub-card > * { position: relative; z-index: 1; }
.sub-card--comp::before {
  background: radial-gradient(ellipse 60% 50% at 0% 0%, rgba(35, 165, 90, .18), transparent 60%);
}
.sub-card--comp {
  border-color: rgba(35, 165, 90, .35);
  box-shadow: 0 0 0 1px rgba(35, 165, 90, .15), 0 8px 24px rgba(0, 0, 0, .4);
}
.sub-icon {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  font-size: 1.5rem;
  color: var(--ew-cyan);
  background: rgba(0, 217, 255, .1);
  border: 1px solid rgba(0, 217, 255, .3);
  flex-shrink: 0;
}
.sub-card--comp .sub-icon {
  color: var(--ew-success);
  background: rgba(35, 165, 90, .14);
  border-color: rgba(35, 165, 90, .4);
}
.sub-stat-label {
  font-size: .72rem;
  color: var(--ew-muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 700;
  margin-bottom: 2px;
}
.sub-stat-value {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--ew-text);
  line-height: 1.2;
}

/* ============================================================
   Plugin Marketplace
   ============================================================ */
.plugin-filters .plugin-filter {
  border-color: var(--ew-border);
  background: transparent;
  color: var(--ew-muted);
  font-weight: 600;
  font-size: .82rem;
}
.plugin-filters .plugin-filter.active {
  background: rgba(0, 217, 255, .12);
  border-color: var(--ew-cyan);
  color: var(--ew-text);
}
.plugin-filters .plugin-filter:hover {
  border-color: var(--ew-cyan-soft);
  color: var(--ew-text);
}

.plugin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 14px;
}
.plugin-card {
  background: var(--ew-panel);
  border: 1px solid var(--ew-border);
  border-radius: 12px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  position: relative;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.plugin-card:hover {
  border-color: var(--ew-cyan-soft);
  box-shadow: var(--ew-shadow);
  transform: translateY(-1px);
}
.plugin-card.is-installed {
  border-color: rgba(35, 165, 90, .35);
  background: linear-gradient(180deg, rgba(35, 165, 90, .06), var(--ew-panel) 50%);
}

.plugin-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 6px;
}
.plugin-cat-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  border: 1px solid transparent;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.plugin-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  color: var(--ew-success);
  background: rgba(35, 165, 90, .12);
  border: 1px solid rgba(35, 165, 90, .4);
}

.plugin-name {
  font-size: 1.05rem;
  font-weight: 700;
  margin: 0;
  color: var(--ew-text);
}
.plugin-author {
  font-size: .78rem;
  color: var(--ew-muted);
  margin-top: -4px;
}
.plugin-desc {
  font-size: .85rem;
  color: var(--ew-text-normal);
  line-height: 1.45;
  margin: 4px 0 0;
  flex: 1 1 auto;
}
.plugin-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.plugin-tag {
  font-size: .68rem;
  color: var(--ew-muted);
  background: rgba(255, 255, 255, .04);
  border: 1px solid var(--ew-border-soft);
  padding: 2px 7px;
  border-radius: 4px;
  font-weight: 500;
}
.plugin-card-actions {
  display: flex;
  gap: 6px;
  margin-top: 6px;
}
.plugin-card-actions form { flex-shrink: 0; }
.plugin-card-actions form:first-child { flex: 1 1 auto; }
.plugin-meta-foot {
  font-size: .72rem;
  color: var(--ew-muted);
  padding-top: 6px;
  border-top: 1px dashed var(--ew-border-soft);
}

/* ============================================================
   Phase A — Sidebar icon-only collapse (desktop ≥ 992px)
   Toggle button anchored to the sidebar's right edge. State persists
   to localStorage via the pre-paint script in header_html().
   ============================================================ */

.sidebar { position: relative; } /* allow absolute-positioned toggle anchor */
.sidebar-collapse-toggle {
  position: absolute;
  right: -12px;
  top: 22px;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--ew-panel-solid);
  border: 1px solid var(--ew-border);
  color: var(--ew-muted);
  display: none;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 6;
  transition: color var(--ew-transition), border-color var(--ew-transition), box-shadow var(--ew-transition);
  font-size: .82rem;
  padding: 0;
}
.sidebar-collapse-toggle:hover {
  color: var(--ew-cyan);
  border-color: var(--ew-cyan-soft);
  box-shadow: var(--ew-glow-cyan);
}
.sidebar-collapse-toggle i { transition: transform var(--ew-transition); }

@media (min-width: 992px) {
  .sidebar-collapse-toggle { display: flex; }

  .app-shell { transition: grid-template-columns var(--ew-transition); }
  .sidebar { transition: padding var(--ew-transition); }
  .sidebar .nav-link span { transition: opacity 100ms ease; }

  html.sidebar-collapsed .app-shell { grid-template-columns: 76px 1fr; }
  html.sidebar-collapsed .sidebar { padding: 18px 8px; }
  html.sidebar-collapsed .sidebar .nav-link {
    justify-content: center;
    padding: 10px 0;
    gap: 0;
  }
  html.sidebar-collapsed .sidebar .nav-link i {
    width: auto;
    font-size: 1.15rem;
  }
  html.sidebar-collapsed .sidebar .nav-link span,
  html.sidebar-collapsed .nav-section,
  html.sidebar-collapsed .brand-tag,
  html.sidebar-collapsed .system-status span:not(.dot) { display: none; }
  html.sidebar-collapsed .brand-card--wordmark {
    align-items: center;
    padding: 6px 0 14px;
  }
  html.sidebar-collapsed .brand-wordmark {
    max-height: 40px;
    object-position: left center;
    object-fit: cover;
    width: 40px;
    border-radius: 8px;
  }
  html.sidebar-collapsed .system-status {
    justify-content: center;
    padding: 8px 0;
  }
  html.sidebar-collapsed .system-status .dot { margin-right: 0; }
  html.sidebar-collapsed .sidebar-collapse-toggle i { transform: rotate(180deg); }
  /* Keep the active accent bar visible flush to the sidebar's inner edge */
  html.sidebar-collapsed .sidebar .nav-link.active::before { left: -8px; }

  /* CSS-only hover tooltip: shows the nav-link's data-label after a short delay */
  html.sidebar-collapsed .sidebar .nav-link::after {
    content: attr(data-label);
    position: absolute;
    left: calc(100% + 14px);
    top: 50%;
    transform: translateY(-50%);
    background: var(--ew-panel-solid);
    color: var(--ew-text);
    padding: 6px 10px;
    border-radius: 6px;
    font-size: .82rem;
    font-weight: 500;
    white-space: nowrap;
    border: 1px solid var(--ew-border);
    box-shadow: var(--ew-shadow);
    pointer-events: none;
    opacity: 0;
    transition: opacity 120ms ease 180ms;
    z-index: 1000;
  }
  html.sidebar-collapsed .sidebar .nav-link:hover::after,
  html.sidebar-collapsed .sidebar .nav-link:focus-visible::after { opacity: 1; }

  /* Section gaps are tighter when there are no headers */
  html.sidebar-collapsed .sidebar-nav { gap: 6px; }
}

/* Below 992px, neutralise the collapsed class so the mobile drawer renders full-width
   even if the localStorage flag is set from a desktop session. */
@media (max-width: 991.98px) {
  html.sidebar-collapsed .sidebar .nav-link span,
  html.sidebar-collapsed .nav-section,
  html.sidebar-collapsed .brand-tag { display: revert; }
  html.sidebar-collapsed .sidebar .nav-link { justify-content: flex-start; padding: 10px 12px; gap: 12px; }
  html.sidebar-collapsed .sidebar { padding: 18px 14px; }
  html.sidebar-collapsed .sidebar-collapse-toggle { display: none; }
}

/* ============================================================================
   Landing Page 2.0 — Phase A: visual foundation
   Drifting gradient mesh behind hero + scroll-reveal infra + counter helper.
   All motion gated on prefers-reduced-motion.
============================================================================ */

.landing-hero { position: relative; isolation: isolate; overflow: hidden; }
.landing-hero::before,
.landing-hero::after {
  content: "";
  position: absolute;
  inset: -20% -10% auto -10%;
  height: 80%;
  background:
    radial-gradient(50% 50% at 20% 30%, rgba(88,101,242,.35), transparent 70%),
    radial-gradient(40% 50% at 80% 70%, rgba(0,217,255,.22), transparent 70%),
    radial-gradient(35% 40% at 60% 20%, rgba(240,71,156,.18), transparent 70%);
  filter: blur(60px);
  z-index: -1;
  pointer-events: none;
  animation: lp2-mesh-drift 28s ease-in-out infinite alternate;
}
.landing-hero::after {
  animation-delay: -14s;
  opacity: .65;
  transform: scale(1.1);
}
@keyframes lp2-mesh-drift {
  0%   { transform: translate3d(0,0,0) scale(1); }
  100% { transform: translate3d(40px,-30px,0) scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .landing-hero::before, .landing-hero::after { animation: none; }
}

/* Scroll reveal — JS adds .is-in when element enters viewport. */
[data-lp2-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity .7s cubic-bezier(.2,.8,.2,1),
    transform .7s cubic-bezier(.2,.8,.2,1);
  will-change: opacity, transform;
}
[data-lp2-reveal].is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  [data-lp2-reveal] { opacity: 1; transform: none; transition: none; }
}

/* ============================================================================
   Landing Page 2.0 — Phase B: hero typewriter + trust chip row
============================================================================ */

.lp2-trust-row {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 22px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.06);
}
.lp2-trust-row > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--ew-muted, #a0aac8);
  font-weight: 500;
  letter-spacing: .01em;
}
.lp2-trust-row > span i {
  color: var(--ew-primary, #5865f2);
  font-size: 14px;
}

/* Typewriter cursor */
.lp2-typewriter .lp2-cursor {
  display: inline-block;
  width: 7px;
  height: 1.05em;
  vertical-align: -2px;
  margin-left: 2px;
  background: currentColor;
  opacity: .85;
  animation: lp2-cursor-blink 1s steps(2) infinite;
}
@keyframes lp2-cursor-blink {
  50% { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .lp2-typewriter .lp2-cursor { animation: none; opacity: .5; }
}

/* Console log line fade-in for typewriter output reveal */
.lp2-line { opacity: 0; transition: opacity .25s ease; }
.lp2-line.is-shown { opacity: 1; }
.lp2-line--scroll {
  animation: lp2-line-slide-up .35s ease both;
}
@keyframes lp2-line-slide-up {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: .75; transform: none; }
}

/* ============================================================================
   Landing Page 2.0 — Phase C: bento feature grid
============================================================================ */

.lp2-bento {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-auto-rows: minmax(130px, auto);
  gap: 18px;
  margin-top: 12px;
}
.lp2-bento > .lp2-cell { border-radius: 18px; overflow: hidden; }
.lp2-bento .lp2-cell--hero  { grid-column: span 8; grid-row: span 2; min-height: 260px; }
.lp2-bento .lp2-cell--tall  { grid-column: span 4; grid-row: span 2; }
.lp2-bento .lp2-cell--wide  { grid-column: span 8; }
.lp2-bento .lp2-cell--md    { grid-column: span 4; }
.lp2-bento .lp2-cell--sm    { grid-column: span 4; }

@media (max-width: 992px) {
  .lp2-bento .lp2-cell--hero,
  .lp2-bento .lp2-cell--tall,
  .lp2-bento .lp2-cell--wide { grid-column: span 12; grid-row: auto; }
  .lp2-bento .lp2-cell--md,
  .lp2-bento .lp2-cell--sm   { grid-column: span 6; }
  .lp2-bento .lp2-cell--hero { min-height: 320px; }
}
@media (max-width: 640px) {
  .lp2-bento > .lp2-cell { grid-column: span 12 !important; }
  .lp2-bento .lp2-cell--hero { min-height: 260px; }
}

/* Bento hero cell — internal console takes full cell */
.lp2-cell--hero .lp2-bento-console {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}
.lp2-cell--hero .lp2-bento-console .console-log {
  flex: 1 1 auto;
  max-height: none;
  overflow: hidden;
}

/* Marquee (Plugin Marketplace + Anti-Cheat tall cells) */
.lp2-marquee {
  position: relative;
  height: 100%;
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
  mask-image: linear-gradient(180deg, transparent 0, #000 18%, #000 82%, transparent 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 18%, #000 82%, transparent 100%);
}
.lp2-marquee-track {
  display: flex;
  flex-direction: column;
  gap: 10px;
  animation: lp2-marquee-up 32s linear infinite;
}
.lp2-marquee:hover .lp2-marquee-track { animation-play-state: paused; }
@keyframes lp2-marquee-up {
  from { transform: translateY(0); }
  to   { transform: translateY(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .lp2-marquee-track { animation: none; }
}
.lp2-marquee-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  border-radius: 12px;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.06);
  font-size: 13.5px;
}
.lp2-marquee-item strong { color: var(--ew-text, #e7eaf3); font-weight: 600; }
.lp2-marquee-item span { color: var(--ew-muted, #a0aac8); font-size: 12px; }

/* ============================================================================
   Landing Page 2.0 — Phase D: anti-cheat + pricing + Oxide CTA polish
============================================================================ */

/* Anti-cheat evidence panel — softer presence */
.evidence-panel {
  box-shadow:
    0 0 0 1px rgba(88,101,242,.18),
    0 20px 60px -20px rgba(0,0,0,.6);
}
.evidence-panel .status-pill::before {
  content: "";
  display: inline-block;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #f0b232;
  margin-right: 6px;
  vertical-align: 1px;
  box-shadow: 0 0 0 0 rgba(240,178,50,.6);
  animation: lp2-pulse-dot 2s ease-in-out infinite;
}
@keyframes lp2-pulse-dot {
  0%, 100% { box-shadow: 0 0 0 0 rgba(240,178,50,.55); }
  50%      { box-shadow: 0 0 0 8px rgba(240,178,50,0); }
}
@media (prefers-reduced-motion: reduce) {
  .evidence-panel .status-pill::before { animation: none; }
}

/* (LP 2.0 conic-rainbow border deleted — replaced in LP 3.0 with a single-accent purple treatment scoped under .landing-shell.) */

/* Oxide CTA — mesh bookend + badge */
.final-cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.final-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(45% 60% at 20% 50%, rgba(88,101,242,.22), transparent 70%),
    radial-gradient(40% 55% at 80% 50%, rgba(0,217,255,.16), transparent 70%);
  filter: blur(40px);
  z-index: -1;
  pointer-events: none;
  animation: lp2-mesh-drift 32s ease-in-out infinite alternate-reverse;
}
@media (prefers-reduced-motion: reduce) {
  .final-cta::before { animation: none; }
}
.lp2-oxide-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  border-radius: 999px;
  background: rgba(35,165,90,.12);
  border: 1px solid rgba(35,165,90,.32);
  color: #23a55a;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 18px;
}
.lp2-oxide-badge i { font-size: 13px; }

/* ============================================================================
   Landing Page 3.0 — Linear/Notion restraint pass
   All overrides scoped under .landing-shell so the rest of the app keeps its
   current colors. Single accent (brand purple). Cyan + pink retired.
============================================================================ */

.landing-shell {
  --lp3-accent:        #5865f2;
  --lp3-accent-hi:     #6b76f4;
  --lp3-accent-soft:   rgba(88,101,242,.12);
  --lp3-accent-glow:   rgba(88,101,242,.22);
  --lp3-accent-line:   rgba(88,101,242,.35);
  --lp3-bg:            #0a0c14;
  --lp3-surface:       rgba(255,255,255,.02);
  --lp3-surface-hover: rgba(255,255,255,.035);
  --lp3-border:        rgba(255,255,255,.06);
  --lp3-border-strong: rgba(255,255,255,.10);
  --lp3-text:          #e7eaf3;
  --lp3-muted:         #8b93ad;
  --lp3-dim:           #5d6783;
  background: var(--lp3-bg);
  font-feature-settings: "ss01", "cv11", "tnum";
}

/* -------- A.2 Card system -------- */
.landing-shell .feature-card,
.landing-shell .lp2-cell {
  background: var(--lp3-surface);
  background-image: none !important;
  border: 1px solid var(--lp3-border);
  border-radius: 14px;
  padding: 24px;
  transition: border-color .25s ease, background .25s ease, transform .25s ease, box-shadow .25s ease;
}
.landing-shell .feature-card:hover,
.landing-shell .lp2-cell:hover {
  border-color: var(--lp3-accent-line);
  background: var(--lp3-surface-hover);
  transform: translateY(-2px);
  box-shadow: 0 0 0 1px var(--lp3-accent-soft), 0 20px 60px -30px rgba(0,0,0,.6);
}

/* Neutralise color variant classes — class names kept in PHP, render identical. */
.landing-shell .feature-card--cyan,
.landing-shell .feature-card--purple,
.landing-shell .feature-card--pink,
.landing-shell .feature-card--marquee {
  background-image: none !important;
  background: var(--lp3-surface);
}

.landing-shell .feature-icon,
.landing-shell .feature-icon--cyan,
.landing-shell .feature-icon--purple,
.landing-shell .feature-icon--pink {
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent);
  width: 40px; height: 40px;
  border-radius: 10px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 18px;
}

.landing-shell .feature-cat-badge,
.landing-shell .feature-cat-badge--cyan,
.landing-shell .feature-cat-badge--purple,
.landing-shell .feature-cat-badge--pink {
  background: transparent;
  border: 1px solid var(--lp3-border-strong);
  color: var(--lp3-muted);
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: 10.5px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
}

.landing-shell .feature-card h3 {
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--lp3-text);
  margin-top: 16px;
}
.landing-shell .feature-card p {
  color: var(--lp3-muted);
  font-size: 0.95rem;
  line-height: 1.55;
}
.landing-shell .feature-card code {
  background: rgba(255,255,255,.05);
  border: 1px solid var(--lp3-border);
  border-radius: 4px;
  padding: 1px 6px;
  font-size: .85em;
  color: var(--lp3-text);
}

/* -------- A.3 Mesh swap -------- */
.landing-shell .landing-hero { background: var(--lp3-bg); }
.landing-shell .landing-hero::before {
  background:
    radial-gradient(55% 60% at 25% 30%, rgba(88,101,242,.22), transparent 70%);
  filter: blur(40px);
  animation: lp2-mesh-drift 32s ease-in-out infinite alternate;
}
.landing-shell .landing-hero::after {
  background:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 40px 40px,
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 40px 40px;
  filter: none;
  animation: none;
  opacity: .8;
  transform: none;
  mask-image: radial-gradient(60% 50% at 50% 40%, #000 0%, transparent 75%);
  -webkit-mask-image: radial-gradient(60% 50% at 50% 40%, #000 0%, transparent 75%);
  inset: 0;
  height: 100%;
}

/* -------- A.4 Typography & spacing -------- */
.landing-shell .container { max-width: 1180px; }
.landing-shell .landing-section { padding-block: clamp(80px, 9vw, 130px); }

.landing-shell .hero-copy h1 {
  font-size: clamp(2.6rem, 5.6vw, 4.2rem);
  letter-spacing: -0.03em;
  font-weight: 800;
  line-height: 1.04;
  color: var(--lp3-text);
  background: none;
  -webkit-text-fill-color: var(--lp3-text);
}
.landing-shell .hero-copy p {
  color: var(--lp3-muted);
  font-size: 1.1rem;
  line-height: 1.55;
  max-width: 560px;
}
.landing-shell .hero-copy .eyebrow {
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: 11px;
  font-weight: 700;
  color: var(--lp3-accent);
  margin-bottom: 16px;
  display: inline-flex; align-items: center; gap: 8px;
}
.landing-shell .hero-copy .eyebrow::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: var(--lp3-accent);
  box-shadow: 0 0 0 4px var(--lp3-accent-soft);
}

.landing-shell .hero-metrics strong,
.landing-shell .price-amount,
.landing-shell .price-server-count,
.landing-shell .price-suffix,
.landing-shell .console-log .ts {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
}

.landing-shell .section-heading {
  text-align: left;
  max-width: 760px;
  margin-bottom: 56px;
}
.landing-shell .section-heading .eyebrow {
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: 11px;
  font-weight: 700;
  color: var(--lp3-muted);
  display: inline-block;
  margin-bottom: 14px;
}
.landing-shell .section-heading h2 {
  font-size: clamp(2rem, 4vw, 2.8rem);
  letter-spacing: -0.022em;
  font-weight: 700;
  color: var(--lp3-text);
  line-height: 1.1;
}
.landing-shell .section-heading p {
  color: var(--lp3-muted);
  font-size: 1.05rem;
  line-height: 1.55;
  margin-top: 14px;
}

/* -------- A.5 Buttons -------- */
.landing-shell .btn-primary {
  background: var(--lp3-accent);
  border: 1px solid var(--lp3-accent);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 8px 24px -10px var(--lp3-accent-glow);
  letter-spacing: -0.005em;
}
.landing-shell .btn-primary:hover {
  background: var(--lp3-accent-hi);
  border-color: var(--lp3-accent-hi);
  box-shadow: 0 12px 32px -12px var(--lp3-accent-glow);
  transform: translateY(-1px);
}
.landing-shell .btn-outline-light,
.landing-shell .btn-outline-secondary {
  background: transparent;
  border: 1px solid var(--lp3-border-strong);
  color: var(--lp3-text);
  font-weight: 600;
}
.landing-shell .btn-outline-light:hover {
  border-color: var(--lp3-accent-line);
  background: var(--lp3-surface-hover);
  color: var(--lp3-text);
}

/* -------- B. Pricing -------- */
.landing-shell .price-card {
  background: var(--lp3-surface);
  border: 1px solid var(--lp3-border);
  border-radius: 18px;
  padding: 32px 28px;
  transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.landing-shell .price-card:hover {
  border-color: var(--lp3-accent-line);
  transform: translateY(-3px);
}
.landing-shell .price-card.featured {
  border-color: var(--lp3-accent);
  background: linear-gradient(180deg, rgba(88,101,242,.06), transparent 60%), var(--lp3-surface);
  box-shadow:
    0 0 0 1px var(--lp3-accent),
    0 30px 80px -30px var(--lp3-accent-glow);
}
.landing-shell .price-card.featured::before,
.landing-shell .price-card.featured::after { content: none; background: none; }

.landing-shell .price-card-ribbon {
  background: var(--lp3-accent);
  color: #fff;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 6px 14px;
  border-radius: 999px;
  top: -14px;
  box-shadow: 0 8px 20px -8px var(--lp3-accent-glow);
}

.landing-shell .price-server-hero {
  display: flex; flex-direction: column; align-items: flex-start;
  margin: 8px 0 20px;
}
.landing-shell .price-server-count {
  font-size: clamp(3.5rem, 6vw, 5rem);
  letter-spacing: -0.04em;
  font-weight: 800;
  line-height: 1;
  background: linear-gradient(180deg, #ffffff, #8b93ad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.landing-shell .price-server-label {
  color: var(--lp3-muted);
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: 11px;
  font-weight: 700;
  margin-top: 6px;
}

.landing-shell .price-amount {
  font-size: 2rem;
  font-weight: 800;
  color: var(--lp3-text);
  letter-spacing: -0.02em;
}
.landing-shell .price-suffix {
  color: var(--lp3-muted);
  font-size: .95rem;
  margin-left: 4px;
}

.landing-shell .price-interval-toggle {
  background: transparent;
  border: 1px solid var(--lp3-border);
  color: var(--lp3-muted);
  font-weight: 600;
  padding: 6px 16px;
}
.landing-shell .price-interval-toggle.active {
  background: var(--lp3-accent-soft);
  border-color: var(--lp3-accent);
  color: var(--lp3-text);
}

.landing-shell .price-savings-badge {
  background: rgba(35,165,90,.10);
  border: 1px solid rgba(35,165,90,.30);
  color: #4ade80;
  font-weight: 600;
}

.landing-shell .price-divider {
  height: 1px;
  background: var(--lp3-border);
  margin: 24px 0;
}
.landing-shell .price-included-block { padding: 0; }
.landing-shell .price-included-title { color: var(--lp3-text); font-weight: 600; font-size: .95rem; }
.landing-shell .price-included-note { color: var(--lp3-muted); font-size: .85rem; margin-top: 4px; }

.landing-shell .pricing-promise-pill {
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent);
  font-size: .85rem;
  font-weight: 600;
  padding: 8px 16px;
  border-radius: 999px;
  letter-spacing: -0.005em;
}

/* -------- C. Hero console -------- */
.landing-shell .hero-console {
  background: #07090f;
  border: 1px solid var(--lp3-border-strong);
  border-radius: 18px;
  box-shadow: 0 30px 80px -30px rgba(0,0,0,.7), 0 0 0 1px var(--lp3-accent-soft);
  padding: 16px;
}
.landing-shell .hero-console .console-top {
  background: transparent;
  border-bottom: 1px solid var(--lp3-border);
  padding-bottom: 10px;
}
.landing-shell .hero-console .console-top code {
  color: var(--lp3-dim);
  letter-spacing: .04em;
  font-size: 11.5px;
}
.landing-shell .server-card {
  background: transparent;
  border: 1px solid var(--lp3-border);
  border-radius: 10px;
}
.landing-shell .server-card small { color: var(--lp3-muted); }
.landing-shell .server-card strong { color: var(--lp3-text); }
.landing-shell .console-log .ts  { color: var(--lp3-dim); }
.landing-shell .console-log .msg { color: var(--lp3-text); }
.landing-shell .console-log .lvl-info,
.landing-shell .console-log .lvl-warn,
.landing-shell .console-log .lvl-join { color: var(--lp3-muted); }
.landing-shell .console-log .lvl-leave { color: #ef6f78; }
.landing-shell .console-log .line { padding: 5px 0; font-size: 12.5px; }

/* -------- C. Trust chips -------- */
.landing-shell .lp2-trust-row {
  border-top: 1px solid var(--lp3-border);
  margin-top: 28px;
  padding-top: 22px;
}
.landing-shell .lp2-trust-row > span {
  color: var(--lp3-muted);
  font-size: 12.5px;
  font-weight: 500;
}
.landing-shell .lp2-trust-row > span i {
  color: var(--lp3-accent);
  font-size: 13px;
}

/* -------- C. Hero metrics -------- */
.landing-shell .hero-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
  margin-top: 36px;
}
.landing-shell .hero-metrics > div {
  border: none;
  padding: 0;
  background: none;
}
.landing-shell .hero-metrics strong {
  display: block;
  font-size: clamp(1.5rem, 2.4vw, 1.9rem);
  color: var(--lp3-text);
  font-weight: 700;
  letter-spacing: -0.01em;
  background: none;
  -webkit-text-fill-color: var(--lp3-text);
}
.landing-shell .hero-metrics span {
  display: block;
  color: var(--lp3-muted);
  font-size: 11.5px;
  text-transform: uppercase;
  letter-spacing: .12em;
  margin-top: 4px;
}

/* -------- D. Bento polish -------- */
.landing-shell .lp2-bento { gap: 16px; }
.landing-shell .lp2-cell--hero .lp2-bento-console { padding: 0; }
.landing-shell .lp2-cell--hero .hero-console {
  height: 100%;
  display: flex; flex-direction: column;
}

.landing-shell .lp2-marquee-track { animation-duration: 60s; gap: 5px; }
.landing-shell .lp2-marquee-item {
  background: transparent;
  border: 1px solid var(--lp3-border);
  border-radius: 8px;
  padding: 7px 12px;
  position: relative;
  padding-left: 24px;
  font-size: 12px;
}
.landing-shell .lp2-marquee-item::before {
  content: ""; position: absolute;
  left: 10px; top: 50%; transform: translateY(-50%);
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--lp3-accent);
  box-shadow: 0 0 0 2px var(--lp3-accent-soft);
}
.landing-shell .lp2-marquee-item strong { color: var(--lp3-text); }
.landing-shell .lp2-marquee-item span { color: var(--lp3-dim); }

/* -------- E. Anti-cheat -------- */
.landing-shell .protection-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: start;
}
@media (max-width: 992px) {
  .landing-shell .protection-grid { grid-template-columns: 1fr; }
}
.landing-shell .protection-grid .eyebrow {
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: 11px;
  font-weight: 700;
  color: var(--lp3-muted);
  display: inline-block;
  margin-bottom: 14px;
}
.landing-shell .protection-grid h2 {
  font-size: clamp(1.8rem, 3.6vw, 2.4rem);
  letter-spacing: -0.022em;
  font-weight: 700;
  color: var(--lp3-text);
}
.landing-shell .protection-grid p { color: var(--lp3-muted); }
.landing-shell .protection-grid p strong { color: var(--lp3-text); }

.landing-shell .signal-list {
  display: flex; flex-direction: column; gap: 10px;
  margin-top: 24px;
}
.landing-shell .signal-list > div {
  border: 1px solid var(--lp3-border);
  border-left: 2px solid var(--lp3-accent);
  background: var(--lp3-surface);
  border-radius: 0 10px 10px 0;
  padding: 14px 18px;
}
.landing-shell .signal-list > div strong {
  display: block;
  color: var(--lp3-text);
  font-weight: 600;
  font-size: .95rem;
}
.landing-shell .signal-list > div span {
  color: var(--lp3-muted);
  font-size: .85rem;
  line-height: 1.5;
}

.landing-shell .evidence-panel {
  background: var(--lp3-surface);
  border: 1px solid var(--lp3-border);
  border-radius: 14px;
  padding: 24px;
  box-shadow: none;
}
.landing-shell .evidence-row {
  display: flex; justify-content: space-between;
  padding: 10px 0;
  border-bottom: 1px solid var(--lp3-border);
}
.landing-shell .evidence-row:last-of-type { border-bottom: none; }
.landing-shell .evidence-row span { color: var(--lp3-dim); font-size: .85rem; }
.landing-shell .evidence-row strong {
  color: var(--lp3-text);
  font-feature-settings: "tnum";
  font-size: .9rem;
}
.landing-shell .evidence-action {
  color: var(--lp3-muted);
  font-size: .82rem;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--lp3-border);
}
.landing-shell .card-title-row h2 { color: var(--lp3-text); }
.landing-shell .status-pill.offline {
  background: rgba(240,178,50,.10);
  color: #f0b232;
  border: 1px solid rgba(240,178,50,.30);
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

/* -------- E. Plugin note -------- */
.landing-shell .plugin-note {
  background: var(--lp3-surface);
  border: 1px solid var(--lp3-border);
  border-left: 2px solid var(--lp3-accent);
  border-radius: 0 10px 10px 0;
  color: var(--lp3-muted);
  margin-top: 24px;
  padding: 14px 18px;
}
.landing-shell .plugin-note i { color: var(--lp3-accent); }
.landing-shell .plugin-note code,
.landing-shell .plugin-note strong { color: var(--lp3-text); }

/* -------- E. Included-features showcase -------- */
.landing-shell .included-cat,
.landing-shell .included-cat--cyan,
.landing-shell .included-cat--purple,
.landing-shell .included-cat--pink {
  background: var(--lp3-surface);
  background-image: none !important;
  border: 1px solid var(--lp3-border);
  border-radius: 14px;
  padding: 24px;
}
.landing-shell .included-cat-icon {
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent);
}
.landing-shell .included-cat-name { color: var(--lp3-text); }
.landing-shell .included-cat-list li { color: var(--lp3-muted); }
.landing-shell .included-cat-list i { color: var(--lp3-accent); }

/* -------- E. Oxide CTA -------- */
.landing-shell .final-cta::before { display: none; }
.landing-shell .final-cta { padding: clamp(80px, 9vw, 130px) 0; }
.landing-shell .lp2-oxide-badge {
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent);
}
.landing-shell .final-cta h2 {
  font-size: clamp(2.2rem, 4.6vw, 3.4rem);
  letter-spacing: -0.025em;
  font-weight: 800;
  color: var(--lp3-text);
}
.landing-shell .final-cta p {
  color: var(--lp3-muted);
  font-size: 1.05rem;
  max-width: 640px;
  margin: 16px auto 28px;
}

/* -------- E. Partner banner -------- */
.landing-shell .partner-banner { padding: 0 0 80px; }
.landing-shell .partner-card {
  background: var(--lp3-surface);
  border: 1px solid var(--lp3-border);
  border-radius: 14px;
  padding: 20px 24px;
  transition: border-color .25s ease, transform .25s ease;
}
.landing-shell .partner-card:hover {
  border-color: var(--lp3-accent-line);
  transform: translateY(-1px);
}
.landing-shell .partner-body strong { color: var(--lp3-text); }
.landing-shell .partner-body span { color: var(--lp3-muted); }
.landing-shell .partner-promo { color: var(--lp3-accent); }
.landing-shell .partner-cta {
  color: var(--lp3-accent);
  font-weight: 600;
}

/* -------- E. Footer -------- */
.landing-shell .landing-footer {
  border-top: 1px solid var(--lp3-border);
  background: transparent;
  color: var(--lp3-dim);
  padding: 28px 0;
}
.landing-shell .landing-footer a { color: var(--lp3-muted); }
.landing-shell .landing-footer a:hover { color: var(--lp3-text); }

/* -------- E. Nav -------- */
.landing-shell .landing-nav {
  border-bottom: 1px solid transparent;
  /* Sticky to viewport top so the layout never shifts when we toggle scrolled-state. */
  position: sticky;
  top: 0;
  z-index: 50;
  /* Fixed padding & brand-img height in BOTH states — no animation between sizes
     (the padding shift was retriggering scroll events at the threshold and flickering). */
  padding-block: 14px;
  /* Transition only the background + border — these don't affect layout. */
  transition: background .25s ease, border-color .25s ease;
  /* Promote to its own compositor layer so backdrop-filter doesn't thrash. */
  will-change: background, backdrop-filter;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
.landing-shell .landing-nav .nav-link {
  color: var(--lp3-muted);
  font-weight: 500;
  font-size: .92rem;
}
.landing-shell .landing-nav .nav-link:hover { color: var(--lp3-text); }

/* -------- F.1 Sticky compact nav on scroll — background only (no size change) -------- */
html.lp3-scrolled .landing-shell .landing-nav {
  background: rgba(8,10,18,.82);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border-bottom-color: rgba(255,255,255,.06);
}

/* -------- F.2 Animated hairline divider -------- */
.landing-shell .lp3-divider {
  height: 1px;
  background: var(--lp3-border);
  position: relative;
  overflow: hidden;
}
.landing-shell .lp3-divider::after {
  content: "";
  position: absolute;
  inset: 0;
  left: -240px;
  width: 240px;
  background: linear-gradient(90deg, transparent, var(--lp3-accent), transparent);
  animation: lp3-divider-sweep 7s ease-in-out infinite;
}
@keyframes lp3-divider-sweep {
  0%, 30% { transform: translateX(0); opacity: .85; }
  100% { transform: translateX(calc(100vw + 240px)); opacity: .85; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp3-divider::after {
    animation: none;
    opacity: .5;
    left: 50%;
    transform: translateX(-50%);
  }
}

/* -------- Misc tidying -------- */
.landing-shell .pricing-promise-note { color: var(--lp3-muted) !important; }
.landing-shell .pricing-reassurance {
  color: var(--lp3-muted);
  font-size: .9rem;
  display: flex; flex-wrap: wrap; justify-content: center; gap: 14px;
}
.landing-shell .pricing-reassurance i { color: var(--lp3-accent); }
.landing-shell .reassurance-dot { color: var(--lp3-dim); }
.landing-shell .included-showcase-title { color: var(--lp3-text); font-weight: 700; letter-spacing: -0.015em; }
.landing-shell .included-showcase-sub { color: var(--lp3-muted) !important; }

/* ============================================================================
   LP 3.1 — Hero demo media (looping panel video / screenshot)
   Replaces the oversized typewriter console in the hero. Uses the same dark
   chrome as the in-app console for visual continuity, but content is a real
   video of the panel (or a static image fallback).
============================================================================ */
.landing-shell .lp3-hero-demo {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.landing-shell .lp3-hero-demo-frame {
  position: relative;
  background: #07090f;
  border: 1px solid var(--lp3-border-strong);
  border-radius: 18px;
  overflow: hidden;
  box-shadow:
    0 30px 80px -30px rgba(0,0,0,.7),
    0 0 0 1px var(--lp3-accent-soft);
  /* 16:10 aspect — typical admin-panel screenshot ratio. */
  aspect-ratio: 16 / 10;
}
.landing-shell .lp3-hero-demo-chrome {
  position: absolute;
  inset: 0 0 auto 0;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: linear-gradient(180deg, rgba(7,9,15,.96), rgba(7,9,15,.7));
  border-bottom: 1px solid var(--lp3-border);
  z-index: 2;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.landing-shell .lp3-hero-demo-chrome span {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--lp3-border-strong);
  display: inline-block;
}
.landing-shell .lp3-hero-demo-chrome span:nth-child(1) { background: #f23f43; opacity: .7; }
.landing-shell .lp3-hero-demo-chrome span:nth-child(2) { background: #f0b232; opacity: .7; }
.landing-shell .lp3-hero-demo-chrome span:nth-child(3) { background: #23a55a; opacity: .7; }
.landing-shell .lp3-hero-demo-chrome code {
  margin-left: 8px;
  color: var(--lp3-dim);
  font-size: 11.5px;
  letter-spacing: .04em;
  background: none;
  padding: 0;
  border: none;
}
.landing-shell .lp3-hero-demo-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  display: block;
  border: none;
  background: #07090f;
}
.landing-shell .lp3-hero-demo-empty {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 14px;
  color: var(--lp3-muted);
  font-size: .95rem;
  letter-spacing: -0.005em;
  text-align: center;
  padding: 32px;
  background:
    radial-gradient(60% 60% at 50% 40%, rgba(88,101,242,.10), transparent 70%),
    repeating-linear-gradient(135deg, rgba(255,255,255,.02) 0 1px, transparent 1px 14px);
}
.landing-shell .lp3-hero-demo-empty::before {
  content: "";
  width: 48px; height: 48px;
  border-radius: 12px;
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  display: flex; align-items: center; justify-content: center;
  background-image:
    radial-gradient(circle at 50% 50%, var(--lp3-accent) 0 6px, transparent 7px);
}
.landing-shell .lp3-hero-demo-empty strong {
  color: var(--lp3-text);
  font-weight: 600;
  display: block;
}

/* ============================================================================
   LP 3.2 — Animated dashboard mock
   Fully CSS-driven loop showing 6 dashboard panels with realistic data.
   30 s total cycle (5 s per panel). Sidebar active indicator slides between
   nav items in sync. No video file, no JS, no login. Looks at home in the
   bento cell's dark window chrome.
============================================================================ */
.landing-shell .lp3-dash-mock {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-columns: 44px 1fr;
  background: #0a0c14;
  color: var(--lp3-text);
  font-size: 10.5px;
  line-height: 1.35;
  isolation: isolate;
  overflow: hidden;
  padding-top: 30px;  /* room for chrome bar */
}

/* ---- Sidebar ---- */
.landing-shell .lp3-dash-side {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 8px 0;
  background: rgba(0,0,0,.25);
  border-right: 1px solid var(--lp3-border);
  gap: 4px;
}
.landing-shell .lp3-dash-brand {
  width: 26px; height: 26px;
  border-radius: 7px;
  background: var(--lp3-accent);
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 10px;
  font-size: 12px;
  box-shadow: 0 4px 14px -4px var(--lp3-accent-glow);
}
.landing-shell .lp3-dash-side-item {
  width: 28px; height: 28px;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  color: var(--lp3-dim);
  font-size: 13px;
  transition: color .3s ease;
}
.landing-shell .lp3-dash-active-bar {
  position: absolute;
  left: 4px;
  top: 8px;
  width: 2px;
  height: 18px;
  background: var(--lp3-accent);
  border-radius: 2px;
  box-shadow: 0 0 10px 0 var(--lp3-accent-glow);
  animation: lp3-dash-side-bar 30s infinite;
}
@keyframes lp3-dash-side-bar {
  /* brand 26 + mb 10 + offset 5 ≈ 41; each nav item 28 + gap 4 = 32 stride */
  0%,  13%  { transform: translateY(33px); }
  17%, 30%  { transform: translateY(65px); }
  34%, 47%  { transform: translateY(97px); }
  50%, 63%  { transform: translateY(129px); }
  67%, 80%  { transform: translateY(161px); }
  83%, 96%  { transform: translateY(193px); }
  100%      { transform: translateY(33px); }
}
/* Highlight the active nav icon in sync with the bar */
.landing-shell .lp3-dash-side-item[data-step="1"] { animation: lp3-dash-side-1 30s infinite; }
.landing-shell .lp3-dash-side-item[data-step="2"] { animation: lp3-dash-side-2 30s infinite; }
.landing-shell .lp3-dash-side-item[data-step="3"] { animation: lp3-dash-side-3 30s infinite; }
.landing-shell .lp3-dash-side-item[data-step="4"] { animation: lp3-dash-side-4 30s infinite; }
.landing-shell .lp3-dash-side-item[data-step="5"] { animation: lp3-dash-side-5 30s infinite; }
.landing-shell .lp3-dash-side-item[data-step="6"] { animation: lp3-dash-side-6 30s infinite; }
@keyframes lp3-dash-side-1 { 0%,13%,100% { color: var(--lp3-accent); } 17%,96% { color: var(--lp3-dim); } }
@keyframes lp3-dash-side-2 { 0%,13%,100% { color: var(--lp3-dim); } 17%,30% { color: var(--lp3-accent); } 34%,96% { color: var(--lp3-dim); } }
@keyframes lp3-dash-side-3 { 0%,30%,100% { color: var(--lp3-dim); } 34%,47% { color: var(--lp3-accent); } 50%,96% { color: var(--lp3-dim); } }
@keyframes lp3-dash-side-4 { 0%,47%,100% { color: var(--lp3-dim); } 50%,63% { color: var(--lp3-accent); } 67%,96% { color: var(--lp3-dim); } }
@keyframes lp3-dash-side-5 { 0%,63%,100% { color: var(--lp3-dim); } 67%,80% { color: var(--lp3-accent); } 83%,96% { color: var(--lp3-dim); } }
@keyframes lp3-dash-side-6 { 0%,80%,100% { color: var(--lp3-dim); } 83%,96% { color: var(--lp3-accent); } }

/* ---- Top bar ---- */
.landing-shell .lp3-dash-main {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
}
.landing-shell .lp3-dash-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 12px;
  border-bottom: 1px solid var(--lp3-border);
  background: rgba(0,0,0,.15);
  flex-shrink: 0;
  min-height: 28px;
}
.landing-shell .lp3-dash-crumbs { position: relative; height: 14px; min-width: 88px; }
.landing-shell .lp3-dash-crumb {
  position: absolute; inset: 0;
  color: var(--lp3-text);
  font-weight: 600;
  font-size: 11.5px;
  letter-spacing: -0.005em;
  opacity: 0;
}
.landing-shell .lp3-dash-crumb[data-step="1"] { animation: lp3-dash-show-1 30s infinite; }
.landing-shell .lp3-dash-crumb[data-step="2"] { animation: lp3-dash-show-2 30s infinite; }
.landing-shell .lp3-dash-crumb[data-step="3"] { animation: lp3-dash-show-3 30s infinite; }
.landing-shell .lp3-dash-crumb[data-step="4"] { animation: lp3-dash-show-4 30s infinite; }
.landing-shell .lp3-dash-crumb[data-step="5"] { animation: lp3-dash-show-5 30s infinite; }
.landing-shell .lp3-dash-crumb[data-step="6"] { animation: lp3-dash-show-6 30s infinite; }

.landing-shell .lp3-dash-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--lp3-muted);
  font-size: 10.5px;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.landing-shell .lp3-dash-status-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #23a55a;
  box-shadow: 0 0 0 0 rgba(35,165,90,.6);
  animation: lp3-dash-conn-pulse 2.4s ease-in-out infinite;
}
@keyframes lp3-dash-conn-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(35,165,90,.55); }
  50%     { box-shadow: 0 0 0 6px rgba(35,165,90,0); }
}

/* ---- Content area ---- */
.landing-shell .lp3-dash-content {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}
.landing-shell .lp3-dash-screen {
  position: absolute;
  inset: 0;
  padding: 10px 12px;
  opacity: 0;
  transform: translateY(8px);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
/* Show/hide keyframes — 30 s cycle, 6 panels. Each gets a 4 s "on" window + 1 s fade. */
@keyframes lp3-dash-show-1 { 0%   { opacity: 0; transform: translateY(8px); } 3%, 13% { opacity: 1; transform: none; } 17%, 100% { opacity: 0; } }
@keyframes lp3-dash-show-2 { 0%, 13% { opacity: 0; transform: translateY(8px); } 20%, 30% { opacity: 1; transform: none; } 34%, 100% { opacity: 0; } }
@keyframes lp3-dash-show-3 { 0%, 30% { opacity: 0; transform: translateY(8px); } 37%, 47% { opacity: 1; transform: none; } 50%, 100% { opacity: 0; } }
@keyframes lp3-dash-show-4 { 0%, 47% { opacity: 0; transform: translateY(8px); } 53%, 63% { opacity: 1; transform: none; } 67%, 100% { opacity: 0; } }
@keyframes lp3-dash-show-5 { 0%, 63% { opacity: 0; transform: translateY(8px); } 70%, 80% { opacity: 1; transform: none; } 83%, 100% { opacity: 0; } }
@keyframes lp3-dash-show-6 { 0%, 80% { opacity: 0; transform: translateY(8px); } 86%, 96% { opacity: 1; transform: none; } 100% { opacity: 0; } }

.landing-shell .lp3-dash-screen[data-step="1"] { animation: lp3-dash-show-1 30s infinite; }
.landing-shell .lp3-dash-screen[data-step="2"] { animation: lp3-dash-show-2 30s infinite; }
.landing-shell .lp3-dash-screen[data-step="3"] { animation: lp3-dash-show-3 30s infinite; }
.landing-shell .lp3-dash-screen[data-step="4"] { animation: lp3-dash-show-4 30s infinite; }
.landing-shell .lp3-dash-screen[data-step="5"] { animation: lp3-dash-show-5 30s infinite; }
.landing-shell .lp3-dash-screen[data-step="6"] { animation: lp3-dash-show-6 30s infinite; }

/* ---- Generic row card (servers, bans) ---- */
.landing-shell .lp3-dash-card { display: flex; flex-direction: column; gap: 4px; }
.landing-shell .lp3-dash-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--lp3-border);
  border-radius: 6px;
  font-size: 10.5px;
}
.landing-shell .lp3-dash-row strong { color: var(--lp3-text); font-weight: 600; flex-shrink: 0; font-size: 11px; }
.landing-shell .lp3-dash-meta { color: var(--lp3-dim); font-size: 10px; margin-left: auto; font-variant-numeric: tabular-nums; }
.landing-shell .lp3-dash-pill { font-size: 7px; line-height: 1; }
.landing-shell .lp3-pill-on   { color: #23a55a; }
.landing-shell .lp3-pill-off  { color: #6b7593; }
.landing-shell .lp3-pill-warn { color: #ef6f78; }

/* ---- Stat strip (footer of each screen — adds density + visual rhythm) ---- */
.landing-shell .lp3-dash-stats {
  margin-top: auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding-top: 6px;
}
.landing-shell .lp3-dash-stat {
  background: rgba(255,255,255,.02);
  border: 1px solid var(--lp3-border);
  border-radius: 6px;
  padding: 6px 10px;
  display: flex; flex-direction: column; gap: 2px;
}
.landing-shell .lp3-dash-stat-v {
  font-size: 13px;
  font-weight: 700;
  color: var(--lp3-text);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
  display: flex; align-items: baseline; gap: 4px;
}
.landing-shell .lp3-dash-stat-v small { font-size: 9px; font-weight: 600; color: #4ade80; }
.landing-shell .lp3-dash-stat-l {
  color: var(--lp3-dim);
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: .1em;
  font-weight: 700;
}

/* ---- Player table ---- */
.landing-shell .lp3-dash-table {
  display: flex; flex-direction: column;
  border: 1px solid var(--lp3-border);
  border-radius: 8px;
  overflow: hidden;
  background: rgba(255,255,255,.01);
}
.landing-shell .lp3-dash-th,
.landing-shell .lp3-dash-tr {
  display: grid;
  grid-template-columns: 1.6fr 1.3fr .8fr .5fr;
  align-items: center;
  padding: 5px 12px;
  gap: 10px;
  border-bottom: 1px solid var(--lp3-border);
  font-size: 10.5px;
}
.landing-shell .lp3-dash-tr { font-variant-numeric: tabular-nums; }
.landing-shell .lp3-dash-tr:last-child { border-bottom: none; }
.landing-shell .lp3-dash-th {
  color: var(--lp3-dim);
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: .12em;
  font-weight: 700;
  background: rgba(0,0,0,.2);
}
.landing-shell .lp3-dash-pl {
  display: inline-flex; align-items: center; gap: 6px;
  color: var(--lp3-text);
}
.landing-shell .lp3-dash-avatar {
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 8.5px;
  font-weight: 700;
}

/* ---- Detection queue ---- */
.landing-shell .lp3-dash-det { display: flex; flex-direction: column; gap: 4px; }
.landing-shell .lp3-dash-det-row {
  display: grid;
  grid-template-columns: 1.4fr 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 7px 10px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--lp3-border);
  border-left: 2px solid var(--lp3-accent);
  border-radius: 6px;
  font-size: 10.5px;
}
.landing-shell .lp3-dash-det-row strong { display: block; font-size: 11px; }
.landing-shell .lp3-dash-conf {
  display: flex; align-items: center; gap: 6px;
  color: var(--lp3-muted);
  font-feature-settings: "tnum";
  font-size: 10px;
}
.landing-shell .lp3-dash-bar {
  position: relative;
  width: 60px;
  height: 3px;
  background: rgba(255,255,255,.06);
  border-radius: 2px;
  overflow: hidden;
}
.landing-shell .lp3-dash-bar i {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: linear-gradient(90deg, var(--lp3-accent), #8a93f6);
  border-radius: inherit;
  display: block;
}
.landing-shell .lp3-dash-actions { display: flex; gap: 4px; }
.landing-shell .lp3-dash-btn {
  font-size: 9.5px;
  padding: 3px 8px;
  border-radius: 5px;
  border: 1px solid var(--lp3-border-strong);
  color: var(--lp3-muted);
  font-weight: 600;
}
.landing-shell .lp3-dash-btn-y {
  background: var(--lp3-accent);
  border-color: var(--lp3-accent);
  color: #fff;
}

/* ---- Plugins grid ---- */
.landing-shell .lp3-dash-plug-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
.landing-shell .lp3-dash-plug {
  background: rgba(255,255,255,.02);
  border: 1px solid var(--lp3-border);
  border-radius: 8px;
  padding: 8px;
  display: flex; flex-direction: column;
  gap: 2px;
  align-items: flex-start;
}
.landing-shell .lp3-dash-plug-icon {
  width: 22px; height: 22px;
  border-radius: 6px;
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent);
  display: flex; align-items: center; justify-content: center;
  font-size: 10.5px;
  margin-bottom: 4px;
}
.landing-shell .lp3-dash-plug strong { font-size: 10.5px; color: var(--lp3-text); }
.landing-shell .lp3-dash-plug span { font-size: 9px; color: var(--lp3-dim); }
.landing-shell .lp3-dash-pill-installed {
  margin-top: 4px;
  background: rgba(35,165,90,.10);
  border: 1px solid rgba(35,165,90,.30);
  color: #4ade80 !important;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: .04em;
}
.landing-shell .lp3-dash-pill-install {
  margin-top: 4px;
  background: var(--lp3-accent-soft);
  border: 1px solid var(--lp3-accent-glow);
  color: var(--lp3-accent) !important;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: .04em;
}

/* ---- Live map ---- */
.landing-shell .lp3-dash-map {
  width: 100%;
  height: 100%;
  border-radius: 8px;
  border: 1px solid var(--lp3-border);
  display: block;
}
.landing-shell .lp3-dash-map-pulse {
  transform-origin: center;
  transform-box: fill-box;
  animation: lp3-dash-map-pulse 1.6s ease-in-out infinite;
}
@keyframes lp3-dash-map-pulse {
  0%,100% { opacity: .9; r: 4; }
  50%     { opacity: .5; r: 7; }
}

/* ---- Reduced-motion: freeze on first panel ---- */
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp3-dash-active-bar,
  .landing-shell .lp3-dash-side-item,
  .landing-shell .lp3-dash-crumb,
  .landing-shell .lp3-dash-screen,
  .landing-shell .lp3-dash-status-dot,
  .landing-shell .lp3-dash-map-pulse { animation: none !important; }
  .landing-shell .lp3-dash-screen[data-step="1"],
  .landing-shell .lp3-dash-crumb[data-step="1"] { opacity: 1; transform: none; }
  .landing-shell .lp3-dash-side-item[data-step="1"] { color: var(--lp3-accent); }
}

/* On narrower bento cells (<992px main viewport), shrink padding so content still fits. */
@media (max-width: 992px) {
  .landing-shell .lp3-dash-mock { font-size: 10.5px; }
  .landing-shell .lp3-dash-screen { padding: 12px; }
  .landing-shell .lp3-dash-plug-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
}
.landing-shell .lp3-hero-demo-caption {
  color: var(--lp3-dim);
  font-size: 12.5px;
  letter-spacing: .02em;
  text-align: center;
}

/* Soft purple glow that pulses on the demo frame — subtle, accent-only */
.landing-shell .lp3-hero-demo-frame::after {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  pointer-events: none;
  box-shadow: inset 0 0 0 1px var(--lp3-accent-soft);
  opacity: 0;
  transition: opacity .4s ease;
}
.landing-shell .lp3-hero-demo-frame:hover::after { opacity: 1; }

@media (max-width: 992px) {
  .landing-shell .lp3-hero-demo-frame { aspect-ratio: 16 / 10; }
}

/* Bento variant — fills its 8col×2row grid cell instead of using a fixed aspect ratio. */
.landing-shell .lp3-hero-demo--bento {
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 0;
}
.landing-shell .lp3-hero-demo--bento .lp3-hero-demo-frame {
  flex: 1 1 auto;
  aspect-ratio: auto;
  min-height: 0;
  border-radius: 14px;
}
.landing-shell .lp2-cell--hero {
  /* Reset card padding inside the bento — demo frame draws its own chrome. */
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
}
.landing-shell .lp2-cell--hero:hover {
  background: transparent !important;
  border: none !important;
  box-shadow: none;
  transform: none;
}

/* ============================================================================
   LP 4.0 — Linear → next level
   Editorial type, scan-line beam, section number tags, sharper edges,
   geometric hero accent, stat-with-delta. Builds on LP 3.0 not over it.
============================================================================ */

.landing-shell {
  --lp4-accent: #5865f2;
  --lp4-accent-bright: #8a93f6;
  --lp4-grid: rgba(255,255,255,.04);
  --lp4-beam-h: 1px;
}

/* Tighter container, more breathing room */
.landing-shell .container { max-width: 1100px; }
.landing-shell .landing-section { padding-block: clamp(96px, 11vw, 160px); }

/* Editorial type scale */
.landing-shell .hero-copy h1 {
  font-size: clamp(2.8rem, 6.2vw, 5rem);
  letter-spacing: -0.035em;
  font-weight: 800;
  line-height: 1.0;
}
.landing-shell .hero-copy p {
  font-size: clamp(1rem, 1.2vw, 1.15rem);
  line-height: 1.55;
  max-width: 540px;
  color: var(--lp3-muted);
}
.landing-shell .section-heading h2 {
  font-size: clamp(2.2rem, 4.4vw, 3.2rem);
  letter-spacing: -0.028em;
  font-weight: 800;
  line-height: 1.05;
}

/* Section number tags — floating mono "01" / "02" etc. before each H2 */
.landing-shell .section-heading[data-num],
.landing-shell .protection-grid > div[data-num] {
  position: relative;
  padding-top: 24px;
}
.landing-shell .section-heading[data-num]::before,
.landing-shell .protection-grid > div[data-num]::before {
  content: attr(data-num);
  position: absolute;
  top: 0;
  left: 0;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 600;
  color: var(--lp4-accent);
  letter-spacing: .12em;
  opacity: .9;
  padding-left: 22px;
}
.landing-shell .section-heading[data-num]::after,
.landing-shell .protection-grid > div[data-num]::after {
  content: "";
  position: absolute;
  left: 0;
  top: 8px;
  width: 14px;
  height: 1px;
  background: var(--lp4-accent);
  opacity: .7;
}

/* Sharper card edges — radius down */
.landing-shell .feature-card,
.landing-shell .lp2-cell,
.landing-shell .included-cat,
.landing-shell .partner-card,
.landing-shell .evidence-panel {
  border-radius: 10px;
}
.landing-shell .price-card { border-radius: 14px; }

/* Hero — scan-line beam at bottom edge */
.landing-shell .landing-hero {
  position: relative;
  padding-bottom: 60px;
}
.landing-shell .landing-hero .lp4-beam {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: var(--lp4-beam-h);
  background: linear-gradient(90deg, transparent, var(--lp4-grid) 20%, var(--lp4-grid) 80%, transparent);
  overflow: hidden;
  pointer-events: none;
  z-index: 1;
}
.landing-shell .landing-hero .lp4-beam::after {
  content: "";
  position: absolute;
  inset: 0;
  left: -360px;
  width: 360px;
  background: linear-gradient(90deg, transparent, var(--lp4-accent-bright), var(--lp4-accent), transparent);
  filter: drop-shadow(0 0 6px var(--lp4-accent));
  animation: lp4-beam 8s ease-in-out infinite;
}
@keyframes lp4-beam {
  0%   { transform: translateX(0); opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { transform: translateX(calc(100vw + 360px)); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .landing-hero .lp4-beam::after { animation: none; opacity: 0; }
}

/* Animated geometric mark next to hero eyebrow — orbiting dot ring */
.landing-shell .lp4-orbit {
  position: relative;
  width: 18px;
  height: 18px;
  display: inline-block;
  vertical-align: middle;
  margin-right: 10px;
}
.landing-shell .lp4-orbit::before,
.landing-shell .lp4-orbit::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1px solid var(--lp4-accent);
  opacity: .25;
}
.landing-shell .lp4-orbit::after {
  inset: 4px;
  opacity: .5;
  animation: lp4-orbit-spin 4s linear infinite;
  border: 1px dashed var(--lp4-accent);
}
.landing-shell .lp4-orbit-dot {
  position: absolute;
  top: 1px;
  left: 50%;
  width: 4px;
  height: 4px;
  margin-left: -2px;
  border-radius: 50%;
  background: var(--lp4-accent);
  box-shadow: 0 0 8px var(--lp4-accent);
  transform-origin: 50% 8px;
  animation: lp4-orbit-spin 3s linear infinite;
}
@keyframes lp4-orbit-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp4-orbit::after,
  .landing-shell .lp4-orbit-dot { animation: none; }
}

/* Hero eyebrow upgrade — uses orbit instead of the dot */
.landing-shell .hero-copy .eyebrow {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: 11px;
  font-weight: 600;
  color: var(--lp4-accent);
  display: inline-flex;
  align-items: center;
  margin-bottom: 22px;
}
.landing-shell .hero-copy .eyebrow::before { content: none; }   /* kill the old solid dot */

/* Stat-with-delta — "528 +18 this hour" */
.landing-shell .lp4-delta {
  color: #4ade80;
  font-size: .55em;
  font-weight: 600;
  margin-left: 4px;
  letter-spacing: 0;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  vertical-align: middle;
}
.landing-shell .lp4-delta::before {
  content: "▲";
  font-size: .8em;
}

/* Hero metrics — slightly larger, mono numerals */
.landing-shell .hero-metrics {
  gap: 40px;
  margin-top: 44px;
  padding-top: 26px;
  border-top: 1px solid var(--lp3-border);
}
.landing-shell .hero-metrics strong {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-feature-settings: "tnum";
  font-size: clamp(1.7rem, 2.6vw, 2.1rem);
  font-weight: 700;
  letter-spacing: -0.015em;
}
.landing-shell .hero-metrics span {
  font-size: 10.5px;
  letter-spacing: .14em;
}

/* Brighter section dividers — bigger sweep */
.landing-shell .lp3-divider { height: 1px; }
.landing-shell .lp3-divider::after {
  width: 320px;
  background: linear-gradient(90deg, transparent, var(--lp4-accent-bright), var(--lp4-accent), transparent);
  filter: drop-shadow(0 0 6px var(--lp4-accent));
  animation-duration: 9s;
}

/* Buttons — sharper, with subtle accent */
.landing-shell .btn-primary {
  border-radius: 8px;
  letter-spacing: -0.005em;
  font-weight: 600;
  padding: 12px 20px;
  position: relative;
  overflow: hidden;
}
.landing-shell .btn-primary::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent);
  transform: translateX(-100%);
  transition: transform .6s ease;
}
.landing-shell .btn-primary:hover::after { transform: translateX(100%); }

.landing-shell .btn-outline-light {
  border-radius: 8px;
  font-weight: 600;
  padding: 12px 20px;
}

/* Pricing — sharper, but featured card keeps its accent border */
.landing-shell .price-card { border-radius: 14px; }
.landing-shell .price-card.featured {
  background:
    linear-gradient(180deg, rgba(88,101,242,.08), transparent 50%),
    var(--lp3-surface);
}

/* Bento grid — sharper gap, slightly tighter rows */
.landing-shell .lp2-bento { gap: 14px; }

/* Make sure cell--hero respects new shorter floor */
.lp2-bento .lp2-cell--hero { min-height: 240px; }

/* Mono accents in topbar */
.landing-shell .lp3-dash-status {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 9.5px;
  letter-spacing: .14em;
}

/* Hero copy — better left/right balance */
.landing-shell .hero-grid {
  align-items: center;
  gap: clamp(40px, 6vw, 80px);
}

/* (Sticky nav consolidated to the single rule above — no duplicate scrolled-state.) */

/* Footer monospace tagline */
.landing-shell .landing-footer .text-muted.small {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 10.5px;
  letter-spacing: .08em;
}

/* Smaller protection-grid header hierarchy to match new editorial scale */
.landing-shell .protection-grid h2 {
  font-size: clamp(2rem, 4vw, 2.6rem);
  letter-spacing: -0.025em;
  font-weight: 800;
}

/* Hero demo frame border — finer */
.landing-shell .lp3-hero-demo-frame {
  border-radius: 12px;
  border-color: rgba(255,255,255,.08);
}

/* Pricing ribbon — sharper edges */
.landing-shell .price-card-ribbon { border-radius: 6px; }

/* Mobile cleanup — collapse fancy spacing */
@media (max-width: 768px) {
  .landing-shell .section-heading { padding-top: 30px; }
  .landing-shell .landing-section { padding-block: 64px; }
  .landing-shell .hero-metrics { gap: 24px; margin-top: 28px; padding-top: 20px; }
}

/* LP 4.0 — flex column so admin-defined section order (via CSS `order: N`) takes effect */
.landing-shell .lp4-main {
  display: flex;
  flex-direction: column;
}
.landing-shell .lp4-main > [data-section],
.landing-shell .lp4-main > .lp3-divider { /* keep dividers near their section */ }

/* ============================================================================
   LP 5.0 — Complete landing rebuild
   Futuristic, sleek, eye-catching while staying professional.
   Layered hero with constellation + mouse-glow, glassmorphic cards with
   backdrop-blur, perspective depth on key elements, fresh sections.
============================================================================ */

.landing-shell {
  --lp5-mouse-x: 50%;
  --lp5-mouse-y: 30%;
  --lp5-card-bg: rgba(255,255,255,.025);
  --lp5-card-border: rgba(255,255,255,.07);
  --lp5-card-border-hi: rgba(88,101,242,.45);
  --lp5-glow: rgba(88,101,242,.35);
}

/* ===================== HERO ===================== */
.landing-shell .landing-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 92vh;
  padding-top: 60px;
  padding-bottom: 100px;
  background: radial-gradient(ellipse 100% 80% at 50% -20%, rgba(88,101,242,.12), transparent 60%), #07090f;
}
/* Layer 1 — fine architectural grid */
.landing-shell .landing-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px) 0 0 / 56px 56px,
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px) 0 0 / 56px 56px;
  mask-image: radial-gradient(ellipse 80% 70% at 50% 30%, #000 30%, transparent 90%);
  -webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 30%, #000 30%, transparent 90%);
  pointer-events: none;
  z-index: 0;
  animation: lp5-grid-drift 60s linear infinite;
  filter: none;
}
@keyframes lp5-grid-drift {
  to { transform: translate(56px, 56px); }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .landing-hero::before { animation: none; }
}
/* Layer 2 — mouse-tracking radial glow */
.landing-shell .landing-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(
    600px circle at var(--lp5-mouse-x) var(--lp5-mouse-y),
    rgba(88,101,242,.18),
    transparent 50%
  );
  pointer-events: none;
  z-index: 0;
  transition: background .15s ease;
}

/* Constellation (SVG dots + lines via pure CSS pseudo) — subtle drifting layer */
.landing-shell .lp5-constellation {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: .55;
}
.landing-shell .lp5-constellation circle {
  fill: rgba(255,255,255,.6);
  animation: lp5-twinkle 6s ease-in-out infinite;
}
.landing-shell .lp5-constellation circle:nth-child(2n)  { animation-delay: 1.2s; }
.landing-shell .lp5-constellation circle:nth-child(3n)  { animation-delay: 2.4s; }
.landing-shell .lp5-constellation circle:nth-child(5n)  { animation-delay: 3.6s; }
.landing-shell .lp5-constellation line {
  stroke: rgba(255,255,255,.08);
  stroke-width: .5;
}
@keyframes lp5-twinkle {
  0%,100% { opacity: 0.35; }
  50%     { opacity: 0.95; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp5-constellation circle { animation: none; }
}

/* Hero grid — taller, more dramatic asymmetry */
.landing-shell .landing-hero .container {
  position: relative;
  z-index: 1;
}
.landing-shell .hero-grid {
  align-items: center;
  gap: clamp(40px, 5vw, 80px);
  padding-top: clamp(40px, 8vw, 100px);
}
.landing-shell .hero-copy h1 {
  font-size: clamp(2.8rem, 6.5vw, 5.5rem);
  letter-spacing: -0.04em;
  font-weight: 800;
  line-height: 0.98;
  background: linear-gradient(180deg, #ffffff 30%, #8b93ad 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.landing-shell .hero-copy h1 + p {
  font-size: clamp(1.05rem, 1.3vw, 1.2rem);
  line-height: 1.55;
  color: #a0aac8;
  max-width: 540px;
  margin-top: 22px;
}

/* Right-side composition — perspective tilt + floating cards */
.landing-shell .lp3-hero-demo {
  position: relative;
  perspective: 1400px;
}
.landing-shell .lp3-hero-demo-frame {
  transform: rotateY(-8deg) rotateX(4deg);
  transform-origin: center center;
  transition: transform .8s cubic-bezier(.2,.8,.2,1);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.06),
    0 50px 100px -30px rgba(0,0,0,.9),
    0 -20px 60px -20px rgba(88,101,242,.2);
}
.landing-shell .lp3-hero-demo:hover .lp3-hero-demo-frame {
  transform: rotateY(-4deg) rotateX(2deg);
}
@media (max-width: 992px) {
  .landing-shell .lp3-hero-demo-frame { transform: none; }
  .landing-shell .lp3-hero-demo:hover .lp3-hero-demo-frame { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp3-hero-demo-frame { transform: none; }
}

/* Floating accent cards orbiting the demo */
.landing-shell .lp5-float-card {
  position: absolute;
  background: rgba(20,24,40,.72);
  border: 1px solid rgba(255,255,255,.10);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border-radius: 12px;
  padding: 12px 14px;
  z-index: 2;
  box-shadow: 0 20px 60px -20px rgba(0,0,0,.8);
  animation: lp5-float 5s ease-in-out infinite;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: #e7eaf3;
  min-width: 140px;
}
.landing-shell .lp5-float-card--a {
  top: 8%;
  left: -8%;
  animation-delay: 0s;
}
.landing-shell .lp5-float-card--b {
  bottom: 12%;
  right: -6%;
  animation-delay: 2.5s;
}
.landing-shell .lp5-float-icon {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: rgba(88,101,242,.18);
  border: 1px solid rgba(88,101,242,.4);
  color: #8a93f6;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}
.landing-shell .lp5-float-card strong {
  display: block;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  font-feature-settings: "tnum";
}
.landing-shell .lp5-float-card span {
  color: #8b93ad;
  font-size: 10.5px;
  letter-spacing: .04em;
}
@keyframes lp5-float {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-12px); }
}
@media (max-width: 992px) {
  .landing-shell .lp5-float-card { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp5-float-card { animation: none; }
}

/* Hero CTA — pump up the primary */
.landing-shell .hero-copy .btn-primary {
  font-size: 15px;
  padding: 14px 24px;
  background: linear-gradient(180deg, #6b76f4, #5865f2);
  border: 1px solid rgba(255,255,255,.15);
  box-shadow:
    0 10px 30px -10px rgba(88,101,242,.6),
    inset 0 1px 0 rgba(255,255,255,.2);
  position: relative;
}
.landing-shell .hero-copy .btn-primary:hover {
  transform: translateY(-2px);
  box-shadow:
    0 14px 40px -10px rgba(88,101,242,.8),
    inset 0 1px 0 rgba(255,255,255,.25);
}
.landing-shell .hero-copy .btn-outline-light {
  font-size: 15px;
  padding: 14px 24px;
  background: rgba(255,255,255,.025);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

/* ===================== TRUSTED BY MARQUEE ===================== */
.landing-shell .lp5-trusted {
  position: relative;
  padding: 48px 0 56px;
  border-top: 1px solid rgba(255,255,255,.05);
  border-bottom: 1px solid rgba(255,255,255,.05);
  background: rgba(255,255,255,.01);
}
.landing-shell .lp5-trusted-label {
  text-align: center;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--lp3-dim);
  margin-bottom: 28px;
}
.landing-shell .lp5-trusted-track-wrap {
  overflow: hidden;
  mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.landing-shell .lp5-trusted-track {
  display: flex;
  gap: 14px;
  width: max-content;
  animation: lp5-trusted-scroll 55s linear infinite;
}
.landing-shell .lp5-trusted:hover .lp5-trusted-track { animation-play-state: paused; }
.landing-shell .lp5-trusted-item {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 18px;
  background: rgba(255,255,255,.025);
  border: 1px solid var(--lp5-card-border);
  border-radius: 10px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  white-space: nowrap;
  flex-shrink: 0;
}
.landing-shell .lp5-trusted-item-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 0 0 rgba(74,222,128,.5);
  animation: lp5-pulse-green 2.4s ease-in-out infinite;
}
.landing-shell .lp5-trusted-item strong {
  color: var(--lp3-text);
  font-weight: 600;
  font-size: 13px;
}
.landing-shell .lp5-trusted-item span {
  color: var(--lp3-dim);
  font-size: 11.5px;
  font-family: "JetBrains Mono", ui-monospace, monospace;
}
@keyframes lp5-trusted-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@keyframes lp5-pulse-green {
  0%,100% { box-shadow: 0 0 0 0 rgba(74,222,128,.5); }
  50%     { box-shadow: 0 0 0 6px rgba(74,222,128,0); }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp5-trusted-track { animation: none; }
  .landing-shell .lp5-trusted-item-dot { animation: none; }
}

/* ===================== HOW IT WORKS ===================== */
.landing-shell .lp5-how {
  padding: clamp(100px, 11vw, 160px) 0;
}
.landing-shell .lp5-how-head {
  text-align: center;
  margin-bottom: 64px;
}
.landing-shell .lp5-how-eyebrow {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lp3-accent);
  display: inline-block;
  margin-bottom: 14px;
}
.landing-shell .lp5-how-title {
  font-size: clamp(2rem, 4vw, 3rem);
  letter-spacing: -0.028em;
  font-weight: 800;
  color: var(--lp3-text);
  line-height: 1.05;
  background: linear-gradient(180deg, #ffffff, #8b93ad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.landing-shell .lp5-how-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 24px;
  position: relative;
}
@media (max-width: 900px) {
  .landing-shell .lp5-how-grid { grid-template-columns: 1fr; gap: 16px; }
}
.landing-shell .lp5-how-card {
  position: relative;
  background: var(--lp5-card-bg);
  border: 1px solid var(--lp5-card-border);
  border-radius: 14px;
  padding: 32px 28px;
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  transition: border-color .3s ease, transform .3s ease;
}
.landing-shell .lp5-how-card:hover {
  border-color: var(--lp5-card-border-hi);
  transform: translateY(-4px);
}
.landing-shell .lp5-how-num {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .14em;
  color: var(--lp3-accent);
  margin-bottom: 18px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.landing-shell .lp5-how-num::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, var(--lp3-accent), transparent);
  opacity: .4;
}
.landing-shell .lp5-how-icon {
  width: 48px; height: 48px;
  border-radius: 12px;
  background: rgba(88,101,242,.12);
  border: 1px solid rgba(88,101,242,.32);
  color: var(--lp3-accent);
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
  margin-bottom: 20px;
}
.landing-shell .lp5-how-card h3 {
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--lp3-text);
  margin-bottom: 10px;
}
.landing-shell .lp5-how-card p {
  color: var(--lp3-muted);
  font-size: .95rem;
  line-height: 1.55;
  margin: 0;
}
/* Connector arrows between the 3 cards (desktop only) */
@media (min-width: 901px) {
  .landing-shell .lp5-how-card:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 50%;
    right: -16px;
    width: 8px;
    height: 8px;
    border-top: 1px solid var(--lp3-accent);
    border-right: 1px solid var(--lp3-accent);
    transform: translateY(-50%) rotate(45deg);
    z-index: 1;
    opacity: .6;
  }
}

/* ===================== GLASSMORPHIC CARDS (override) ===================== */
.landing-shell .feature-card,
.landing-shell .lp2-cell,
.landing-shell .price-card,
.landing-shell .evidence-panel,
.landing-shell .included-cat,
.landing-shell .partner-card {
  background: var(--lp5-card-bg);
  border-color: var(--lp5-card-border);
  backdrop-filter: blur(12px) saturate(140%);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
}
.landing-shell .feature-card:hover,
.landing-shell .lp2-cell:hover,
.landing-shell .included-cat:hover {
  border-color: var(--lp5-card-border-hi);
  background: rgba(255,255,255,.04);
  box-shadow: 0 0 0 1px rgba(88,101,242,.15), 0 30px 80px -30px rgba(0,0,0,.7);
}

/* Featured pricing card — 3D float + accent glow */
.landing-shell .price-card.featured {
  transform: translateY(-12px) scale(1.02);
  border-color: rgba(88,101,242,.55);
  background: linear-gradient(180deg, rgba(88,101,242,.08), rgba(88,101,242,.02) 60%), var(--lp5-card-bg);
  box-shadow:
    0 0 0 1px rgba(88,101,242,.4),
    0 40px 100px -30px rgba(88,101,242,.35),
    0 -10px 40px -10px rgba(88,101,242,.2);
}
@media (max-width: 768px) {
  .landing-shell .price-card.featured { transform: none; }
}

/* ===================== CLOSING CTA — bigger, more dramatic ===================== */
.landing-shell .final-cta {
  position: relative;
  isolation: isolate;
  padding: clamp(120px, 14vw, 180px) 0;
  text-align: center;
  background:
    radial-gradient(ellipse 60% 80% at 50% 50%, rgba(88,101,242,.15), transparent 70%),
    transparent;
}
.landing-shell .final-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px) 0 0 / 56px 56px,
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px) 0 0 / 56px 56px;
  mask-image: radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 90%);
  -webkit-mask-image: radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 90%);
  pointer-events: none;
  z-index: -1;
  display: block;
  animation: none;
  filter: none;
  opacity: 1;
}
.landing-shell .final-cta h2 {
  font-size: clamp(2.6rem, 5.5vw, 4.2rem);
  letter-spacing: -0.03em;
  font-weight: 800;
  background: linear-gradient(180deg, #ffffff, #8b93ad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.landing-shell .final-cta p {
  font-size: 1.1rem;
  margin: 18px auto 32px;
}
.landing-shell .final-cta .btn-primary {
  font-size: 16px;
  padding: 16px 32px;
  background: linear-gradient(180deg, #6b76f4, #5865f2);
  box-shadow:
    0 14px 40px -10px rgba(88,101,242,.7),
    inset 0 1px 0 rgba(255,255,255,.2);
}

/* Reveal pop — slightly stronger for LP 5.0 */
.landing-shell [data-lp2-reveal] {
  transform: translateY(32px);
}
.landing-shell [data-lp2-reveal].is-in {
  transform: none;
}

/* ============================================================================
   LP 5.1 — Cleanup pass
   - Strip gradient text everywhere (solid white reads better)
   - H1 sized so headlines don't break word-by-word
   - Kill the dramatic min-height on the hero
   - Genuinely reduce bento + marketplace heights
   - Fix partner Get-Hosted button color clash
   - Tone down closing-CTA pyrotechnics
============================================================================ */

/* --- Readable type, no gradient on headlines --- */
.landing-shell .hero-copy h1 {
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.025em;
  font-weight: 700;
  line-height: 1.1;
  background: none;
  -webkit-text-fill-color: var(--lp3-text);
  color: var(--lp3-text);
  max-width: 560px;
}
.landing-shell .hero-copy h1 + p {
  font-size: 1rem;
  max-width: 520px;
  margin-top: 18px;
}
.landing-shell .lp5-how-title,
.landing-shell .final-cta h2 {
  background: none;
  -webkit-text-fill-color: var(--lp3-text);
  color: var(--lp3-text);
}
.landing-shell .lp5-how-title {
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.02em;
}
.landing-shell .final-cta h2 {
  font-size: clamp(1.8rem, 3.6vw, 2.6rem);
  font-weight: 700;
  letter-spacing: -0.02em;
}
.landing-shell .section-heading h2,
.landing-shell .protection-grid h2 {
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* --- Hero sizing: no more 92vh, sensible padding --- */
.landing-shell .landing-hero {
  min-height: 0;
  padding-top: 40px;
  padding-bottom: 70px;
}
.landing-shell .hero-grid { padding-top: 0; }

/* --- Bento + marketplace: HARD-CAP cell heights so the marquee can't push them tall --- */
.lp2-bento { grid-auto-rows: minmax(100px, auto) !important; align-items: stretch; }
.lp2-bento .lp2-cell--hero,
.lp2-bento .lp2-cell--tall {
  height: 450px !important;
  max-height: 450px !important;
  min-height: 0 !important;
  overflow: hidden !important;
}
.landing-shell .lp3-hero-demo,
.landing-shell .lp3-hero-demo--bento { height: 100% !important; }
.landing-shell .lp3-hero-demo--bento .lp3-hero-demo-frame {
  min-height: 0 !important;
  height: 100% !important;
  flex: 1 1 auto !important;
}
.landing-shell .feature-card.feature-card--marquee {
  padding: 18px !important;
  display: flex !important;
  flex-direction: column !important;
}
.lp2-marquee {
  min-height: 0 !important;
  max-height: 100% !important;
  flex: 1 1 auto !important;
  overflow: hidden !important;
}
.landing-shell .lp2-marquee-track { animation-duration: 80s; }
.landing-shell .lp2-marquee-item { padding: 5px 10px 5px 22px; font-size: 11.5px; }
.landing-shell .lp2-marquee-item::before { left: 8px; width: 4px; height: 4px; }

/* Mobile: let them stack and breathe a bit */
@media (max-width: 992px) {
  .lp2-bento .lp2-cell--hero,
  .lp2-bento .lp2-cell--tall { height: 320px !important; max-height: 320px !important; }
}

/* Dashboard mock — tighter again */
.landing-shell .lp3-dash-mock { font-size: 10px; padding-top: 40px; }
.landing-shell .lp3-dash-topbar { min-height: 24px; padding: 4px 10px; }
.landing-shell .lp3-dash-screen { padding: 8px 10px; gap: 6px; }
.landing-shell .lp3-dash-row { padding: 4px 9px; }
.landing-shell .lp3-dash-side { padding: 6px 0; }
.landing-shell .lp3-dash-brand { width: 22px; height: 22px; font-size: 10px; margin-bottom: 8px; }
.landing-shell .lp3-dash-side-item { width: 24px; height: 24px; font-size: 12px; }
.landing-shell .lp3-dash-stats { padding-top: 4px; gap: 4px; }
.landing-shell .lp3-dash-stat { padding: 4px 8px; }
.landing-shell .lp3-dash-stat-v { font-size: 11.5px; }

/* --- Partner CTA + glow: Volt Hosting gold (#ffc600) theming (AA11.3) --- */
.landing-shell .partner-card {
  background:
    radial-gradient(ellipse 80% 60% at 0% 50%, rgba(255,198,0,.12), transparent 70%),
    radial-gradient(ellipse 80% 60% at 100% 50%, rgba(255,198,0,.08), transparent 70%),
    var(--lp5-card-bg);
  border: 1px solid rgba(255,198,0,.35);
  box-shadow: 0 0 0 1px rgba(255,198,0,.14), 0 18px 48px -20px rgba(255,198,0,.4);
}
.landing-shell .partner-card:hover {
  border-color: rgba(255,198,0,.6);
  box-shadow: 0 0 0 1px rgba(255,198,0,.28), 0 24px 64px -20px rgba(255,198,0,.5);
}
.landing-shell .partner-cta {
  color: #1a1300;
  background: linear-gradient(135deg, #ffc600, #d99d00);
  border: 1px solid rgba(255,198,0,.65);
  padding: 9px 18px;
  border-radius: 8px;
  font-weight: 700;
  font-size: 13px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-shadow: 0 6px 18px -6px rgba(255,198,0,.55), inset 0 1px 0 rgba(255,255,255,.25);
}
.landing-shell .partner-card:hover .partner-cta {
  background: linear-gradient(135deg, #ffd633, #e6aa1a);
  transform: translateY(-1px);
}
.landing-shell .partner-promo {
  background: rgba(255,198,0,.10);
  border: 1px dashed rgba(255,198,0,.5);
  color: #ffe27a;
}
.landing-shell .partner-promo strong,
.landing-shell .partner-promo code { color: #fff2b3; }

/* --- Closing CTA: drop the dramatic grid + radial behind --- */
.landing-shell .final-cta {
  padding: clamp(72px, 9vw, 110px) 0;
  background: transparent;
}
.landing-shell .final-cta::before { display: none; }
.landing-shell .final-cta .btn-primary {
  font-size: 15px;
  padding: 12px 22px;
  box-shadow: 0 8px 24px -10px rgba(88,101,242,.6), inset 0 1px 0 rgba(255,255,255,.18);
}

/* --- Hero buttons: calmer --- */
.landing-shell .hero-copy .btn-primary {
  font-size: 14px;
  padding: 11px 20px;
  background: var(--lp3-accent);
  box-shadow: 0 8px 22px -10px rgba(88,101,242,.55), inset 0 1px 0 rgba(255,255,255,.16);
}
.landing-shell .hero-copy .btn-primary:hover {
  background: var(--lp3-accent-hi);
  transform: translateY(-1px);
}
.landing-shell .hero-copy .btn-outline-light {
  font-size: 14px;
  padding: 11px 20px;
}

/* --- Trusted strip: tighter --- */
.landing-shell .lp5-trusted { padding: 32px 0 36px; }
.landing-shell .lp5-trusted-label { margin-bottom: 20px; }
.landing-shell .lp5-trusted-item { padding: 9px 14px; }

/* --- How it works: lighter --- */
.landing-shell .lp5-how { padding: clamp(72px, 9vw, 120px) 0; }
.landing-shell .lp5-how-head { margin-bottom: 40px; }
.landing-shell .lp5-how-card { padding: 24px 22px; }
.landing-shell .lp5-how-icon { width: 40px; height: 40px; font-size: 18px; margin-bottom: 16px; }
.landing-shell .lp5-how-card h3 { font-size: 1.15rem; }
.landing-shell .lp5-how-card p { font-size: .9rem; }

/* --- Reveal: less dramatic --- */
.landing-shell [data-lp2-reveal] { transform: translateY(16px); }

/* --- Featured pricing card: less aggressive 3D float --- */
.landing-shell .price-card.featured {
  transform: translateY(-6px);
  box-shadow:
    0 0 0 1px rgba(88,101,242,.35),
    0 25px 60px -25px rgba(88,101,242,.25);
}

/* --- Section heading: tone down the number tag presence --- */
.landing-shell .section-heading[data-num]::before,
.landing-shell .protection-grid > div[data-num]::before {
  font-size: 10px;
  opacity: .6;
}

/* ============================================================================
   LP 5.2 — Animated mesh gradient hero (Stripe/Vercel signature)
   Four large soft color blobs drifting independently behind the hero.
   Looks expensive, premium, modern. Sits behind everything.
============================================================================ */

/* Override the existing pseudo-element backgrounds — we'll draw the mesh with real divs */
.landing-shell .landing-hero {
  background: #050710;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.landing-shell .landing-hero::before {
  /* Keep a very subtle grid for structure, behind the mesh */
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 64px 64px,
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 64px 64px;
  mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000 30%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000 30%, transparent 80%);
  z-index: 0;
  pointer-events: none;
  animation: none;
  filter: none;
}
.landing-shell .landing-hero::after { display: none; }

/* The mesh layer */
.landing-shell .lp52-mesh {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.landing-shell .lp52-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  opacity: .55;
  will-change: transform;
}
.landing-shell .lp52-blob--1 {
  width: 620px;
  height: 620px;
  left: -180px;
  top: -120px;
  background: radial-gradient(circle, #5865f2 0%, transparent 70%);
  animation: lp52-drift-1 28s ease-in-out infinite;
}
.landing-shell .lp52-blob--2 {
  width: 540px;
  height: 540px;
  right: -120px;
  top: 20%;
  background: radial-gradient(circle, #7c4dff 0%, transparent 70%);
  opacity: .45;
  animation: lp52-drift-2 36s ease-in-out infinite;
}
.landing-shell .lp52-blob--3 {
  width: 480px;
  height: 480px;
  left: 30%;
  bottom: -180px;
  background: radial-gradient(circle, #00d9ff 0%, transparent 70%);
  opacity: .25;
  animation: lp52-drift-3 32s ease-in-out infinite;
}
.landing-shell .lp52-blob--4 {
  width: 380px;
  height: 380px;
  right: 25%;
  bottom: -100px;
  background: radial-gradient(circle, #f0479c 0%, transparent 70%);
  opacity: .18;
  animation: lp52-drift-4 40s ease-in-out infinite;
}

@keyframes lp52-drift-1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33%      { transform: translate(80px, 60px) scale(1.1); }
  66%      { transform: translate(40px, 100px) scale(.95); }
}
@keyframes lp52-drift-2 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50%      { transform: translate(-100px, 80px) scale(1.15); }
}
@keyframes lp52-drift-3 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  40%      { transform: translate(60px, -80px) scale(1.1); }
  80%      { transform: translate(-80px, -40px) scale(.9); }
}
@keyframes lp52-drift-4 {
  0%, 100% { transform: translate(0, 0); }
  50%      { transform: translate(70px, -60px); }
}

/* Make sure mesh sits behind content but above the grid base */
.landing-shell .landing-hero .container { position: relative; z-index: 2; }

@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp52-blob { animation: none !important; }
}

/* ============================================================================
   LP 5.2 — H1 word-by-word reveal on load
   Single-hit on page load, words fade up in sequence. Polished, not infinite.
============================================================================ */
.landing-shell .lp52-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(12px);
  animation: lp52-word-in .7s cubic-bezier(.2,.8,.2,1) forwards;
}
@keyframes lp52-word-in {
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp52-word { opacity: 1; transform: none; animation: none; }
}

/* ============================================================================
   LP 5.3 — Tactical topo-map hero (gaming aesthetic)
   Animated topographic contour lines + radar blips + scan sweep + corner HUD
   ticks. Looks like a Rust/Tarkov/Squad tactical overlay. Replaces the mesh.
============================================================================ */

/* Hide the LP 5.2 mesh blobs — we're using the topo effect now */
.landing-shell .lp52-mesh { display: none; }

.landing-shell .landing-hero {
  background: #050710;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.landing-shell .landing-hero::before { display: none; }
.landing-shell .landing-hero::after  { display: none; }

.landing-shell .lp53-tac {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}

/* Topo SVG fills the layer */
.landing-shell .lp53-topo {
  position: absolute;
  inset: -5% -2%;
  width: 104%;
  height: 110%;
  opacity: .9;
}
.landing-shell .lp53-topo > g:first-of-type {
  animation: lp53-topo-drift 45s ease-in-out infinite alternate;
}
@keyframes lp53-topo-drift {
  0%   { transform: translate(0, 0); opacity: .5; }
  100% { transform: translate(20px, -10px); opacity: .95; }
}

/* The "pulse" accent line that travels through the topo */
.landing-shell .lp53-pulse-line {
  stroke-dasharray: 280 1300;
  stroke-dashoffset: 1580;
  animation: lp53-pulse-line 6s ease-in-out infinite;
}
@keyframes lp53-pulse-line {
  0%   { stroke-dashoffset: 1580; opacity: 0; }
  20%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { stroke-dashoffset: -300; opacity: 0; }
}

/* Hex accents at intersection points — slow pulse */
.landing-shell .lp53-topo > g:nth-of-type(3) polygon {
  animation: lp53-hex-pulse 4s ease-in-out infinite;
  transform-origin: center;
  transform-box: fill-box;
}
.landing-shell .lp53-topo > g:nth-of-type(3) polygon:nth-child(2) { animation-delay: 1.4s; }
.landing-shell .lp53-topo > g:nth-of-type(3) polygon:nth-child(3) { animation-delay: 2.8s; }
@keyframes lp53-hex-pulse {
  0%, 100% { opacity: .4; }
  50%      { opacity: 1; filter: drop-shadow(0 0 6px #5865f2); }
}

/* Radar blips — small dots with expanding pulse rings */
.landing-shell .lp53-blip {
  position: absolute;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #5865f2;
  box-shadow:
    0 0 0 0 rgba(88,101,242,.55),
    0 0 12px #5865f2;
  animation: lp53-blip 5.5s ease-out infinite;
}
@keyframes lp53-blip {
  0% {
    box-shadow:
      0 0 0 0 rgba(88,101,242,.65),
      0 0 12px #5865f2;
  }
  60% {
    box-shadow:
      0 0 0 24px rgba(88,101,242,0),
      0 0 12px #5865f2;
  }
  100% {
    box-shadow:
      0 0 0 0 rgba(88,101,242,0),
      0 0 12px #5865f2;
  }
}

/* Horizontal scan sweep — single thin line crosses every 12s */
.landing-shell .lp53-scan {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    transparent 0%,
    transparent calc(50% - 1px),
    rgba(88,101,242,.55) 50%,
    transparent calc(50% + 1px),
    transparent 100%
  );
  height: 100%;
  transform: translateY(-100%);
  animation: lp53-scan 14s linear infinite;
  filter: drop-shadow(0 0 6px rgba(88,101,242,.6));
  opacity: .7;
}
@keyframes lp53-scan {
  0%   { transform: translateY(-100%); }
  100% { transform: translateY(100%); }
}

/* Soft ambient glow behind everything */
.landing-shell .lp53-glow {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 50% at 50% 30%, rgba(88,101,242,.18), transparent 70%),
    radial-gradient(ellipse 50% 60% at 80% 80%, rgba(124,77,255,.10), transparent 70%),
    radial-gradient(ellipse 40% 50% at 15% 75%, rgba(0,217,255,.06), transparent 70%);
  pointer-events: none;
}

/* Corner HUD ticks — L-shaped brackets in each corner */
.landing-shell .lp53-tick {
  position: absolute;
  width: 18px;
  height: 18px;
  pointer-events: none;
}
.landing-shell .lp53-tick--tl { top: 18px; left: 18px;   border-top:    1px solid rgba(88,101,242,.45); border-left:  1px solid rgba(88,101,242,.45); }
.landing-shell .lp53-tick--tr { top: 18px; right: 18px;  border-top:    1px solid rgba(88,101,242,.45); border-right: 1px solid rgba(88,101,242,.45); }
.landing-shell .lp53-tick--bl { bottom: 18px; left: 18px;  border-bottom: 1px solid rgba(88,101,242,.45); border-left:  1px solid rgba(88,101,242,.45); }
.landing-shell .lp53-tick--br { bottom: 18px; right: 18px; border-bottom: 1px solid rgba(88,101,242,.45); border-right: 1px solid rgba(88,101,242,.45); }

@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp53-topo > g:first-of-type,
  .landing-shell .lp53-pulse-line,
  .landing-shell .lp53-topo > g:nth-of-type(3) polygon,
  .landing-shell .lp53-blip,
  .landing-shell .lp53-scan { animation: none; }
  .landing-shell .lp53-scan { display: none; }
}

/* ============================================================================
   LP 5.4 — Card spotlight + pricing overhaul
   - Cursor-tracking radial glow on every card (Linear/Vercel signature)
   - Animated border accent on hover
   - Pricing card rebuilt for proper breathing room
============================================================================ */

/* Cursor-tracking spotlight — JS updates --lp54-mx/my on each card on mousemove */
.landing-shell .feature-card,
.landing-shell .lp2-cell,
.landing-shell .price-card,
.landing-shell .included-cat,
.landing-shell .lp5-how-card,
.landing-shell .evidence-panel,
.landing-shell .partner-card {
  position: relative;
  overflow: hidden;
  --lp54-mx: 50%;
  --lp54-my: 50%;
}
.landing-shell .feature-card::before,
.landing-shell .lp2-cell::before,
.landing-shell .price-card::before,
.landing-shell .included-cat::before,
.landing-shell .lp5-how-card::before,
.landing-shell .evidence-panel::before,
.landing-shell .partner-card::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(
    320px circle at var(--lp54-mx) var(--lp54-my),
    rgba(88,101,242,.16),
    transparent 60%
  );
  opacity: 0;
  transition: opacity .25s ease;
  pointer-events: none;
  z-index: 0;
}
.landing-shell .feature-card:hover::before,
.landing-shell .lp2-cell:hover::before,
.landing-shell .price-card:hover::before,
.landing-shell .included-cat:hover::before,
.landing-shell .lp5-how-card:hover::before,
.landing-shell .evidence-panel:hover::before,
.landing-shell .partner-card:hover::before {
  opacity: 1;
}
/* Make sure card content sits above the spotlight layer */
.landing-shell .feature-card > *,
.landing-shell .lp2-cell > *,
.landing-shell .price-card > *,
.landing-shell .included-cat > *,
.landing-shell .lp5-how-card > *,
.landing-shell .evidence-panel > *,
.landing-shell .partner-card > * { position: relative; z-index: 1; }

/* Animated top-edge accent — a thin hairline that fades in on hover */
.landing-shell .feature-card::after,
.landing-shell .lp2-cell::after,
.landing-shell .price-card::after,
.landing-shell .lp5-how-card::after {
  content: "";
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(88,101,242,.7), transparent);
  opacity: 0;
  transition: opacity .3s ease, left .4s ease, right .4s ease;
  pointer-events: none;
  z-index: 1;
}
.landing-shell .feature-card:hover::after,
.landing-shell .lp2-cell:hover::after,
.landing-shell .price-card:hover::after,
.landing-shell .lp5-how-card:hover::after {
  opacity: 1;
  left: 0;
  right: 0;
}

/* ============================================================================
   Pricing card overhaul — proper breathing room, cleaner hierarchy
============================================================================ */
.landing-shell .pricing-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  align-items: stretch;
}
.landing-shell .price-card {
  padding: 36px 32px 32px;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.landing-shell .price-card-ribbon {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--lp3-accent);
  color: #fff;
  font-size: 10.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 999px;
  box-shadow: 0 10px 24px -10px rgba(88,101,242,.7);
  z-index: 5;
}

/* Head — name + description */
.landing-shell .price-card-head { margin-bottom: 28px; }
.landing-shell .price-card-head h3 {
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--lp3-muted);
  text-transform: uppercase;
  letter-spacing: .12em;
  margin: 0 0 8px;
}
.landing-shell .price-card-head p {
  font-size: .88rem;
  color: var(--lp3-dim);
  line-height: 1.45;
  margin: 0;
  min-height: 2.6em;     /* keeps cards aligned even if descriptions differ in length */
}

/* SERVER COUNT — the visual hero of the card. Give it real space. */
.landing-shell .price-server-hero {
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 20px 0;
  margin-bottom: 24px;
  border-top: 1px solid var(--lp3-border);
  border-bottom: 1px solid var(--lp3-border);
}
.landing-shell .price-server-count {
  font-size: clamp(3rem, 5vw, 4.4rem);
  letter-spacing: -0.045em;
  font-weight: 800;
  line-height: 0.9;
  background: linear-gradient(180deg, #ffffff 30%, #6b7593 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  display: inline-block;
}
.landing-shell .price-server-label {
  color: var(--lp3-muted);
  font-size: .82rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: 600;
  line-height: 1.3;
  max-width: 110px;
}

/* PRICE — clean horizontal layout */
.landing-shell .price-headline {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-bottom: 4px;
}
.landing-shell .price-amount {
  font-size: 2.2rem;
  font-weight: 800;
  letter-spacing: -0.025em;
  color: var(--lp3-text);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.landing-shell .price-suffix {
  color: var(--lp3-muted);
  font-size: .9rem;
  font-weight: 500;
  letter-spacing: -0.005em;
}
.landing-shell .price-cycle-note {
  color: var(--lp3-dim);
  font-size: .78rem;
  letter-spacing: .02em;
  margin-bottom: 16px;
  min-height: 1.2em;
}

/* Savings badge — sits inline, not stacked */
.landing-shell .price-savings-badge {
  align-self: flex-start;
  display: none;
  background: rgba(35,165,90,.10);
  border: 1px solid rgba(35,165,90,.30);
  color: #4ade80;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .04em;
  padding: 4px 10px;
  border-radius: 999px;
  margin-bottom: 16px;
}
.landing-shell .price-savings-badge.is-visible { display: inline-flex; align-items: center; }

/* Divider */
.landing-shell .price-divider {
  height: 1px;
  background: var(--lp3-border);
  margin: 20px 0;
}

/* Included block */
.landing-shell .price-included-block { margin-bottom: 24px; }
.landing-shell .price-included-title {
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--lp3-text);
  margin-bottom: 6px;
}
.landing-shell .price-included-note {
  font-size: .78rem;
  color: var(--lp3-dim);
  line-height: 1.45;
  margin: 0;
}

/* CTA — pushed to the bottom */
.landing-shell .price-cta {
  margin-top: auto;
  font-size: 14px;
  padding: 12px 20px;
  border-radius: 10px;
  font-weight: 600;
}
.landing-shell .price-card .price-cta.btn-primary {
  background: var(--lp3-accent);
  box-shadow: 0 10px 24px -10px rgba(88,101,242,.55), inset 0 1px 0 rgba(255,255,255,.18);
}

/* Featured card — bigger emphasis, animated bottom border accent */
.landing-shell .price-card.featured {
  background:
    linear-gradient(180deg, rgba(88,101,242,.08), rgba(88,101,242,.02) 50%),
    var(--lp5-card-bg);
  border: 1px solid rgba(88,101,242,.4);
  box-shadow:
    0 0 0 1px rgba(88,101,242,.35),
    0 30px 80px -30px rgba(88,101,242,.3);
}
.landing-shell .price-card.featured::after {
  /* Override the LP 5.4 default ::after — featured gets a brighter, always-visible accent */
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 5%, var(--lp3-accent) 50%, transparent 95%);
  opacity: 1;
  filter: drop-shadow(0 0 6px var(--lp3-accent));
}

@media (max-width: 768px) {
  .landing-shell .price-card { padding: 28px 24px; }
  .landing-shell .price-server-count { font-size: clamp(2.6rem, 14vw, 3.6rem); }
}

/* ============================================================================
   LP 5.5 — Pricing card cleanup
   - Strip the box-framed look around server count
   - Drop the bordered "Everything included" block — plain text only
   - Center-align everything
   - Fix the MOST POPULAR ribbon (was being clipped by overflow:hidden)
   - Make featured card subtle, not loud
============================================================================ */

/* The cards keep their spotlight ::before but no longer clip overflow,
   so the ribbon can sit above the card edge. Spotlight gradient stays bounded
   inside its own positioning. */
.landing-shell .price-card {
  overflow: visible !important;
  padding: 40px 28px 28px;
  text-align: center;
  display: flex;
  flex-direction: column;
}
.landing-shell .price-card::before {
  /* Round the spotlight overlay so it doesn't bleed past the card corners */
  overflow: hidden;
  clip-path: inset(0 round inherit);
}

/* Head — name pill + description, centered */
.landing-shell .price-card-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin-bottom: 20px;
}
.landing-shell .price-card-head h3 {
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lp3-muted);
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.landing-shell .price-card-head h3 .badge {
  font-size: .55rem !important;
  letter-spacing: .1em;
}
.landing-shell .price-card-head p {
  font-size: .85rem;
  color: var(--lp3-dim);
  margin: 0;
  max-width: 240px;
  line-height: 1.45;
  min-height: 2.5em;
}

/* Server-count hero — NO BORDERS, no box. Just a big centered number. */
.landing-shell .price-server-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 8px 0 4px;
  margin-bottom: 18px;
  border: none !important;
  background: none !important;
}
.landing-shell .price-server-count {
  font-size: clamp(3.6rem, 6vw, 5.2rem);
  letter-spacing: -0.05em;
  font-weight: 800;
  line-height: 0.95;
  background: linear-gradient(180deg, #ffffff 30%, #6b7593 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
}
.landing-shell .price-server-label {
  color: var(--lp3-muted);
  font-size: .72rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-weight: 700;
  max-width: none !important;
  white-space: nowrap;
}

/* Price — centered, baseline-aligned, no card-divider above */
.landing-shell .price-headline {
  display: inline-flex;
  align-items: baseline;
  justify-content: center;
  gap: 4px;
  margin: 0 0 4px;
}
.landing-shell .price-amount {
  font-size: 1.9rem;
  font-weight: 800;
  letter-spacing: -0.025em;
  color: var(--lp3-text);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.landing-shell .price-suffix {
  color: var(--lp3-muted);
  font-size: .85rem;
  font-weight: 500;
}
.landing-shell .price-cycle-note {
  color: var(--lp3-dim);
  font-size: .78rem;
  margin: 0 0 18px;
  min-height: 1.1em;
}

/* Save badge — centered */
.landing-shell .price-savings-badge {
  align-self: center !important;
  margin: 0 auto 18px !important;
}

/* Divider — single hairline. */
.landing-shell .price-divider {
  height: 1px;
  background: var(--lp3-border);
  margin: 4px 0 18px;
}

/* "Everything included" — plain text, no box */
.landing-shell .price-included-block {
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 0 24px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: center;
}
.landing-shell .price-included-title {
  font-size: .82rem;
  font-weight: 600;
  color: var(--lp3-text);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.landing-shell .price-included-title i { color: #4ade80; }
.landing-shell .price-included-note {
  font-size: .75rem;
  color: var(--lp3-dim);
  line-height: 1.45;
  max-width: 220px;
}

/* CTA pinned bottom */
.landing-shell .price-cta {
  margin-top: auto;
  font-size: 14px;
  padding: 12px 20px;
  border-radius: 10px;
  font-weight: 600;
  width: 100%;
}

/* Featured card — subtle, not loud. Just a tint + accent border + top pulse. */
.landing-shell .price-card.featured {
  border-color: rgba(88,101,242,.45);
  background:
    linear-gradient(180deg, rgba(88,101,242,.06), transparent 50%),
    var(--lp5-card-bg);
  box-shadow:
    0 0 0 1px rgba(88,101,242,.35),
    0 20px 60px -20px rgba(88,101,242,.22);
  transform: none;       /* drop the LP 5.0 push-up — keeps row aligned */
}
.landing-shell .price-card.featured::after {
  /* Always-visible top accent on featured (overrides the LP 5.4 hover line) */
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 5%, var(--lp3-accent) 50%, transparent 95%);
  opacity: 1;
  filter: drop-shadow(0 0 8px var(--lp3-accent));
  z-index: 2;
}

/* Ribbon — properly above the card now that overflow is visible */
.landing-shell .price-card-ribbon {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--lp3-accent);
  color: #fff;
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 999px;
  white-space: nowrap;
  box-shadow:
    0 8px 24px -8px rgba(88,101,242,.7),
    inset 0 1px 0 rgba(255,255,255,.25);
  z-index: 10;
}

/* Pricing-grid: keep auto-fit but with sensible min */
.landing-shell .pricing-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
  align-items: stretch;
  padding-top: 16px;   /* room for the ribbon to peek above the featured card */
}

/* Interval toggle — cleaner pills */
.landing-shell .price-interval-toggle {
  background: rgba(255,255,255,.025);
  border: 1px solid var(--lp3-border);
  color: var(--lp3-muted);
  font-weight: 600;
  font-size: 13px;
  padding: 8px 16px;
}
.landing-shell .price-interval-toggle.active {
  background: var(--lp3-accent-soft);
  border-color: var(--lp3-accent);
  color: #fff;
}

/* ============================================================================
   Community / mini-forum
============================================================================ */
.dmw-community-tabs {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  padding: 6px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft);
  border-radius: 12px;
}
.dmw-comm-tab {
  padding: 8px 14px;
  border-radius: 8px;
  color: var(--ew-muted, #a0aac8);
  font-weight: 500;
  font-size: 13.5px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  transition: background .18s ease, color .18s ease;
}
.dmw-comm-tab:hover { background: rgba(255,255,255,.04); color: var(--ew-text, #e7eaf3); text-decoration: none; }
.dmw-comm-tab.is-active {
  background: rgba(88,101,242,.16);
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(88,101,242,.35);
}

.dmw-community-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dmw-comm-row {
  display: flex;
  gap: 14px;
  padding: 14px 16px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft);
  border-radius: 12px;
  transition: border-color .2s ease, background .2s ease, transform .15s ease;
}
.dmw-comm-row:hover {
  border-color: rgba(88,101,242,.35);
  background: rgba(255,255,255,.035);
}
.dmw-comm-row--clickable { cursor: pointer; }
.dmw-comm-row--clickable:hover { transform: translateY(-1px); box-shadow: 0 4px 18px -8px rgba(88,101,242,.45); }
.dmw-comm-row--clickable:focus-visible {
  outline: 2px solid rgba(88,101,242,.6);
  outline-offset: 2px;
}

/* Forum avatars (tile, post header, replies). */
.dmw-comm-avatar {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  object-fit: cover;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.08);
}
.dmw-comm-avatar--lg { width: 56px; height: 56px; }
.dmw-comm-avatar--init {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
  color: #c8d0e8;
  text-transform: uppercase;
  background: linear-gradient(135deg, rgba(88,101,242,.35), rgba(0,217,255,.18));
}
.dmw-comm-avatar--lg.dmw-comm-avatar--init { font-size: 20px; }
.dmw-comm-author-link { line-height: 0; align-self: center; flex-shrink: 0; }
.dmw-comm-author {
  display: flex; gap: 12px; align-items: center;
}
.dmw-comm-author-info { display: flex; flex-direction: column; }
.dmw-comm-author-name { font-weight: 700; color: var(--ew-text, #e7eaf3); }
.dmw-comm-author-meta { color: var(--ew-muted, #a0aac8); font-size: 12px; }
.dmw-comm-reply-head {
  display: flex; gap: 12px; align-items: center; margin-bottom: 10px;
}
.dmw-comm-reply-meta { display: flex; gap: 8px; align-items: center; }

/* Rich-text rendering inside posts/replies. */
.dmw-comm-content { line-height: 1.6; }
.dmw-comm-content h2,
.dmw-comm-content h3,
.dmw-comm-content h4 { margin: 18px 0 8px; font-weight: 700; }
.dmw-comm-content p { margin: 0 0 10px; }
.dmw-comm-content ul, .dmw-comm-content ol { padding-left: 22px; margin: 0 0 10px; }
.dmw-comm-content blockquote {
  margin: 10px 0;
  padding: 6px 14px;
  border-left: 3px solid rgba(88,101,242,.55);
  background: rgba(88,101,242,.06);
  color: var(--ew-muted, #a0aac8);
  border-radius: 0 6px 6px 0;
}
.dmw-comm-content code {
  background: rgba(255,255,255,.06);
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 0.92em;
}
.dmw-comm-content pre {
  background: rgba(0,0,0,.4);
  padding: 12px 14px;
  border-radius: 8px;
  overflow-x: auto;
  border: 1px solid rgba(255,255,255,.06);
}
.dmw-comm-content pre code { background: transparent; padding: 0; }
.dmw-comm-content a { color: #62e0ff; text-decoration: underline; }

/* X-phase: Quill 2 snow-theme dark-mode adaptation. Replaces the old .ck-* block. */
.dmw-rich-quill { min-height: 200px; }
/* AA1-v2: hide the textarea off-screen (NOT display:none) when Quill mounts so
   it remains a real form control — submitted normally, focusable for browser
   form validation, and reachable by the form's submit/formdata sync. */
.dmw-rich-shadowed {
  position: absolute !important;
  left: -10000px !important;
  top: auto !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  opacity: 0 !important;
}
.ql-snow.ql-toolbar {
  background: rgba(255,255,255,.04);
  border-color: var(--ew-border-soft, rgba(255,255,255,.08)) !important;
  border-top-left-radius: 8px;
  border-top-right-radius: 8px;
  padding: 6px 8px;
}
.ql-snow .ql-stroke { stroke: var(--ew-text, #e7eaf3) !important; }
.ql-snow .ql-fill { fill: var(--ew-text, #e7eaf3) !important; }
.ql-snow .ql-picker { color: var(--ew-text, #e7eaf3) !important; }
.ql-snow .ql-picker-options {
  background: var(--ew-panel, #0e1320) !important;
  border-color: var(--ew-border-soft, rgba(255,255,255,.08)) !important;
  color: var(--ew-text, #e7eaf3);
}
.ql-snow.ql-toolbar button:hover,
.ql-snow.ql-toolbar button.ql-active,
.ql-snow.ql-toolbar .ql-picker-label:hover,
.ql-snow.ql-toolbar .ql-picker-label.ql-active {
  background: rgba(88,101,242,.18) !important;
  color: #62e0ff !important;
}
.ql-snow.ql-toolbar button:hover .ql-stroke,
.ql-snow.ql-toolbar button.ql-active .ql-stroke {
  stroke: #62e0ff !important;
}
.ql-snow.ql-toolbar button:hover .ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-fill {
  fill: #62e0ff !important;
}
.ql-container.ql-snow {
  background: rgba(0,0,0,.25);
  border-color: var(--ew-border-soft, rgba(255,255,255,.08)) !important;
  border-bottom-left-radius: 8px;
  border-bottom-right-radius: 8px;
  font-size: 14px;
  color: var(--ew-text, #e7eaf3);
  font-family: inherit;
}
.ql-editor {
  min-height: 200px;
  color: var(--ew-text, #e7eaf3);
}
.ql-editor.ql-blank::before {
  color: var(--ew-muted, #a0aac8) !important;
  font-style: normal;
}
.ql-editor a { color: #62e0ff; }
.ql-editor img { max-width: 100%; border-radius: 8px; margin: 6px 0; }
.ql-editor blockquote {
  border-left: 3px solid rgba(98,224,255,.5);
  background: rgba(98,224,255,.06);
  padding: 6px 12px;
  margin: 8px 0;
  color: var(--ew-muted, #a0aac8);
  border-radius: 0 6px 6px 0;
}
.ql-editor pre.ql-syntax {
  background: rgba(0,0,0,.55) !important;
  color: var(--ew-text, #e7eaf3);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 8px;
  padding: 12px 14px;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 13px;
  overflow-x: auto;
}
.ql-snow .ql-tooltip {
  background: var(--ew-panel, #0e1320) !important;
  border-color: var(--ew-border-soft, rgba(255,255,255,.08)) !important;
  color: var(--ew-text, #e7eaf3) !important;
  box-shadow: 0 12px 40px rgba(0,0,0,.45);
}
.ql-snow .ql-tooltip input[type=text] {
  background: rgba(0,0,0,.3);
  border-color: var(--ew-border-soft, rgba(255,255,255,.08));
  color: var(--ew-text, #e7eaf3);
  border-radius: 4px;
}
.ql-snow .ql-tooltip a.ql-action,
.ql-snow .ql-tooltip a.ql-remove { color: #62e0ff !important; }
/* quill-mention dropdown dark-mode */
.ql-mention-list-container {
  background: var(--ew-panel, #0e1320) !important;
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.08)) !important;
  box-shadow: 0 12px 40px rgba(0,0,0,.55);
  border-radius: 8px;
  z-index: 9999;
}
.ql-mention-list { padding: 4px; }
.ql-mention-list-item {
  padding: 6px 10px;
  color: var(--ew-text, #e7eaf3);
  border-radius: 6px;
  display: flex; align-items: center; gap: 8px;
  cursor: pointer;
}
.ql-mention-list-item.selected,
.ql-mention-list-item:hover {
  background: rgba(88,101,242,.18);
}
.ql-mention-list-item .dmw-mention-item-avatar {
  width: 22px; height: 22px; border-radius: 50%; object-fit: cover;
}
.ql-snow .ql-mention-denotation-char,
.dmw-comm-content .mention,
.dmw-comm-content span.mention {
  background: rgba(98,224,255,.12);
  color: #62e0ff;
  border-radius: 4px;
  padding: 1px 5px;
  font-weight: 600;
  text-decoration: none;
}
.dmw-comm-row.is-pinned {
  background: linear-gradient(180deg, rgba(240,178,50,.05), transparent 80%), rgba(255,255,255,.02);
  border-color: rgba(240,178,50,.28);
}
.dmw-comm-vote-form { flex-shrink: 0; }
.dmw-comm-vote {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  width: 56px;
  padding: 10px 0;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft);
  border-radius: 10px;
  color: var(--ew-muted, #a0aac8);
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  font-size: 13px;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.dmw-comm-vote i { font-size: 18px; line-height: 1; }
.dmw-comm-vote:hover {
  background: rgba(88,101,242,.1);
  border-color: rgba(88,101,242,.35);
  color: var(--ew-text, #e7eaf3);
}
.dmw-comm-vote.is-on {
  background: rgba(88,101,242,.18);
  border-color: rgba(88,101,242,.5);
  color: #fff;
}
.dmw-comm-vote--lg { width: 72px; padding: 14px 0; font-size: 16px; }
.dmw-comm-vote--lg i { font-size: 24px; }

.dmw-comm-body {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.dmw-comm-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 12px;
}
.dmw-comm-cat {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border-radius: 999px;
  font-weight: 600;
  font-size: 11px;
  background: rgba(255,255,255,.04);
  border: 1px solid var(--ew-border-soft);
  color: var(--ew-muted, #a0aac8);
}
.dmw-comm-cat[data-cat="announcements"] { background: rgba(0,217,255,.10); border-color: rgba(0,217,255,.35); color: #7fe5ff; }
.dmw-comm-cat[data-cat="roadmap"]       { background: rgba(124,77,255,.10); border-color: rgba(124,77,255,.35); color: #b39bff; }
.dmw-comm-cat[data-cat="ideas"]         { background: rgba(240,178,50,.10); border-color: rgba(240,178,50,.35); color: #f0c060; }
.dmw-comm-cat[data-cat="discussion"]    { background: rgba(88,101,242,.10); border-color: rgba(88,101,242,.35); color: #8a93f6; }

.dmw-comm-status {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 10.5px;
  letter-spacing: .06em;
  text-transform: uppercase;
  background: color-mix(in srgb, var(--c) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--c) 40%, transparent);
  color: var(--c);
}
@supports not (background: color-mix(in srgb, red 50%, blue)) {
  .dmw-comm-status {
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.18);
    color: #e7eaf3;
  }
}

.dmw-comm-title {
  font-size: 15.5px;
  font-weight: 600;
  color: var(--ew-text, #e7eaf3);
  text-decoration: none;
  line-height: 1.35;
  letter-spacing: -0.005em;
}
.dmw-comm-title:hover { color: #8a93f6; text-decoration: none; }

.dmw-comm-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  font-size: 12px;
  color: var(--ew-muted, #a0aac8);
}
.dmw-comm-dot { color: var(--ew-border-soft); margin: 0 2px; }

.dmw-comm-post {
  padding: 24px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft);
  border-radius: 14px;
}
.dmw-comm-content {
  color: var(--ew-text, #e7eaf3);
  font-size: 14.5px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-wrap: break-word;
}

.dmw-comm-replies {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dmw-comm-reply {
  padding: 14px 18px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft);
  border-radius: 10px;
}
.dmw-comm-reply .dmw-comm-meta {
  display: flex;
  align-items: center;
  width: 100%;
}

/* ============================================================================
   Dashboard mock — realistic product-screenshot polish (Servers screen)
   Real page header, action buttons, data table with status pills + progress
   bars. Replaces the basic row layout.
============================================================================ */
.landing-shell .lp3-dash-screen .dash-page-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--lp3-border);
  gap: 12px;
}
.landing-shell .lp3-dash-screen .dash-page-head h3 {
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--lp3-text);
  margin: 0;
  line-height: 1.2;
}
.landing-shell .lp3-dash-screen .dash-page-head p {
  font-size: 10px;
  color: var(--lp3-dim);
  margin: 2px 0 0;
  letter-spacing: .02em;
}
.landing-shell .dash-page-actions {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.landing-shell .dash-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  height: 22px;
  padding: 0 8px;
  border-radius: 6px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0;
  white-space: nowrap;
}
.landing-shell .dash-btn--ghost {
  width: 22px;
  padding: 0;
  background: rgba(255,255,255,.04);
  border: 1px solid var(--lp3-border);
  color: var(--lp3-muted);
  font-size: 11px;
}
.landing-shell .dash-btn--primary {
  background: var(--lp3-accent);
  border: 1px solid var(--lp3-accent);
  color: #fff;
  box-shadow: 0 2px 8px -2px rgba(88,101,242,.45), inset 0 1px 0 rgba(255,255,255,.18);
  padding: 0 10px;
}
.landing-shell .dash-btn--primary i { font-size: 9.5px; }

/* Data table */
.landing-shell .dash-table {
  display: flex;
  flex-direction: column;
  margin-top: 4px;
  border: 1px solid var(--lp3-border);
  border-radius: 8px;
  overflow: hidden;
  background: rgba(255,255,255,.01);
}
.landing-shell .dash-thead,
.landing-shell .dash-tr {
  display: grid;
  grid-template-columns: 2.2fr 1fr 1.8fr .5fr;
  align-items: center;
  gap: 10px;
  padding: 6px 10px;
  border-bottom: 1px solid var(--lp3-border);
  font-size: 10.5px;
}
.landing-shell .dash-tr:last-child { border-bottom: none; }
.landing-shell .dash-thead {
  background: rgba(0,0,0,.25);
  color: var(--lp3-dim);
  font-size: 8.5px;
  text-transform: uppercase;
  letter-spacing: .14em;
  font-weight: 700;
}

.landing-shell .dash-srv strong {
  display: block;
  color: var(--lp3-text);
  font-weight: 600;
  font-size: 10.5px;
  line-height: 1.25;
}
.landing-shell .dash-srv span {
  display: block;
  color: var(--lp3-dim);
  font-size: 9px;
  margin-top: 1px;
}

.landing-shell .dash-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 600;
  width: fit-content;
}
.landing-shell .dash-pill .dot {
  width: 5px; height: 5px; border-radius: 50%;
}
.landing-shell .dash-pill--ok {
  background: rgba(35,165,90,.10);
  color: #4ade80;
  border: 1px solid rgba(35,165,90,.30);
}
.landing-shell .dash-pill--ok .dot {
  background: #4ade80;
  box-shadow: 0 0 0 0 rgba(74,222,128,.5);
  animation: lp53-blip-mini 2.4s ease-in-out infinite;
}
.landing-shell .dash-pill--off {
  background: rgba(107,117,147,.10);
  color: #8b93ad;
  border: 1px solid rgba(107,117,147,.30);
}
.landing-shell .dash-pill--off .dot { background: #6b7593; }
@keyframes lp53-blip-mini {
  0%,100% { box-shadow: 0 0 0 0 rgba(74,222,128,.55); }
  50%     { box-shadow: 0 0 0 4px rgba(74,222,128,0); }
}

.landing-shell .dash-meter {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.landing-shell .dash-meter > span {
  font-size: 10px;
  color: var(--lp3-text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  letter-spacing: -0.005em;
}
.landing-shell .dash-meter .bar {
  height: 3px;
  background: rgba(255,255,255,.06);
  border-radius: 2px;
  overflow: hidden;
}
.landing-shell .dash-meter .bar i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--lp3-accent), #8a93f6);
  border-radius: inherit;
}

.landing-shell .dash-num {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  font-weight: 700;
  color: var(--lp3-text);
  font-size: 12px;
  text-align: right;
  letter-spacing: -0.01em;
}

/* ============================================================================
   Multi-game support — game picker tiles + per-row game badges
============================================================================ */
.dmw-game-picker {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 6px;
  border-radius: 12px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
}
.dmw-game-tile {
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  border-radius: 9px;
  padding: 10px 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: var(--ew-text, #e7eaf3);
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
  position: relative;
  min-height: 78px;
  font-family: inherit;
}
.dmw-game-tile:hover {
  border-color: rgba(88,101,242,.4);
  background: rgba(255,255,255,.035);
}
.dmw-game-tile.is-active {
  border-color: rgba(88,101,242,.7);
  background: rgba(88,101,242,.10);
  box-shadow: inset 0 0 0 1px rgba(88,101,242,.5);
}
.dmw-game-tile.is-flash {
  animation: dmw-game-flash .5s ease;
}
@keyframes dmw-game-flash {
  0%   { background: rgba(240,178,50,.18); }
  100% { background: rgba(255,255,255,.02); }
}
.dmw-game-tile.is-soon {
  cursor: not-allowed;
  opacity: .68;
}
.dmw-game-tile.is-soon:hover { border-color: var(--ew-border-soft, rgba(255,255,255,.06)); transform: none; }
.dmw-game-tile-icon {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
}
.dmw-game-tile-name {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
}
.dmw-game-tile-soon {
  position: absolute;
  top: 4px;
  right: 6px;
  font-size: 8px;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--ew-muted, #a0aac8);
  background: rgba(255,255,255,.05);
  border-radius: 4px;
  padding: 1px 5px;
}

/* The "pick a game" empty hint area inside the form */
.dmw-game-fields-empty { margin: 0; }

/* Per-row game badge in the Connected Servers table */
.dmw-game-badge {
  width: 32px; height: 32px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  border: 1px solid;
  flex-shrink: 0;
}

/* ============================================================================
   LP 5.6 — Supported games section (landing page, between hero and trusted-by)
============================================================================ */
.landing-shell .lp56-games {
  padding: clamp(60px, 7vw, 100px) 0 clamp(40px, 5vw, 70px);
  border-top: 1px solid var(--lp3-border);
}
.landing-shell .lp56-games-head {
  text-align: center;
  max-width: 700px;
  margin: 0 auto clamp(32px, 4vw, 56px);
}
.landing-shell .lp56-games-eyebrow {
  display: inline-block;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lp3-accent);
  margin-bottom: 14px;
}
.landing-shell .lp56-games-title {
  font-size: clamp(1.8rem, 3.6vw, 2.6rem);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.1;
  color: var(--lp3-text);
  margin: 0 0 14px;
}
.landing-shell .lp56-games-sub {
  color: var(--lp3-muted);
  font-size: 1rem;
  line-height: 1.55;
  margin: 0;
}

.landing-shell .lp56-games-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

.landing-shell .lp56-game {
  position: relative;
  background: var(--lp5-card-bg);
  border: 1px solid var(--lp5-card-border);
  border-radius: 14px;
  padding: 22px 20px;
  backdrop-filter: blur(12px) saturate(140%);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
  display: flex;
  flex-direction: column;
  transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease;
  overflow: hidden;
}
.landing-shell .lp56-game::before {
  /* Subtle top-edge accent in the game's brand color */
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 10%, var(--g) 50%, transparent 90%);
  opacity: .55;
  pointer-events: none;
}
.landing-shell .lp56-game.is-live:hover {
  border-color: color-mix(in srgb, var(--g) 45%, transparent);
  transform: translateY(-3px);
  box-shadow: 0 24px 60px -28px color-mix(in srgb, var(--g) 50%, transparent);
}
@supports not (background: color-mix(in srgb, red 50%, blue)) {
  .landing-shell .lp56-game.is-live:hover { border-color: var(--lp5-card-border-hi); }
}
.landing-shell .lp56-game.is-soon {
  opacity: .68;
}

.landing-shell .lp56-game-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
}
.landing-shell .lp56-game-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 19px;
  background: color-mix(in srgb, var(--g) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--g) 35%, transparent);
  color: var(--g);
}
@supports not (background: color-mix(in srgb, red 50%, blue)) {
  .landing-shell .lp56-game-icon {
    background: rgba(88,101,242,.12);
    border-color: rgba(88,101,242,.35);
    color: var(--lp3-accent);
  }
}

.landing-shell .lp56-game-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.landing-shell .lp56-game-badge--live {
  background: rgba(35,165,90,.10);
  border: 1px solid rgba(35,165,90,.35);
  color: #4ade80;
}
.landing-shell .lp56-game-badge--live .dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 0 0 rgba(74,222,128,.55);
  animation: lp56-pulse 2.4s ease-in-out infinite;
}
@keyframes lp56-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(74,222,128,.55); }
  50%     { box-shadow: 0 0 0 5px rgba(74,222,128,0); }
}
.landing-shell .lp56-game-badge--soon {
  background: rgba(255,255,255,.04);
  border: 1px solid var(--lp3-border-strong);
  color: var(--lp3-muted);
}

.landing-shell .lp56-game-name {
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--lp3-text);
  margin: 0 0 8px;
}
.landing-shell .lp56-game-tag {
  color: var(--lp3-muted);
  font-size: .88rem;
  line-height: 1.5;
  margin: 0 0 16px;
  flex: 1 1 auto;
}

.landing-shell .lp56-game-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--g);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  margin-top: auto;
}
.landing-shell .lp56-game-cta i {
  transition: transform .2s ease;
}
.landing-shell .lp56-game-cta:hover {
  color: var(--g);
  text-decoration: none;
}
.landing-shell .lp56-game-cta:hover i {
  transform: translateX(3px);
}

@media (prefers-reduced-motion: reduce) {
  .landing-shell .lp56-game-badge--live .dot { animation: none; }
  .landing-shell .lp56-game.is-live:hover { transform: none; }
}

/* ============================================================================
   Smart sidebar — active-server picker pill (sits at the top of the sidebar,
   above the nav). Shows the active server's game icon + name + status, with a
   dropdown to switch servers. Collapsed-sidebar mode hides the text.
============================================================================ */
.dmw-active-server {
  margin: 8px 14px 14px;
}
.dmw-active-server-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 10px;
  background: rgba(255,255,255,.025);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  color: var(--ew-text, #e7eaf3);
  text-decoration: none;
  transition: background .18s ease, border-color .18s ease;
  min-width: 0;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
}
.dmw-active-server-btn:hover {
  background: rgba(255,255,255,.04);
  border-color: rgba(88,101,242,.35);
  color: var(--ew-text, #e7eaf3);
  text-decoration: none;
}
.dmw-active-server-btn.dmw-active-server-empty {
  border-style: dashed;
  background: rgba(255,255,255,.015);
}
.dmw-active-server-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  border: 1px solid;
  background: rgba(88,101,242,.18);
  color: var(--ew-primary, #5865f2);
  border-color: rgba(88,101,242,.4);
}
.dmw-active-server-info {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-width: 0;
  gap: 1px;
}
.dmw-active-server-name {
  font-weight: 600;
  font-size: 12.5px;
  line-height: 1.2;
  color: var(--ew-text, #e7eaf3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dmw-active-server-meta {
  font-size: 10px;
  color: var(--ew-muted, #a0aac8);
  letter-spacing: .04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dmw-active-server-caret {
  font-size: 11px;
  color: var(--ew-muted, #a0aac8);
  flex-shrink: 0;
}

/* Collapsed sidebar: hide the text + caret, keep just the icon centered */
html.sidebar-collapsed .dmw-active-server { margin: 8px 8px 12px; }
html.sidebar-collapsed .dmw-active-server-btn {
  justify-content: center;
  padding: 8px 6px;
  gap: 0;
}
html.sidebar-collapsed .dmw-active-server-info,
html.sidebar-collapsed .dmw-active-server-caret { display: none; }
html.sidebar-collapsed .dmw-active-server-icon { width: 32px; height: 32px; }

/* Nav-section heading style override — keep consistent when "Server" section heads up */
.nav-section { /* no change — defined elsewhere */ }

/* ============================================================================
   LP 5.7 — Roadmap / "What's shipping next" section (landing page)
============================================================================ */
.landing-shell .lp57-roadmap {
  padding: clamp(60px, 7vw, 100px) 0;
  border-top: 1px solid var(--lp3-border);
}
.landing-shell .lp57-roadmap-head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto clamp(36px, 4vw, 56px);
}
.landing-shell .lp57-roadmap-eyebrow {
  display: inline-block;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lp3-accent);
  margin-bottom: 14px;
}
.landing-shell .lp57-roadmap-title {
  font-size: clamp(1.7rem, 3.4vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.1;
  color: var(--lp3-text);
  margin: 0 0 14px;
}
.landing-shell .lp57-roadmap-sub {
  color: var(--lp3-muted);
  font-size: 1rem;
  line-height: 1.55;
  margin: 0;
}
.landing-shell .lp57-roadmap-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
}
.landing-shell .lp57-rm {
  background: var(--lp5-card-bg);
  border: 1px solid var(--lp5-card-border);
  border-radius: 14px;
  padding: 22px 22px 20px;
  backdrop-filter: blur(12px) saturate(140%);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
  transition: border-color .25s ease, transform .25s ease;
}
.landing-shell .lp57-rm:hover {
  border-color: rgba(88,101,242,.35);
  transform: translateY(-3px);
}
.landing-shell .lp57-rm header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 14px;
}
.landing-shell .lp57-rm h3 {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--lp3-text);
  letter-spacing: -0.01em;
}
.landing-shell .lp57-rm-tag {
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.landing-shell .lp57-rm-tag--now {
  background: rgba(35,165,90,.10);
  border: 1px solid rgba(35,165,90,.32);
  color: #4ade80;
}
.landing-shell .lp57-rm-tag--next {
  background: rgba(88,101,242,.12);
  border: 1px solid rgba(88,101,242,.40);
  color: #8a93f6;
}
.landing-shell .lp57-rm-tag--later {
  background: rgba(255,255,255,.04);
  border: 1px solid var(--lp3-border-strong);
  color: var(--lp3-muted);
}
.landing-shell .lp57-rm ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.landing-shell .lp57-rm li {
  color: var(--lp3-text);
  font-size: .92rem;
  line-height: 1.4;
  display: flex;
  align-items: flex-start;
  gap: 6px;
}

/* ============================================================================
   S3 — Breadcrumbs + stronger sidebar active state + nav-section icons
   ============================================================================ */
.dmw-crumbs {
  margin: 0 0 18px;
  font-size: 13px;
}
.dmw-crumbs ol {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 0;
  margin: 0;
}
.dmw-crumb {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ew-muted, #a0aac8);
}
.dmw-crumb a {
  color: var(--ew-muted, #a0aac8);
  text-decoration: none;
  padding: 2px 0;
  border-bottom: 1px solid transparent;
  transition: color .15s ease, border-color .15s ease;
}
.dmw-crumb a:hover {
  color: var(--ew-text, #e7eaf3);
  border-bottom-color: rgba(88,101,242,.5);
}
.dmw-crumb.is-current span {
  color: var(--ew-text, #e7eaf3);
  font-weight: 600;
}
.dmw-crumb-sep {
  opacity: .45;
  font-size: 10px;
}
@media (max-width: 575.98px) {
  .dmw-crumbs ol .dmw-crumb:not(:nth-last-child(-n+2)) { display: none; }
  .dmw-crumbs ol .dmw-crumb:nth-last-child(2) a::before {
    content: "‹ ";
    opacity: .6;
  }
}

/* Stronger sidebar active-link signal: tinted bar on the left, brighter text. */
.sidebar-nav .nav-link[aria-current="page"],
.sidebar-nav .nav-link.active {
  background: linear-gradient(90deg, rgba(88,101,242,.18), rgba(88,101,242,.04));
  color: var(--ew-text, #e7eaf3) !important;
  position: relative;
}
.sidebar-nav .nav-link[aria-current="page"]::before,
.sidebar-nav .nav-link.active::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px; bottom: 6px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, #62e0ff, #5865f2);
}

/* Two-section sidebar — Operate / Manage headings get a subtle icon hint. */
.sidebar-nav .nav-section { position: relative; }
.sidebar-nav .nav-section[data-icon]::before {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 6px;
  vertical-align: -1px;
  background: currentColor;
  mask-position: center; mask-repeat: no-repeat; mask-size: contain;
  -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain;
  opacity: .55;
}
.sidebar-nav .nav-section[data-icon="operate"]::before {
  /* lightning bolt SVG */
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641z'/></svg>");
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641z'/></svg>");
}
.sidebar-nav .nav-section[data-icon="manage"]::before {
  /* gear SVG */
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0'/><path d='M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52z'/></svg>");
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0'/><path d='M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255.52z'/></svg>");
}

/* Activity feed widget (dashboard card + audit log details). */
.dmw-activity { display: flex; flex-direction: column; gap: 12px; }
.dmw-activity-row {
  display: flex; gap: 10px; align-items: flex-start;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255,255,255,.04);
}
.dmw-activity-row:last-child { border-bottom: 0; }
.dmw-activity-avatar {
  flex-shrink: 0;
  width: 32px; height: 32px;
  border-radius: 50%;
  object-fit: cover;
  background: rgba(255,255,255,.06);
}
.dmw-activity-avatar.is-init {
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px;
  background: linear-gradient(135deg, rgba(88,101,242,.35), rgba(0,217,255,.18));
}
.dmw-activity-text { flex-grow: 1; line-height: 1.4; font-size: 13px; }
.dmw-activity-text strong { color: var(--ew-text,#e7eaf3); }
.dmw-activity-when { color: var(--ew-muted,#a0aac8); font-size: 11px; margin-left: 4px; }

/* ============================================================================
   S4 — True help center (sticky sidebar, hero, feedback widget)
   ============================================================================ */
.help-hero h1 { color: var(--ew-text, #e7eaf3); }
.help-sidebar {
  display: flex; flex-direction: column; gap: 2px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft);
}
.help-sidebar-link {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 10px;
  border-radius: 7px;
  color: var(--ew-muted, #a0aac8);
  text-decoration: none;
  font-size: 13px;
  transition: background .15s, color .15s;
}
.help-sidebar-link:hover {
  background: rgba(88,101,242,.1);
  color: var(--ew-text, #e7eaf3);
}
.help-sidebar-link.is-active {
  background: rgba(88,101,242,.18);
  color: var(--ew-text, #e7eaf3);
  font-weight: 600;
}
.help-feedback button { padding: 2px 8px; }
.help-feedback button:hover { background: rgba(88,101,242,.15); color: var(--ew-text); }

/* ============================================================================
   V2 — Cloudflare Turnstile widget container (auth pages)
   ============================================================================ */
.dmw-turnstile-wrap {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 65px;
}
.dmw-turnstile-wrap .cf-turnstile {
  display: block;
  border-radius: 6px;
  overflow: hidden;
}

/* ============================================================================
   W2 — Edit pencil button + (edited) badge for forum posts/replies
   ============================================================================ */
.dmw-comm-edit-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  color: var(--ew-muted, #a0aac8);
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.06);
  text-decoration: none;
  transition: background .15s, color .15s, border-color .15s;
  font-size: 13px;
}
.dmw-comm-edit-btn:hover {
  background: rgba(98,224,255,.12);
  color: #62e0ff;
  border-color: rgba(98,224,255,.35);
}
.dmw-comm-edited-badge {
  color: var(--ew-muted, #a0aac8);
  font-style: italic;
  font-size: 11px;
  cursor: help;
  margin-left: 4px;
}
.dmw-edit-countdown {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

/* ============================================================================
   W3 — Image attachments in post content + emoji picker + code blocks
   ============================================================================ */
/* Uploaded images inline in post/reply HTML — keep them sane. */
.dmw-comm-content img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 8px 0;
  border: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.2);
}
.dmw-comm-content figure {
  display: inline-block;
  margin: 8px 0;
  max-width: 100%;
}
.dmw-comm-content figure img { margin: 0; display: block; }
.dmw-comm-content figcaption {
  text-align: center;
  font-size: 12px;
  color: var(--ew-muted,#a0aac8);
  margin-top: 4px;
}

/* Emoji picker popup attached to the CKEditor toolbar custom button. */
.dmw-emoji-btn {
  border: 0 !important;
  background: transparent !important;
  cursor: pointer;
  padding: 4px 6px !important;
  display: inline-flex !important;
  align-items: center !important;
  border-radius: 4px;
}
.dmw-emoji-btn:hover { background: rgba(88,101,242,.18) !important; }
.dmw-emoji-pop {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 2px;
  background: var(--ew-panel, #0e1320);
  border: 1px solid var(--ew-border, rgba(255,255,255,.12));
  border-radius: 8px;
  padding: 8px;
  box-shadow: 0 12px 40px rgba(0,0,0,.55);
  z-index: 9999;
  min-width: 280px;
  max-height: 240px;
  overflow-y: auto;
}
.dmw-emoji-cell {
  background: transparent;
  border: 0;
  cursor: pointer;
  font-size: 20px;
  padding: 4px;
  border-radius: 4px;
  line-height: 1;
}
.dmw-emoji-cell:hover { background: rgba(88,101,242,.2); }

/* Code blocks in viewed post bodies — slightly tighter than highlight.js default
   so it harmonizes with our card spacing. highlight.js github-dark provides
   the syntax colors via its own .hljs class. */
.dmw-comm-content pre {
  background: rgba(0,0,0,.45);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 8px;
  padding: 12px 14px;
  overflow-x: auto;
  margin: 10px 0;
}
.dmw-comm-content pre code,
.dmw-comm-content pre code.hljs {
  background: transparent;
  padding: 0;
  font-size: 13px;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  white-space: pre;
}
.dmw-comm-content pre code.hljs { display: block; }

/* (CKEditor toolbar styling — removed, Quill snow theme uses .ql-* selectors above.) */

/* W4 — Mention chip + autocomplete dropdown styling */
.dmw-comm-content span.mention,
.dmw-comm-content .dmw-mention {
  background: rgba(98,224,255,.12);
  color: #62e0ff;
  border-radius: 4px;
  padding: 1px 5px;
  font-weight: 600;
  text-decoration: none;
}
.dmw-comm-content span.mention:hover,
.dmw-comm-content .dmw-mention:hover {
  background: rgba(98,224,255,.22);
}
/* (Old CKEditor 5 .ck-mentions rules removed — Quill uses .ql-mention-list-container above.) */
.dmw-mention-item { display: inline-flex; align-items: center; gap: 8px; }
.dmw-mention-item-avatar { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; }

/* W5 — Moderation bulk-action toolbar (sticky bottom bar when rows selected) */
.dmw-mod-bulkbar {
  position: fixed;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1050;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 16px;
  background: rgba(14,19,32,.96);
  border: 1px solid rgba(98,224,255,.35);
  border-radius: 12px;
  box-shadow: 0 12px 48px rgba(0,0,0,.6);
  max-width: calc(100% - 32px);
  backdrop-filter: blur(8px);
  animation: dmw-bulkbar-in 200ms ease-out;
}
@keyframes dmw-bulkbar-in {
  from { transform: translate(-50%, 12px); opacity: 0; }
  to   { transform: translate(-50%, 0); opacity: 1; }
}
.dmw-mod-bulkbar strong { color: #62e0ff; }
.dmw-mod-table th, .dmw-mod-table td { vertical-align: middle; }

/* ============================================================================
   AA — Discourse-style forum (topic list + topic page + composer drawer)
   Dark-themed Discourse layout: borderless rows, category color stripe,
   last-poster cluster, vertical post timeline, sticky reply composer.
   Class prefix .dmw-d-* so it doesn't collide with the existing .dmw-comm-*
   rules (those are still used by the moderation page and edit-history viewer).
   ============================================================================ */

/* Topic list — borderless rows separated by 1px lines, color stripe on left edge */
.dmw-d-list {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  margin: 0 -16px;
}
.dmw-d-row {
  display: grid;
  grid-template-columns: 5px 1fr auto auto auto;
  gap: 16px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  text-decoration: none;
  color: inherit;
  align-items: center;
  transition: background .15s ease;
}
.dmw-d-row:hover {
  background: rgba(98,224,255,.04);
}
.dmw-d-row-cat {
  background: var(--cat-color, #5865f2);
  border-radius: 3px;
  width: 5px;
  align-self: stretch;
  min-height: 36px;
}
.dmw-d-row-main {
  min-width: 0;
}
.dmw-d-row-title {
  font-size: 15px;
  font-weight: 600;
  margin: 0 0 4px;
  color: var(--ew-text, #e7eaf3);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  line-height: 1.35;
}
.dmw-d-row-title-text {
  margin-right: 4px;
}
.dmw-d-row-cat-pill {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--cat-color, #5865f2), transparent 85%);
  color: var(--cat-color, #5865f2);
  border: 1px solid color-mix(in oklab, var(--cat-color, #5865f2), transparent 70%);
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.dmw-d-row-status {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--c, #888), transparent 88%);
  color: var(--c, #ccc);
  border: 1px solid color-mix(in oklab, var(--c, #888), transparent 75%);
}
.dmw-d-row-meta {
  font-size: 12px;
  color: var(--ew-muted, #a0aac8);
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.dmw-d-row-meta strong {
  color: var(--ew-text, #e7eaf3);
  font-weight: 600;
}
.dmw-d-row-dot { opacity: .45; }
.dmw-d-row-edited { font-style: italic; }
.dmw-d-row-stats {
  display: flex;
  flex-direction: column;
  gap: 2px;
  align-items: end;
  min-width: 56px;
  font-variant-numeric: tabular-nums;
  font-size: 13px;
  color: var(--ew-muted, #a0aac8);
}
.dmw-d-stat { display: inline-flex; align-items: center; gap: 4px; }
.dmw-d-stat .bi-caret-up-fill { color: #62e0ff; }
.dmw-d-row-last {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  min-width: 56px;
}
.dmw-d-row-last-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
}
.dmw-d-row-last-init {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 13px;
  background: linear-gradient(135deg, rgba(88,101,242,.35), rgba(0,217,255,.18)) !important;
  color: #c8d0e8;
  text-transform: uppercase;
}
.dmw-d-row-last-when { font-size: 10px; color: var(--ew-muted, #a0aac8); white-space: nowrap; }
.dmw-d-row-admin .btn-ghost { padding: 4px 6px; }
.dmw-d-row.is-pinned {
  background: linear-gradient(90deg, rgba(240,178,50,.06), rgba(240,178,50,.02) 30%, transparent 80%);
}
.dmw-d-row.is-locked .dmw-d-row-title-text { opacity: .65; }
@media (max-width: 640px) {
  .dmw-d-row { grid-template-columns: 5px 1fr auto; gap: 10px; padding: 12px 12px; }
  .dmw-d-row-stats, .dmw-d-row-last { display: none; }
}

/* Topic page — vertical timeline of unified posts (OP + replies share .dmw-d-post) */
.dmw-d-topic {
  max-width: 920px;
  margin: 0 auto;
  padding-bottom: 80px;  /* room for sticky composer */
}
.dmw-d-topic-header {
  padding: 18px 0;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  margin-bottom: 12px;
}
.dmw-d-topic-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-bottom: 8px;
}
.dmw-d-cat-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: color-mix(in oklab, var(--cat-color, #5865f2), transparent 80%);
  color: var(--cat-color, #5865f2);
  border: 1px solid color-mix(in oklab, var(--cat-color, #5865f2), transparent 60%);
}
.dmw-d-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: color-mix(in oklab, var(--c, #888), transparent 85%);
  color: var(--c, #ccc);
  border: 1px solid color-mix(in oklab, var(--c, #888), transparent 70%);
}
.dmw-d-topic-flag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: rgba(255,255,255,.04);
  color: var(--ew-muted, #a0aac8);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
}
.dmw-d-topic-flag.is-pinned { background: rgba(240,178,50,.12); color: #f0b232; border-color: rgba(240,178,50,.4); }
.dmw-d-topic-flag.is-locked { background: rgba(239,111,120,.08); color: #ef6f78; border-color: rgba(239,111,120,.3); }
.dmw-d-topic-title {
  font-size: 26px;
  font-weight: 700;
  margin: 6px 0 0;
  color: var(--ew-text, #e7eaf3);
  line-height: 1.25;
}

/* Per-post block — same shell for OP and every reply */
.dmw-d-timeline {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}
.dmw-d-post {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 14px;
  padding: 18px 0;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
}
.dmw-d-post.is-op {
  padding-top: 8px;
}
.dmw-d-post-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid rgba(255,255,255,.08);
}
.dmw-d-post-avatar--init {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 18px;
  color: #c8d0e8;
  background: linear-gradient(135deg, rgba(88,101,242,.35), rgba(0,217,255,.18));
  text-transform: uppercase;
}
.dmw-d-post-body { min-width: 0; }
.dmw-d-post-meta {
  font-size: 13px;
  color: var(--ew-muted, #a0aac8);
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: baseline;
  margin-bottom: 8px;
}
.dmw-d-post-name {
  color: var(--ew-text, #e7eaf3);
  font-size: 14px;
  font-weight: 600;
}
.dmw-d-post-num { color: var(--ew-muted, #a0aac8); opacity: .55; }
.dmw-d-post-time { font-variant-numeric: tabular-nums; }
.dmw-d-post-edited { font-style: italic; color: var(--ew-muted, #a0aac8); cursor: help; }
.dmw-d-post-content { line-height: 1.6; }
.dmw-d-post-actions {
  display: flex;
  gap: 6px;
  margin-top: 12px;
  align-items: center;
}
.dmw-d-action {
  background: transparent;
  border: 1px solid transparent;
  color: var(--ew-muted, #a0aac8);
  cursor: pointer;
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 12px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: background .15s, color .15s, border-color .15s;
}
.dmw-d-action:hover {
  background: rgba(98,224,255,.08);
  color: #62e0ff;
}
.dmw-d-action-vote.is-on { color: #ff4d6d; }
.dmw-d-action-vote.is-on .bi-heart-fill { color: #ff4d6d; }
.dmw-d-action-danger:hover { background: rgba(239,111,120,.1); color: #ef6f78; }

/* Admin dropdown in topic header */
.dmw-d-admin-menu {
  position: relative;
  margin-left: auto;
}
.dmw-d-admin-menu summary {
  list-style: none;
  cursor: pointer;
}
.dmw-d-admin-menu summary::-webkit-details-marker { display: none; }
.dmw-d-admin-menu-list {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 200px;
  background: var(--ew-panel, #0e1320);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  border-radius: 8px;
  box-shadow: 0 12px 40px rgba(0,0,0,.45);
  padding: 4px;
  z-index: 50;
}

/* Sticky composer strip + slide-up drawer */
.dmw-d-composer-strip {
  position: sticky;
  bottom: 12px;
  z-index: 50;
  display: flex;
  justify-content: center;
  padding: 8px 16px 0;
  pointer-events: none;
}
.dmw-d-composer-strip > .btn { pointer-events: auto; box-shadow: 0 8px 24px rgba(0,0,0,.4); }
.dmw-d-locked-strip {
  position: sticky;
  bottom: 16px;
  text-align: center;
  padding: 10px 16px;
  background: rgba(239,111,120,.08);
  color: #ef6f78;
  border: 1px solid rgba(239,111,120,.3);
  border-radius: 8px;
  font-size: 13px;
}
.dmw-d-composer {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: var(--ew-panel, #0e1320);
  border-top: 1px solid var(--ew-border, rgba(255,255,255,.12));
  box-shadow: 0 -8px 32px rgba(0,0,0,.4);
  padding: 14px 16px;
  max-height: 60vh;
  overflow-y: auto;
  z-index: 1040;
  transform: translateY(100%);
  transition: transform .25s ease;
}
.dmw-d-composer.is-open { transform: translateY(0); }
.dmw-d-composer-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  font-size: 14px;
}
.dmw-d-composer-head em { color: var(--ew-text, #e7eaf3); font-style: normal; }
.dmw-d-composer-form { display: flex; flex-direction: column; gap: 10px; }
.dmw-d-composer-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 6px;
}

/* New-post composer page */
.dmw-d-compose-page {
  max-width: 920px;
  margin: 0 auto;
}
.dmw-d-compose {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.dmw-d-compose-title {
  width: 100%;
  font-size: 22px;
  font-weight: 600;
  background: transparent;
  border: 0;
  border-bottom: 2px solid var(--ew-border-soft, rgba(255,255,255,.08));
  color: var(--ew-text, #e7eaf3);
  padding: 12px 4px;
  outline: none;
  transition: border-color .15s ease;
}
.dmw-d-compose-title:focus {
  border-bottom-color: #62e0ff;
}
.dmw-d-compose-title::placeholder {
  color: var(--ew-muted, #a0aac8);
  font-weight: 500;
}
.dmw-d-compose-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}
.dmw-d-compose-cat { max-width: 240px; }
.dmw-d-compose-submit {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding-top: 6px;
}
@media (max-width: 640px) {
  .dmw-d-topic-title { font-size: 20px; }
  .dmw-d-compose-title { font-size: 18px; }
  .dmw-d-post { grid-template-columns: 40px 1fr; gap: 10px; }
  .dmw-d-post-avatar { width: 36px; height: 36px; }
}

/* ============================================================
   AA6 — Discourse refinement pass
   Category banner + brand colors + list column header + pinned
   divider + visual category picker + flatter Quill toolbar.
   All rules namespaced .dmw-d-* so they don't collide with
   Bootstrap or our existing .dmw-comm-* legacy rules.
   ============================================================ */

/* Category banner shown above the list when a specific category is filtered.
   Big icon disc on the left tinted with the category brand color, name +
   description in the middle, topic count on the right. */
.dmw-d-cat-banner {
  display: grid;
  grid-template-columns: 56px 1fr auto;
  gap: 16px;
  align-items: center;
  padding: 16px 18px;
  margin-bottom: 16px;
  background: color-mix(in oklab, var(--cat-color, #5865f2), transparent 92%);
  border: 1px solid color-mix(in oklab, var(--cat-color, #5865f2), transparent 75%);
  border-left: 4px solid var(--cat-color, #5865f2);
  border-radius: 10px;
}
.dmw-d-cat-banner-icon {
  width: 48px; height: 48px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in oklab, var(--cat-color, #5865f2), transparent 80%);
  color: var(--cat-color, #5865f2);
  font-size: 24px;
}
.dmw-d-cat-banner-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.dmw-d-cat-banner-name {
  font-size: 20px; font-weight: 700; margin: 0;
  color: var(--ew-text, #e7eaf3);
}
.dmw-d-cat-banner-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 600; padding: 2px 8px;
  border-radius: 999px;
  background: rgba(240,178,50,.14); color: #f0b232;
  border: 1px solid rgba(240,178,50,.3);
}
.dmw-d-cat-banner-desc {
  margin: 4px 0 0; font-size: 13px; color: var(--ew-muted, #a0aac8);
}
.dmw-d-cat-banner-stat {
  text-align: center; padding: 0 8px;
  border-left: 1px solid color-mix(in oklab, var(--cat-color, #5865f2), transparent 75%);
}
.dmw-d-cat-banner-num {
  font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums;
  color: var(--ew-text, #e7eaf3); line-height: 1;
}
.dmw-d-cat-banner-lbl {
  font-size: 10px; text-transform: uppercase; letter-spacing: .08em;
  color: var(--ew-muted, #a0aac8); margin-top: 4px;
}
@media (max-width: 640px) {
  .dmw-d-cat-banner { grid-template-columns: 40px 1fr; gap: 12px; padding: 12px; }
  .dmw-d-cat-banner-icon { width: 40px; height: 40px; font-size: 20px; border-radius: 10px; }
  .dmw-d-cat-banner-name { font-size: 17px; }
  .dmw-d-cat-banner-stat { display: none; }
}

/* Column header above the topic list — borderless, small uppercase labels.
   Grid columns mirror .dmw-d-row exactly so labels line up over their columns. */
.dmw-d-list-header {
  display: grid;
  grid-template-columns: 6px 1fr auto auto;
  gap: 14px;
  padding: 6px 16px 6px 16px;
  font-size: 11px; text-transform: uppercase; letter-spacing: .06em;
  color: var(--ew-muted, #a0aac8); font-weight: 600;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
}
.dmw-d-list-header-topic { grid-column: 2; }
.dmw-d-list-header-stat  { grid-column: 3; min-width: 60px; text-align: right; }
.dmw-d-list-header-last  { grid-column: 4; min-width: 56px; text-align: center; }
@media (max-width: 640px) {
  .dmw-d-list-header-stat, .dmw-d-list-header-last { display: none; }
}

/* Section label between pinned + regular topic groups. */
.dmw-d-list-section-label {
  display: flex; align-items: center; gap: 6px;
  padding: 14px 16px 4px;
  font-size: 11px; text-transform: uppercase; letter-spacing: .06em;
  color: #f0b232; font-weight: 700;
}
.dmw-d-list-section-label--regular { color: var(--ew-muted, #a0aac8); }
.dmw-d-list-section-label i { font-size: 13px; }

/* ----- New-post composer: header + visual category picker ----- */

.dmw-d-compose-head { margin-bottom: 18px; }
.dmw-d-compose-head-title {
  font-size: 24px; font-weight: 700; margin: 0 0 4px;
  color: var(--ew-text, #e7eaf3);
}
.dmw-d-compose-head-sub {
  margin: 0; font-size: 13px; color: var(--ew-muted, #a0aac8);
}
.dmw-d-compose-head-sub kbd {
  background: rgba(255,255,255,.06); border: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  border-radius: 4px; padding: 1px 6px; font-size: 11px; color: var(--ew-text);
}

.dmw-d-compose-catpicker { border: 0; padding: 0; margin: 0 0 4px; }
.dmw-d-compose-catpicker-legend {
  font-size: 11px; text-transform: uppercase; letter-spacing: .06em;
  color: var(--ew-muted, #a0aac8); font-weight: 600;
  padding: 0; margin: 0 0 8px;
}
.dmw-d-compose-catpicker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 8px;
}
.dmw-d-compose-catchip {
  position: relative;
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  border-radius: 10px;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}
.dmw-d-compose-catchip:hover {
  background: rgba(255,255,255,.04);
  border-color: color-mix(in oklab, var(--cat-color, #5865f2), transparent 60%);
}
.dmw-d-compose-catchip.is-checked {
  background: color-mix(in oklab, var(--cat-color, #5865f2), transparent 92%);
  border-color: var(--cat-color, #5865f2);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--cat-color, #5865f2), transparent 85%);
}
.dmw-d-compose-catchip input[type="radio"] {
  position: absolute; opacity: 0; pointer-events: none; /* native input hidden */
}
.dmw-d-compose-catchip-icon {
  width: 36px; height: 36px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in oklab, var(--cat-color, #5865f2), transparent 82%);
  color: var(--cat-color, #5865f2);
  font-size: 18px;
}
.dmw-d-compose-catchip-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dmw-d-compose-catchip-name {
  font-size: 14px; font-weight: 600; color: var(--ew-text, #e7eaf3);
}
.dmw-d-compose-catchip-desc {
  font-size: 12px; color: var(--ew-muted, #a0aac8);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ----- Flatter Quill toolbar (Discourse aesthetic: no border, tighter) ----- */
.ql-toolbar.ql-snow {
  border: 0 !important;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.06)) !important;
  background: transparent;
  padding: 6px 4px;
}
.ql-container.ql-snow {
  border: 0 !important;
  background: rgba(255,255,255,.02);
  border-radius: 8px;
  min-height: 200px;
}
.dmw-rich-quill {
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.08));
  border-radius: 10px;
  overflow: hidden;
  background: rgba(0,0,0,.15);
}
.dmw-rich-quill:focus-within {
  border-color: color-mix(in oklab, #62e0ff, transparent 50%);
}
.ql-snow .ql-stroke { stroke: var(--ew-muted, #a0aac8); }
.ql-snow .ql-fill   { fill:   var(--ew-muted, #a0aac8); }
.ql-snow .ql-picker { color:  var(--ew-muted, #a0aac8); }
.ql-snow.ql-toolbar button:hover .ql-stroke,
.ql-snow.ql-toolbar button.ql-active .ql-stroke { stroke: #62e0ff; }
.ql-snow.ql-toolbar button:hover .ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-fill   { fill:   #62e0ff; }
.ql-snow.ql-toolbar button:hover,
.ql-snow.ql-toolbar button.ql-active {
  background: rgba(98,224,255,.08);
  border-radius: 4px;
}
.ql-editor {
  color: var(--ew-text, #e7eaf3);
  font-size: 14px;
  line-height: 1.6;
}
/* ============================================================
   AA10 — Landing editor redesign
   Three-column shell: sidebar nav + editor pane + live iframe.
   Sticky save bar at the bottom of the editor column. Mobile
   collapses to a single column with the sidebar above and the
   preview hidden (admins on phones almost certainly aren't
   doing serious editing).
   ============================================================ */
/* AA11.1: two-row layout. Sidebar + editor stretch full-width on top, the
   preview iframe drops below at full width. Previously the 3-column grid
   squished the preview into ~33% of the viewport — Discourse-style chrome
   barely fit, hero text wrapped weirdly. Now the editor has room AND the
   preview shows the landing at its real proportions. */
.lp-editor-shell {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  grid-template-areas:
    "sidebar editor"
    "preview preview";
  gap: 14px;
  align-items: stretch;
}
.lp-editor-sidebar  { grid-area: sidebar; }
.lp-editor-mainwrap { grid-area: editor;  }
.lp-editor-preview  { grid-area: preview; }

.lp-editor-sidebar {
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  border-radius: 10px;
  overflow: hidden;
  /* Sidebar sits on top row only; cap at the editor's height + scroll internally
     so the Theme group at the bottom never gets clipped, regardless of how
     tall the editor's main panel grows. */
  max-height: calc(100vh - 200px);
  min-height: 600px;
}
.lp-editor-sidebar > .lp-editor-sidebar-head { flex-shrink: 0; }
.lp-editor-sidebar > .lp-editor-sidebar-footer { flex-shrink: 0; }
/* The scrollable middle: group-labels + their nav lists. Wrap them all in a
   div so the whole stack scrolls as one. */
.lp-editor-sidebar-scroll {
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.lp-editor-sidebar-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  background: rgba(255,255,255,.02);
}
.lp-editor-sidebar-title { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--ew-muted, #a0aac8); }
.lp-editor-sidebar-link  { color: var(--ew-muted, #a0aac8); font-size: 14px; text-decoration: none; }
.lp-editor-sidebar-link:hover { color: #62e0ff; }
.lp-editor-sidebar-group-label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .1em;
  color: var(--ew-muted, #a0aac8); opacity: .7; font-weight: 700;
  padding: 12px 16px 4px;
}
.lp-editor-sidebar-nav { display: flex; flex-direction: column; padding: 0 6px 6px; }
.lp-editor-sidebar-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; margin: 1px 0;
  background: transparent;
  border: 0;
  border-radius: 6px;
  color: var(--ew-text, #e7eaf3);
  font-size: 13px;
  text-align: left;
  cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
.lp-editor-sidebar-item:hover { background: rgba(255,255,255,.04); }
.lp-editor-sidebar-item.is-active {
  background: rgba(98,224,255,.12);
  color: #62e0ff;
}
.lp-editor-sidebar-item i { font-size: 14px; width: 18px; text-align: center; }
.lp-editor-sidebar-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-editor-sidebar-footer { margin-top: auto; padding: 12px 14px; border-top: 1px solid var(--ew-border-soft, rgba(255,255,255,.06)); background: rgba(255,255,255,.02); }
.lp-editor-sidebar-help a { color: #62e0ff; }

.lp-editor-mainwrap {
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,.015);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  border-radius: 10px;
  overflow: hidden;
  /* Matches the sidebar's cap so the two columns end at the same y-coordinate. */
  max-height: calc(100vh - 200px);
  min-height: 600px;
}
.lp-editor-main { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.lp-editor-panels {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 18px 20px;
}
/* tab-pane is hidden by default; show/active makes it visible (Bootstrap's
   default rules apply because we kept the .tab-pane class). */
.lp-editor-panels > .tab-pane { display: none; }
.lp-editor-panels > .tab-pane.show.active { display: block; }

.lp-editor-savebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 16px;
  border-top: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  background: rgba(0,0,0,.2);
}
.lp-editor-savebar-status {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  color: var(--ew-muted, #a0aac8);
}
.lp-editor-savebar-status.is-dirty {
  color: #f0b232;
  font-weight: 600;
}
.lp-editor-savebar-actions { display: flex; align-items: center; gap: 8px; }

.lp-editor-preview {
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  border-radius: 10px;
  overflow: hidden;
  /* Full-width row below the editor. Tall enough to actually show the landing's
     hero + a couple of sections without scrolling-in-iframe gymnastics. */
  height: 900px;
  min-height: 600px;
}
.lp-editor-preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 14px;
  border-bottom: 1px solid var(--ew-border-soft, rgba(255,255,255,.06));
  background: rgba(255,255,255,.02);
  font-size: 12px;
  color: var(--ew-muted, #a0aac8);
}
.lp-editor-preview-btn {
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  color: var(--ew-muted, #a0aac8);
  cursor: pointer;
  padding: 3px 8px;
  font-size: 13px;
}
.lp-editor-preview-btn:hover { background: rgba(255,255,255,.04); color: var(--ew-text, #e7eaf3); }
.lp-editor-preview-btn.is-active { background: rgba(98,224,255,.12); border-color: rgba(98,224,255,.35); color: #62e0ff; }
.lp-editor-preview-frame {
  flex: 1 1 auto;
  background: #0a0d1c;
  display: flex;
  justify-content: center;
  overflow: hidden;
}
.lp-editor-preview-frame iframe {
  width: 100%;
  height: 100%;
  border: 0;
  background: #0a0d1c;
  transition: max-width .2s ease;
}
.lp-editor-preview-fallback {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 32px;
  width: 100%;
  height: 100%;
  background: #0a0d1c;
}

/* Dirty-state badge in the header */
#lpDirtyIndicator { color: #f0b232; font-weight: 600; }

/* AA11.1: tablet narrows the sidebar a touch but otherwise keeps the
   two-row layout (sidebar+editor on top, preview below). */
@media (max-width: 1100px) {
  .lp-editor-shell { grid-template-columns: 200px minmax(0, 1fr); }
}
/* Mobile: stack everything into a single column */
@media (max-width: 720px) {
  .lp-editor-shell {
    grid-template-columns: 1fr;
    grid-template-areas:
      "sidebar"
      "editor"
      "preview";
  }
  .lp-editor-sidebar    { max-height: 360px; min-height: 0; }
  .lp-editor-mainwrap   { max-height: none;  min-height: 500px; }
  .lp-editor-preview    { height: 600px; }
  .lp-editor-sidebar-nav { flex-direction: row; flex-wrap: wrap; }
  .lp-editor-sidebar-item { flex: 0 0 auto; }
}

.ql-editor.ql-blank::before {
  color: var(--ew-muted, #a0aac8);
  font-style: normal;
  opacity: .7;
}
