#aidoc-root{
  --aidoc-teal-dark:color-mix(in srgb, var(--aidoc-teal) 80%, black);
  --aidoc-teal-tint:color-mix(in srgb, var(--aidoc-teal) 7%, #fff);
  --aidoc-cream:#f7f4ee;
  --aidoc-ink:#1c2422;
  --aidoc-line:#e1e8e5;
  --aidoc-muted:#5c6b68;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}

/* ========================================================================== */
/* AI Doctor v3.1.0 — Premium appointment journey                            */
/* ========================================================================== */
#aidoc-root .aidoc-card-form,
#aidoc-root .aidoc-card-booking,
#aidoc-root .aidoc-card-summary,
#aidoc-root .aidoc-card-success,
#aidoc-root .aidoc-card-payment{
  border:1px solid #d9e5f8!important;
  border-left:1px solid #d9e5f8!important;
  border-radius:22px!important;
  background:linear-gradient(155deg,#fff 0%,#f8fbff 100%)!important;
  box-shadow:0 14px 34px rgba(20,54,110,.10)!important;
  overflow:hidden!important;
}
#aidoc-root .aidoc-booking-progress{
  display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
  list-style:none!important;margin:0 0 20px!important;padding:0!important;
  position:relative!important;gap:4px!important;
}
#aidoc-root .aidoc-booking-progress:before{
  content:""!important;position:absolute!important;top:16px!important;left:16%!important;right:16%!important;
  height:2px!important;background:#dce6f5!important;z-index:0!important;
}
#aidoc-root .aidoc-progress-step{display:flex!important;flex-direction:column!important;align-items:center!important;gap:6px!important;position:relative!important;z-index:1!important;color:#8190a8!important;font-size:10px!important;font-weight:700!important;text-align:center!important;line-height:1.2!important;}
#aidoc-root .aidoc-progress-dot{display:grid!important;place-items:center!important;width:32px!important;height:32px!important;border-radius:50%!important;background:#eef3fa!important;border:2px solid #d7e1f0!important;color:#70819b!important;font-size:12px!important;box-shadow:0 0 0 4px #fff!important;}
#aidoc-root .aidoc-progress-step.is-active .aidoc-progress-dot{background:var(--aidoc-teal)!important;border-color:var(--aidoc-teal)!important;color:#fff!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--aidoc-teal) 14%,#fff)!important;}
#aidoc-root .aidoc-progress-step.is-active .aidoc-progress-text{color:#17315c!important;}
#aidoc-root .aidoc-progress-step.is-complete .aidoc-progress-dot{background:#20c47a!important;border-color:#20c47a!important;color:#fff!important;}
#aidoc-root .aidoc-progress-step.is-complete .aidoc-progress-text{color:#287356!important;}
#aidoc-root .aidoc-form-required-note{padding:9px 12px!important;border-radius:10px!important;background:#f3f7fd!important;color:#687a96!important;font-size:11px!important;margin:0 0 15px!important;}
#aidoc-root .aidoc-field-row{gap:7px!important;margin-bottom:15px!important;}
#aidoc-root .aidoc-field-label{font-size:12px!important;font-weight:750!important;color:#263b5c!important;letter-spacing:.01em!important;}
#aidoc-root .aidoc-field-input,
#aidoc-root .aidoc-patient-form input,
#aidoc-root .aidoc-patient-form select{
  min-height:48px!important;border:1.5px solid #d5e0f0!important;border-radius:13px!important;
  background:#fff!important;color:#142947!important;padding:11px 13px!important;
  box-shadow:0 2px 7px rgba(29,62,114,.035)!important;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease!important;
}
#aidoc-root .aidoc-field-input:hover,#aidoc-root .aidoc-patient-form select:hover{border-color:#9db9e9!important;}
#aidoc-root .aidoc-field-input:focus,#aidoc-root .aidoc-patient-form select:focus{border-color:var(--aidoc-teal)!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--aidoc-teal) 13%,transparent)!important;}
#aidoc-root .aidoc-form-actions{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:10px!important;margin-top:20px!important;}
#aidoc-root .aidoc-form-actions .aidoc-action-primary{min-height:48px!important;border-radius:13px!important;box-shadow:0 8px 18px color-mix(in srgb,var(--aidoc-teal) 24%,transparent)!important;}
#aidoc-root .aidoc-calendar{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;background:transparent!important;padding:2px!important;}
#aidoc-root .aidoc-calendar-day,#aidoc-root .aidoc-choice-btn{min-height:50px!important;border:1.5px solid #d9e4f4!important;border-radius:13px!important;background:#fff!important;color:#1c3357!important;box-shadow:0 4px 12px rgba(31,67,122,.05)!important;font-weight:700!important;}
#aidoc-root .aidoc-calendar-day:hover:not(:disabled),#aidoc-root .aidoc-calendar-day:focus-visible:not(:disabled),#aidoc-root .aidoc-choice-btn:hover:not(:disabled),#aidoc-root .aidoc-choice-btn:focus-visible:not(:disabled){background:var(--aidoc-teal)!important;color:#fff!important;border-color:var(--aidoc-teal)!important;transform:translateY(-1px)!important;box-shadow:0 8px 18px color-mix(in srgb,var(--aidoc-teal) 25%,transparent)!important;}
#aidoc-root .aidoc-calendar-day:disabled{background:#f2f5f9!important;color:#a5afbf!important;border-color:#e7ecf3!important;box-shadow:none!important;text-decoration:line-through!important;}
#aidoc-root .aidoc-slot-choices{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;}
#aidoc-root .aidoc-slot-choices .aidoc-choice-btn{width:100%!important;justify-content:center!important;text-align:center!important;}
#aidoc-root .aidoc-review-row{display:grid!important;grid-template-columns:28px 96px minmax(0,1fr)!important;gap:8px!important;padding:10px 0!important;border-bottom:1px solid #edf2f8!important;align-items:start!important;}
#aidoc-root .aidoc-review-row:last-of-type{border-bottom:0!important;}
#aidoc-root .aidoc-review-icon{display:grid!important;place-items:center!important;width:26px!important;height:26px!important;border-radius:8px!important;background:#eef4ff!important;}
#aidoc-root .aidoc-review-label{min-width:0!important;color:#6b7c96!important;font-size:12px!important;padding-top:4px!important;}
#aidoc-root .aidoc-review-value{color:#192f50!important;font-weight:700!important;font-size:12.5px!important;padding-top:4px!important;}
#aidoc-root .aidoc-review-submit{min-height:50px!important;border-radius:14px!important;margin-top:14px!important;box-shadow:0 10px 22px color-mix(in srgb,var(--aidoc-teal) 25%,transparent)!important;}
#aidoc-root .aidoc-status-badge{display:inline-flex!important;align-items:center!important;border-radius:999px!important;padding:7px 11px!important;margin:0 0 12px!important;font-size:11px!important;font-weight:800!important;}
#aidoc-root .aidoc-status-pending{background:#fff5d8!important;color:#885a00!important;border:1px solid #f1d888!important;}
#aidoc-root .aidoc-card-success{background:linear-gradient(155deg,#f8fffb,#effbf5)!important;border-color:#bfe9d2!important;}
#aidoc-root .aidoc-card-payment{background:linear-gradient(155deg,#fffdf6,#fff8e5)!important;border-color:#f0d995!important;}
#aidoc-root .aidoc-payment-amount{font-size:26px!important;font-weight:850!important;color:#123363!important;letter-spacing:-.03em!important;margin:0 0 12px!important;}
#aidoc-root .aidoc-payment-warning{background:#fff2c8!important;border:1px solid #efd47d!important;border-radius:12px!important;padding:11px!important;color:#6b4a00!important;font-style:normal!important;}
@media(max-width:380px){#aidoc-root .aidoc-progress-text{font-size:9px!important}#aidoc-root .aidoc-review-row{grid-template-columns:26px 82px minmax(0,1fr)!important}#aidoc-root .aidoc-form-actions{grid-template-columns:1fr!important}}

#aidoc-launcher{
  position:fixed;bottom:20px;
  width:60px;height:60px;border-radius:50%;
  background:var(--aidoc-teal);color:#fff;border:none;cursor:pointer;
  box-shadow:0 6px 20px rgba(0,0,0,.25);
  display:flex;align-items:center;justify-content:center;
  font-size:26px;z-index:99999;transition:transform .2s ease;
}
#aidoc-launcher:hover{transform:scale(1.06);}
#aidoc-launcher:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:3px;}

#aidoc-chat{
  position:fixed;bottom:92px;
  width:340px;max-width:92vw;height:520px;max-height:78vh;
  background:var(--aidoc-cream);border-radius:16px;
  box-shadow:0 12px 40px rgba(0,0,0,.22);
  display:none;flex-direction:column;overflow:hidden;
  z-index:99999;border:1px solid var(--aidoc-line);
}
#aidoc-chat.open{display:flex;}

/* right (default) */
.aidoc-pos-right #aidoc-launcher{right:20px;}
.aidoc-pos-right #aidoc-chat{right:20px;}
/* left */
.aidoc-pos-left #aidoc-launcher{left:20px;}
.aidoc-pos-left #aidoc-chat{left:20px;}

/* Header: subtle gradient derived from the configured primary color — no
   hardcoded hue, no excessive animation. */
#aidoc-head{
  background:linear-gradient(135deg, var(--aidoc-teal), var(--aidoc-teal-dark));
  color:#fff;padding:14px 16px;
  display:flex;align-items:center;gap:10px;flex-shrink:0;
}
#aidoc-head .avatar{
  width:34px;height:34px;border-radius:50%;background:#fff;color:var(--aidoc-teal);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0;
}
#aidoc-head .titles{line-height:1.25;flex:1;min-width:0;}
#aidoc-head .titles .t1{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#aidoc-head .titles .t2{font-size:11.5px;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#aidoc-head button{
  background:none;border:none;color:#fff;font-size:18px;cursor:pointer;flex-shrink:0;
  min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;border-radius:8px;
}
#aidoc-head button:hover{background:rgba(255,255,255,.12);}
#aidoc-head button:focus-visible{outline:2px solid #fff;outline-offset:-2px;}

/* ---------------------------------------------------------------------
 * Chat menu (v1.2.2 Phase 2) — hamburger-triggered dropdown anchored
 * under the header, positioned so it never overlaps the close button
 * and never covers the message log's own content (positioned absolute
 * so opening it doesn't reflow the chat, high z-index so no theme CSS
 * can render over it). #aidoc-submenu-download (Download Chat) shares
 * the exact same panel styling as the main #aidoc-menu — it is a second,
 * independently toggled level of the same control, never both open at
 * once (enforced in widget.js). Every menu item keeps the header
 * button's 44px touch target.
 * ------------------------------------------------------------------- */
#aidoc-menu,
#aidoc-submenu-download{
  position:absolute;top:60px;right:12px;z-index:100000;
  background:#fff;border:1px solid var(--aidoc-line);border-radius:12px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
  display:flex;flex-direction:column;overflow:hidden;
  min-width:220px;max-width:calc(100% - 24px);
}
#aidoc-menu[hidden],
#aidoc-submenu-download[hidden]{display:none !important;}
#aidoc-menu button,
#aidoc-submenu-download button{
  display:flex;align-items:center;gap:8px;
  min-height:44px;padding:10px 14px;
  background:#fff;border:none;border-bottom:1px solid var(--aidoc-line);
  color:var(--aidoc-ink);font-size:13px;text-align:left;cursor:pointer;
}
#aidoc-menu button:last-child,
#aidoc-submenu-download button:last-child{border-bottom:none;}
#aidoc-menu button:hover,
#aidoc-submenu-download button:hover{background:var(--aidoc-teal-tint);}
#aidoc-menu button:focus-visible,
#aidoc-submenu-download button:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:-2px;}
#aidoc-submenu-back{color:var(--aidoc-muted);font-size:12.5px;}

.aidoc-pos-left #aidoc-menu,
.aidoc-pos-left #aidoc-submenu-download{right:auto;left:12px;}

.aidoc-menu-status{
  align-self:center;max-width:88%;
  background:var(--aidoc-teal-tint);border:1px solid var(--aidoc-teal);color:var(--aidoc-teal-dark);
  padding:6px 14px;border-radius:14px;font-size:12px;font-weight:600;
}

/* Messages area is the only main scrollable region in the widget. */
#aidoc-msgs{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px;display:flex;flex-direction:column;gap:10px;}
.aidoc-bubble{max-width:82%;padding:9px 12px;border-radius:14px;font-size:13.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word;}
.aidoc-bubble.user{background:var(--aidoc-teal);color:#fff;border-bottom-right-radius:4px;align-self:flex-end;}

/* ---------------------------------------------------------------------
 * Bot message cards — compact medical-assistant card presentation.
 * All content inside is inserted via textContent/createElement only (see
 * widget.js); this stylesheet controls appearance only, never content.
 * ------------------------------------------------------------------- */
.aidoc-card{
  align-self:flex-start;
  background:#fff;
  border:1px solid var(--aidoc-line);
  border-left:3px solid var(--aidoc-teal);
  border-radius:16px;
  box-shadow:0 2px 10px rgba(0,0,0,.06);
  padding:12px 14px;
  max-width:88%;
  color:var(--aidoc-ink);
}
.aidoc-bubble.bot:not(.aidoc-card){
  background:#fff;color:var(--aidoc-ink);border:1px solid var(--aidoc-line);border-bottom-left-radius:4px;align-self:flex-start;
}
.aidoc-card-general{border-left-color:var(--aidoc-line);}
/* v1.2.3 — plain read-only rendering of a past booking-step transcript entry inside Chat History's "Open Conversation" view. */
.aidoc-card-log{border-left-color:var(--aidoc-line);background:#fafbfa;}
.aidoc-card-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.aidoc-card-icon{font-size:16px;line-height:1;flex-shrink:0;}
.aidoc-card-title{font-weight:700;font-size:13.5px;color:var(--aidoc-ink);}
.aidoc-card-body{display:flex;flex-direction:column;gap:6px;max-width:44ch;}
.aidoc-card-para{margin:0;font-size:13.5px;line-height:1.55;}
.aidoc-card-bullet{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;line-height:1.55;}
.aidoc-bullet-dot{width:6px;height:6px;border-radius:50%;background:var(--aidoc-teal);margin-top:7px;flex-shrink:0;}
.aidoc-card-actions{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;}
.aidoc-card-action-btn{
  display:inline-flex;align-items:center;justify-content:center;min-height:40px;
  padding:6px 14px;border-radius:18px;border:1px solid var(--aidoc-teal);
  color:var(--aidoc-teal);background:#fff;text-decoration:none;font-size:12.5px;font-weight:600;
  transition:background .15s ease,color .15s ease;
}
.aidoc-card-action-btn:hover{background:var(--aidoc-teal);color:#fff;}
.aidoc-card-action-btn:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:2px;}

/* Semantic type accents — a subtle color cue, never the only signal (every
   card also has a distinct icon + title, so information is never conveyed
   by color alone). */
.aidoc-card-fees, .aidoc-card-timings, .aidoc-card-location,
.aidoc-card-services, .aidoc-card-booking, .aidoc-card-summary{
  border-left-color:var(--aidoc-teal);
  background:var(--aidoc-teal-tint);
}
.aidoc-card-booking_status{
  border-left-color:#c98a1f;
  background:color-mix(in srgb, #f5a623 8%, #fff);
}
.aidoc-card-booking_status .aidoc-card-title{color:#8a5c10;}
.aidoc-card-appointment_management{
  border-left-color:#6b5b95;
  background:color-mix(in srgb, #6b5b95 6%, #fff);
}
.aidoc-card-appointment_management .aidoc-card-title{color:#4a3d70;}
.aidoc-card-medical_safety{
  border-left-color:#5b7fb5;
  background:color-mix(in srgb, #5b7fb5 6%, #fff);
}
.aidoc-card-success{
  border-left-color:#1f9d55;
  background:color-mix(in srgb, #1f9d55 7%, #fff);
}
.aidoc-card-payment{background:#f6fff0;border-left-color:#67b83f;}
.aidoc-card-payment .aidoc-card-title{color:#225d27;}
.aidoc-payment-warning{margin-top:8px;padding:9px 10px;border-radius:9px;background:#fff4d6;color:#664900;font-weight:600;}
.aidoc-card-success .aidoc-card-title{color:#166a3a;}
.aidoc-card-error{
  border-left-color:#d33;
  background:#fdf4f4;
}
.aidoc-card-error .aidoc-card-title{color:#a3231f;}

/* Emergency: visually prominent but calm — soft red, accessible contrast,
   NO flashing/blinking animation of any kind. */
.aidoc-card-emergency{
  border:1px solid #f3b8b8;
  border-left:4px solid #c62828;
  background:#fdecec;
  box-shadow:0 2px 10px rgba(198,40,40,.12);
}
.aidoc-card-emergency .aidoc-card-title{color:#8f1f1f;font-weight:800;}
.aidoc-card-emergency .aidoc-card-para,
.aidoc-card-emergency .aidoc-card-bullet{color:#7a1f1c;}

.aidoc-step-label{
  font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  color:var(--aidoc-teal-dark);margin-bottom:2px;
}

.aidoc-review-row{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;line-height:1.5;padding:3px 0;}
.aidoc-review-icon{font-size:14px;flex-shrink:0;margin-top:1px;}
.aidoc-review-label{font-weight:600;color:var(--aidoc-muted);min-width:96px;flex-shrink:0;}
.aidoc-review-value{color:var(--aidoc-ink);word-break:break-word;}
/* Phone numbers must never break mid-digit-group inside the review card. */
.aidoc-review-value.aidoc-review-nowrap{white-space:nowrap;word-break:normal;}

/* ---------------------------------------------------------------------
 * Native booking engine (v1.2.0) — appointment-type cards, calendar,
 * time-slot buttons. Same single-tracked-container discipline as
 * setActionRow()/setStepError(): setChoiceRow() in widget.js always
 * clears any previous choice row before rendering a new one.
 * ------------------------------------------------------------------- */
.aidoc-choice-row{
  display:flex;flex-wrap:wrap;gap:6px;align-self:flex-start;max-width:92%;margin:2px 0;
}
.aidoc-choice-btn{
  min-height:44px;min-width:44px;
  background:#fff;border:1px solid var(--aidoc-teal);color:var(--aidoc-teal);
  font-size:12.5px;padding:8px 14px;border-radius:14px;cursor:pointer;text-align:center;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease;
}
/* v1.2.3 Phase 4 — hover/selected states are scoped under #aidoc-root and
   explicitly recolor every child element (span/icon/checkmark), not just
   the button itself, so no site theme rule targeting a bare `button` or
   `span` selector can leave child text the wrong (invisible-on-primary)
   color. :not(:disabled) already excludes reserved/closed buttons, which
   never get the hover treatment. */
#aidoc-root .aidoc-choice-btn:hover:not(:disabled),
#aidoc-root .aidoc-choice-btn:hover:not(:disabled) *{
  background:var(--aidoc-teal);color:#fff;
}
#aidoc-root .aidoc-choice-btn:hover:not(:disabled){border-color:var(--aidoc-teal);}
.aidoc-choice-btn:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:2px;}
.aidoc-choice-btn:disabled,.aidoc-choice-disabled{
  opacity:1;cursor:not-allowed;background:#eef0ef;color:#8a938f;border-color:#dfe4e2;
}
/* Selected/pressed — solid primary-color fill persists after a tap (no
   reliance on :hover, which mobile browsers can leave "stuck" or never
   trigger at all), with a visible checkmark and aria-pressed semantics
   set in JS. */
#aidoc-root .aidoc-choice-btn.aidoc-choice-selected,
#aidoc-root .aidoc-choice-btn.aidoc-choice-selected *{
  background:var(--aidoc-teal);color:#fff;
}
#aidoc-root .aidoc-choice-btn.aidoc-choice-selected{border-color:var(--aidoc-teal-dark);font-weight:600;}
.aidoc-choice-check{margin-left:6px;font-weight:700;}
/* Reserved — visually distinct from a plain closed/disabled option so a
   visitor understands WHY it's unavailable, without exposing who holds it. */
.aidoc-choice-reserved{background:#f5f0e8;color:#8a7a5c;border-color:#e6dcc8;}
.aidoc-choice-sublabel{font-size:10.5px;opacity:.8;}
.aidoc-choice-reserved .aidoc-choice-sublabel{opacity:1;font-weight:600;color:#8a6d1f;}

.aidoc-type-choices .aidoc-choice-btn{flex:1 1 100%;text-align:left;}
.aidoc-slot-choices .aidoc-choice-btn{flex:0 1 auto;}

.aidoc-calendar{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(84px, 1fr));
  gap:6px;align-self:flex-start;width:100%;max-width:92%;margin:2px 0 4px;
}
.aidoc-calendar-day{
  min-height:44px;min-width:44px;
  background:#fff;border:1px solid var(--aidoc-line);color:var(--aidoc-ink);
  font-size:11.5px;line-height:1.3;padding:6px 4px;border-radius:10px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease;
}
/* v1.2.3 Phase 4 — same rule as .aidoc-choice-btn: a real primary-color
   background with white text on hover, applied to every child node too,
   scoped under #aidoc-root against theme overrides. */
#aidoc-root .aidoc-calendar-day:hover:not(:disabled),
#aidoc-root .aidoc-calendar-day:hover:not(:disabled) *{
  background:var(--aidoc-teal);color:#fff;
}
#aidoc-root .aidoc-calendar-day:hover:not(:disabled){border-color:var(--aidoc-teal);}
.aidoc-calendar-day:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:2px;}
.aidoc-calendar-day-disabled,.aidoc-calendar-day:disabled{
  opacity:1;cursor:not-allowed;background:#eef0ef;color:#8a938f;border-color:#dfe4e2;
}
#aidoc-root .aidoc-calendar-day.aidoc-calendar-day-selected,
#aidoc-root .aidoc-calendar-day.aidoc-calendar-day-selected *{
  background:var(--aidoc-teal);color:#fff;
}
#aidoc-root .aidoc-calendar-day.aidoc-calendar-day-selected{border-color:var(--aidoc-teal-dark);font-weight:600;}

/* =========================================================================
 * v2.0.1 P1 — calendar/slot theme-collision fix. Live staging evidence
 * showed every date rendering as solid blue (the theme's own link/button
 * color winning over the states above) with buttons overlapping/stair-
 * stepping instead of sitting in a stable grid. The rules above already
 * scope hover/selected under #aidoc-root, but without !important a theme
 * rule of equal-or-higher specificity (or one targeting a bare `button`
 * selector) can still win. This block re-asserts every state — available,
 * hover/focus, selected, unavailable — with !important, and neutralizes
 * theme layout properties (position/inset/transform/float/margin/
 * box-shadow/pseudo-elements) that were the actual cause of the overlap.
 * ========================================================================= */
#aidoc-root .aidoc-calendar,
#aidoc-root .aidoc-choice-row{
  display:grid !important;
  grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
  gap:6px !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
  margin:2px 0 4px !important;
  position:static !important;
}
@media (max-width:340px){
  #aidoc-root .aidoc-calendar,
  #aidoc-root .aidoc-choice-row{
    grid-template-columns:1fr !important; /* only this narrow — never destabilize the normal 2-column layout */
  }
}
#aidoc-root .aidoc-calendar-day,
#aidoc-root .aidoc-choice-btn{
  box-sizing:border-box !important;
  position:static !important;
  inset:auto !important;
  top:auto !important;left:auto !important;right:auto !important;bottom:auto !important;
  transform:none !important;
  float:none !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  min-height:44px !important;
  margin:0 !important;
  box-shadow:none !important;
}
#aidoc-root .aidoc-calendar-day::before,
#aidoc-root .aidoc-calendar-day::after,
#aidoc-root .aidoc-choice-btn::before,
#aidoc-root .aidoc-choice-btn::after{
  content:none !important; /* strip any theme-injected pseudo-element (icons/underlines) that caused stair-stepping */
}
/* Available/default */
#aidoc-root .aidoc-calendar-day:not(:disabled),
#aidoc-root .aidoc-choice-btn:not(:disabled):not(.aidoc-choice-selected){
  background-color:#fff !important;
  border:1px solid var(--aidoc-teal) !important;
  color:var(--aidoc-teal) !important;
}
/* Hover/focus */
#aidoc-root .aidoc-calendar-day:hover:not(:disabled),
#aidoc-root .aidoc-calendar-day:hover:not(:disabled) *,
#aidoc-root .aidoc-calendar-day:focus-visible:not(:disabled),
#aidoc-root .aidoc-calendar-day:focus-visible:not(:disabled) *,
#aidoc-root .aidoc-choice-btn:hover:not(:disabled),
#aidoc-root .aidoc-choice-btn:hover:not(:disabled) *,
#aidoc-root .aidoc-choice-btn:focus-visible:not(:disabled),
#aidoc-root .aidoc-choice-btn:focus-visible:not(:disabled) *{
  background-color:var(--aidoc-teal) !important;
  color:#fff !important;
  border-color:var(--aidoc-teal) !important;
}
/* Selected */
#aidoc-root .aidoc-calendar-day.aidoc-calendar-day-selected,
#aidoc-root .aidoc-calendar-day.aidoc-calendar-day-selected *,
#aidoc-root .aidoc-choice-btn.aidoc-choice-selected,
#aidoc-root .aidoc-choice-btn.aidoc-choice-selected *{
  background-color:var(--aidoc-teal) !important;
  color:#fff !important;
  border-color:var(--aidoc-teal-dark) !important;
  font-weight:600 !important;
}
/* Unavailable/reserved — subdued, genuinely inert */
#aidoc-root .aidoc-calendar-day:disabled,
#aidoc-root .aidoc-calendar-day.aidoc-calendar-day-disabled,
#aidoc-root .aidoc-choice-btn:disabled,
#aidoc-root .aidoc-choice-btn.aidoc-choice-disabled{
  background-color:#eef0ef !important;
  color:#8a938f !important;
  border-color:#dfe4e2 !important;
  cursor:not-allowed !important;
  pointer-events:none !important;
}
#aidoc-root .aidoc-choice-btn.aidoc-choice-reserved{
  background-color:#f5f0e8 !important;
  color:#8a7a5c !important;
  border-color:#e6dcc8 !important;
}

/* Inline validation warning — replaces itself (never stacks) within a
   booking step; role="alert" is set in JS. */
.aidoc-inline-warning{
  align-self:flex-start;max-width:88%;
  background:#fdf4f4;border:1px solid #f3c9c9;color:#a3231f;
  padding:8px 12px;border-radius:12px;font-size:12.5px;line-height:1.45;
}

/* Quick replies: hidden entirely (not just visually) during an active
   booking — the [hidden] rule below is required because the
   .aidoc-quick-row{display:flex} declaration would otherwise beat the
   browser's default UA style for the hidden attribute. */
.aidoc-quick-row{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 10px;flex-shrink:0;}
.aidoc-quick-row[hidden]{display:none !important;}
/* Belt-and-braces ID-scoped rule (spec-required exact selector) — same
   effect as the class rule above, kept so this survives even if a future
   change ever drops the class from the markup. */
#aidoc-root #aidoc-quick[hidden]{display:none !important;}
.aidoc-quick-btn{
  display:inline-flex;align-items:center;gap:6px;min-height:40px;
  background:#fff;border:1px solid var(--aidoc-teal);color:var(--aidoc-teal);
  font-size:12px;padding:6px 12px;border-radius:20px;cursor:pointer;
  transition:background .15s ease,color .15s ease,transform .1s ease;
}
.aidoc-quick-btn:hover{background:var(--aidoc-teal);color:#fff;transform:translateY(-1px);}
.aidoc-quick-btn:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:2px;}
.aidoc-quick-icon{font-size:13px;line-height:1;}

#aidoc-input-row{
  display:flex;gap:8px;padding:10px;padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px));
  border-top:1px solid var(--aidoc-line);background:#fff;flex-shrink:0;
}
#aidoc-input{flex:1;border:1px solid var(--aidoc-line);border-radius:20px;padding:11px 14px;font-size:13.5px;outline:none;min-width:0;min-height:44px;}
#aidoc-input:focus{border-color:var(--aidoc-teal);}
#aidoc-input:disabled{background:#f2f2f2;opacity:.7;}
#aidoc-send{background:var(--aidoc-teal-dark);color:#fff;border:none;width:44px;height:44px;border-radius:50%;cursor:pointer;font-size:15px;flex-shrink:0;}
#aidoc-send:disabled{opacity:.6;cursor:default;}
#aidoc-send:focus-visible,#aidoc-input:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:1px;}

/* Typing / status indicator — animated three-dot pulse, respects
   prefers-reduced-motion (see the query at the bottom of this file). */
#aidoc-typing{
  display:none;align-items:center;gap:7px;padding:0 14px 8px;
  font-size:12px;color:#888;
}
.aidoc-typing-dots{display:inline-flex;gap:3px;}
.aidoc-typing-dots span{
  width:5px;height:5px;border-radius:50%;background:#aab3b1;
  animation:aidoc-typing-bounce 1.2s infinite ease-in-out;
}
.aidoc-typing-dots span:nth-child(2){animation-delay:.15s;}
.aidoc-typing-dots span:nth-child(3){animation-delay:.3s;}
@keyframes aidoc-typing-bounce{
  0%,80%,100%{transform:translateY(0);opacity:.5;}
  40%{transform:translateY(-3px);opacity:1;}
}

/* Booking-flow action controls: Submit Request / Cancel / Start Again /
   Retry. Only ever one active row at a time — enforced in JS (setActionRow). */
.aidoc-action-row{display:flex;flex-wrap:wrap;gap:6px;align-self:flex-start;max-width:92%;}
.aidoc-action-btn{
  min-height:44px;
  background:#fff;border:1px solid var(--aidoc-teal);color:var(--aidoc-teal);
  font-size:12.5px;padding:7px 14px;border-radius:20px;cursor:pointer;
  transition:background .15s ease,color .15s ease;
}
.aidoc-action-btn:hover{background:var(--aidoc-teal);color:#fff;}
.aidoc-action-btn:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:1px;}
.aidoc-action-btn:disabled{opacity:.55;cursor:default;}
.aidoc-action-primary{background:var(--aidoc-teal);color:#fff;}
.aidoc-action-primary:hover{background:var(--aidoc-teal-dark);}

/* ---------------------------------------------------------------------
 * WhatsApp CTA — strongly scoped to survive global theme link-color CSS
 * (the v1.1.1 live audit found a site theme overriding this to ~1.9:1
 * contrast). #aidoc-root + class + !important beats essentially any generic
 * `a`/`a:link`/`a:visited` theme rule, !important or not, on specificity.
 * ------------------------------------------------------------------- */
#aidoc-root .aidoc-whatsapp-cta,
#aidoc-root .aidoc-whatsapp-cta:link,
#aidoc-root .aidoc-whatsapp-cta:visited{
  display:inline-flex;align-items:center;justify-content:center;min-height:44px;
  color:#fff !important;
  background:#25D366;
  padding:8px 16px;
  border-radius:22px;
  font-size:13px;
  text-decoration:none;
  font-weight:600;
  border:1px solid transparent;
}
#aidoc-root .aidoc-whatsapp-cta:hover,
#aidoc-root .aidoc-whatsapp-cta:active{
  color:#fff !important;
  background:#1ebe5b;
}
#aidoc-root .aidoc-whatsapp-cta:focus-visible{
  color:#fff !important;
  outline:2px solid #0a7d3d;
  outline-offset:2px;
}
#aidoc-root .aidoc-whatsapp-cta.aidoc-disabled{
  color:#fff !important;
  background:#8fd9ae;
  cursor:default;
  pointer-events:none;
}

/* ---------------------------------------------------------------------
 * Patient Details form (v1.2.3 Phase 2) — one accessible form card
 * replacing the four separate name/age/email/phone chat steps.
 * ------------------------------------------------------------------- */
.aidoc-visually-hidden{
  position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.aidoc-patient-form fieldset{border:none;padding:0;margin:0;}
.aidoc-form-required-note{
  font-size:11px;color:var(--aidoc-muted);margin:0 0 10px;
}
.aidoc-field-row{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;}
.aidoc-field-label{font-size:12.5px;font-weight:600;color:var(--aidoc-ink);}
.aidoc-field-required{color:#c62828;}
.aidoc-field-optional{font-weight:400;color:var(--aidoc-muted);font-size:11.5px;}
.aidoc-field-input{
  min-height:44px;border:1px solid var(--aidoc-line);border-radius:10px;
  padding:9px 12px;font-size:13.5px;font-family:inherit;color:var(--aidoc-ink);background:#fff;
  width:100%;box-sizing:border-box;
}
.aidoc-field-input:focus{outline:none;border-color:var(--aidoc-teal);box-shadow:0 0 0 2px var(--aidoc-teal-tint);}
.aidoc-field-input.aidoc-field-invalid{border-color:#d33;background:#fdf6f6;}
.aidoc-field-input.aidoc-field-invalid:focus{box-shadow:0 0 0 2px #f5d5d5;}
.aidoc-field-error{
  font-size:11.5px;color:#a3231f;line-height:1.4;
}
.aidoc-field-error[hidden]{display:none;}

/* =========================================================================
 * v2.0.1 P1 — real WordPress-theme form containment fix. Live staging
 * evidence showed the Patient Details form breaking out of the widget on
 * the actual site theme: inputs wider than their row, fields overlapping
 * or cropped, the whole card wider than the message viewport, controls
 * hidden behind the composer. The scoped rules above (#aidoc-root
 * .aidoc-field-input etc.) were not enough where the theme's own rules
 * carry higher specificity or target bare element selectors (form,
 * input, select, button) directly. Every rule below is scoped under
 * #aidoc-root and backed by !important specifically to win that fight —
 * this is a functional containment fix, not a v3 visual redesign; nothing
 * here changes color, spacing rhythm, or the existing look.
 * ========================================================================= */
#aidoc-root .aidoc-patient-form,
#aidoc-root .aidoc-patient-form fieldset,
#aidoc-root .aidoc-field-row,
#aidoc-root .aidoc-card-body{
  box-sizing:border-box !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin-left:0 !important;
  margin-right:0 !important;
  float:none !important;
  transform:none !important;
  position:static !important;
}
#aidoc-root .aidoc-patient-form legend{
  padding:0 !important;
  width:100% !important;
  max-width:100% !important;
  float:none !important;
}
#aidoc-root .aidoc-field-label{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  float:none !important;
  position:static !important;
}
#aidoc-root .aidoc-field-input,
#aidoc-root .aidoc-patient-form input[type="text"],
#aidoc-root .aidoc-patient-form input[type="number"],
#aidoc-root .aidoc-patient-form input[type="email"],
#aidoc-root .aidoc-patient-form input[type="tel"],
#aidoc-root .aidoc-patient-form select{
  box-sizing:border-box !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:9px 12px !important;
  float:none !important;
  transform:none !important;
  position:static !important;
  -webkit-appearance:none !important;
  appearance:none !important;
  display:block !important;
  height:auto !important;
  min-height:44px !important;
  font-size:13.5px !important;
  line-height:1.3 !important;
  border:1px solid var(--aidoc-line) !important;
  border-radius:10px !important;
  background-color:#fff !important;
  color:var(--aidoc-ink) !important;
}
#aidoc-root .aidoc-patient-form select{
  /* re-add a minimal caret since native appearance was reset above */
  background-image:linear-gradient(45deg, transparent 50%, var(--aidoc-muted) 50%), linear-gradient(135deg, var(--aidoc-muted) 50%, transparent 50%) !important;
  background-position:calc(100% - 18px) center, calc(100% - 13px) center !important;
  background-size:5px 5px, 5px 5px !important;
  background-repeat:no-repeat !important;
  padding-right:32px !important;
}
#aidoc-root .aidoc-patient-form option{
  color:var(--aidoc-ink) !important;
  background:#fff !important;
}
/* Buttons are deliberately NOT forced to width:100% here — a theme
   forcing every <button> to block/full-width is exactly the kind of
   collision this section guards against, but the action row's own
   flex-wrap layout (below) is what actually determines button width; a
   theme-supplied width would fight that layout on wider screens where
   Submit/Cancel/Edit sit side by side. Position/float/transform are
   still neutralized since those cause real breakage regardless of width. */
#aidoc-root .aidoc-patient-form button,
#aidoc-root .aidoc-action-row .aidoc-action-btn{
  box-sizing:border-box !important;
  float:none !important;
  transform:none !important;
  position:static !important;
  max-width:100% !important;
}
#aidoc-root .aidoc-action-row{
  display:flex !important;
  flex-wrap:wrap !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}
/* The composer (input row) must never be covered by an overflowing form
   card above it — the whole message column scrolls, the composer itself
   stays pinned and fully reachable. */
#aidoc-root #aidoc-msgs{
  overflow-x:hidden !important;
  overflow-y:auto !important;
  max-width:100% !important;
}
#aidoc-root #aidoc-input-row{
  position:relative !important;
  z-index:2 !important;
  width:100% !important;
  box-sizing:border-box !important;
}
/* v2.0.1 item-5 audit correction — the main chat composer (#aidoc-input /
 * #aidoc-send) sits OUTSIDE .aidoc-patient-form and .aidoc-calendar, so
 * neither of the two hardening blocks above ever covered it. Confirmed via
 * an adversarial-theme test harness applying `input, select, button {
 * width:500px !important; transform:rotate(2deg) scale(1.3) !important;
 * position:relative !important; float:left !important; ... }` globally —
 * the composer broke exactly like the form/calendar used to, because
 * nothing here was fighting back. Same rationale, same !important
 * treatment, applied to the one visible surface that was missed.
 */
#aidoc-root #aidoc-input{
  box-sizing:border-box !important;
  width:auto !important;
  max-width:100% !important;
  min-width:0 !important;
  flex:1 1 auto !important;
  margin:0 !important;
  float:none !important;
  transform:none !important;
  position:static !important;
  -webkit-appearance:none !important;
  appearance:none !important;
  line-height:1.3 !important;
}
#aidoc-root #aidoc-send{
  box-sizing:border-box !important;
  width:44px !important;
  height:44px !important;
  max-width:44px !important;
  min-width:44px !important;
  margin:0 !important;
  float:none !important;
  transform:none !important;
  position:static !important;
  flex:0 0 auto !important;
  line-height:1 !important;
}
/* Generic safety net, deliberately scoped LAST in the cascade and under
 * #aidoc-root only: catches any current or future control this file
 * doesn't otherwise name explicitly. Layout-breaking properties only —
 * never color/border/radius/font here, so it can never fight the
 * intentional, named styling above or elsewhere in this file. */
#aidoc-root input,
#aidoc-root select,
#aidoc-root textarea,
#aidoc-root button{
  box-sizing:border-box !important;
  max-width:100% !important;
  /* min-width:0 is load-bearing, not decorative: a flex item's default
     min-width is `auto`, which refuses to shrink below the item's
     intrinsic/specified content size — so a hostile `width:500px` still
     wins the LAYOUT even with max-width:100% present, because flexbox
     never gets the chance to apply that cap. Confirmed via the
     adversarial-theme harness: #aidoc-close rendered at its full 500px
     hostile width, overflowing the header, until this line was added. */
  min-width:0 !important;
  float:none !important;
  transform:none !important;
}
#aidoc-root input::before,#aidoc-root input::after,
#aidoc-root select::before,#aidoc-root select::after,
#aidoc-root textarea::before,#aidoc-root textarea::after,
#aidoc-root button::before,#aidoc-root button::after{
  content:none !important;
}
/* v2.0.1 item-5 audit correction, continued — the generic min-width:0
 * above stops a hostile width from winning the FINAL flex-shrink
 * calculation, but the header's icon buttons (☰ / ✕) still need an
 * EXPLICIT width, not just a cap, because max-width:100% resolves
 * against the flex container's full content-box width, not "remaining
 * space after siblings" — a hostile width could still consume most of
 * that 100% before flex-shrink gets a chance to redistribute it fairly
 * among #aidoc-head's other children (avatar, titles). Pinning these to
 * their real, intentional 44x44 touch target — the same treatment
 * #aidoc-send already had — removes the ambiguity entirely. */
#aidoc-root #aidoc-head button{
  width:44px !important;
  height:44px !important;
  max-width:44px !important;
  min-width:44px !important;
  min-height:44px !important;
  margin:0 !important;
  flex:0 0 auto !important;
  position:static !important;
}
.aidoc-form-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}
.aidoc-review-pending-note{color:var(--aidoc-muted);font-size:12px;font-style:italic;margin-top:4px !important;}
.aidoc-review-submit{
  display:flex !important;align-items:center !important;justify-content:center !important;
  width:100% !important;max-width:100% !important;min-height:48px !important;
  margin:12px 0 2px !important;padding:10px 16px !important;
  border:1px solid var(--aidoc-teal-dark) !important;border-radius:12px !important;
  background:var(--aidoc-teal) !important;color:#fff !important;
  font:inherit !important;font-weight:700 !important;line-height:1.25 !important;
  text-align:center !important;cursor:pointer !important;float:none !important;
  position:static !important;transform:none !important;box-sizing:border-box !important;
  box-shadow:0 4px 12px color-mix(in srgb, var(--aidoc-teal) 25%, transparent) !important;
}
.aidoc-review-submit:hover{background:var(--aidoc-teal-dark) !important;color:#fff !important;}
.aidoc-review-submit:focus-visible{outline:3px solid color-mix(in srgb, var(--aidoc-teal) 35%, #fff) !important;outline-offset:2px !important;}
.aidoc-review-submit:disabled{opacity:.68 !important;cursor:wait !important;}

/* ---------------------------------------------------------------------
 * Confirmation cards (v1.2.2) — New Chat / Delete / Clear All. Reuses the
 * base .aidoc-card look with a distinct accent so an accessible
 * role="alertdialog" confirmation is visually unmistakable from a normal
 * assistant reply, without resorting to a native confirm() dialog.
 * ------------------------------------------------------------------- */
.aidoc-card-confirm{
  border-left-color:#c98a1f;
  background:color-mix(in srgb, #f5a623 8%, #fff);
}

/* ---------------------------------------------------------------------
 * Chat History screen (v1.2.2 Phase 4) — replaces the message log's
 * content in place (#aidoc-msgs stays the single scroll container; the
 * input row is disabled while this screen is shown, per widget.js).
 * ------------------------------------------------------------------- */
.aidoc-history-header{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid var(--aidoc-line);
}
.aidoc-history-title{font-weight:700;font-size:14.5px;color:var(--aidoc-ink);}
.aidoc-history-back{
  background:none;border:none;color:var(--aidoc-teal-dark);font-size:12.5px;font-weight:600;
  cursor:pointer;min-height:44px;padding:6px 8px;
}
.aidoc-history-back:hover{text-decoration:underline;}
.aidoc-history-back:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:1px;}
.aidoc-history-empty{color:var(--aidoc-muted);font-size:13px;text-align:center;padding:24px 8px;}
.aidoc-history-readonly-note{
  color:var(--aidoc-muted);font-size:11.5px;font-style:italic;margin:0 0 4px;
}

.aidoc-history-item{
  background:#fff;border:1px solid var(--aidoc-line);border-radius:12px;
  padding:10px 12px;margin-bottom:8px;display:flex;flex-direction:column;gap:4px;
}
.aidoc-history-item-current{border-color:var(--aidoc-teal);background:var(--aidoc-teal-tint);}
.aidoc-history-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.aidoc-history-item-date{font-size:12px;font-weight:600;color:var(--aidoc-ink);}
.aidoc-history-badge{
  background:var(--aidoc-teal);color:#fff;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:10px;flex-shrink:0;
}
.aidoc-history-item-preview{font-size:12.5px;color:var(--aidoc-ink);line-height:1.4;}
.aidoc-history-item-count{font-size:11px;color:var(--aidoc-muted);}
.aidoc-history-item-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}
.aidoc-history-item-actions button{
  min-height:44px;background:#fff;border:1px solid var(--aidoc-teal);color:var(--aidoc-teal);
  font-size:11.5px;padding:6px 10px;border-radius:14px;cursor:pointer;
}
.aidoc-history-item-actions button:hover{background:var(--aidoc-teal);color:#fff;}
.aidoc-history-item-actions button:focus-visible{outline:2px solid var(--aidoc-teal-dark);outline-offset:1px;}
.aidoc-history-item-actions button.aidoc-history-delete{border-color:#d33;color:#a3231f;}
.aidoc-history-item-actions button.aidoc-history-delete:hover{background:#d33;color:#fff;}

.aidoc-history-clear-all{
  display:block;width:100%;min-height:44px;margin-top:6px;
  background:#fdf4f4;border:1px solid #f3c9c9;color:#a3231f;
  font-size:12.5px;font-weight:600;padding:8px 14px;border-radius:14px;cursor:pointer;
}
.aidoc-history-clear-all:hover{background:#fbe4e4;}
.aidoc-history-clear-all:focus-visible{outline:2px solid #a3231f;outline-offset:1px;}

/* Honeypot — off-screen and unreachable by keyboard/AT for real visitors */
.aidoc-hp{
  position:absolute !important;left:-9999px !important;top:-9999px;
  width:1px;height:1px;opacity:0;overflow:hidden;
}

@media (max-width:480px){
  #aidoc-chat{
    bottom:calc(84px + env(safe-area-inset-bottom, 0px));
    width:92vw;
  }
  .aidoc-pos-right #aidoc-chat{right:12px;}
  .aidoc-pos-left #aidoc-chat{left:12px;}
  #aidoc-launcher{bottom:calc(16px + env(safe-area-inset-bottom, 0px));}
  .aidoc-pos-right #aidoc-launcher{right:14px;}
  .aidoc-pos-left #aidoc-launcher{left:14px;}

  /* Keep the header compact and single-line at narrow widths instead of
     wrapping the subtitle to 2-3 crowded lines. */
  #aidoc-head{padding:10px 12px;gap:8px;}
  #aidoc-head .avatar{width:30px;height:30px;font-size:13px;}
  #aidoc-head .titles .t1{font-size:13.5px;}
  #aidoc-head .titles .t2{font-size:11px;}
  .aidoc-card{max-width:92%;}
  .aidoc-card-body{max-width:100%;}
  .aidoc-calendar{grid-template-columns:repeat(auto-fill, minmax(72px, 1fr));}
  .aidoc-choice-row,.aidoc-calendar{max-width:100%;}
}

@media (max-width:340px){
  #aidoc-head .titles .t2{font-size:10px;}
  .aidoc-bubble{font-size:13px;}
}

/* Respect the visitor's OS-level motion preference — disable non-essential
   animation/transition everywhere in the widget. */
@media (prefers-reduced-motion: reduce){
  .aidoc-typing-dots span{animation:none;opacity:.85;}
  #aidoc-launcher{transition:none;}
  #aidoc-launcher:hover{transform:none;}
  .aidoc-quick-btn{transition:none;}
  .aidoc-quick-btn:hover{transform:none;}
  .aidoc-action-btn,.aidoc-card-action-btn{transition:none;}
  .aidoc-choice-btn,.aidoc-calendar-day{transition:none;}
}

/* =====================================================================
 * AI Doctor v3.0.0 — Premium UI/UX, Phase 1
 * Public widget shell, welcome, chat cards, quick actions and composer.
 * This layer intentionally leaves booking and API behavior untouched.
 * =================================================================== */
#aidoc-root{
  --aidoc-blue:#1468f3;
  --aidoc-blue-dark:#0754d8;
  --aidoc-surface:#f7faff;
  --aidoc-text:#10213d;
  --aidoc-subtle:#64748b;
  --aidoc-green:#18c778;
  --aidoc-premium-line:#dce6f5;
  --aidoc-teal-dark:color-mix(in srgb, var(--aidoc-teal) 80%, #043fa8);
  --aidoc-teal-tint:color-mix(in srgb, var(--aidoc-teal) 7%, #fff);
  --aidoc-cream:var(--aidoc-surface);
  --aidoc-ink:var(--aidoc-text);
  --aidoc-line:var(--aidoc-premium-line);
  --aidoc-muted:var(--aidoc-subtle);
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif !important;
}

#aidoc-root *,#aidoc-root *::before,#aidoc-root *::after{box-sizing:border-box;}

#aidoc-root #aidoc-launcher{
  width:68px !important;height:68px !important;padding:0 !important;
  border:0 !important;border-radius:50% !important;background:transparent !important;
  overflow:visible !important;isolation:isolate;
  box-shadow:0 14px 34px color-mix(in srgb, var(--aidoc-teal) 34%, transparent) !important;
}
#aidoc-root #aidoc-launcher img{
  display:block !important;width:100% !important;height:100% !important;
  border-radius:50% !important;object-fit:contain !important;
}
#aidoc-root #aidoc-launcher:hover{transform:translateY(-3px) scale(1.025);}
.aidoc-launcher-pulse{
  position:absolute;right:2px;bottom:3px;width:15px;height:15px;border-radius:50%;
  border:3px solid #fff;background:var(--aidoc-green);z-index:2;
  box-shadow:0 0 0 0 rgba(24,199,120,.4);animation:aidoc-status-pulse 2.2s infinite;
}
@keyframes aidoc-status-pulse{70%{box-shadow:0 0 0 8px rgba(24,199,120,0)}100%{box-shadow:0 0 0 0 rgba(24,199,120,0)}}

#aidoc-root #aidoc-chat{
  width:430px;max-width:calc(100vw - 28px);height:680px;max-height:min(82vh,760px);
  bottom:104px;background:var(--aidoc-surface);border:1px solid rgba(164,184,215,.55);
  border-radius:24px;box-shadow:0 28px 80px rgba(15,35,70,.24),0 6px 22px rgba(15,35,70,.1);
}
#aidoc-root #aidoc-head{
  min-height:88px;padding:16px 18px;gap:12px;
  background:linear-gradient(135deg,var(--aidoc-teal) 0%,var(--aidoc-teal-dark) 100%);
  border-bottom:1px solid rgba(255,255,255,.16);
}
#aidoc-root #aidoc-head .avatar{
  width:52px;height:52px;border:3px solid rgba(255,255,255,.8);
  box-shadow:0 4px 14px rgba(4,44,126,.25);font-size:22px;color:var(--aidoc-teal-dark);
}
#aidoc-root #aidoc-head .titles .t1{font-size:17px;font-weight:750;letter-spacing:-.02em;}
#aidoc-root #aidoc-head .titles .t2{display:flex;align-items:center;gap:7px;margin-top:4px;font-size:12.5px;opacity:.96;}
.aidoc-online-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#4ee58d;box-shadow:0 0 0 3px rgba(78,229,141,.16);}
#aidoc-root #aidoc-head button{border-radius:12px !important;font-size:21px !important;}
#aidoc-root #aidoc-head button:hover{background:rgba(255,255,255,.16) !important;}

#aidoc-root #aidoc-msgs{padding:18px;gap:13px;background:linear-gradient(180deg,#f9fbff 0%,#f5f8fd 100%);scrollbar-width:thin;scrollbar-color:#c9d7ea transparent;}
#aidoc-root .aidoc-bubble{font-size:14px;line-height:1.55;}
#aidoc-root .aidoc-bubble.user{
  max-width:82%;padding:11px 15px;background:linear-gradient(135deg,var(--aidoc-teal),var(--aidoc-teal-dark));
  border-radius:18px 18px 5px 18px;color:#fff;box-shadow:0 6px 16px color-mix(in srgb,var(--aidoc-teal) 18%,transparent);
}
#aidoc-root .aidoc-card{
  max-width:90%;padding:14px 15px;border:1px solid var(--aidoc-premium-line);
  border-left:4px solid var(--aidoc-teal);border-radius:18px;
  box-shadow:0 7px 22px rgba(20,48,91,.075);background:#fff;color:var(--aidoc-text);
}
#aidoc-root .aidoc-card-title{font-size:14px;color:var(--aidoc-text);}
#aidoc-root .aidoc-card-para,#aidoc-root .aidoc-card-bullet{font-size:14px;}

.aidoc-premium-welcome{
  flex:0 0 auto;background:#fff;border:1px solid var(--aidoc-premium-line);border-radius:22px;
  padding:22px 20px 0;text-align:center;box-shadow:0 10px 30px rgba(19,52,101,.09);overflow:hidden;
}
.aidoc-welcome-art{
  width:90px;height:90px;margin:0 auto 12px;border-radius:50%;padding:13px;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 35% 25%,#fff 0%,#e7f0ff 56%,#d7e6ff 100%);
}
.aidoc-welcome-art img{display:block;width:100%;height:100%;object-fit:contain;border-radius:50%;}
.aidoc-premium-welcome h2{margin:0;color:var(--aidoc-text);font-size:24px;line-height:1.2;letter-spacing:-.035em;}
.aidoc-premium-welcome p{max-width:31ch;margin:10px auto 18px;color:#50627e;font-size:15px;line-height:1.55;}
.aidoc-welcome-trust{
  margin:0 -20px;padding:13px 16px;border-top:1px solid var(--aidoc-premium-line);
  display:flex;align-items:center;justify-content:center;gap:9px;background:#fbfdff;
  color:#53647f;font-size:11.5px;line-height:1.35;
}
.aidoc-trust-shield{
  width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  border:2px solid var(--aidoc-green);border-radius:8px;color:#079652;font-size:12px;font-weight:800;
}
.aidoc-welcome-help-title{font-size:19px;font-weight:750;color:var(--aidoc-text);letter-spacing:-.025em;margin:4px 2px -2px;}

#aidoc-root .aidoc-quick-row{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px 18px 12px;background:var(--aidoc-surface);
}
#aidoc-root .aidoc-quick-btn{
  width:100%;min-width:0;min-height:54px;padding:9px 11px;border:1px solid var(--aidoc-premium-line);
  border-radius:15px;background:#fff;color:var(--aidoc-text);box-shadow:0 4px 12px rgba(20,48,91,.045);
  justify-content:flex-start;text-align:left;font-size:12.5px;font-weight:650;
}
#aidoc-root .aidoc-quick-btn:hover{
  color:var(--aidoc-teal-dark);background:var(--aidoc-teal-tint);border-color:color-mix(in srgb,var(--aidoc-teal) 40%,#fff);transform:translateY(-2px);
}
#aidoc-root .aidoc-quick-icon{
  width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 auto;background:var(--aidoc-teal-tint);font-size:16px;
}

#aidoc-root #aidoc-typing{padding:2px 18px 8px;color:#718096;font-size:11.5px;}
#aidoc-root #aidoc-input-row{
  margin:0;padding:11px 14px 9px;border-top:1px solid var(--aidoc-premium-line);background:#fff;gap:9px;
}
#aidoc-root #aidoc-input{
  min-height:50px;border:1px solid #ccd9eb;border-radius:16px;padding:12px 16px;background:#fbfdff;
  color:var(--aidoc-text);font-size:14px;box-shadow:inset 0 1px 2px rgba(20,48,91,.025);
}
#aidoc-root #aidoc-input::placeholder{color:#8492a8;opacity:1;}
#aidoc-root #aidoc-input:focus{border-color:var(--aidoc-teal);box-shadow:0 0 0 3px color-mix(in srgb,var(--aidoc-teal) 13%,transparent);}
#aidoc-root #aidoc-send{
  width:50px !important;height:50px !important;min-width:50px !important;border-radius:50% !important;
  background:linear-gradient(135deg,var(--aidoc-teal),var(--aidoc-teal-dark)) !important;
  box-shadow:0 7px 16px color-mix(in srgb,var(--aidoc-teal) 27%,transparent) !important;font-size:18px !important;
}
#aidoc-root #aidoc-send:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.04);}
#aidoc-disclaimer{
  flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 12px 10px;
  background:#fff;color:#8592a7;font-size:10.5px;line-height:1.2;
}

#aidoc-root #aidoc-menu,#aidoc-root #aidoc-submenu-download{
  top:76px;right:14px;border-color:var(--aidoc-premium-line);border-radius:16px;
  box-shadow:0 18px 42px rgba(14,35,70,.2);min-width:245px;
}
#aidoc-root #aidoc-menu button,#aidoc-root #aidoc-submenu-download button{min-height:48px;padding:11px 15px;font-size:13px;color:var(--aidoc-text);}

@media (max-width:480px){
  #aidoc-root #aidoc-chat{
    width:calc(100vw - 20px);max-width:none;height:min(760px,calc(100dvh - 96px));max-height:calc(100dvh - 96px);
    right:10px;left:auto;bottom:calc(82px + env(safe-area-inset-bottom,0px));border-radius:22px;
  }
  #aidoc-root #aidoc-head{min-height:76px;padding:11px 13px;gap:9px;}
  #aidoc-root #aidoc-head .avatar{width:44px;height:44px;font-size:18px;}
  #aidoc-root #aidoc-head .titles .t1{font-size:15px;}
  #aidoc-root #aidoc-head .titles .t2{font-size:11.5px;}
  #aidoc-root #aidoc-msgs{padding:13px;}
  .aidoc-premium-welcome{padding:18px 15px 0;}
  .aidoc-premium-welcome h2{font-size:21px;}
  .aidoc-premium-welcome p{font-size:14px;margin-bottom:15px;}
  .aidoc-welcome-trust{margin:0 -15px;padding:11px 12px;font-size:10.5px;}
  #aidoc-root .aidoc-quick-row{padding:9px 13px 10px;}
  #aidoc-root .aidoc-quick-btn{min-height:50px;padding:7px 8px;font-size:11.5px;}
  #aidoc-root .aidoc-quick-icon{width:29px;height:29px;font-size:14px;}
}

@media (max-width:350px){
  #aidoc-root .aidoc-quick-row{grid-template-columns:1fr;}
  #aidoc-root #aidoc-head .titles .t2{display:none;}
}

@media (prefers-reduced-motion:reduce){
  .aidoc-launcher-pulse{animation:none;}
  #aidoc-root #aidoc-launcher:hover,#aidoc-root .aidoc-quick-btn:hover,#aidoc-root #aidoc-send:hover{transform:none;}
}

/* =====================================================================
 * AI Doctor v3.1.1 — scroll-container reliability hotfix
 * A hostile theme can override the message area's flex sizing while
 * leaving overflow:auto intact. In that state there is no constrained
 * viewport to scroll. These rules create an explicit flex scrollport and
 * keep all controls outside it pinned and reachable.
 * =================================================================== */
#aidoc-root #aidoc-chat,
#aidoc-root #aidoc-chat.open{
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  min-height:0 !important;
  contain:layout paint !important;
}
#aidoc-root #aidoc-chat:not(.open){display:none !important;}
#aidoc-root #aidoc-head,
#aidoc-root #aidoc-typing,
#aidoc-root #aidoc-quick,
#aidoc-root #aidoc-input-row,
#aidoc-root #aidoc-disclaimer{
  flex:0 0 auto !important;
}
#aidoc-root #aidoc-msgs{
  display:flex !important;
  flex:1 1 0 !important;
  width:100% !important;
  height:0 !important;
  min-height:0 !important;
  max-height:none !important;
  overflow-x:hidden !important;
  overflow-y:scroll !important;
  overscroll-behavior:contain !important;
  -webkit-overflow-scrolling:touch !important;
  touch-action:pan-y !important;
  scroll-behavior:smooth;
  scrollbar-gutter:stable;
  overflow-anchor:auto;
}
#aidoc-root #aidoc-msgs > *{flex:0 0 auto !important;}
#aidoc-root #aidoc-input-row{
  position:relative !important;
  bottom:auto !important;
  z-index:5 !important;
  box-shadow:0 -8px 22px rgba(20,48,91,.045) !important;
}
@media(max-width:480px){
  #aidoc-root #aidoc-chat{
    height:calc(100dvh - 96px) !important;
    max-height:calc(100dvh - 96px) !important;
  }
  #aidoc-root #aidoc-msgs{scrollbar-gutter:auto;}
}

/* =====================================================================
 * AI Doctor v3.4.0 — Appearance Control Panel (Phase 5)
 * Server-approved size/density classes; mobile remains viewport-safe.
 * =================================================================== */
#aidoc-root.aidoc-size-compact #aidoc-chat{width:350px;height:560px;}
#aidoc-root.aidoc-size-standard #aidoc-chat{width:390px;height:640px;}
#aidoc-root.aidoc-size-large #aidoc-chat{width:440px;height:720px;}
#aidoc-root.aidoc-density-compact #aidoc-msgs{padding:12px;gap:9px;}
#aidoc-root.aidoc-density-compact .aidoc-card{padding:11px 12px;border-radius:15px;}
#aidoc-root.aidoc-density-compact .aidoc-premium-welcome{padding-top:16px;border-radius:18px;}
#aidoc-root.aidoc-density-compact .aidoc-welcome-art{width:72px;height:72px;margin-bottom:8px;}
#aidoc-root.aidoc-density-compact .aidoc-premium-welcome h2{font-size:20px;}
#aidoc-root.aidoc-density-compact .aidoc-premium-welcome p{margin:7px auto 12px;font-size:13px;}
#aidoc-root.aidoc-density-compact .aidoc-quick-row{padding-top:7px;padding-bottom:8px;}
#aidoc-root.aidoc-density-compact .aidoc-quick-btn{min-height:46px;}
#aidoc-root .aidoc-launcher-emoji{display:grid;place-items:center;width:100%;height:100%;font-size:28px;line-height:1;}
#aidoc-root #aidoc-launcher img{width:100%;height:100%;object-fit:contain;}

@media(max-width:480px){
  #aidoc-root.aidoc-size-compact #aidoc-chat,
  #aidoc-root.aidoc-size-standard #aidoc-chat,
  #aidoc-root.aidoc-size-large #aidoc-chat{
    width:calc(100vw - 20px);height:calc(100dvh - 96px);max-height:calc(100dvh - 96px);
  }
}

/* =====================================================================
 * AI Doctor v3.3.0 — premium conversation management (Phase 4)
 * Chat menu, history, exports and system feedback states.
 * =================================================================== */
#aidoc-root #aidoc-menu,
#aidoc-root #aidoc-submenu-download{
  width:min(286px,calc(100vw - 40px));padding:8px !important;
  border:1px solid rgba(193,208,231,.9) !important;border-radius:20px !important;
  background:rgba(255,255,255,.97) !important;
  box-shadow:0 24px 65px rgba(15,35,70,.25),0 5px 16px rgba(15,35,70,.08) !important;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
}
#aidoc-root #aidoc-menu:before,
#aidoc-root #aidoc-submenu-download:before{
  content:"Conversation";display:block;padding:8px 10px 9px;color:#71819a;
  font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
}
#aidoc-root #aidoc-submenu-download:before{content:"Export conversation";}
#aidoc-root #aidoc-menu button,
#aidoc-root #aidoc-submenu-download button{
  width:100%;min-height:48px !important;margin:2px 0;padding:10px 12px !important;
  border:0 !important;border-radius:12px !important;background:transparent !important;
  color:#172b4d !important;font-size:13px !important;font-weight:680 !important;text-align:left;
  transition:background .16s ease,transform .16s ease,color .16s ease !important;
}
#aidoc-root #aidoc-menu button:hover,
#aidoc-root #aidoc-submenu-download button:hover{
  background:#edf4ff !important;color:var(--aidoc-teal-dark) !important;transform:translateX(2px);
}
#aidoc-root #aidoc-menu-closemenu{color:#8b3540 !important;}
#aidoc-root .aidoc-menu-status{
  margin:7px 4px 3px;padding:10px 12px;border:1px solid #cfe0f5;border-radius:12px;
  background:#f4f8fe;color:#445b7b;font-size:11.5px;line-height:1.45;
}

#aidoc-root .aidoc-history-header{
  position:sticky;top:-18px;z-index:3;margin:-18px -18px 12px;padding:16px 17px 13px;
  border-bottom:1px solid var(--aidoc-premium-line);background:rgba(249,251,255,.96);backdrop-filter:blur(10px);
}
#aidoc-root .aidoc-history-title{font-size:17px;font-weight:800;letter-spacing:-.025em;color:#142746;}
#aidoc-root .aidoc-history-back{
  min-height:36px;padding:7px 10px;border:1px solid #cbd9ec;border-radius:10px;background:#fff;
  color:var(--aidoc-teal-dark);font-weight:700;text-decoration:none !important;
}
#aidoc-root .aidoc-history-empty{
  margin:28px 4px;padding:38px 20px;border:1px dashed #c4d3e8;border-radius:18px;
  background:linear-gradient(180deg,#fff,#f7faff);color:#71819a;font-size:13px;
}
#aidoc-root .aidoc-history-empty:before{content:"◷";display:block;margin-bottom:10px;color:var(--aidoc-teal);font-size:30px;}
#aidoc-root .aidoc-history-readonly-note{
  padding:11px 13px;border:1px solid #cfe0f5;border-radius:13px;background:#edf5ff;color:#405b80;
}
#aidoc-root .aidoc-history-item{
  gap:9px;margin-bottom:10px;padding:14px;border:1px solid #d7e2f1;border-radius:16px;
  background:#fff;box-shadow:0 5px 16px rgba(20,48,91,.055);transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
#aidoc-root .aidoc-history-item:hover{border-color:#aac7f2;box-shadow:0 9px 24px rgba(20,48,91,.09);transform:translateY(-1px);}
#aidoc-root .aidoc-history-item-current{border-color:color-mix(in srgb,var(--aidoc-teal) 45%,#fff);background:linear-gradient(135deg,#fff,#eef5ff);}
#aidoc-root .aidoc-history-badge{padding:4px 8px;border-radius:999px;background:#e7f8ef;color:#087744;font-size:9px;font-weight:850;letter-spacing:.06em;text-transform:uppercase;}
#aidoc-root .aidoc-history-item-preview{color:#3e526f;font-size:12.5px;}
#aidoc-root .aidoc-history-item-count{color:#8794a8;font-size:10.5px;}
#aidoc-root .aidoc-history-item-actions button{
  min-height:36px;padding:7px 10px;border:1px solid #cbd9ec;border-radius:10px;background:#fff;
  color:#31537f;font-size:11px;font-weight:750;
}
#aidoc-root .aidoc-history-clear-all{min-height:42px;border-radius:12px;background:#fff7f7;font-weight:750;}

#aidoc-root .aidoc-inline-warning,
#aidoc-root .aidoc-card-error{
  border-color:#f0c7c3 !important;border-left-color:#d84a43 !important;background:linear-gradient(135deg,#fff,#fff4f3) !important;
  color:#762c28 !important;box-shadow:0 7px 20px rgba(168,42,35,.07) !important;
}
#aidoc-root #aidoc-typing{
  min-height:24px;align-items:center;gap:8px;padding:4px 18px 8px !important;background:#fff;color:#61738e;
}
#aidoc-root .aidoc-typing-dots span{width:6px;height:6px;background:var(--aidoc-teal);}

@media(max-width:480px){
  #aidoc-root #aidoc-menu,#aidoc-root #aidoc-submenu-download{top:67px;right:9px;width:min(280px,calc(100vw - 38px));}
  #aidoc-root .aidoc-history-header{top:-13px;margin:-13px -13px 10px;padding:13px;}
}

/* v3.5.0 advanced appearance variables */
#aidoc-root{bottom:var(--aidoc-bottom,24px)!important;z-index:var(--aidoc-z,9999)!important;font-family:var(--aidoc-font,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif)!important;color:var(--aidoc-text,#10213d)}
#aidoc-root.aidoc-pos-right{right:var(--aidoc-side,24px)!important}#aidoc-root.aidoc-pos-left{left:var(--aidoc-side,24px)!important}
#aidoc-chat{max-width:var(--aidoc-max-width,420px)!important;border-radius:var(--aidoc-radius,20px)!important;font-size:var(--aidoc-body-size,16px)!important;background:var(--aidoc-bg,#f7faff)!important}
#aidoc-head{background:linear-gradient(135deg,var(--aidoc-teal,#1468f3),var(--aidoc-primary-dark,#0754d8))!important}
.aidoc-header-solid #aidoc-head{background:var(--aidoc-teal,#1468f3)!important}.aidoc-header-minimal #aidoc-head{background:#fff!important;color:var(--aidoc-text,#10213d)!important;border-bottom:1px solid #e3e8f1}.aidoc-header-minimal #aidoc-head button{color:var(--aidoc-text,#10213d)!important}
#aidoc-head .t1{font-weight:var(--aidoc-heading-weight,700)!important}#aidoc-head .avatar{overflow:hidden}#aidoc-head .avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.aidoc-online-dot{background:var(--aidoc-accent,#18c778)!important}
.aidoc-shadow-none #aidoc-chat{box-shadow:none!important}.aidoc-shadow-soft #aidoc-chat{box-shadow:0 10px 30px rgba(16,33,61,.12)!important}.aidoc-shadow-medium #aidoc-chat{box-shadow:0 14px 38px rgba(16,33,61,.18)!important}.aidoc-shadow-strong #aidoc-chat{box-shadow:0 18px 50px rgba(16,33,61,.26)!important}
.aidoc-no-animations *, .aidoc-no-animations *:before,.aidoc-no-animations *:after{animation:none!important;transition:none!important}
@media(max-width:600px){#aidoc-root{--aidoc-side:12px!important;--aidoc-bottom:12px!important}#aidoc-chat{max-width:calc(100vw - 24px)!important}}
