/* ==========================================================================
   RankVex buyer portal
   Uses the theme's tokens (assets/css/tokens.css) with fallbacks, so the
   portal matches the site and still renders if the theme changes.
   Decorative treatments (small coordinated family):
     · welcome panel  — slow linear mesh (pausable, reduced-motion aware)
     · filter bar     — faint static dot grid
     · project cards  — fine editorial lines
     · empty states   — soft angular colour bands
   Work surfaces (cards, tables, forms, editor) are static and high-contrast.
   ========================================================================== */

.rvb-main {
  --b-ink: var(--rv-ink, #17132B);
  --b-text: var(--rv-text, #3B3753);
  --b-muted: var(--rv-muted, #67637F);
  --b-subtle: var(--rv-subtle, #8F8AA8);
  --b-brand: var(--rv-violet-600, #5440C9);
  --b-brand-d: var(--rv-violet-800, #36298A);
  --b-brand-50: var(--rv-violet-50, #F5F3FF);
  --b-brand-100: var(--rv-violet-100, #ECE8FD);
  --b-bg: var(--rv-surface-2, #F7F5FD);
  --b-surface: #fff;
  --b-sunk: var(--rv-surface-sunk, #F2F0FA);
  --b-border: var(--rv-border, #E8E5F3);
  --b-border-s: var(--rv-border-strong, #D5D0EA);
  --b-green: var(--rv-green-700, #15703C); --b-green-50: var(--rv-green-50, #E6F6EC);
  --b-amber: var(--rv-amber-700, #94600A); --b-amber-50: var(--rv-amber-50, #FDF4E1);
  --b-rose: var(--rv-rose-700, #A82D5C);   --b-rose-50: var(--rv-rose-50, #FDEBF2);
  --b-sky: var(--rv-sky-700, #1A5FC7);     --b-sky-50: var(--rv-sky-50, #E8F1FE);
  --b-teal: var(--rv-teal-700, #0A7066);   --b-teal-50: var(--rv-teal-50, #E7F7F4);
  --b-coral: var(--rv-coral-700, #B8402A); --b-coral-50: var(--rv-coral-50, #FEEEEA);
  --b-radius: var(--rv-radius-lg, 20px);
  --b-shadow: var(--rv-shadow-sm, 0 1px 2px rgba(36,28,92,.05), 0 2px 6px rgba(36,28,92,.05));
  --b-shadow-md: var(--rv-shadow-md, 0 8px 24px -6px rgba(36,28,92,.10));
  --b-ease: var(--rv-ease-out, cubic-bezier(.22,1,.36,1));
  --b-side: 248px;
  background: var(--b-bg);
  color: var(--b-text);
  font-variant-numeric: tabular-nums;
  min-height: 60vh;
}
.rvb-main *, .rvb-main *::before, .rvb-main *::after { box-sizing: border-box; }

/* ---- Shell ---------------------------------------------------------------- */
.rvb-shell { display: grid; grid-template-columns: var(--b-side) minmax(0, 1fr); max-width: 1480px; margin: 0 auto; transition: grid-template-columns .3s var(--b-ease); }
.rvb-shell.is-collapsed { --b-side: 76px; }
.rvb-side {
  position: sticky; top: var(--rv-header-h, 72px); align-self: start; height: calc(100vh - var(--rv-header-h, 72px));
  overflow-y: auto; padding: 18px 12px; background: var(--b-surface); border-right: 1px solid var(--b-border);
}
.rvb-side__head { display: flex; align-items: center; gap: 10px; padding: 6px 8px 16px; border-bottom: 1px solid var(--b-border); margin-bottom: 10px; }
.rvb-side__avatar { display: grid; place-items: center; flex: none; width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(140deg, var(--rv-violet-500, #6A55E3), var(--b-brand-d)); color: #fff; font-weight: 700; }
.rvb-side__who { min-width: 0; flex: 1; line-height: 1.25; }
.rvb-side__who b { display: block; color: var(--b-ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rvb-side__who small { color: var(--b-muted); font-size: 12px; }
.rvb-side__collapse { flex: none; width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--b-border); border-radius: 10px; background: #fff; color: var(--b-muted); cursor: pointer; }
.rvb-side__collapse:hover { color: var(--b-brand); border-color: var(--b-brand-100); }
.rvb-nav { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.rvb-nav__a {
  display: flex; align-items: center; gap: 12px; min-height: 42px; padding: 0 12px; border-radius: 11px;
  color: var(--b-text); text-decoration: none; font-weight: 500; font-size: 14.5px; transition: background-color .16s ease, color .16s ease;
}
.rvb-nav__a .rv-icon { flex: none; color: var(--b-subtle); transition: color .16s ease; }
.rvb-nav__a:hover { background: var(--b-brand-50); color: var(--b-brand-d); }
.rvb-nav__a:hover .rv-icon { color: var(--b-brand); }
.rvb-nav__a.is-active { background: var(--b-brand-50); color: var(--b-brand-d); font-weight: 650; box-shadow: inset 3px 0 0 var(--b-brand); }
.rvb-nav__a.is-active .rv-icon { color: var(--b-brand); }
.rvb-nav__t { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rvb-nav__sep { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--b-border); }
.rvb-count { font-style: normal; display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: var(--b-brand); color: #fff; font-size: 11.5px; font-weight: 700; }
.rvb-count[hidden] { display: none; }
.rvb-count--alert { background: var(--rv-coral-500, #EE6247); }
.rvb-shell.is-collapsed .rvb-nav__t, .rvb-shell.is-collapsed .rvb-side__who, .rvb-shell.is-collapsed .rvb-side__avatar { display: none; }
.rvb-shell.is-collapsed .rvb-nav__a { justify-content: center; padding: 0; position: relative; }
.rvb-shell.is-collapsed .rvb-nav__a .rvb-count { position: absolute; top: 2px; right: 6px; min-width: 18px; height: 18px; font-size: 10px; }
.rvb-shell.is-collapsed .rvb-side__head { justify-content: center; }

.rvb-content { min-width: 0; padding: 22px clamp(16px, 2.5vw, 36px) 56px; }
.rvb-top { position: relative; z-index: 60; display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.rvb-top__menu { display: none; align-items: center; gap: 8px; height: 40px; padding: 0 12px; border: 1px solid var(--b-border-s); border-radius: 11px; background: #fff; color: var(--b-ink); font-weight: 600; cursor: pointer; }
.rvb-crumbs { display: flex; gap: 8px; align-items: center; font-size: 13.5px; color: var(--b-muted); min-width: 0; }
.rvb-crumbs a { color: var(--b-muted); text-decoration: none; }
.rvb-crumbs a:hover { color: var(--b-brand); }
.rvb-crumbs [aria-current] { color: var(--b-ink); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rvb-top__tools { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.rvb-top__cart { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px; border-radius: 11px; background: #fff; border: 1px solid var(--b-border); color: var(--b-ink); text-decoration: none; font-weight: 600; font-size: 14px; }
.rvb-top__cart:hover { border-color: var(--b-brand-100); color: var(--b-brand-d); }
.rvb-scrim { position: fixed; inset: 0; z-index: 140; background: rgba(23,19,43,.45); }
.rvb-scrim[hidden] { display: none; }

@media (max-width: 1023px) {
  .rvb-shell, .rvb-shell.is-collapsed { grid-template-columns: minmax(0, 1fr); }
  .rvb-side { position: fixed; top: 0; left: 0; bottom: 0; z-index: 150; width: min(300px, 86vw); height: 100%; transform: translateX(-105%); visibility: hidden; box-shadow: 0 20px 60px rgba(23,19,43,.35); transition: transform .3s var(--b-ease), visibility 0s linear .3s; }
  .rvb-side.is-open { transform: none; visibility: visible; transition-delay: 0s; }
  .rvb-side__collapse { display: none; }
  .rvb-shell.is-collapsed .rvb-nav__t, .rvb-shell.is-collapsed .rvb-side__who, .rvb-shell.is-collapsed .rvb-side__avatar { display: initial; }
  .rvb-top__menu { display: inline-flex; }
}
@media (max-width: 520px) { .rvb-top__cart span { display: none; } .rvb-top { gap: 8px; } }

/* ---- Notification bell ------------------------------------------------------- */
.rvb-bell { position: relative; }
.rvb-bell__btn { position: relative; display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 11px; border: 1px solid var(--b-border); background: #fff; color: var(--b-ink); cursor: pointer; transition: border-color .2s, color .2s, box-shadow .2s; }
.rvb-bell__btn:hover, .rvb-bell__btn[aria-expanded="true"] { border-color: var(--b-brand-100); color: var(--b-brand-d); box-shadow: 0 0 0 4px var(--b-brand-50); }
.rvb-bell__btn:focus-visible { outline: 2px solid var(--b-brand); outline-offset: 2px; }
.rvb-bell__dot { position: absolute; top: -6px; right: -6px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 999px; display: grid; place-items: center; background: var(--rv-coral-500, #EE6247); color: #fff; font: 700 10.5px/1 system-ui, sans-serif; font-style: normal; border: 2px solid #fff; }
.rvb-bell__panel { position: absolute; right: 0; top: calc(100% + 10px); z-index: 120; width: min(380px, calc(100vw - 32px)); background: #fff; border: 1px solid var(--b-border); border-radius: 16px; box-shadow: 0 24px 60px -12px rgba(36,28,92,.28); overflow: hidden; transform-origin: top right; }
.rvb-bell__panel[hidden] { display: none; }
.rvb-bell__head { display: flex; align-items: center; justify-content: space-between; padding: 13px 16px; border-bottom: 1px solid var(--b-border); }
.rvb-bell__head b { color: var(--b-ink); font-size: 15px; }
.rvb-linkbtn { background: none; border: 0; padding: 0; color: var(--b-brand); font-weight: 600; font-size: 13px; cursor: pointer; }
.rvb-linkbtn:hover { text-decoration: underline; }
.rvb-bell__list { list-style: none; margin: 0; padding: 6px; max-height: min(420px, 60vh); overflow: auto; }
.rvb-bell__list a { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr) 10px; gap: 10px; align-items: start; padding: 10px; border-radius: 12px; text-decoration: none; color: var(--b-text); }
.rvb-bell__list a:hover { background: var(--b-sunk); }
.rvb-bell__list li.is-new a { background: var(--b-brand-50); }
.rvb-bell__ic, .rvb-feed__ic { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; background: var(--b-brand-100); color: var(--b-brand-d); }
.rvb-bell__txt { display: grid; gap: 2px; min-width: 0; }
.rvb-bell__txt b { font-size: 13.5px; font-weight: 600; color: var(--b-ink); line-height: 1.35; }
.rvb-bell__txt small { font-size: 12px; color: var(--b-muted); }
.rvb-bell__new { width: 8px; height: 8px; margin-top: 6px; border-radius: 50%; background: var(--b-brand); }
.rvb-bell__empty { display: grid; justify-items: center; gap: 8px; margin: 0; padding: 28px 22px; text-align: center; color: var(--b-muted); font-size: 13.5px; }
.rvb-bell__all { display: block; padding: 12px; text-align: center; border-top: 1px solid var(--b-border); font-weight: 600; font-size: 13.5px; color: var(--b-brand); text-decoration: none; }
.rvb-bell__all:hover { background: var(--b-brand-50); }
@media (prefers-reduced-motion: no-preference) {
  .rvb-bell__panel:not([hidden]) { animation: rvb-pop .18s var(--b-ease); }
  .rvb-bell__btn.has-new svg { animation: rvb-ring 1.6s var(--b-ease) .4s 2; transform-origin: 50% 10%; }
}
@keyframes rvb-pop { from { opacity: 0; transform: translateY(-6px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes rvb-ring { 0%, 100% { transform: rotate(0); } 15% { transform: rotate(14deg); } 30% { transform: rotate(-12deg); } 45% { transform: rotate(8deg); } 60% { transform: rotate(-4deg); } 75% { transform: rotate(0); } }

/* ---- Notifications page ------------------------------------------------------ */
.rvb-feed { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.rvb-feed a { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto 10px; gap: 14px; align-items: center; padding: 14px 16px; border-radius: 14px; background: #fff; border: 1px solid var(--b-border); text-decoration: none; color: var(--b-text); transition: border-color .2s, transform .2s var(--b-ease), box-shadow .2s; }
.rvb-feed a:hover { border-color: var(--b-brand-100); box-shadow: var(--b-shadow-md); transform: translateY(-1px); }
.rvb-feed li.is-new a { background: linear-gradient(90deg, var(--b-brand-50), #fff 60%); border-color: var(--b-brand-100); }
.rvb-feed__txt { display: grid; gap: 2px; min-width: 0; }
.rvb-feed__txt b { color: var(--b-ink); font-size: 14.5px; }
.rvb-feed__txt span { color: var(--b-muted); font-size: 13.5px; overflow-wrap: anywhere; }
.rvb-feed small { color: var(--b-muted); font-size: 12.5px; white-space: nowrap; }
@media (max-width: 600px) { .rvb-feed a { grid-template-columns: 34px minmax(0, 1fr) 10px; } .rvb-feed small { grid-column: 2; } }

/* ---- Messages inbox ---------------------------------------------------------- */
.rvb-inbox { display: grid; grid-template-columns: minmax(230px, 300px) minmax(0, 1fr); gap: 0; min-height: 560px; background: #fff; border: 1px solid var(--b-border); border-radius: var(--b-radius); box-shadow: var(--b-shadow); overflow: hidden; }
.rvb-inbox__list { border-right: 1px solid var(--b-border); padding: 10px; background: var(--b-bg); overflow: auto; max-height: 720px; }
.rvb-inbox__label { margin: 14px 8px 6px; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--b-subtle); }
.rvb-conv { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px; border-radius: 12px; text-decoration: none; color: var(--b-text); transition: background .15s; }
.rvb-conv:hover { background: #fff; }
.rvb-conv.is-active { background: #fff; box-shadow: inset 3px 0 0 var(--b-brand), var(--b-shadow); }
.rvb-conv__av { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; background: var(--b-brand-100); color: var(--b-brand-d); font-weight: 800; font-size: 12px; }
.rvb-conv__av--brand { background: linear-gradient(135deg, var(--b-brand), var(--rv-violet-800, #36298A)); color: #fff; }
.rvb-conv__txt { display: grid; min-width: 0; }
.rvb-conv__txt b { font-size: 14px; color: var(--b-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rvb-conv__txt small { font-size: 12px; color: var(--b-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rvb-inbox__thread { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; min-width: 0; }
.rvb-inbox__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--b-border); }
.rvb-inbox__head p { margin: 2px 0 0; font-size: 13px; }
.rvb-inbox__ext { display: flex; gap: 6px; flex-wrap: wrap; }
.rvb-inbox__scroll { padding: 18px; overflow: auto; max-height: 520px; background:
  radial-gradient(circle at 1px 1px, rgba(84,64,201,.07) 1px, transparent 0) 0 0 / 18px 18px, #FCFBFF; }
.rvb-inbox__scroll .rvb-thread { margin: 0; }
.rvb-inbox__scroll .rvb-thread li { box-shadow: 0 1px 2px rgba(36,28,92,.05); }
.rvb-inbox__scroll .rvb-thread li.is-me { background: var(--b-brand); color: #fff; }
.rvb-inbox__scroll .rvb-thread li.is-me .rvb-thread__meta, .rvb-inbox__scroll .rvb-thread li.is-me a { color: rgba(255,255,255,.85); }
.rvb-inbox__empty { display: grid; justify-items: center; gap: 10px; padding: 48px 16px; text-align: center; color: var(--b-muted); }
.rvb-inbox__empty p { display: grid; gap: 4px; margin: 0; }
.rvb-inbox__empty b { color: var(--b-ink); }
.rvb-composer { padding: 12px 14px; border-top: 1px solid var(--b-border); background: #fff; }
.rvb-composer textarea { width: 100%; min-height: 54px; resize: vertical; padding: 11px 13px; border: 1px solid var(--b-border-s); border-radius: 12px; font: inherit; font-size: 14.5px; }
.rvb-composer textarea:focus { outline: none; border-color: var(--b-brand); box-shadow: 0 0 0 4px var(--b-brand-50); }
.rvb-composer__bar { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.rvb-composer__bar .rvb-hint { margin: 0 0 0 auto; font-size: 12px; }
.rvb-composer__file { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; color: var(--b-muted); cursor: pointer; }
.rvb-composer__file:hover, .rvb-composer__file:focus-within { background: var(--b-sunk); color: var(--b-brand-d); }
.rvb-composer__file input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.rvb-composer__fname { font-size: 12.5px; color: var(--b-brand-d); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 220px; }
@media (max-width: 860px) {
  .rvb-inbox { grid-template-columns: minmax(0, 1fr); }
  .rvb-inbox__list { display: flex; gap: 6px; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--b-border); max-height: none; }
  .rvb-inbox__label { display: none; }
  .rvb-conv { flex: 0 0 auto; grid-template-columns: 32px auto auto; }
  .rvb-conv__av { width: 32px; height: 32px; }
  .rvb-conv__txt small { display: none; }
  .rvb-composer__bar .rvb-hint { display: none; }
  .rvb-composer__bar .rv-btn { margin-left: auto; }
}

/* ---- Typography & primitives ----------------------------------------------- */
.rvb-h1 { margin: 0 0 6px; font-family: var(--rv-font-display, inherit); font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); line-height: 1.15; letter-spacing: -.02em; color: var(--b-ink); }
.rvb-h2 { display: flex; align-items: center; gap: 8px; margin: 0 0 14px; font-family: var(--rv-font-display, inherit); font-size: 1.15rem; letter-spacing: -.01em; color: var(--b-ink); }
.rvb-h2 small { font-family: var(--rv-font-body, inherit); font-size: 12px; font-weight: 600; color: var(--b-subtle); text-transform: uppercase; letter-spacing: .06em; }
.rvb-h3 { margin: 0 0 10px; font-family: var(--rv-font-display, inherit); font-size: 1.05rem; color: var(--b-ink); letter-spacing: -.01em; }
.rvb-h4 { margin: 16px 0 8px; font-size: .95rem; color: var(--b-ink); }
.rvb-kicker { margin: 0 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--b-brand); }
.rvb-kicker a { color: inherit; text-decoration: none; }
.rvb-muted { color: var(--b-muted); }
.rvb-hint { margin: 6px 0 0; font-size: 13px; color: var(--b-muted); line-height: 1.5; }
.rvb-link { color: var(--b-brand); font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.rvb-link:hover { text-decoration: underline; }
.rvb-break { overflow-wrap: anywhere; word-break: break-word; }
.rvb-pagehead { margin-bottom: 18px; }
.rvb-pagehead p { margin: 0; color: var(--b-muted); }
.rvb-pagehead--row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px; }
.rvb-head-actions, .rvb-btnrow { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.rvb-head-actions form, .rvb-btnrow form { margin: 0; }
.rvb-wide { width: 100%; }
.rvb-panel { background: var(--b-surface); border: 1px solid var(--b-border); border-radius: var(--b-radius); padding: clamp(16px, 1.5vw, 22px); box-shadow: var(--b-shadow); margin-bottom: 18px; }
.rvb-panel__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.rvb-grid2 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
@media (min-width: 900px) { .rvb-grid2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rvb-row2 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 14px; }
@media (min-width: 640px) { .rvb-row2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Badges: icon + word, never colour alone */
.rvb-badge { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px; border-radius: 999px; font-size: 12px; font-weight: 650; background: var(--b-sunk); color: var(--b-text); white-space: nowrap; }
.rvb-badges { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 0; }
.rvb-badge--f-not_started { background: var(--b-sunk); color: var(--b-muted); }
.rvb-badge--f-processing, .rvb-badge--f-awaiting_content_approval { background: var(--b-brand-50); color: var(--b-brand-d); }
.rvb-badge--f-delivered { background: var(--b-sky-50); color: var(--b-sky); }
.rvb-badge--f-improvement_requested { background: var(--b-amber-50); color: var(--b-amber); }
.rvb-badge--f-completed, .rvb-badge--p-paid { background: var(--b-green-50); color: var(--b-green); }
.rvb-badge--f-cancelled, .rvb-badge--p-refunded { background: #EFEDF4; color: var(--b-muted); }
.rvb-badge--p-unpaid { background: var(--b-amber-50); color: var(--b-amber); }
.rvb-badge--p-partially_paid, .rvb-badge--p-partially_refunded { background: var(--b-teal-50); color: var(--b-teal); }
.rvb-badge--overdue { background: var(--b-rose-50); color: var(--b-rose); }
.rvb-badge--t-awaiting_buyer { background: var(--b-amber-50); color: var(--b-amber); }
.rvb-badge--t-awaiting_support, .rvb-badge--t-open { background: var(--b-brand-50); color: var(--b-brand-d); }
.rvb-badge--t-resolved { background: var(--b-green-50); color: var(--b-green); }

/* Notices */
.rvb-notice { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; margin: 0 0 16px; border-radius: 14px; border: 1px solid; font-size: 14px; }
.rvb-notice p, .rvb-notice ul { margin: 0; }
.rvb-notice ul { padding-left: 18px; margin-top: 4px; }
.rvb-notice .rv-icon { flex: none; margin-top: 1px; }
.rvb-notice--success { background: var(--b-green-50); border-color: #C8EBD5; color: var(--b-green); }
.rvb-notice--error { background: var(--b-rose-50); border-color: #F5C7D8; color: var(--b-rose); }
.rvb-notice--warn { background: var(--b-amber-50); border-color: #F3DEB0; color: var(--b-amber); }
.rvb-notice--info { background: var(--b-sky-50); border-color: #C6DCFC; color: var(--b-sky); }
.rvb-notice form { margin-top: 8px; }
.rvb-warn { display: flex; gap: 6px; align-items: flex-start; margin: 8px 0; padding: 8px 10px; border-radius: 10px; background: var(--b-amber-50); color: var(--b-amber); font-size: 13px; }
.rvb-warn ul { margin: 4px 0 0; padding-left: 18px; }
.rvb-ok { display: flex; gap: 6px; align-items: center; color: var(--b-green); font-weight: 600; }
.rvb-demo { display: inline-block; margin: 0; padding: 1px 8px; border: 1px dashed rgba(227,154,14,.7); border-radius: 6px; color: var(--b-amber); font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }

/* Empty state with angular colour bands */
.rvb-empty { position: relative; overflow: hidden; display: grid; justify-items: center; gap: 8px; padding: 40px 22px; text-align: center; background: var(--b-surface); border: 1px solid var(--b-border); border-radius: var(--b-radius); }
.rvb-empty::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .7;
  background: linear-gradient(115deg, transparent 0 62%, rgba(106,85,227,.06) 62% 72%, rgba(15,156,140,.06) 72% 80%, transparent 80%),
              linear-gradient(115deg, transparent 0 8%, rgba(238,98,71,.05) 8% 14%, transparent 14%);
}
.rvb-empty > * { position: relative; }
.rvb-empty h3 { margin: 4px 0 0; color: var(--b-ink); font-size: 1.05rem; }
.rvb-empty p { margin: 0 0 6px; max-width: 46ch; color: var(--b-muted); font-size: 14px; }
.rvb-empty__icon { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 16px; background: var(--b-brand-50); color: var(--b-brand); }

/* ---- Dashboard ------------------------------------------------------------- */
.rvb-welcome {
  position: relative; overflow: hidden; isolation: isolate; display: grid; gap: 14px; align-items: center;
  padding: clamp(20px, 2vw, 28px); margin-bottom: 20px; border-radius: var(--b-radius);
  background: linear-gradient(120deg, #fff 0%, var(--b-brand-50) 100%); border: 1px solid var(--b-brand-100);
}
@media (min-width: 900px) { .rvb-welcome { grid-template-columns: minmax(0, 1fr) auto; } }
.rvb-welcome__bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.rvb-welcome__bg span {
  position: absolute; inset: -40% -10%; opacity: .55;
  background: repeating-linear-gradient(115deg, rgba(106,85,227,.0) 0 26px, rgba(106,85,227,.07) 26px 27px),
              linear-gradient(115deg, transparent 30%, rgba(15,156,140,.10) 50%, transparent 70%);
  animation: rvb-mesh 26s linear infinite;
}
.rvb-welcome__bg span + span { animation-duration: 38s; animation-direction: reverse; opacity: .35; }
@keyframes rvb-mesh { from { transform: translateX(-6%); } to { transform: translateX(6%); } }
.rvb-welcome.is-paused .rvb-welcome__bg span, .rvb-reduce-motion .rvb-welcome__bg span { animation-play-state: paused; }
.rvb-welcome p { margin: 0; color: var(--b-text); }
.rvb-welcome__ctas { display: flex; flex-wrap: wrap; gap: 10px; }

/* ---- Reseller (partner) look: deep aurora hero + soft moving page glow ---- */
.rvb-shell.is-reseller { position: relative; isolation: isolate; }
.rvb-resbg { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.rvb-resbg span { position: absolute; width: 46vmax; height: 46vmax; border-radius: 50%; filter: blur(90px); opacity: .16; animation: rvb-res-orb 28s ease-in-out infinite alternate; }
.rvb-resbg span:nth-child(1) { left: -12vmax; top: -16vmax; background: #6A55E3; }
.rvb-resbg span:nth-child(2) { right: -14vmax; top: 20vh; background: #0F9C8C; animation-duration: 34s; animation-delay: -10s; }
.rvb-resbg span:nth-child(3) { left: 30vw; bottom: -22vmax; background: #EE6247; opacity: .09; animation-duration: 40s; animation-delay: -18s; }
@keyframes rvb-res-orb { 0% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(4vmax, 3vmax, 0) scale(1.08); } 100% { transform: translate3d(-3vmax, -2vmax, 0) scale(.94); } }
.rvb-welcome--reseller {
  color: #EEEBFF; border-color: rgba(255,255,255,.08);
  background: radial-gradient(120% 140% at 0% 0%, #3A2C9E 0%, transparent 55%), radial-gradient(90% 120% at 100% 100%, #0C6A62 0%, transparent 60%), linear-gradient(140deg, #18133A 0%, #241B5C 55%, #141032 100%);
  box-shadow: 0 30px 60px -36px rgba(36, 28, 92, .8);
}
.rvb-welcome--reseller .rvb-h1 { color: #fff; }
.rvb-welcome--reseller p { color: rgba(238, 235, 255, .82); }
.rvb-welcome--reseller p strong { color: #fff; }
.rvb-welcome--reseller .rvb-kicker { color: #9FE8DC; display: flex; align-items: center; gap: 8px; }
.rvb-welcome--reseller .rvb-welcome__bg span { background: radial-gradient(closest-side, rgba(139,120,245,.55), transparent 70%); inset: auto; width: 420px; height: 420px; left: -80px; top: -160px; opacity: .7; border-radius: 50%; filter: blur(30px); animation: rvb-res-orb 18s ease-in-out infinite alternate; }
.rvb-welcome--reseller .rvb-welcome__bg span + span { background: radial-gradient(closest-side, rgba(46,196,176,.5), transparent 70%); left: auto; right: -120px; top: 20px; animation-duration: 24s; animation-direction: alternate-reverse; }
.rvb-welcome--reseller .rvb-welcome__bg span + span + span { background: radial-gradient(closest-side, rgba(238,98,71,.35), transparent 70%); left: 45%; top: 60%; width: 300px; height: 300px; animation-duration: 30s; }
.rvb-welcome__grid { position: absolute; inset: 0; background-image: linear-gradient(to right, rgba(255,255,255,.06) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,.06) 1px, transparent 1px); background-size: 34px 34px; -webkit-mask-image: radial-gradient(ellipse 70% 80% at 30% 40%, #000 20%, transparent 75%); mask-image: radial-gradient(ellipse 70% 80% at 30% 40%, #000 20%, transparent 75%); animation: rvb-res-grid 22s linear infinite; }
@keyframes rvb-res-grid { to { background-position: 34px 34px, 34px 34px; } }
.rvb-welcome--reseller .rv-btn--secondary { background: rgba(255,255,255,.1); color: #fff; border-color: rgba(255,255,255,.22); }
.rvb-welcome--reseller .rvb-motion-toggle { color: #fff; }
.rvb-resbadge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 999px; font-size: 11.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: #fff; background: linear-gradient(120deg, #6A55E3, #0F9C8C); background-size: 200% 100%; animation: rvb-res-badge 6s ease-in-out infinite alternate; box-shadow: 0 6px 16px -8px rgba(106,85,227,.8); vertical-align: middle; }
@keyframes rvb-res-badge { to { background-position: 100% 0; } }
.rvb-price--reseller { background: linear-gradient(140deg, #F1EEFF, #E9FAF6); border-color: #CFC6FB; }
.rvb-price__row .rvb-price__tag { background: linear-gradient(120deg, #6A55E3, #0F9C8C); color: #fff; }
.rvb-price--soon { background: repeating-linear-gradient(135deg, #FAF9FF 0 10px, #F3F1FB 10px 20px); border-style: dashed; }
.rvb-price--soon b { font-size: 1.1rem !important; color: var(--b-muted) !important; }
/* Content-only offer */
.rvb-offer { position: relative; overflow: hidden; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; margin: 0 0 20px; padding: 14px 18px; border-radius: 16px; background: linear-gradient(120deg, #FFF8EE, #fff 60%); border: 1px solid #F4DDB5; }
.rvb-offer::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 35%, rgba(255,255,255,.65) 50%, transparent 65%); transform: translateX(-100%); animation: rvb-offer-sheen 7s ease-in-out infinite; pointer-events: none; }
@keyframes rvb-offer-sheen { 0%, 70% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
.rvb-offer__i { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; background: #FCEBD0; color: #94620B; }
.rvb-offer h2 { margin: 0 0 2px; }
.rvb-offer p { margin: 0; font-size: 14px; color: var(--b-muted); }
.rvb-offer p b { color: var(--b-ink); }
.rvb-offer--compact { padding: 10px 14px; }
.rvb-offer--compact h2 { font-size: 15px; }
@media (max-width: 700px) { .rvb-offer { grid-template-columns: auto minmax(0, 1fr); } .rvb-offer form { grid-column: 1 / -1; } .rvb-offer form .rv-btn { width: 100%; justify-content: center; } }
@media (prefers-reduced-motion: reduce) { .rvb-resbg span, .rvb-welcome__grid, .rvb-resbadge, .rvb-offer::after, .rvb-welcome--reseller .rvb-welcome__bg span { animation: none !important; } }
.rvb-motion-toggle { position: absolute; right: 10px; bottom: 10px; width: 30px; height: 30px; display: grid; place-items: center; border: 1px solid var(--b-border); border-radius: 9px; background: rgba(255,255,255,.85); color: var(--b-muted); cursor: pointer; }
.rvb-motion-toggle[aria-pressed="true"] { color: var(--b-brand); border-color: var(--b-brand-100); }
.rvb-intent { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.rvb-intent p { margin: 0; flex: 1; min-width: 200px; }
.rvb-intent form { margin: 0; }
.rvb-intent > .rv-icon { color: var(--b-brand); }

.rvb-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr)); gap: 12px; margin-bottom: 20px; }
.rvb-stats--4 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); }
@media (max-width: 600px) {
  .rvb-stats, .rvb-stats--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .rvb-stats .rvb-stat { padding: 14px 12px; }
  .rvb-stats .rvb-stat small, .rvb-stats .rvb-stat p { font-size: 12px; }
}
.rvb-stat { position: relative; display: grid; gap: 2px; padding: 16px; background: #fff; border: 1px solid var(--b-border); border-radius: 16px; box-shadow: var(--b-shadow); }
.rvb-stat b { font-family: var(--rv-font-display, inherit); font-size: 1.6rem; line-height: 1.15; color: var(--b-ink); letter-spacing: -.02em; overflow-wrap: anywhere; }
.rvb-stat > span:not(.rvb-stat__i) { font-weight: 600; color: var(--b-ink); font-size: 14px; }
.rvb-stat small { color: var(--b-muted); font-size: 12px; line-height: 1.4; }
.rvb-stat__i { display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 8px; border-radius: 10px; background: var(--b-brand-50); color: var(--b-brand); }
.rvb-stat--green .rvb-stat__i { background: var(--b-green-50); color: var(--b-green); }
.rvb-stat--sky .rvb-stat__i { background: var(--b-sky-50); color: var(--b-sky); }
.rvb-stat--amber .rvb-stat__i { background: var(--b-amber-50); color: var(--b-amber); }
.rvb-stat--rose .rvb-stat__i { background: var(--b-rose-50); color: var(--b-rose); }
.rvb-stat--coral .rvb-stat__i { background: var(--b-coral-50); color: var(--b-coral); }
.rvb-stat--teal .rvb-stat__i { background: var(--b-teal-50); color: var(--b-teal); }
.rvb-stat--money { background: linear-gradient(140deg, #fff, var(--b-brand-50)); border-color: var(--b-brand-100); }
a.rvb-stat--link { color: inherit; text-decoration: none; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
a.rvb-stat--link:hover { transform: translateY(-2px); border-color: var(--b-brand-100); box-shadow: 0 14px 30px -18px rgba(54, 41, 138, .45); }
a.rvb-stat--link:focus-visible { outline: 3px solid var(--b-brand-100); outline-offset: 2px; }
.rvb-stat__go { position: absolute; top: 14px; right: 14px; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: var(--b-muted); background: var(--b-brand-50); opacity: .55; transition: opacity .2s ease, transform .2s ease; font-style: normal; }
a.rvb-stat--link:hover .rvb-stat__go { opacity: 1; transform: translateX(2px); color: var(--b-ink); }
@media (prefers-reduced-motion: reduce) { a.rvb-stat--link, .rvb-stat__go { transition: none; } a.rvb-stat--link:hover { transform: none; } }

.rvb-actions, .rvb-list, .rvb-notes { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.rvb-actions a { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--b-border); border-radius: 12px; text-decoration: none; color: var(--b-text); transition: border-color .16s ease, background-color .16s ease; }
.rvb-actions a:hover, .rvb-actions a:focus-visible { border-color: var(--b-brand-100); background: var(--b-brand-50); }
.rvb-actions a > .rv-icon:first-child { flex: none; color: var(--b-brand); }
.rvb-actions span { flex: 1; min-width: 0; display: grid; }
.rvb-actions b { color: var(--b-ink); font-size: 14px; }
.rvb-actions small { color: var(--b-muted); font-size: 12.5px; }
.rvb-list li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 0; border-top: 1px solid var(--b-border); }
.rvb-list li:first-child { border-top: 0; }
.rvb-list a { display: grid; min-width: 0; text-decoration: none; color: var(--b-text); }
.rvb-list a b { color: var(--b-ink); }
.rvb-list a span { font-size: 13px; color: var(--b-muted); overflow-wrap: anywhere; }
.rvb-list a:hover b { color: var(--b-brand); }
.rvb-notes a { display: grid; padding: 9px 12px; border-radius: 10px; text-decoration: none; color: var(--b-text); }
.rvb-notes li.is-new a { background: var(--b-brand-50); }
.rvb-notes b { font-size: 14px; color: var(--b-ink); }
.rvb-notes small { color: var(--b-muted); }

/* ---- Browse ---------------------------------------------------------------- */
.rvb-tabs { display: flex; gap: 4px; margin-bottom: 14px; padding: 4px; background: #fff; border: 1px solid var(--b-border); border-radius: 14px; width: fit-content; max-width: 100%; }
.rvb-tabs--scroll { overflow-x: auto; scrollbar-width: thin; }
.rvb-tab { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border-radius: 10px; color: var(--b-text); text-decoration: none; font-weight: 600; font-size: 14px; white-space: nowrap; }
.rvb-tab:hover { color: var(--b-brand-d); background: var(--b-brand-50); }
.rvb-tab.is-on { background: var(--b-brand); color: #fff; }
.rvb-filters {
  position: relative; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); gap: 10px 12px; align-items: end;
  padding: 16px; margin-bottom: 14px; border: 1px solid var(--b-border); border-radius: var(--b-radius);
  background: radial-gradient(circle at 1px 1px, rgba(84,64,201,.10) 1px, transparent 0) 0 0 / 16px 16px, #fff;
}
.rvb-filters .rvb-f { margin: 0; }
.rvb-f--q { grid-column: span 2; }
@media (max-width: 420px) { .rvb-f--q { grid-column: auto; } }
.rvb-filters__btns { display: flex; gap: 8px; flex-wrap: wrap; }
.rvb-filters--compact { grid-template-columns: repeat(auto-fill, minmax(min(100%, 160px), 1fr)); }
.rvb-count-line { margin: 0 0 12px; font-weight: 600; color: var(--b-ink); }
.rvb-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 285px), 1fr)); gap: 16px; }
.rvb-cards--one { grid-template-columns: minmax(0, 420px); }
.rvb-focus { margin-bottom: 18px; }

.rvb-card {
  position: relative; display: flex; flex-direction: column; gap: 10px; min-width: 0; padding: 16px;
  background: #fff; border: 1px solid var(--b-border); border-radius: 18px; box-shadow: var(--b-shadow);
  transition: border-color .2s ease, box-shadow .25s var(--b-ease);
}
.rvb-card:hover, .rvb-card:focus-within { border-color: var(--b-brand-100); box-shadow: var(--b-shadow-md); }
.rvb-card.is-off { opacity: .8; }
.rvb-card__head { display: flex; align-items: center; gap: 10px; min-width: 0; }
.rvb-fav { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 11px; background: linear-gradient(140deg, #fff, var(--b-brand-100)); color: var(--b-brand-d); font-weight: 700; box-shadow: inset 0 0 0 1px rgba(84,64,201,.15); }
.rvb-card__id { flex: 1; min-width: 0; }
.rvb-card__id h3 { margin: 0; font-size: 15.5px; color: var(--b-ink); overflow-wrap: anywhere; line-height: 1.3; }
.rvb-card__id p { margin: 0; font-size: 12.5px; color: var(--b-muted); }
.rvb-save-form { margin: 0; }
.rvb-save { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--b-border); background: #fff; color: var(--b-subtle); cursor: pointer; transition: color .15s, background-color .15s, border-color .15s; }
.rvb-save:hover { color: var(--rv-rose-500, #DD457E); }
.rvb-save[aria-pressed="true"] { color: var(--rv-rose-500, #DD457E); background: var(--b-rose-50); border-color: #F5C2D5; }
.rvb-save[aria-pressed="true"] svg { fill: currentColor; }
.rvb-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 0; }
.rvb-metrics div { padding: 8px 10px; border-radius: 11px; background: var(--b-sunk); }
.rvb-metrics dt { font-size: 11px; font-weight: 700; color: var(--b-muted); letter-spacing: .05em; }
.rvb-metrics dd { margin: 0; font-weight: 700; color: var(--b-ink); font-size: 15px; }
.rvb-facts { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 13px; color: var(--b-text); }
.rvb-facts li { display: flex; align-items: center; gap: 6px; }
.rvb-facts .rv-icon { color: var(--b-subtle); flex: none; }
.rvb-price { display: grid; gap: 2px; padding: 10px 12px; border-radius: 12px; background: linear-gradient(140deg, var(--b-brand-50), #fff); border: 1px solid var(--b-brand-100); }
.rvb-price__label { font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--b-muted); }
.rvb-price__row { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; }
.rvb-price__row b { font-family: var(--rv-font-display, inherit); font-size: 1.5rem; color: var(--b-ink); }
.rvb-price__row s { color: var(--b-subtle); font-size: 14px; }
.rvb-price__row em { font-style: normal; font-size: 12px; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: var(--b-green-50); color: var(--b-green); }
.rvb-price__save { font-size: 12.5px; color: var(--b-green); font-weight: 600; }
.rvb-more summary { cursor: pointer; color: var(--b-brand); font-weight: 600; font-size: 13.5px; }
.rvb-more[open] summary { margin-bottom: 8px; }
.rvb-more p { font-size: 13.5px; margin: 0 0 8px; }
.rvb-svc { width: 100%; border-collapse: collapse; font-size: 13px; margin: 6px 0; }
.rvb-svc th, .rvb-svc td { text-align: left; padding: 6px 4px; border-top: 1px solid var(--b-border); }
.rvb-svc thead th { border-top: 0; color: var(--b-muted); font-size: 11.5px; text-transform: uppercase; letter-spacing: .04em; }
.rvb-card__cta { margin: auto 0 0; }
.rvb-card__cta .rv-btn { width: 100%; }
.rvb-card__cta .rv-btn.is-added { background: var(--rv-green-500, #1F9D55); }
.rvb-unavail-wrap { display: grid; gap: 6px; }

/* ---- Forms ----------------------------------------------------------------- */
.rvb-f { display: grid; gap: 6px; margin: 0 0 14px; min-width: 0; }
.rvb-f > span:first-child { font-size: 13px; font-weight: 600; color: var(--b-ink); }
.rvb-main input[type="text"], .rvb-main input[type="email"], .rvb-main input[type="url"], .rvb-main input[type="tel"], .rvb-main input[type="password"], .rvb-main input[type="number"], .rvb-main input[type="search"], .rvb-main input[type="date"], .rvb-main select, .rvb-main textarea {
  width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--b-border-s); border-radius: 11px; background: #fff;
  font: inherit; font-size: 15px; color: var(--b-ink); transition: border-color .15s ease, box-shadow .15s ease;
}
.rvb-main textarea { min-height: 80px; resize: vertical; line-height: 1.5; }
.rvb-main select { appearance: none; -webkit-appearance: none; padding-right: 32px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2367637F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center; }
.rvb-main input:focus-visible, .rvb-main select:focus-visible, .rvb-main textarea:focus-visible { outline: none; border-color: var(--b-brand); box-shadow: 0 0 0 3px rgba(106,85,227,.2); }
.rvb-main [aria-invalid="true"] { border-color: var(--rv-rose-500, #DD457E); }
.rvb-field__err { margin: 0; color: var(--b-rose); font-size: 13px; font-weight: 600; }
.rvb-check { display: flex; align-items: flex-start; gap: 8px; margin: 0 0 12px; font-size: 14px; color: var(--b-text); }
.rvb-check input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--b-brand); flex: none; }
.rvb-pass { position: relative; display: block; }
.rvb-pass input { padding-right: 48px; }
.rvb-pass__btn { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: 40px; height: 36px; display: grid; place-items: center; border: 0; background: none; color: var(--b-muted); cursor: pointer; border-radius: 9px; }
.rvb-pass__btn[aria-pressed="true"] { color: var(--b-brand); }
.rvb-form .rv-btn { margin-top: 4px; }
.rvb-inline { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px; }
.rvb-inline .rvb-f { margin: 0; flex: 1; min-width: 160px; }
.rvb-new { margin-bottom: 16px; }
.rvb-new > summary { list-style: none; cursor: pointer; display: inline-flex; margin-bottom: 12px; }
.rvb-new > summary::-webkit-details-marker { display: none; }

/* ---- Cart & item ----------------------------------------------------------- */
.rvb-cart { display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1100px) { .rvb-cart { grid-template-columns: minmax(0, 1fr) 320px; } .rvb-summary { position: sticky; top: calc(var(--rv-header-h, 72px) + 20px); } }
.rvb-cart__lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.rvb-line { padding: 16px; background: #fff; border: 1px solid var(--b-border); border-radius: 18px; box-shadow: var(--b-shadow); }
.rvb-line.is-changed { border-color: #F3DEB0; }
.rvb-line.has-error { border-color: #F5C7D8; }
.rvb-line__head { display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.rvb-line__head > div { flex: 1; min-width: 0; }
.rvb-line__head .rvb-h3 { margin: 0; overflow-wrap: anywhere; }
.rvb-line__head p { margin: 2px 0 0; font-size: 13px; }
.rvb-line__n { display: grid; place-items: center; flex: none; width: 30px; height: 30px; border-radius: 9px; background: var(--b-sunk); font-weight: 700; color: var(--b-muted); }
.rvb-line__status { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; }
.rvb-line__status.is-ready { background: var(--b-green-50); color: var(--b-green); }
.rvb-line__status.is-todo { background: var(--b-amber-50); color: var(--b-amber); }
.rvb-line__err { margin: 10px 0 0; padding: 10px 12px 10px 28px; border-radius: 10px; background: var(--b-rose-50); color: var(--b-rose); font-size: 13.5px; }
.rvb-line__cfg { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr)); gap: 10px; margin: 12px 0 0; }
.rvb-line__cfg .rvb-f { margin: 0; }
.rvb-line__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.rvb-line__actions form { margin: 0; }
.rvb-breakdown { margin: 12px 0 0; display: grid; gap: 0; font-size: 14px; }
.rvb-breakdown div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-top: 1px dashed var(--b-border); }
.rvb-breakdown div:first-child { border-top: 0; }
.rvb-breakdown dt { color: var(--b-muted); }
.rvb-breakdown dd { margin: 0; font-weight: 600; color: var(--b-ink); text-align: right; overflow-wrap: anywhere; }
.rvb-breakdown .is-disc dd { color: var(--b-green); }
.rvb-breakdown .is-total { border-top: 1px solid var(--b-border-s); }
.rvb-breakdown .is-total dt, .rvb-breakdown .is-total dd { color: var(--b-ink); font-weight: 700; }
.rvb-breakdown .is-total dd { font-size: 1.1rem; }
.rvb-summary { padding: 18px; background: #fff; border: 1px solid var(--b-border); border-radius: 18px; box-shadow: var(--b-shadow-md); }
.rvb-terms { display: flex; gap: 8px; align-items: flex-start; margin: 14px 0; padding: 10px 12px; border-radius: 12px; background: var(--b-sky-50); color: var(--b-sky); font-size: 13.5px; line-height: 1.45; }
.rvb-terms .rv-icon { flex: none; margin-top: 2px; }

.rvb-itemgrid { display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1100px) { .rvb-itemgrid { grid-template-columns: minmax(0, 1fr) 320px; } .rvb-itemside { position: sticky; top: calc(var(--rv-header-h, 72px) + 20px); } }
.rvb-saved { margin: 0 0 12px; font-size: 12.5px; color: var(--b-muted); }
.rvb-saved.is-err { color: var(--b-rose); font-weight: 600; }
.rvb-saved.is-ok { color: var(--b-green); }
.rvb-links { margin: 6px 0 16px; padding: 14px; border: 1px solid var(--b-border); border-radius: 14px; }
.rvb-links legend { padding: 0 6px; font-weight: 700; color: var(--b-ink); font-size: 14px; }
.rvb-links__row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 12px; align-items: end; }
@media (min-width: 720px) { .rvb-links__row { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; } .rvb-links__row .rvb-f { margin-bottom: 10px; } .rvb-links__row .rv-btn { margin-bottom: 10px; } }
.rvb-links__row[hidden] { display: none; }
.rvb-brief__foot { display: flex; flex-wrap: wrap; gap: 10px; padding-top: 12px; border-top: 1px solid var(--b-border); }
.rvb-todo { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: 13.5px; color: var(--b-amber); }
.rvb-todo li { display: flex; gap: 6px; }
.rvb-article { font-size: 15px; line-height: 1.7; color: var(--b-text); overflow-wrap: anywhere; }
.rvb-article h2, .rvb-article h3, .rvb-article h4 { color: var(--b-ink); margin: 1em 0 .4em; }
.rvb-preview summary { cursor: pointer; font-weight: 600; color: var(--b-brand); }
.rvb-main .wp-editor-wrap { border-radius: 12px; overflow: hidden; border: 1px solid var(--b-border-s); }
.rvb-main .mce-tinymce { box-shadow: none !important; border: 0 !important; }

/* Confirmation + modal */
.rvb-confirm { text-align: left; }
.rvb-confirm__ok, .rvb-modal__ok { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 10px; border-radius: 50%; background: var(--b-green-50); color: var(--b-green); }
.rvb-contact { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0; }
.rvb-contact p { margin: 0; }
.rvb-contact .rvb-wa { background: linear-gradient(180deg, #23A55A, #1A8A4A); }
.rvb-modal { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; padding: 16px; background: rgba(23,19,43,.5); }
.rvb-modal[hidden] { display: none; }
.rvb-modal__box { width: min(520px, 100%); max-height: 90vh; overflow: auto; padding: 24px; background: #fff; border-radius: 20px; box-shadow: 0 30px 60px rgba(23,19,43,.35); animation: rvb-pop .3s var(--b-ease); }
@keyframes rvb-pop { from { opacity: 0; transform: translateY(10px) scale(.98); } }

/* ---- Purchases & order ----------------------------------------------------- */
.rvb-tablewrap { background: #fff; border: 1px solid var(--b-border); border-radius: 18px; box-shadow: var(--b-shadow); overflow-x: auto; margin-bottom: 16px; }
.rvb-table tbody th a, .rvb-table .rvb-break { white-space: nowrap; }
.rvb-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.rvb-table th, .rvb-table td { padding: 12px 10px; text-align: left; border-top: 1px solid var(--b-border); vertical-align: middle; }
.rvb-table thead th { border-top: 0; background: var(--b-brand-50); color: var(--b-muted); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.rvb-table tbody th { font-weight: 600; }
.rvb-table tbody th a { color: var(--b-brand-d); text-decoration: none; }
.rvb-table tbody tr:hover td, .rvb-table tbody tr:hover th { background: #FCFBFF; }
.rvb-table .num { text-align: right; white-space: nowrap; }
@media (max-width: 860px) {
  .rvb-tablewrap { background: transparent; border: 0; box-shadow: none; }
  .rvb-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .rvb-table, .rvb-table tbody, .rvb-table tr, .rvb-table th, .rvb-table td { display: block; width: 100%; }
  .rvb-table tr { margin-bottom: 10px; padding: 8px 14px; background: #fff; border: 1px solid var(--b-border); border-radius: 14px; box-shadow: var(--b-shadow); }
  .rvb-table th, .rvb-table td { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-top: 1px dashed var(--b-border); text-align: right; }
  .rvb-table tr > :first-child { border-top: 0; }
  .rvb-table [data-label]::before { content: attr(data-label); color: var(--b-muted); font-weight: 600; font-size: 12.5px; text-align: left; flex: none; }
  .rvb-table .num { text-align: right; }
  .rvb-table .rvb-break { white-space: normal; overflow-wrap: anywhere; }
}
.rvb-ordergrid { display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1100px) { .rvb-ordergrid { grid-template-columns: minmax(0, 1fr) 330px; } }
.rvb-callout { border-color: var(--b-sky-50); background: linear-gradient(140deg, var(--b-sky-50), #fff 60%); }
.rvb-callout form { margin: 0; }
.rvb-due { display: flex; gap: 8px; align-items: center; padding: 10px 12px; border-radius: 12px; background: var(--b-amber-50); color: var(--b-amber); font-size: 14px; }
.rvb-due.is-over { background: var(--b-rose-50); color: var(--b-rose); }
.rvb-kv { margin: 10px 0 0; display: grid; gap: 0; font-size: 14px; }
.rvb-kv div { display: grid; grid-template-columns: minmax(110px, 34%) minmax(0, 1fr); gap: 10px; padding: 7px 0; border-top: 1px dashed var(--b-border); }
.rvb-kv div:first-child { border-top: 0; }
.rvb-kv dt { color: var(--b-muted); }
.rvb-kv dd { margin: 0; color: var(--b-ink); overflow-wrap: anywhere; }
.rvb-timeline { list-style: none; margin: 0; padding: 0 0 0 16px; border-left: 2px solid var(--b-border); display: grid; gap: 12px; font-size: 13.5px; }
.rvb-timeline li { position: relative; display: grid; gap: 2px; }
.rvb-timeline li::before { content: ""; position: absolute; left: -22px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: #fff; border: 2px solid var(--b-brand); }
.rvb-timeline b { color: var(--b-ink); }
.rvb-timeline small { color: var(--b-muted); }
.rvb-timeline p { margin: 2px 0 0; }
.rvb-thread { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 10px; }
.rvb-thread li { padding: 10px 14px; border-radius: 14px; background: var(--b-sunk); max-width: 88%; }
.rvb-thread li.is-me { margin-left: auto; background: var(--b-brand-50); }
.rvb-thread li.is-staff { border: 1px solid var(--b-border); background: #fff; }
.rvb-thread p { margin: 0; font-size: 14px; overflow-wrap: anywhere; }
.rvb-thread__meta { font-size: 12px !important; color: var(--b-muted); margin-bottom: 4px !important; }
.rvb-reply { border-top: 1px solid var(--b-border); padding-top: 12px; }
.rvb-draftform { margin-top: 12px; }
.rvb-stars { color: var(--rv-amber-500, #E39A0E); font-size: 20px; letter-spacing: 2px; }
.rvb-stars-input { display: inline-flex; flex-direction: row-reverse; gap: 4px; padding: 0; margin: 0 0 12px; border: 0; }
.rvb-stars-input legend { float: left; width: 100%; font-weight: 600; font-size: 13px; color: var(--b-ink); margin-bottom: 6px; }
.rvb-stars-input input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.rvb-stars-input label { font-size: 30px; line-height: 1; color: var(--b-border-s); cursor: pointer; padding: 2px; border-radius: 6px; }
.rvb-stars-input input:checked ~ label, .rvb-stars-input label:hover, .rvb-stars-input label:hover ~ label { color: var(--rv-amber-500, #E39A0E); }
.rvb-stars-input input:focus-visible + label { box-shadow: 0 0 0 3px rgba(106,85,227,.35); }
.rvb-reviewprompt { border-color: var(--b-amber-50); }

/* Projects (fine editorial lines) */
.rvb-projects { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 14px; }
.rvb-project { position: relative; overflow: hidden; display: grid; gap: 4px; padding: 18px; background: #fff; border: 1px solid var(--b-border); border-radius: 18px; text-decoration: none; color: var(--b-text); box-shadow: var(--b-shadow); transition: border-color .2s ease, box-shadow .25s var(--b-ease); }
.rvb-project:hover, .rvb-project:focus-visible { border-color: var(--b-brand-100); box-shadow: var(--b-shadow-md); }
.rvb-project__lines { position: absolute; inset: 0 0 auto auto; width: 55%; height: 100%; pointer-events: none; background: repeating-linear-gradient(0deg, transparent 0 13px, rgba(84,64,201,.06) 13px 14px); -webkit-mask-image: linear-gradient(90deg, transparent, #000); mask-image: linear-gradient(90deg, transparent, #000); }
.rvb-project > * { position: relative; }
.rvb-project .rvb-h3 { margin: 0; }
.rvb-project p { margin: 0 0 8px; font-size: 13px; }
.rvb-project dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }
.rvb-project dt { font-size: 11.5px; color: var(--b-muted); font-weight: 600; }
.rvb-project dd { margin: 0; font-weight: 700; color: var(--b-ink); }
.rvb-project.is-archived { opacity: .7; }
.rvb-chips { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 0; margin: 0 0 16px; }
.rvb-chips li { display: inline-flex; align-items: center; gap: 6px; }

/* Reports */
.rvb-bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.rvb-bars li { display: grid; grid-template-columns: 170px minmax(0, 1fr) 40px; align-items: center; gap: 10px; font-size: 13.5px; }
.rvb-bars i { height: 10px; border-radius: 6px; background: var(--b-sunk); position: relative; overflow: hidden; }
.rvb-bars i::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--w); background: linear-gradient(90deg, var(--rv-violet-500, #6A55E3), var(--rv-teal-500, #0F9C8C)); border-radius: inherit; transform-origin: left; animation: rvb-grow .8s var(--b-ease) both; }
@keyframes rvb-grow { from { transform: scaleX(0); } }
.rvb-bars b { text-align: right; color: var(--b-ink); }
@media (max-width: 520px) { .rvb-bars li { grid-template-columns: 110px minmax(0, 1fr) 32px; } }

/* Pagination */
.rvb-pg { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 20px 0; }
.rvb-pg__a { display: inline-grid; place-items: center; min-width: 40px; height: 40px; padding: 0 10px; border-radius: 11px; border: 1px solid var(--b-border); background: #fff; color: var(--b-text); text-decoration: none; font-weight: 600; }
.rvb-pg__a:hover { border-color: var(--b-brand-100); color: var(--b-brand-d); }
.rvb-pg__a.is-on { background: var(--b-brand); border-color: var(--b-brand); color: #fff; }

/* Locked + auth */
.rvb-locked { text-align: center; display: grid; justify-items: center; gap: 6px; padding: 40px 20px; }
.rvb-locked > .rv-icon { color: var(--b-brand); }
.rvb-auth { position: relative; isolation: isolate; overflow: hidden; padding: clamp(24px, 4vw, 56px) 16px; }
.rvb-auth__bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(115deg, transparent 0 58%, rgba(106,85,227,.06) 58% 70%, rgba(15,156,140,.05) 70% 78%, transparent 78%), radial-gradient(circle at 1px 1px, rgba(84,64,201,.09) 1px, transparent 0) 0 0 / 18px 18px; }
.rvb-auth__grid { display: grid; gap: 24px; max-width: 980px; margin: 0 auto; align-items: center; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .rvb-auth__grid { grid-template-columns: minmax(0, .9fr) minmax(0, 1fr); } }
.rvb-auth__aside h2 { font-family: var(--rv-font-display, inherit); font-size: clamp(1.5rem, 1.2rem + 1vw, 2.1rem); line-height: 1.15; color: var(--b-ink); margin: 0 0 14px; letter-spacing: -.02em; }
.rvb-auth__aside ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.rvb-auth__aside li { display: flex; gap: 8px; align-items: flex-start; color: var(--b-text); }
.rvb-auth__aside .rv-icon { color: var(--rv-green-500, #1F9D55); flex: none; margin-top: 3px; }
@media (max-width: 899px) { .rvb-auth__aside ul { display: none; } .rvb-auth__aside h2 { font-size: 1.3rem; margin: 0; } }
.rvb-auth__card { padding: clamp(20px, 3vw, 32px); background: #fff; border: 1px solid var(--b-border); border-radius: 22px; box-shadow: var(--b-shadow-md); }
.rvb-auth__links { margin: 14px 0 0; font-size: 14px; color: var(--b-muted); }
.rvb-auth__links a { color: var(--b-brand); font-weight: 600; }
/* Continue with Google */
.rvb-google { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; min-height: 46px; margin: 4px 0 0; padding: 0 16px; border: 1px solid #dadce0; border-radius: 12px; background: #fff; color: #1f1f1f; font-weight: 600; font-size: 15px; text-decoration: none; transition: background-color .15s ease, box-shadow .15s ease; }
.rvb-google:hover { background: #f8f9fb; box-shadow: 0 2px 8px -4px rgba(0,0,0,.25); color: #1f1f1f; }
.rvb-google:focus-visible { outline: 3px solid var(--b-brand-100); outline-offset: 2px; }
.rvb-google__terms { margin: 8px 0 0; font-size: 12.5px; text-align: center; }
.rvb-or { display: flex; align-items: center; gap: 12px; margin: 16px 0 8px; color: var(--b-muted); font-size: 12.5px; }
.rvb-or::before, .rvb-or::after { content: ""; flex: 1; height: 1px; background: var(--b-border); }
.rvb-contact__who { margin: -4px 0 12px; font-size: 13px; color: var(--b-muted); }
/* Payment banner (dashboard) */
.rvb-paybanner { display: grid; grid-template-columns: auto 1fr auto; gap: 14px; align-items: center; margin: 0 0 20px; padding: 14px 16px; border-radius: 16px; border: 1px solid #f3c8c1; background: linear-gradient(120deg, #fff5f3, #fff); }
.rvb-paybanner.is-due { border-color: #f2d9a6; background: linear-gradient(120deg, #fff9ec, #fff); }
.rvb-paybanner__i { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: #fde4df; color: #b4321f; }
.rvb-paybanner.is-due .rvb-paybanner__i { background: #fcefd2; color: #94620b; }
.rvb-paybanner b { display: block; color: var(--b-ink); }
.rvb-paybanner p { margin: 2px 0 0; font-size: 13.5px; color: var(--b-muted); }
.rvb-paybanner ul { margin: 6px 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.rvb-paybanner li a { display: inline-block; padding: 3px 10px; border-radius: 999px; background: #fff; border: 1px solid var(--b-border); font-size: 12.5px; font-weight: 600; color: var(--b-ink); text-decoration: none; }
@media (max-width: 640px) { .rvb-paybanner { grid-template-columns: auto 1fr; } .rvb-paybanner > .rv-btn { grid-column: 1 / -1; justify-content: center; } }
.rvb-profilenote { display: flex; gap: 10px; align-items: center; margin: 0 0 16px; padding: 10px 14px; border-radius: 12px; background: var(--b-brand-50); font-size: 14px; }
.rvb-profilenote a { font-weight: 600; color: var(--b-brand); }
.rvb-auth__icon { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 16px; background: var(--b-brand-50); color: var(--b-brand); margin-bottom: 10px; }
.rvb-intentnote { display: flex; gap: 8px; align-items: center; padding: 10px 12px; border-radius: 12px; background: var(--b-brand-50); color: var(--b-brand-d); font-size: 14px; }

/* Focus visibility for everything interactive */
.rvb-main a:focus-visible, .rvb-main button:focus-visible, .rvb-main summary:focus-visible { outline: none; box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--rv-violet-500, #6A55E3); border-radius: 10px; }
.rvb-main .rv-btn:active { transform: translateY(1px); }

/* Entrance (short, once). Content is visible without JS. */
@media (prefers-reduced-motion: no-preference) {
  .rvb-main:not(.rvb-reduce-motion) .rvb-content > * { animation: rvb-in .45s var(--b-ease) both; }
  .rvb-main:not(.rvb-reduce-motion) .rvb-content > *:nth-child(3) { animation-delay: .04s; }
  .rvb-main:not(.rvb-reduce-motion) .rvb-content > *:nth-child(4) { animation-delay: .08s; }
  .rvb-main:not(.rvb-reduce-motion) .rvb-content > *:nth-child(n+5) { animation-delay: .12s; }
  @keyframes rvb-in { from { opacity: 0; transform: translateY(8px); } }
}
@media (prefers-reduced-motion: reduce) {
  .rvb-welcome__bg span, .rvb-bars i::after, .rvb-modal__box { animation: none !important; }
  .rvb-shell, .rvb-side { transition: none !important; }
}
