/**
 * daisyUI — JKB brand theme + coexistence with pract.css / Section 0.
 * Free MIT. Loaded after daisyUI CDN so these vars win for data-theme="jkb".
 */

/* ---- Custom theme: jkb ---- */
:root,
[data-theme="jkb"] {
  color-scheme: light;

  /* Surfaces */
  --color-base-100: #ffffff;
  --color-base-200: #f7f3fb;
  --color-base-300: #efe7f7;
  --color-base-content: #1a1228;

  /* Brand */
  --color-primary: #5a2878;
  --color-primary-content: #ffffff;
  --color-secondary: #d46a96;
  --color-secondary-content: #ffffff;
  --color-accent: #e8727a;
  --color-accent-content: #ffffff;
  --color-neutral: #3a3048;
  --color-neutral-content: #faf7ff;

  /* Status */
  --color-info: #8b6ad4;
  --color-info-content: #ffffff;
  --color-success: #157a70;
  --color-success-content: #ffffff;
  --color-warning: #9a6400;
  --color-warning-content: #fff8e8;
  --color-error: #c0392b;
  --color-error-content: #ffffff;

  /* Shape — match foundation radius */
  --radius-selector: 0.85rem;
  --radius-field: 0.75rem;
  --radius-box: 1.1rem;
  --border: 1px;
  --depth: 1;
  --noise: 0;

  /* Spacing scale (align with tokens.css) */
  --jkb-space-1: 4px;
  --jkb-space-2: 8px;
  --jkb-space-3: 12px;
  --jkb-space-4: 16px;
  --jkb-space-5: 20px;
  --jkb-space-6: 24px;
  --jkb-space-8: 32px;
}

/* Prefer soft clinic look on daisyUI cards/alerts inside staff UI */
.pr-shell .card {
  border: 1px solid rgba(70, 35, 95, 0.1);
  box-shadow: 0 12px 32px rgba(20, 8, 31, 0.07);
}

/* ---- Buttons (daisyUI + brand polish) ---- */
.pr-shell .btn {
  font-family: "DM Sans", system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: 0.01em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 2.55rem;
  height: auto;
  padding: 0.5rem 1rem;
  border-radius: 999px;
  line-height: 1.15;
  text-wrap: nowrap;
  transition: transform 0.15s ease, filter 0.15s ease, box-shadow 0.15s ease,
    background-color 0.15s ease, border-color 0.15s ease;
}
.pr-shell .btn:active {
  transform: translateY(1px);
}
.pr-shell .btn:focus-visible {
  outline: 2px solid #f2d59a;
  outline-offset: 2px;
}
.pr-shell .btn:disabled,
.pr-shell .btn[disabled] {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none;
}

.pr-shell .btn-sm {
  min-height: 2.1rem;
  padding: 0.35rem 0.8rem;
  font-size: 0.8rem;
}
.pr-shell .btn-lg {
  min-height: 2.9rem;
  padding: 0.65rem 1.25rem;
  font-size: 1rem;
}

.pr-shell .btn-primary {
  background-image: linear-gradient(135deg, #e8727a 0%, #d46a96 40%, #8b6ad4 100%);
  background-color: #8b6ad4;
  border: none;
  color: #fff;
  box-shadow: 0 12px 28px rgba(139, 106, 212, 0.28);
}
.pr-shell .btn-primary:hover {
  filter: brightness(1.05);
  color: #fff;
}

/* secondary → outline look (our map); also support daisy btn-secondary */
.pr-shell .btn-outline,
.pr-shell .btn-secondary {
  background: #fff;
  color: var(--jkb-plum, #5a2878);
  border: 1.5px solid rgba(139, 106, 212, 0.28);
  box-shadow: 0 4px 14px rgba(20, 8, 31, 0.04);
}
.pr-shell .btn-outline:hover,
.pr-shell .btn-secondary:hover {
  border-color: rgba(90, 40, 120, 0.4);
  background: #faf7ff;
  color: var(--jkb-plum, #5a2878);
}

.pr-shell .btn-ghost {
  background: rgba(90, 40, 120, 0.06);
  color: var(--jkb-plum, #5a2878);
  border: 1px solid transparent;
  box-shadow: none;
}
.pr-shell .btn-ghost:hover {
  background: rgba(90, 40, 120, 0.12);
  color: var(--jkb-plum, #5a2878);
}

.pr-shell .btn-error {
  background: linear-gradient(135deg, #e8727a, #c0392b);
  border: none;
  color: #fff;
  box-shadow: 0 10px 24px rgba(192, 57, 43, 0.22);
}
.pr-shell .btn-error:hover {
  filter: brightness(1.04);
  color: #fff;
}
.pr-shell .btn-error.btn-outline {
  background: #fff5f5;
  color: #922b21;
  border: 1.5px solid rgba(192, 57, 43, 0.28);
  box-shadow: none;
}
.pr-shell .btn-error.btn-outline:hover {
  background: #fde8e8;
  color: #922b21;
}

/* Legacy classic classes that still appear on some tools */
.pr-shell .btn.secondary:not(.btn-outline):not(.btn-primary):not(.btn-ghost) {
  background: #fff;
  color: var(--jkb-plum, #5a2878);
  border: 1.5px solid rgba(139, 106, 212, 0.28);
}
.pr-shell .btn.danger {
  background: linear-gradient(135deg, #e8727a, #c0392b);
  color: #fff;
  border: none;
}
.pr-shell .btn.smallbtn,
.pr-shell .smallbtn.btn {
  min-height: 2.1rem;
  padding: 0.35rem 0.8rem;
  font-size: 0.8rem;
}

/* Hero: outline/ghost must stay light on purple */
.pr-shell .pr-hero .btn-ghost,
.pr-shell .pr-hero .btn-outline,
.pr-shell .pr-hero .btn-secondary {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.45);
  background: rgba(255, 255, 255, 0.1);
}
.pr-shell .pr-hero .btn-ghost:hover,
.pr-shell .pr-hero .btn-outline:hover,
.pr-shell .pr-hero .btn-secondary:hover {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
  border-color: rgba(255, 255, 255, 0.65);
}
.pr-shell .pr-hero .btn-primary {
  background: #fff;
  background-image: none;
  color: #1f0b32;
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18);
}
.pr-shell .pr-hero .btn-primary:hover {
  filter: brightness(1.02);
  color: #1f0b32;
}

/* Topbar actions: compact daisy buttons */
.pr-shell .pr-topbar-actions .btn {
  min-height: 2.25rem;
  padding: 0.4rem 0.85rem;
  font-size: 0.8rem;
}
.pr-shell .pr-cache-btn,
.pr-shell .pr-notif-btn {
  gap: 0.35rem;
}

/* Badge / status pills sit nicely next to .jkb-pill */
.pr-shell .badge {
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* Tables */
.pr-shell .table :where(th, td) {
  font-size: 0.925rem;
  padding-top: 0.7rem;
  padding-bottom: 0.7rem;
  vertical-align: top;
}

/* Inputs use brand focus ring without fighting pract forms too hard */
.pr-shell .input:focus,
.pr-shell .select:focus,
.pr-shell .textarea:focus {
  outline: none;
  box-shadow: 0 0 0 4px rgba(139, 106, 212, 0.18);
  border-color: #8b6ad4;
}

/* Alert spacing inside main canvas */
.pr-shell .alert {
  border-radius: var(--radius-box, 1.1rem);
}

/* Modal / drawer: keep above shell chrome */
.pr-shell .modal,
.modal {
  z-index: 80;
}

/* Utility: page section using daisyUI without inventing new tokens */
.jkb-daisy-panel {
  background: var(--color-base-100, #fff);
  border: 1px solid rgba(70, 35, 95, 0.1);
  border-radius: var(--radius-box, 1.1rem);
  box-shadow: 0 12px 32px rgba(20, 8, 31, 0.07);
  padding: 1.15rem 1.25rem;
}

/* =========================================================
   Spacing rhythm (S0–S15 restyle)
   .pr-main is flex column + gap. Section CSS also set
   margin-bottom: 1rem on .pr-hero / .pr-card → double gap (~34px).
   Let shell gap own vertical stack; keep internal padding consistent.
   ========================================================= */

/* Main canvas: predictable stack (desktop baseline from pract.css) */
.pr-shell .pr-main {
  gap: var(--jkb-space-4, 16px);
}

/* Direct children: no extra bottom margin (gap handles it) */
.pr-shell .pr-main > .pr-hero,
.pr-shell .pr-main > .pr-card,
.pr-shell .pr-main > section.pr-hero,
.pr-shell .pr-main > section.pr-card,
.pr-shell .pr-main > .pr-grid-2,
.pr-shell .pr-main > .pr-grid-4,
.pr-shell .pr-main > .pr-grid-3,
.pr-shell .pr-main > form,
.pr-shell .pr-main > .pr-alert,
.pr-shell .pr-main > .alert,
.pr-shell .pr-main > .text-center {
  margin-top: 0;
  margin-bottom: 0 !important;
}

/* Grids own spacing via gap — zero card margins inside */
.pr-shell .pr-grid-2,
.pr-shell .pr-grid-3,
.pr-shell .pr-grid-4 {
  gap: var(--jkb-space-4, 16px);
}
.pr-shell .pr-grid-2 > .pr-card,
.pr-shell .pr-grid-3 > .pr-card,
.pr-shell .pr-grid-4 > .pr-card,
.pr-shell .pr-grid-2 > section,
.pr-shell .pr-grid-3 > section,
.pr-shell .pr-grid-4 > section,
.pr-shell .pr-grid-2 > a.pr-panel-soft,
.pr-shell .pr-grid-4 > a.pr-panel-soft {
  margin-bottom: 0 !important;
  height: 100%;
}

/* Normalize hero / card chrome on themed pages (overrides uneven S10 vs S12 pads) */
body.jkb-page-bg .pr-hero,
.pr-shell .pr-main .pr-hero {
  padding: 1.5rem 1.25rem !important;
  margin-bottom: 0 !important;
  gap: var(--jkb-space-5, 20px);
}
body.jkb-page-bg .pr-card,
.pr-shell .pr-main .pr-card {
  padding: 1.15rem 1.25rem !important;
  margin-bottom: 0 !important;
}
body.jkb-page-bg .pr-card-head,
.pr-shell .pr-main .pr-card-head {
  margin-bottom: var(--jkb-space-3, 12px);
  gap: var(--jkb-space-3, 12px);
}
body.jkb-page-bg .pr-panel-soft,
.pr-shell .pr-main .pr-panel-soft {
  margin-bottom: 0;
}
body.jkb-page-bg .pr-row,
.pr-shell .pr-main .pr-row {
  gap: var(--jkb-space-2, 8px);
}
body.jkb-page-bg .pr-chip-row,
.pr-shell .pr-main .pr-chip-row {
  gap: 0.4rem;
}
body.jkb-page-bg .pr-field,
.pr-shell .pr-main .pr-field {
  margin: 0;
}
body.jkb-page-bg .pr-field + .pr-field,
.pr-shell .pr-main .pr-grid-2 .pr-field {
  /* grid gap handles */
}

/* Hero internal type spacing (tighter than pract 12px stack) */
body.jkb-page-bg .pr-hero h2,
.pr-shell .pr-main .pr-hero h2 {
  margin: 0.2rem 0 0.4rem !important;
}
body.jkb-page-bg .pr-hero p,
.pr-shell .pr-main .pr-hero p {
  margin: 0 0 0.35rem !important;
}
body.jkb-page-bg .pr-kicker,
.pr-shell .pr-main .pr-kicker {
  margin-bottom: 0.15rem;
}

/* Soft panels used as stat tiles shouldn't collapse awkwardly */
.pr-shell .pr-main a.pr-panel-soft {
  display: block;
}

/* Button groups: consistent wrap gap */
.pr-shell .pr-main .btn + .btn,
.pr-shell .pr-main form.inline {
  /* rely on .pr-row gap */
}

/* Mobile: slightly tighter main padding already in pract; keep gap */
@media (max-width: 900px) {
  .pr-shell .pr-main {
    gap: var(--jkb-space-3, 12px);
  }
  body.jkb-page-bg .pr-hero,
  .pr-shell .pr-main .pr-hero {
    padding: 1.25rem 1rem !important;
  }
  body.jkb-page-bg .pr-card,
  .pr-shell .pr-main .pr-card {
    padding: 1rem 1rem !important;
  }
}

/* =========================================================
   Text / typography (readability pass)
   - Status badges used oklch(var(--su)) which is not set on theme "jkb"
   - Section CSS set opacity .6–.72 on muted labels → washed-out text
   - Prefer solid brand tokens + opacity:1 for secondary copy
   ========================================================= */

.pr-shell .pr-main {
  color: var(--jkb-ink, #1a1228);
  font-family: var(--jkb-font, "DM Sans", system-ui, sans-serif);
  font-size: var(--jkb-text-md, 15px);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* Primary headings in cards */
body.jkb-page-bg .pr-card h2,
body.jkb-page-bg .pr-card h3,
.pr-shell .pr-main .pr-card h2,
.pr-shell .pr-main .pr-card h3 {
  color: var(--jkb-ink, #1a1228);
  font-family: var(--jkb-display, "Fraunces", Georgia, serif);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.2;
}

/* Hero titles: display face, solid white */
body.jkb-page-bg .pr-hero h2,
.pr-shell .pr-main .pr-hero h2 {
  color: #fff !important;
  font-family: var(--jkb-display, "Fraunces", Georgia, serif) !important;
  font-size: clamp(1.65rem, 2.6vw, 1.95rem) !important;
  font-weight: 600 !important;
  letter-spacing: -0.03em !important;
  line-height: 1.12 !important;
  max-width: 28ch;
}
body.jkb-page-bg .pr-hero p,
.pr-shell .pr-main .pr-hero p {
  color: rgba(255, 255, 255, 0.92) !important;
  opacity: 1 !important;
  font-size: 0.95rem !important;
  line-height: 1.5 !important;
  max-width: 46ch;
}
body.jkb-page-bg .pr-hero .pr-muted,
.pr-shell .pr-main .pr-hero .pr-muted {
  color: rgba(255, 255, 255, 0.88) !important;
  opacity: 1 !important;
}
body.jkb-page-bg .pr-hero a,
.pr-shell .pr-main .pr-hero a {
  color: #fff !important;
  text-underline-offset: 2px;
}

/* Kickers: brand, not ultra-black 950 */
body.jkb-page-bg .pr-kicker,
.pr-shell .pr-main .pr-kicker {
  color: var(--jkb-plum, #5a2878) !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase;
  opacity: 1 !important;
}
body.jkb-page-bg .pr-hero .pr-kicker,
.pr-shell .pr-main .pr-hero .pr-kicker {
  color: rgba(255, 255, 255, 0.85) !important;
  background: rgba(255, 255, 255, 0.12);
}

/* Secondary / helper copy — solid muted, no opacity wash */
body.jkb-page-bg .pr-muted,
.pr-shell .pr-main .pr-muted {
  color: var(--jkb-muted, #6d6378) !important;
  opacity: 1 !important;
  font-size: 13.4px;
  line-height: 1.5;
}
body.jkb-page-bg .pr-field > span,
.pr-shell .pr-main .pr-field > span {
  color: var(--jkb-ink-soft, #3a3048) !important;
  opacity: 1 !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em;
}
body.jkb-page-bg .pr-hero-stat span,
.pr-shell .pr-main .pr-hero-stat span {
  color: var(--jkb-muted, #6d6378) !important;
  opacity: 1 !important;
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase;
}
body.jkb-page-bg .pr-hero-stat b,
.pr-shell .pr-main .pr-hero-stat b {
  color: var(--jkb-plum, #5a2878) !important;
  font-size: 1.4rem !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
  font-variant-numeric: tabular-nums;
}

/* Empty states (daisy text-center py-10 opacity-70) */
.pr-shell .pr-main .opacity-70,
.pr-shell .pr-main .text-center.py-10 {
  color: var(--jkb-ink-soft, #3a3048);
  opacity: 1 !important;
}
.pr-shell .pr-main .text-center.py-10 strong,
.pr-shell .pr-main .opacity-70 strong {
  display: block;
  color: var(--jkb-ink, #1a1228);
  font-size: 1.05rem;
  margin-bottom: 0.25rem;
}
.pr-shell .pr-main .text-center.py-10 span,
.pr-shell .pr-main .opacity-70 span {
  color: var(--jkb-muted, #6d6378);
  font-size: 0.92rem;
  line-height: 1.45;
}

/* Tables: readable body text */
.pr-shell .table {
  color: var(--jkb-ink, #1a1228);
}
.pr-shell .table :where(th) {
  color: var(--jkb-ink-soft, #3a3048);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.pr-shell .table :where(td) {
  color: var(--jkb-ink, #1a1228);
  line-height: 1.45;
}
.pr-shell .table .pr-muted {
  font-size: 12px !important;
}

/* Status badges — brand solids (replace broken oklch(--su/--wa/--in)) */
body.jkb-page-bg .badge-ok,
.pr-shell .badge-ok,
[class*="jkb-s"] .badge-ok {
  background: rgba(21, 122, 112, 0.14) !important;
  color: #0f5f56 !important;
  border-color: transparent !important;
  font-weight: 700;
}
body.jkb-page-bg .badge-warn,
.pr-shell .badge-warn,
[class*="jkb-s"] .badge-warn {
  background: rgba(154, 100, 0, 0.14) !important;
  color: #7a4a10 !important;
  border-color: transparent !important;
  font-weight: 700;
}
body.jkb-page-bg .badge-info,
.pr-shell .badge-info,
[class*="jkb-s"] .badge-info {
  background: rgba(139, 106, 212, 0.16) !important;
  color: #4a2a6a !important;
  border-color: transparent !important;
  font-weight: 700;
}
.pr-shell .badge-success {
  background: rgba(21, 122, 112, 0.14);
  color: #0f5f56;
  border-color: transparent;
  font-weight: 700;
}
.pr-shell .badge-warning {
  background: rgba(154, 100, 0, 0.14);
  color: #7a4a10;
  border-color: transparent;
  font-weight: 700;
}
.pr-shell .badge-error {
  background: rgba(192, 57, 43, 0.12);
  color: #922b21;
  border-color: transparent;
  font-weight: 700;
}
.pr-shell .badge-ghost {
  background: rgba(90, 40, 120, 0.07);
  color: var(--jkb-ink-soft, #3a3048);
  border-color: transparent;
  font-weight: 700;
}

/* Long IDs / mono snippets */
.pr-shell .pr-main [style*="monospace"],
.pr-shell .pr-main [style*="ui-monospace"] {
  word-break: break-all;
  overflow-wrap: anywhere;
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--jkb-ink-soft, #3a3048);
}

/* Links in content */
.pr-shell .pr-main a.link,
.pr-shell .pr-main .link {
  color: var(--jkb-plum, #5a2878);
  text-underline-offset: 2px;
}
.pr-shell .pr-main a.link:hover,
.pr-shell .pr-main .link:hover {
  color: var(--jkb-violet, #8b6ad4);
}

/* =========================================================
   Full-site polish: legacy pr-btn / engine chrome → same UX
   Classic engines + templates/header pages inherit daisy look.
   ========================================================= */

/* Map legacy pr-btn to daisy button chrome */
.pr-shell .pr-btn {
  font-family: "DM Sans", system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: 0.01em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 2.55rem;
  height: auto;
  padding: 0.5rem 1rem;
  border-radius: 999px;
  line-height: 1.15;
  text-decoration: none;
  cursor: pointer;
  border: 0;
  transition: transform 0.15s ease, filter 0.15s ease, box-shadow 0.15s ease,
    background-color 0.15s ease, border-color 0.15s ease;
}
.pr-shell .pr-btn:active {
  transform: translateY(1px);
}
.pr-shell .pr-btn:focus-visible {
  outline: 2px solid #f2d59a;
  outline-offset: 2px;
}
.pr-shell .pr-btn-sm {
  min-height: 2.1rem;
  padding: 0.35rem 0.8rem;
  font-size: 0.8rem;
}
.pr-shell .pr-btn-primary {
  background-image: linear-gradient(135deg, #e8727a 0%, #d46a96 40%, #8b6ad4 100%);
  background-color: #8b6ad4;
  color: #fff !important;
  border: none;
  box-shadow: 0 12px 28px rgba(139, 106, 212, 0.28);
}
.pr-shell .pr-btn-primary:hover {
  filter: brightness(1.05);
  color: #fff !important;
}
.pr-shell .pr-btn-secondary {
  background: #fff;
  color: var(--jkb-plum, #5a2878) !important;
  border: 1.5px solid rgba(139, 106, 212, 0.28);
  box-shadow: 0 4px 14px rgba(20, 8, 31, 0.04);
}
.pr-shell .pr-btn-secondary:hover {
  border-color: rgba(90, 40, 120, 0.4);
  background: #faf7ff;
  color: var(--jkb-plum, #5a2878) !important;
}
.pr-shell .pr-btn-ghost {
  background: rgba(90, 40, 120, 0.06);
  color: var(--jkb-plum, #5a2878) !important;
  border: 1px solid transparent;
}
.pr-shell .pr-btn-ghost:hover {
  background: rgba(90, 40, 120, 0.12);
}
.pr-shell .pr-btn-danger {
  background: linear-gradient(135deg, #e8727a, #c0392b);
  color: #fff !important;
  border: none;
}

/* Pills → badge look (when not already badge) */
.pr-shell .pr-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  min-height: 1.5rem;
  padding: 0.2rem 0.65rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  background: rgba(90, 40, 120, 0.07);
  color: var(--jkb-ink-soft, #3a3048);
  border: 0;
}
.pr-shell .pr-pill-ok {
  background: rgba(21, 122, 112, 0.14);
  color: #0f5f56;
}
.pr-shell .pr-pill-warn {
  background: rgba(154, 100, 0, 0.14);
  color: #7a4a10;
}
.pr-shell .pr-pill-danger {
  background: rgba(192, 57, 43, 0.12);
  color: #922b21;
}
.pr-shell .pr-pill-info {
  background: rgba(139, 106, 212, 0.16);
  color: #4a2a6a;
}

/* Engine chrome (classic report tools via templates/header) */
body.pr-engine-chrome .pr-main,
body.jkb-engine-chrome .pr-main {
  color: var(--jkb-ink, #1a1228);
}
body.pr-engine-chrome .pr-main > .pr-card,
body.pr-engine-chrome .pr-main > section,
body.pr-engine-chrome .pr-main > .card {
  margin-bottom: 0;
}
/* Soft paper cards for orphan classic modules still using .card */
body.pr-engine-chrome .pr-main .card:not(.modal):not(.collapse) {
  border: 1px solid rgba(70, 35, 95, 0.1);
  border-radius: 1.1rem;
  box-shadow: 0 12px 32px rgba(20, 8, 31, 0.06);
  background: #fff;
}
/* Kill leftover NHS-ish blues that escape bridge on random inline styles */
body.pr-engine-chrome .pr-main a[style*="#005eb8"],
body.pr-engine-chrome .pr-main .btn[style*="#005eb8"] {
  color: var(--jkb-plum, #5a2878) !important;
}

/* Settings/system hubs: list rows as soft tiles */
.jkb-s16 .pr-list-row a,
.jkb-s17 .pr-list-row a {
  text-decoration: none;
}
.jkb-s16 .pr-panel-soft:hover,
.jkb-s17 .pr-panel-soft:hover {
  border-color: rgba(90, 40, 120, 0.22);
  box-shadow: 0 8px 22px rgba(20, 8, 31, 0.06);
}


/* ---- Site-wide daisy defaults (paired with daisy-site.css) ---- */
html[data-theme="jkb"] body {
  font-family: "DM Sans", system-ui, sans-serif;
}
.pr-shell .join .btn {
  border-radius: 999px !important;
}
.pr-shell .modal-box {
  border-radius: 1.25rem;
  border: 1px solid rgba(70, 35, 95, 0.1);
}
.pr-shell .tabs-boxed .tab {
  border-radius: 999px;
  font-weight: 700;
}
.pr-shell .tabs-boxed .tab-active {
  background: linear-gradient(135deg, #e8727a 0%, #d46a96 40%, #8b6ad4 100%);
  color: #fff;
}
