/* ridigital DataHub — Viewer CSS v1.0.0
   All rules scoped to .rddh-* — zero theme bleed */

:root {
  --rddh-p:#5c1d77;--rddh-pd:#451459;--rddh-pm:#7b2fa0;
  --rddh-pl:#f7f2fa;--rddh-pt:#ede5f5;--rddh-pp:#f4eefa;
  --rddh-ink:#111827;--rddh-mut:#4b5563;--rddh-fnt:#6b7280;
  --rddh-wh:#fff;--rddh-sl:#f9fafb;--rddh-sl2:#f4f3f8;
  --rddh-bdr:#e5e7eb;--rddh-bdrl:#ede9f7;
  --rddh-grn:#059669;--rddh-grnb:#ecfdf5;
  --rddh-amb:#d97706;--rddh-red:#dc2626;
  --rddh-hero:linear-gradient(160deg,#faf8ff 0%,#f3eefb 40%,#ede5f5 100%);
  --rddh-r:8px;--rddh-rl:12px;--rddh-rxl:16px;--rddh-pill:100px;
  --rddh-fu:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --rddh-ff:'DM Serif Display',Georgia,serif;
  --rddh-ease:cubic-bezier(.4,0,.2,1);
}

/* ── Widget outer section wrapper — must fill 100% of whatever the page builder gives it ── */
section.rddh-widget, div.rddh-widget {
  width: 100% !important;
  max-width: 100% !important;
  flex: 1 1 100% !important;   /* stretch when inside a flex parent (Elementor / BeBuilder columns) */
  align-self: stretch !important;
}

/* ── API error row in table (shown when endpoint returns an error object) ── */
.rddh-tbl-api-err {
  color: #b91c1c !important;
  font-size: .8rem !important;
  background: #fff4f4 !important;
  padding: 20px 16px !important;
  line-height: 1.6 !important;
}

/* ── Base reset scoped to widget ── */
/* Explicitly un-set the most common theme overrides before we apply our own values.
   BeTheme (and most page builders) set aggressive global rules on a, button, input, p, etc.
   Without this reset those rules win inside the widget even though our selectors are scoped. */
.rddh-widget { isolation: isolate; }
.rddh-widget,
.rddh-widget *,
.rddh-widget *::before,
.rddh-widget *::after {
  box-sizing: border-box !important;
  font-family: var(--rddh-fu) !important;
  -webkit-font-smoothing: antialiased;
  line-height: 1.5;       /* theme may set a different line-height globally */
  letter-spacing: normal; /* some themes set letter-spacing on * */
}
/* Anchors — themes colour links globally; we manage our own colours */
.rddh-widget a {
  color: inherit !important;
  text-decoration: none !important;
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
/* Paragraphs — themes add margin-bottom to p globally */
.rddh-widget p { margin: 0 !important; padding: 0 !important; }
/* Buttons — BeTheme adds borders, shadows, text-transform, etc. */
.rddh-widget button {
  font-family: var(--rddh-fu) !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  box-shadow: none;
  border-radius: 0;
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  cursor: pointer;
}
/* Inputs — themes add borders/shadows/heights */
.rddh-widget input,
.rddh-widget select,
.rddh-widget textarea {
  font-family: var(--rddh-fu) !important;
  font-size: inherit !important;
  margin: 0;
  background: none;
}
/* SVGs — some themes add max-width: 100% which breaks inline icon sizing */
.rddh-widget svg { max-width: none !important; vertical-align: middle; }
/* Tables — themes style table/td globally */
.rddh-widget table { border-collapse: separate !important; border-spacing: 0 !important; margin: 0 !important; }
.rddh-widget td,
.rddh-widget th { padding: 0 !important; border: none !important; background: none; text-align: left; }
.rddh-widget { color: var(--rddh-ink); font-size: 14px; line-height: 1.6; margin: 28px 0; }

/* ── Layout ── */
.rddh-widget {
  display: flex; gap: 0; align-items: stretch; background: var(--rddh-wh);
  border: 1px solid var(--rddh-bdr); border-radius: var(--rddh-rxl);
  overflow: hidden; box-shadow: 0 4px 24px rgba(92,29,119,.06);
  /* Force full width regardless of whether the parent is block, flex, or grid.
     BeBuilder / Elementor wrap shortcode output in flex columns — without these
     three rules the widget shrinks to content width and appears half-page wide. */
  width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

/* ── Filter Panel ── */
.rddh-filter-panel {
  width: 234px; min-width: 234px; border-right: 1px solid var(--rddh-bdrl);
  background: var(--rddh-sl); flex-shrink: 0; display: flex; flex-direction: column;
}
.rddh-fp-header {
  padding: 13px 16px 11px; border-bottom: 1px solid var(--rddh-bdrl);
  display: flex; align-items: center; gap: 7px;
}
.rddh-fp-title {
  flex: 1; font-size: .7rem; font-weight: 800; text-transform: uppercase;
  letter-spacing: .1em; color: var(--rddh-ink); display: flex; align-items: center; gap: 6px;
}
.rddh-fp-count {
  background: var(--rddh-p); color: #fff; font-size: 9.5px; font-weight: 800;
  padding: 1px 6px; border-radius: var(--rddh-pill); display: none;
}
.rddh-fp-clear {
  font-size: .68rem; font-weight: 700; color: var(--rddh-fnt); cursor: pointer;
  background: none; border: none; padding: 2px 5px; transition: color .15s;
}
.rddh-fp-clear:hover { color: var(--rddh-red); }
.rddh-fp-body { flex: 1; overflow-y: auto; padding: 6px 0; }
.rddh-fp-body::-webkit-scrollbar { width: 3px; }
.rddh-fp-body::-webkit-scrollbar-thumb { background: var(--rddh-bdrl); border-radius: 2px; }
.rddh-fp-empty { padding: 20px 16px; text-align: center; font-size: .78rem; color: var(--rddh-fnt); }

/* Filter group */
.rddh-filter-group { border-bottom: 1px solid var(--rddh-bdrl); }
.rddh-fg-header {
  padding: 9px 14px; display: flex; align-items: center; gap: 7px;
  cursor: pointer; user-select: none; transition: background .12s;
}
.rddh-fg-header:hover,.rddh-filter-group.rddh-fg-active .rddh-fg-header { background: var(--rddh-pl); }
.rddh-fg-label { flex: 1; font-size: .72rem; font-weight: 700; color: var(--rddh-ink); }
.rddh-fg-dot { width: 5px; height: 5px; background: var(--rddh-p); border-radius: 50%; display: none; flex-shrink: 0; }
.rddh-fg-chev { color: var(--rddh-fnt); flex-shrink: 0; transition: transform .18s; }
.rddh-fg-body { display: none; padding: 8px 12px 10px; }
.rddh-fg-body.rddh-fg-open { display: block; }

/* Text filter */
.rddh-text-filter {
  width: 100%; padding: 6px 9px; font-size: .78rem; color: var(--rddh-ink);
  border: 1.5px solid var(--rddh-bdr); border-radius: var(--rddh-r); outline: none; background: var(--rddh-wh);
}
.rddh-text-filter:focus { border-color: var(--rddh-p); box-shadow: 0 0 0 2px rgba(92,29,119,.1); }

/* Has-value checkbox */
.rddh-has-val { display: flex; align-items: center; gap: 7px; cursor: pointer; font-size: .78rem; color: var(--rddh-mut); }
.rddh-has-val input { accent-color: var(--rddh-p); cursor: pointer; width: 13px; height: 13px; }

/* Custom Select */
.rddh-cs-wrap { position: relative; width: 100%; }
.rddh-cs-trigger {
  display: flex; align-items: center; justify-content: space-between;
  padding: 7px 10px; background: var(--rddh-wh); border: 1.5px solid var(--rddh-bdr);
  border-radius: var(--rddh-r); cursor: pointer; min-height: 34px; gap: 6px;
  transition: border-color .15s;
}
.rddh-cs-trigger:hover, .rddh-cs-trigger-open { border-color: var(--rddh-p); }
.rddh-cs-trigger-open { box-shadow: 0 0 0 2px rgba(92,29,119,.1); }
.rddh-cs-val { font-size: .78rem; color: var(--rddh-ink); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rddh-cs-placeholder { color: var(--rddh-fnt); }
.rddh-cs-chev { flex-shrink: 0; color: var(--rddh-fnt); transition: transform .18s; }
.rddh-cs-panel {
  display: none; position: absolute; top: calc(100% + 3px); left: 0; right: 0;
  background: var(--rddh-wh); border: 1.5px solid var(--rddh-bdrl);
  border-radius: var(--rddh-r); box-shadow: 0 6px 24px rgba(0,0,0,.1);
  z-index: 200; overflow: hidden;
}
.rddh-cs-panel.rddh-cs-open { display: block; }
.rddh-cs-search { padding: 7px 9px; border-bottom: 1px solid var(--rddh-bdrl); }
.rddh-cs-search input {
  width: 100%; padding: 5px 8px; font-size: .76rem; border: 1.5px solid var(--rddh-bdr);
  border-radius: var(--rddh-r); outline: none;
}
.rddh-cs-search input:focus { border-color: var(--rddh-p); }
.rddh-cs-list { max-height: 190px; overflow-y: auto; }
.rddh-cs-list::-webkit-scrollbar { width: 4px; }
.rddh-cs-list::-webkit-scrollbar-thumb { background: var(--rddh-bdr); border-radius: 2px; }
.rddh-cs-item {
  padding: 7px 11px; font-size: .78rem; color: var(--rddh-ink);
  cursor: pointer; transition: background .1s; display: flex; align-items: center; gap: 7px;
}
.rddh-cs-item:hover { background: var(--rddh-pl); }
.rddh-cs-item.rddh-selected { background: var(--rddh-pp); color: var(--rddh-p); font-weight: 700; }
.rddh-cs-check-item { display: flex; align-items: center; gap: 8px; padding: 7px 11px; cursor: pointer; font-size: .78rem; transition: background .1s; }
.rddh-cs-check-item:hover { background: var(--rddh-pl); }
.rddh-cs-check-item.rddh-checked { color: var(--rddh-p); font-weight: 600; }
.rddh-cs-checkbox {
  width: 14px; height: 14px; border: 1.5px solid var(--rddh-bdr); border-radius: 3px;
  flex-shrink: 0; display: flex; align-items: center; justify-content: center; transition: all .15s;
}
.rddh-cb-checked { background: var(--rddh-p); border-color: var(--rddh-p); }
.rddh-cb-checked::after { content: ''; width: 4px; height: 7px; border: 2px solid #fff; border-top: none; border-left: none; transform: rotate(45deg); display: block; margin-top: -2px; }
.rddh-cs-count { padding: 5px 10px; font-size: .62rem; color: var(--rddh-fnt); border-top: 1px solid var(--rddh-bdrl); background: var(--rddh-sl); }
.rddh-ms-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.rddh-ms-chip {
  background: var(--rddh-pt); border: 1px solid var(--rddh-bdrl); border-radius: var(--rddh-pill);
  padding: 2px 7px 2px 9px; font-size: .65rem; font-weight: 700; color: var(--rddh-pm);
  display: inline-flex; align-items: center; gap: 4px;
}
.rddh-ms-chip-x { cursor: pointer; color: var(--rddh-p); display: flex; align-items: center; }
.rddh-ms-chip-x:hover { color: var(--rddh-red); }

/* ── Table Area ── */
.rddh-table-area { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.rddh-table-topbar {
  padding: 9px 14px; border-bottom: 1px solid var(--rddh-bdrl); background: var(--rddh-wh);
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; flex-shrink: 0;
}
.rddh-table-stats { font-size: .74rem; color: var(--rddh-fnt); font-weight: 500; }
.rddh-table-stats strong { color: var(--rddh-ink); }
.rddh-filtered-badge {
  display: none; background: var(--rddh-pt); color: var(--rddh-pm); border-radius: var(--rddh-pill);
  padding: 1px 8px; font-size: .62rem; font-weight: 800; margin-left: 4px;
}
.rddh-budget-bar {
  display: flex; align-items: center; gap: 7px; margin-left: auto;
  font-size: .7rem; color: var(--rddh-fnt);
}
.rddh-budget-track { width: 80px; height: 4px; background: var(--rddh-bdr); border-radius: 2px; overflow: hidden; }
.rddh-budget-fill { height: 100%; background: var(--rddh-p); border-radius: 2px; transition: width .35s var(--rddh-ease); }
.rddh-budget-warn { background: var(--rddh-amb); }
.rddh-budget-low  { background: var(--rddh-red); }
.rddh-budget-num  { font-size: .65rem; font-weight: 700; white-space: nowrap; }

/* Active filter chips */
.rddh-chip-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 7px 14px; min-height: 34px; border-bottom: 1px solid rgba(237,233,247,.5); }
.rddh-chip-label { font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .1em; color: var(--rddh-fnt); }
.rddh-chip {
  display: inline-flex; align-items: center; gap: 4px; background: var(--rddh-pt);
  border: 1px solid var(--rddh-bdrl); color: var(--rddh-pm); border-radius: var(--rddh-pill);
  padding: 2px 8px 2px 10px; font-size: .68rem; font-weight: 700;
}
.rddh-chip-x { cursor: pointer; color: var(--rddh-p); display: flex; align-items: center; width: 13px; height: 13px; border-radius: 50%; }
.rddh-chip-x:hover { color: var(--rddh-red); }
.rddh-chip-clr { font-size: .68rem; font-weight: 700; color: var(--rddh-fnt); cursor: pointer; padding: 2px 6px; }
.rddh-chip-clr:hover { color: var(--rddh-red); }

/* ── Excel Table ── */
/* NOTE: the generic .rddh-widget td/th reset above wipes padding/border/background.
   All excel-table rules below re-apply them with specificity — this is intentional. */
.rddh-excel-wrap {
  flex: 1; overflow: auto; min-height: 260px; max-height: 380px; position: relative;
}
.rddh-excel-wrap::-webkit-scrollbar { width: 8px; height: 8px; }
.rddh-excel-wrap::-webkit-scrollbar-track { background: var(--rddh-sl); }
.rddh-excel-wrap::-webkit-scrollbar-thumb { background: var(--rddh-bdr); border-radius: 4px; }
.rddh-excel-wrap::-webkit-scrollbar-corner { background: var(--rddh-sl); }
.rddh-excel-table {
  border-collapse: separate; border-spacing: 0; font-size: .76rem;
  white-space: nowrap; user-select: none; -webkit-user-select: none; min-width: 100%;
}
/* Blur on window focus loss */
.rddh-wblur .rddh-blur-row td:not(.rddh-td-num),
.rddh-wblur .rddh-excel-table tbody tr:nth-child(n+2) td:not(.rddh-td-num) { filter: blur(8px); }

/* Header */
.rddh-excel-table thead th {
  background: var(--rddh-p) !important; color: #fff !important; height: 33px; padding: 0 !important;
  position: sticky; top: 0; z-index: 10;
  border-right: 1px solid rgba(255,255,255,.12) !important;
  border-bottom: 2px solid var(--rddh-pd) !important;
  font-weight: 700; font-size: .68rem; letter-spacing: .03em;
  vertical-align: middle; overflow: visible; min-width: 100px;
}
.rddh-th-num { min-width: 38px !important; width: 38px !important; max-width: 38px !important; position: sticky !important; top: 0; left: 0; z-index: 20 !important; background: var(--rddh-pd) !important; }
.rddh-th-in  { display: flex; align-items: center; padding: 0 10px !important; height: 100%; gap: 5px; overflow: hidden; }
.rddh-th-txt { overflow: hidden; text-overflow: ellipsis; flex: 1; }
.rddh-th-sort { flex-shrink: 0; opacity: .35; }
.rddh-th-sort.rddh-sa,.rddh-th-sort.rddh-sd { opacity: 1; }
/* Resize handle */
.rddh-col-rh { position: absolute; right: 0; top: 0; bottom: 0; width: 5px; cursor: col-resize; z-index: 30; transition: background .12s; }
.rddh-col-rh:hover,.rddh-rh-drag { background: rgba(255,255,255,.45); }

/* Body */
.rddh-excel-table tbody td {
  padding: 0 10px !important; height: 28px; line-height: 28px;
  border-bottom: 1px solid var(--rddh-sl) !important; border-right: 1px solid rgba(229,231,235,.45) !important;
  color: var(--rddh-ink) !important; overflow: hidden; text-overflow: ellipsis; max-width: 200px; vertical-align: middle;
  background: var(--rddh-wh);
}
.rddh-td-num { position: sticky; left: 0; z-index: 5; background: var(--rddh-sl) !important; color: var(--rddh-fnt) !important; text-align: center; font-size: .64rem; font-weight: 700; border-right: 2px solid var(--rddh-bdr) !important; min-width: 38px; width: 38px; padding: 0 !important; }
.rddh-excel-table tbody tr:nth-child(even) td { background: #fafafe !important; }
.rddh-excel-table tbody tr:hover td { background: var(--rddh-pl) !important; }
.rddh-excel-table tbody tr:hover .rddh-td-num { background: var(--rddh-pt) !important; }
.rddh-blur-row td:not(.rddh-td-num) { filter: blur(4.5px); pointer-events: none; }
.rddh-tbl-empty { text-align: center; padding: 32px !important; color: var(--rddh-fnt); font-size: .82rem; }

/* Lock overlay */
.rddh-lock-overlay { position: absolute; bottom: 0; left: 38px; right: 0; height: 76px; background: linear-gradient(transparent,rgba(249,250,251,.97)); display: flex; align-items: flex-end; justify-content: center; padding-bottom: 9px; pointer-events: none; }
.rddh-lock-pill { display: flex; align-items: center; gap: 6px; background: var(--rddh-wh); border: 1px solid var(--rddh-bdrl); border-radius: var(--rddh-pill); padding: 6px 15px; font-size: .75rem; color: var(--rddh-fnt); font-weight: 600; box-shadow: 0 2px 12px rgba(92,29,119,.09); }

/* Budget depleted overlay */
.rddh-depleted-overlay {
  display: none; position: absolute; inset: 0; left: 38px;
  background: rgba(249,250,251,.96); flex-direction: column;
  align-items: center; justify-content: center; gap: 9px; text-align: center; padding: 24px;
}
.rddh-depleted-overlay svg { color: var(--rddh-p); }
.rddh-depleted-overlay strong { font-size: .92rem; font-weight: 800; color: var(--rddh-ink); }
.rddh-depleted-overlay span { font-size: .8rem; color: var(--rddh-mut); max-width: 280px; line-height: 1.6; }

/* ── Purchase Panel ── */
.rddh-purchase-panel { border-top: 2px solid var(--rddh-bdrl); background: var(--rddh-hero); padding: 18px 20px; flex-shrink: 0; }
.rddh-pp-top { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: start; margin-bottom: 13px; }
.rddh-pp-count { }
.rddh-count-num { font-family: var(--rddh-ff); font-size: 1.9rem; color: var(--rddh-p); line-height: 1; display: block; }
.rddh-count-lbl { font-size: .68rem; color: var(--rddh-fnt); font-weight: 600; margin-top: 2px; display: block; }
.rddh-pp-price { text-align: right; }
.rddh-price-val { font-family: var(--rddh-ff); font-size: 1.9rem; color: var(--rddh-grn); line-height: 1; display: block; }
.rddh-price-detail { font-size: .68rem; color: var(--rddh-fnt); margin-top: 3px; display: block; }
.rddh-discount-badge { display: inline-flex; align-items: center; gap: 4px; background: var(--rddh-grnb); border: 1px solid rgba(5,150,105,.2); border-radius: var(--rddh-pill); padding: 2px 8px; font-size: .62rem; font-weight: 800; color: var(--rddh-grn); text-transform: uppercase; letter-spacing: .05em; margin-top: 4px; }

/* Coupon */
.rddh-coupon-wrap { margin-bottom: 12px; }
.rddh-coupon-toggle { background: none; border: none; font-size: .74rem; font-weight: 600; color: var(--rddh-fnt); cursor: pointer; padding: 0; text-decoration: underline; text-underline-offset: 2px; }
.rddh-coupon-toggle:hover { color: var(--rddh-p); }
.rddh-coupon-field { display: flex; gap: 7px; margin-top: 7px; }
.rddh-coupon-input { flex: 1; padding: 7px 10px; border: 1.5px solid var(--rddh-bdr); border-radius: var(--rddh-r); font-size: .8rem; font-family: var(--rddh-fu); outline: none; text-transform: uppercase; }
.rddh-coupon-input:focus { border-color: var(--rddh-p); }
.rddh-coupon-apply { padding: 7px 14px; background: var(--rddh-p); color: #fff; border: none; border-radius: var(--rddh-r); font-size: .78rem; font-weight: 700; cursor: pointer; font-family: var(--rddh-fu); transition: background .15s; }
.rddh-coupon-apply:hover { background: var(--rddh-pd); }
.rddh-coupon-msg { font-size: .72rem; margin-top: 5px; font-weight: 600; }
.rddh-coupon-ok  { color: var(--rddh-grn); }
.rddh-coupon-err { color: var(--rddh-red); }

/* Buttons */
.rddh-pp-btns { display: flex; gap: 9px; margin-bottom: 12px; }
.rddh-btn {
  display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 7px !important;
  font-family: var(--rddh-fu) !important; font-weight: 700 !important; border-radius: var(--rddh-r) !important; cursor: pointer !important;
  border: none !important; transition: all .2s var(--rddh-ease) !important; white-space: nowrap !important;
  padding: 11px 14px !important; font-size: .84rem !important; flex: 1 !important;
  text-transform: none !important; letter-spacing: normal !important;
  line-height: 1.4 !important;
}
.rddh-btn-full { background: var(--rddh-p) !important; color: #fff !important; }
.rddh-btn-full:hover { background: var(--rddh-pd) !important; transform: translateY(-1px) !important; box-shadow: 0 5px 16px rgba(92,29,119,.28) !important; }
.rddh-btn-filtered { background: var(--rddh-grn) !important; color: #fff !important; }
.rddh-btn-filtered:hover { background: #047857 !important; transform: translateY(-1px) !important; box-shadow: 0 5px 16px rgba(5,150,105,.28) !important; }
.rddh-btn-cancel { background: transparent !important; color: var(--rddh-fnt) !important; border: 1.5px solid var(--rddh-bdr) !important; }
.rddh-btn-cancel:hover { border-color: var(--rddh-p) !important; color: var(--rddh-p) !important; }
.rddh-btn-sm { padding: 8px 12px !important; font-size: .78rem !important; flex: 0 !important; }
.rddh-btn:disabled { opacity: .6 !important; cursor: not-allowed !important; transform: none !important; }
.rddh-input-err { border-color: var(--rddh-red) !important; box-shadow: 0 0 0 2px rgba(220,38,38,.15) !important; }

/* Trust row */
.rddh-trust { display: flex; align-items: center; justify-content: center; gap: 14px; padding-top: 11px; border-top: 1px solid var(--rddh-bdrl); flex-wrap: wrap; }
.rddh-trust-item { display: flex; align-items: center; gap: 4px; font-size: .66rem; font-weight: 600; color: var(--rddh-fnt); }

/* ── Sticky Bar ── */
.rddh-sticky-bar {
  position: fixed; right: 0; top: 50%; transform: translateY(-50%);
  background: var(--rddh-wh); border: 1px solid var(--rddh-bdrl);
  border-right: none; border-radius: var(--rddh-rl) 0 0 var(--rddh-rl);
  box-shadow: -4px 0 24px rgba(92,29,119,.1); z-index: 900; padding: 16px 18px;
  min-width: 200px; max-width: 240px;
}
.rddh-sticky-inner { display: flex; flex-direction: column; gap: 10px; }
.rddh-sticky-info { display: flex; flex-direction: column; gap: 2px; }
.rddh-sticky-count { font-size: .78rem; font-weight: 700; color: var(--rddh-ink); }
.rddh-sticky-price { font-family: var(--rddh-ff); font-size: 1.5rem; color: var(--rddh-p); line-height: 1; }
.rddh-sticky-btns  { display: flex; flex-direction: column; gap: 7px; }

/* ── Modal ── */
.rddh-modal-overlay {
  position: fixed; inset: 0; background: rgba(13,10,22,.72); z-index: 9999;
  align-items: center; justify-content: center; padding: 20px;
  backdrop-filter: blur(5px);
}
.rddh-modal {
  background: var(--rddh-wh); border-radius: 18px; padding: 30px;
  max-width: 460px; width: 100%; position: relative; text-align: center;
  box-shadow: 0 28px 72px rgba(0,0,0,.22);
  font-family: var(--rddh-fu);
}
.rddh-modal-close {
  position: absolute; top: 12px; right: 12px; width: 26px; height: 26px;
  border-radius: 50%; background: var(--rddh-sl); border: none; color: var(--rddh-fnt);
  display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all .15s;
}
.rddh-modal-close:hover { background: var(--rddh-bdr); }
.rddh-modal-icon { margin-bottom: 10px; }
.rddh-modal h3 { font-family: var(--rddh-ff); font-size: 1.4rem; color: var(--rddh-ink); margin-bottom: 7px; }
.rddh-modal p  { font-size: .84rem; color: var(--rddh-mut); line-height: 1.7; margin-bottom: 14px; }
.rddh-modal-det { background: var(--rddh-hero); border: 1px solid var(--rddh-bdrl); border-radius: var(--rddh-rl); padding: 13px 16px; text-align: left; font-size: .8rem; margin-bottom: 14px; }
.rddh-mdet-row { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px solid rgba(237,233,247,.6); }
.rddh-mdet-row:last-child { border: none; }
.rddh-mdet-row span { color: var(--rddh-fnt); }
.rddh-mdet-row strong { color: var(--rddh-ink); font-weight: 700; }
.rddh-modal-label { display: block; text-align: left; font-size: .74rem; font-weight: 700; color: var(--rddh-ink); margin-bottom: 5px; }
.rddh-modal-email { width: 100%; padding: 9px 12px; border: 1.5px solid var(--rddh-bdr); border-radius: var(--rddh-r); font-size: .9rem; font-family: var(--rddh-fu); outline: none; margin-bottom: 14px; }
.rddh-modal-email:focus { border-color: var(--rddh-p); box-shadow: 0 0 0 3px rgba(92,29,119,.1); }
.rddh-modal-actions { display: flex; flex-direction: column; gap: 9px; }

/* ── Error ── */
.rddh-error { color: var(--rddh-red); font-size: .84rem; padding: 12px; background: #fef2f2; border: 1px solid rgba(220,38,38,.2); border-radius: var(--rddh-r); }

/* ── Mobile ── */
@media (max-width: 768px) {
  .rddh-widget { flex-direction: column; }
  .rddh-filter-panel { width: 100%; min-width: 0; border-right: none; border-bottom: 1px solid var(--rddh-bdrl); }
  .rddh-excel-wrap { max-height: 280px; }
  .rddh-pp-top { grid-template-columns: 1fr; }
  .rddh-pp-price { text-align: left; }
  .rddh-pp-btns { flex-direction: column; }
  .rddh-sticky-bar { bottom: 0; top: auto; right: 0; left: 0; transform: none; border-radius: var(--rddh-rl) var(--rddh-rl) 0 0; border-right: 1px solid var(--rddh-bdrl); border-bottom: none; max-width: 100%; padding: 12px 16px; }
  .rddh-sticky-inner { flex-direction: row; align-items: center; }
  .rddh-sticky-info { flex-direction: row; align-items: center; gap: 8px; flex: 1; }
  .rddh-sticky-btns { flex-direction: row; }
}
