/* Shared responsive safety layer. Loaded last so page-specific themes cannot
   accidentally make common layout primitives wider than the viewport. */
html,
body {
  max-width: 100%;
  overflow-x: clip;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

img,
video,
canvas,
svg {
  max-width: 100%;
}

iframe,
embed,
object {
  max-width: 100%;
}

input,
select,
textarea,
button {
  max-width: 100%;
}

p,
li,
dd,
td,
th,
a,
button,
label {
  overflow-wrap: anywhere;
}

table {
  max-width: 100%;
}

.table-responsive,
.panel-table {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

.dash-main,
.dash-panel,
.dash-grid,
.panel-header,
.panel-row,
.form-grid,
.booking-shell,
.booking-card,
.service-booking-shell {
  min-width: 0;
}

.dash-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 24px;
  padding: 24px;
}

dialog {
  max-width: calc(100vw - 24px);
  max-height: calc(100dvh - 24px);
}

/* Tailwind-based editorial pages must not override the shared header/footer. */
.privacy-page .rwm-electricity-global-header,
.about-page .rwm-electricity-global-header {
  width: 100%;
  max-width: 100vw;
}

.privacy-page .rwm-electricity-global-header .rwm-electricity-global-header__inner,
.about-page .rwm-electricity-global-header .rwm-electricity-global-header__inner {
  width: 100%;
}

.privacy-page .rwm-electricity-global-header .rwm-egh-logo,
.about-page .rwm-electricity-global-header .rwm-egh-logo {
  width: auto;
}

.privacy-page .rwm-electricity-global-header .rwm-egh-logo img,
.about-page .rwm-electricity-global-header .rwm-egh-logo img {
  width: 42px;
  height: 42px;
}

.privacy-page .site-footer .container,
.about-page .site-footer .container {
  width: min(1200px, 92%);
  max-width: none;
  margin-inline: auto;
  padding-inline: 0;
}

@media (max-width: 980px) {
  .privacy-page .rwm-electricity-global-header .rwm-egh-navwrap,
  .about-page .rwm-electricity-global-header .rwm-egh-navwrap {
    width: auto;
  }

  .privacy-page .rwm-electricity-global-header .rwm-egh-logo img,
  .about-page .rwm-electricity-global-header .rwm-egh-logo img {
    width: 46px;
    height: 46px;
  }

  .dash-sidebar {
    padding: 20px;
  }

  .dash-sidebar .dash-brand,
  .dash-sidebar .dash-nav-search,
  .dash-sidebar .dash-nav,
  .dash-sidebar .dash-card {
    width: 100%;
  }

  .dash-sidebar .dash-nav {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  }

  .dash-sidebar .dash-nav-section {
    grid-column: 1 / -1;
  }
}

@media (max-width: 640px) {
  /* Prevent iOS from zooming the page when a form control receives focus. */
  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea {
    font-size: 16px !important;
  }

  .terms-hero-inner {
    width: calc(100% - 32px);
    margin-inline: auto;
    padding-inline: 0;
  }

  .terms-content,
  .terms-section,
  .terms-soft-card,
  .glass-card {
    min-width: 0;
  }

  .cookies-table {
    display: block;
    width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  .quote-actions {
    flex-direction: column;
  }

  .quote-actions .btn,
  .quote-actions .btn.primary {
    width: 100%;
    min-width: 0;
    margin-inline: 0;
  }

  .service-summary {
    flex-direction: column;
  }

  .service-summary img {
    width: 100%;
    height: min(52vw, 180px);
  }

  .review-content {
    margin-inline-start: 0;
    flex-direction: column;
  }

  .review-columns,
  .review-row > p,
  .review-row > small {
    margin-inline-start: 0;
  }

  .dash-edit-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .dash-edit-value,
  .panel-link,
  .footer-contact a,
  .home-footer-contact a {
    overflow-wrap: anywhere;
  }

  .dash-main {
    padding: 20px 16px 40px;
  }

  .dash-panel {
    padding: 16px;
    border-radius: 16px;
  }

  .dash-grid,
  .dash-stats,
  .attachment-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .dash-detail-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
    padding: 16px;
  }

  .dash-top h1 {
    font-size: clamp(1.75rem, 9vw, 2.2rem);
  }

  .dash-notify-panel {
    position: fixed;
    inset: 84px 12px auto;
    width: auto;
    max-height: calc(100dvh - 100px);
    overflow-y: auto;
  }

  .admin-login-shell {
    grid-template-columns: minmax(0, 1fr);
    padding: 18px 14px;
  }

  .admin-login-card,
  .signup-section {
    min-width: 0;
    padding: 22px 18px;
  }

  .signup-form .form-grid,
  .choice-grid,
  .interest-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .booking-btn,
  .thankyou-actions .btn {
    width: 100%;
    min-width: 0;
  }
}

@media (max-width: 380px) {
  .quote-progress {
    grid-template-columns: 58px minmax(18px, 1fr) 58px minmax(18px, 1fr) 58px;
  }

  .quote-progress .progress-step span {
    font-size: 8px;
  }

  .home-booking-dialog,
  .request-flow {
    width: calc(100% - 16px);
  }
}
