/* HTML_IN_CSS_FIXED_V1: stripped 1 stray HTML tag(s) that broke CSS parsing */
/* ============================================================
   FONT FACES
   Aeonik Pro — LOGO ONLY. Full family loaded (100–900 + italics).
   The wordmark uses 600 by default; a 700 Bold fallback kicks in if
   SemiBold isn't present. SF Pro + Inter are used for everything else.
   ============================================================ */
/* F2 (2026-05-01): pruned to wordmark-only weights. AeonikPro-Bold.otf serves both 600 (no SemiBold file ships) and 700; other OTFs deleted to save ~1.5 MB cold-cache. */
@font-face { font-family:"Aeonik Pro"; src:url("/static/fonts/aeonik/AeonikPro-Bold.otf") format("opentype"); font-weight:600; font-style:normal; font-display:swap; }
@font-face { font-family:"Aeonik Pro"; src:url("/static/fonts/aeonik/AeonikPro-Bold.otf") format("opentype"); font-weight:700; font-style:normal; font-display:swap; }
/* (legacy SemiBold fallback @font-face removed in F2 — covered by the two declarations above) */
/* ============================================================
   SYMPTEX DESIGN TOKENS — v2
   Warm-white canvas · navy primary · pastel accents.
   Copy this :root block into any new product.
   ============================================================ */
:root {
  /* ===== CORE COLORS (from spec) ===== */
  --white:   #FFFFFF;   /* pure white */
  --black:   #010101;   /* near-black text */
  --navy:    #131963;   /* PRIMARY — actions, logo, focus */

  /* Secondary — pastel accent family */
  --lilac-0: #B2A5C3;   /* dusty lilac */
  --purple:  #7F669D;   /* deep purple */
  --violet:  #A387D2;   /* soft violet */
  --mint:    #C0E0DD;   /* pale mint */
  --teal:    #66AFA6;   /* deep teal */
  --sky:     #BDFAFB;   /* ice-sky */
  --blue-soft:#9AB5E0;  /* soft blue */

  /* Additional — surface / neutrals */
  --warm-50: #FAFAFA;   /* page background (warm white) */
  --warm-100:#ECECEC;   /* hairline border, sunken surface */
  --warm-500:#505050;   /* body text, secondary */

  /* ===== DERIVED NEUTRALS (interpolated for depth) ===== */
  --warm-25: #FDFDFD;   /* surface-raised */
  --warm-75: #F4F4F4;   /* surface-muted */
  --warm-150:#E0E0E0;   /* border-default */
  --warm-200:#CCCCCC;   /* border-strong */
  --warm-300:#9A9A9A;   /* text-tertiary */
  --warm-400:#707070;   /* text-secondary */
  --warm-700:#2B2B2B;   /* text-strong */
  --warm-900:#141414;   /* text-inverse-bg */

  /* ===== NAVY SCALE (built around #131963) ===== */
  --navy-0:  #EEEFF7;
  --navy-50: #D7DAEC;
  --navy-100:#ACB2D8;
  --navy-200:#7B84BF;
  --navy-400:#2F369A;
  --navy-500:#131963;   /* base */
  --navy-600:#0E1350;
  --navy-700:#0A0E3D;
  --navy-900:#05062B;

  /* ===== SEMANTIC TOKENS — ALWAYS USE THESE IN PRODUCT CODE ===== */
  --bg-page:           var(--warm-50);
  --bg-surface:        var(--white);
  --bg-surface-muted:  var(--warm-75);
  --bg-surface-sunken: var(--warm-100);
  --bg-inverse:        var(--navy-900);
  --bg-accent-soft:    var(--navy-0);

  --text-primary:   var(--black);
  --text-strong:    var(--warm-700);
  --text-body:      var(--warm-500);
  --text-secondary: var(--warm-400);
  --text-tertiary:  var(--warm-300);
  --text-disabled:  var(--warm-200);
  --text-inverse:   var(--white);
  --text-link:      var(--navy-500);
  --text-link-hover:var(--navy-700);

  --border-subtle:  var(--warm-100);
  --border-default: var(--warm-150);
  --border-strong:  var(--warm-300);
  --border-focus:   var(--navy-500);

  --action-primary:        var(--navy-500);
  --action-primary-hover:  var(--navy-600);
  --action-primary-active: var(--navy-700);
  --action-primary-text:   var(--white);

  --action-secondary-bg:     var(--white);
  --action-secondary-border: var(--warm-150);
  --action-secondary-hover:  var(--warm-75);

  /* Status — mapped to the provided pastel palette */
  --status-success: var(--teal);
  --status-success-bg: var(--mint);
  --status-info:    var(--blue-soft);
  --status-info-bg: #E3ECF7;
  --status-accent:  var(--violet);
  --status-accent-bg:#ECE4F7;
  --status-warning: #C89A3A;
  --status-warning-bg:#F7EED8;
  --status-danger:  #B63D25;
  --status-danger-bg:#F7E2DC;

  /* ===== TYPOGRAPHY ===== */
  /* Logo — Aeonik Pro, semibold, -4% tracking */
  --font-logo: "Aeonik Pro", "Inter", ui-sans-serif, system-ui, sans-serif;

  /* UI — SF Pro first (Apple), then Inter Display everywhere else */
  --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
               "Inter Display", "Inter", ui-sans-serif, system-ui, "Segoe UI", sans-serif;
  --font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Geist Mono", monospace;

  --text-2xs: 11px;
  --text-xs:  12px;
  --text-sm:  14px;
  --text-base:16px;
  --text-md:  17px;
  --text-lg:  19px;
  --text-xl:  22px;
  --text-2xl: 26px;
  --text-3xl: 32px;
  --text-4xl: 40px;
  --text-5xl: 52px;
  --text-6xl: 68px;

  --leading-tight:  1.1;
  --leading-snug:   1.25;
  --leading-normal: 1.5;
  --leading-loose:  1.65;

  --tracking-display:-0.03em;
  --tracking-tight: -0.02em;
  --tracking-snug:  -0.01em;
  --tracking-logo:  -0.04em;  /* -4% for the wordmark */
  --tracking-normal:0;
  --tracking-wide:  0.04em;

  --weight-regular: 400;
  --weight-medium:  500;
  --weight-semibold:600;
  --weight-bold:    700;

  /* ===== SPACING ===== */
  --space-0:0; --space-1:4px; --space-2:8px; --space-3:12px;
  --space-4:16px; --space-5:20px; --space-6:24px; --space-7:28px; --space-8:32px;
  --space-9:36px; --space-10:40px; --space-12:48px; --space-14:56px; --space-16:64px; --space-20:80px;
  --space-24:96px; --space-32:128px;

  /* ===== RADIUS ===== */
  --radius-xs:4px; --radius-sm:6px; --radius-md:10px;
  --radius-lg:14px; --radius-xl:20px; --radius-2xl:28px;
  --radius-full:999px;

  /* ===== SHADOW — soft, cool, pulled toward the palette ===== */
  --shadow-xs: 0 1px 2px rgba(19, 25, 99, 0.04);
  --shadow-sm: 0 2px 4px rgba(19, 25, 99, 0.05), 0 1px 2px rgba(1, 1, 1, 0.03);
  --shadow-md: 0 8px 20px -6px rgba(19, 25, 99, 0.08), 0 2px 4px rgba(1, 1, 1, 0.04);
  --shadow-lg: 0 20px 44px -14px rgba(19, 25, 99, 0.14), 0 4px 8px rgba(1, 1, 1, 0.04);
  --shadow-xl: 0 32px 64px -20px rgba(19, 25, 99, 0.18);
  --shadow-focus: 0 0 0 3px rgba(19, 25, 99, 0.18);

  /* ===== MOTION ===== */
  --ease-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
  --ease-enter:    cubic-bezier(0, 0.6, 0.2, 1);
  --ease-exit:     cubic-bezier(0.4, 0, 1, 1);
  --dur-instant:80ms; --dur-fast:140ms; --dur-base:220ms; --dur-slow:360ms;

  /* ===== LAYOUT ===== */
  --container-sm:640px; --container-md:768px; --container-lg:1024px;
  --container-xl:1200px; --container-2xl:1320px;
  --page-gutter: clamp(16px, 4vw, 32px);

  --z-sticky:40; --z-dropdown:50; --z-overlay:80; --z-modal:90; --z-toast:100;
}

/* =============================================================
   DOC CHROME
   ============================================================= */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body {
  background: var(--bg-page);
  color: var(--text-body);
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
a { color: var(--text-link); text-decoration: none; }
a:hover { color: var(--text-link-hover); text-decoration: underline; text-underline-offset: 3px; }
h1,h2,h3,h4,h5,h6 { margin: 0; color: var(--text-primary); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-tight); }
p { margin: 0; }
button { font: inherit; }
code {
  font-family: var(--font-mono);
  background: var(--warm-75); color: var(--text-strong);
  padding: 2px 6px; border-radius: var(--radius-xs);
  font-size: 0.88em; border: 1px solid var(--border-subtle);
}
/* =============================================================
   PRIMITIVES
   ============================================================= */
.grid { display: grid; gap: var(--space-4); }
.grid-2 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.grid-auto { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
@media (max-width: 760px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0,1fr)); } }

.panel {
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
}
.panel-muted { background: var(--bg-surface-muted); }

/* =============================================================
   COMPONENTS — sx- prefix
   ============================================================= */

/* Buttons */
.sx-btn {
  --btn-bg: var(--action-primary);
  --btn-bg-hover: var(--action-primary-hover);
  --btn-bg-active: var(--action-primary-active);
  --btn-fg: var(--action-primary-text);
  --btn-border: transparent;

  appearance: none;
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--space-2);
  height: 44px;
  padding: 0 var(--space-5);
  border-radius: var(--radius-full);
  background: var(--btn-bg);
  color: var(--btn-fg);
  border: 1px solid var(--btn-border);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-snug);
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard),
              box-shadow var(--dur-fast) var(--ease-standard),
              transform var(--dur-fast) var(--ease-standard);
  white-space: nowrap;
}
/* BK_SX_BTN_HOVER_FIX_V1 -- the global a:hover rule (line ~190) has
   higher specificity (0,1,1) than .sx-btn (0,1,0), so when an .sx-btn
   is rendered as <a> the text color flips to --text-link-hover (a
   dark navy) on hover. On a navy button background that's identical
   to the bg = invisible text. Plus a sneaky underline gets added.
   Pin color + text-decoration back to the button tokens. */
.sx-btn:hover { background: var(--btn-bg-hover); color: var(--btn-fg); text-decoration: none; }
.sx-btn:active { background: var(--btn-bg-active); transform: translateY(0.5px); }
.sx-btn:focus-visible { outline: 0; box-shadow: var(--shadow-focus); }
.sx-btn[disabled], .sx-btn[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; }

/* ---------- SHINE CTA (wrapper) ---------- */
.sx-cta {
  position: relative;
  display: inline-flex;
  isolation: isolate;
}
.sx-cta::before {
  content: "";
  position: absolute; inset: -2px;
  border-radius: 999px;
  background: linear-gradient(110deg,
    var(--navy-500) 0%,
    var(--violet) 35%,
    var(--mint) 65%,
    var(--navy-500) 100%);
  background-size: 300% 100%;
  filter: blur(14px);
  opacity: 0.55;
  z-index: -1;
  transition: opacity var(--dur-med) var(--ease-standard), filter var(--dur-med) var(--ease-standard);
  animation: sx-cta-shine 4.5s linear infinite;
}
.sx-cta:hover::before { opacity: 0.95; filter: blur(18px); }
.sx-cta > .sx-btn {
  position: relative;
  overflow: hidden;
}
.sx-cta > .sx-btn::after {
  content: "";
  position: absolute; top: 0; left: -120%;
  width: 60%; height: 100%;
  background: linear-gradient(115deg, transparent 0%, rgba(255,255,255,0.35) 50%, transparent 100%);
  transform: skewX(-18deg);
  transition: left 700ms var(--ease-standard);
  pointer-events: none;
}
.sx-cta:hover > .sx-btn::after { left: 130%; }
@keyframes sx-cta-shine {
  0%   { background-position:   0% 50%; }
  100% { background-position: 300% 50%; }
}
@media (prefers-reduced-motion: reduce) {
  .sx-cta::before { animation: none; }
  .sx-cta > .sx-btn::after { display: none; }
}

/* ---------- PULSE DOT BADGE ---------- */
.sx-pulse {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 4px 12px 4px 10px;
  border-radius: 999px;
  background: var(--white);
  border: 1px solid var(--border-subtle);
  font: var(--weight-medium) var(--text-xs)/1 var(--font-sans);
  color: var(--text-primary);
  white-space: nowrap;
}
.sx-pulse__dot {
  position: relative;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--mint-500, var(--sage));
  box-shadow: 0 0 0 0 currentColor;
}
.sx-pulse__dot::before,
.sx-pulse__dot::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: 50%;
  background: inherit;
  animation: sx-pulse-ring 1.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite;
}
.sx-pulse__dot::after { animation-delay: 0.9s; }
.sx-pulse--live   .sx-pulse__dot { background: #22C55E; }
.sx-pulse--new    .sx-pulse__dot { background: var(--violet); }
.sx-pulse--urgent .sx-pulse__dot { background: #E5484D; }
.sx-pulse--info   .sx-pulse__dot { background: var(--sky-500, #9AB5E0); }
@keyframes sx-pulse-ring {
  0%   { transform: scale(1);   opacity: 0.6; }
  80%  { transform: scale(2.6); opacity: 0; }
  100% { transform: scale(2.6); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .sx-pulse__dot::before, .sx-pulse__dot::after { animation: none; display: none; }
}

/* ---------- MINI CALENDAR (component) ---------- */
.sx-cal {
  display: inline-block;
  background: var(--white);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 16px;
  font-family: var(--font-sans);
}
.sx-cal__head { display:flex; align-items:center; justify-content:space-between; margin-bottom: 10px; }
.sx-cal__title { font-weight: 600; font-size: 14px; color: var(--text-primary); }
.sx-cal__nav { display:flex; gap: 4px; }
.sx-cal__nav button {
  width: 28px; height: 28px; border-radius: 8px;
  border: 1px solid var(--border-subtle); background: var(--white);
  display: grid; place-items: center; cursor: pointer; color: var(--text-secondary);
}
.sx-cal__nav button:hover { background: var(--warm-75); color: var(--text-primary); }
.sx-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.sx-cal__wk { font-size: 11px; font-weight: 600; color: var(--text-tertiary); text-align: center; padding: 6px 0; text-transform: uppercase; letter-spacing: 0.04em; }
.sx-cal__day {
  aspect-ratio: 1;
  display: grid; place-items: center;
  border-radius: 8px;
  font-size: 13px;
  color: var(--text-primary);
  cursor: pointer;
  border: 0; background: transparent;
  position: relative;
  transition: background var(--dur-fast) var(--ease-standard);
}
.sx-cal__day:hover:not(.is-disabled) { background: var(--warm-75); }
.sx-cal__day.is-outside { color: var(--text-tertiary); opacity: 0.5; }
.sx-cal__day.is-today { font-weight: 600; }
.sx-cal__day.is-today::after {
  content: ""; position: absolute; bottom: 4px; left: 50%;
  transform: translateX(-50%);
  width: 4px; height: 4px; border-radius: 50%; background: var(--navy-500);
}
.sx-cal__day.is-selected { background: var(--navy-500); color: var(--white); font-weight: 600; }
.sx-cal__day.is-selected.is-today::after { background: var(--white); }
.sx-cal__day.is-range { background: var(--warm-100); border-radius: 0; }
.sx-cal__day.is-range-start { background: var(--navy-500); color: var(--white); border-radius: 8px 0 0 8px; font-weight: 600; }
.sx-cal__day.is-range-end   { background: var(--navy-500); color: var(--white); border-radius: 0 8px 8px 0; font-weight: 600; }
.sx-cal__day.is-disabled { color: var(--text-tertiary); opacity: 0.35; cursor: not-allowed; text-decoration: line-through; }

/* Scheduler (calendar + time slots) */
.sx-scheduler {
  display: grid; grid-template-columns: auto 220px; gap: 16px;
  background: var(--white);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  padding: 16px;
}
.sx-scheduler__col > h4 { font-size: 12px; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 10px; }
.sx-scheduler__slots { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; max-height: 280px; overflow: auto; }
.sx-slot {
  appearance: none; background: var(--white); border: 1px solid var(--border-default);
  border-radius: 8px; padding: 8px 10px; font-size: 13px; cursor: pointer;
  color: var(--text-primary);
  transition: all var(--dur-fast) var(--ease-standard);
  font-variant-numeric: tabular-nums;
}
.sx-slot:hover { border-color: var(--navy-500); color: var(--navy-500); }
.sx-slot.is-active { background: var(--navy-500); color: var(--white); border-color: var(--navy-500); }
.sx-slot[disabled] { opacity: 0.4; cursor: not-allowed; text-decoration: line-through; }

/* Full-screen calendar */
.sx-calfull { background: var(--white); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); overflow: hidden; }
.sx-calfull__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 20px; border-bottom: 1px solid var(--border-subtle); }
.sx-calfull__title h4 { font-size: 18px; font-weight: 600; color: var(--text-primary); }
.sx-calfull__title p  { font-size: 13px; color: var(--text-tertiary); margin-top: 2px; }
.sx-calfull__todaychip { display: inline-flex; flex-direction: column; align-items: center; width: 52px; padding: 4px 0; border: 1px solid var(--border-subtle); border-radius: 10px; background: var(--warm-75); }
.sx-calfull__todaychip span:first-child { font-size: 10px; text-transform: uppercase; color: var(--text-tertiary); font-weight: 600; letter-spacing: 0.04em; }
.sx-calfull__todaychip span:last-child  { font-size: 20px; font-weight: 700; color: var(--text-primary); line-height: 1.1; }
.sx-calfull__nav { display: inline-flex; border: 1px solid var(--border-default); border-radius: var(--radius-md); overflow: hidden; background: var(--white); }
.sx-calfull__nav button { appearance: none; background: transparent; border: 0; padding: 8px 14px; font-size: 13px; font-weight: 500; color: var(--text-primary); cursor: pointer; border-right: 1px solid var(--border-subtle); }
.sx-calfull__nav button:last-child { border-right: 0; }
.sx-calfull__nav button:hover { background: var(--warm-75); }
.sx-calfull__weekdays { display: grid; grid-template-columns: repeat(7, 1fr); font-size: 11px; font-weight: 600; color: var(--text-secondary); text-align: center; border-bottom: 1px solid var(--border-subtle); background: var(--warm-50); }
.sx-calfull__weekdays > div { padding: 10px 0; border-right: 1px solid var(--border-subtle); }
.sx-calfull__weekdays > div:last-child { border-right: 0; }
.sx-calfull__grid { display: grid; grid-template-columns: repeat(7, 1fr); grid-auto-rows: minmax(96px, 1fr); }
.sx-calfull__cell { border-right: 1px solid var(--border-subtle); border-bottom: 1px solid var(--border-subtle); padding: 8px; position: relative; min-height: 96px; }
.sx-calfull__cell:nth-child(7n) { border-right: 0; }
.sx-calfull__cell.is-outside { background: var(--warm-50); }
.sx-calfull__cell.is-outside .sx-calfull__num { color: var(--text-tertiary); opacity: 0.6; }
.sx-calfull__num { font-size: 12px; font-weight: 500; color: var(--text-primary); display: inline-flex; width: 22px; height: 22px; border-radius: 50%; align-items: center; justify-content: center; }
.sx-calfull__cell.is-today .sx-calfull__num { background: var(--navy-500); color: var(--white); font-weight: 700; }
.sx-calfull__event { display: block; margin-top: 6px; font-size: 11px; background: var(--warm-100); border: 1px solid var(--border-subtle); border-radius: 6px; padding: 4px 6px; color: var(--text-primary); line-height: 1.25; }
.sx-calfull__event b { display: block; font-weight: 600; font-size: 11px; color: var(--text-primary); }
.sx-calfull__event span { color: var(--text-tertiary); font-size: 10px; }
.sx-calfull__event--mint   { background: color-mix(in oklch, var(--mint) 40%, white); }
.sx-calfull__event--violet { background: color-mix(in oklch, var(--violet) 20%, white); }
.sx-calfull__event--sky    { background: color-mix(in oklch, var(--sky) 50%, white); }
.sx-calfull__more { font-size: 10px; color: var(--text-tertiary); margin-top: 3px; }

/* ---------- PANEL PREVIEWS ---------- */
.sx-panel-shell {
  display: grid; grid-template-columns: 220px 1fr; gap: 0;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  overflow: hidden;
  background: var(--white);
  min-height: 520px;
  font-size: 13px;
}
.sx-panel-shell--dark { background: #0A0E2A; color: #D6DBF2; border-color: #1A1F3E; }
.sx-panel-shell__side { padding: 16px; border-right: 1px solid var(--border-subtle); background: var(--warm-50); display: flex; flex-direction: column; gap: 4px; }
.sx-panel-shell--dark .sx-panel-shell__side { background: #060926; border-color: #1A1F3E; }
.sx-panel-logo { display: flex; align-items: center; gap: 8px; padding: 4px 6px 16px; }
.sx-panel-logo__mark { width: 30px; height: 30px; border-radius: 8px; background: var(--navy-500); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 14px; }
.sx-panel-shell--dark .sx-panel-logo__mark { background: var(--violet); }
.sx-panel-logo__text { font-family: var(--font-logo, var(--font-sans)); font-weight: 600; font-size: 15px; letter-spacing: -0.02em; color: var(--text-primary); }
.sx-panel-shell--dark .sx-panel-logo__text { color: #fff; }
.sx-panel-logo__role { margin-left: auto; font-size: 9px; font-weight: 700; letter-spacing: 0.08em; padding: 2px 6px; border-radius: 4px; background: var(--violet); color: #fff; text-transform: uppercase; }
.sx-panel-nav-section { font-size: 10px; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; padding: 12px 6px 4px; }
.sx-panel-shell--dark .sx-panel-nav-section { color: #6B7194; }
.sx-panel-nav-item { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 8px; color: var(--text-secondary); font-size: 13px; font-weight: 500; cursor: pointer; }
.sx-panel-nav-item svg { width: 16px; height: 16px; flex-shrink: 0; }
.sx-panel-nav-item:hover { background: var(--warm-100); color: var(--text-primary); }
.sx-panel-nav-item.is-active { background: var(--white); color: var(--text-primary); box-shadow: var(--shadow-xs); }
.sx-panel-shell--dark .sx-panel-nav-item { color: #9AA1C4; }
.sx-panel-shell--dark .sx-panel-nav-item:hover { background: #121735; color: #fff; }
.sx-panel-shell--dark .sx-panel-nav-item.is-active { background: #1A1F3E; color: #fff; box-shadow: inset 3px 0 0 var(--violet); }
.sx-panel-nav-item__count { margin-left: auto; min-width: 22px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--navy-500); color: #fff; font-size: 10px; font-weight: 700; display: grid; place-items: center; }
.sx-panel-nav-item__count--red { background: #E5484D; }
.sx-panel-nav-item__count--mint { background: var(--sage, #66AFA6); }

.sx-panel-body { padding: 20px 24px; display: flex; flex-direction: column; gap: 16px; }
.sx-panel-shell--dark .sx-panel-body { background: #0A0E2A; }
.sx-panel-top { display: flex; align-items: center; justify-content: space-between; }
.sx-panel-top h5 { font-size: 18px; font-weight: 600; color: var(--text-primary); }
.sx-panel-shell--dark .sx-panel-top h5 { color: #fff; }
.sx-panel-top p { font-size: 12px; color: var(--text-tertiary); }
.sx-panel-top__right { display: flex; gap: 8px; align-items: center; }
.sx-kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.sx-kpi { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 12px 14px; background: var(--white); }
.sx-panel-shell--dark .sx-kpi { background: #121735; border-color: #1A1F3E; }
.sx-kpi__label { font-size: 11px; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.04em; font-weight: 600; }
.sx-panel-shell--dark .sx-kpi__label { color: #6B7194; }
.sx-kpi__value { font-size: 22px; font-weight: 700; color: var(--text-primary); margin-top: 4px; font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
.sx-panel-shell--dark .sx-kpi__value { color: #fff; }
.sx-kpi__trend { font-size: 11px; margin-top: 4px; font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
.sx-kpi__trend--up   { color: #16A34A; }
.sx-kpi__trend--down { color: #E5484D; }

.sx-panel-card { border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); background: var(--white); overflow: hidden; }
.sx-panel-shell--dark .sx-panel-card { background: #121735; border-color: #1A1F3E; }
.sx-panel-card__head { padding: 12px 16px; border-bottom: 1px solid var(--border-subtle); display: flex; align-items: center; justify-content: space-between; font-weight: 600; font-size: 13px; color: var(--text-primary); }
.sx-panel-shell--dark .sx-panel-card__head { color: #fff; border-color: #1A1F3E; }
.sx-panel-card__body { padding: 10px 16px 14px; }

.sx-queue-item { display: grid; grid-template-columns: 32px 1fr auto auto; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border-subtle); font-size: 13px; }
.sx-queue-item:last-child { border-bottom: 0; }
.sx-queue-item__num { width: 28px; height: 28px; border-radius: 6px; background: var(--warm-100); font-weight: 700; color: var(--navy-500); display: grid; place-items: center; font-size: 12px; font-variant-numeric: tabular-nums; }
.sx-queue-item__name b { display: block; color: var(--text-primary); font-weight: 600; }
.sx-queue-item__name span { color: var(--text-tertiary); font-size: 11px; }
.sx-queue-item__time { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--text-primary); font-size: 12px; }
.sx-panel-shell--dark .sx-queue-item__time { color: #fff; }
.sx-panel-shell--dark .sx-queue-item__name b { color: #fff; }
.sx-panel-shell--dark .sx-queue-item__num { background: #1A1F3E; color: #C6AEFF; }
.sx-panel-shell--dark .sx-queue-item { border-color: #1A1F3E; }

/* Simple bar chart mini */
.sx-barchart { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; align-items: end; height: 120px; padding: 10px 4px 0; }
.sx-barchart__bar { background: linear-gradient(180deg, var(--navy-500), color-mix(in oklch, var(--navy-500) 70%, white)); border-radius: 6px 6px 2px 2px; position: relative; }
.sx-panel-shell--dark .sx-barchart__bar { background: linear-gradient(180deg, var(--violet), color-mix(in oklch, var(--violet) 40%, transparent)); }
.sx-barchart__label { text-align: center; font-size: 10px; color: var(--text-tertiary); margin-top: 4px; }

.sx-btn--secondary {
  --btn-bg: var(--action-secondary-bg);
  --btn-bg-hover: var(--action-secondary-hover);
  --btn-bg-active: var(--warm-100);
  --btn-fg: var(--text-primary);
  --btn-border: var(--action-secondary-border);
}
.sx-btn--ghost {
  --btn-bg: transparent;
  --btn-bg-hover: var(--warm-75);
  --btn-bg-active: var(--warm-100);
  --btn-fg: var(--text-primary);
  --btn-border: transparent;
}
.sx-btn--accent {
  --btn-bg: var(--violet);
  --btn-bg-hover: var(--purple);
  --btn-bg-active: var(--purple);
  --btn-fg: var(--white);
}
.sx-btn--danger {
  --btn-bg: var(--status-danger);
  --btn-bg-hover: #7D2513;
  --btn-bg-active: #7D2513;
}
.sx-btn--sm { height: 36px; padding: 0 var(--space-4); font-size: var(--text-xs); }
.sx-btn--lg { height: 52px; padding: 0 var(--space-6); font-size: var(--text-base); }
.sx-btn--block { width: 100%; }

/* Inputs */
.sx-field { display: flex; flex-direction: column; gap: 6px; }
.sx-label { font-size: var(--text-sm); color: var(--text-secondary); font-weight: var(--weight-medium); }
.sx-hint { font-size: var(--text-xs); color: var(--text-tertiary); }
.sx-input, .sx-textarea, .sx-select {
  appearance: none;
  width: 100%;
  height: 44px;
  padding: 0 14px;
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  font: inherit;
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  color: var(--text-primary);
  transition: border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard);
}
.sx-input::placeholder { color: var(--text-tertiary); }
.sx-input:hover, .sx-select:hover, .sx-textarea:hover { border-color: var(--border-strong); }
.sx-input:focus, .sx-select:focus, .sx-textarea:focus { outline: 0; border-color: var(--border-focus); box-shadow: var(--shadow-focus); }
.sx-textarea { height: auto; min-height: 96px; padding: 12px 14px; line-height: var(--leading-normal); resize: vertical; }
.sx-select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%23505050' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 40px;
}

.sx-input--with-icon { padding-left: 44px; }
.sx-search { position: relative; }
.sx-search .sx-search-icon {
  position: absolute; left: 14px; top: 50%; transform: translateY(-50%);
  color: var(--text-tertiary); pointer-events: none;
}

/* Chips */
.sx-chip {
  display: inline-flex; align-items: center; gap: 6px;
  height: 30px; padding: 0 12px;
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-full);
  font-size: var(--text-xs);
  color: var(--text-body);
  font-weight: var(--weight-medium);
  cursor: pointer;
  transition: border-color var(--dur-fast), background var(--dur-fast), color var(--dur-fast);
  white-space: nowrap;
}
.sx-chip:hover { border-color: var(--border-strong); }
.sx-chip[aria-pressed="true"], .sx-chip--active {
  background: var(--navy-500); color: var(--white); border-color: var(--navy-500);
}
.sx-chip--filled { background: var(--warm-75); border-color: var(--warm-75); }

/* Badges */
.sx-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px;
  border-radius: var(--radius-full);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  background: var(--warm-75);
  color: var(--text-secondary);
}
.sx-badge--success { background: var(--status-success-bg); color: #2B5F57; }
.sx-badge--info    { background: var(--status-info-bg); color: var(--navy-600); }
.sx-badge--accent  { background: var(--status-accent-bg); color: var(--purple); }
.sx-badge--warn    { background: var(--status-warning-bg); color: #6B4A0E; }
.sx-badge--danger  { background: var(--status-danger-bg); color: #7D2513; }
.sx-badge--sky     { background: var(--sky); color: #1A5B5F; }

/* Cards */
.sx-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  transition: border-color var(--dur-base), box-shadow var(--dur-base), transform var(--dur-base);
}
.sx-card--hover:hover { border-color: var(--border-default); box-shadow: var(--shadow-md); transform: translateY(-1px); }

/* Doctor card */
.sx-doctor { display: grid; grid-template-columns: 72px 1fr; gap: var(--space-4); align-items: start; }
.sx-doctor__avatar {
  width: 72px; height: 72px;
  border-radius: var(--radius-full);
  background: var(--navy-0); color: var(--navy-500);
  display: grid; place-items: center;
  font-family: var(--font-sans); font-size: 26px; font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-tight);
  flex-shrink: 0;
}
.sx-doctor__name { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text-primary); margin-bottom: 2px; }
.sx-doctor__spec { font-size: var(--text-sm); color: var(--text-body); margin-bottom: 10px; }
.sx-doctor__meta { display: flex; flex-wrap: wrap; gap: var(--space-3); font-size: var(--text-xs); color: var(--text-secondary); margin-bottom: var(--space-4); }
.sx-doctor__rating { color: #B88A2B; font-weight: var(--weight-semibold); }
.sx-doctor__actions { display: flex; gap: var(--space-2); flex-wrap: wrap; align-items: center; grid-column: 1 / -1; padding-top: var(--space-3); border-top: 1px solid var(--border-subtle); }

/* Doctor — Compact (similar-doctors rail) */
.sx-doctor-compact {
  display: flex; flex-direction: column; align-items: flex-start;
  gap: 4px;
  padding: var(--space-4);
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: border-color var(--dur-fast), box-shadow var(--dur-fast), transform var(--dur-fast);
}
.sx-doctor-compact:hover { border-color: var(--border-default); box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.sx-doctor-compact__avatar {
  width: 56px; height: 56px;
  border-radius: var(--radius-full);
  background: var(--navy-0); color: var(--navy-500);
  display: grid; place-items: center;
  font-size: 18px; font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-tight);
  margin-bottom: 6px;
}
.sx-doctor-compact__name {
  font-size: var(--text-sm); font-weight: var(--weight-semibold);
  color: var(--text-primary); line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
  width: 100%;
}
.sx-doctor-compact__spec { font-size: var(--text-xs); color: var(--text-body); }
.sx-doctor-compact__meta { display: flex; gap: 6px; font-size: var(--text-xs); color: var(--text-secondary); margin-top: 2px; }

/* Doctor — Mini (appointment summaries, confirmations, list rows) */
.sx-doctor-mini {
  display: flex; align-items: center; gap: var(--space-3); min-width: 0;
}
.sx-doctor-mini__avatar {
  width: 40px; height: 40px; border-radius: var(--radius-full);
  background: var(--navy-0); color: var(--navy-500);
  display: grid; place-items: center;
  font-size: 14px; font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-tight);
  flex-shrink: 0;
}
.sx-doctor-mini__name { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-primary); line-height: 1.3; }
.sx-doctor-mini__spec { font-size: var(--text-xs); color: var(--text-secondary); margin-top: 1px; }

/* Mini row (dashboard list) */
.sx-doctor-mini-row {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
}
.sx-doctor-mini-row__time {
  display: flex; flex-direction: column; text-align: right;
  font-variant-numeric: tabular-nums;
}
.sx-doctor-mini-row__time b { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-primary); }
.sx-doctor-mini-row__time span { font-size: var(--text-xs); color: var(--text-tertiary); }

/* Clinic card — logo-led, no photography */
.sx-clinic {
  position: relative; padding: 0; overflow: hidden;
  display: flex; flex-direction: column;
}
.sx-clinic__head {
  position: relative;
  padding: var(--space-6) var(--space-5) var(--space-5);
  background:
    radial-gradient(120% 140% at 15% 20%, rgba(255,255,255,0.45), transparent 55%),
    linear-gradient(135deg, var(--navy-500) 0%, var(--violet) 55%, var(--blue-soft) 100%);
  color: #fff;
  display: flex; align-items: center; gap: var(--space-4);
  min-height: 120px;
  isolation: isolate;
}
.sx-clinic__head::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(70% 80% at 85% 100%, rgba(255,255,255,0.25), transparent 65%);
  pointer-events: none; z-index: 0;
}
.sx-clinic__head > * { position: relative; z-index: 1; }
.sx-clinic__logo {
  width: 64px; height: 64px;
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.92);
  border: 1px solid rgba(255,255,255,0.8);
  box-shadow: 0 8px 20px -10px rgba(0,0,0,0.35), inset 0 1px 0 rgba(255,255,255,0.9);
  display: grid; place-items: center;
  color: var(--navy-500);
  flex-shrink: 0;
  overflow: hidden;
}
.sx-clinic__logo svg { width: 34px; height: 34px; stroke: currentColor; }
.sx-clinic__logo img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
.sx-clinic__head-text { min-width: 0; flex: 1; }
.sx-clinic__name { font-size: var(--text-md); font-weight: var(--weight-semibold); color: #fff; line-height: 1.25; margin-bottom: 4px; display:-webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; letter-spacing: -0.01em; }
.sx-clinic__area { font-size: var(--text-xs); color: rgba(255,255,255,0.82); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.sx-clinic__partner { position: absolute; top: 12px; right: 12px; z-index: 2; background: rgba(255,255,255,0.18) !important; color: #fff !important; border: 1px solid rgba(255,255,255,0.35) !important; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }

.sx-clinic__body { padding: var(--space-4) var(--space-5); display: grid; gap: var(--space-3); }
.sx-clinic__meta { display: flex; gap: var(--space-4); font-size: var(--text-xs); color: var(--text-secondary); flex-wrap: wrap; }
.sx-clinic__meta-item { display: inline-flex; align-items: center; gap: 4px; }

.sx-clinic__footer {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--border-subtle);
  background: var(--warm-50);
  margin-top: auto;
}
.sx-clinic__socials { display: flex; gap: 4px; }
.sx-clinic__view {
  margin-left: auto;
  appearance: none; border: 0; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: var(--radius-full);
  background: var(--navy-500); color: #fff;
  font: var(--weight-semibold) var(--text-xs)/1 var(--font-sans);
  letter-spacing: 0.01em;
  transition: background var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard);
}
.sx-clinic__view:hover { background: var(--navy-600); transform: translateX(1px); }
.sx-clinic__view svg { width: 12px; height: 12px; }
.sx-clinic__social {
  width: 32px; height: 32px;
  border-radius: var(--radius-full);
  background: transparent;
  border: 1px solid var(--border-default);
  color: var(--text-secondary);
  display: grid; place-items: center;
  cursor: pointer;
  transition: color var(--dur-fast), border-color var(--dur-fast), background var(--dur-fast);
}
.sx-clinic__social:hover { color: var(--navy-500); border-color: var(--navy-200); background: var(--bg-accent-soft); }
.sx-clinic__social--tg:hover    { color: #229ED9; border-color: #229ED9; background: #E8F5FB; }
.sx-clinic__social--ig:hover    { color: #C13584; border-color: #C13584; background: #FBEAF3; }
.sx-clinic__social--web:hover   { color: var(--navy-500); border-color: var(--navy-500); background: var(--bg-accent-soft); }

/* Clinic listing card — used on /clinics directory page.
   Spec: logo + name, 3 social mini-buttons, district, address, rating, two CTAs (More=primary, Book=secondary). */
.sx-clinic-list {
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr auto;
  padding: 0;
  overflow: hidden;
  transition: transform var(--dur-standard) var(--ease-standard), border-color var(--dur-standard) var(--ease-standard), box-shadow var(--dur-standard) var(--ease-standard);
}
.sx-clinic-list:hover {
  transform: translateY(-2px);
  border-color: var(--navy-200);
  box-shadow: var(--shadow-md);
}
.sx-clinic-list:hover .sx-clinic-list__logo-tile { transform: rotate(-2deg) scale(1.02); }
.sx-clinic-list:hover .sx-clinic-list__spark { transform: translateX(3px); }

.sx-clinic-list__head {
  position: relative;
  padding: var(--space-5);
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
}
.sx-clinic-list__logo-tile {
  width: 72px; height: 72px;
  border-radius: var(--radius-md);
  background:
    radial-gradient(120% 140% at 15% 20%, rgba(255,255,255,0.5), transparent 55%),
    linear-gradient(135deg, var(--navy-500) 0%, var(--violet) 65%, var(--blue-soft) 100%);
  display: grid; place-items: center;
  color: #fff;
  box-shadow: 0 6px 18px -8px rgba(19,25,99,0.45), inset 0 1px 0 rgba(255,255,255,0.25);
  flex-shrink: 0;
  transition: transform var(--dur-standard) var(--ease-bounce);
  isolation: isolate;
}
.sx-clinic-list__logo-tile::after {
  content: ""; position: absolute; inset: 0;
  border-radius: inherit;
  background: radial-gradient(70% 80% at 90% 100%, rgba(255,255,255,0.2), transparent 65%);
  pointer-events: none;
}
.sx-clinic-list__logo-tile svg { width: 34px; height: 34px; position: relative; z-index: 1; }
.sx-clinic-list__logo-tile--mint {
  background: radial-gradient(120% 140% at 15% 20%, rgba(255,255,255,0.5), transparent 55%), linear-gradient(135deg, #1A5B5F 0%, #66AFA6 65%, #C6E4DD 100%);
  box-shadow: 0 6px 18px -8px rgba(26,91,95,0.45), inset 0 1px 0 rgba(255,255,255,0.25);
}
.sx-clinic-list__logo-tile--rose {
  background: radial-gradient(120% 140% at 15% 20%, rgba(255,255,255,0.5), transparent 55%), linear-gradient(135deg, #7F3A5A 0%, #C76B8A 65%, #F4C9D6 100%);
  box-shadow: 0 6px 18px -8px rgba(127,58,90,0.45), inset 0 1px 0 rgba(255,255,255,0.25);
}
.sx-clinic-list__logo-tile--amber {
  background: radial-gradient(120% 140% at 15% 20%, rgba(255,255,255,0.5), transparent 55%), linear-gradient(135deg, #78350F 0%, #D97706 65%, #FCD34D 100%);
  box-shadow: 0 6px 18px -8px rgba(120,53,15,0.45), inset 0 1px 0 rgba(255,255,255,0.25);
}

.sx-clinic-list__head-text { flex: 1; min-width: 0; padding-top: 2px; }
.sx-clinic-list__name-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.sx-clinic-list__name { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text-primary); letter-spacing: -0.015em; line-height: 1.2; }
.sx-clinic-list__rating {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--text-sm); font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin-top: 2px;
}
.sx-clinic-list__rating-star { color: #F59E0B; }
.sx-clinic-list__rating-count { color: var(--text-tertiary); font-weight: 400; font-size: var(--text-xs); margin-left: 2px; }

.sx-clinic-list__socials {
  display: flex; gap: 6px;
  margin-top: 2px;
  flex-shrink: 0;
}
.sx-clinic-list__social {
  appearance: none;
  width: 30px; height: 30px;
  border-radius: var(--radius-full);
  background: var(--warm-50);
  border: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  display: grid; place-items: center;
  cursor: pointer;
  transition: transform var(--dur-fast) var(--ease-bounce), color var(--dur-fast), background var(--dur-fast), border-color var(--dur-fast);
}
.sx-clinic-list__social:hover { transform: translateY(-2px) scale(1.08); }
.sx-clinic-list__social--tg:hover  { color: #229ED9; background: #E8F5FB; border-color: #AADCF0; }
.sx-clinic-list__social--ig:hover  { color: #C13584; background: #FBEAF3; border-color: #EEBFD8; }
.sx-clinic-list__social--web:hover { color: var(--navy-500); background: var(--bg-accent-soft); border-color: var(--navy-200); }
.sx-clinic-list__social svg { width: 14px; height: 14px; }

.sx-clinic-list__body {
  padding: 0 var(--space-5) var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.sx-clinic-list__loc {
  display: grid; gap: 8px;
  padding: var(--space-3) var(--space-4);
  background: var(--warm-50);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-subtle);
}
.sx-clinic-list__loc-row { display: flex; align-items: flex-start; gap: 8px; font-size: var(--text-sm); color: var(--text-body); line-height: 1.4; }
.sx-clinic-list__loc-row svg { width: 14px; height: 14px; color: var(--text-tertiary); flex-shrink: 0; margin-top: 2px; }
.sx-clinic-list__loc-row b { color: var(--text-primary); font-weight: var(--weight-semibold); }
.sx-clinic-list__loc-row span { color: var(--text-tertiary); }

.sx-clinic-list__footer {
  display: grid; grid-template-columns: 2fr 1fr; gap: 8px;
  padding: 0 var(--space-5) var(--space-5);
}
.sx-clinic-list__spark { display: inline-block; transition: transform var(--dur-standard) var(--ease-standard); }

/* Entrance animation for a row of clinic cards */
@keyframes sx-clinic-list-rise {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
.sx-clinic-list { opacity: 0; animation: sx-clinic-list-rise 560ms var(--ease-standard) forwards; }
.sx-clinic-list:nth-child(1) { animation-delay: 60ms; }
.sx-clinic-list:nth-child(2) { animation-delay: 140ms; }
.sx-clinic-list:nth-child(3) { animation-delay: 220ms; }
.sx-clinic-list:nth-child(4) { animation-delay: 300ms; }
.sx-clinic-list:nth-child(5) { animation-delay: 380ms; }
.sx-clinic-list:nth-child(6) { animation-delay: 460ms; }
@media (prefers-reduced-motion: reduce) {
  .sx-clinic-list { opacity: 1; animation: none; }
  .sx-clinic-list:hover { transform: none; }
}

/* Clinic listing page — filter bar */
.sx-clinic-listing__filters {
  display: flex; gap: 8px; flex-wrap: wrap;
  padding: var(--space-3) var(--space-4);
  background: #fff;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-5);
  align-items: center;
}
.sx-clinic-listing__search {
  flex: 1; min-width: 220px;
  display: flex; align-items: center; gap: 8px;
  padding: 8px 12px;
  background: var(--warm-50);
  border-radius: var(--radius-full);
  border: 1px solid transparent;
  transition: border-color var(--dur-fast), background var(--dur-fast);
}
.sx-clinic-listing__search:focus-within { border-color: var(--navy-200); background: #fff; }
.sx-clinic-listing__search input { flex: 1; border: 0; background: transparent; outline: none; font: 400 14px/1.2 var(--font-sans); color: var(--text-primary); }
.sx-clinic-listing__search input::placeholder { color: var(--text-tertiary); }
.sx-clinic-listing__search svg { width: 16px; height: 16px; color: var(--text-tertiary); flex-shrink: 0; }
.sx-clinic-listing__chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px;
  border-radius: var(--radius-full);
  border: 1px solid var(--border-default);
  background: #fff;
  color: var(--text-body);
  font: var(--weight-medium) var(--text-xs)/1 var(--font-sans);
  cursor: pointer;
  transition: border-color var(--dur-fast), background var(--dur-fast), color var(--dur-fast);
}
.sx-clinic-listing__chip:hover { border-color: var(--navy-200); color: var(--navy-500); }
.sx-clinic-listing__chip--active { background: var(--navy-500); border-color: var(--navy-500); color: #fff; }

/* Service card */
.sx-service {
  display: flex; flex-direction: column; gap: var(--space-3);
  padding: var(--space-6);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  background: var(--bg-surface);
  transition: all var(--dur-base) var(--ease-standard);
  text-decoration: none; color: inherit;
  min-height: 160px;
}
.sx-service:hover { border-color: var(--navy-100); background: var(--navy-0); }
.sx-service__icon {
  width: 40px; height: 40px; border-radius: var(--radius-md);
  background: var(--navy-0); color: var(--navy-500);
  display: grid; place-items: center;
}
.sx-service__title { font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--text-primary); letter-spacing: var(--tracking-snug); }
.sx-service__desc { font-size: var(--text-sm); color: var(--text-body); }

/* Article card */
.sx-article { display: flex; flex-direction: column; gap: var(--space-3); }
.sx-article__kicker {
  font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--purple); font-weight: var(--weight-semibold);
}
.sx-article__title {
  font-weight: 600;
  font-size: var(--text-xl); line-height: var(--leading-snug);
  color: var(--text-primary); letter-spacing: var(--tracking-tight);
}
.sx-article__excerpt { font-size: var(--text-sm); color: var(--text-body); }
.sx-article__meta { display: flex; gap: var(--space-3); font-size: var(--text-xs); color: var(--text-tertiary); margin-top: auto; padding-top: var(--space-3); }

/* Nav */
.sx-nav {
  display: flex; align-items: center; gap: var(--space-6);
  padding: 16px var(--space-8);
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
}
.sx-nav__logo { font-family: var(--font-logo); font-weight: 600; font-size: var(--text-xl); letter-spacing: var(--tracking-logo); color: var(--text-primary); }
.sx-nav__links { display: flex; gap: var(--space-5); flex: 1; margin-left: var(--space-6); }
.sx-nav__links a { color: var(--text-body); font-size: var(--text-sm); font-weight: var(--weight-medium); }
.sx-nav__links a:hover { color: var(--text-primary); text-decoration: none; }
.sx-nav__actions { display: flex; gap: var(--space-3); align-items: center; }
.sx-lang {
  display: inline-flex; gap: 2px; padding: 3px;
  background: var(--warm-75); border-radius: var(--radius-full);
  font-size: var(--text-xs); font-weight: var(--weight-medium);
}
.sx-lang button { appearance: none; border: 0; background: transparent; padding: 4px 10px; border-radius: var(--radius-full); color: var(--text-secondary); cursor: pointer; }
.sx-lang button[aria-pressed="true"] { background: var(--white); color: var(--text-primary); box-shadow: var(--shadow-xs); }

/* =============================================================
   HEADER v2 — search trigger + language dropdown
   ============================================================= */
.sx-nav--v2 { gap: var(--space-5); }
.sx-nav--v2 .sx-nav__links { margin-left: var(--space-4); gap: var(--space-4); }

.sx-search-trigger {
  appearance: none;
  display: inline-flex; align-items: center; gap: 10px;
  height: 40px;
  min-width: 240px;
  padding: 0 8px 0 14px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-full);
  background: var(--warm-75);
  color: var(--text-tertiary);
  font: var(--weight-medium) var(--text-sm)/1 var(--font-sans);
  cursor: pointer;
  transition: all var(--dur-fast) var(--ease-standard);
}
.sx-search-trigger:hover { background: var(--white); border-color: var(--border-default); color: var(--text-secondary); }
.sx-search-trigger:focus-visible { outline: 2px solid var(--navy); outline-offset: 2px; }
.sx-search-trigger__icon { color: var(--text-tertiary); flex-shrink: 0; }
.sx-search-trigger__label { flex: 1; text-align: left; }
.sx-kbd {
  display: inline-flex; align-items: center;
  height: 22px; padding: 0 6px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--white);
  color: var(--text-tertiary);
  font: 600 10px/1 ui-monospace, Menlo, monospace;
  letter-spacing: 0.02em;
  box-shadow: inset 0 -1px 0 var(--border-subtle);
}
.sx-search-icon-btn {
  appearance: none;
  width: 40px; height: 40px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-full);
  background: var(--warm-75);
  color: var(--text-secondary);
  display: grid; place-items: center;
  cursor: pointer;
  transition: all var(--dur-fast) var(--ease-standard);
}
.sx-search-icon-btn:hover { background: var(--white); color: var(--text-primary); border-color: var(--border-default); }

/* Language dropdown */
.sx-langdrop { position: relative; }
.sx-langdrop__btn {
  appearance: none;
  display: inline-flex; align-items: center; gap: 6px;
  height: 40px;
  padding: 0 10px 0 12px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-full);
  background: var(--warm-75);
  color: var(--text-primary);
  font: var(--weight-semibold) var(--text-xs)/1 var(--font-sans);
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: all var(--dur-fast) var(--ease-standard);
}
.sx-langdrop__btn:hover { background: var(--white); border-color: var(--border-default); }
.sx-langdrop__btn:focus-visible { outline: 2px solid var(--navy); outline-offset: 2px; }
.sx-langdrop__flag { font-size: 14px; line-height: 1; }
.sx-langdrop__caret { width: 12px; height: 12px; color: var(--text-tertiary); transition: transform var(--dur-fast) var(--ease-standard); }
.sx-langdrop[data-open="true"] .sx-langdrop__caret { transform: rotate(180deg); }
.sx-langdrop__menu {
  position: absolute; right: 0; top: calc(100% + 6px);
  min-width: 160px;
  background: var(--white);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg, 0 12px 32px -8px rgba(5,6,43,0.18));
  padding: 4px;
  display: none;
  z-index: 50;
  opacity: 0; transform: translateY(-4px) scale(0.98);
  transition: opacity 120ms var(--ease-standard), transform 120ms var(--ease-standard);
}
.sx-langdrop[data-open="true"] .sx-langdrop__menu { display: block; opacity: 1; transform: translateY(0) scale(1); }
.sx-langdrop__item {
  display: flex; align-items: center; gap: 10px;
  width: 100%;
  padding: 8px 10px;
  border: 0; background: transparent;
  border-radius: var(--radius-sm);
  font: var(--weight-medium) var(--text-sm)/1 var(--font-sans);
  color: var(--text-primary);
  cursor: pointer;
  text-align: left;
}
.sx-langdrop__item:hover { background: var(--warm-75); }
.sx-langdrop__item[aria-selected="true"] { background: var(--warm-100); }
.sx-langdrop__item[aria-selected="true"]::after {
  content: "";
  margin-left: auto;
  width: 16px; height: 16px;
  background: var(--navy);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center / contain no-repeat;
}
.sx-langdrop__item-code { margin-left: auto; font-variant-numeric: tabular-nums; font-size: 11px; color: var(--text-tertiary); font-weight: 600; letter-spacing: 0.04em; }
.sx-langdrop__item[aria-selected="true"] .sx-langdrop__item-code { display: none; }

/* Narrow: collapse search trigger into just an icon. */
@media (max-width: 1080px) {
  .sx-nav--v2 .sx-search-trigger { display: none; }
}
@media (min-width: 1081px) {
  .sx-nav--v2 .sx-search-icon-btn { display: none; }
}

/* =============================================================
   COMMAND PALETTE (⌘K search)
   ============================================================= */
.sx-cmdk { position: fixed; inset: 0; z-index: 1000; display: none; align-items: flex-start; justify-content: center; padding: 12vh 16px 16px; }
.sx-cmdk[data-open="true"] { display: flex; }
.sx-cmdk__scrim { position: absolute; inset: 0; background: rgba(5,6,43,0.45); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; animation: sx-cmdk-scrim-in 160ms var(--ease-standard) forwards; }
@keyframes sx-cmdk-scrim-in { to { opacity: 1; } }
.sx-cmdk__panel {
  position: relative;
  width: 100%; max-width: 560px;
  background: var(--white);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  box-shadow: 0 40px 80px -20px rgba(5,6,43,0.35);
  overflow: hidden;
  opacity: 0; transform: translateY(-6px) scale(0.98);
  animation: sx-cmdk-panel-in 200ms var(--ease-standard) 40ms forwards;
}
@keyframes sx-cmdk-panel-in { to { opacity: 1; transform: translateY(0) scale(1); } }
.sx-cmdk__input-row {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border-subtle);
}
.sx-cmdk__input-row svg { flex-shrink: 0; color: var(--text-tertiary); }
.sx-cmdk__input {
  flex: 1;
  border: 0; outline: none; background: transparent;
  font: var(--weight-medium) var(--text-base, 16px)/1.4 var(--font-sans);
  color: var(--text-primary);
}
.sx-cmdk__input::placeholder { color: var(--text-tertiary); font-weight: 400; }
.sx-cmdk__esc {
  font: 600 10px/1 ui-monospace, Menlo, monospace;
  border: 1px solid var(--border-subtle); background: var(--warm-75);
  padding: 4px 8px; border-radius: 6px; color: var(--text-tertiary);
  letter-spacing: 0.04em;
}
.sx-cmdk__list { max-height: 360px; overflow-y: auto; padding: 6px; }
.sx-cmdk__group-heading {
  padding: 10px 10px 6px;
  font: 600 10px/1 var(--font-sans);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-tertiary);
}
.sx-cmdk__item {
  display: flex; align-items: center; gap: 12px;
  width: 100%;
  padding: 10px 12px;
  border: 0; background: transparent;
  border-radius: var(--radius-sm);
  cursor: pointer;
  color: var(--text-primary);
  font: var(--weight-medium) var(--text-sm) var(--font-sans);
  text-align: left;
}
.sx-cmdk__item:hover,
.sx-cmdk__item[data-selected="true"] { background: var(--warm-100); }
.sx-cmdk__item-icon { width: 32px; height: 32px; border-radius: 8px; background: var(--warm-75); display: grid; place-items: center; color: var(--navy); flex-shrink: 0; }
.sx-cmdk__item-label { flex: 1; min-width: 0; }
.sx-cmdk__item-label b { display: block; color: var(--text-primary); font-weight: 600; }
.sx-cmdk__item-label span { display: block; color: var(--text-tertiary); font-size: 12px; font-weight: 400; margin-top: 2px; }
.sx-cmdk__item-shortcut {
  margin-left: auto;
  font: 600 10px/1 ui-monospace, Menlo, monospace;
  border: 1px solid var(--border-subtle); background: var(--warm-75);
  padding: 4px 8px; border-radius: 6px; color: var(--text-tertiary);
}
.sx-cmdk__sep { height: 1px; background: var(--border-subtle); margin: 6px 4px; }
.sx-cmdk__footer {
  display: flex; align-items: center; gap: 14px;
  padding: 10px 18px;
  border-top: 1px solid var(--border-subtle);
  font: 500 11px var(--font-sans);
  color: var(--text-tertiary);
}
.sx-cmdk__footer-hint { display: inline-flex; align-items: center; gap: 6px; }
.sx-cmdk__empty { padding: 40px 16px; text-align: center; color: var(--text-tertiary); font-size: 13px; }

/* Footer (FOOTER_ORBIT_V1: global .wordmark rule lives in _partials/footer.html) */
.sx-footer {
  background: var(--warm-75);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  padding: var(--space-12);
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: var(--space-10);
}
@media (max-width: 800px) { .sx-footer { grid-template-columns: 1fr 1fr; } .sx-footer__brand { grid-column: 1 / -1; } }
.sx-footer h5 { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-tertiary); margin-bottom: var(--space-3); font-weight: var(--weight-semibold); }
.sx-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.sx-footer a { color: var(--text-body); font-size: var(--text-sm); }
.sx-footer__tagline { color: var(--text-body); font-size: var(--text-sm); max-width: 30ch; margin-top: var(--space-3); }

/* =============================================================
   DOC-ONLY TILES
   ============================================================= */
.sw-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; }
.sw {
  position: relative;
  aspect-ratio: 1 / 1.15;
  border-radius: var(--radius-md);
  border: 1px solid rgba(1,1,1,0.06);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 10px;
  font-size: 11px;
  font-family: var(--font-mono);
  color: var(--text-primary);
  overflow: hidden;
}
.sw b { font-family: var(--font-sans); font-weight: 600; font-size: 12px; display: block; margin-bottom: 2px; }
.sw small { opacity: 0.6; font-size: 10px; }
.sw--dark { color: var(--white); }
.sw--dark small { opacity: 0.8; }

.sem-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-3); }
.sem {
  display: grid; grid-template-columns: 48px 1fr; gap: var(--space-3); align-items: center;
  padding: var(--space-3); background: var(--bg-surface);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
}
.sem__chip { width: 48px; height: 48px; border-radius: var(--radius-sm); border: 1px solid rgba(1,1,1,0.06); }
.sem__name { font-family: var(--font-mono); color: var(--text-primary); font-size: 12px; }
.sem__val  { font-family: var(--font-mono); color: var(--text-tertiary); font-size: 11px; }

.type-spec { padding: var(--space-6); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); background: var(--bg-surface); }
.type-spec + .type-spec { margin-top: var(--space-4); }
.type-spec .label { display: flex; gap: var(--space-3); align-items: baseline; font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-tertiary); margin-bottom: var(--space-3); }
.type-spec .label b { color: var(--text-primary); font-family: var(--font-mono); font-weight: var(--weight-semibold); font-size: var(--text-sm); }

table.tokens { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
table.tokens td, table.tokens th { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--border-subtle); }
table.tokens th { font-size: var(--text-xs); color: var(--text-tertiary); text-transform: uppercase; letter-spacing: var(--tracking-wide); font-weight: var(--weight-semibold); }
table.tokens code { background: transparent; border: 0; padding: 0; color: var(--text-strong); }
table.tokens tr:last-child td { border-bottom: 0; }

.space-demo { display: flex; align-items: flex-end; gap: var(--space-4); padding: var(--space-5); background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow-x: auto; }
.space-demo .col { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.space-demo .bar { width: 28px; background: var(--navy-500); border-radius: 2px; }
.space-demo .cap { font-family: var(--font-mono); font-size: 11px; color: var(--text-tertiary); }

.shadow-demo { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--space-4); }
.shadow-demo .tile { background: var(--bg-surface); border-radius: var(--radius-md); padding: var(--space-6); font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-secondary); text-align: center; }

.radius-demo { display: flex; gap: var(--space-4); flex-wrap: wrap; }
.radius-demo .r { width: 92px; height: 92px; background: var(--navy-0); border: 1px solid var(--navy-50); display: grid; place-items: end center; padding: 8px; font-family: var(--font-mono); font-size: 11px; color: var(--navy-700); }

.icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: var(--space-2); }
.icon-tile {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: var(--space-4);
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  font-family: var(--font-mono); font-size: 11px; color: var(--text-tertiary);
}
.icon-tile svg { color: var(--text-primary); }

.page-frame {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  background: var(--warm-75);
  padding: var(--space-5);
  overflow: hidden;
}
.page-frame header.top {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: var(--space-4);
  color: var(--text-tertiary); font-family: var(--font-mono); font-size: var(--text-xs);
}
.dot { width: 10px; height: 10px; border-radius: 50%; background: var(--warm-200); }
.dot.r { background: #E38577; } .dot.y { background: #E5BA50; } .dot.g { background: #8CB274; }

.hero-preview {
  position: relative;
  background: var(--bg-surface);
  border-radius: var(--radius-xl);
  padding: clamp(24px, 4vw, 56px);
  /* HERO_CLIP_FIX_V1 (2026-05-03): isolation:isolate keeps the hero its own
     stacking context (so the aurora ::before stays "inside") without clipping
     the search dropdown that pops out on focus. */
  isolation: isolate;
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: var(--space-8);
  align-items: center;
  min-height: 480px;
}
/* The decorative ::before/::after layers should still respect the rounded
   border, so put the radius mask on a dedicated child class instead of the
   parent. Decorations are already absolutely positioned and won't escape
   the hero box visually as long as their dimensions stay within. */
.hero-preview > * { position: relative; z-index: 1; }
.hero-preview__copy { position: relative; z-index: 2; }
.hero-preview h1 {
  font-weight: 600;
  font-size: clamp(36px, 4.4vw, 60px); line-height: var(--leading-tight); letter-spacing: var(--tracking-display);
  max-width: 14ch; margin-bottom: var(--space-4); color: var(--text-primary);
}
.hero-preview h1 .accent { color: var(--navy-500); }
.hero-preview p { font-size: var(--text-lg); color: var(--text-body); max-width: 44ch; margin-bottom: var(--space-6); }

/* ---------- ORBIT (desktop hero, right side) ---------- */
.hero-orbit {
  position: relative;
  align-self: stretch;
  margin: calc(-1 * clamp(24px, 4vw, 56px));
  margin-left: 0;
  overflow: hidden;
  border-radius: 0;
}
.hero-orbit__stage {
  position: absolute;
  top: 50%; left: 50%;
  width: 760px; height: 760px;
  transform: translate(-10%, -50%); /* crop to ~half visible */
  display: grid; place-items: center;
}
/* Soft halo behind the orbit */
.hero-orbit::before {
  content: "";
  position: absolute; inset: -10%;
  background:
    radial-gradient(40% 40% at 60% 50%, rgba(163,135,210,0.22), transparent 70%),
    radial-gradient(40% 40% at 40% 70%, rgba(102,175,166,0.20), transparent 70%),
    radial-gradient(40% 40% at 70% 30%, rgba(189,250,251,0.35), transparent 70%);
  filter: blur(8px);
  pointer-events: none;
}
.hero-orbit__center {
  position: relative;
  width: 96px; height: 96px;
  border-radius: 50%;
  background: var(--white);
  box-shadow: 0 12px 32px -8px rgba(5,6,43,0.25), 0 0 0 1px var(--border-subtle);
  display: grid; place-items: center;
  z-index: 4;
  /* HERO_CENTER_WORDMARK_V1 — Aeonik Pro Semibold wordmark, -4% tracking */
  font-family: var(--font-logo, var(--font-sans));
  font-weight: 600; font-size: 14px;
  letter-spacing: var(--tracking-logo, -0.04em);
  color: var(--navy-500);
  text-align: center;
  padding: 0 8px;
}
.hero-orbit__ring {
  position: absolute;
  top: 50%; left: 50%;
  border-radius: 50%;
  border: 1.5px dashed var(--warm-150);
  transform: translate(-50%, -50%);
  animation: sx-orbit-spin var(--orbit-dur, 30s) linear infinite;
}
.hero-orbit__ring--rev { animation-direction: reverse; }
.hero-orbit__chip {
  position: absolute;
  width: 52px; height: 52px;
  margin: -26px 0 0 -26px;
  border-radius: 50%;
  background: var(--white);
  box-shadow: 0 6px 18px -4px rgba(5,6,43,0.18), 0 0 0 1px var(--border-subtle);
  display: grid; place-items: center;
  /* Counter-rotate so icons stay upright */
  animation: sx-orbit-counter var(--orbit-dur, 30s) linear infinite reverse;
}
.hero-orbit__ring--rev .hero-orbit__chip {
  animation-direction: normal;
}
.hero-orbit__chip svg { width: 24px; height: 24px; }
.hero-orbit__chip--lg { width: 64px; height: 64px; margin: -32px 0 0 -32px; }
.hero-orbit__chip--lg svg { width: 28px; height: 28px; }
.hero-orbit__chip--logo {
  font-family: var(--font-logo, var(--font-sans));
  font-weight: 700; font-size: 14px;
  letter-spacing: -0.02em;
  color: var(--navy-500);
}
@keyframes sx-orbit-spin    { from { transform: translate(-50%, -50%) rotate(0deg); } to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes sx-orbit-counter { from { transform: rotate(0deg); } to { transform: rotate(-360deg); } }
@media (prefers-reduced-motion: reduce) {
  .hero-orbit__ring, .hero-orbit__chip { animation: none !important; }
}

/* Stack on small page-frame widths */
@media (max-width: 880px) {
  .hero-preview { grid-template-columns: 1fr; min-height: auto; }
  .hero-orbit { display: none; }
}

/* ---------- MOBILE HERO (centered orbit, stacked) ---------- */
.hero-mobile {
  position: relative;
  background: var(--bg-surface);
  border-radius: var(--radius-xl);
  padding: 28px 20px 32px;
  overflow: hidden;
  display: grid; gap: 20px;
  text-align: center;
}
.hero-mobile::before {
  content: "";
  position: absolute; inset: -20% -10% auto -10%; height: 60%;
  background:
    radial-gradient(50% 60% at 50% 0%, rgba(189,250,251,0.55), transparent 70%),
    radial-gradient(60% 50% at 30% 30%, rgba(163,135,210,0.18), transparent 70%),
    radial-gradient(60% 50% at 70% 30%, rgba(102,175,166,0.18), transparent 70%);
  pointer-events: none;
}
.hero-mobile__orbit {
  position: relative;
  width: 280px; height: 280px;
  margin: 0 auto;
  display: grid; place-items: center;
  z-index: 1;
}
.hero-mobile__orbit .hero-orbit__center { width: 72px; height: 72px; font-size: 11px; padding: 0 4px; }
.hero-mobile__orbit .hero-orbit__chip { width: 40px; height: 40px; margin: -20px 0 0 -20px; }
.hero-mobile__orbit .hero-orbit__chip svg { width: 18px; height: 18px; }
.hero-mobile__orbit .hero-orbit__chip--logo { font-size: 11px; }
.hero-mobile h1 {
  font-weight: 600;
  font-size: 30px; line-height: 1.1; letter-spacing: -0.02em;
  color: var(--text-primary);
  text-wrap: balance;
}
.hero-mobile h1 .accent { color: var(--navy-500); }
.hero-mobile p { font-size: 15px; color: var(--text-body); max-width: 32ch; margin: 0 auto; }
.hero-mobile__search {
  display: flex; gap: 8px;
  background: var(--white);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-full);
  padding: 5px 5px 5px 16px;
  box-shadow: var(--shadow-md);
  align-items: center;
}
.hero-mobile__search input { flex: 1; border: 0; padding: 10px 0; font: inherit; background: transparent; outline: none; min-width: 0; font-size: 14px; }
.hero-mobile__chips { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.hero-search {
  display: grid; grid-template-columns: 1fr auto; gap: 8px;
  background: var(--white); border: 1px solid var(--border-default); border-radius: var(--radius-full);
  padding: 6px; max-width: 520px;
  box-shadow: var(--shadow-md);
  position: relative; z-index: 1;
}
.hero-search input {
  border: 0; padding: 12px 18px; font: inherit; background: transparent;
  color: var(--text-primary); outline: none;
}

.slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(68px, 1fr)); gap: 8px; }
.slot {
  padding: 10px 8px; text-align: center;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  font-size: var(--text-sm); color: var(--text-body);
  cursor: pointer; transition: all var(--dur-fast);
  background: var(--bg-surface);
  font-variant-numeric: tabular-nums;
}
.slot:hover { border-color: var(--navy-200); color: var(--navy-700); }
.slot.sel { background: var(--navy-500); color: var(--white); border-color: var(--navy-500); }
.slot.off { opacity: 0.35; text-decoration: line-through; cursor: not-allowed; }

.prin { padding: var(--space-6); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); background: var(--bg-surface); display: flex; flex-direction: column; gap: 10px; min-height: 180px; }
.prin .num { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-tertiary); }
.prin h4 { font-size: var(--text-xl); font-weight: 600; letter-spacing: var(--tracking-tight); }
.prin p { font-size: var(--text-sm); color: var(--text-body); }

.dodont { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
@media (max-width: 700px) { .dodont { grid-template-columns: 1fr; } }
.dodont .cell { padding: var(--space-5); border-radius: var(--radius-lg); border: 1px solid var(--border-subtle); background: var(--bg-surface); }
.dodont h5 { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); margin-bottom: var(--space-3); font-weight: var(--weight-semibold); }
.dodont .do h5 { color: #2B5F57; }
.dodont .dont h5 { color: #7D2513; }
.dodont p { font-size: var(--text-sm); color: var(--text-body); }

.rating { display: inline-flex; align-items: center; gap: 6px; font-size: var(--text-sm); }
.rating .score { font-weight: 600; font-size: var(--text-md); color: var(--text-primary); }
.rating .stars { color: #C89A3A; letter-spacing: 1px; }
.rating .count { color: var(--text-tertiary); font-size: var(--text-xs); }

.illo {
  border-radius: var(--radius-xl);
  min-height: 180px;
  display: grid; place-items: center;
  font-weight: 600; font-size: 28px;
  color: var(--navy-600); letter-spacing: var(--tracking-tight);
  position: relative; overflow: hidden;
}
.illo svg { position: absolute; inset: 0; width: 100%; height: 100%; }

/* Aeonik logo showcase */
.logo-showcase {
  padding: var(--space-10); background: var(--bg-surface);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-xl);
  display: grid; gap: var(--space-8);
}
.logo-big {
  font-family: var(--font-logo); font-weight: 600;
  font-size: clamp(64px, 10vw, 128px);
  letter-spacing: var(--tracking-logo);
  line-height: 1; color: var(--text-primary);
}
.logo-inv { background: var(--navy-500); color: var(--white); padding: var(--space-8); border-radius: var(--radius-lg); }
.logo-inv .logo-big { color: var(--white); }

/* ============================================================
   DIALOGS / MODALS
   ============================================================ */
.sx-modal-stage {
  background:
    radial-gradient(60% 80% at 30% 20%, rgba(163,135,210,0.18), transparent 60%),
    radial-gradient(50% 70% at 80% 80%, rgba(102,175,166,0.16), transparent 60%),
    rgba(5,6,43,0.45);
  backdrop-filter: blur(4px);
  padding: var(--space-7) var(--space-5);
  border-radius: var(--radius-lg);
  display: grid; place-items: center;
  min-height: 360px;
}
.sx-modal {
  background: var(--white);
  border-radius: var(--radius-xl, 20px);
  box-shadow: 0 24px 64px -12px rgba(5,6,43,0.32), 0 8px 24px -8px rgba(5,6,43,0.18);
  width: 100%;
  display: flex; flex-direction: column;
  max-height: min(640px, 80vh);
  overflow: hidden;
  position: relative;
}
.sx-modal__header {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
  flex-shrink: 0;
}
.sx-modal__body {
  padding: var(--space-6);
  overflow-y: auto;
  flex: 1;
}
.sx-modal__footer {
  display: flex; gap: var(--space-3); justify-content: flex-end;
  padding: var(--space-4) var(--space-5);
  border-top: 1px solid var(--border-subtle);
  background: var(--warm-50);
  flex-shrink: 0;
}
.sx-modal__close {
  position: absolute; top: 14px; right: 14px;
  width: 32px; height: 32px; border-radius: var(--radius-full, 999px);
  background: transparent; border: 0; cursor: pointer;
  font-size: 22px; color: var(--text-secondary); line-height: 1;
  display: grid; place-items: center;
  transition: background var(--dur-fast, 120ms);
  z-index: 2;
}
.sx-modal__close:hover { background: var(--warm-75); color: var(--text-primary); }

/* Stepper */
.sx-stepper { display: flex; align-items: center; gap: 6px; }
.sx-step {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 500;
  color: var(--text-tertiary);
  padding: 4px 10px 4px 4px;
  border-radius: var(--radius-full, 999px);
}
.sx-step span {
  width: 22px; height: 22px; border-radius: 50%;
  display: grid; place-items: center;
  font-size: 11px; font-weight: 600;
  background: transparent;
  border: 1px solid var(--warm-150);
  color: var(--text-tertiary);
  font-variant-numeric: tabular-nums;
}
.sx-step--active { color: var(--text-primary); }
.sx-step--active span { background: var(--navy-500); color: var(--white); border-color: var(--navy-500); }
.sx-step--done { color: var(--text-body); }
.sx-step--done span { background: var(--navy-500); color: var(--white); border-color: var(--navy-500); }
.sx-stepper > .sx-step + .sx-step::before {
  content: ""; display: inline-block; width: 16px; height: 1px;
  background: var(--warm-150); margin-right: 6px; margin-left: -2px;
}

/* Radio rows (for service picker etc.) */
.sx-radio {
  display: flex; align-items: center; gap: var(--space-3);
  padding: 14px 16px;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: all var(--dur-fast, 120ms);
  background: var(--white);
}
.sx-radio:hover { border-color: var(--navy-200); background: var(--bg-accent-soft); }
.sx-radio__dot {
  width: 18px; height: 18px; border-radius: 50%;
  border: 1.5px solid var(--warm-200); background: var(--white);
  flex-shrink: 0; position: relative;
  transition: all var(--dur-fast, 120ms);
}
.sx-radio--selected { border-color: var(--navy-500); background: var(--bg-accent-soft); }
.sx-radio--selected .sx-radio__dot { border-color: var(--navy-500); }
.sx-radio--selected .sx-radio__dot::after {
  content: ""; position: absolute; inset: 3px;
  border-radius: 50%; background: var(--navy-500);
}

/* Time slots */
.slots { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.slot {
  padding: 10px 4px; text-align: center;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm, 6px);
  font-size: 13px; font-variant-numeric: tabular-nums;
  cursor: pointer; background: var(--white);
  transition: all var(--dur-fast, 120ms);
}
.slot:hover { border-color: var(--navy-200); background: var(--bg-accent-soft); }
.slot.sel { background: var(--navy-500); color: var(--white); border-color: var(--navy-500); }
.slot.off { color: var(--text-disabled); background: var(--warm-50); cursor: not-allowed; text-decoration: line-through; border-style: dashed; }
.slot.off:hover { border-color: var(--border-default); background: var(--warm-50); }

/* ============================================================
   AURORA SHINE — Symptex palette
   Static (no hover trigger) on key cards & primary CTAs.
   Uses navy → violet → teal → sky from the brand palette.
   ============================================================ */
@property --aurora-angle {
  syntax: "<angle>"; inherits: false; initial-value: 0deg;
}
@keyframes sx-aurora-spin {
  from { --aurora-angle: 0deg; }
  to   { --aurora-angle: 360deg; }
}
@keyframes sx-aurora-drift {
  0%, 100% { transform: translate3d(-2%, -1%, 0) scale(1.02); opacity: 0.85; }
  50%      { transform: translate3d(2%, 1%, 0) scale(1.05);  opacity: 1; }
}

/* The shine wrapper. Apply class .sx-shine to anything that should glow. */
.sx-shine { position: relative; isolation: isolate; }
.sx-shine::before {
  content: "";
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  padding: 2px;
  background: conic-gradient(
    from var(--aurora-angle, 0deg),
    var(--navy-500)   0deg,
    var(--violet)    90deg,
    var(--teal)     180deg,
    var(--sky)      270deg,
    var(--navy-500) 360deg
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  opacity: 0.9;
  pointer-events: none;
  z-index: 1;
  animation: sx-aurora-spin 8s linear infinite;
}
.sx-shine::after {
  content: "";
  position: absolute;
  inset: -10px;
  border-radius: inherit;
  background:
    radial-gradient(40% 60% at 20% 30%, rgba(163,135,210,0.55), transparent 60%),
    radial-gradient(50% 60% at 80% 70%, rgba(102,175,166,0.45), transparent 60%),
    radial-gradient(45% 55% at 50% 100%, rgba(189,250,251,0.45), transparent 60%);
  filter: blur(18px);
  opacity: 0.55;
  pointer-events: none;
  z-index: -1;
  animation: sx-aurora-drift 6s ease-in-out infinite;
}

/* Softer variant for cards (less intense, no border ring — just the glow halo) */
.sx-shine--soft::before { display: none; }
.sx-shine--soft::after {
  inset: -14px;
  opacity: 0.42;
  filter: blur(22px);
}

/* CTA variant — keeps the rotating border ring; used on buttons. */
.sx-shine--cta::before { padding: 1.5px; opacity: 1; }
.sx-shine--cta::after { inset: -8px; filter: blur(12px); opacity: 0.65; }

/* When applied to buttons, ensure the button itself sits above the ring */
.sx-shine > .sx-btn,
.sx-shine > button { position: relative; z-index: 2; }
/* ---------- AVATAR (rounded square) ---------- */
.sx-avatar {
  display:inline-block;width:40px;height:40px;border-radius:10px;
  background:var(--warm-75) center/cover no-repeat;
  border:1px solid var(--border-subtle);
  position:relative;flex:none;overflow:hidden;
}
.sx-avatar--sm{width:28px;height:28px;border-radius:7px}
.sx-avatar--lg{width:56px;height:56px;border-radius:12px}
.sx-avatar--xl{width:80px;height:80px;border-radius:14px}
.sx-avatar__init{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:var(--navy-700);background:var(--navy-0)}
.sx-avatar--lg .sx-avatar__init{font-size:18px}
.sx-avatar--xl .sx-avatar__init{font-size:26px;letter-spacing:-0.02em}
.sx-avatar__dot{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:4px;background:var(--teal);border:2px solid var(--white)}
.sx-avatar__dot--away{background:#C89A3A}
.sx-avatar__dot--off{background:var(--warm-200)}

/* ---------- TOGGLE (square pill) ---------- */
.sx-toggle{position:relative;display:inline-block;width:40px;height:24px;flex:none}
.sx-toggle input{position:absolute;opacity:0;inset:0;cursor:pointer}
.sx-toggle__track{display:block;width:100%;height:100%;background:var(--warm-150);border-radius:8px;transition:background var(--dur-fast) var(--ease-standard)}
.sx-toggle__thumb{position:absolute;left:3px;top:3px;width:18px;height:18px;background:var(--white);border-radius:6px;box-shadow:var(--shadow-sm);transition:transform var(--dur-fast) var(--ease-standard)}
.sx-toggle input:checked + .sx-toggle__track{background:var(--navy-500)}
.sx-toggle input:checked ~ .sx-toggle__thumb{transform:translateX(16px)}
.sx-toggle input:focus-visible ~ .sx-toggle__track{box-shadow:var(--shadow-focus)}

/* ---------- SEGMENTED CONTROL ---------- */
.sx-seg{display:inline-flex;background:var(--warm-75);border:1px solid var(--border-subtle);border-radius:10px;padding:3px;gap:0}
.sx-seg__btn{flex:1;padding:7px 14px;font-size:13px;font-weight:500;color:var(--text-secondary);background:transparent;border:0;border-radius:7px;cursor:pointer;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard);white-space:nowrap}
.sx-seg__btn[aria-pressed="true"]{background:var(--white);color:var(--text-primary);box-shadow:var(--shadow-sm)}

/* ---------- CHECKBOX / RADIO (square) ---------- */
.sx-check, .sx-radio{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;color:var(--text-strong)}
.sx-check input, .sx-radio input{position:absolute;opacity:0;width:0;height:0}
.sx-check__box, .sx-radio__box{width:18px;height:18px;border:1.5px solid var(--border-strong);border-radius:5px;background:var(--white);display:flex;align-items:center;justify-content:center;transition:all var(--dur-fast) var(--ease-standard);flex:none}
.sx-radio__box{border-radius:5px}
.sx-check input:checked + .sx-check__box,
.sx-radio input:checked + .sx-radio__box{background:var(--navy-500);border-color:var(--navy-500)}
.sx-check input:checked + .sx-check__box::after{content:"";width:10px;height:6px;border-left:2px solid var(--white);border-bottom:2px solid var(--white);transform:rotate(-45deg) translate(1px,-1px)}
.sx-radio input:checked + .sx-radio__box::after{content:"";width:7px;height:7px;background:var(--white);border-radius:2px}
.sx-check input:focus-visible + .sx-check__box,
.sx-radio input:focus-visible + .sx-radio__box{box-shadow:var(--shadow-focus)}

/* ---------- PAGINATION ---------- */
.sx-pager{display:inline-flex;gap:4px;align-items:center;background:var(--white);border:1px solid var(--border-subtle);border-radius:12px;padding:4px}
.sx-pager__btn{min-width:36px;height:36px;padding:0 10px;border:0;background:transparent;border-radius:8px;font-size:14px;font-weight:500;color:var(--text-strong);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:4px}
.sx-pager__btn:hover{background:var(--warm-75)}
.sx-pager__btn[aria-current="page"]{background:var(--navy-500);color:var(--white)}
.sx-pager__btn[disabled]{opacity:0.4;cursor:not-allowed}
.sx-pager__sep{color:var(--text-tertiary);padding:0 4px}

/* ---------- TOAST / SNACKBAR ---------- */
.sx-toast{display:inline-flex;align-items:flex-start;gap:12px;background:var(--bg-inverse);color:var(--white);padding:12px 16px 12px 14px;border-radius:12px;box-shadow:var(--shadow-lg);max-width:420px}
.sx-toast__icon{width:20px;height:20px;flex:none;color:var(--mint);margin-top:1px}
.sx-toast__icon--err{color:#F2A491}
.sx-toast__title{font-weight:600;font-size:14px;line-height:1.4}
.sx-toast__body{font-size:13px;color:rgba(255,255,255,0.7);margin-top:2px;line-height:1.45}
.sx-toast__close{margin-left:8px;background:transparent;border:0;color:rgba(255,255,255,0.6);cursor:pointer;font-size:18px;line-height:1;padding:2px 4px;border-radius:4px}
.sx-toast__close:hover{color:var(--white);background:rgba(255,255,255,0.08)}

/* ---------- BANNER / ALERT ---------- */
.sx-banner{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:12px;border:1px solid;font-size:14px;line-height:1.5}
.sx-banner__icon{width:20px;height:20px;flex:none;margin-top:1px}
.sx-banner__title{font-weight:600;color:var(--text-primary);margin-bottom:2px}
.sx-banner__body{color:var(--text-body);font-size:13px}
.sx-banner__close{margin-left:auto;background:transparent;border:0;color:var(--text-tertiary);cursor:pointer;font-size:18px;line-height:1;padding:2px 4px;border-radius:4px}
.sx-banner--info{background:var(--status-info-bg);border-color:rgba(154,181,224,0.4);color:var(--navy-700)}
.sx-banner--info .sx-banner__icon{color:var(--navy-500)}
.sx-banner--success{background:var(--status-success-bg);border-color:rgba(102,175,166,0.35);color:#1F5048}
.sx-banner--success .sx-banner__icon{color:var(--teal)}
.sx-banner--warn{background:var(--status-warning-bg);border-color:rgba(200,154,58,0.35);color:#6B4A0E}
.sx-banner--warn .sx-banner__icon{color:#C89A3A}
.sx-banner--danger{background:var(--status-danger-bg);border-color:rgba(182,61,37,0.3);color:#7D2513}
.sx-banner--danger .sx-banner__icon{color:#B63D25}

/* ---------- SKELETON ---------- */
.sx-skel{background:linear-gradient(90deg,var(--warm-75) 0%,var(--warm-100) 50%,var(--warm-75) 100%);background-size:200% 100%;animation:sx-skel 1.4s var(--ease-standard) infinite;border-radius:6px;display:block}
.sx-skel--circle{border-radius:10px}
@keyframes sx-skel{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ---------- EMPTY STATE ---------- */
.sx-empty{padding:48px 24px;text-align:center;color:var(--text-secondary);border:1px dashed var(--border-default);border-radius:14px;background:var(--bg-surface)}
.sx-empty__icon{width:48px;height:48px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;background:var(--warm-75);border-radius:12px;color:var(--text-secondary)}
.sx-empty__title{font-size:17px;font-weight:600;color:var(--text-primary);margin-bottom:4px}
.sx-empty__body{font-size:14px;max-width:36ch;margin:0 auto 18px}

/* ---------- SPINNER ---------- */
.sx-spinner{width:24px;height:24px;border:2.5px solid var(--warm-100);border-top-color:var(--navy-500);border-radius:8px;animation:sx-spin 0.8s linear infinite}
@keyframes sx-spin{to{transform:rotate(360deg)}}

/* ---------- DIVIDER ---------- */
.sx-divider{height:1px;background:var(--border-subtle);margin:0;border:0}
.sx-divider--text{display:flex;align-items:center;gap:12px;color:var(--text-tertiary);font-size:12px;text-transform:uppercase;letter-spacing:0.06em}
.sx-divider--text::before,.sx-divider--text::after{content:"";flex:1;height:1px;background:var(--border-subtle)}

/* ---------- PROGRESS ---------- */
.sx-progress{height:6px;background:var(--warm-100);border-radius:3px;overflow:hidden}
.sx-progress__bar{height:100%;background:var(--navy-500);border-radius:3px;transition:width var(--dur-base) var(--ease-standard)}
.sx-progress--accent .sx-progress__bar{background:linear-gradient(90deg,var(--violet),var(--teal))}

/* ---------- STEPPER (3-step) ---------- */
.sx-stepper{display:flex;align-items:center;gap:8px;width:100%}
.sx-step{display:flex;align-items:center;gap:8px;flex:none}
.sx-step__num{width:28px;height:28px;border-radius:8px;background:var(--warm-75);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex:none}
.sx-step__label{font-size:13px;font-weight:500;color:var(--text-secondary);white-space:nowrap}
.sx-step--active .sx-step__num{background:var(--navy-500);color:var(--white)}
.sx-step--active .sx-step__label{color:var(--text-primary)}
.sx-step--done .sx-step__num{background:var(--mint);color:#1F5048}
.sx-step--done .sx-step__label{color:var(--text-strong)}
.sx-step__line{flex:1;height:2px;background:var(--warm-100);border-radius:1px;min-width:24px}
.sx-step--done + .sx-step__line, .sx-step__line--done{background:var(--mint)}

/* ---------- OTP CODE INPUT ---------- */
.sx-otp{display:inline-flex;gap:10px}
.sx-otp__cell{width:48px;height:56px;background:var(--white);border:1.5px solid var(--border-default);border-radius:10px;font-size:22px;font-weight:600;color:var(--text-primary);text-align:center;font-feature-settings:"tnum";letter-spacing:0;transition:border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}
.sx-otp__cell:focus{outline:0;border-color:var(--navy-500);box-shadow:var(--shadow-focus)}
.sx-otp__cell--filled{border-color:var(--navy-500);background:var(--navy-0)}

/* ---------- TIME-SLOT GRID ---------- */
.sx-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}
.sx-slot{height:40px;border:1px solid var(--border-default);background:var(--white);border-radius:10px;font-size:13px;font-weight:500;color:var(--text-strong);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--dur-fast) var(--ease-standard);font-feature-settings:"tnum"}
.sx-slot:hover{border-color:var(--navy-200);color:var(--navy-700)}
.sx-slot[aria-pressed="true"]{background:var(--navy-500);color:var(--white);border-color:var(--navy-500)}
.sx-slot[disabled]{opacity:0.4;cursor:not-allowed;text-decoration:line-through;background:var(--warm-75)}
.sx-slot--day{flex-direction:column;height:auto;padding:8px 0;gap:2px}
.sx-slot--day .sx-slot__d{font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.04em}
.sx-slot--day .sx-slot__n{font-size:16px;font-weight:600}
.sx-slot--day[aria-pressed="true"] .sx-slot__d{color:rgba(255,255,255,0.75)}

/* ---------- ACCORDION ---------- */
.sx-accord{border:1px solid var(--border-subtle);border-radius:14px;background:var(--white);overflow:hidden}
.sx-accord__item{border-bottom:1px solid var(--border-subtle)}
.sx-accord__item:last-child{border-bottom:0}
.sx-accord__head{width:100%;background:transparent;border:0;padding:16px 18px;display:flex;align-items:center;gap:12px;cursor:pointer;text-align:left;font-weight:500;color:var(--text-primary);font-size:15px}
.sx-accord__head:hover{background:var(--warm-75)}
.sx-accord__caret{margin-left:auto;color:var(--text-tertiary);transition:transform var(--dur-base) var(--ease-standard)}
.sx-accord__item[open] .sx-accord__caret{transform:rotate(90deg)}
.sx-accord__body{padding:0 18px 18px;color:var(--text-body);font-size:14px;line-height:1.6;display:none}
.sx-accord__item[open] .sx-accord__body{display:block}

/* ---------- TOOLTIP ---------- */
.sx-tip{position:relative;display:inline-flex}
.sx-tip__bubble{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--bg-inverse);color:var(--white);padding:6px 10px;border-radius:6px;font-size:12px;white-space:nowrap;box-shadow:var(--shadow-md);z-index:10;pointer-events:none}
.sx-tip__bubble::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--bg-inverse)}

/* ---------- KANBAN ---------- */
.sx-kan{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;align-items:start}
.sx-kan__col{background:var(--warm-75);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:10px;min-height:280px}
.sx-kan__col--pend .sx-kan__head__count{background:var(--status-warning-bg);color:#6B4A0E}
.sx-kan__col--conf .sx-kan__head__count{background:var(--status-info-bg);color:var(--navy-600)}
.sx-kan__col--done .sx-kan__head__count{background:var(--status-success-bg);color:#1F5048}
.sx-kan__col--canc .sx-kan__head__count{background:var(--status-danger-bg);color:#7D2513}
.sx-kan__head{display:flex;align-items:center;gap:8px;padding:0 4px;font-size:13px;font-weight:600;color:var(--text-strong)}
.sx-kan__head__count{font-size:11px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--warm-100);color:var(--text-secondary)}
.sx-kan__card{background:var(--white);border:1px solid var(--border-subtle);border-radius:10px;padding:12px;cursor:grab;display:flex;flex-direction:column;gap:8px;transition:transform var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}
.sx-kan__card:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}
.sx-kan__card__name{font-size:14px;font-weight:600;color:var(--text-primary)}
.sx-kan__card__meta{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sx-kan__card__time{font-size:12px;font-weight:600;color:var(--navy-700);font-feature-settings:"tnum";background:var(--navy-0);padding:2px 8px;border-radius:6px;align-self:flex-start}
.sx-kan__card__row{display:flex;align-items:center;gap:8px}

/* ---------- DRAWER ---------- */
.sx-drawer{position:absolute;inset:0;background:var(--bg-inverse);background:rgba(5,6,43,0.45);display:flex;justify-content:flex-end;border-radius:inherit;overflow:hidden}
.sx-drawer__panel{width:min(420px,80%);background:var(--white);height:100%;padding:20px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--shadow-xl);animation:sx-drawer-in var(--dur-base) var(--ease-enter)}
@keyframes sx-drawer-in{from{transform:translateX(100%)}to{transform:translateX(0)}}
.sx-drawer__head{display:flex;align-items:center;gap:12px}
.sx-drawer__title{font-size:18px;font-weight:600;color:var(--text-primary)}
.sx-drawer__close{margin-left:auto;width:32px;height:32px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--white);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}

/* ---------- STAT TILE ---------- */
.sx-stat{background:var(--white);border:1px solid var(--border-subtle);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:6px;min-width:0}
.sx-stat__row{display:flex;align-items:center;gap:10px}
.sx-stat__icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--navy-0);color:var(--navy-700);flex:none}
.sx-stat__icon--mint{background:var(--mint);color:#1F5048}
.sx-stat__icon--violet{background:var(--status-accent-bg);color:var(--purple)}
.sx-stat__icon--warm{background:var(--status-warning-bg);color:#6B4A0E}
.sx-stat__label{font-size:13px;color:var(--text-secondary);font-weight:500}
.sx-stat__value{font-size:30px;font-weight:600;color:var(--text-primary);letter-spacing:-0.02em;line-height:1.1;font-feature-settings:"tnum"}
.sx-stat__trend{font-size:12px;color:var(--teal);display:inline-flex;align-items:center;gap:3px;font-weight:600}
.sx-stat__trend--down{color:#B63D25}

/* ---------- TABLE-CARD ---------- */
.sx-table{width:100%;border-collapse:collapse;font-size:13px}
.sx-table thead th{text-align:left;padding:11px 14px;font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-tertiary);font-weight:600;background:var(--warm-75);border-bottom:1px solid var(--border-subtle)}
.sx-table tbody td{padding:12px 14px;border-bottom:1px solid var(--border-subtle);color:var(--text-strong);vertical-align:middle}
.sx-table tbody tr:last-child td{border-bottom:0}
.sx-table tbody tr:hover{background:var(--warm-75)}
.sx-table__cell-user{display:flex;align-items:center;gap:10px}
.sx-table__cell-user__name{font-weight:500;color:var(--text-primary)}
.sx-table__cell-user__sub{font-size:11px;color:var(--text-tertiary)}
.sx-tablecard{background:var(--white);border:1px solid var(--border-subtle);border-radius:14px;overflow:hidden}
.sx-tablecard__head{padding:14px 16px;border-bottom:1px solid var(--border-subtle);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.sx-tablecard__title{font-weight:600;color:var(--text-primary);font-size:15px;margin-right:auto}
.sx-tablecard__actions{display:flex;gap:8px;align-items:center}
.sx-tablecard__filters{padding:10px 16px;display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--border-subtle);background:var(--warm-75)}
.sx-tablecard__foot{padding:10px 16px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border-subtle);font-size:12px;color:var(--text-tertiary)}

/* ---------- REVIEWS BLOCK ---------- */
.sx-rev{display:flex;flex-direction:column;gap:14px}
.sx-rev__item{padding:14px;border:1px solid var(--border-subtle);border-radius:12px;background:var(--white)}
.sx-rev__head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.sx-rev__name{font-weight:600;color:var(--text-primary);font-size:14px}
.sx-rev__date{font-size:11px;color:var(--text-tertiary);margin-left:auto}
.sx-rev__stars{display:inline-flex;gap:1px;color:#E0A93A}
.sx-rev__body{font-size:14px;color:var(--text-body);line-height:1.55}
.sx-rev__actions{display:flex;gap:8px;margin-top:10px;align-items:center}
.sx-rev__btn{font-size:12px;color:var(--text-secondary);background:transparent;border:1px solid var(--border-subtle);border-radius:8px;padding:5px 10px;display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.sx-rev__btn:hover{background:var(--warm-75)}
.sx-rev__reply{margin-top:10px;padding:10px 12px;background:var(--navy-0);border-left:3px solid var(--navy-500);border-radius:6px;font-size:13px;color:var(--text-strong)}
.sx-rev__reply__by{font-weight:600;color:var(--navy-700);font-size:12px;margin-bottom:3px;display:flex;align-items:center;gap:5px}

/* ---------- MOBILE DOCK ---------- */
.sx-dock{position:absolute;left:8px;right:8px;bottom:8px;background:var(--white);border:1px solid var(--border-subtle);border-radius:18px;padding:8px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-lg)}
.sx-dock__btn{flex:1;background:transparent;border:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;color:var(--text-tertiary);font-size:10px;font-weight:500;cursor:pointer;border-radius:10px}
.sx-dock__btn[aria-current="page"]{color:var(--navy-700)}
.sx-dock__cta{flex:none;width:48px;height:48px;border-radius:14px;background:var(--navy-500);color:var(--white);display:flex;align-items:center;justify-content:center;border:0;cursor:pointer;box-shadow:0 6px 18px -6px rgba(19,25,99,0.5);margin:-22px 4px 0}

/* ---------- DEMO BAR ---------- */
.sx-demobar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--warm-75);border-bottom:1px solid var(--border-subtle);font-size:11px;color:var(--text-secondary)}
.sx-demobar__lbl{text-transform:uppercase;letter-spacing:0.06em;font-weight:600;color:var(--text-tertiary);margin-right:4px}
.sx-demobar__chip{padding:3px 9px;border-radius:6px;background:var(--white);border:1px solid var(--border-subtle);color:var(--text-strong);font-weight:500;cursor:pointer}
.sx-demobar__chip[aria-pressed="true"]{background:var(--navy-500);color:var(--white);border-color:var(--navy-500)}
.sx-demobar__chip--logout{margin-left:auto;color:var(--text-tertiary)}

/* ---------- SEARCH OVERLAY (groups) ---------- */
.sx-overlay{position:absolute;inset:0;background:rgba(5,6,43,0.45);display:flex;justify-content:center;padding:48px 16px;border-radius:inherit;overflow:hidden}
.sx-overlay__panel{width:min(620px,100%);height:max-content;background:var(--white);border-radius:16px;box-shadow:var(--shadow-xl);overflow:hidden;display:flex;flex-direction:column}
.sx-overlay__input-row{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-subtle)}
.sx-overlay__input{flex:1;border:0;background:transparent;font-size:16px;color:var(--text-primary);outline:0}
.sx-overlay__list{padding:8px;max-height:380px;overflow:auto}
.sx-overlay__group-head{padding:8px 12px 4px;font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-tertiary);font-weight:600}
.sx-overlay__row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer}
.sx-overlay__row:hover, .sx-overlay__row[data-active="true"]{background:var(--warm-75)}
.sx-overlay__row__title{font-size:14px;color:var(--text-primary);font-weight:500}
.sx-overlay__row__sub{font-size:12px;color:var(--text-tertiary)}

/* ---------- PANEL SHELL (admin / role panels) ---------- */
.sx-shell{display:grid;grid-template-columns:240px 1fr;height:560px;background:var(--bg-page);border-radius:inherit;overflow:hidden}
.sx-shell__side{background:var(--white);border-right:1px solid var(--border-subtle);padding:18px 12px;display:flex;flex-direction:column;gap:4px;overflow:auto}
.sx-shell__brand{padding:0 8px 16px;display:flex;align-items:center;gap:8px}
.sx-shell__brand .wordmark{font-size:18px}
.sx-shell__nav{display:flex;flex-direction:column;gap:2px;flex:1}
.sx-shell__nav-section{font-size:10px;text-transform:uppercase;letter-spacing:0.07em;color:var(--text-tertiary);font-weight:600;padding:14px 10px 6px}
.sx-shell__nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--text-strong);font-size:13px;font-weight:500;cursor:pointer;text-decoration:none}
.sx-shell__nav-item svg{width:16px;height:16px;flex:none;color:var(--text-secondary)}
.sx-shell__nav-item:hover{background:var(--warm-75)}
.sx-shell__nav-item[aria-current="page"]{background:var(--navy-0);color:var(--navy-700)}
.sx-shell__nav-item[aria-current="page"] svg{color:var(--navy-500)}
.sx-shell__nav-item__count{margin-left:auto;font-size:11px;background:var(--warm-75);padding:1px 7px;border-radius:5px;color:var(--text-secondary);font-weight:600}
.sx-shell__user{margin-top:auto;padding:10px;border:1px solid var(--border-subtle);border-radius:10px;display:flex;align-items:center;gap:10px}
.sx-shell__user__name{font-size:13px;font-weight:600;color:var(--text-primary);line-height:1.2}
.sx-shell__user__sub{font-size:11px;color:var(--text-tertiary)}
.sx-shell__main{display:flex;flex-direction:column;min-width:0;overflow:auto}
.sx-shell__topbar{height:54px;padding:0 18px;background:var(--white);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:12px;flex:none}
.sx-shell__crumb{font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.06em}
.sx-shell__title{font-size:16px;font-weight:600;color:var(--text-primary)}
.sx-shell__topbar__actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.sx-shell__icon-btn{width:32px;height:32px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--white);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);position:relative}
.sx-shell__icon-btn:hover{background:var(--warm-75)}
.sx-shell__icon-btn__pip{position:absolute;top:5px;right:5px;width:7px;height:7px;background:#B63D25;border-radius:3px;border:1.5px solid var(--white)}
.sx-shell__content{padding:18px;display:flex;flex-direction:column;gap:14px}

/* ---------- CHART (mini bar + sparkline) ---------- */
.sx-chart{display:flex;align-items:flex-end;gap:6px;height:80px}
.sx-chart__bar{flex:1;background:linear-gradient(180deg,var(--navy-500),var(--navy-200));border-radius:4px 4px 0 0;min-height:8px}
.sx-chart__bar--alt{background:linear-gradient(180deg,var(--violet),var(--lilac-0))}
.sx-spark{height:42px;width:100%;display:block}

/* ---------- KBD ---------- */
.sx-key{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-family:var(--font-mono);background:var(--white);border:1px solid var(--border-subtle);border-bottom-width:2px;border-radius:5px;color:var(--text-secondary)}

/* ---------- 404 BIG TYPE ---------- */
.sx-404{font-size:120px;font-weight:600;letter-spacing:-0.04em;line-height:1;color:var(--navy-500);background:linear-gradient(135deg,var(--navy-500),var(--violet) 60%,var(--teal));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}

/* Compact responsive grid for the doctor list page */
.sx-list-grid{display:grid;grid-template-columns:240px 1fr;gap:18px}
@media (max-width:760px){.sx-list-grid{grid-template-columns:1fr}}
.sx-filter-rail{background:var(--white);border:1px solid var(--border-subtle);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:14px;font-size:13px;height:max-content;position:sticky;top:14px}
.sx-filter-rail__head{font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-tertiary);font-weight:600;margin-bottom:6px}
.sx-filter-rail__group{display:flex;flex-direction:column;gap:6px}
.sx-filter-rail__group + .sx-filter-rail__group{padding-top:12px;border-top:1px solid var(--border-subtle)}

/* Doctor list card horizontal */
.sx-dlc{background:var(--white);border:1px solid var(--border-subtle);border-radius:14px;padding:14px;display:grid;grid-template-columns:80px 1fr auto;gap:14px;align-items:center;transition:transform var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}
.sx-dlc:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}
@media(max-width:560px){.sx-dlc{grid-template-columns:1fr;text-align:left}}
.sx-dlc__name{font-size:16px;font-weight:600;color:var(--text-primary)}
.sx-dlc__spec{font-size:13px;color:var(--text-secondary);margin-top:2px}
.sx-dlc__meta{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:12px;color:var(--text-secondary);margin-top:8px}
.sx-dlc__meta b{color:var(--text-strong);font-weight:600}
.sx-dlc__cta{display:flex;flex-direction:column;gap:6px;align-items:flex-end;min-width:140px}
.sx-dlc__next{font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.05em}

/* Subtle stripe placeholder image */
.sx-stripe{background-image:repeating-linear-gradient(135deg,var(--warm-75) 0 8px,var(--warm-100) 8px 16px);border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);font-family:var(--font-mono);font-size:11px;text-align:center;padding:8px}

/* === EXTENSIONS V3 (inline component blocks from SDS) === */
/* Pilltabs + Cardtabs (lines 3925-4021) */
      .sx-pilltabs {
        display: inline-flex;
        gap: 2px;
        padding: 5px;
        border-radius: var(--radius-full);
        border: 1px solid rgba(19, 25, 99, 0.08);
        background:
          linear-gradient(180deg, rgba(255,255,255,0.65), rgba(255,255,255,0.35)),
          var(--warm-75);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.6), 0 1px 2px rgba(5,6,43,0.04);
        position: relative;
        isolation: isolate;
      }
      .sx-pilltabs__btn {
        appearance: none;
        position: relative; z-index: 1;
        display: inline-flex; align-items: center; gap: 6px;
        padding: 8px 18px;
        border: 0;
        background: transparent;
        font: var(--weight-medium) var(--text-sm)/1 var(--font-sans);
        color: var(--text-secondary);
        border-radius: var(--radius-full);
        cursor: pointer;
        white-space: nowrap;
        transition: color var(--dur-fast) var(--ease-standard);
      }
      .sx-pilltabs__btn:hover { color: var(--text-primary); }
      .sx-pilltabs__btn[aria-selected="true"] { color: var(--navy-500); font-weight: var(--weight-semibold); }
      .sx-pilltabs__pill {
        position: absolute; top: 5px; bottom: 5px;
        left: 0; width: 0;
        border-radius: var(--radius-full);
        background:
          linear-gradient(135deg, rgba(19,25,99,0.10), rgba(163,135,210,0.14) 50%, rgba(102,175,166,0.12));
        border: 1px solid rgba(255,255,255,0.7);
        box-shadow:
          0 6px 20px -6px rgba(19,25,99,0.18),
          inset 0 1px 0 rgba(255,255,255,0.8);
        z-index: 0;
        pointer-events: none;
        transition:
          left 420ms cubic-bezier(0.34, 1.3, 0.64, 1),
          width 420ms cubic-bezier(0.34, 1.3, 0.64, 1),
          transform 280ms ease;
        will-change: left, width, transform;
      }
      .sx-pilltabs__pill::before {
        content: "";
        position: absolute; inset: -8px; border-radius: inherit;
        background:
          radial-gradient(50% 60% at 30% 40%, rgba(163,135,210,0.45), transparent 70%),
          radial-gradient(50% 60% at 70% 60%, rgba(102,175,166,0.40), transparent 70%);
        filter: blur(14px);
        opacity: 0.75;
        z-index: -1;
        pointer-events: none;
      }
      .sx-pilltabs.is-morphing .sx-pilltabs__pill { transform: scaleY(1.08); }
      .sx-pilltabs__btn svg { width: 14px; height: 14px; }
      @media (prefers-reduced-motion: reduce) {
        .sx-pilltabs__pill { transition: left 120ms linear, width 120ms linear; }
        .sx-pilltabs.is-morphing .sx-pilltabs__pill { transform: none; }
      }

      /* Card tabs (large, full-width page sections) */
      .sx-cardtabs {
        display: grid;
        grid-auto-flow: column;
        grid-auto-columns: 1fr;
        gap: 8px;
        padding: 4px;
        background: var(--warm-75);
        border: 1px solid var(--border-subtle);
        border-radius: var(--radius-lg);
      }
      .sx-cardtabs__btn {
        appearance: none;
        padding: 14px 18px;
        border: 0;
        background: transparent;
        border-radius: var(--radius-md);
        text-align: left;
        cursor: pointer;
        color: var(--text-secondary);
        transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);
      }
      .sx-cardtabs__btn:hover { background: rgba(255,255,255,0.6); color: var(--text-primary); }
      .sx-cardtabs__btn[aria-selected="true"] { background: var(--white); color: var(--text-primary); box-shadow: var(--shadow-xs); }
      .sx-cardtabs__label { display: block; font: var(--weight-semibold) var(--text-sm)/1.2 var(--font-sans); margin-bottom: 4px; }
      .sx-cardtabs__hint  { display: block; font: var(--weight-regular) 12px/1.4 var(--font-sans); color: var(--text-tertiary); }

      

/* Breadcrumb (lines 4097-4117) */
      .sx-bc {
        display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px;
        font: var(--weight-medium) var(--text-sm)/1 var(--font-sans);
        color: var(--text-secondary);
      }
      .sx-bc a, .sx-bc button, .sx-bc span {
        display: inline-flex; align-items: center; gap: 6px;
        color: inherit; text-decoration: none;
        padding: 6px 4px; border-radius: var(--radius-sm);
        background: transparent; border: 0; cursor: pointer;
        font: inherit;
        transition: color var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard);
      }
      .sx-bc a:hover, .sx-bc button:hover { color: var(--navy); background: var(--warm-75); }
      .sx-bc a:focus-visible, .sx-bc button:focus-visible { outline: 2px solid var(--navy); outline-offset: 2px; }
      .sx-bc__home { padding: 6px; border-radius: var(--radius-sm); color: var(--navy); }
      .sx-bc__sep { color: var(--border-default); flex-shrink: 0; }
      .sx-bc__current { color: var(--navy); font-weight: var(--weight-semibold); cursor: default; }
      .sx-bc__current:hover { background: transparent; color: var(--navy); }
      .sx-bc__overflow { border: 1px solid var(--border-subtle); background: var(--warm-75); padding: 4px 8px; font-size: 12px; }

/* Category card (lines 5143-5152) */
        .sx-cat-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:var(--space-4); }
        .sx-cat { border-radius: var(--radius-lg); overflow:hidden; border:1px solid var(--border-subtle); background:var(--white); display:grid; grid-template-rows:88px auto; }
        .sx-cat__art { position:relative; display:grid; place-items:center; color:#fff; }
        .sx-cat__art::after { content:""; position:absolute; inset:0; background: radial-gradient(circle at 25% 110%, rgba(255,255,255,0.35), transparent 55%); pointer-events:none; }
        .sx-cat__art svg { width:28px; height:28px; position:relative; z-index:1; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.25)); }
        .sx-cat__body { padding: 12px 14px; display:grid; gap:4px; }
        .sx-cat__name { font:600 14px/1.2 var(--font-sans); color:var(--text-primary); letter-spacing:-0.005em; display:flex; align-items:center; gap:8px; }
        .sx-cat__dot { width:8px; height:8px; border-radius:50%; flex:none; }
        .sx-cat__meta { font:500 11px/1 var(--font-mono); color:var(--text-tertiary); text-transform:uppercase; letter-spacing:0.06em; }
/* ============================================================
   SYMPTEX BLOG / CATEGORY PALETTE — canonical from SDS Pages tab
   (blog cards lines 5347-5404; category grid lines 5144-5174)
   ============================================================ */

/* === Blog card (the screenshot-matching design) === */
.sx-blog-card {
  position: relative;
  display: grid;
  grid-template-rows: 160px 1fr;
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  isolation: isolate;
  transition: transform var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);
}
.sx-blog-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--navy-100); text-decoration: none; }

/* BLOG_CARD_ART_RADIUS_V1 — art panel is an inset rounded tile, not edge-to-edge */
.sx-blog-card__art {
  /* BK_BLOG_CARD_POLISH_V1 -- tighter inset. */
  position: relative;
  overflow: hidden;
  margin: 8px 8px 0;
  border-radius: 14px;
}
.sx-blog-card__bg-icon {
  position: absolute;
  right: -24px; bottom: -28px;
  width: 170px; height: 170px;
  opacity: 0.18;
  pointer-events: none;
}
.sx-blog-card__cat {
  position: absolute;
  top: 12px; left: 12px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 9px;
  border-radius: 99px;
  background: rgba(255,255,255,0.2);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.28);
  font: 600 10px/1 var(--font-sans);
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sx-blog-card__dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex: none;
}

.sx-blog-card__body {
  /* BK_BLOG_CARD_POLISH_V1 -- 20→16 padding, gap 16→12. */
  padding: 16px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 12px;
  min-height: 0;
}
.sx-blog-card__title {
  font-family: var(--font-sans);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.2;
  margin: 0 0 6px;
  color: var(--text-primary);
}
.sx-blog-card__excerpt {
  margin: 0;
  font-size: 13px;
  color: var(--text-body);
  line-height: 1.5;
  /* BLOG_CARD_CLAMP_V1 — limit to 3 lines with ellipsis */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  overflow-wrap: anywhere;
}
.sx-blog-card__meta {
  /* BK_BLOG_CARD_POLISH_V1 -- gap 16→14, padding-top 12→10. */
  display: flex;
  gap: 14px;
  padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
  font: 500 12px/1 var(--font-sans);
  color: var(--text-tertiary);
  align-items: center;
}
.sx-blog-card__metric {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  font-variant-numeric: tabular-nums;
}
.sx-blog-card__time {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}

/* === Blog detail hero (matches SDS line 5190+) === */
.sx-blog-hero {
  position: relative;
  margin: 24px 0 32px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  aspect-ratio: 16 / 6;
  border: 1px solid var(--border-subtle);
}
.sx-blog-hero--cat {
  /* category gradient comes inline via style="background:..." */
}
.sx-blog-hero__orbs {
  position: absolute; inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 18% 80%, rgba(255,255,255,0.18), transparent 45%),
    radial-gradient(circle at 85% 20%, rgba(255,255,255,0.12), transparent 40%);
}
.sx-blog-hero__bg-icon {
  position: absolute;
  right: -60px; bottom: -80px;
  width: 360px; height: 360px;
  opacity: 0.16;
  pointer-events: none;
}
.sx-blog-hero__copy {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 32px;
  color: #fff;
}
.sx-blog-hero__badges { display: flex; gap: 8px; margin-bottom: 12px; }
.sx-blog-hero__badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px;
  border-radius: 99px;
  background: rgba(255,255,255,0.20);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.28);
  font: 600 11px/1 var(--font-sans);
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sx-blog-hero__title {
  font-family: var(--font-sans);
  font-size: clamp(28px, 4.5vw, 56px);
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.03em;
  color: #fff;
  max-width: 18ch;
  margin: 0;
  text-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.sx-blog-hero__lede {
  margin: 12px 0 0;
  color: rgba(255,255,255,0.92);
  font-size: clamp(14px, 1.5vw, 18px);
  max-width: 60ch;
  line-height: 1.45;
  text-shadow: 0 1px 4px rgba(0,0,0,0.1);
}

/* === Reading progress bar === */
.sx-reading-progress {
  position: fixed; top: 0; left: 0; right: 0;
  height: 2px;
  background: var(--border-subtle);
  z-index: var(--z-sticky);
  overflow: hidden;
}
.sx-reading-progress__bar {
  height: 100%;
  background: linear-gradient(90deg, var(--navy-500) 0%, var(--violet) 100%);
  width: 0;
  transition: width 80ms linear;
}

/* === Article body (sx-prose) === */
.sx-prose { color: var(--text-primary); font-size: 17px; line-height: 1.7; }
.sx-prose > p:first-of-type { font-size: 20px; line-height: 1.55; color: var(--text-primary); margin: 0 0 20px; font-weight: 500; letter-spacing: -0.005em; }
.sx-prose h2 { font-size: clamp(24px, 3vw, 32px); font-weight: 600; line-height: 1.15; letter-spacing: -0.02em; margin: 32px 0 12px; color: var(--text-primary); }
.sx-prose h3 { font-size: 22px; font-weight: 600; letter-spacing: -0.01em; margin: 24px 0 12px; color: var(--text-primary); }
.sx-prose p { margin: 0 0 16px; }
.sx-prose ul, .sx-prose ol { margin: 12px 0 20px 20px; padding-left: 0; }
.sx-prose li { margin-bottom: 8px; }
.sx-prose b, .sx-prose strong { color: var(--text-primary); font-weight: 600; }
.sx-prose a { color: var(--navy-500); text-decoration: underline; text-underline-offset: 3px; }
.sx-prose img { max-width: 100%; height: auto; border-radius: var(--radius-md); margin: 16px 0; }
.sx-prose blockquote { border-left: 3px solid var(--navy-500); padding: 12px 20px; margin: 20px 0; background: linear-gradient(90deg, var(--navy-0), transparent 70%); border-radius: 0 var(--radius-md) var(--radius-md) 0; font-style: italic; color: var(--text-strong); }
.sx-prose code { background: var(--warm-75); color: var(--text-strong); padding: 2px 6px; border-radius: var(--radius-xs); font-size: 0.88em; border: 1px solid var(--border-subtle); font-family: var(--font-mono); }
.sx-prose pre { background: var(--warm-75); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 14px 16px; overflow-x: auto; margin: 16px 0; }
.sx-prose pre code { background: transparent; border: 0; padding: 0; }

/* === Article callout / aside === */
.sx-callout {
  margin: 24px 0;
  padding: 20px 24px;
  border-left: 3px solid var(--navy-500);
  background: linear-gradient(90deg, var(--navy-0), transparent 70%);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
}
.sx-callout--warn { border-color: #C45B5B; background: linear-gradient(90deg, rgba(196,91,91,0.1), transparent 70%); }
.sx-callout--success { border-color: var(--teal); background: linear-gradient(90deg, rgba(102,175,166,0.12), transparent 70%); }
.sx-callout__kicker {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
  color: var(--navy-500);
  margin-bottom: 6px;
}
.sx-callout--warn .sx-callout__kicker { color: #C45B5B; }
.sx-callout--success .sx-callout__kicker { color: #1F5048; }
.sx-callout p { margin: 0; font-size: 16px; line-height: 1.55; color: var(--text-primary); }

/* === Article info card === */
.sx-info-card {
  padding: 18px 22px;
  margin: 20px 0;
  background: var(--warm-75);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
}
.sx-info-card__head { display: flex; gap: 10px; align-items: center; margin-bottom: 12px; }
.sx-info-card__icon { width: 28px; height: 28px; border-radius: 8px; background: var(--status-warning-bg); color: #8a5a00; display: grid; place-items: center; flex: none; }
.sx-info-card__title { margin: 0; font-size: 15px; font-weight: 600; color: var(--text-primary); }

/* === TOC (in-this-article sidebar) === */
.sx-toc { padding: 20px; }
.sx-toc__kicker { font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; color: var(--text-tertiary); margin-bottom: 12px; }
.sx-toc ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; font-size: 13px; }
.sx-toc li { padding: 6px 0 6px 12px; border-left: 2px solid transparent; color: var(--text-secondary); }
.sx-toc li.is-active { border-left-color: var(--navy-500); color: var(--text-primary); font-weight: 500; }

/* === Share panel === */
.sx-share { padding: 20px; }
.sx-share__kicker { font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; color: var(--text-tertiary); margin-bottom: 12px; }
.sx-share__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }

/* === Consult CTA panel (sticky aside) === */
.sx-consult-cta {
  padding: 20px;
  background: linear-gradient(160deg, var(--navy-0), var(--warm-75) 70%);
}
.sx-consult-cta__kicker { font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; color: var(--navy-500); margin-bottom: 8px; }
.sx-consult-cta h4 { font-family: var(--font-sans); font-size: 22px; font-weight: 600; letter-spacing: -0.01em; margin: 0 0 8px; line-height: 1.15; color: var(--text-primary); }
.sx-consult-cta p { margin: 0 0 16px; font-size: 13px; color: var(--text-body); line-height: 1.5; }

/* === Cat grid (category showcase, used on blog list & nav) === */
.sx-cat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--space-4); }
.sx-cat { border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--border-subtle); background: var(--bg-surface); display: grid; grid-template-rows: 88px auto; text-decoration: none; color: inherit; transition: transform var(--dur-fast) var(--ease-standard); }
.sx-cat:hover { transform: translateY(-2px); text-decoration: none; }
.sx-cat__art { position: relative; display: grid; place-items: center; color: #fff; }
.sx-cat__art::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 25% 110%, rgba(255,255,255,0.35), transparent 55%); pointer-events: none; }
.sx-cat__art svg { width: 28px; height: 28px; position: relative; z-index: 1; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.25)); }
.sx-cat__body { padding: 12px 14px; display: grid; gap: 4px; }
.sx-cat__name { font: 600 14px/1.2 var(--font-sans); color: var(--text-primary); letter-spacing: -0.005em; display: flex; align-items: center; gap: 8px; }
.sx-cat__dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.sx-cat__meta { font: 500 11px/1 var(--font-mono); color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; }

/* === Page hero (gradient hero block for listing pages) === */
.sx-page-hero {
  position: relative;
  border-radius: var(--radius-2xl);
  overflow: hidden;
  padding: clamp(32px, 5vw, 64px) clamp(24px, 4vw, 48px);
  margin-bottom: 32px;
  color: var(--text-primary);
  background: linear-gradient(135deg, var(--navy-0) 0%, var(--bg-surface) 50%, var(--mint) 100%);
  border: 1px solid var(--border-subtle);
}
.sx-page-hero::before {
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 18% 80%, rgba(163,135,210,0.25), transparent 45%),
    radial-gradient(circle at 85% 20%, rgba(19,25,99,0.10), transparent 40%);
  pointer-events: none;
}
.sx-page-hero__inner { position: relative; z-index: 1; }
.sx-page-hero h1 { font-size: clamp(32px, 5vw, 56px); font-weight: 600; letter-spacing: -0.03em; line-height: 1.05; margin-bottom: 12px; max-width: 22ch; }
.sx-page-hero p { font-size: clamp(15px, 1.5vw, 18px); color: var(--text-body); max-width: 56ch; line-height: 1.5; }

/* === Mobile Pages-tab tweaks === */
@media (max-width: 640px) {
  .sx-blog-card { grid-template-rows: 140px 1fr; }
  .sx-blog-card__bg-icon { width: 130px; height: 130px; right: -16px; bottom: -20px; }
  .sx-blog-hero { aspect-ratio: 4 / 3; }
  .sx-blog-hero__copy { padding: 20px; }
  .sx-prose > p:first-of-type { font-size: 17px; }
  .sx-prose h2 { font-size: 22px; }
}

/* === SX-SHELL PRODUCTION OVERRIDE ===
   The canonical .sx-shell from SDS line 1955 has height:560px because the SDS
   demoes it inside a fixed-size page-frame. For real apps we need full-viewport
   height so content actually shows. Apply class .sx-shell--app on the root. */
.sx-shell.sx-shell--app {
  height: auto;
  min-height: 100vh;
  border-radius: 0;
  overflow: visible;
}
.sx-shell.sx-shell--app .sx-shell__side {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: auto;
}
.sx-shell.sx-shell--app .sx-shell__main {
  overflow: visible;
  min-height: 100vh;
}
.sx-shell.sx-shell--app .sx-shell__content {
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
@media (max-width: 900px) {
  .sx-shell.sx-shell--app { grid-template-columns: 1fr; }
  .sx-shell.sx-shell--app .sx-shell__side {
    position: static;
    height: auto;
    flex-direction: row;
    flex-wrap: wrap;
    overflow: visible;
    padding: 12px;
  }
  .sx-shell.sx-shell--app .sx-shell__brand { width: 100%; padding-bottom: 8px; }
  .sx-shell.sx-shell--app .sx-shell__nav-section { width: 100%; padding: 8px 4px 4px; }
  .sx-shell.sx-shell--app .sx-shell__user { width: 100%; margin-top: 12px; }
}

/* ===================================================================
 * LEGACY ADMIN CLASS SHIM (ADMIN_LEGACY_SHIM_V1)
 * Maps legacy admin partial classes onto DS v2 styles so /admin
 * pages render correctly without touching templates.
 * Remove this block once partials are fully migrated to .sx-* classes.
 * =================================================================== */

/* ---- Table-card wrapper (.card / .card-table → .sx-tablecard) ---- */
.card,
.card-table {
  /* ADMIN_LEGACY_SHIM_V3: removed overflow:hidden so dropdowns inside
     admin tables (role editor etc.) aren't clipped at the card edge. */
  background: var(--white);
  border: 1px solid var(--border-subtle);
  border-radius: 14px;
  position: relative;
}
/* Restore corner clipping just for the table inside, so it still looks rounded. */
.card > table:first-child,
.card-table > table:first-child {
  border-collapse: separate;
  border-spacing: 0;
  border-radius: 14px;
  overflow: hidden;
}
.card-header {
  padding: 14px 16px;
  border-bottom: 1px solid var(--border-subtle);
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
}
.card-title {
  font-weight: 600;
  color: var(--text-primary);
  font-size: 15px;
  margin-right: auto;
}
.card-body { padding: 0; }
.card-action,
.card-actions {
  display: flex; gap: 8px; align-items: center;
}

/* ---- Tables (.data-table / .admin-table → .sx-table) ---- */
.data-table,
.admin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.data-table thead th,
.admin-table thead th {
  text-align: left;
  padding: 11px 14px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-tertiary);
  font-weight: 600;
  background: var(--warm-75);
  border-bottom: 1px solid var(--border-subtle);
}
.data-table tbody td,
.admin-table tbody td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-strong);
  vertical-align: middle;
}
.data-table tbody tr:last-child td,
.admin-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover,
.admin-table tbody tr:hover { background: var(--warm-75); }
.table-wrap { overflow-x: auto; }

/* ---- Filter / search bar above the table (.quick-bar / .table-controls) ---- */
.quick-bar,
.table-controls {
  padding: 10px 16px;
  display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
  border-bottom: 1px solid var(--border-subtle);
  background: var(--warm-75);
}
.quick-bar-item {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--text-secondary);
}
.quick-bar-label { color: var(--text-tertiary); font-weight: 500; }
.quick-bar-val   { color: var(--text-primary); font-weight: 600; }

.search-input {
  appearance: none;
  height: 36px;
  padding: 0 12px;
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  font: inherit;
  color: var(--text-primary);
  outline: none;
  min-width: 180px;
}
.search-input:focus { border-color: var(--violet); box-shadow: 0 0 0 3px rgba(139, 92, 246, .15); }

.filter-select {
  appearance: none;
  height: 36px;
  padding: 0 32px 0 12px;
  background: var(--bg-surface)
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%23505050' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>")
    no-repeat right 10px center;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  font: inherit;
  color: var(--text-primary);
  outline: none;
  cursor: pointer;
}
.filter-select:focus { border-color: var(--violet); }

/* ---- Footer (.table-footer → .sx-tablecard__foot) ---- */
.table-footer {
  padding: 10px 16px;
  display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid var(--border-subtle);
  font-size: 12px; color: var(--text-tertiary);
}

/* ---- Stat tile (.stat-card → .sx-stat) ---- */
.stats-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 16px;
}
@media (max-width: 900px) { .stats-row { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .stats-row { grid-template-columns: 1fr; } }

.stat-card {
  background: var(--white);
  border: 1px solid var(--border-subtle);
  border-radius: 14px;
  padding: 16px;
  display: flex; flex-direction: column; gap: 12px;
}
.stat-card-top { display: flex; align-items: center; gap: 10px; }
.stat-icon {
  width: 36px; height: 36px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  background: var(--navy-0); color: var(--navy-700);
  flex: none; font-size: 18px;
}
.stat-icon-mint,
.stat-icon-teal   { background: var(--mint); color: #1F5048; }
.stat-icon-indigo,
.stat-icon-purple { background: var(--status-accent-bg); color: var(--purple); }
.stat-icon-amber  { background: var(--status-warning-bg); color: #6B4A0E; }
.stat-icon-red    { background: var(--status-danger-bg);  color: #7D2513; }
.stat-label { font-size: 13px; color: var(--text-secondary); font-weight: 500; }
.stat-val   { font-size: 28px; font-weight: 600; color: var(--text-primary); letter-spacing: -0.02em; line-height: 1.1; font-feature-settings: "tnum"; }

/* ---- Buttons (.btn-primary / .btn-ghost / .action-btn-sm → .sx-btn) ---- */
.btn-primary,
.btn-ghost,
.action-btn-sm {
  appearance: none;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  border: 1px solid transparent;
  border-radius: var(--radius-md, 10px);
  font: inherit; font-weight: 600; line-height: 1;
  cursor: pointer;
  text-decoration: none;
  transition: background .15s, color .15s, border-color .15s, box-shadow .15s;
  white-space: nowrap;
}
.btn-primary {
  height: 40px; padding: 0 16px; font-size: 13px;
  background: var(--violet); color: var(--white);
}
.btn-primary:hover  { background: var(--purple); }
.btn-primary:active { background: var(--purple); }

.btn-ghost {
  height: 40px; padding: 0 14px; font-size: 13px;
  background: transparent; color: var(--text-primary);
  border-color: var(--border-default);
}
.btn-ghost:hover  { background: var(--warm-75); }
.btn-ghost:active { background: var(--warm-100); }

.action-btn-sm {
  height: 30px; padding: 0 10px; font-size: 12px;
  background: var(--bg-surface); color: var(--text-secondary);
  border-color: var(--border-default);
}
.action-btn-sm:hover  { background: var(--warm-75); color: var(--text-primary); }
.action-btn-sm.danger { color: #7D2513; border-color: rgba(125,37,19,.25); }
.action-btn-sm.danger:hover { background: rgba(220,38,38,.06); }
.action-btn-sm.amber  { color: #6B4A0E; border-color: rgba(107,74,14,.25); }
.action-btn-sm.purple { color: var(--purple); border-color: rgba(139,92,246,.25); }
.action-btn-sm.teal,
.action-btn-sm.green  { color: #1F5048; border-color: rgba(31,80,72,.25); }
.action-btn-sm.red    { color: #7D2513; border-color: rgba(125,37,19,.25); }

/* ---- Avatars (.td-avatar → .sx-avatar) ---- */
.td-avatar {
  width: 32px; height: 32px;
  border-radius: 10px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; color: var(--white);
  flex: none; overflow: hidden;
  background: linear-gradient(135deg, var(--navy-500), var(--purple));
}
.td-avatar-teal   { background: linear-gradient(135deg, var(--teal), var(--mint)); color: #1F5048; }
.td-avatar-purple { background: linear-gradient(135deg, var(--purple), var(--violet)); }
.td-avatar-amber  { background: linear-gradient(135deg, #F59E0B, #FBBF24); color: #4A2E04; }
.td-avatar-green  { background: linear-gradient(135deg, #10B981, #6EE7B7); color: #053E2A; }

.td-user { display: flex; align-items: center; gap: 10px; }
.td-name { font-weight: 500; color: var(--text-primary); }
.td-sub  { font-size: 11px; color: var(--text-tertiary); }

/* ---- Badges (.badge → .sx-badge) ---- */
.badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  background: var(--warm-75); color: var(--text-secondary);
}
.badge-active   { background: var(--status-success-bg); color: #2B5F57; }
.badge-pending  { background: var(--status-warning-bg); color: #6B4A0E; }
.badge-blocked  { background: var(--status-danger-bg);  color: #7D2513; }

/* ---- Empty state (.empty → .sx-empty) ---- */
.empty {
  padding: 40px 20px; text-align: center;
  color: var(--text-secondary);
  border: 1px dashed var(--border-default);
  border-radius: 14px;
  background: var(--bg-surface);
  font-size: 14px;
}

/* ---- Flash messages (.flash → .sx-banner) ---- */
.flash {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1px solid;
  font-size: 13px;
  margin-bottom: 12px;
}
.flash-info,
.flash.flash-info { background: var(--status-info-bg); border-color: rgba(154,181,224,.4); color: var(--navy-700); }
.flash-success,
.flash.success    { background: var(--status-success-bg); border-color: rgba(16,185,129,.4); color: #1F5048; }
.flash-error,
.flash.error      { background: var(--status-danger-bg); border-color: rgba(220,38,38,.4); color: #7D2513; }
.flash-warning,
.flash.warning    { background: var(--status-warning-bg); border-color: rgba(245,158,11,.4); color: #6B4A0E; }

/* ---- Form layout helpers used by admin "create new" forms ---- */
.form-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 14px; padding: 16px;
}
.form-row-full { grid-column: 1 / -1; }
@media (max-width: 720px) { .form-grid { grid-template-columns: 1fr; } }

/* ---- "Compatibility" alias so .sx-btn--primary used in _api_keys.html
   resolves to the DS v2 accent button. ---- */
.sx-btn--primary {
  --btn-bg: var(--violet);
  --btn-bg-hover: var(--purple);
  --btn-bg-active: var(--purple);
  --btn-fg: var(--white);
}

/* ===================================================================
 * ADMIN_LEGACY_SHIM_V2 — dialogs, unclassed form controls
 * Scoped to admin shell so we don't disturb public/clinic dialogs
 * which already have bespoke styling (e.g. #bk-dialog).
 * =================================================================== */

/* ---- <dialog> defaults inside admin shell ---- */
.sx-shell--app dialog,
.sx-shell--app .sx-dialog {
  padding: 0;
  border: 0;
  border-radius: 16px;
  max-width: min(560px, 92vw);
  max-height: 90vh;
  overflow: auto;
  background: var(--white);
  box-shadow: 0 24px 64px rgba(15, 23, 42, .25);
  color: var(--text-primary);
}
.sx-shell--app dialog::backdrop,
.sx-shell--app .sx-dialog::backdrop {
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(3px);
}

/* ---- Unclassed form controls inside admin forms ---- */
.sx-shell--app .form-grid input:not([type=hidden]):not([type=submit]):not([type=button]):not([type=checkbox]):not([type=radio]):not([class]),
.sx-shell--app .form-grid select:not([class]),
.sx-shell--app .form-grid textarea:not([class]),
.sx-shell--app .card form input:not([type=hidden]):not([type=submit]):not([type=button]):not([type=checkbox]):not([type=radio]):not([class]),
.sx-shell--app .card form select:not([class]),
.sx-shell--app .card form textarea:not([class]),
.sx-shell--app dialog input:not([type=hidden]):not([type=submit]):not([type=button]):not([type=checkbox]):not([type=radio]):not([class]),
.sx-shell--app dialog select:not([class]),
.sx-shell--app dialog textarea:not([class]) {
  appearance: none;
  width: 100%;
  height: 40px;
  padding: 0 12px;
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md, 10px);
  font: inherit;
  color: var(--text-primary);
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}
.sx-shell--app .form-grid textarea:not([class]),
.sx-shell--app .card form textarea:not([class]),
.sx-shell--app dialog textarea:not([class]) {
  height: auto;
  min-height: 96px;
  padding: 10px 12px;
  resize: vertical;
  line-height: 1.5;
}
.sx-shell--app .form-grid select:not([class]),
.sx-shell--app .card form select:not([class]),
.sx-shell--app dialog select:not([class]) {
  padding-right: 36px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%23505050' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  cursor: pointer;
}
.sx-shell--app .form-grid input:not([class]):focus,
.sx-shell--app .form-grid select:not([class]):focus,
.sx-shell--app .form-grid textarea:not([class]):focus,
.sx-shell--app .card form input:not([class]):focus,
.sx-shell--app .card form select:not([class]):focus,
.sx-shell--app .card form textarea:not([class]):focus,
.sx-shell--app dialog input:not([class]):focus,
.sx-shell--app dialog select:not([class]):focus,
.sx-shell--app dialog textarea:not([class]):focus {
  border-color: var(--violet);
  box-shadow: 0 0 0 3px rgba(139, 92, 246, .15);
}

/* Field labels next to controls (admin partials use plain <label> wrap) */
.sx-shell--app .form-grid label,
.sx-shell--app dialog label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 12px;
  color: var(--text-secondary);
  font-weight: 500;
}
.sx-shell--app .form-grid label > input,
.sx-shell--app .form-grid label > select,
.sx-shell--app .form-grid label > textarea,
.sx-shell--app dialog label > input,
.sx-shell--app dialog label > select,
.sx-shell--app dialog label > textarea {
  margin-top: 2px;
}

/* Modal-style header pattern often seen in admin dialogs */
.sx-shell--app dialog form,
.sx-shell--app dialog .dialog-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 22px 22px 18px;
  min-width: 320px;
}

/* ---- CMS edit page (specialties/new etc.) — main content uses form-grid heavily ---- */
.sx-shell--app .form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 14px;
  padding: 16px 0;
}
.sx-shell--app .form-grid > .form-row-full,
.sx-shell--app .form-grid > label.form-row-full {
  grid-column: 1 / -1;
}
@media (max-width: 720px) { .sx-shell--app .form-grid { grid-template-columns: 1fr; } }

/* ===================================================================
 * ADMIN_LEGACY_SHIM_V3 — global .input + badge tone variants
 * (Not scoped to .sx-shell--app because cms_edit.html etc. live in
 * _layout/admin.html outside the DS v2 shell.)
 * =================================================================== */

/* ---- .input — generic admin input/select/textarea ---- */
input.input,
select.input,
textarea.input {
  appearance: none;
  width: 100%;
  height: 40px;
  padding: 0 12px;
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md, 10px);
  font: inherit;
  color: var(--text-primary);
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}
textarea.input {
  height: auto;
  min-height: 80px;
  padding: 10px 12px;
  resize: vertical;
  line-height: 1.5;
}
select.input {
  padding-right: 36px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%23505050' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  cursor: pointer;
}
input.input:focus,
select.input:focus,
textarea.input:focus {
  border-color: var(--violet);
  box-shadow: 0 0 0 3px rgba(139, 92, 246, .15);
}
input.input::placeholder,
textarea.input::placeholder { color: var(--text-tertiary); }

/* ---- .badge tone variants used by admin partials ---- */
.badge-indigo { background: var(--status-info-bg); color: var(--navy-600); }
.badge-teal,
.badge-mint   { background: var(--mint); color: #1F5048; }
.badge-purple,
.badge-violet { background: var(--status-accent-bg); color: var(--purple); }
.badge-amber,
.badge-warm   { background: var(--status-warning-bg); color: #6B4A0E; }
.badge-red    { background: var(--status-danger-bg); color: #7D2513; }

/* ---- Action chips often inline in card headers ---- */
.asv-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 600;
  background: var(--warm-75); color: var(--text-secondary);
}
.asv-chip-ok  { background: var(--status-success-bg); color: #2B5F57; }
.asv-chip-off { background: var(--warm-100); color: var(--text-tertiary); }

/* === SX-BC PRODUCTION POLISH (matches user screenshot)
   Home = icon-only square button, chevron separators, navy current,
   subtle hover-pill on links. Overrides default .sx-bc inline-flex. */
.sx-bc { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; font: 500 14px/1 var(--font-sans); color: var(--text-secondary); padding: 0; }
.sx-bc__home { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0 !important; border-radius: 8px; color: var(--navy-500); background: transparent; transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard); }
.sx-bc__home:hover { background: var(--warm-75); color: var(--navy-700); text-decoration: none; }
.sx-bc__sep { display: inline-flex; align-items: center; color: var(--border-strong); margin: 0 2px; flex-shrink: 0; }
.sx-bc > a:not(.sx-bc__home) { display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 8px; color: var(--navy-700); font-weight: 600; text-decoration: none; transition: background var(--dur-fast) var(--ease-standard); }
.sx-bc > a:not(.sx-bc__home):hover { background: var(--warm-75); color: var(--navy-500); text-decoration: none; }
.sx-bc__current { display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 8px; color: var(--navy-700); font-weight: 600; cursor: default; }
.sx-bc__current:hover { background: transparent; color: var(--navy-700); }
@media (max-width: 640px) {
  .sx-bc { font-size: 13px; gap: 2px; }
  .sx-bc__sep { margin: 0; }
  .sx-bc__home { width: 28px; height: 28px; }
  .sx-bc > a:not(.sx-bc__home), .sx-bc__current { padding: 4px 8px; }
}

/* === SX-SEARCH DROPDOWN (sx-search.js companion CSS, was wiped earlier).
   Hidden until input has focus → fixes duplicate "Yozishni boshlang…"
   text rendering inline beneath every search form. */
.sx-sd-root { position: relative; }
.sx-sd-drop {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 6px;
  max-height: min(420px, 60vh);
  overflow-y: auto;
  z-index: var(--z-dropdown);
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition: opacity 120ms var(--ease-standard), transform 120ms var(--ease-standard);
}
.sx-sd-root:focus-within .sx-sd-drop,
.sx-sd-root .sx-sd-drop:hover { opacity: 1; transform: translateY(0); pointer-events: auto; }

.sx-sd-hint, .sx-sd-loading, .sx-sd-empty {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 14px;
  font-size: 13px; color: var(--text-tertiary);
}
.sx-sd-hint i, .sx-sd-loading i, .sx-sd-empty i { color: var(--text-tertiary); }

.sx-sd-group { padding: 4px 0; }
.sx-sd-group + .sx-sd-group { border-top: 1px solid var(--border-subtle); margin-top: 4px; padding-top: 8px; }
.sx-sd-group-h { display: flex; align-items: center; gap: 6px; padding: 6px 10px; font: 600 11px/1 var(--font-sans); text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); }
.sx-sd-group-h i { color: var(--text-tertiary); font-size: 12px; }

.sx-sd-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  text-decoration: none;
  color: var(--text-primary);
  font-size: 13px;
  transition: background var(--dur-fast) var(--ease-standard);
}
.sx-sd-item:hover { background: var(--warm-75); text-decoration: none; }
.sx-sd-item-icon { width: 32px; height: 32px; border-radius: 8px; background: var(--warm-75); display: grid; place-items: center; color: var(--navy-500); flex-shrink: 0; overflow: hidden; }
.sx-sd-item-icon img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px; }
.sx-sd-item-icon i { font-size: 16px; }
.sx-sd-item-body { flex: 1; min-width: 0; }
.sx-sd-item-title { font-weight: 600; color: var(--text-primary); line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sx-sd-item-sub { font-size: 11px; color: var(--text-tertiary); line-height: 1.3; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sx-sd-item-arrow { color: var(--text-tertiary); flex-shrink: 0; font-size: 14px; }

.sx-sd-foot {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px;
  border-top: 1px solid var(--border-subtle);
  margin-top: 4px;
  font-size: 11px;
  color: var(--text-tertiary);
}
.sx-sd-foot a { color: var(--navy-500); font-weight: 600; text-decoration: none; }
.sx-sd-foot a:hover { color: var(--navy-700); }

/* Inside the mobile search-sheet, drop should expand inline (full width, no overlap) */
.sx-h__search-sheet .sx-sd-drop { position: static; opacity: 1; transform: none; pointer-events: auto; box-shadow: none; border: 0; padding: 0; margin-top: 12px; max-height: none; }
.sx-h__search-sheet .sx-sd-hint { padding: 8px 4px; }

/* Header inline search dropdown shouldn't be wider than the form itself */
.sx-h__search.sx-sd-root .sx-sd-drop, .sx-sd-root > .sx-h__search ~ .sx-sd-drop { min-width: 320px; }

/* SX-SD inline-SVG icon support (sx-search.js V2 default groups) */
.sx-sd-item-icon svg { width: 18px; height: 18px; color: var(--navy-500); }
.sx-sd-hint svg, .sx-sd-loading svg, .sx-sd-empty svg { width: 16px; height: 16px; color: var(--text-tertiary); }
.sx-sd-item-arrow svg { width: 14px; height: 14px; color: var(--text-tertiary); }
.sx-sd-hint, .sx-sd-loading, .sx-sd-empty { gap: 10px; }

/* ===================================================================
 * COLOR_TOKEN_ALIASES_V1 — bridge --color-* names used by some
 * macros (clinic_card, etc.) to the canonical DS v2 tokens already
 * declared on :root.  No visual change for callers using the canonical
 * names; just makes the alias references resolve.
 * =================================================================== */
:root {
  --color-primary:        var(--navy-500);
  --color-text-primary:   var(--text-primary);
  --color-text-body:      var(--text-body);
  --color-text-secondary: var(--text-secondary);
  --color-border-subtle:  var(--border-subtle);
  --color-surface-muted:  var(--warm-50);

  --color-success:        #10B981;
  --color-success-on:     #1F5048;
  --color-warning-bg:     var(--status-warning-bg);
  --color-warning-on:     #6B4A0E;
  --color-danger-bg:      var(--status-danger-bg);
  --color-danger-on:      #7D2513;
}

/* Hide bookmark button on clinic featured cards (function preserved, UI hidden) */
.sx-clinic-featured__bookmark { display: none !important; }

/* === GLOBAL MOBILE FALLBACK ===
   Catches pages whose templates have no responsive overrides
   (404, login, confirmed) and pages with only a single breakpoint. */
@media (max-width: 640px) {
  /* Page-level: tighten the gutter so cards don't cling to the viewport edge */
  body { -webkit-text-size-adjust: 100%; }

  /* Universal grids fall to one column */
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr !important; }

  /* Tables: enable horizontal scroll instead of overflow */
  .sx-table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .sx-table thead, .sx-table tbody, .sx-table tr { display: table; width: 100%; table-layout: fixed; }

  /* Page hero: smaller heading + reduce inner padding */
  .sx-page-hero { padding: 28px 20px; border-radius: var(--radius-lg); margin-bottom: 20px; }
  .sx-page-hero h1 { font-size: clamp(24px, 7vw, 32px); }
  .sx-page-hero p { font-size: 14px; }

  /* List/clinic/doctor cards: tighter padding */
  .sx-clinic-list, .sx-clinic-card, .sx-dlc, .sx-doctor, .sx-blog-card { padding: 14px; }
  .sx-clinic-list__head { gap: 12px; flex-wrap: wrap; }
  .sx-clinic-list__name { font-size: 15px; }
  .sx-clinic-list__logo-tile { width: 56px; height: 56px; }
  .sx-clinic-list__logo-tile svg { width: 26px; height: 26px; }

  /* Section heading row: stack title + view-all link */
  .sx-section-head { flex-direction: column; align-items: flex-start; gap: 6px; }
  .sx-section-head h2 { font-size: 22px; }

  /* Detail-page hero (clinic poster, doctor page) */
  .sx-clinic-poster__gradient { padding: 24px; flex-direction: column; gap: 16px; }
  .sx-clinic-poster__logo { width: 64px; height: 64px; }
  .sx-clinic-poster__head h1 { font-size: 24px; }
  .sx-doctor-page__hero { flex-direction: column; align-items: center; text-align: center; gap: 12px; }
  .sx-doctor-page__avatar { width: 88px; height: 88px; font-size: 26px; }
  .sx-doctor-page__head h1 { font-size: 26px; }
  .sx-doctor-page__meta { justify-content: center; }

  /* Filter rail collapses next to results on listing pages */
  .sx-list-grid { grid-template-columns: 1fr !important; gap: 16px; }
  .sx-filter-rail { position: static; height: auto; padding: 12px 14px; border-radius: var(--radius-md); flex-direction: row; flex-wrap: wrap; }
  .sx-filter-rail__group { flex-direction: row; flex-wrap: wrap; gap: 6px; padding: 0; border: 0; align-items: center; }
  .sx-filter-rail__group + .sx-filter-rail__group { padding: 12px 0 0; border-top: 1px solid var(--border-subtle); margin-top: 4px; }
  .sx-filter-rail__head { width: 100%; }

  /* Auth pages — login/register panel padding */
  .sx-login__panel, .sx-auth-card { padding: 22px 18px; }
  .sx-login__h1 { font-size: 26px; }

  /* Booking confirmed: cleaner stack on tiny screens */
  .sx-confirmed { padding: 32px 16px; }
  .sx-confirmed__panel { padding: 16px; }
  .sx-confirmed__grid { grid-template-columns: 1fr; gap: 14px; }
  .sx-confirmed__actions { flex-direction: column; align-items: stretch; gap: 6px; }
  .sx-confirmed__actions .sx-btn { justify-content: center; }

  /* 404 — compact spacing */
  .sx-404 { padding: 60px 20px; }
  .sx-404__code { font-size: clamp(72px, 22vw, 120px); }

  /* Sticky asides (clinic detail, doctor detail) — stop sticking on mobile */
  .sx-clinic-grid__aside, .sx-doctor-page__aside, .sx-blog-aside, .sx-profile-side { position: static !important; }

  /* Make the page gutter slightly tighter so 100% width feels right */
  :root { --page-gutter: 14px; }
}

/* Mid-mobile (641-1023): keep filters narrow on listing pages but wrap when needed */
@media (min-width: 641px) and (max-width: 1023px) {
  .sx-list-grid { grid-template-columns: 220px 1fr; gap: 18px; }
  .sx-page-hero { padding: 36px 28px; }
}

/* Mobile horizontal-overflow guard — prevents pages from rendering "out of view" */
@media (max-width: 1023px) {
  html, body { overflow-x: hidden; max-width: 100vw; }
  .sx-profile-page, .sx-page, .sx-clinic-detail, .sx-doctor-page, .sx-blog-article { overflow-x: hidden; max-width: 100vw; }
}



/* ============================================================
   HOME PAGE — moved from inline <style> in templates/public/home.html
   (F1, 2026-05-01). Keep all home-only styles here.
   ============================================================ */
/* === HOME_INLINE_EXTRACTED_V1 block 1 === */
/* DOCTOR_GRID_V2 (2026-05-02) — explicit 3/2/1 responsive grid replaces auto-fit
   so cards size predictably across breakpoints. */
.dcf-grid { display: grid; gap: 16px; grid-template-columns: 1fr; }
.dcf-grid > .dcf { width: 100%; }
@media (min-width: 640px)  { .dcf-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .dcf-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } }
/* DOCTOR_CARD_A11Y_V2 — focus-visible ring on name link + tabular nums on rating */
.dcf__name { font-variant-numeric: tabular-nums; }
.dcf__star { font-variant-numeric: tabular-nums; }
.dcf__btn { touch-action: manipulation; }
.dcf__btn:focus-visible {
  outline: 2.5px solid var(--violet, #8B5CF6);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .dcf, .dcf__btn { transition: none !important; }
}

/* === HOME_INLINE_EXTRACTED_V1 block 2 === */
/* Cap big cards so 1-3 don't stretch to viewport edges. */
  /* BK_CLINIC_GRID_FIX_V3 -- explicit 3-col layout so the home row
     always fits three featured clinic cards on desktop. Falls to 2 cols
     at mid-laptop widths and 1 col on phones. Replaces the prior
     auto-fill minmax(340px, 440px) which collapsed to 2 cards as soon
     as the container dipped below ~1020px (3 * 340 + gaps). */
  .sx-clinics .sx-clinic-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
  }
  @media (max-width: 960px) {
    .sx-clinics .sx-clinic-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 640px) {
    .sx-clinics .sx-clinic-grid { grid-template-columns: 1fr; }
  }

/* === HOME_INLINE_EXTRACTED_V1 block 3 === */
.sx-home-blog-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  @media (max-width: 1023px) { .sx-home-blog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  @media (max-width: 640px)  { .sx-home-blog-grid { grid-template-columns: 1fr; } }

/* === HOME_INLINE_EXTRACTED_V1 block 4 === */
/* HOME_REDESIGN_V1 — pastel service tiles */
  .sx-svc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
  .sx-svc-card {
    --bg: linear-gradient(135deg, #EEF2FF, #F5F3FF);
    --fg: var(--navy-700, #131963);
    position: relative; isolation: isolate; overflow: hidden;
    background: var(--bg);
    border-radius: 18px;
    padding: 22px 22px 24px;
    color: var(--text-primary);
    text-decoration: none;
    display: flex; flex-direction: column; gap: 10px;
    min-height: 170px;
    transition: transform .18s ease, box-shadow .18s ease;
    border: 1px solid rgba(255,255,255,0.6);
  }
  .sx-svc-card::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(70% 80% at 100% 0%, rgba(255,255,255,0.55), transparent 60%); pointer-events: none; }
  .sx-svc-card > * { position: relative; z-index: 1; }
  .sx-svc-card:hover { transform: translateY(-2px); box-shadow: 0 18px 40px -18px rgba(15,23,42,0.22); text-decoration: none; }
  .sx-svc-card__icon { width: 44px; height: 44px; border-radius: 14px; background: rgba(255,255,255,0.85); display: grid; place-items: center; color: var(--fg); box-shadow: 0 4px 14px -4px rgba(15,23,42,0.16), inset 0 1px 0 rgba(255,255,255,0.9); margin-bottom: 6px; }
  .sx-svc-card__icon i { font-size: 22px; }
  .sx-svc-card__title { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; color: var(--text-primary); }
  .sx-svc-card__desc { font-size: 13px; color: var(--text-body); line-height: 1.45; opacity: 0.85; margin-top: auto; }

  /* Journal cards */
  .sx-jcard {
    position: relative; isolation: isolate;
    background: var(--white);
    border: 1px solid var(--border-subtle);
    border-radius: 18px;
    padding: 18px 20px 22px;
    color: var(--text-primary);
    text-decoration: none;
    display: flex; flex-direction: column; gap: 10px;
    transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease;
    overflow: hidden;
  }
  .sx-jcard:hover { border-color: var(--violet, #8B5CF6); transform: translateY(-2px); box-shadow: 0 18px 40px -18px rgba(15,23,42,0.16); text-decoration: none; }
  .sx-jcard__art { height: 88px; border-radius: 14px; display: grid; place-items: center; margin: -2px -4px 6px; }
  .sx-jcard__art i { font-size: 30px; }
  .sx-jcard__kicker { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-tertiary); }
  .sx-jcard__title { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; line-height: 1.3; margin: 0; color: var(--text-primary); }
  .sx-jcard__excerpt { font-size: 13.5px; color: var(--text-body); line-height: 1.5; margin: 0; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .sx-jcard__cta { margin-top: auto; padding-top: 8px; font-size: 13px; font-weight: 600; color: var(--navy-500, #131963); display: inline-flex; align-items: center; gap: 4px; }
  .sx-jcard__cta i { transition: transform .15s ease; }
  .sx-jcard:hover .sx-jcard__cta i { transform: translateX(3px); }

  .sx-page { padding: clamp(40px, 6vw, 80px) var(--page-gutter); }
  .sx-page--tight { padding-top: clamp(24px, 3vw, 40px); padding-bottom: clamp(24px, 3vw, 40px); }
  .sx-container { max-width: var(--container-2xl); margin: 0 auto; }
  .sx-section-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: var(--space-6); flex-wrap: wrap; gap: 12px; }
  .sx-section-head h2 { font-size: clamp(24px, 3vw, 32px); font-weight: 600; letter-spacing: var(--tracking-tight); }
  .sx-section-link { color: var(--navy-500); font-size: var(--text-sm); font-weight: var(--weight-medium); }

  .hero-search { position: relative; display: flex; align-items: center; gap: 8px; padding: 6px 6px 6px 18px; background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: var(--radius-full); max-width: 560px; box-shadow: var(--shadow-sm); }
  .hero-search input { flex: 1; border: 0; padding: 12px 0; font: inherit; font-size: 15px; background: transparent; outline: none; min-width: 0; color: var(--text-primary); }
  .hero-search input::placeholder { color: var(--text-tertiary); }
  .hero-search .sx-btn { height: 40px; }
  .hero-chips { margin-top: var(--space-5); display: flex; gap: 8px; flex-wrap: wrap; position: relative; z-index: 1; }
  .hero-chips .sx-chip { background: var(--bg-surface); }

  .sx-stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-6); padding: var(--space-8) 0; border-top: 1px solid var(--border-subtle); border-bottom: 1px solid var(--border-subtle); }
  .sx-stat-block__num { font-size: clamp(32px, 4vw, 44px); font-weight: 600; letter-spacing: var(--tracking-display); line-height: 1; color: var(--text-primary); font-variant-numeric: tabular-nums; }
  .sx-stat-block__plus { color: var(--navy-500); }
  .sx-stat-block__label { font-size: var(--text-sm); color: var(--text-secondary); margin-top: 6px; }

  .sx-doctor { background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); overflow: hidden; transition: border-color var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard); }
  .sx-doctor:hover { border-color: var(--navy-100); transform: translateY(-2px); }
  .sx-doctor__photo { aspect-ratio: 4 / 3; background: var(--warm-75); position: relative; overflow: hidden; }
  .sx-doctor__photo img { width: 100%; height: 100%; object-fit: cover; }
  .sx-doctor__photo-fallback { position: absolute; inset: 0; display: grid; place-items: center; color: var(--text-tertiary); }
  .sx-doctor__body { padding: var(--space-4); display: flex; flex-direction: column; gap: 4px; }
  .sx-doctor__name { font-size: var(--text-md); font-weight: 600; color: var(--text-primary); letter-spacing: var(--tracking-snug); }
  .sx-doctor__spec { font-size: var(--text-sm); color: var(--text-body); }
  .sx-doctor__meta { font-size: var(--text-xs); color: var(--text-tertiary); margin-top: 2px; }
  .sx-doctor__rating { color: var(--text-primary); font-weight: 600; }
  .sx-doctor__actions { display: flex; gap: 6px; margin-top: var(--space-3); }
  .sx-doctor__actions .sx-btn { flex: 1; }

  .sx-clinic { display: flex; flex-direction: column; gap: 12px; padding: var(--space-5); background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); transition: border-color var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard); text-decoration: none; }
  .sx-clinic:hover { border-color: var(--navy-100); transform: translateY(-2px); text-decoration: none; }
  .sx-clinic__head { display: flex; align-items: center; justify-content: space-between; }
  .sx-clinic__logo { width: 48px; height: 48px; border-radius: var(--radius-md); background: var(--warm-75); display: grid; place-items: center; overflow: hidden; color: var(--navy-500); font-weight: 700; }
  .sx-clinic__logo img { width: 100%; height: 100%; object-fit: contain; }
  .sx-clinic__name { font-size: var(--text-md); font-weight: 600; color: var(--text-primary); letter-spacing: var(--tracking-snug); }
  .sx-clinic__meta { font-size: var(--text-sm); color: var(--text-tertiary); margin-top: 4px; }

  .sx-marquee { overflow: hidden; padding: var(--space-6) 0; border-top: 1px solid var(--border-subtle); border-bottom: 1px solid var(--border-subtle); }
  .sx-marquee__track { display: flex; gap: var(--space-12); animation: sx-marquee 36s linear infinite; }
  .sx-marquee__item { flex-shrink: 0; height: 40px; display: grid; place-items: center; color: var(--text-tertiary); font-weight: 500; }
  .sx-marquee__item img { max-height: 32px; max-width: 120px; object-fit: contain; opacity: 0.7; }
  @keyframes sx-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

  .sx-mission { background: linear-gradient(135deg, var(--navy-0), var(--bg-surface)); border: 1px solid var(--border-subtle); border-radius: var(--radius-2xl); padding: clamp(32px, 5vw, 64px); text-align: center; }
  .sx-mission__copy h2 { font-size: clamp(28px, 4vw, 44px); font-weight: 600; letter-spacing: var(--tracking-display); margin-bottom: var(--space-4); color: var(--text-primary); }
  .sx-mission__copy p { font-size: var(--text-lg); color: var(--text-body); max-width: 56ch; margin: 0 auto var(--space-6); }
  .sx-mission__actions { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }

  /* === HERO MOBILE / DESKTOP TOGGLE
     Use display: revert below 1024px so the canonical .hero-mobile
     keeps its grid + 20px gap layout. Forcing flex here was nuking
     the gap between orbit/title/lede/search/chips. */
  .sx-hero-mobile { display: none; }
  @media (max-width: 1023px) {
    .sx-hero-mobile { display: grid; }
    .sx-hero-desktop { display: none; }
  }

  /* === RESPONSIVE === */
  @media (max-width: 1023px) {
    .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sx-stats-row { grid-template-columns: repeat(2, 1fr); gap: var(--space-5); }
  }
  @media (max-width: 640px) {
    .grid-4, .grid-3, .sx-doctor-grid, .sx-clinic-grid { grid-template-columns: 1fr; }
    .sx-stats-row { padding: var(--space-5) 0; }
  }

/* ============================================================
   INSTANT_NAV_V1 (2026-05-01) — top progress bar for sx-nav.js
   v2 (2026-05-01): smoother progress curve + swap fade transitions
                    on [data-sx-main]. The skeleton itself reuses .sx-skel.
   ============================================================ */
.sx-nav-progress{position:fixed;top:0;left:0;right:0;height:2px;pointer-events:none;z-index:9999;opacity:0;transition:opacity .25s cubic-bezier(.4,0,.2,1)}
.sx-nav-progress.is-active{opacity:1}
.sx-nav-progress.is-done{opacity:0;transition:opacity .45s cubic-bezier(.4,0,.2,1) .08s}
.sx-nav-progress.is-done .sx-nav-progress__fill{width:100% !important;animation:none;transition:width .25s cubic-bezier(.4,0,.2,1)}
.sx-nav-progress__fill{height:100%;width:0;border-radius:0 2px 2px 0;background:linear-gradient(90deg,var(--navy-500,#131963) 0%,var(--violet,#A387D2) 60%,var(--lilac,#C9B8F0) 100%);box-shadow:0 0 10px rgba(19,25,99,.55),0 0 4px rgba(163,135,210,.4);animation:sx-nav-progress 5s cubic-bezier(.4,0,.2,1) forwards}
/* PERF_LOADER_V2 (2026-05-02): user-tuned curve.
   0.5s -> 50%, ~1.3s -> 80%, then crawls to 92% by 5s.
   On nav completion JS adds .is-done which jumps width to 100%. */
@keyframes sx-nav-progress{
  0%   { width: 0; }
  10%  { width: 50%; }
  26%  { width: 80%; }
  60%  { width: 88%; }
  100% { width: 92%; }
}

/* ---- Smooth main swap (loading -> content) ----
   Driven by sx-nav.js: it sets data-sx-state="entering" right after innerHTML
   replacement, then clears it on the next frame so the rule animates in.
   "loading" gently dims the outgoing skeleton instead of the snap we had. */
[data-sx-main]{transition:opacity .22s cubic-bezier(.4,0,.2,1)}
[data-sx-main][data-sx-state="loading"]{opacity:.86}
[data-sx-main][data-sx-state="entering"]{opacity:0;transform:translateY(4px)}
[data-sx-main][data-sx-state="entering"].is-ready{opacity:1;transform:translateY(0);transition:opacity .32s cubic-bezier(.16,1,.3,1),transform .42s cubic-bezier(.16,1,.3,1)}

/* Respect users with motion-reduction preferences. */
@media (prefers-reduced-motion: reduce) {
  [data-sx-main],
  [data-sx-main][data-sx-state="loading"],
  [data-sx-main][data-sx-state="entering"],
  [data-sx-main][data-sx-state="entering"].is-ready {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
  .sx-nav-progress, .sx-nav-progress__fill { animation: none !important; transition: none !important; }
  .sx-skel { animation: none !important; }
}

/* INSTANT_NAV_V1 — themed skeleton card colors (2026-05-01 v2).
   sx-nav.js builds skeletons with `background: var(--sx-skel-card-bg, #fff)`
   and `border-color: var(--sx-skel-card-border, #E0E0E0)`. The CSS variables
   inherit from the layout root, so every panel themes its own skeleton:
     - public / doctor / registrator / admin / patient -> light defaults
     - clinic (dark) -> dark card tones
   Inline `var()` resolves through the cascade, so this overrides the inline
   declarations cleanly without selector gymnastics. */
:root,
[data-sx-layout="public"],
[data-sx-layout="panel-doctor"],
[data-sx-layout="panel-registrator"],
[data-sx-layout="panel-admin"],
[data-sx-layout="panel-patient"] {
  --sx-skel-card-bg: var(--white, #fff);
  --sx-skel-card-border: var(--warm-150, #E0E0E0);
}
[data-sx-layout="panel-clinic"] {
  /* Sit on the same surface as real cards in the dark clinic shell. */
  --sx-skel-card-bg: var(--card, #121735);
  --sx-skel-card-border: var(--border, rgba(255, 255, 255, 0.07));
}
/* Shimmer block tone — dark mode. */
[data-sx-layout="panel-clinic"] .sx-skel {
  background: linear-gradient(90deg,
    rgba(255, 255, 255, 0.05) 0%,
    rgba(255, 255, 255, 0.13) 50%,
    rgba(255, 255, 255, 0.05) 100%);
  background-size: 200% 100%;
}

/* === A11Y_E3_E4 (2026-05-01): visually-hidden + skip-to-content === */
.sx-sr-only{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  padding:0 !important;
  margin:-1px !important;
  overflow:hidden !important;
  clip:rect(0,0,0,0) !important;
  white-space:nowrap !important;
  border:0 !important;
}
.sx-skip{
  position:absolute;
  left:8px;
  top:-100px;
  z-index:10000;
  background:var(--navy-900,#0b1330);
  color:#fff;
  padding:10px 14px;
  border-radius:10px;
  font-weight:600;
  text-decoration:none;
  transition:top .15s ease;
}
.sx-skip:focus,
.sx-skip:focus-visible{
  top:8px;
  outline:3px solid var(--warn-300,#ffd166);
  outline-offset:2px;
}


/* === HOVER_CONTRAST_FIX (2026-05-01) =========================================
   The clinic panel ships dark while symptex.css ships light defaults. The
   global .data-table / .sx-table hover paints a cream background that, on
   the dark clinic shell, leaves white text on near-white = unreadable.
   Scope every row/card hover under panel-clinic to dark-friendly tones.
   ============================================================================ */
[data-sx-layout="panel-clinic"] .data-table tbody tr,
[data-sx-layout="panel-clinic"] .sx-table tbody tr,
[data-sx-layout="panel-clinic"] .admin-table tbody tr {
  transition: background-color .18s cubic-bezier(.4,0,.2,1);
}
[data-sx-layout="panel-clinic"] .data-table tbody tr:hover,
[data-sx-layout="panel-clinic"] .sx-table tbody tr:hover,
[data-sx-layout="panel-clinic"] .admin-table tbody tr:hover {
  background: rgba(124, 111, 224, 0.08) !important;
}
[data-sx-layout="panel-clinic"] .data-table tbody tr:hover td,
[data-sx-layout="panel-clinic"] .sx-table tbody tr:hover td,
[data-sx-layout="panel-clinic"] .admin-table tbody tr:hover td {
  background: transparent !important;
  color: rgba(255, 255, 255, 0.92) !important;
}
[data-sx-layout="panel-clinic"] .data-table tbody tr:hover .t-val,
[data-sx-layout="panel-clinic"] .sx-table tbody tr:hover .t-val,
[data-sx-layout="panel-clinic"] .admin-table tbody tr:hover .t-val {
  color: #fff !important;
}

/* Cards (cp-cell, cp-card): subtle lift on hover so they feel interactive
   without flashing a bright background. */
[data-sx-layout="panel-clinic"] .cp-cell {
  transition: border-color .18s cubic-bezier(.4,0,.2,1),
              box-shadow .22s cubic-bezier(.4,0,.2,1),
              transform .22s cubic-bezier(.16,1,.3,1);
}
[data-sx-layout="panel-clinic"] .cp-cell:hover {
  border-color: rgba(124, 111, 224, 0.45);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.06) inset,
    0 16px 36px -18px rgba(124, 111, 224, 0.45),
    0 12px 28px -16px rgba(0, 0, 0, 0.7);
  transform: translateY(-1px);
}

/* Inline links inside table cells -- keep them readable on dark. */
[data-sx-layout="panel-clinic"] .data-table a,
[data-sx-layout="panel-clinic"] .sx-table a {
  color: rgba(255, 255, 255, 0.88);
  text-decoration: none;
  transition: color .15s ease;
}
[data-sx-layout="panel-clinic"] .data-table a:hover,
[data-sx-layout="panel-clinic"] .sx-table a:hover {
  color: var(--violet, #A387D2);
  text-decoration: underline;
}

/* Inline <select> in rows (doctor dept assignment) -- browser defaults render
   light bg + dark text on the dark surface. Force a dark variant. */
[data-sx-layout="panel-clinic"] .cp-inline-select select,
[data-sx-layout="panel-clinic"] .data-table select {
  background: var(--bg3, #0f1430);
  color: rgba(255, 255, 255, 0.92);
  border: 1px solid var(--border, rgba(255, 255, 255, 0.10));
  border-radius: 8px;
  padding: 6px 28px 6px 10px;
  font-size: 12px;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease;
  appearance: none;
  -webkit-appearance: none;
}
[data-sx-layout="panel-clinic"] .cp-inline-select select:hover,
[data-sx-layout="panel-clinic"] .data-table select:hover {
  border-color: var(--violet, #A387D2);
  background-color: rgba(124, 111, 224, 0.08);
}
[data-sx-layout="panel-clinic"] .cp-inline-select select:focus,
[data-sx-layout="panel-clinic"] .data-table select:focus {
  border-color: var(--violet, #A387D2);
  outline: 2px solid rgba(124, 111, 224, 0.35);
  outline-offset: 1px;
}
[data-sx-layout="panel-clinic"] .cp-inline-select select option,
[data-sx-layout="panel-clinic"] .data-table select option {
  background: #0f1430;
  color: #fff;
}

/* Action buttons inside .cp-cell-actions and table rows: keep them readable. */
[data-sx-layout="panel-clinic"] .cp-cell-actions .btn-ghost,
[data-sx-layout="panel-clinic"] .data-table .btn-ghost {
  color: rgba(255, 255, 255, 0.85);
  border-color: rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.02);
  transition: color .15s ease, border-color .15s ease, background .15s ease;
}
[data-sx-layout="panel-clinic"] .cp-cell-actions .btn-ghost:hover,
[data-sx-layout="panel-clinic"] .data-table .btn-ghost:hover {
  color: #fff;
  border-color: var(--violet, #A387D2);
  background: rgba(124, 111, 224, 0.10);
}
/* =====================================================================
   BK_DIALOG_V5 — booking dialog (3-tab Step 1, drill-down service picker)
   Replaces all bk-* styles from V4. Uses Symptex tokens (--navy-*, --warm-*, pastels).
   ===================================================================== */

/* BK_DIALOG_CENTER_V1 -- center the booking dialog as a real modal on
   desktop (max-w 1100px, max-h 90vh, rounded) and full-screen on mobile.
   Browser default centers <dialog> via showModal() once we stop forcing
   inset:0 / width:100vw. */
#bk-dialog.bk-dialog{
  margin:auto;          /* center within the dialog's positioning container */
  padding:0;border:0;background:transparent;
  width:min(1240px,calc(100vw - 32px));
  max-width:calc(100vw - 32px);
  max-height:min(900px, calc(100vh - 32px));
  height:auto;
  color:var(--navy-900,#010101);
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 24px 80px rgba(15,18,50,.32);
}
#bk-dialog.bk-dialog::backdrop{background:rgba(15,18,50,.45);backdrop-filter:blur(2px)}
#bk-dialog.bk-dialog .bk-wrap{
  display:flex;flex-direction:column;
  width:100%;
  max-height:inherit;
  background:var(--warm-50,#FAFAFA);
  overflow:hidden;
  border-radius:inherit;
}
@media (max-width: 720px) {
  #bk-dialog.bk-dialog{
    width:100vw; max-width:100vw;
    height:100vh; max-height:100vh;
    border-radius:0;
    box-shadow:none;
  }
  #bk-dialog.bk-dialog .bk-wrap{ border-radius:0; }
}

/* -------- Head ---------------------------------------------------------- */
.bk-dialog .bk-head{
  position:sticky;top:0;z-index:10;
  display:flex;align-items:center;gap:14px;
  padding:12px 16px;
  background:rgba(255,255,255,.94);
  backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--warm-100,#ECECEC);
}
.bk-dialog .bk-steps{
  flex:1;display:flex;align-items:center;gap:8px;margin:0;padding:0;list-style:none;overflow-x:auto;
  scrollbar-width:none;
}
.bk-dialog .bk-steps::-webkit-scrollbar{display:none}
.bk-dialog .bk-step{
  display:inline-flex;align-items:center;gap:8px;
  color:var(--warm-400,#8A8A95);font-size:13px;font-weight:600;white-space:nowrap;
}
.bk-dialog .bk-step__num{
  width:24px;height:24px;border-radius:50%;
  background:var(--warm-100,#ECECEC);color:var(--warm-500,#505050);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;border:1px solid var(--warm-100,#ECECEC);
  transition:background .25s,color .25s,border-color .25s;
}
.bk-dialog .bk-step.is-active .bk-step__num{
  background:var(--navy-500,#131963);color:#fff;border-color:var(--navy-500,#131963);
  box-shadow:0 0 0 4px rgba(19,25,99,.10);
}
.bk-dialog .bk-step.is-done .bk-step__num{
  background:var(--teal,#66AFA6);color:#fff;border-color:var(--teal,#66AFA6);
}
.bk-dialog .bk-step.is-done .bk-step__num span{display:none}
.bk-dialog .bk-step.is-done .bk-step__num::before{
  content:"";width:10px;height:6px;border-left:2px solid #fff;border-bottom:2px solid #fff;
  transform:rotate(-45deg) translate(1px,-1px);
}
.bk-dialog .bk-step.is-active{color:var(--ink,#010101)}
.bk-dialog .bk-step.is-done{color:var(--ink-2,#1F1F25)}
.bk-dialog .bk-steps__line{flex:0 0 18px;height:2px;background:var(--warm-100,#ECECEC);border-radius:2px;list-style:none}
.bk-dialog .bk-steps__line.is-done{background:var(--teal,#66AFA6)}
@media (max-width:520px){
  .bk-dialog .bk-step .bk-step__label{display:none}
  .bk-dialog .bk-step.is-active .bk-step__label{display:inline}
}
.bk-dialog .bk-close{
  width:36px;height:36px;border-radius:50%;background:var(--warm-100,#ECECEC);color:var(--warm-500,#505050);
  display:inline-flex;align-items:center;justify-content:center;border:0;cursor:pointer;
  font-size:18px;flex-shrink:0;
}
.bk-dialog .bk-close:hover{background:var(--warm-200,#E0E0E0);color:var(--ink,#010101)}

/* -------- Body / aside grid -------------------------------------------- */
.bk-dialog .bk-body{
  flex:1;overflow-y:auto;
  padding:16px 14px 120px;
}
.bk-dialog .bk-body{display:block}
.bk-dialog .bk-main{max-width:980px;margin:0 auto}
.bk-dialog .bk-aside{display:none}
@media (min-width:1024px){
  .bk-dialog .bk-body{
    /* BK_BOOKING_GROUPS_GRID_V2 -- trim aside further (260px) and tighten
       gutter, giving the main column ~80px more space for tile grid. */
    display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px;
    padding:20px 24px 80px;align-items:start;
  }
  .bk-dialog .bk-main{max-width:none}
  .bk-dialog .bk-aside{display:block;position:sticky;top:80px}
}

/* Page heading inside dialog */
.bk-dialog .bk-pageh{margin:6px 0 14px}
.bk-dialog .bk-pageh__t{
  margin:0;font-size:clamp(20px,3vw,26px);font-weight:600;
  letter-spacing:-.02em;color:var(--ink,#010101);
}
.bk-dialog .bk-pageh__s{margin:6px 0 0;font-size:14px;color:var(--warm-500,#505050)}

/* Picked pill row */
.bk-dialog .bk-picked{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.bk-dialog .bk-picked:empty{display:none}
.bk-dialog .bk-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 6px 6px 12px;
  background:var(--navy-500,#131963);color:#fff;
  border-radius:999px;font-size:12.5px;font-weight:600;
  box-shadow:0 4px 12px rgba(19,25,99,.20);
}
.bk-dialog .bk-pill i{font-size:14px}
.bk-dialog .bk-pill__rm{
  width:18px;height:18px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.18);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;
}
.bk-dialog .bk-pill__rm:hover{background:rgba(255,255,255,.34)}

/* -------- Booking card (Step 1/2/3 wrapper) ---------------------------- */
.bk-dialog .bk-bcard{
  background:#fff;border:1px solid var(--warm-100,#ECECEC);
  border-radius:20px;box-shadow:0 1px 2px rgba(15,18,50,.04),0 2px 8px rgba(15,18,50,.04);
  overflow:hidden;
}

/* Tabs */
.bk-dialog .bk-tabs{
  display:grid;grid-template-columns:repeat(3,1fr);
  border-bottom:1px solid var(--warm-100,#ECECEC);
  background:linear-gradient(180deg,#FCFCFD 0%,#FFF 100%);
}
.bk-dialog .bk-tab{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:18px 8px 16px;border:0;background:transparent;cursor:pointer;
  color:var(--warm-500,#505050);font-size:13px;font-weight:600;transition:color .2s;
}
.bk-dialog .bk-tab__icon{
  width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;
  font-size:24px;color:var(--warm-500,#505050);
  transition:color .2s,transform .25s cubic-bezier(.34,1.56,.64,1);
}
.bk-dialog .bk-tab:hover{color:var(--ink-2,#1F1F25)}
.bk-dialog .bk-tab:hover .bk-tab__icon{color:var(--navy-500,#131963)}
.bk-dialog .bk-tab[aria-selected="true"]{color:var(--ink,#010101)}
.bk-dialog .bk-tab[aria-selected="true"] .bk-tab__icon{color:var(--navy-500,#131963);transform:translateY(-1px)}
.bk-dialog .bk-tab[aria-selected="true"]::after{
  content:"";position:absolute;left:14%;right:14%;bottom:-1px;
  height:3px;border-radius:3px 3px 0 0;
  background:linear-gradient(90deg,var(--navy-500,#131963) 0%,var(--mauve,#A387D2) 100%);
}

/* Tab body */
.bk-dialog .bk-panel{padding:18px 16px 8px;display:none}
.bk-dialog .bk-panel.is-active{display:block}
@media (min-width:720px){.bk-dialog .bk-panel{padding:22px 22px 10px}}

/* -------- Inputs ------------------------------------------------------- */
.bk-dialog .bk-field{display:flex;flex-direction:column;gap:6px;margin:0 0 14px}
.bk-dialog .bk-field__lab{font-size:12px;font-weight:600;color:var(--warm-500,#505050);letter-spacing:.02em}
.bk-dialog .bk-input,.bk-dialog .bk-select{
  width:100%;padding:12px 14px;
  border:1px solid var(--warm-200,#E0E0E0);border-radius:12px;background:#fff;
  font-size:15px;color:var(--ink,#010101);
  transition:border-color .2s,box-shadow .2s,background .2s;
}
.bk-dialog .bk-input::placeholder{color:var(--warm-400,#8A8A95)}
.bk-dialog .bk-input:hover,.bk-dialog .bk-select:hover{border-color:#CFD0D6}
.bk-dialog .bk-input:focus,.bk-dialog .bk-select:focus{
  outline:none;border-color:var(--navy-500,#131963);
  box-shadow:0 0 0 4px rgba(19,25,99,.10);
}
.bk-dialog .bk-select{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23505050' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:38px;
}
.bk-dialog .bk-search{position:relative}
.bk-dialog .bk-search__ic{
  position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:var(--warm-400,#8A8A95);font-size:18px;pointer-events:none;
}
.bk-dialog .bk-search .bk-input{padding-left:42px}

/* -------- Crumbs ------------------------------------------------------- */
.bk-dialog .bk-crumbs{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;
  font-size:12.5px;color:var(--warm-500,#505050);padding:0 0 12px;
}
.bk-dialog .bk-crumb{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 8px;border-radius:999px;background:var(--warm-100,#ECECEC);
  border:0;color:inherit;cursor:pointer;font:inherit;
  transition:background .2s,color .2s;
}
.bk-dialog .bk-crumb:hover{background:rgba(19,25,99,.06);color:var(--navy-500,#131963)}
.bk-dialog .bk-crumb.is-current{background:var(--navy-500,#131963);color:#fff;cursor:default}
.bk-dialog .bk-crumb__sep{color:var(--warm-400,#8A8A95);font-size:11px}
.bk-dialog .bk-hint{margin:0 0 12px;font-size:12px;color:var(--warm-500,#505050)}

/* -------- List items (clinic / service / doctor / time) ---------------- */
.bk-dialog .bk-list{display:flex;flex-direction:column;gap:8px}
.bk-dialog .bk-opt{
  display:flex;align-items:center;gap:14px;
  padding:14px;background:#fff;
  border:1.5px solid var(--warm-100,#ECECEC);border-radius:16px;
  cursor:pointer;text-align:left;width:100%;
  transition:border-color .2s,box-shadow .2s,transform .15s,background .2s;
}
.bk-dialog .bk-opt:hover{
  border-color:#CFD0D6;
  box-shadow:0 4px 14px rgba(15,18,50,.07),0 2px 4px rgba(15,18,50,.04);
  transform:translateY(-1px);
}
.bk-dialog .bk-opt[aria-pressed="true"]{
  border-color:var(--navy-500,#131963);
  background:linear-gradient(180deg,rgba(19,25,99,.03),rgba(19,25,99,0));
  box-shadow:0 0 0 1px var(--navy-500,#131963) inset,0 4px 14px rgba(15,18,50,.07);
}
.bk-dialog .bk-opt__avatar{
  flex-shrink:0;width:46px;height:46px;border-radius:14px;overflow:hidden;
  display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--navy-500,#131963) 0%,var(--mauve,#A387D2) 100%);
  color:#fff;font-weight:700;font-size:16px;letter-spacing:-.02em;
}
.bk-dialog .bk-opt__avatar img{width:100%;height:100%;object-fit:cover}
.bk-dialog .bk-opt__avatar--lilac{background:linear-gradient(135deg,#7F669D,#B2A5C3)}
.bk-dialog .bk-opt__avatar--mint{background:linear-gradient(135deg,#66AFA6,#C0E0DD);color:#0E3B36}
.bk-dialog .bk-opt__avatar--purple{background:linear-gradient(135deg,#7F669D,#A387D2)}
.bk-dialog .bk-opt__body{flex:1;min-width:0}
/* BK_BOOKING_CARDS_FIX_V1 -- the title was `nowrap` + ellipsis, so any
   service name longer than ~30 chars got cut off (e.g.
   "МРТ — головной мозг (без контраста)"). Let it clamp to 2 lines so the
   row stays compact but the full name reads. */
.bk-dialog .bk-opt__title{
  font-size:14.5px;font-weight:600;color:var(--ink,#010101);
  display:flex;align-items:flex-start;gap:6px;
  min-width:0;
  line-height:1.3;
}
.bk-dialog .bk-opt__title-t{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
  word-break:break-word;
}
.bk-dialog .bk-opt__sub{
  font-size:12.5px;color:var(--warm-500,#505050);margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;
}
.bk-dialog .bk-opt__meta{margin-top:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--warm-500,#505050)}
.bk-dialog .bk-opt__meta-i{display:inline-flex;align-items:center;gap:4px}
.bk-dialog .bk-opt__meta-i i{font-size:14px;color:var(--warm-400,#8A8A95)}
.bk-dialog .bk-opt__price{
  font-size:14px;font-weight:700;color:var(--navy-500,#131963);
  font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;
}
.bk-dialog .bk-opt__price small{font-weight:500;color:var(--warm-500,#505050);font-size:11px;margin-left:2px}
.bk-dialog .bk-opt__check{
  width:22px;height:22px;border-radius:50%;
  border:1.5px solid var(--warm-200,#E0E0E0);flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .2s,border-color .2s;
}
.bk-dialog .bk-opt[aria-pressed="true"] .bk-opt__check{background:var(--navy-500,#131963);border-color:var(--navy-500,#131963)}
.bk-dialog .bk-opt[aria-pressed="true"] .bk-opt__check::after{
  content:"";width:9px;height:5px;
  border-left:2px solid #fff;border-bottom:2px solid #fff;
  transform:rotate(-45deg) translate(0,-1px);
}
.bk-dialog .bk-rating{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--warm-500,#505050)}
.bk-dialog .bk-rating i{color:#F0B400;font-size:13px}

/* Empty state */
.bk-dialog .bk-empty{text-align:center;padding:32px 16px;color:var(--warm-500,#505050)}
.bk-dialog .bk-empty__ic{
  width:56px;height:56px;border-radius:18px;
  background:var(--warm-100,#ECECEC);color:var(--warm-400,#8A8A95);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:28px;margin:0 auto 12px;
}
.bk-dialog .bk-empty__ic--info{background:var(--sky,#BDFAFB);color:#0F2C56}
.bk-dialog .bk-empty__ic--lilac{background:var(--lilac,#B2A5C3);color:#3F2E55}
.bk-dialog .bk-empty__t{font-size:15px;font-weight:600;color:var(--ink,#010101);margin:0 0 6px}
.bk-dialog .bk-empty__p{font-size:13px;color:var(--warm-500,#505050);margin:0 auto;max-width:36ch;line-height:1.5}

/* Skeleton */
.bk-dialog .bk-skel{
  background:linear-gradient(90deg,var(--warm-100,#ECECEC) 0%,#F0F1F4 50%,var(--warm-100,#ECECEC) 100%);
  background-size:200% 100%;animation:bk-shimmer 1.2s linear infinite;border-radius:14px;
}
@keyframes bk-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* -------- Step 2 — calendar + slots ----------------------------------- */
.bk-dialog .bk-trip{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;background:#fff;
  border:1px solid var(--warm-100,#ECECEC);border-radius:16px;
  margin-bottom:14px;
}
.bk-dialog .bk-mini-edit{
  margin-left:auto;display:inline-flex;align-items:center;gap:6px;
  padding:8px 12px;border-radius:999px;border:1px solid var(--warm-200,#E0E0E0);
  background:#fff;color:var(--ink,#010101);font-weight:600;font-size:13px;cursor:pointer;
}
.bk-dialog .bk-mini-edit:hover{background:var(--warm-100,#ECECEC)}

.bk-dialog .bk-cal-wrap{display:grid;grid-template-columns:1fr;gap:16px;padding:18px 16px}
@media (min-width:720px){.bk-dialog .bk-cal-wrap{grid-template-columns:1.1fr 1fr;gap:24px;padding:22px}}
.bk-dialog .bk-cal,.bk-dialog .bk-slots{
  background:#fff;border:1px solid var(--warm-100,#ECECEC);border-radius:16px;padding:14px;
}
.bk-dialog .bk-cal__head{display:flex;align-items:center;justify-content:space-between;margin:2px 4px 10px}
.bk-dialog .bk-cal__title{font-size:14px;font-weight:600;color:var(--ink,#010101);margin:0;letter-spacing:-.005em}
.bk-dialog .bk-cal__btn{
  width:32px;height:32px;border-radius:999px;border:0;cursor:pointer;
  background:var(--warm-100,#ECECEC);color:var(--warm-500,#505050);
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .2s,color .2s;
}
.bk-dialog .bk-cal__btn:hover{background:rgba(19,25,99,.06);color:var(--navy-500,#131963)}
.bk-dialog .bk-cal__wk{
  display:grid;grid-template-columns:repeat(7,1fr);text-align:center;
  font-size:11px;font-weight:600;color:var(--warm-400,#8A8A95);
  text-transform:uppercase;letter-spacing:.05em;padding:0 0 6px;
}
.bk-dialog .bk-cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.bk-dialog .bk-cal__cell{
  position:relative;height:42px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:13.5px;font-weight:500;color:var(--ink,#010101);
  border-radius:10px;cursor:pointer;border:0;background:transparent;
  transition:background .2s,color .2s;
}
.bk-dialog .bk-cal__cell.is-muted{visibility:hidden}
.bk-dialog .bk-cal__cell:hover:not(.is-past):not(.is-muted){background:var(--warm-100,#ECECEC)}
.bk-dialog .bk-cal__cell.is-past{color:#D5D6DB;cursor:not-allowed}
.bk-dialog .bk-cal__cell.is-has::after{
  content:"";position:absolute;bottom:5px;left:50%;
  transform:translateX(-50%);width:5px;height:5px;border-radius:50%;
  background:var(--teal,#66AFA6);
}
.bk-dialog .bk-cal__cell.is-today{font-weight:700;color:var(--navy-500,#131963)}
.bk-dialog .bk-cal__cell.is-sel{
  background:var(--navy-500,#131963);color:#fff;font-weight:600;
  box-shadow:0 6px 14px rgba(19,25,99,.22);
}
.bk-dialog .bk-cal__cell.is-sel.is-has::after{background:#fff}

/* Slots */
.bk-dialog .bk-slots__h{
  font-size:13px;font-weight:600;color:var(--ink,#010101);margin:0 0 12px;
  display:flex;align-items:center;justify-content:space-between;
}
.bk-dialog .bk-slots__group{margin-bottom:14px}
.bk-dialog .bk-slots__group-l{
  font-size:11px;font-weight:700;color:var(--warm-400,#8A8A95);
  text-transform:uppercase;letter-spacing:.06em;
  display:flex;align-items:center;gap:6px;padding:0 0 8px;
}
.bk-dialog .bk-slots__group-l i{font-size:14px;color:var(--warm-500,#505050)}
.bk-dialog .bk-slots__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}
.bk-dialog .bk-slot{
  padding:9px 10px;font-size:13.5px;font-weight:600;color:var(--ink,#010101);
  background:#fff;border:1.5px solid var(--warm-200,#E0E0E0);border-radius:12px;cursor:pointer;
  transition:border-color .2s,background .2s,color .2s,transform .15s;
  font-variant-numeric:tabular-nums;
}
.bk-dialog .bk-slot:hover{border-color:var(--navy-500,#131963);color:var(--navy-500,#131963)}
.bk-dialog .bk-slot[aria-pressed="true"],.bk-dialog .bk-slot.is-picked{
  background:var(--navy-500,#131963);border-color:var(--navy-500,#131963);color:#fff;
  box-shadow:0 6px 14px rgba(19,25,99,.24);
}
.bk-dialog .bk-slot.is-loading{opacity:.65}
.bk-dialog .bk-slot:disabled{opacity:.5;cursor:not-allowed}

/* -------- Step 3 — confirm form --------------------------------------- */
.bk-dialog .bk-confirm-wrap{padding:18px 16px;display:grid;grid-template-columns:1fr;gap:18px}
@media (min-width:720px){.bk-dialog .bk-confirm-wrap{padding:22px;grid-template-columns:1fr 1fr;gap:28px}}
.bk-dialog .bk-review{background:var(--warm-100,#ECECEC);border-radius:16px;padding:16px}
.bk-dialog .bk-review__t{font-size:13px;font-weight:700;color:var(--ink,#010101);margin:0 0 12px}
.bk-dialog .bk-review__r{display:flex;gap:10px;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.08)}
.bk-dialog .bk-review__r:last-child{border-bottom:0}
.bk-dialog .bk-review__l{flex:0 0 110px;font-size:12.5px;color:var(--warm-500,#505050)}
.bk-dialog .bk-review__v{font-size:13.5px;color:var(--ink,#010101);font-weight:500}
.bk-dialog .bk-hold-bar{
  display:flex;align-items:center;gap:8px;
  padding:10px 12px;background:var(--sky,#BDFAFB);color:#0F2C56;
  border-radius:12px;font-size:12.5px;font-weight:600;margin:14px 0 0;
}
.bk-dialog .bk-hold-bar i{font-size:16px}
.bk-dialog .bk-fset{display:flex;flex-direction:column;gap:10px}
.bk-dialog .bk-tg-note{
  display:flex;align-items:flex-start;gap:8px;
  padding:10px 12px;border-radius:12px;
  background:rgba(0,136,204,.08);color:#0E3B6F;
  font-size:12px;line-height:1.5;margin-top:8px;
}
.bk-dialog .bk-tg-note i{flex-shrink:0;font-size:18px;margin-top:1px;color:#1E88E5}
.bk-dialog .bk-tg-status{
  margin:10px 0 0;font-size:13px;color:var(--ink,#010101);
  display:flex;align-items:center;gap:6px;
}
.bk-dialog .bk-tg-status i{font-size:18px;color:var(--teal,#66AFA6)}
.bk-dialog .bk-me-chip{
  padding:10px 14px;background:rgba(124,111,224,.08);
  border:1px solid rgba(167,139,250,.3);border-radius:10px;margin-bottom:10px;
  font-size:13px;display:flex;align-items:center;gap:8px;
}
.bk-dialog .bk-me-chip i{color:var(--navy-500,#131963)}

/* -------- Aside summary ------------------------------------------------ */
.bk-dialog .bk-summary{
  background:#fff;border:1px solid var(--warm-100,#ECECEC);
  border-radius:20px;padding:20px;
  box-shadow:0 1px 2px rgba(15,18,50,.04),0 2px 8px rgba(15,18,50,.04);
}
.bk-dialog .bk-summary__t{
  font-size:13px;font-weight:700;color:var(--warm-500,#505050);
  letter-spacing:.06em;text-transform:uppercase;margin:0 0 14px;
}
.bk-dialog .bk-summary__r{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px dashed var(--warm-100,#ECECEC)}
.bk-dialog .bk-summary__r:first-of-type{border-top:0;padding-top:0}
.bk-dialog .bk-summary__r-ic{
  width:28px;height:28px;border-radius:9px;
  background:var(--warm-100,#ECECEC);color:var(--warm-500,#505050);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:16px;flex-shrink:0;
}
.bk-dialog .bk-summary__r-ic.is-on{background:var(--navy-500,#131963);color:#fff}
.bk-dialog .bk-summary__r-b{min-width:0;flex:1}
.bk-dialog .bk-summary__l{font-size:11px;color:var(--warm-400,#8A8A95);font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.bk-dialog .bk-summary__v{font-size:14px;font-weight:600;color:var(--ink,#010101);margin-top:2px;word-break:break-word}
.bk-dialog .bk-summary__v.is-muted{color:var(--warm-400,#8A8A95);font-weight:400;font-style:italic}
.bk-dialog .bk-summary__div{height:1px;background:var(--warm-100,#ECECEC);margin:14px 0}
.bk-dialog .bk-summary__total{display:flex;align-items:baseline;justify-content:space-between;padding-top:6px}
.bk-dialog .bk-summary__total-v{font-size:20px;font-weight:700;color:var(--navy-500,#131963);font-variant-numeric:tabular-nums}
.bk-dialog .bk-summary__total-v small{font-size:12px;color:var(--warm-500,#505050);font-weight:500;margin-left:3px}
.bk-dialog .bk-summary__empty{font-size:13px;color:var(--warm-500,#505050)}

/* -------- Footer / CTA ------------------------------------------------- */
.bk-dialog .bk-foot{
  position:sticky;bottom:0;left:0;right:0;z-index:9;
  display:flex;align-items:center;gap:10px;
  padding:14px 14px calc(14px + env(safe-area-inset-bottom,0px));
  background:linear-gradient(180deg,rgba(250,250,250,0) 0%,rgba(250,250,250,1) 26%);
  border-top:1px solid var(--warm-100,#ECECEC);
}
.bk-dialog .bk-foot__sp{flex:1}
@media (min-width:1024px){
  .bk-dialog .bk-foot{padding-right:392px}
}
.bk-dialog .bk-cta{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 20px;font-size:15px;font-weight:600;letter-spacing:-.005em;
  background:linear-gradient(180deg,var(--navy-600,#1A2178) 0%,var(--navy-500,#131963) 50%,var(--navy-700,#0D124A) 100%);
  color:#fff;border:0;border-radius:14px;cursor:pointer;
  box-shadow:0 10px 30px rgba(19,25,99,.18),inset 0 1px 0 rgba(255,255,255,.18);
  transition:transform .15s,box-shadow .25s,opacity .2s;
}
.bk-dialog .bk-cta--primary{flex:1}
.bk-dialog .bk-cta:hover{transform:translateY(-1px)}
.bk-dialog .bk-cta:disabled,.bk-dialog .bk-cta[aria-disabled="true"]{
  opacity:.45;cursor:not-allowed;transform:none;box-shadow:0 2px 6px rgba(15,18,50,.10);
}
.bk-dialog .bk-cta i{font-size:18px}
.bk-dialog .bk-cta--ghost{
  background:#fff;color:var(--ink,#010101);
  border:1px solid var(--warm-200,#E0E0E0);
  box-shadow:0 1px 2px rgba(15,18,50,.04);
}
.bk-dialog .bk-cta--ghost:hover{background:var(--warm-100,#ECECEC)}
.bk-dialog .bk-submit{align-self:stretch;margin-top:6px}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  .bk-dialog *,.bk-dialog *::before,.bk-dialog *::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}
/* End BK_DIALOG_V5 ===================================================== */

/* BK_3K_CHIPS -- doctor profile diagnoses/symptoms chip list redesign. */
[data-sx-layout="panel-doctor"] .dp-chip-list,
[data-sx-layout="panel-doctor"] .dp-chips{
  display:flex;flex-wrap:wrap;gap:6px;align-items:center;
}
[data-sx-layout="panel-doctor"] .dp-chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px;border-radius:999px;
  background:linear-gradient(135deg,#EEF2FF,#E0E7FF);
  border:1px solid #C7D2FE;color:#312E81;
  font-size:12.5px;font-weight:600;letter-spacing:.005em;
  max-width:max-content;
  transition:transform .15s,box-shadow .2s;
}
[data-sx-layout="panel-doctor"] .dp-chip:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(124,111,224,.18)}
[data-sx-layout="panel-doctor"] .dp-chip__rm{
  width:18px;height:18px;border-radius:50%;border:0;
  background:rgba(49,46,129,.10);color:#312E81;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:10px;cursor:pointer;
}
[data-sx-layout="panel-doctor"] .dp-chip__rm:hover{background:rgba(49,46,129,.20)}
[data-sx-layout="panel-doctor"] .dp-chip__rm:focus-visible{outline:2px solid #7c6fe0;outline-offset:1px}


/* BK_GROUPS_SPECIALTIES_V1 -- multi-specialty chips on doctor cards + 5-group entry. */
.bk-opt__chips { display:flex; gap:4px; flex-wrap:wrap; margin-top:4px; }
.bk-opt__chip {
  display:inline-block; padding:2px 8px; border-radius:12px;
  background: rgba(15,23,42,.06); color: var(--text-secondary, #475569);
  font-size: 11px; font-weight: 500; line-height: 1.4;
}
.bk-opt--group .bk-opt__icon {
  background: rgba(124,111,224,.14); color: #5B4FB0;
  border-radius: 10px; width: 36px; height: 36px;
  display: inline-flex; align-items: center; justify-content: center;
}
.bk-opt--group .bk-opt__icon i { font-size: 18px; }
.bk-groups { display:flex; flex-direction:column; gap:8px; }


/* BK_GROUP_CARDS_V2 -- booking-dialog group cards (matches services_hub). */
.bk-grp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
}
.bk-grp-card {
  display: flex; align-items: center; gap: 14px;
  padding: 18px 16px;
  border: 0; border-radius: 16px;
  background: var(--bg, #f5f5f5);
  color: var(--grp-fg, #1f2937);
  cursor: pointer; text-align: left;
  font-family: inherit;
  transition: transform .18s ease, box-shadow .18s ease;
  box-shadow: 0 1px 0 rgba(15, 23, 42, .03), 0 6px 18px -10px rgba(15, 23, 42, .12);
}
.bk-grp-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 2px 0 rgba(15, 23, 42, .04), 0 16px 32px -14px rgba(15, 23, 42, .22);
}
.bk-grp-card__icon {
  flex: 0 0 auto;
  width: 48px; height: 48px;
  background: rgba(255, 255, 255, .55);
  color: var(--grp-fg, #1f2937);
  border-radius: 14px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 22px;
  backdrop-filter: blur(2px);
}
.bk-grp-card__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.bk-grp-card__title {
  font-weight: 700; font-size: 15px;
  color: var(--grp-fg, #1f2937);
  letter-spacing: -.01em;
}
.bk-grp-card__sub {
  font-size: 12px; opacity: .75;
  color: var(--grp-fg, #1f2937);
}
.bk-grp-card__caret {
  font-size: 16px; opacity: .5;
  color: var(--grp-fg, #1f2937);
  flex: 0 0 auto;
}
@media (max-width: 640px) {
  .bk-grp-grid { grid-template-columns: 1fr; gap: 10px; }
  .bk-grp-card { padding: 14px; }
  .bk-grp-card__icon { width: 42px; height: 42px; font-size: 18px; }
}


/* BK_BLOG_CARD_POLISH_V1 -- mobile padding compaction. */
@media (max-width: 640px) {
  .sx-blog-card { grid-template-rows: 130px 1fr; }
  .sx-blog-card__art { margin: 6px 6px 0; border-radius: 12px; }
  .sx-blog-card__body { padding: 12px 14px; gap: 10px; }
  .sx-blog-card__title { font-size: 16px; line-height: 1.25; margin: 0 0 4px; }
  .sx-blog-card__excerpt { font-size: 12.5px; -webkit-line-clamp: 2; line-clamp: 2; }
  .sx-blog-card__meta { gap: 10px; padding-top: 8px; font-size: 11.5px; }
  .sx-blog-card__cat { padding: 3px 7px; font-size: 9.5px; }
}


/* BK_CONFIRMED_VIEW_V1 -- post-booking summary screen inside the dialog. */
.bk-confirmed {
  display: flex; flex-direction: column; align-items: center;
  text-align: center;
  padding: clamp(20px, 4vw, 36px) clamp(16px, 4vw, 28px);
  gap: 14px;
  max-width: 560px; margin: 0 auto;
}
.bk-confirmed__icon {
  width: 72px; height: 72px;
  border-radius: 24px;
  background: rgba(34, 197, 94, 0.12);
  color: #15803D;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 40px;
  animation: bk-confirmed-pop 280ms cubic-bezier(.34,1.56,.64,1);
}
@keyframes bk-confirmed-pop {
  0%   { transform: scale(.5); opacity: 0; }
  60%  { transform: scale(1.08); opacity: 1; }
  100% { transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .bk-confirmed__icon { animation: none; }
}
.bk-confirmed__title {
  font-size: clamp(20px, 3vw, 26px); font-weight: 700;
  color: var(--text-primary, #0F172A);
  letter-spacing: -0.01em;
  margin: 0;
}
.bk-confirmed__sub {
  font-size: 14px; color: var(--text-body, #475569);
  margin: 0 0 4px;
}
.bk-confirmed__card {
  width: 100%;
  background: var(--white, #fff);
  border: 1px solid var(--border-subtle, #ECECEC);
  border-radius: 14px;
  padding: 6px 16px;
  display: flex; flex-direction: column;
  text-align: left;
}
.bk-confirmed__row {
  display: grid; grid-template-columns: 110px 1fr; gap: 12px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px dashed var(--border-subtle, #ECECEC);
}
.bk-confirmed__row:last-child { border-bottom: 0; }
.bk-confirmed__lbl {
  font-size: 11.5px; font-weight: 600;
  color: var(--text-tertiary, #94A3B8);
  text-transform: uppercase; letter-spacing: 0.05em;
}
.bk-confirmed__val {
  font-size: 14px; font-weight: 600;
  color: var(--text-primary, #0F172A);
  word-break: break-word;
}
.bk-confirmed__code {
  font-family: var(--font-mono, ui-monospace, "SF Mono", Menlo, monospace);
  font-size: 13px;
  background: var(--warm-100, #F0EEE7);
  padding: 4px 10px;
  border-radius: 8px;
  display: inline-block;
  width: fit-content;
}
.bk-confirmed__hint {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12.5px; color: var(--text-tertiary, #64748B);
  background: var(--bg-accent-soft, #EEF2FF);
  border-radius: 10px;
  padding: 10px 14px;
  margin: 0;
  text-align: left;
}
.bk-confirmed__hint i { font-size: 16px; flex-shrink: 0; color: var(--navy-500, #131963); }
.bk-confirmed__cta {
  display: flex; gap: 10px; flex-wrap: wrap; justify-content: center;
  width: 100%;
  margin-top: 4px;
}
.bk-confirmed__cta .bk-cta { flex: 1 1 180px; min-width: 0; justify-content: center; }
@media (max-width: 640px) {
  .bk-confirmed__row { grid-template-columns: 1fr; gap: 4px; padding: 10px 0; }
  .bk-confirmed__cta { flex-direction: column; }
  .bk-confirmed__cta .bk-cta { flex: 1 1 auto; }
}


/* BK_REVIEWS_CARD_V1 -- review card styles. Used on /clinics/<slug>,
   /doctors/<slug>, panel reviews tabs. Mobile + desktop. */
.rev-card {
  background: var(--white, #fff);
  border: 1px solid var(--border-subtle, #ECECEC);
  border-radius: 14px;
  padding: 16px;
  display: flex; flex-direction: column;
  gap: 10px;
  font-family: var(--font-sans);
}
.rev-card + .rev-card { margin-top: 10px; }
.rev-card__head {
  display: flex; align-items: center; gap: 12px;
}
.rev-card__avatar {
  flex: none;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--navy-500, #131963), var(--violet, #7C6FE0));
  color: var(--white, #fff);
  font-weight: 700; font-size: 14px;
  display: inline-flex; align-items: center; justify-content: center;
}
.rev-card__hd-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rev-card__name {
  font-size: 14px; font-weight: 700;
  color: var(--text-primary, #0F172A);
  letter-spacing: -0.01em;
}
.rev-card__meta {
  display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap;
  font-size: 12px;
  color: var(--text-tertiary, #64748B);
}
.rev-card__stars {
  display: inline-flex; gap: 1px;
  color: #F5A524;
  font-size: 13px;
}
.rev-card__stars .is-empty { color: rgba(245, 165, 36, 0.22); }
.rev-card__dot { opacity: 0.5; }
.rev-card__edited { font-style: italic; opacity: 0.85; }

.rev-card__svc {
  display: inline-block;
  align-self: flex-start;
  font-size: 11px; font-weight: 600; letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--navy-700, #0F1349);
  background: var(--bg-accent-soft, #EEF2FF);
  padding: 5px 10px;
  border-radius: 999px;
}
.rev-card__svc b { font-weight: 700; text-transform: none; letter-spacing: 0; }

.rev-card__body {
  margin: 0;
  font-size: 14px;
  color: var(--text-body, #475569);
  line-height: 1.55;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.rev-card__reply {
  margin-top: 4px;
  background: var(--warm-50, #F7F6F2);
  border-top: 1px dashed var(--border-subtle, #ECECEC);
  border-radius: 10px;
  padding: 10px 12px 10px 16px;
  border-left: 3px solid var(--navy-200, #C7CAE9);
}
.rev-card__reply-hd {
  font-size: 11.5px; font-weight: 600;
  color: var(--text-tertiary, #64748B);
  margin-bottom: 4px;
  text-transform: uppercase; letter-spacing: 0.04em;
}
.rev-card__reply-body {
  font-size: 13.5px;
  color: var(--text-body, #475569);
  line-height: 1.5;
  white-space: pre-wrap;
}

.rev-card__reply-form summary,
.rev-card__reply-edit summary,
.rev-card__edit summary {
  list-style: none; cursor: pointer;
  font-size: 12.5px; font-weight: 600;
  color: var(--navy-500, #131963);
  display: inline-flex; align-items: center; gap: 4px;
}
.rev-card__reply-form summary::-webkit-details-marker,
.rev-card__reply-edit summary::-webkit-details-marker,
.rev-card__edit summary::-webkit-details-marker { display: none; }
.rev-card__reply-form,
.rev-card__reply-edit,
.rev-card__edit {
  margin-top: 2px;
}
.rev-card__reply-form[open] summary,
.rev-card__reply-edit[open] summary,
.rev-card__edit[open] summary { color: var(--text-tertiary, #64748B); }

.rev-card__reply-form form,
.rev-card__reply-edit form,
.rev-card__edit form {
  margin-top: 8px;
  display: flex; flex-direction: column; gap: 8px;
}
.rev-card__reply-form textarea,
.rev-card__reply-edit textarea,
.rev-card__edit textarea {
  width: 100%;
  border: 1px solid var(--border-default, #ECECEC);
  border-radius: 10px;
  padding: 10px 12px;
  font: 500 13.5px/1.5 var(--font-sans);
  color: var(--text-primary, #0F172A);
  background: var(--white);
  resize: vertical;
  outline: none;
  transition: border-color var(--dur-fast, .15s);
}
.rev-card__reply-form textarea:focus,
.rev-card__reply-edit textarea:focus,
.rev-card__edit textarea:focus { border-color: var(--navy-500, #131963); }

.rev-card__edit-stars {
  display: inline-flex; gap: 2px;
  color: rgba(245, 165, 36, 0.32);
  font-size: 18px;
}
.rev-card__edit-stars input { display: none; }
.rev-card__edit-stars label { cursor: pointer; padding: 2px 1px; }
.rev-card__edit-stars label:has(input:checked) ~ label { color: rgba(245, 165, 36, 0.32); }
.rev-card__edit-stars label:has(input:checked),
.rev-card__edit-stars label:has(input:checked) ~ label { /* legacy fallback */ }
.rev-card__edit-stars label i { color: inherit; }
/* fallback star fill: light up on hover-from-left */
.rev-card__edit-stars:hover label { color: #F5A524; }
.rev-card__edit-stars label:hover ~ label { color: rgba(245, 165, 36, 0.32); }

.rev-card__foot {
  display: flex; align-items: center; gap: 8px;
  padding-top: 6px;
  border-top: 1px solid var(--border-subtle, #ECECEC);
  margin-top: 4px;
  flex-wrap: wrap;
}
.rev-card__like-form { display: inline-flex; }
.rev-card__like {
  display: inline-flex; align-items: center; gap: 6px;
  width: auto; min-width: 52px; height: 36px;
  padding: 0 12px;
  background: transparent;
  border: 1px solid var(--border-default, #ECECEC);
  border-radius: 999px;
  color: var(--text-secondary, #475569);
  cursor: pointer;
  font: 600 13px/1 var(--font-sans);
  font-variant-numeric: tabular-nums;
  transition: color var(--dur-fast, .15s), background var(--dur-fast, .15s),
              border-color var(--dur-fast, .15s), transform var(--dur-fast, .15s);
}
.rev-card__like i { font-size: 18px; }
.rev-card__like:hover { border-color: var(--violet, #7C6FE0); color: var(--violet, #7C6FE0); }
.rev-card__like:active { transform: scale(0.95); }
.rev-card__like.is-on {
  background: rgba(124, 111, 224, 0.10);
  border-color: var(--violet, #7C6FE0);
  color: var(--violet, #7C6FE0);
}
.rev-card__like.is-on i {
  animation: rev-heart-pop 220ms cubic-bezier(.34,1.56,.64,1);
}
@keyframes rev-heart-pop {
  0%   { transform: scale(0.8); }
  60%  { transform: scale(1.18); }
  100% { transform: scale(1); }
}
.rev-card__like-count {
  display: inline-flex; align-items: center; gap: 4px;
  height: 28px; padding: 0 10px; border-radius: 999px;
  background: rgba(124, 111, 224, 0.08);
  color: var(--violet, #7C6FE0);
  font: 600 12px/1 var(--font-sans);
  font-variant-numeric: tabular-nums;
}

.rev-card__btn {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 0 14px; height: 34px;
  border: 0; border-radius: 10px;
  font: 600 13px/1 var(--font-sans);
  cursor: pointer; font-family: inherit;
  transition: filter var(--dur-fast, .15s);
}
.rev-card__btn--primary {
  background: linear-gradient(180deg, var(--navy-400, #1A2178), var(--navy-500, #131963));
  color: var(--white);
  box-shadow: 0 2px 8px rgba(19, 25, 99, 0.20);
}
.rev-card__btn--primary:hover { filter: brightness(1.06); }
.rev-card__btn--ghost {
  background: transparent;
  color: var(--text-tertiary, #64748B);
  border: 1px solid var(--border-default, #ECECEC);
}
.rev-card__btn--ghost:hover { color: var(--color-danger, #B63D25); border-color: var(--color-danger, #B63D25); }

@media (prefers-reduced-motion: reduce) {
  .rev-card__like.is-on i { animation: none; }
}

/* Mobile compaction. */
@media (max-width: 640px) {
  .rev-card { padding: 12px 14px; gap: 8px; }
  .rev-card__avatar { width: 32px; height: 32px; font-size: 13px; }
  .rev-card__name { font-size: 13.5px; }
  .rev-card__body { font-size: 13px; line-height: 1.5; }
  .rev-card__svc { font-size: 10.5px; padding: 4px 9px; }
  .rev-card__reply { padding: 8px 10px 8px 14px; }
  .rev-card__reply-body { font-size: 13px; }
  .rev-card__like { min-width: 44px; padding: 0 10px; }
}

/* Reviews summary widget — used on detail pages. */
.rev-summary {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 14px; color: var(--text-primary, #0F172A);
}
.rev-summary__rating {
  display: inline-flex; align-items: center; gap: 6px;
  font: 700 18px/1 var(--font-sans);
  color: var(--text-primary, #0F172A);
  font-variant-numeric: tabular-nums;
}
.rev-summary__rating i { color: #F5A524; font-size: 18px; }
.rev-summary__count { color: var(--text-tertiary, #64748B); font-size: 13px; font-weight: 500; }
.rev-summary__brand {
  font-size: 12px; color: var(--text-tertiary, #64748B);
  margin-left: 8px;
}
.rev-summary__brand b { color: var(--text-primary, #0F172A); font-weight: 600; }


/* BK_REVIEWS_CARD_V2 -- compact thumbs-up like pill. Overrides the older
   heart-pill rules from BK_REVIEWS_CARD_V1; same selectors so layout
   inherits the foot positioning. */
.rev-card__like {
  display: inline-flex; align-items: center; gap: 6px;
  height: 28px; min-width: 0; padding: 0 10px;
  background: transparent;
  border: 1px solid var(--border-default, #ECECEC);
  border-radius: 999px;
  color: var(--text-secondary, #475569);
  cursor: pointer;
  font: 600 12px/1 var(--font-sans);
  font-variant-numeric: tabular-nums;
  transition: color var(--dur-fast, .15s), background var(--dur-fast, .15s),
              border-color var(--dur-fast, .15s), transform var(--dur-fast, .15s);
}
.rev-card__like i { font-size: 14px; line-height: 1; }
.rev-card__like-text { white-space: nowrap; }
.rev-card__like:hover { border-color: var(--violet, #7C6FE0); color: var(--violet, #7C6FE0); }
.rev-card__like:active { transform: scale(0.96); }
.rev-card__like.is-on {
  background: rgba(124, 111, 224, 0.10);
  border-color: var(--violet, #7C6FE0);
  color: var(--violet, #7C6FE0);
}
.rev-card__like--readonly { cursor: default; }
.rev-card__like--readonly:hover { border-color: var(--border-default, #ECECEC); color: var(--text-secondary, #475569); }
.rev-card__like.is-on i {
  animation: rev-thumbs-pop 220ms cubic-bezier(.34,1.56,.64,1);
}
@keyframes rev-thumbs-pop {
  0%   { transform: scale(0.8); }
  60%  { transform: scale(1.16); }
  100% { transform: scale(1); }
}


/* BK_PROFILE_PAST_CARDS_V1 superseded by V2 — past cards inherit upcoming layout, no wrap override. */
.sx-pp-appt--past { opacity: 1; }


/* BK_PROFILE_PAST_CARDS_V2 -- secondary link mirrors .sx-pp-link-danger. */
.sx-pp-link {
  background: transparent; border: 0; padding: 4px 8px;
  color: var(--text-tertiary, #64748B);
  font: 600 13px/1 var(--font-sans);
  text-decoration: none;
  cursor: pointer;
}
.sx-pp-link:hover { color: var(--navy-500, #131963); text-decoration: underline; }


/* ─── BK_BOOKING_LINEAR_V1 — linear booking wizard cards + progress ─── */
.bk-progress { display: flex; align-items: center; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.bk-progress__count { font: 700 14px/1 var(--font-sans); color: var(--text-primary, #0F172A); flex: none; font-variant-numeric: tabular-nums; }
.bk-progress__count b { color: var(--violet, #7C6FE0); }
.bk-progress__bar { flex: 1; min-width: 120px; height: 6px; background: var(--warm-100, #F0EEE7); border-radius: 999px; overflow: hidden; }
.bk-progress__fill { display: block; height: 100%; background: linear-gradient(90deg, var(--violet, #7C6FE0), var(--navy-500, #131963)); border-radius: 999px; transition: width .25s ease; }
.bk-progress__hint { font-size: 12.5px; color: var(--text-tertiary, #64748B); flex: 1 1 100%; }

.bk-card {
  background: var(--white, #fff);
  border: 1px solid var(--border-default, #ECECEC);
  border-radius: 16px;
  margin-top: 12px;
  overflow: hidden;
  transition: border-color .15s, box-shadow .15s;
}
.bk-card.is-active   { border-color: var(--navy-500, #131963); box-shadow: 0 4px 16px -8px rgba(19,25,99,0.12); }
.bk-card.is-filled   { border-color: var(--mint, #66AFA6); }
.bk-card.is-pending  { opacity: 0.62; }
.bk-card.is-locked   { opacity: 0.45; pointer-events: none; }

.bk-card__head {
  width: 100%;
  display: flex; align-items: center; gap: 14px;
  padding: 14px 16px; border: 0;
  background: transparent; cursor: pointer; text-align: left;
  font: 600 14px/1.3 var(--font-sans);
  color: var(--text-primary, #0F172A);
  transition: background .15s;
}
.bk-card__head:hover    { background: var(--warm-50, #F7F6F2); }
.bk-card.is-active .bk-card__head { background: var(--bg-accent-soft, #EEF2FF); }

.bk-card__num {
  flex: none;
  width: 36px; height: 36px;
  border-radius: 999px;
  display: grid; place-items: center;
  background: var(--warm-100, #F0EEE7);
  color: var(--text-secondary, #475569);
  font-size: 16px;
  transition: background .15s, color .15s;
}
.bk-card.is-active  .bk-card__num { background: var(--violet, #7C6FE0); color: #fff; }
.bk-card.is-filled  .bk-card__num { background: var(--mint, #66AFA6); color: #fff; }

.bk-card__lab    { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.bk-card__title  { font-size: 13.5px; font-weight: 700; color: var(--text-primary, #0F172A); }
.bk-card__chip   {
  font-size: 12.5px; font-weight: 500; color: var(--text-tertiary, #64748B);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;
}
.bk-card.is-filled .bk-card__chip { color: var(--text-primary, #0F172A); font-weight: 600; }

.bk-card__edit {
  font-size: 12px; font-weight: 600;
  color: var(--violet, #7C6FE0);
  flex: none;
  display: none;
}
.bk-card.is-filled:not(.is-active) .bk-card__edit { display: inline; }

.bk-card__caret {
  flex: none; font-size: 16px; color: var(--text-tertiary, #64748B);
  transition: transform .2s;
}
.bk-card.is-active .bk-card__caret { transform: rotate(180deg); }

.bk-card__body {
  /* BK_BOOKING_GROUPS_GRID_V2 -- 16px → 12px so tiles get more width. */
  padding: 0 12px 14px;
  border-top: 1px solid var(--border-subtle, #F0EEE7);
  animation: bk-card-expand .2s ease;
}
@keyframes bk-card-expand { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

/* In-card lane toggle (Service vs Consultation) */
.bk-lane-toggle {
  display: inline-flex; padding: 4px;
  background: var(--warm-100, #F0EEE7);
  border-radius: 12px;
  margin: 14px 0 12px;
}
.bk-lane {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 8px;
  border: 0; background: transparent;
  font: 600 13px/1 var(--font-sans);
  color: var(--text-secondary, #475569);
  cursor: pointer;
  transition: background .15s, color .15s;
}
.bk-lane.is-active {
  background: var(--white, #fff);
  color: var(--navy-500, #131963);
  box-shadow: 0 1px 2px rgba(0,0,0,0.06);
}
.bk-lane i { font-size: 15px; }

@media (max-width: 640px) {
  .bk-card__head { padding: 12px 14px; gap: 10px; }
  .bk-card__num { width: 32px; height: 32px; font-size: 14px; }
  .bk-card__edit { display: none !important; }
  .bk-card__body { padding: 0 14px 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .bk-card__body { animation: none; }
  .bk-card__caret { transition: none; }
  .bk-progress__fill { transition: none; }
}


/* ─── BK_BOOKING_STEP3_V2 — confirm step layout ─── */
.bk3-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 16px; align-items: start; }
@media (max-width: 760px) { .bk3-grid { grid-template-columns: minmax(0, 1fr); } }

.bk3-card {
  background: var(--white, #fff);
  border: 1px solid var(--border-default, #ECECEC);
  border-radius: 16px;
  padding: 18px 20px;
}
.bk3-card__head { margin-bottom: 14px; }
.bk3-card__t { font: 700 15px/1.2 var(--font-sans); color: var(--text-primary, #0F172A); margin: 0; letter-spacing: -0.01em; }

.bk3-rows { display: flex; flex-direction: column; gap: 10px; }
.bk3-row {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: baseline;
  padding: 8px 0;
  border-bottom: 1px dashed var(--border-subtle, #F0EEE7);
}
.bk3-row:last-child { border-bottom: 0; }
.bk3-row > i { color: var(--text-tertiary, #64748B); font-size: 16px; }
.bk3-row__l { color: var(--text-tertiary, #64748B); font-size: 13px; }
.bk3-row__v { color: var(--text-primary, #0F172A); font-size: 13.5px; font-weight: 600; text-align: right; min-width: 0; overflow-wrap: anywhere; }

.bk3-total {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border-default, #ECECEC);
  display: flex; align-items: baseline; justify-content: space-between;
}
.bk3-total__l { color: var(--text-tertiary, #64748B); font-size: 13px; font-weight: 600; }
.bk3-total__v { font-size: 18px; color: var(--text-primary, #0F172A); font-variant-numeric: tabular-nums; }
.bk3-total__v strong { font-weight: 700; }

.bk3-hold {
  margin-top: 12px;
  padding: 10px 12px; border-radius: 10px;
  background: rgba(245, 165, 36, 0.08);
  color: #92400E;
  display: flex; align-items: center; gap: 8px;
  font-size: 12.5px;
}
.bk3-hold i { font-size: 16px; }

/* Logged-in identity card */
.bk3-me__top {
  display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 12px; align-items: center;
  padding: 4px 0 10px;
}
.bk3-me__avatar {
  width: 44px; height: 44px; border-radius: 50%;
  background: linear-gradient(135deg, var(--violet, #7C6FE0), var(--navy-500, #131963));
  color: #fff; font: 700 18px/1 var(--font-sans);
  display: grid; place-items: center;
}
.bk3-me__body { min-width: 0; }
.bk3-me__hint { color: var(--text-tertiary, #64748B); font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.04em; font-weight: 700; }
.bk3-me__name { color: var(--text-primary, #0F172A); font-size: 15px; font-weight: 700; line-height: 1.2; }
.bk3-me__phone { color: var(--text-secondary, #475569); font-size: 13px; font-variant-numeric: tabular-nums; margin-top: 2px; }
.bk3-me__edit {
  flex: none;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 10px; border-radius: 8px;
  font-size: 12px; font-weight: 600;
  color: var(--violet, #7C6FE0);
  text-decoration: none;
  background: transparent;
  transition: background .15s;
}
.bk3-me__edit:hover { background: var(--bg-accent-soft, #EEF2FF); }

.bk3-tg-note {
  margin-top: 6px;
  padding: 8px 12px; border-radius: 10px;
  background: rgba(34, 158, 217, 0.10);
  color: #0E5A86;
  display: flex; align-items: center; gap: 8px;
  font-size: 12.5px; font-weight: 500;
}
.bk3-tg-note i { font-size: 16px; color: #229ED9; }

.bk3-tg-link {
  margin-top: 8px;
  display: flex; align-items: center; gap: 8px;
  padding: 10px 12px; border-radius: 10px;
  background: var(--warm-50, #F7F6F2);
  color: var(--text-primary, #0F172A);
  text-decoration: none;
  font-size: 13px;
  border: 1px solid var(--border-subtle, #F0EEE7);
  transition: border-color .15s, background .15s;
}
.bk3-tg-link:hover { border-color: #229ED9; background: rgba(34,158,217,0.06); }
.bk3-tg-link i:first-child { color: #229ED9; font-size: 18px; }
.bk3-tg-link i:last-child { margin-left: auto; color: var(--text-tertiary, #64748B); }

/* Anonymous CTA */
.bk3-anon { margin-bottom: 14px; }
.bk3-anon__lead {
  margin: 0 0 12px;
  color: var(--text-secondary, #475569);
  font-size: 13px;
  display: flex; align-items: center; gap: 8px;
}
.bk3-anon__lead i { color: var(--violet, #7C6FE0); font-size: 16px; }

.bk3-tg-cta {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 16px; border-radius: 14px;
  background: linear-gradient(135deg, #229ED9 0%, #0E5A86 100%);
  color: #fff;
  text-decoration: none;
  box-shadow: 0 4px 16px -6px rgba(34, 158, 217, 0.45);
  transition: transform .15s, box-shadow .15s;
}
.bk3-tg-cta:hover { transform: translateY(-1px); box-shadow: 0 6px 20px -6px rgba(34, 158, 217, 0.55); }
.bk3-tg-cta__icon {
  width: 40px; height: 40px; border-radius: 50%;
  background: rgba(255,255,255,0.18);
  display: grid; place-items: center;
  font-size: 22px;
  flex: none;
}
.bk3-tg-cta__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bk3-tg-cta__t { font-weight: 700; font-size: 14.5px; }
.bk3-tg-cta__s { font-size: 12px; opacity: 0.9; }
.bk3-tg-cta__arrow { font-size: 16px; opacity: 0.7; }

.bk3-or {
  position: relative; text-align: center;
  margin: 14px 0 12px;
}
.bk3-or::before, .bk3-or::after {
  content: ""; position: absolute; top: 50%;
  width: calc(50% - 28px); height: 1px; background: var(--border-default, #ECECEC);
}
.bk3-or::before { left: 0; }
.bk3-or::after { right: 0; }
.bk3-or span { background: var(--white, #fff); padding: 0 10px; color: var(--text-tertiary, #64748B); font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }

.bk3-tg-foot {
  margin: 8px 0 14px;
  padding: 8px 12px; border-radius: 10px;
  background: var(--warm-50, #F7F6F2);
  color: var(--text-secondary, #475569);
  font-size: 12px;
  display: flex; align-items: flex-start; gap: 8px;
  line-height: 1.4;
}
.bk3-tg-foot i { color: var(--text-tertiary, #64748B); font-size: 14px; flex: none; margin-top: 1px; }

.bk3-signin {
  margin: 12px 0 0;
  text-align: center;
  font-size: 12.5px;
  color: var(--text-tertiary, #64748B);
}
.bk3-signin a { color: var(--violet, #7C6FE0); font-weight: 600; text-decoration: none; }
.bk3-signin a:hover { text-decoration: underline; }

@media (max-width: 640px) {
  .bk3-card { padding: 16px; border-radius: 14px; }
  .bk3-grid { gap: 12px; }
  .bk3-tg-cta { padding: 12px 14px; border-radius: 12px; }
  .bk3-tg-cta__icon { width: 36px; height: 36px; font-size: 20px; }
  .bk3-tg-cta__t { font-size: 13.5px; }
  .bk3-me__edit { padding: 4px 8px; }
}

/* ─── BK_BOOKING_SUBMIT_FIX_V1 (2026-05-10) ─────────────────────────────────
   Two compounding bugs were stealing the dialog:
   1) [hidden] was being beaten by .bk-cta { display:inline-flex } and
      .bk-field { display:flex }, so renderStep3()'s .hidden=true had no
      visible effect. The footer next button stayed onscreen on step 3, and
      name/phone inputs stayed visible in logged-in mode (looked cramped).
   2) On step 3 the bk3-grid review card and the right-rail aside repeated
      the same info — wasted horizontal space. Hide the aside on step 3 and
      let the two cards breathe.
   The submit hang itself is fixed in JS (try/catch + stopPropagation), this
   block is the visual half. */
.bk-dialog [hidden] { display: none !important; }
.bk-dialog .bk-body:has(.bk-sec[data-step-sec="3"]:not([hidden])) .bk-aside,
.bk-dialog .bk-body:has(.bk-sec[data-step-sec="4"]:not([hidden])) .bk-aside {
  display: none;
}
@media (min-width: 980px) {
  /* Make step 3 (and the confirmed view) span the whole width once the aside is hidden. */
  .bk-dialog .bk-body:has(.bk-sec[data-step-sec=3]:not([hidden])) .bk-main,
  .bk-dialog .bk-body:has(.bk-sec[data-step-sec=4]:not([hidden])) .bk-main {
    max-width: 1080px;
  }
  /* Tighten the bk3 cards a touch — the layout was fighting the 1100px max. */
  .bk3-grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 18px; }
  .bk3-card { padding: 22px 22px; }
  .bk3-row__l, .bk3-row__v { font-size: 13px; }
  .bk3-me__name { font-size: 15px; line-height: 1.3; }
  .bk3-me__phone { font-size: 13px; }
}

/* ─── BK_BOOKING_NODOC_NOTE_V1 + BK_BOOKING_PREREQ_V1 (2026-05-10) ──────────
   Inline note rows above the review list and a full-width prereq banner that
   appears on top of step 3 when the server returns prereq_missing. */
.bk-dialog .bk3-note {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 12px 14px; border-radius: 12px;
  margin: 0 0 12px;
  font-size: 13px; line-height: 1.4;
}
.bk-dialog .bk3-note > i { font-size: 18px; flex-shrink: 0; margin-top: 1px; }
.bk-dialog .bk3-note__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bk-dialog .bk3-note__body strong {
  font-weight: 700; font-size: 13.5px;
  color: var(--text-primary, #0F172A); letter-spacing: -0.005em;
}
.bk-dialog .bk3-note__body span { color: var(--text-secondary, #475569); font-size: 12.5px; }
.bk-dialog .bk3-note--info {
  background: linear-gradient(180deg, #EBF4FF 0%, #DDEAFE 100%);
  border: 1px solid #BFDBFE;
}
.bk-dialog .bk3-note--info > i { color: #1D4ED8; }
.bk-dialog .bk3-note--warn {
  background: linear-gradient(180deg, #FFF7ED 0%, #FEF3C7 100%);
  border: 1px solid #FDBA74;
}
.bk-dialog .bk3-note--warn > i { color: #B45309; }

.bk-dialog .bk-prereq {
  display: flex; gap: 14px; align-items: flex-start;
  padding: 16px 18px; border-radius: 14px;
  margin: 0 0 18px;
  background: linear-gradient(180deg, #FFF7ED 0%, #FEF3C7 100%);
  border: 1px solid #F59E0B;
  box-shadow: 0 6px 24px -10px rgba(245, 158, 11, 0.40);
}
.bk-dialog .bk-prereq__icon { font-size: 26px; color: #B45309; flex-shrink: 0; line-height: 1; }
.bk-dialog .bk-prereq__body { display: flex; flex-direction: column; gap: 6px; min-width: 0; flex: 1; }
.bk-dialog .bk-prereq__t {
  margin: 0; font: 700 16px/1.25 var(--font-sans);
  color: var(--text-primary, #0F172A); letter-spacing: -0.01em;
}
.bk-dialog .bk-prereq__p { margin: 0; font-size: 13.5px; color: var(--text-secondary, #475569); line-height: 1.5; }
.bk-dialog .bk-prereq__actions { display: flex; gap: 10px; margin-top: 6px; flex-wrap: wrap; }
.bk-dialog .bk-prereq__actions .bk-cta { padding: 10px 16px; font-size: 13.5px; }
@media (max-width: 640px) {
  .bk-dialog .bk-prereq { flex-direction: column; gap: 10px; padding: 14px; }
  .bk-dialog .bk-prereq__actions .bk-cta { width: 100%; }
}


/* ─── BK_BOOKING_GROUPS_GRID_V2 ─────────────────────────────────────────
   Smaller minmax (200px) so we reliably get 2-3 columns even when the
   bk-card body is narrow. Tile design tuned to Symptex tokens: no card
   border by default (only a soft shadow ladder), spring hover, max
   font-weight 600 per the system rule. */
.bk-dialog .bk-grp-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 12px;
}
.bk-dialog .bk-opt--tile {
  padding: 14px 14px;
  background: #fff;
  border: 1px solid var(--warm-100, #F0EEE7);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(15, 18, 50, 0.04);
  transition: border-color .2s, box-shadow .3s, transform .25s cubic-bezier(.34, 1.56, .64, 1), background .2s;
}
.bk-dialog .bk-opt--tile:hover {
  border-color: var(--navy-500, #131963);
  box-shadow: 0 12px 28px -10px rgba(19, 25, 99, 0.18), 0 2px 6px rgba(15, 18, 50, 0.05);
  transform: translateY(-2px);
}
.bk-dialog .bk-opt--tile[aria-pressed=true] {
  border-color: var(--navy-500, #131963);
  background: linear-gradient(180deg, rgba(19, 25, 99, 0.04), rgba(19, 25, 99, 0));
  box-shadow: 0 0 0 1px var(--navy-500, #131963) inset, 0 6px 16px -6px rgba(19, 25, 99, 0.18);
}
.bk-dialog .bk-opt--tile .bk-opt__avatar {
  width: 42px; height: 42px; border-radius: 12px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15);
}
.bk-dialog .bk-opt--tile .bk-opt__avatar i { font-size: 20px; }
.bk-dialog .bk-opt--tile .bk-opt__title-t {
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.bk-dialog .bk-opt--tile .bk-opt__sub {
  font-size: 11.5px;
  color: var(--text-tertiary, #64748B);
  margin-top: 3px;
  font-weight: 500;
}
.bk-dialog .bk-opt--tile .bk-opt__check {
  width: 26px; height: 26px;
  background: var(--warm-50, #FAFAFA);
  border: 1px solid var(--warm-100, #ECECEC);
  color: var(--text-tertiary, #64748B);
  transition: background .15s, color .15s, border-color .15s;
}
.bk-dialog .bk-opt--tile .bk-opt__check i { font-size: 14px; }
.bk-dialog .bk-opt--tile:hover .bk-opt__check {
  background: var(--navy-500, #131963);
  border-color: var(--navy-500, #131963);
  color: #fff;
}

/* Extra avatar tints so each group has its own colour identity. */
.bk-dialog .bk-opt__avatar--sky    { background: linear-gradient(135deg, #5B9BD5, #B7D7F2); color: #0B3A6A; }
.bk-dialog .bk-opt__avatar--teal   { background: linear-gradient(135deg, #14B8A6, #99F6E4); color: #0F3A36; }


/* ─── BK_BOOKING_LAYOUT_V3 ──────────────────────────────────────────────
   Defensive width guarantees. The user's screenshots showed the bk-card
   stuck at ~430px wide even though the bk-main grid track is 1fr (≈690px+
   at 1240px viewport). Force every level in the chain to width:100% so
   the card actually fills the column. Also drop the tile minmax to 170px
   so we reliably get 3 columns even when bk-card body is briefly narrow
   on first paint. */
.bk-dialog .bk-main,
.bk-dialog .bk-sec,
.bk-dialog .bk-card,
.bk-dialog .bk-pageh {
  width: 100%;
  box-sizing: border-box;
}
@media (min-width: 1024px) {
  .bk-dialog .bk-main { max-width: none !important; margin: 0 !important; }
}
.bk-dialog .bk-grp-tiles { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }

/* Mobile-friendly: keep tile name from line-clamping into oblivion when
   the card is at min-width. */
@media (max-width: 480px) {
  .bk-dialog .bk-grp-tiles { grid-template-columns: 1fr; }
}


/* ─── BK_BOOKING_FIX_PACK_V1 ───────────────────────────────────────────── */
/* BK_DOC_CARD_HIDE_V1 -- the Doctor card disappears when the picked
   service has provider_role != doctor (lab / nurse / radiographer). */
.bk-dialog .bk-card.bk-card--hidden { display: none !important; }

/* BK_TILE_VERTICAL_V1 -- vertical card layout for the group tiles so the
   name has the full tile width to wrap properly. Caret moves to a small
   corner chip; avatar sits at the top-left. */
.bk-dialog .bk-opt--tile-v {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding: 16px;
  position: relative;
  min-height: 116px;
}
.bk-dialog .bk-opt--tile-v .bk-opt__avatar {
  width: 44px; height: 44px; border-radius: 12px;
}
.bk-dialog .bk-opt--tile-v .bk-opt__avatar i { font-size: 22px; }
.bk-dialog .bk-opt--tile-v .bk-opt__body--v {
  width: 100%;
  display: flex; flex-direction: column; gap: 4px;
  min-width: 0;
}
.bk-dialog .bk-opt--tile-v .bk-opt__title--v {
  white-space: normal;
  word-break: break-word;
  hyphens: auto;
  display: block;
  font-size: 14.5px;
  line-height: 1.25;
}
.bk-dialog .bk-opt--tile-v .bk-opt__title--v .bk-opt__title-t {
  display: block;
  -webkit-line-clamp: unset;
  overflow: visible;
  white-space: normal;
}
.bk-dialog .bk-opt--tile-v .bk-opt__sub {
  font-size: 11.5px;
  color: var(--text-tertiary, #64748B);
  font-weight: 500;
}
.bk-dialog .bk-opt--tile-v .bk-opt__corner {
  position: absolute;
  top: 12px; right: 12px;
  width: 24px; height: 24px;
  border-radius: 8px;
  background: var(--warm-50, #FAFAFA);
  border: 1px solid var(--warm-100, #ECECEC);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--text-tertiary, #64748B);
  font-size: 13px;
  transition: background .15s, color .15s, border-color .15s;
}
.bk-dialog .bk-opt--tile-v:hover .bk-opt__corner {
  background: var(--navy-500, #131963);
  border-color: var(--navy-500, #131963);
  color: #fff;
}


/* BK_TG_VISIBILITY_V1 -- prominent confirm-via-bot CTA shown after a
   successful submit when the server reports no DM was actually sent
   (typically because the patient hasn't /start'd the bot yet). */
.bk-dialog .bk-confirmed__tg-cta {
  margin-top: 14px;
  padding: 14px 16px;
  background: linear-gradient(135deg, #E0F2FE, #DBEAFE);
  border: 1px solid #93C5FD;
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: flex-start;
}
.bk-dialog .bk-confirmed__tg-cta[hidden] { display: none !important; }
.bk-dialog .bk-cf__tg-note { margin: 0; font-size: 12.5px; color: #1E40AF; line-height: 1.4; }


/* ─── BK_REG_CAL_CARD_V1 ───────────────────────────────────────────────
   Richer calendar appointment card: time chip + status pill, patient
   name, service line, doctor specialty subtitle. Status pill colours
   match BK_STATUS_FLOW_V1 token usage in the focus card. */
.reg-cal__card {
  background: #fff;
  border: 1px solid var(--reg-border, #ECECEC);
  border-radius: 10px;
  padding: 8px 10px;
  margin-bottom: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  transition: border-color .15s, box-shadow .2s;
}
.reg-cal__card:hover {
  border-color: #0E7490;
  box-shadow: 0 4px 12px -4px rgba(14, 116, 144, 0.18);
}
.reg-cal__row {
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
}
.reg-cal__time {
  font: 700 11.5px/1 var(--font-sans);
  color: #0E7490;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
}
.reg-cal__pill {
  font: 700 9.5px/1 var(--font-sans);
  letter-spacing: .03em;
  text-transform: uppercase;
  padding: 3px 7px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.reg-cal__pill--pending   { background: #FEF3C7; color: #B45309; border-color: #FBBF24; }
.reg-cal__pill--confirmed { background: #CFFAFE; color: #0E7490; border-color: #67E8F9; }
.reg-cal__pill--completed { background: #DCFCE7; color: #15803D; border-color: #86EFAC; }
.reg-cal__pill--cancelled { background: #FEE2E2; color: #B91C1C; border-color: #FCA5A5; }
.reg-cal__pill--no_show   { background: #F1F5F9; color: #475569; border-color: #CBD5E1; }
.reg-cal__patient {
  font: 600 12px/1.25 var(--font-sans);
  color: var(--reg-text, #010101);
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
}
.reg-cal__svc {
  font-size: 10.5px;
  color: var(--reg-text2, #505050);
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}
.reg-cal__doc {
  font-size: 9.5px;
  font-weight: 600;
  color: var(--reg-text3, #9CA3AF);
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-top: 1px;
}

/* BK_CLINIC_LOGO_NAME_V1 -- contain logo image inside the avatar circle */
.bk-dialog .bk-opt__avatar--logo { padding: 0; overflow: hidden; background: #fff; }
.bk-dialog .bk-opt__avatar--logo > img { width: 100%; height: 100%; object-fit: cover; display: block; }
