:root {
  --content-width: 1240px;
  --radius: 28px;
  --surface-shadow: 12px 14px 28px rgba(60,80,100,.18), -10px -10px 24px #fff;
  --surface-inset: inset 4px 4px 10px rgba(80,95,110,.2), inset -4px -4px 10px rgba(255,255,255,.85);
  --control-radius: 14px;
  --surface-muted: #e1ebf2;
  --control-border: #8997a4;
  --space-section: clamp(48px, 6vw, 80px);
  --timing: .2s;
  --gold: var(--accent);
}
[hidden] { display: none !important; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.skip-link { z-index: 10; }
@media (max-width: 900px) { .topbar nav a.link { color: var(--ink); } }
body { overflow-wrap: break-word; }
.page-main { max-width: var(--content-width); margin: 0 auto; padding: 160px 28px var(--space-section); }
.page-heading { max-width: 780px; margin-bottom: 48px; }
.page-heading h1 { font-size: clamp(34px, 4.2vw, 54px); }
.page-heading p { color: var(--muted); max-width: 62ch; }
.breadcrumbs { font-size: 14px; margin-bottom: 24px; }
.breadcrumbs a { color: var(--accent-deep); }
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; align-items: start; }
.surface { background: var(--base); border-radius: var(--radius); box-shadow: var(--surface-shadow); padding: clamp(24px, 3vw, 40px); }
.neo-card { background: var(--base); border-radius: var(--radius); box-shadow: var(--surface-shadow); }
.neo-input, .neo-select, .neo-date { background: var(--base); border: 1px solid var(--control-border); border-radius: var(--control-radius); box-shadow: var(--surface-inset); color: var(--ink); }
.neo-sidebar { background: var(--base); border-radius: var(--radius); box-shadow: var(--surface-shadow); padding: 16px; }
.neo-sidebar a, .neo-sidebar button { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 10px 14px; border: 0; border-radius: var(--control-radius); background: transparent; color: var(--ink); text-align: left; text-decoration: none; cursor: pointer; }
.neo-sidebar a:hover, .neo-sidebar button:hover { background: var(--surface-muted); }
.neo-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.neo-tabs button { min-height: 44px; padding: 9px 16px; border: 0; border-radius: var(--control-radius); background: var(--base); box-shadow: var(--surface-shadow); color: var(--ink); cursor: pointer; }
.neo-tabs [aria-selected="true"], .neo-sidebar [aria-current="page"] { background: var(--surface-muted); box-shadow: var(--surface-inset); }
.neo-status { display: inline-flex; align-items: center; min-height: 32px; padding: 4px 12px; border-radius: 999px; background: var(--surface-muted); color: var(--ink); font-size: 14px; font-weight: 600; }
.neo-toggle { appearance: none; width: 52px; height: 30px; padding: 3px; border: 1px solid var(--control-border); border-radius: 999px; background: var(--surface-muted); box-shadow: var(--surface-inset); cursor: pointer; vertical-align: middle; }
.neo-toggle::before { content: ''; display: block; width: 22px; height: 22px; border-radius: 50%; background: var(--base); box-shadow: 3px 3px 8px rgba(80,95,110,.22), -2px -2px 6px #fff; transition: transform var(--timing) ease; }
.neo-toggle:checked { background: var(--accent); }
.neo-toggle:checked::before { transform: translateX(22px); }
.neo-calendar { padding: clamp(16px, 3vw, 32px); background: var(--base); border-radius: var(--radius); box-shadow: var(--surface-shadow); }
.neo-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.neo-calendar-grid > * { min-width: 0; min-height: 44px; padding: 8px; border: 0; border-radius: var(--control-radius); background: var(--base); color: var(--ink); text-align: center; }
.neo-calendar-grid button { cursor: pointer; }
.neo-calendar-grid button:hover, .neo-calendar-grid [aria-selected="true"] { background: var(--surface-muted); box-shadow: var(--surface-inset); }
.neo-calendar-grid button:disabled { color: var(--muted); cursor: not-allowed; text-decoration: line-through; }
.neo-table { width: 100%; border-collapse: separate; border-spacing: 0 8px; }
.neo-table th, .neo-table td { text-align: left; padding: 12px; }
.neo-table tbody tr { background: var(--base); box-shadow: var(--surface-shadow); }
.neo-table tbody td:first-child { border-radius: var(--control-radius) 0 0 var(--control-radius); }
.neo-table tbody td:last-child { border-radius: 0 var(--control-radius) var(--control-radius) 0; }
.neo-modal { background: var(--base); color: var(--ink); border: 1px solid var(--shadow-dark); border-radius: var(--radius); box-shadow: var(--surface-shadow); }
.neo-modal::backdrop { background: rgba(46,56,66,.45); }
.surface h2 { font-size: clamp(24px, 2.5vw, 34px); line-height: 1.25; margin: 0 0 20px; }
.surface p { color: var(--muted); }
.clinic-photo { width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover; border-radius: var(--radius); }
.section-space { margin-top: var(--space-section); }
.text-link { color: var(--accent-deep); text-underline-offset: 4px; }
.site-footer { margin: 0; padding: 40px max(28px, calc((100vw - 1240px)/2)) 24px; text-align: left; border-top: 1px solid #44505b; background: var(--ink); color: var(--base); }
.footer-grid { display: grid; grid-template-columns: 1fr .7fr 1.3fr; gap: 40px; }
.footer-brand { font: 400 22px/1.3 'Young Serif', Georgia, serif; text-decoration: none; }
.site-footer h2 { font: 600 16px/1.5 'DM Sans', system-ui, sans-serif; margin: 0 0 12px; color: var(--base); }
.site-footer a:hover { color: var(--accent); }
.site-footer p, .site-footer address { font-size: 14px; font-style: normal; max-width: 48ch; }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li a { display: inline-block; padding: 6px 0; }
.footer-bottom { margin: 24px 0 0; padding-bottom: 60px; }
.services-page { padding-top: 156px; }
.services-page .site-footer { margin: 48px calc(-1 * clamp(18px,4vw,56px)) calc(-1 * clamp(40px,6vw,80px)); }
.embedded-services .topbar, .embedded-services .site-footer { display: none; }
.embedded-services { padding-top: clamp(32px,4.5vw,60px); }
.embedded-services h1 { font-size: clamp(28px,3.4vw,42px); }
.btn, .btn-learn { min-height: 44px; }
.btn-soft:hover, .btn-soft:active, .btn-learn:hover, .btn-learn:active { color: #204e72; }
input, select, textarea { width: 100%; padding: 12px 14px; border: 1px solid var(--control-border); border-radius: var(--control-radius); font: inherit; background: var(--base); box-shadow: var(--surface-inset); color: var(--ink); }
textarea { resize: vertical; min-height: 100px; }
label { display: block; font-weight: 500; margin-bottom: 6px; }
.field { margin-bottom: 20px; }
.form-help { color: var(--muted); font-size: 14px; }
.form-status { padding: 16px; border-radius: 14px; background: #dcebf5; }
.enquiry-summary { white-space: pre-wrap; }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }
.booking-embed { min-height: 620px; overflow: hidden; border-radius: var(--control-radius); background: var(--base); }
.booking-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.booking-actions .form-help { margin: 0; }
button { font: inherit; }
.assistant-launcher { position: fixed; z-index: 6; right: max(20px, env(safe-area-inset-right)); bottom: max(20px, env(safe-area-inset-bottom)); padding: 13px 20px; min-height: 48px; border: 1px solid var(--accent-deep); border-radius: 9999px; background: var(--accent); color: #17232d; box-shadow: 4px 6px 14px rgba(46,56,66,.2); cursor: pointer; }
.assistant-panel { position: fixed; inset: auto 20px 20px auto; margin: 0; width: min(430px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); padding: 24px; overflow-y: auto; border: 1px solid var(--shadow-dark); border-radius: 24px; background: var(--base); color: var(--ink); box-shadow: 0 12px 40px rgba(46,56,66,.25); }
.assistant-panel::backdrop { background: rgba(46,56,66,.3); }
.assistant-heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.assistant-heading h2 { margin: 0; font-size: 23px; }
.assistant-close { border: 0; background: var(--base); width: 44px; height: 44px; border-radius: 50%; font-size: 28px; cursor: pointer; }
.assistant-history { max-height: min(260px, 35dvh); overflow-y: auto; margin: 16px 0; overscroll-behavior: contain; }
.assistant-message { padding: 12px; background: #e1ebf2; border-radius: 14px; font-size: 14px; white-space: pre-wrap; }
.assistant-message.user { background: #c9dfef; }
.assistant-suggestions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.assistant-suggestions button { min-height: 44px; border: 1px solid #8997a4; border-radius: 16px; background: var(--base); color: var(--ink); padding: 8px 12px; font-size: 13px; cursor: pointer; }
.assistant-input { display: flex; gap: 8px; align-items: end; }
.assistant-input textarea { min-height: 72px; font-size: 16px; }
.assistant-input .btn { padding: 14px; }
.assistant-status { font-size: 14px; }
.assistant-links { display: flex; flex-wrap: wrap; gap: 8px 16px; font-size: 14px; }
.assistant-links a { padding: 8px 0; }
.assistant-live input { width: auto; }
@media (max-width: 600px) { .assistant-panel { inset: auto 16px max(16px, env(safe-area-inset-bottom)) 16px; padding: 20px; } .assistant-launcher { font-size: 14px; } }
@media (max-width: 900px) {
  .split { grid-template-columns: 1fr; gap: 28px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 28px; }
  .footer-grid > :last-child { grid-column: 1/-1; }
}
@media (max-width: 600px) {
  .page-main { padding: 136px 22px 48px; }
  .footer-grid { grid-template-columns: 1fr; }
  .site-footer { padding-left: 22px; padding-right: 22px; }
  .neo-table, .neo-table tbody, .neo-table tr, .neo-table td { display: block; width: 100%; }
  .neo-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .neo-table tbody tr { padding: 12px; border-radius: var(--control-radius); }
  .neo-table tbody td { border-radius: 0 !important; padding: 6px; }
  .neo-table tbody td::before { content: attr(data-label); display: block; font-weight: 600; }
}

