:root {
  font-family: system-ui, "Segoe UI", sans-serif;
  color: #1c302c;
  background: #f4f7f6;
  color-scheme: light;
  --ink: #1c302c;
  --muted: #536760;
  --line: #dce6e1;
  --white: #fff;
  --soft: #f5f8f6;
  --teal: #175d4b;
  --teal-deep: #104d3c;
  --teal-pale: #e7f3ed;
  --sidebar: #13342e;
  --warm-pale: #fff4e4;
  --warm-ink: #77430d;
  --danger-pale: #fcf0ec;
  --danger-ink: #8d3526;
  --radius: 14px;
}

* { box-sizing: border-box; }
body { margin: 0; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: .55; }
a { color: inherit; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid #247b68; outline-offset: 3px; }
h1, h2, h3, p, dl, dd { margin: 0; }
svg { width: 20px; height: 20px; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; fill: none; flex: 0 0 auto; }
.symbols { position: absolute; width: 0; height: 0; overflow: hidden; }
[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; }
.skip-link { position: absolute; left: 12px; top: 12px; padding: 10px 14px; z-index: 4; background: var(--white); color: var(--teal); transform: translateY(-150%); border-radius: 8px; }
.skip-link:focus { transform: translateY(0); }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 226px minmax(0,1fr); }
.sidebar { display: flex; flex-direction: column; gap: 36px; background: var(--sidebar); color: #f3f8f5; padding: 28px 18px 24px; }
.brand { display: flex; gap: 11px; align-items: center; padding-inline: 5px; }
.brand-icon { display: grid; place-items: center; width: 37px; height: 37px; border-radius: 10px; background: #cbede0; color: var(--sidebar); flex: 0 0 auto; }
.brand-icon svg { width: 23px; height: 23px; stroke-width: 2.2; }
.brand strong, .sidebar-foot strong { display: block; font-size: .91rem; font-weight: 650; line-height: 1.25; }
.brand small, .sidebar-foot small { display: block; margin-top: 3px; color: #b4cfc3; font-size: .75rem; }
.nav { display: grid; gap: 4px; }
.nav a { display: flex; gap: 10px; align-items: center; padding: 10px 11px; text-decoration: none; border-radius: 9px; font-size: .86rem; }
.nav a:hover { background: #285147; }
.nav-current { background: #285147; font-weight: 650; }
.nav svg { width: 17px; height: 17px; }
.sidebar-foot { display: flex; gap: 9px; align-items: flex-start; padding: 14px 5px 0; margin-top: auto; border-top: 1px solid #3a5a51; }
.sidebar-foot strong { font-size: .82rem; }
.demo-dot { width: 8px; height: 8px; margin-top: 5px; border-radius: 50%; background: #92d7b6; flex-shrink: 0; }

.topbar { padding: 11px clamp(18px, 3vw, 42px); min-height: 61px; display: flex; gap: 12px; justify-content: space-between; align-items: center; background: var(--white); border-bottom: 1px solid var(--line); }
.breadcrumb, .reception { display: flex; gap: 8px; align-items: center; color: var(--muted); font-size: .83rem; }
.breadcrumb strong, .reception { color: var(--ink); font-weight: 600; }
.breadcrumb svg { width: 13px; height: 13px; }
.reception-icon { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--teal-pale); color: var(--teal); }
.reception-icon svg { width: 15px; height: 15px; }
.main { max-width: 1500px; margin-inline: auto; padding: 31px clamp(18px, 3vw, 42px) 50px; }
.main:focus { outline: none; }
.page-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
h1 { font-size: clamp(1.8rem, 3vw, 2.45rem); font-weight: 720; line-height: 1.13; letter-spacing: -.045em; }
.page-head p { color: var(--muted); margin-top: 7px; font-size: .95rem; line-height: 1.45; }
.date-control { display: inline-flex; flex-shrink: 0; align-items: center; gap: 2px; border: 1px solid var(--line); background: var(--white); padding: 3px; border-radius: 10px; }
.date-field { display: flex; align-items: center; }
.date-field input { display: block; min-height: 34px; border: 0; width: 132px; padding: 3px 4px 3px 6px; background: transparent; color: var(--ink); font-size: .87rem; }
.date-field input::-webkit-calendar-picker-indicator { cursor: pointer; }
.icon-button { flex: 0 0 auto; border: 0; border-radius: 8px; width: 34px; height: 34px; display: inline-grid; place-items: center; background: transparent; color: var(--ink); }
.icon-button:hover:not(:disabled) { background: var(--soft); }
.icon-button svg { width: 17px; height: 17px; }

.locations { margin-bottom: 22px; }
.section-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 5px 12px; margin-bottom: 9px; }
.section-head h2 { font-size: .94rem; font-weight: 680; }
.text-button { border: 0; background: transparent; padding: 4px 0; color: var(--teal); font-size: .83rem; font-weight: 650; text-align: left; }
.text-button:hover:not(:disabled) { text-decoration: underline; }
.location-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }
.location-card { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 7px; min-height: 99px; min-width: 0; text-align: left; padding: 11px 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); color: var(--ink); }
.location-card:hover:not(:disabled) { border-color: #7daa9c; }
.location-card[aria-pressed="true"] { border-color: #8cb5a5; background: var(--teal-pale); box-shadow: inset 0 0 0 1px #8cb5a5; }
.location-name { display: flex; align-items: center; gap: 7px; min-width: 0; font-weight: 680; font-size: .86rem; line-height: 1.25; overflow-wrap: anywhere; }
.location-name svg { width: 16px; height: 16px; color: var(--teal); }
.location-address { color: var(--muted); font-size: .76rem; line-height: 1.3; overflow-wrap: anywhere; }
.location-count { margin-top: auto; color: var(--teal-deep); font-size: .76rem; font-weight: 650; }
.location-count.none { color: var(--warm-ink); }

.workspace-grid { display: grid; grid-template-columns: minmax(0,1.5fr) minmax(0,1fr); align-items: start; gap: 14px; }
.panel { min-width: 0; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 2px 3px #213b3107; }
.panel-head { display: flex; gap: 10px; align-items: center; padding: 16px; border-bottom: 1px solid #e8efea; }
.panel-icon { display: grid; place-items: center; width: 36px; height: 36px; flex: 0 0 auto; border-radius: 9px; color: var(--teal); background: var(--teal-pale); }
.panel-icon-alt { color: #385d55; background: #ebf2f0; }
.panel-head h2 { font-size: 1.04rem; line-height: 1.28; font-weight: 700; letter-spacing: -.02em; }
.panel-head p { margin-top: 3px; color: var(--muted); font-size: .8rem; line-height: 1.42; }
.agenda-status { display: flex; gap: 7px; align-items: flex-start; padding: 9px 11px; margin: 13px 15px 0; border-radius: 9px; background: var(--teal-pale); color: var(--teal-deep); font-size: .83rem; line-height: 1.45; }
.agenda-status svg { width: 17px; height: 17px; margin-top: 1px; }
.agenda-status.no-capacity { background: var(--warm-pale); color: var(--warm-ink); }
.agenda-status.neutral { color: var(--muted); background: var(--soft); }
.agenda-list { margin: 10px 15px 14px; }
.agenda-list-header { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; padding-block: 8px 6px; color: var(--muted); }
.agenda-list-header h3 { color: var(--ink); font-size: .88rem; font-weight: 680; }
.agenda-list-header small { font-size: .76rem; }
.agenda-items { list-style: none; padding: 0; margin: 0; }
.booking-row { display: grid; grid-template-columns: minmax(71px,max-content) minmax(0,1fr) minmax(0,max-content); gap: 11px; align-items: center; padding: 9px 0; border-top: 1px solid #e8efea; }
.booking-time { display: flex; flex-wrap: wrap; gap: 4px; align-items: baseline; font-variant-numeric: tabular-nums; }
.booking-time strong { display: block; font-weight: 690; font-size: .9rem; }
.booking-time small { color: var(--muted); font-size: .74rem; }
.booking-details { min-width: 0; overflow-wrap: anywhere; }
.booking-details strong { display: block; font-size: .86rem; font-weight: 650; }
.booking-details small { display: block; color: var(--muted); font-size: .75rem; margin-top: 3px; }
.booking-patient-link { color: var(--teal); text-decoration-thickness: 1px; text-underline-offset: 2px; }
.booking-patient-link:hover { color: var(--teal-deep); }
.booking-state { display: flex; gap: 5px; flex-direction: column; align-items: end; }
.status-badge { display: inline-block; border-radius: 999px; padding: 4px 7px; color: var(--muted); background: var(--soft); font-size: .71rem; line-height: 1.1; font-weight: 640; text-align: center; }
.status-badge.confirmada, .status-badge.completada { color: var(--teal-deep); background: var(--teal-pale); }
.status-badge.pendiente_confirmacion { color: var(--warm-ink); background: var(--warm-pale); }
.status-badge.cancelada, .status-badge.no_asistio { color: var(--danger-ink); background: var(--danger-pale); }
.status-badge.caducada { border: 1px solid var(--line); }
.status-badge.booking-change-requested { color: var(--warm-ink); background: var(--warm-pale); border: 1px solid #e9c28f; }
.booking-state .text-button { font-size: .74rem; text-align: right; }
.whatsapp-row-status, .booking-confirmation-deadline { color: var(--muted); font-size: .72rem; text-align: right; }
.booking-confirmation-deadline time { font-variant-numeric: tabular-nums; }

.alternatives-list { display: grid; padding: 3px 15px 13px; }
.alternative-site { min-width: 0; padding: 12px 0; }
.alternative-site + .alternative-site { border-top: 1px solid #e8efea; }
.alternative-site h3 { font-size: .88rem; font-weight: 680; line-height: 1.3; }
.alternative-site-header, .current-slots h3 { display: flex; justify-content: space-between; gap: 5px 8px; flex-wrap: wrap; align-items: baseline; margin-bottom: 8px; }
.availability-count { color: var(--teal-deep); font-size: .75rem; font-weight: 650; }
.availability-count.none { color: var(--muted); font-weight: 450; }
.slot-list { display: flex; flex-wrap: wrap; gap: 6px; }
.time-button { padding: 5px 8px; min-height: 34px; border: 1px solid #cfdfd7; border-radius: 7px; background: var(--soft); color: var(--teal); font-size: .79rem; font-weight: 650; font-variant-numeric: tabular-nums; }
.time-button:hover:not(:disabled) { background: var(--teal-pale); border-color: #8cb5a5; }
.slot-clinician { color: var(--muted); font-size: .68rem; }
.more-slots { margin-top: 6px; }
.more-slots > summary, .new-patient > summary { cursor: pointer; color: var(--teal); font-weight: 640; font-size: .8rem; padding: 5px 0; }
.more-slots > .slot-list { margin-top: 6px; }
.current-slots { margin: 11px 15px 0; }
.current-slots h3 { font-size: .83rem; margin-bottom: 7px; }
.loading-message, .empty-message { padding: 10px 0; color: var(--muted); font-size: .85rem; line-height: 1.45; }
.location-grid > .loading-message { grid-column: 1/-1; }

.notice { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 14px; padding: 11px 13px; margin-bottom: 15px; border-radius: 10px; border: 1px solid #c7dfd2; background: var(--teal-pale); color: var(--teal-deep); font-size: .87rem; }
.notice.is-error { background: var(--danger-pale); color: var(--danger-ink); border-color: #edcbbd; }
.notice-text { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 7px; }
.notice-actions { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.notice .secondary-button { background: var(--white); }

.booking-dialog { border: 1px solid var(--line); border-radius: 17px; background: var(--white); color: var(--ink); padding: 0; width: min(calc(100% - 20px), 520px); max-height: calc(100dvh - 22px); box-shadow: 0 22px 80px #122b22a0; }
.booking-dialog::backdrop { background: #122b2280; }
.dialog-inner { padding: 18px; }
.dialog-head { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; margin-bottom: 12px; }
.dialog-head h2 { font-size: 1.46rem; line-height: 1.2; font-weight: 720; letter-spacing: -.04em; }
.eyebrow { font-size: .71rem; font-weight: 660; color: var(--teal); margin-bottom: 3px; }
.booking-summary { background: var(--soft); padding: 10px 12px; border-radius: 10px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px 12px; }
.booking-summary dt { font-size: .73rem; color: var(--muted); margin-bottom: 2px; }
.booking-summary dd { font-size: .86rem; line-height: 1.35; font-weight: 660; overflow-wrap: anywhere; }
.patient-part { margin-top: 13px; }
.patient-part h3 { font-size: .93rem; margin-bottom: 7px; }
.search-form label, .patient-create-form label { color: var(--muted); font-size: .8rem; font-weight: 610; }
.search-field { position: relative; margin-top: 4px; }
.search-field svg { position: absolute; left: 10px; top: 10px; width: 17px; height: 17px; color: var(--muted); pointer-events: none; }
.search-field input, .patient-create-form input { display: block; width: 100%; min-height: 37px; border: 1px solid #bbcfc6; border-radius: 8px; padding: 6px 8px; background: var(--white); color: var(--ink); font-size: .89rem; }
.search-field input { padding-left: 35px; }
.patient-results { display: grid; gap: 4px; max-height: 180px; overflow-y: auto; margin-top: 6px; }
.patient-result { display: flex; justify-content: space-between; align-items: baseline; gap: 5px 10px; flex-wrap: wrap; padding: 6px 8px; border-radius: 7px; background: var(--soft); border: 1px solid var(--line); color: var(--ink); text-align: left; font-size: .81rem; }
.patient-result:hover { background: var(--teal-pale); }
.patient-result small { color: var(--muted); font-size: .76rem; }
.new-patient { margin-top: 4px; }
.patient-create-form { display: grid; grid-template-columns: 1.25fr 1fr; column-gap: 8px; row-gap: 6px; margin-top: 4px; }
.patient-create-form input { margin-top: 4px; }
.patient-create-form button { grid-column: 1/-1; justify-self: start; }
.selected-patient { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 5px 8px; align-items: center; padding: 8px 11px; background: var(--teal-pale); border-radius: 8px; font-size: .88rem; }
.selected-patient small { display: block; margin-top: 2px; color: var(--muted); }
.reserve-form { margin-top: 13px; }
.accept-alternative { display: flex; align-items: flex-start; gap: 8px; background: var(--warm-pale); color: var(--warm-ink); border-radius: 8px; padding: 8px 10px; font-size: .84rem; line-height: 1.4; }
.accept-alternative input { margin: 2px 0 0; width: 16px; height: 16px; accent-color: var(--teal); flex: 0 0 auto; }
.dialog-note { display: flex; align-items: flex-start; gap: 6px; color: var(--muted); font-size: .8rem; line-height: 1.35; margin: 9px 0; }
.dialog-note svg { width: 16px; height: 16px; }
.dialog-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 7px; }
.primary-button, .secondary-button { min-height: 34px; padding: 6px 11px; border: 1px solid var(--teal); border-radius: 8px; background: var(--teal); color: var(--white); font-size: .82rem; font-weight: 650; line-height: 1.2; }
.primary-button:hover:not(:disabled) { background: var(--teal-deep); }
.dialog-actions a { display: inline-flex; align-items: center; text-decoration: none; }
.editor { max-height: calc(100dvh - 20px); overflow: auto; }
.search-control { display: flex; gap: 8px; margin-top: 4px; }
.search-control input { flex: 1; min-width: 0; min-height: 37px; border: 1px solid #bbcfc6; border-radius: 8px; padding: 6px 8px; color: var(--ink); }
.time-button { display: inline-flex; gap: 6px; align-items: baseline; }
.time-button[aria-pressed="true"] { background: var(--teal-pale); border-color: var(--teal); }
.secondary-button { border-color: #b7cdc2; background: var(--white); color: var(--teal-deep); }
.secondary-button:hover:not(:disabled) { background: var(--soft); }
.form-error { padding: 6px 8px; margin: 5px 0; border-radius: 7px; background: var(--danger-pale); color: var(--danger-ink); font-size: .82rem; }
.noscript { position: fixed; inset: auto 8px 8px; padding: 10px; background: var(--warm-pale); color: var(--warm-ink); }

.owner-controls { min-width: 0; display: flex; align-items: center; gap: 8px 14px; }
.owner-controls .reception { min-width: 0; overflow-wrap: anywhere; }
.owner-controls .reception-icon { flex: 0 0 auto; }
.owner-controls .text-button { flex: 0 0 auto; min-height: 34px; }

.login-page { display: grid; min-height: 100vh; min-height: 100dvh; place-items: center; padding: 20px; }
.login-card { width: min(100%, 442px); padding: clamp(20px, 5vw, 36px); }
.login-brand { padding: 0; }
.login-brand small { color: var(--muted); }
.login-heading { margin: 28px 0 22px; }
.login-heading h1 { font-size: clamp(1.75rem, 4vw, 2.14rem); }
.login-heading p { margin-top: 8px; color: var(--muted); font-size: .94rem; line-height: 1.45; }
.login-role-link { display: inline-flex; align-items: center; margin-top: 14px; min-height: 36px; text-underline-offset: 3px; }
.login-form, .shift-form { display: grid; gap: 14px; }
.login-form .primary-button { min-height: 44px; margin-top: 3px; }
.login-form .form-error, .shift-form .form-error { margin: 0; }
.confirmation-heading { margin-bottom: 18px; }
.confirmation-actions { display: grid; gap: 9px; }
.confirmation-actions button { width: 100%; min-height: 44px; }
.confirmation-card .form-error { margin-bottom: 10px; line-height: 1.45; }
.expiry-notice-summary { grid-template-columns: 1fr; }
.expiry-notice-summary time { font-variant-numeric: tabular-nums; }
.change-notice-site { display: block; }
.form-field { display: grid; gap: 5px; min-width: 0; color: var(--muted); font-size: .83rem; font-weight: 620; }
.form-field input, .form-field select, .form-field textarea { width: 100%; min-width: 0; min-height: 41px; border: 1px solid #bbcfc6; border-radius: 8px; padding: 7px 9px; background: var(--white); color: var(--ink); font-size: .93rem; font-weight: 450; }
.form-field input:disabled, .form-field select:disabled, .form-field textarea:disabled, .form-field textarea:read-only { background: var(--soft); }
.form-field textarea { display: block; min-height: 114px; resize: vertical; line-height: 1.5; }

.icon-label { display: inline-flex; align-items: center; gap: 6px; }
.icon-label svg { width: 17px; height: 17px; }
.shift-filters { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.8fr) minmax(0,1.2fr); gap: 14px; padding: 15px; margin-bottom: 14px; }
.shift-list { padding: 0 15px; }
.shift-list > p { padding-block: 16px; }
.shift-row { display: grid; grid-template-columns: minmax(105px,.65fr) minmax(0,1fr) auto; gap: 9px 16px; align-items: center; padding-block: 12px; border-top: 1px solid var(--line); font-size: .88rem; }
.shift-row:first-child { border-top: 0; }
.shift-row strong { font-weight: 680; }
.shift-row-time { font-variant-numeric: tabular-nums; }
.shift-row-time small { display: block; color: var(--muted); margin-top: 2px; }
.shift-row-person { overflow-wrap: anywhere; }
.shift-row-actions { display: flex; flex-wrap: wrap; gap: 4px 13px; }
.shift-row-actions button { min-height: 34px; }
.shift-form { margin-top: 14px; }
.shift-time-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.confirmation-dialog { width: min(calc(100% - 20px), 440px); }
.delete-shift-detail { margin: 0 0 16px; color: var(--muted); font-size: .91rem; line-height: 1.45; }
.danger-text { color: var(--danger-ink); }
.danger-button { min-height: 34px; padding: 6px 11px; border: 1px solid var(--danger-ink); border-radius: 8px; background: var(--danger-ink); color: var(--white); font-size: .82rem; font-weight: 650; }
.danger-button:hover:not(:disabled) { background: #73291d; }

.whatsapp-form, .whatsapp-preview { margin-top: 14px; }
.whatsapp-form .dialog-actions { margin-top: 10px; }
.whatsapp-preview { padding: 12px; border: 1px solid #c7dfd2; border-radius: 10px; background: var(--teal-pale); }
.whatsapp-preview h3 { color: var(--teal-deep); font-size: .94rem; }
.whatsapp-number, .whatsapp-tab-note { display: block; margin-top: 6px; color: var(--muted); font-size: .78rem; }
.whatsapp-number span { color: var(--ink); font-variant-numeric: tabular-nums; font-weight: 660; }
.whatsapp-message { margin-block: 10px; padding: 10px; border-radius: 8px; background: var(--white); color: var(--ink); overflow-wrap: anywhere; font-size: .88rem; line-height: 1.5; }
.whatsapp-preview .primary-button { text-decoration: none; min-height: 36px; }
.whatsapp-unsubscribe-link { display: table; margin-top: 8px; }
.whatsapp-changes-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.whatsapp-history-notice { margin-top: 0; }
.whatsapp-change-times { margin-block: 10px; background: var(--white); }
.whatsapp-change-times time, .whatsapp-history-notice .whatsapp-number time { font-variant-numeric: tabular-nums; }

.intake-link-preview { margin-top: 14px; padding: 12px; border: 1px solid #c7dfd2; border-radius: 10px; background: var(--teal-pale); }
.intake-link-preview h3 { color: var(--teal-deep); font-size: .94rem; }
.intake-link-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.intake-link-actions a { text-decoration: none; }
.intake-copy-status, .intake-input-hint { color: var(--muted); font-size: .8rem; font-weight: 450; line-height: 1.45; }
.intake-copy-status:not(:empty) { margin-top: 8px; }
.patient-intake-card { max-width: 500px; width: 100%; }

.clinician-main { max-width: 1000px; }
.clinician-appointments { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 14px; list-style: none; padding: 0; margin: 10px 0 0; }
.clinician-appointment { padding: 15px; overflow-wrap: anywhere; }
.clinician-appointment-head { display: flex; align-items: baseline; flex-wrap: wrap; justify-content: space-between; gap: 6px 12px; margin-bottom: 8px; }
.clinician-appointment h2 { font-size: 1.02rem; font-weight: 690; }
.clinician-appointment-date, .clinician-appointment-site { display: block; color: var(--muted); margin-top: 4px; font-size: .84rem; font-variant-numeric: tabular-nums; }
.clinician-intake { padding: 10px 12px; margin-top: 13px; background: var(--soft); border-radius: 9px; border: 1px solid var(--line); }
.clinician-intake h3 { font-size: .85rem; font-weight: 680; }
.clinician-intake-text { margin-top: 6px; white-space: pre-wrap; font-size: .9rem; line-height: 1.55; }
.clinician-intake-date, .clinician-appointment-empty { display: block; margin-top: 8px; color: var(--muted); font-size: .79rem; line-height: 1.4; }

.reschedule-dialog { width: min(calc(100% - 20px), 560px); }
.reschedule-dialog h3 { margin-bottom: 6px; font-size: .88rem; font-weight: 680; }
.reschedule-current { margin-bottom: 14px; }
.reschedule-form { display: grid; gap: 11px; }
.reschedule-form .form-error { margin: 0; line-height: 1.4; }
.reschedule-filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.reschedule-status { color: var(--muted); font-size: .82rem; line-height: 1.4; }
.reschedule-status:not(:empty) { margin-bottom: 5px; }
.reschedule-slots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; overflow-y: auto; max-height: min(35dvh, 214px); }
.reschedule-slots:not(:empty) { padding: 4px; }
.reschedule-slots .time-button { display: grid; align-content: center; gap: 3px; min-height: 44px; text-align: left; overflow-wrap: anywhere; }
.reschedule-slots .time-button[aria-pressed="true"] { border-color: var(--teal); background: var(--teal-pale); box-shadow: inset 0 0 0 1px var(--teal); }
.reschedule-slot-professional { color: var(--muted); font-size: .77rem; font-weight: 580; }
.reschedule-form > .secondary-button { justify-self: start; }
.reschedule-agenda-link { text-decoration: none; }

.booking-status-choices, .booking-status-confirmation { margin-top: 13px; }
.booking-status-choices { display: flex; flex-wrap: wrap; gap: 8px; }
.booking-status-choices .danger-text { color: var(--danger-ink); }
.booking-status-choices .dialog-note { flex-basis: 100%; margin: 0; }
.booking-status-confirmation h3 { font-size: .97rem; font-weight: 700; }
#booking-status-error, #refresh-booking-status { margin-top: 11px; }

.settings-main { max-width: 900px; }
.settings-panel { max-width: 630px; }
.settings-panel-body { padding: 16px; }
.settings-panel-body > p { margin-bottom: 16px; color: var(--muted); font-size: .92rem; line-height: 1.5; }
.settings-form { display: grid; gap: 12px; }
.settings-form input { max-width: 170px; }
.settings-form label { color: var(--ink); }
.settings-form small { font-size: .8rem; font-weight: 450; line-height: 1.45; }
.settings-form .form-error { margin: 0; }
.settings-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.patients-main { max-width: 1100px; }
.patients-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.2fr); gap: 14px; align-items: start; }
.patients-panel-body { padding: 15px; }
.patients-search-form, .patient-consent-actions { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px; }
.patients-search-form .form-field { flex: 1 1 150px; }
.patients-search-form .secondary-button { min-height: 41px; }
.patients-help { color: var(--muted); font-size: .85rem; line-height: 1.45; }
.patients-search-form + .patients-help { margin-top: 10px; }
.patients-results { display: grid; gap: 6px; max-height: 405px; overflow: auto; }
.patients-results:not(:empty) { margin-top: 8px; padding: 4px; }
.patients-results button { min-height: 44px; overflow-wrap: anywhere; }
.patients-results button[aria-pressed="true"] { border-color: #8cb5a5; background: var(--teal-pale); }
.patient-consent-details { display: grid; gap: 12px; }
.patient-consent-details h3 { font-size: 1rem; font-weight: 680; overflow-wrap: anywhere; }
.patient-consent-decision { display: grid; gap: 8px; }
.patient-consent-decision .form-field { max-width: 360px; }
.patient-consent-badge.acepta { color: var(--teal-deep); background: var(--teal-pale); }
.patient-consent-badge.revoca { color: var(--danger-ink); background: var(--danger-pale); }
.patient-consent-details ~ .notice { margin: 12px 0 0; }
.patient-consent-details ~ .form-error { margin: 12px 0 6px; }
.patient-consent-history { margin-top: 18px; padding-top: 13px; border-top: 1px solid var(--line); }
.patient-consent-history h3 { margin-bottom: 4px; font-size: 1rem; font-weight: 680; }
.patient-consent-history-filters { display: grid; gap: 8px; margin-top: 12px; padding: 11px; border: 1px solid var(--line); border-radius: 8px; }
.patient-consent-history-filter-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.patient-consent-downloads-filter-grid > :last-child { grid-column: 1 / -1; }
.patient-consent-history-filter-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.patient-consent-history-filters .form-error { margin: 0; }
.patient-consent-history-entries { display: grid; gap: 8px; list-style: none; margin: 12px 0 0; padding: 0; }
.patient-consent-history-entries:empty { margin-top: 0; }
.patient-consent-history-entry { display: grid; gap: 7px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--soft); }
.patient-consent-history-entry:focus-visible { outline: 3px solid #247b68; outline-offset: 2px; }
.patient-consent-history-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 5px 10px; }
.patient-consent-history-head time { color: var(--muted); font-size: .77rem; font-variant-numeric: tabular-nums; }
.patient-consent-history-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 114px), 1fr)); gap: 7px 10px; }
.patient-consent-history-fields dt { color: var(--muted); font-size: .75rem; }
.patient-consent-history-fields dd { margin-top: 2px; font-size: .84rem; overflow-wrap: anywhere; }
.patient-consent-history-phone { font-variant-numeric: tabular-nums; }
.patient-consent-download-owner { font-size: .86rem; overflow-wrap: anywhere; }
.patient-consent-download-owner-label { color: var(--muted); font-size: .75rem; margin-bottom: 2px; }
.patient-consent-history > [role="status"], .patient-consent-history > [role="alert"], .patient-consent-history > button { margin-top: 10px; }

@media (max-width: 1120px) {
  .app-shell { grid-template-columns: 172px minmax(0,1fr); }
  .sidebar { padding-inline: 12px; }
  .brand { gap: 8px; padding-inline: 2px; }
  .brand-icon { width: 33px; height: 33px; }
  .workspace-grid { grid-template-columns: minmax(0,1.35fr) minmax(0,1fr); }
}
@media (max-width: 910px) {
  .app-shell { grid-template-columns: minmax(0,1fr); }
  .sidebar { flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 18px; }
  .nav { display: flex; flex-wrap: wrap; justify-content: flex-end; }
  .nav a { padding: 7px 8px; }
  .sidebar-foot { display: none; }
}
@media (max-width: 630px) {
  .topbar { min-height: 48px; }
  .breadcrumb > span, .breadcrumb > svg { display: none; }
  .main { padding: 19px 12px 35px; }
  .page-head { align-items: flex-start; flex-direction: column; margin-bottom: 17px; }
  .locations { margin-bottom: 14px; }
  .location-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; }
  .location-card { min-height: 84px; }
  .workspace-grid { grid-template-columns: minmax(0,1fr); gap: 10px; }
  .panel-head { padding: 11px; }
  .booking-row { gap: 7px; }
  .booking-time { gap: 3px; }
  .dialog-inner { padding: 12px; }
  .shift-filters { padding: 11px; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
  .shift-filters .form-field:last-child { grid-column: 1 / -1; }
  .shift-row { grid-template-columns: 104px minmax(0,1fr); }
  .shift-row-actions { grid-column: 2; }
  .clinician-appointments { grid-template-columns: minmax(0,1fr); gap: 10px; }
  .patients-grid { grid-template-columns: minmax(0,1fr); gap: 10px; }
}
@media (max-width: 370px) {
  .sidebar { padding-inline: 10px; }
  .nav a { font-size: .74rem; }
  .nav svg { display: none; }
  .topbar { flex-wrap: wrap; gap: 8px; padding-inline: 12px; }
  .owner-controls { flex-wrap: wrap; }
  .booking-row { grid-template-columns: minmax(65px,max-content) minmax(0,1fr); }
  .booking-state { grid-column: 2; align-items: flex-start; flex-direction: row; flex-wrap: wrap; align-items: center; }
  .patient-create-form { grid-template-columns: 1fr; }
  .patient-consent-history-filter-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 470px) {
  .sidebar { flex-wrap: wrap; }
  .sidebar .nav { justify-content: flex-start; }
}
@media (pointer: coarse) {
  .time-button, .primary-button, .secondary-button, .danger-button, .icon-button, .date-field input, .patient-result, .owner-controls .text-button, .shift-row-actions button, .nav a, .booking-state .text-button, .whatsapp-preview .primary-button, .login-role-link { min-height: 44px; }
  .search-field input, .patient-create-form input, .form-field input, .form-field select, .form-field textarea { font-size: 16px; }
  .search-field input, .patient-create-form input, .form-field input, .form-field select { min-height: 44px; }
  .search-field svg { top: 13px; }
}
