.dab-placeholder {
	border: 1px solid #dcdcde;
	background: #fff;
	color: #1d2327;
	max-width: 720px;
	padding: 24px;
}

.dab-placeholder__title {
	margin: 0 0 8px;
	font-size: 1.25rem;
}

.dab-placeholder__message {
	margin: 0;
	color: #50575e;
}

.dab-doctor-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 20px;
}

.dab-doctor-card,
.dab-doctor-profile {
	border: 1px solid #dcdcde;
	background: #fff;
	color: #1d2327;
}

.dab-doctor-card {
	overflow: hidden;
}

.dab-doctor-card__media,
.dab-doctor-profile__photo {
	background: #f0f0f1;
}

.dab-doctor-card__image,
.dab-doctor-profile__image {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
}

.dab-doctor-card__image {
	aspect-ratio: 4 / 3;
}

.dab-doctor-card__image--empty,
.dab-doctor-profile__image--empty {
	display: grid;
	place-items: center;
	min-height: 180px;
	color: #646970;
}

.dab-doctor-card__body,
.dab-doctor-profile__content {
	padding: 20px;
}

.dab-doctor-card__name,
.dab-doctor-profile__heading h1,
.dab-doctor-profile__section h2 {
	margin-top: 0;
}

.dab-doctor-card__title,
.dab-doctor-profile__title {
	color: #50575e;
}

.dab-doctor-meta {
	line-height: 1.6;
}

.dab-doctor-badge {
	display: inline-block;
	padding: 4px 8px;
	background: #e7f5ec;
	color: #146c2e;
	font-size: .875rem;
	font-weight: 600;
}

.dab-doctor-card__link {
	display: inline-block;
	margin-top: 10px;
	font-weight: 600;
}

.dab-doctor-profile {
	max-width: 920px;
	margin: 0 auto;
}

.dab-doctor-profile__header {
	display: grid;
	grid-template-columns: minmax(180px, 280px) 1fr;
	gap: 24px;
	align-items: center;
	padding: 24px;
	border-bottom: 1px solid #dcdcde;
}

.dab-doctor-profile__section {
	padding: 20px 0;
	border-bottom: 1px solid #eee;
}

.dab-doctor-profile__section:last-child {
	border-bottom: 0;
}

.dab-doctor-profile__details {
	display: grid;
	grid-template-columns: minmax(140px, 200px) 1fr;
	gap: 8px 16px;
	margin: 0;
}

.dab-doctor-profile__details dt {
	font-weight: 600;
}

.dab-doctor-profile__details dd {
	margin: 0;
}

@media (max-width: 640px) {
	.dab-doctor-profile__header {
		grid-template-columns: 1fr;
	}
}

/* Phase 4 booking surface: all selectors stay under .dab-booking. */
.dab-booking { --dab-primary:#673DE6; --dab-ink:#20213a; --dab-muted:#69718a; --dab-line:#e7e5f2; --dab-soft:#f8f7fc; max-width:1100px; margin:32px auto; padding:28px; color:var(--dab-ink); font-family:Poppins,sans-serif; background:#fff; border:1px solid var(--dab-line); border-radius:20px; box-shadow:0 18px 50px rgba(51,40,105,.08); }
.dab-booking * { box-sizing:border-box; }
.dab-booking__eyebrow { color:var(--dab-primary); font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.dab-booking__intro h2 { margin:7px 0 6px; font-size:28px; letter-spacing:-.03em; }
.dab-booking__intro p,.dab-booking__hint { color:var(--dab-muted); font-size:14px; line-height:1.6; }
.dab-booking__progress { display:grid; grid-template-columns:repeat(8,1fr); gap:4px; margin:28px 0; padding-bottom:18px; border-bottom:1px solid var(--dab-line); }
.dab-booking__progress-step { border:0; background:transparent; color:#5f6075; cursor:pointer; font:inherit; font-size:14px; font-weight:600; line-height:1.25; }
.dab-booking__progress-step span { display:grid; place-items:center; width:29px; height:29px; margin:0 auto 6px; border:1px solid #d8d5e7; border-radius:50%; font-size:15px; font-weight:700; }
.dab-booking__progress-step strong { display:block; color:#5f6075; font-weight:600; }
.dab-booking__progress-step:hover:not(:disabled),.dab-booking__progress-step.is-done strong { color:var(--dab-primary); background:transparent; }
.dab-booking__progress-step.is-active span,.dab-booking__progress-step.is-done span { border-color:var(--dab-primary); background:var(--dab-primary); color:#fff; }
.dab-booking__progress-step.is-active strong { color:var(--dab-primary); font-weight:700; }
.dab-booking__body { display:grid; grid-template-columns:minmax(0,1fr) 260px; gap:28px; }
.dab-booking__step { display:none; min-height:300px; }.dab-booking__step.is-active { display:block; }.dab-booking__step h3 { margin:0 0 6px; font-size:21px; }
.dab-booking__cards,.dab-booking__choices,.dab-booking__slots { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin-top:22px; }
.dab-booking__card,.dab-booking__choice,.dab-booking__slot { min-height:76px; padding:15px; text-align:left; border:1px solid var(--dab-line); border-radius:12px; background:#fff; color:var(--dab-ink); cursor:pointer; font:inherit; transition:transform .15s ease,border-color .15s ease,background .15s ease; }
.dab-booking__card:hover,.dab-booking__choice:hover,.dab-booking__slot:hover,.dab-booking__card.is-selected,.dab-booking__choice.is-selected,.dab-booking__slot.is-selected { border-color:var(--dab-primary); background:#f5f2ff; color:var(--dab-ink); transform:translateY(-1px); }
.dab-booking__card:hover span,.dab-booking__card:hover small,.dab-booking__card.is-selected span,.dab-booking__card.is-selected small { color:#51566b; }
.dab-booking__card:focus-visible,.dab-booking__choice:focus-visible,.dab-booking__slot:focus-visible,.dab-booking__progress-step:focus-visible,.dab-booking__button:focus-visible { outline:3px solid rgba(103,61,230,.35); outline-offset:3px; }
.dab-booking__card.is-selected,.dab-booking__choice.is-selected,.dab-booking__slot.is-selected { box-shadow:inset 0 0 0 2px var(--dab-primary); }
.dab-booking__card strong,.dab-booking__card span,.dab-booking__card small { display:block; }.dab-booking__card span,.dab-booking__card small { margin-top:5px; color:var(--dab-muted); font-size:13px; }
.dab-booking__choice,.dab-booking__slot { text-align:center; font-size:15px; }.dab-booking__field { display:block; margin:18px 0; }.dab-booking__field span { display:block; margin-bottom:7px; font-size:14px; font-weight:600; }.dab-booking__field input,.dab-booking__field select,.dab-booking__field textarea { width:100%; padding:11px 12px; border:1px solid var(--dab-line); border-radius:8px; background:#fff; color:var(--dab-ink); font:inherit; font-size:14px; }
.dab-booking__form-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:0 16px; }.dab-booking__field--wide { grid-column:1/-1; }
.dab-booking__summary { align-self:start; padding:18px; border-radius:14px; background:var(--dab-soft); }.dab-booking__summary dl,.dab-booking__success dl { margin:14px 0 0; }.dab-booking__summary dt,.dab-booking__success dt { margin-top:10px; color:var(--dab-muted); font-size:13px; text-transform:uppercase; }.dab-booking__summary dd,.dab-booking__success dd { margin:2px 0 0; font-size:14px; font-weight:600; }
.dab-booking__actions { display:flex; justify-content:space-between; gap:12px; margin-top:24px; }.dab-booking__button { min-width:130px; padding:12px 20px; border:0; border-radius:8px; background:var(--dab-primary); color:#fff; cursor:pointer; font:600 13px Poppins,sans-serif; }.dab-booking__button--back { background:#f0eef8; color:var(--dab-ink); }.dab-booking__button:disabled { opacity:.45; cursor:not-allowed; }
.dab-booking__notice { min-height:20px; margin:12px 0; color:#42715e; font-size:14px; }.dab-booking__notice.is-error { color:#b42318; }.dab-booking__empty,.dab-booking__loading { padding:24px; color:var(--dab-muted); border:1px dashed var(--dab-line); border-radius:10px; font-size:14px; }.dab-booking__success { padding:22px; border-radius:14px; background:#f1faf5; }.dab-booking__success-mark { display:grid; place-items:center; width:42px; height:42px; border-radius:50%; background:#2e9b68; color:#fff; font-weight:700; }.dab-booking__success h3 { margin:15px 0 5px; }.dab-booking__review-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-top:22px; }.dab-booking__review-grid div { padding:14px; border:1px solid var(--dab-line); border-radius:10px; }.dab-booking__review-grid span,.dab-booking__review-grid strong,.dab-booking__review-grid small { display:block; }.dab-booking__review-grid span,.dab-booking__review-grid small { color:var(--dab-muted); font-size:13px; }.dab-booking__review-grid strong { margin-top:4px; font-size:14px; }
.dab-booking__button:disabled,.dab-booking__card:disabled,.dab-booking__choice:disabled,.dab-booking__slot:disabled { opacity:.5; cursor:not-allowed; transform:none; }.dab-booking__error { padding:18px; border:1px solid #f2c5c0; border-radius:10px; color:#8f2118; background:#fff7f6; }.dab-booking__error button { border:0; background:none; color:var(--dab-primary); text-decoration:underline; cursor:pointer; font:inherit; font-weight:700; }
@media (max-width:760px) { .dab-booking { margin:15px; padding:18px; }.dab-booking__progress { overflow:auto; grid-template-columns:repeat(8,86px); }.dab-booking__body { grid-template-columns:1fr; }.dab-booking__summary { order:-1; }.dab-booking__form-grid,.dab-booking__review-grid { grid-template-columns:1fr; }.dab-booking__field--wide { grid-column:auto; } }

.dab-booking__button { font-size:15px; }
.dab-booking__button:hover:not(:disabled) { background:#512bc5; }
.dab-booking__button--back:hover:not(:disabled) { background:#ded9f2; }
.dab-booking__error button:hover { color:#512bc5; }
.dab-booking__card.is-selected::after,.dab-booking__choice.is-selected::after,.dab-booking__slot.is-selected::after { content:'✓'; float:right; color:var(--dab-primary); font-weight:700; }
.dab-booking__date-time { display:grid; grid-template-columns:minmax(180px,.72fr) minmax(0,1.28fr); gap:24px; align-items:start; }
.dab-booking__date-time h4 { margin:18px 0 7px; font-size:15px; }
.dab-booking__button:disabled:hover,.dab-booking__card:disabled:hover,.dab-booking__choice:disabled:hover,.dab-booking__slot:disabled:hover { background:#fff; transform:none; }
.dab-booking__error { font-size:14px; }
@media (max-width:760px) { .dab-booking__date-time { grid-template-columns:1fr; } }

/* Final booking interaction contract: these rules intentionally outrank host-theme button styles. */
.dab-booking .dab-booking__progress-step,
.dab-booking .dab-booking__progress-step strong { font-family:Poppins,sans-serif !important; font-size:15px !important; color:#51566b !important; }
.dab-booking .dab-booking__progress-step { background:transparent !important; border:0 !important; box-shadow:none !important; }
.dab-booking .dab-booking__progress-step:hover:not(:disabled) { background:transparent !important; color:#673DE6 !important; }
.dab-booking .dab-booking__progress-step.is-active strong { color:#20213a !important; font-weight:700 !important; }
.dab-booking .dab-booking__progress-step span { font-size:15px !important; color:#51566b !important; background:#fff !important; }
.dab-booking .dab-booking__progress-step.is-active span,
.dab-booking .dab-booking__progress-step.is-done span { color:#fff !important; background:#673DE6 !important; border-color:#673DE6 !important; }
.dab-booking .dab-booking__card,
.dab-booking .dab-booking__choice,
.dab-booking .dab-booking__slot,
.dab-booking .dab-booking__date { color:#20213a !important; background:#fff !important; border:1px solid #d9d6e8 !important; }
.dab-booking .dab-booking__card strong,
.dab-booking .dab-booking__card span,
.dab-booking .dab-booking__card small,
.dab-booking .dab-booking__choice strong,
.dab-booking .dab-booking__choice span,
.dab-booking .dab-booking__choice small,
.dab-booking .dab-booking__slot strong,
.dab-booking .dab-booking__slot span,
.dab-booking .dab-booking__slot small,
.dab-booking .dab-booking__date strong,
.dab-booking .dab-booking__date span,
.dab-booking .dab-booking__date small { color:inherit !important; }
.dab-booking .dab-booking__card:hover,
.dab-booking .dab-booking__choice:hover,
.dab-booking .dab-booking__slot:hover,
.dab-booking .dab-booking__date:hover:not(:disabled) { color:#20213a !important; background:#f5f2ff !important; border-color:#673DE6 !important; }
.dab-booking .dab-booking__card:hover *,
.dab-booking .dab-booking__choice:hover *,
.dab-booking .dab-booking__slot:hover *,
.dab-booking .dab-booking__date:hover:not(:disabled) * { color:#20213a !important; }
.dab-booking .dab-booking__card.is-selected,
.dab-booking .dab-booking__choice.is-selected,
.dab-booking .dab-booking__slot.is-selected,
.dab-booking .dab-booking__date.is-selected { color:#20213a !important; background:#f0ebff !important; border:2px solid #673DE6 !important; }
.dab-booking .dab-booking__card.is-selected *,
.dab-booking .dab-booking__choice.is-selected *,
.dab-booking .dab-booking__slot.is-selected *,
.dab-booking .dab-booking__date.is-selected * { color:#20213a !important; }
.dab-booking .dab-booking__card:disabled,
.dab-booking .dab-booking__choice:disabled,
.dab-booking .dab-booking__slot:disabled,
.dab-booking .dab-booking__date:disabled { color:#77758a !important; background:#f1f0f5 !important; border-color:#dedce6 !important; opacity:.7 !important; cursor:not-allowed !important; }
.dab-booking .dab-booking__card:focus-visible,
.dab-booking .dab-booking__choice:focus-visible,
.dab-booking .dab-booking__slot:focus-visible,
.dab-booking .dab-booking__date:focus-visible { outline:3px solid rgba(103,61,230,.35) !important; outline-offset:3px !important; }
.dab-booking .dab-booking__date-heading { display:flex; align-items:center; justify-content:space-between; margin:18px 0 10px; font-size:14px; font-weight:600; }
.dab-booking .dab-booking__date-nav { display:flex; gap:6px; }
.dab-booking .dab-booking__date-nav button { width:32px; height:30px; border:1px solid #d9d6e8 !important; border-radius:7px; background:#fff !important; color:#20213a !important; cursor:pointer; font:600 20px/1 Poppins,sans-serif; }
.dab-booking .dab-booking__date-nav button:hover:not(:disabled) { background:#f0ebff !important; color:#20213a !important; border-color:#673DE6 !important; }
.dab-booking .dab-booking__date-nav button:disabled { opacity:.4; cursor:not-allowed; }
.dab-booking .dab-booking__dates { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.dab-booking .dab-booking__date { min-height:70px; padding:10px; text-align:left; border-radius:10px; cursor:pointer; font:inherit; }
.dab-booking .dab-booking__date strong,
.dab-booking .dab-booking__date small { display:block; }
.dab-booking .dab-booking__date small { margin-top:4px; font-size:13px; }
.dab-booking .dab-booking__date.is-selected::after { content:'✓'; float:right; color:#673DE6 !important; font-weight:700; }
@media (max-width:760px) {
	.dab-booking .dab-booking__progress-step,
	.dab-booking .dab-booking__progress-step strong { font-size:14px !important; }
	.dab-booking .dab-booking__dates { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* Compact Monday-first monthly calendar. The API remains the only source of availability. */
.dab-booking .dab-booking__date-heading { min-height:38px; margin-top:18px; }
.dab-booking .dab-booking__date-heading strong { color:#20213a; font-size:15px; }
.dab-booking .dab-booking__weekdays,
.dab-booking .dab-booking__dates { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; width:100%; }
.dab-booking .dab-booking__weekdays { margin-bottom:6px; color:#69718a; font-size:11px; font-weight:700; letter-spacing:.03em; text-align:center; }
.dab-booking .dab-booking__date { width:100%; min-width:0; min-height:58px; padding:7px 3px; text-align:center; border-radius:9px; }
.dab-booking .dab-booking__date strong { font-size:14px; }
.dab-booking .dab-booking__date small { overflow:hidden; margin-top:3px; font-size:10px; line-height:1.15; text-overflow:ellipsis; white-space:nowrap; }
.dab-booking .dab-booking__date--blank { min-height:58px; border:0 !important; background:transparent !important; }
.dab-booking .dab-booking__date.is-selected::after { float:none; margin-left:4px; }
.dab-booking .dab-booking__date-nav { align-items:center; }
.dab-booking .dab-booking__date-nav button:focus-visible,
.dab-booking .dab-booking__button:focus-visible,
.dab-booking .dab-booking__field input:focus-visible,
.dab-booking .dab-booking__field select:focus-visible,
.dab-booking .dab-booking__field textarea:focus-visible { outline:3px solid rgba(103,61,230,.35); outline-offset:3px; }
.dab-booking__success .dab-booking__button { margin-top:22px; }
@media (max-width:520px) {
	.dab-booking .dab-booking__weekdays,
	.dab-booking .dab-booking__dates { gap:3px; }
	.dab-booking .dab-booking__date { min-height:53px; padding:6px 1px; }
	.dab-booking .dab-booking__date small { font-size:9px; }
}