/* Consultation revisions: shared user and admin conversation treatment. */
@keyframes service-search-autofill { from { opacity:.99; } to { opacity:1; } }
#servicesSearch:-webkit-autofill { animation:service-search-autofill .01s; }
.service-picker-label { display:block; margin:12px 0 8px; font-size:12px; font-weight:700; color:#557ba3; }
.service-picker { position:relative; margin-bottom:12px; }
.service-picker summary { cursor:pointer; padding:13px; border:1px solid #b5cfea; border-radius:12px; background:#fff; color:#143d66; font-size:14px; }
.service-picker summary:focus-visible { outline:2px solid #2482d4; outline-offset:2px; }
.service-picker-menu { position:absolute; top:calc(100% + 5px); left:0; right:0; z-index:20; padding:12px; background:#fff; border:1px solid #b5cfea; border-radius:12px; box-shadow:0 8px 24px #123d6626; }
.service-picker-menu .service-picker-label { margin-top:0; }
.service-picker-options { max-height:210px; overflow-y:auto; margin-top:8px; overscroll-behavior:contain; }
.service-picker-options button { display:block; width:100%; text-align:left; padding:10px; border:0; border-radius:7px; background:transparent; color:#143d66; font-size:13px; cursor:pointer; }
.service-picker-options button:hover,.service-picker-options button:focus-visible { background:#e8f2ff; outline:2px solid #a0c6ed; outline-offset:-2px; }
#bookingServiceSearchStatus { margin:6px 0 0; font-size:12px; }
body.dark-mode .service-picker summary,body.dark-mode .service-picker-menu { background:#16304b; color:#edf5ff; }
body.dark-mode .service-picker-options button { color:#edf5ff; }
body.dark-mode .service-picker-options button:hover,body.dark-mode .service-picker-options button:focus-visible { background:#25496c; }
.services-search-panel { width:min(460px, calc(100% - var(--first-package-offset, 24px) - 24px)); max-width:none; margin:28px 0 0 var(--first-package-offset, clamp(24px, 4vw, 64px)); padding:0; }
.services-search-panel label { display:block; margin-bottom:8px; font-weight:700; }
.services-search-panel input,#bookingServiceSearch { width:100%; box-sizing:border-box; border:1px solid #b5cfea; border-radius:12px; padding:12px 14px; background:#fff; color:#143d66; font:inherit; }
.services-search-panel input:focus,#bookingServiceSearch:focus { outline:2px solid #2482d4; outline-offset:2px; }
#servicesSearchStatus { font-size:13px; margin:8px 0; }
body.services-page .service-card[hidden],body.services-page .promo-card[hidden],body.services-page > section.section[hidden] { display:none !important; }
body.dark-mode .services-search-panel input,body.dark-mode #bookingServiceSearch { background:#16304b; color:#edf5ff; }
.home-reviews .reviews { display:flex !important; flex-wrap:nowrap; justify-content:flex-start; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; padding:12px 4px 24px; scrollbar-width:thin; }
.home-reviews .reviews.has-more { mask-image:linear-gradient(to right,#000 0%,#000 87%,transparent 100%); }

/* Keep discount choices readable inside the booking modal at every width. */
.booking-person-fields .booking-discount-manage-link { display:inline-flex; align-items:center; justify-content:center; gap:8px; width:100%; padding:11px 13px; border:1px solid #b9d8f0; border-radius:13px; background:#f3f9ff; color:#0b5f9f; font-size:.84rem; font-weight:800; line-height:1.4; text-align:center; text-decoration:none; }
.booking-person-fields .booking-patient-options { display:grid !important; grid-template-columns:minmax(0,1fr) !important; width:100%; }
.booking-person-fields .booking-patient-choice { display:grid !important; grid-template-columns:auto minmax(0,1fr) auto; width:100% !important; max-width:none !important; min-height:74px; align-items:center !important; }
.booking-person-fields .booking-patient-choice > span:nth-of-type(1) { min-width:0; text-align:left; }
.booking-person-fields { box-sizing:border-box; background:#f8fbff; }
.booking-person-fields legend,
.booking-person-fields > .modal-note { text-align:left; }
.booking-person-fields .booking-discount-manage-link { width:auto; justify-self:start; text-align:left; }
.booking-person-fields .booking-patient-choice { box-sizing:border-box; gap:12px; min-height:70px; padding:14px 16px; }
.booking-person-fields .booking-patient-choice span { text-align:left; }
.booking-person-fields .booking-manual-patient-fields[hidden],
.booking-person-fields .booking-patient-options[hidden],
.booking-person-fields .booking-manual-choice[hidden],
.booking-person-fields .booking-saved-patients-label[hidden] { display:none !important; }
.booking-person-fields .booking-patient-choice strong,
.booking-person-fields .booking-patient-choice small { display:block; overflow-wrap:normal; word-break:normal; }
.booking-person-fields .booking-manual-patient-fields { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); width:100%; }
@media(max-width:700px){.booking-person-fields .booking-patient-choice{grid-template-columns:auto minmax(0,1fr)}.booking-person-fields .booking-patient-choice .discount-status{grid-column:2}.booking-person-fields .booking-manual-patient-fields{grid-template-columns:1fr}}
.review-carousel-footer { justify-content:space-between !important; gap:16px; }
.field-badge { display:inline-block; margin-left:6px; padding:3px 7px; border-radius:6px; background:#e9f2fc; color:#245888; font-size:10px; letter-spacing:.02em; text-transform:none; }
.booking-services-panel,.booking-payment-panel { text-align:left; margin:22px 0; padding:20px; border:1px solid #c6dbef; border-radius:18px; background:#f7faff; }
.booking-services-panel h3 { margin:0 0 8px; }
.booking-services-panel p,.booking-payment-panel p { font-size:13px; line-height:1.65; }
.booking-services-panel select,.booking-payment-panel select { width:100%; padding:13px; border:1px solid #b5cfea; border-radius:12px; color:#143d66; background:white; font:inherit; }
.booking-service-row { display:flex; align-items:center; gap:12px; padding:14px 0; border-bottom:1px solid #dce7f2; font-size:14px; }
.booking-service-row>div { flex:1; min-width:0; }
.booking-service-row small { display:block; margin-top:5px; color:#506883; font-size:11px; }
.booking-service-row button { border:0; padding:6px 10px; border-radius:8px; background:#e2edf8; color:#164c7e; font-size:20px; cursor:pointer; }
.booking-service-row button:disabled { opacity:.35; cursor:default; }
.booking-total { display:flex; justify-content:space-between; padding-top:18px; font-size:19px; font-weight:800; }
.booking-subtotal,.booking-discount-total { display:flex; align-items:center; justify-content:space-between; gap:18px; padding-top:12px; color:#466986; font-size:13px; }
.booking-discount-total { color:#08744a; font-weight:800; }
.booking-discount-total strong { color:#08744a; }
.booking-upload-block { margin-top:16px; text-align:center; }
.booking-upload-block .booking-upload-btn { display:inline-flex !important; width:auto; max-width:100%; min-height:36px; padding:8px 12px; font-size:12px; line-height:1.4; justify-content:center; align-items:center; gap:7px; border:1px solid #155b9c !important; border-radius:9px; box-shadow:none; cursor:pointer; }
.booking-upload-block .booking-attachment-preview { width:100%; margin:8px auto; padding:4px 0; border:0; background:transparent; box-shadow:none; font-size:12px; text-align:center; justify-content:center; align-items:center; flex-wrap:wrap; }
.booking-upload-btn:focus-visible { outline:3px solid #47a5fa; outline-offset:4px; }
.booking-upload-block .booking-upload-btn { transition:background .18s ease, box-shadow .18s ease, transform .18s ease; }
.booking-upload-block .booking-upload-btn:hover,
.booking-upload-block .booking-upload-btn:focus-visible { background:#124d88; color:#fff; box-shadow:0 5px 12px rgba(18,77,136,.24); transform:translateY(-1px); }
.booking-upload-block .booking-upload-btn:active { transform:translateY(0); box-shadow:0 2px 5px rgba(18,77,136,.18); }
@media (prefers-reduced-motion:reduce) { .booking-upload-block .booking-upload-btn { transition:none; transform:none; } }
.booking-qr { display:block; width:280px; max-width:100%; margin:16px auto 12px; border-radius:14px; box-shadow:0 12px 28px rgba(10,62,111,.14); }
.booking-modal-content .modal-actions { position:static; margin-top:20px; }
body:has(#bookingModal[style*="block"]) { overflow:hidden; }
#bookingPaymentProofField[hidden] { display: none !important; }
#bookingRefundPolicy[hidden] { display: none !important; }
#bookingPaymentProofField { margin-top:20px; gap:10px; }
.payment-receipt-upload { position:relative; display:flex; align-items:center; justify-content:center; gap:10px; box-sizing:border-box; width:100%; min-height:50px; padding:14px 20px; border-radius:12px; background:#155b9c; color:#fff; font-size:1rem; font-weight:700; cursor:pointer; overflow:hidden; }
.upload-btn,.payment-receipt-upload,.booking-upload-block .booking-upload-btn,.discount-upload-actions .upload-btn { text-align:center; justify-content:center; align-items:center; }
.payment-receipt-upload:hover { background:#124d88; }
.payment-receipt-upload:focus-within { outline:3px solid #47a5fa; outline-offset:3px; }
.payment-receipt-upload input[type="file"] { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.discount-document-preview-button { display:block; width:100%; min-height:48px; padding:10px 12px; border:0; border-radius:10px; background:transparent; color:inherit; font:inherit; font-weight:700; text-align:center; overflow-wrap:anywhere; cursor:pointer; }
.discount-document-preview-button:hover,.discount-document-preview-button:focus-visible { color:#0b5f9f; text-decoration:underline; }
#paymentReceiptFilename { overflow-wrap:anywhere; }
#paymentReceiptFilename:empty { display:none; }
.booking-payment-note.booking-refund-policy { display:block; padding:16px 18px; margin-top:20px; line-height:1.6; }
.booking-refund-policy > strong { display:block; margin-bottom:6px; font-size:0.95rem; letter-spacing:normal; }
.booking-refund-policy > p { margin:0; font-size:0.9rem; line-height:1.6; }
.message-recipient { display:block; padding:12px 16px; font-size:12px; color:#284e74; }
.message-recipient select { display:block; width:100%; max-width:100%; padding:10px; margin-top:6px; border:1px solid #b7cde2; border-radius:10px; }
#bookingPaymentDetails { margin-top:12px; font-size:13px; line-height:1.6; }
.booking-online-payment { text-align:center; }
.booking-payment-heading { margin:0 0 4px; color:#082f59; font-size:17px !important; font-weight:800; }
.booking-payment-amount { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:14px auto 4px; padding:12px 14px; border:1px solid #9fcaec; border-radius:12px; background:#eaf5ff; color:#143d66; }
.booking-payment-amount strong { color:#075fae; font-size:19px; }
.booking-payment-payee { margin:8px 0; }
.booking-qr-download { display:inline-flex; align-items:center; justify-content:center; gap:8px; margin:4px auto 10px; padding:9px 14px; border-radius:9px; background:#1668ad; color:#fff; font-weight:700; text-decoration:none; transition:background .18s ease, transform .18s ease, box-shadow .18s ease; }
.booking-qr-download:hover,.booking-qr-download:focus-visible { background:#0d508b; transform:translateY(-1px); box-shadow:0 5px 12px rgba(18,77,136,.24); }
.booking-payment-steps { margin:10px 0; padding-left:24px; text-align:left; }
.booking-payment-steps li { margin:4px 0; }
.booking-payment-note { display:flex; align-items:flex-start; gap:8px; margin:12px 0 0; padding:10px 12px; border-radius:10px; background:#fff7dc; color:#684e00; text-align:left; }
.profile-message-bubble,.admin-message-bubble { width:fit-content; max-width:82%; padding:12px 16px; border-radius:20px; margin:8px 0; text-align:left; box-sizing:border-box; }
.profile-message-bubble.is-user,.admin-message-bubble.is-admin { margin-left:auto; background:#2469df; color:white; border-radius:20px 20px 5px 20px; }
.profile-message-bubble.is-admin,.admin-message-bubble.is-user { margin-right:auto; background:#edf1f6; color:#153554; border-radius:20px 20px 20px 5px; }
.profile-message-bubble strong,.admin-message-bubble strong { display:block; font-size:11px; margin-bottom:5px; color:inherit; }
.profile-message-bubble span,.admin-message-bubble span { display:block; color:inherit !important; white-space:pre-wrap; overflow-wrap:anywhere; }
.profile-message-bubble small,.admin-message-bubble small { display:block; font-size:10px; margin-top:8px; color:inherit; opacity:.85; }
.profile-message-row { width:fit-content; max-width:82%; margin:8px 0; min-width:0; }
.profile-message-row.is-user { margin-left:auto; justify-self:end; }
.profile-message-row.is-admin { margin-right:auto; justify-self:start; }
body .profile-message-row .profile-message-bubble { max-width:100%; margin-top:0; margin-bottom:0; }
.profile-message-timestamp { display:block; margin-top:5px; padding:0 4px; font-size:10px; line-height:1.5; color:#58708a; }
.profile-message-row.is-user .profile-message-timestamp { text-align:right; }
body.dark-mode .profile-message-timestamp { color:#b8cce2; }
@media(max-width:600px) { .profile-message-row { max-width:90%; } }
body.dark-mode .booking-services-panel,body.dark-mode .booking-payment-panel { background:#16304b; color:#edf5ff; }
body.dark-mode .booking-service-row small { color:#b8cce2; }
body.dark-mode .booking-subtotal { color:#c3d6e8; }
body.dark-mode .booking-discount-total,body.dark-mode .booking-discount-total strong { color:#7de0af; }
body.dark-mode .booking-payment-heading { color:#f2f8ff; }
body.dark-mode .booking-payment-amount { background:#102a43; border-color:#3c78a8; color:#dcecff; }
body.dark-mode .booking-payment-amount strong { color:#79c5ff; }
body.dark-mode .booking-payment-note { background:#4b401f; color:#fff2b7; }
@media(max-width:600px) { .booking-services-panel,.booking-payment-panel {padding:14px;} .booking-service-row {gap:8px;font-size:12px;} .review-carousel-footer {flex-wrap:wrap;} .profile-message-bubble,.admin-message-bubble {max-width:90%;} }
