.consumer-header {
  border-bottom: 1px solid #e1e8f0;
  padding-bottom: 20px;
  margin-bottom: 36px;
}
.consumer-header nav a[aria-current] {
  color: #147bff;
  border-bottom: 2px solid #147bff;
  font-weight: 650;
}
.consumer-header nav {
  gap: 22px;
}
.public-header .button.primary {
  padding: 10px 18px;
  color: white;
}
.landing-bottom {
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  gap: 60px;
  padding: 30px 6px;
}
.landing-bottom h2 {
  font-size: 28px;
  letter-spacing: -0.7px;
}
.landing-bottom p {
  font-size: 13px;
  line-height: 1.9;
  color: #64758a;
  max-width: 520px;
}
.landing-support {
  padding: 26px;
  background: white;
  border: 1px solid #e2eaf3;
  border-radius: 15px;
}
.landing-support h3 {
  font-size: 17px;
}
.area-form {
  display: flex;
  align-items: end;
  gap: 12px;
  padding: 20px 24px;
  background: white;
  border: 1px solid #e1e8f0;
  border-radius: 12px;
  margin-bottom: 38px;
}
.area-form label {
  flex: 1;
  max-width: 450px;
}
.area-form input,
.consumer-filters input,
.consumer-filters select,
.care-subject select {
  background: #fff;
  border: 1px solid #dce4ed;
  border-radius: 8px;
  padding: 11px 12px;
  font: inherit;
  font-size: 12px;
  color: #0a1a2f;
  min-width: 0;
}
.area-form label,
.consumer-filters label,
.care-subject {
  font-size: 11px;
  font-weight: 500;
  color: #52667d;
  display: grid;
  gap: 8px;
}
.practice-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-bottom: 32px;
}
.practice-public-card {
  padding: 25px;
}
.practice-public-card h3 {
  font-size: 17px;
  margin: 18px 0 12px;
}
.practice-public-card p {
  font-size: 12px;
  color: #64758a;
  line-height: 1.8;
}
.practice-logo {
  width: 58px;
  height: 58px;
  border-radius: 13px;
  background: #eaf3ff;
  display: grid;
  place-items: center;
  color: #147bff;
  overflow: hidden;
}
.practice-logo svg {
  width: 28px;
  height: 28px;
}
.practice-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #fff;
}
.practice-logo.large {
  width: 104px;
  height: 104px;
  flex-shrink: 0;
}
.practice-logo.large svg {
  width: 45px;
  height: 45px;
}
.consumer-filters {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  padding: 24px;
  background: white;
  border: 1px solid #e1e8f0;
  border-radius: 14px;
  margin-bottom: 26px;
}
.consumer-filters .filter-wide {
  grid-column: span 2;
}
.consumer-filters .check-label {
  display: flex;
  align-items: center;
  align-self: end;
  gap: 10px;
  min-height: 42px;
}
.consumer-filters .check-label input {
  width: 17px;
  height: 17px;
  accent-color: #147bff;
}
.filter-actions {
  display: flex;
  gap: 10px;
  align-items: end;
}
.results-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 24px 0;
}
.results-heading h2 {
  font-size: 18px;
}
.results-heading span {
  font-size: 12px;
  color: #64758a;
}
.dentist-profile-hero {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 30px;
  background: #fff;
  border: 1px solid #e1e8f0;
  border-radius: 16px;
  margin-bottom: 26px;
}
.dentist-profile-hero h1 {
  font-size: 29px;
  margin: 9px 0;
}
.dentist-profile-hero p {
  font-size: 14px;
  color: #64758a;
  margin: 8px 0;
}
.dentist-profile-hero .text-link {
  font-size: 12px;
}
.profile-booking {
  margin-left: auto;
  display: grid;
  gap: 18px;
  justify-items: start;
}
.practice-contact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.consumer-tabs {
  display: flex;
  gap: 8px;
  border-bottom: 1px solid #dce5ef;
  margin-bottom: 27px;
  overflow-x: auto;
}
.consumer-tabs a,
.consumer-tabs button {
  border: 0;
  border-bottom: 3px solid transparent;
  padding: 15px 20px;
  background: transparent;
  color: #65768a;
  font: inherit;
  font-size: 13px;
  white-space: nowrap;
  cursor: pointer;
}
.consumer-tabs [aria-current],
.consumer-tabs [aria-selected='true'] {
  border-bottom-color: #147bff;
  color: #147bff;
  font-weight: 650;
}
.care-subject {
  min-width: 180px;
}
.visit-card .button {
  margin-top: 18px;
}
.profile-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.consumer-photo {
  display: flex;
  align-items: center;
  gap: 20px;
  margin: 8px 0 28px;
  padding-bottom: 23px;
  border-bottom: 1px solid #e3eaf1;
}
.consumer-photo > img,
.consumer-photo > .avatar {
  width: 76px;
  height: 76px;
  object-fit: cover;
  border-radius: 50%;
  font-size: 24px;
  flex-shrink: 0;
}
.consumer-photo label {
  max-width: 300px;
}
.account-signout {
  display: flex;
  justify-content: flex-end;
  padding-top: 15px;
}
.help-list {
  display: grid;
  gap: 12px;
}
.help-list details {
  border: 1px solid #e1e8f0;
  border-radius: 12px;
  background: #fff;
  padding: 21px 24px;
}
.help-list summary {
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.6;
}
.help-list p {
  font-size: 13px;
  color: #64758a;
  line-height: 1.9;
  padding-top: 10px;
  max-width: 850px;
}
.booking-progress {
  list-style: none;
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 0;
  margin: 23px 0;
}
.booking-progress li {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  color: #728397;
}
.booking-progress li span {
  display: grid;
  place-items: center;
  width: 23px;
  height: 23px;
  background: #eef2f7;
  border-radius: 50%;
  font-weight: 600;
}
.booking-progress [aria-current] {
  color: #147bff;
  font-weight: 650;
}
.booking-progress [aria-current] span {
  background: #147bff;
  color: white;
}
.booking-people {
  display: grid;
  gap: 10px;
}
.booking-people label {
  display: flex;
  align-items: center;
  gap: 14px;
  background: #f7f9fc;
  border: 1px solid #e0e8f2;
  border-radius: 10px;
  padding: 16px;
  cursor: pointer;
}
.booking-people input {
  width: 18px;
  height: 18px;
  accent-color: #147bff;
}
.booking-people strong,
.booking-people small {
  display: block;
}
.booking-people strong {
  font-size: 13px;
  color: #0a1a2f;
}
.booking-people small {
  font-size: 11px;
  color: #65768a;
  padding-top: 6px;
}
#booking-questions-form textarea {
  max-height: 100px;
}
dialog > .text-link {
  margin-top: 18px;
}
.consumer-header .portal-brand {
  flex-shrink: 0;
}
@media (max-width: 1050px) {
  .consumer-header {
    flex-wrap: wrap;
  }
  .consumer-header nav {
    width: 100%;
    justify-content: space-between;
    gap: 13px;
  }
  .practice-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .consumer-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .profile-booking {
    margin-left: 0;
  }
  .dentist-profile-hero {
    flex-wrap: wrap;
  }
}
@media (max-width: 600px) {
  .consumer-header {
    gap: 18px;
  }
  .consumer-header nav {
    gap: 16px;
    justify-content: flex-start;
    flex-wrap: nowrap;
    overflow-x: auto;
    white-space: nowrap;
    padding-bottom: 5px;
  }
  .consumer-header nav a {
    font-size: 11px;
  }
  .landing-bottom {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .practice-grid,
  .practice-contact-grid,
  .profile-fields,
  .consumer-filters {
    grid-template-columns: 1fr;
  }
  .consumer-filters .filter-wide {
    grid-column: auto;
  }
  .consumer-filters {
    gap: 17px;
    padding: 20px;
  }
  .area-form {
    align-items: stretch;
    flex-direction: column;
    padding: 19px;
  }
  .area-form label {
    max-width: none;
  }
  .dentist-profile-hero {
    padding: 23px;
    gap: 18px;
  }
  .dentist-profile-hero h1 {
    font-size: 24px;
  }
  .profile-booking {
    width: 100%;
  }
  .consumer-tabs a,
  .consumer-tabs button {
    font-size: 12px;
    padding: 13px 15px;
  }
  .consumer-photo {
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .results-heading {
    gap: 15px;
  }
  .results-heading span {
    font-size: 10px;
  }
  .booking-progress {
    gap: 7px;
  }
  .booking-progress li {
    font-size: 9px;
    gap: 4px;
  }
  .help-list details {
    padding: 18px;
  }
}

.consumer-header nav a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.consumer-header nav a svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}

#password-form button[type='submit'] {
  margin-top: 20px;
}
.upload-field {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 16px;
  border: 1px dashed #9eb9d4;
  border-radius: 12px;
  background: #f4f8fd;
  cursor: pointer;
}
.upload-field svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: #147bff;
  stroke-width: 1.8;
}
.upload-field input {
  width: 100%;
  font: inherit;
  font-size: 12px;
}
.upload-field input::file-selector-button,
input[type='file']::file-selector-button {
  border: 0;
  background: #e6effb;
  color: #145ca6;
  padding: 10px 14px;
  border-radius: 7px;
  font: inherit;
  margin-right: 12px;
  cursor: pointer;
}
.support-actions {
  padding: 24px;
  margin-bottom: 24px;
}
.support-actions p {
  line-height: 1.8;
}
/* Consumer layouts for phones and compact tablets. */
.patient-view main,
.patient-view .panel,
.patient-view .profile-layout > *,
.patient-view .page-heading > * {
  min-width: 0;
}
.patient-view .panel p,
.patient-view .settings-card dd,
.patient-view .dentist-profile-hero h1 {
  overflow-wrap: anywhere;
}
@media (min-width: 601px) and (max-width: 900px) {
  .patient-view main {
    padding: 24px;
  }
  .patient-view .doctor-grid,
  .patient-view .practice-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .patient-view .profile-layout {
    grid-template-columns: 1fr;
  }
  .consumer-header nav a {
    min-height: 44px;
    gap: 6px;
    font-size: 11px;
  }
}
@media (max-width: 600px) {
  .patient-view main {
    padding: 18px 16px 24px;
  }
  .patient-view .workspace {
    padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
  }
  .consumer-header {
    margin-bottom: 26px;
    padding-bottom: 15px;
    min-height: 60px;
  }
  .consumer-header nav {
    position: fixed;
    inset: auto 0 0;
    z-index: 40;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0;
    width: 100%;
    padding: 7px 5px calc(7px + env(safe-area-inset-bottom, 0px));
    background: #fff;
    border-top: 1px solid #dce5ef;
    box-shadow: 0 -4px 20px #0a1a2f08;
    overflow: visible;
    white-space: normal;
  }
  .consumer-header nav a {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: 5px;
    min-height: 56px;
    padding: 7px 2px;
    border: 0 !important;
    border-radius: 8px;
    font-size: 9px;
    line-height: 1.4;
    text-align: center;
  }
  .consumer-header nav a span {
    max-width: 75px;
  }
  .consumer-header nav a svg {
    width: 21px;
    height: 21px;
  }
  .consumer-header nav a[aria-current] {
    background: #eef5ff;
    color: #147bff;
  }
  .patient-view .page-heading {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 16px;
  }
  .patient-view .page-heading h1 {
    font-size: 26px;
    line-height: 1.25;
  }
  .patient-view .page-heading p {
    line-height: 1.8;
  }
  .care-subject {
    width: 100%;
  }
  .patient-view .doctor-grid,
  .patient-view .visit-grid,
  .patient-view .practice-grid,
  .patient-view .profile-layout,
  .patient-view .family-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .patient-view .panel-body,
  .patient-view .practice-public-card,
  .patient-view .visit-card,
  .patient-view .family-card {
    padding: 20px;
  }
  .patient-view .doctor-card {
    padding: 22px;
  }
  .patient-view .card-actions {
    flex-wrap: wrap;
  }
  .patient-view .card-actions .button {
    flex: 1;
    min-height: 44px;
    white-space: normal;
  }
  .patient-view .button {
    min-height: 44px;
  }
  .filter-actions {
    flex-wrap: wrap;
  }
  .filter-actions .button {
    flex: 1;
  }
  .patient-view input,
  .patient-view select,
  .patient-view textarea,
  dialog input,
  dialog select,
  dialog textarea {
    max-width: 100%;
    min-width: 0;
    font-size: 16px;
  }
  .consumer-filters label,
  .profile-fields label {
    min-width: 0;
  }
  .consumer-photo .upload-field {
    width: 100%;
    max-width: none;
  }
  .consumer-photo input[type='file'] {
    font-size: 12px;
  }
  .consumer-tabs {
    gap: 0;
  }
  .consumer-tabs a,
  .consumer-tabs button {
    min-height: 44px;
    padding: 13px 12px;
  }
  .dentist-profile-hero {
    padding: 20px;
  }
  .dentist-profile-hero > div {
    min-width: 0;
  }
  .profile-booking .button {
    width: 100%;
  }
  .practice-contact-grid {
    gap: 16px;
  }
  .booking-progress li {
    flex: 1;
    flex-direction: column;
    text-align: center;
    gap: 5px;
    font-size: 10px;
  }
  .booking-people label {
    padding: 14px;
  }
  .booking-people span {
    min-width: 0;
    overflow-wrap: anywhere;
  }
  dialog {
    width: calc(100% - 20px) !important;
    max-width: 560px !important;
    max-height: calc(100dvh - 24px);
    padding: 20px !important;
    margin: auto;
    border-radius: 16px;
  }
  dialog .profile-fields,
  dialog .form-grid,
  dialog .form-row {
    grid-template-columns: minmax(0, 1fr);
  }
  dialog .form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }
  dialog .form-actions .button {
    flex: 1;
    min-height: 44px;
  }
  dialog .dialog-header h2 {
    font-size: 21px;
    line-height: 1.4;
  }
  dialog input[type='file'] {
    font-size: 12px;
  }
  #toast {
    max-width: calc(100vw - 32px);
    white-space: normal;
    bottom: 100px;
  }
  .public-header {
    gap: 15px;
  }
  .public-header nav {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
    justify-content: space-between;
  }
  .public-header nav a {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
  .landing-bottom h2 {
    font-size: 25px;
  }
}
@media (max-width: 360px) {
  .consumer-header nav a {
    font-size: 8px;
  }
  .patient-view .page-heading h1 {
    font-size: 24px;
  }
  .patient-view .doctor-card-top {
    align-items: flex-start;
    gap: 10px;
  }
  .patient-view .doctor-card-top .badge {
    max-width: 135px;
  }
  .patient-view .doctor-card .card-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .patient-view .doctor-card .button {
    width: 100%;
  }
}
