

/* Sensoria v4.5 — compact editorial layout and responsive repairs. */

/*
 * The limits block has three direct children because its translated heading is
 * injected separately from the tag list.  On desktop, keep the introduction in
 * the left column and both rules elements together in the right column.
 */
@media (min-width: 851px) {
  .careSection .limitsBlock {
    grid-template-columns: minmax(0, 1fr) minmax(420px, 0.92fr) !important;
    grid-template-rows: auto 1fr !important;
    column-gap: clamp(48px, 6vw, 118px) !important;
    row-gap: 16px !important;
    align-items: start !important;
    min-height: 0 !important;
    padding-top: clamp(64px, 8vh, 96px) !important;
    padding-bottom: clamp(64px, 8vh, 96px) !important;
  }

  .careSection .limitsBlock > div:first-child {
    grid-column: 1 !important;
    grid-row: 1 / 3 !important;
    min-width: 0;
  }

  .careSection .limitsBlock > .limitHeading {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: end;
    margin: 0 !important;
  }

  .careSection .limitsBlock > .limitTags {
    grid-column: 2 !important;
    grid-row: 2 !important;
    align-self: start;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
    margin: 0 !important;
  }

  .careSection .limitsBlock h2 {
    max-width: 760px;
    margin: 28px 0 !important;
    font-size: clamp(62px, 5.4vw, 94px) !important;
    line-height: 0.92 !important;
  }

  .careSection .limitsBlock > div:first-child > p:last-child {
    max-width: 720px;
    font-size: 18px;
    line-height: 1.5;
  }

  .careSection .limitsBlock .limitTags span {
    width: auto !important;
    min-height: 58px;
    display: flex;
    align-items: center;
    padding: 12px 14px;
    line-height: 1.3;
  }
}

/* Keep consent checkboxes beside their copy instead of letting the generic
 * form-input rule stretch each checkbox across the whole form column. */
.paymentPage .payGrid form > label.pvPrivacyCheck {
  display: grid !important;
  grid-template-columns: 22px minmax(0, 1fr) !important;
  column-gap: 12px !important;
  align-items: start !important;
  width: 100% !important;
  margin: 14px 0 0 !important;
  padding: 16px !important;
  border: 2px solid var(--ink, #151414) !important;
  font-size: 15px !important;
  line-height: 1.45 !important;
}

.paymentPage .payGrid form > label.pvPrivacyCheck + label.pvPrivacyCheck {
  margin-top: -2px !important;
}

.paymentPage .payGrid form > label.pvPrivacyCheck > input[type="checkbox"] {
  appearance: auto !important;
  -webkit-appearance: checkbox !important;
  display: block !important;
  flex: none !important;
  width: 20px !important;
  height: 20px !important;
  min-height: 20px !important;
  margin: 1px 0 0 !important;
  padding: 0 !important;
  border: initial !important;
  background: #fff !important;
}

.paymentPage .payGrid form > label.pvPrivacyCheck > span {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: inherit;
  line-height: inherit;
}

.paymentPage .payGrid form > label.pvPrivacyCheck a {
  text-underline-offset: 3px;
}

.paymentPage .payGrid form > label.pvPrivacyCheck ~ button.primary {
  margin-top: 22px;
}

@media (max-width: 850px) {
  .careSection .limitsBlock > .limitHeading {
    margin: 4px 0 0 !important;
  }

  .careSection .limitsBlock > .limitTags {
    margin-top: -8px !important;
  }
}

@media (max-width: 520px) {
  .paymentPage .payGrid form > label.pvPrivacyCheck {
    padding: 13px !important;
    font-size: 13px !important;
  }
}

/* Remove the redundant banner that was left alone between the hero and the
 * content, and keep the most important routes visually compact. */
.hero .microcopy[hidden],
.hero .microcopy:empty {
  display: none !important;
}

.pathSection,
.purpose,
.collectivePreview,
.careSection,
.paymentPage,
.mapPage,
.adminPage {
  min-width: 0;
}

/* Payment is a task, not a poster: keep the form and its explanation aligned. */
@media (min-width: 851px) {
  .paymentPage {
    padding-top: clamp(52px, 7vh, 82px) !important;
    padding-bottom: clamp(58px, 8vh, 96px) !important;
  }

  .paymentPage > h1 {
    max-width: 880px;
    margin: 28px 0 !important;
    font-size: clamp(70px, 8vw, 112px) !important;
    line-height: 0.82 !important;
  }

  .paymentPage > .lead {
    max-width: 900px;
    margin-bottom: 42px !important;
  }

  .paymentPage .payGrid {
    grid-template-columns: minmax(0, 1.3fr) minmax(300px, 0.7fr) !important;
    gap: clamp(36px, 5vw, 74px) !important;
    align-items: start !important;
  }

  .paymentPage .whatNext {
    align-self: start;
    border: 2px solid var(--ink, #151414) !important;
    padding: 24px !important;
  }

  .paymentPage .whatNext li {
    padding: 16px 0 !important;
  }

  .paymentPage .whatNext li span {
    font-size: 15px;
  }
}

/* The explanatory notes belong to the map and must never float over its cards. */
.mapPage .mapGrid,
.mapPage .pulseGrid {
  clear: both;
}

.mapPage .mapMethod,
.mapPage .pvPulsePrivacy {
  position: static !important;
  inset: auto !important;
  float: none !important;
  clear: both !important;
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 14px 0 0 !important;
  padding: 0 !important;
  font-size: 11px !important;
  line-height: 1.55 !important;
  overflow-wrap: anywhere;
}

.mapPage .pvPulsePrivacy {
  margin: 6px 0 28px !important;
}

/* The admin is an operations console. Reduce poster-scale type and keep forms
 * within the viewport on desktop as well as mobile. */
.adminReal .adminPage {
  padding-top: clamp(38px, 5vh, 64px) !important;
  padding-bottom: 64px !important;
}

.adminReal .adminHead {
  align-items: end !important;
  gap: 28px;
}

.adminReal .adminHead h1 {
  max-width: 900px;
  margin: 18px 0 30px !important;
  font-size: clamp(54px, 6.5vw, 92px) !important;
  line-height: 0.86 !important;
}

.adminReal .adminStats article {
  min-width: 0;
  padding: 16px !important;
}

.adminReal .adminStats b {
  margin-top: 7px !important;
  font-size: 36px !important;
}

.adminReal .adminPanel {
  padding: clamp(18px, 2.2vw, 30px) !important;
  overflow: hidden;
}

.adminReal .adminPanel h2,
.adminReal .donationAdminHead h2 {
  font-size: clamp(30px, 3vw, 44px) !important;
  line-height: 0.95;
}

.adminReal .pvGoogleSync .adminPanelTitle {
  align-items: center;
}

.adminReal .pvGoogleLead {
  margin: 10px 0;
}

.adminReal .pvGoogleStats {
  margin: 12px 0 !important;
}

.adminReal .donationConfig form,
.adminReal .donationEntry {
  min-width: 0;
}

.adminReal .donationConfig textarea {
  min-height: 78px;
}

.adminReal .donationConfig button,
.adminReal .donationEntry > button {
  min-height: 48px;
  white-space: normal;
}

@media (min-width: 901px) {
  .adminReal .donationConfig form {
    grid-template-columns: minmax(260px, 1fr) minmax(260px, 1fr) minmax(170px, auto) !important;
  }

  .adminReal .donationEntry {
    grid-template-columns: minmax(280px, 0.85fr) minmax(420px, 1.15fr) minmax(170px, auto) !important;
    align-items: start !important;
  }

  .adminReal .donationEntry > div:nth-child(2) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .adminReal .donationEntry > div:nth-child(2) label:last-child {
    grid-column: 1 / -1 !important;
  }

  .adminReal .donationEntry > button {
    align-self: end;
  }
}

@media (max-width: 850px) {
  .adminReal .adminHead h1 {
    font-size: 46px !important;
  }

  .mapPage .mapMethod,
  .mapPage .pvPulsePrivacy {
    font-size: 10px !important;
  }
}
/* v4.7.1: mobile reading and operable controls, without hiding care content. */
html { scroll-padding-top: 100px; }
button, a, input, select, textarea, summary { touch-action: manipulation; }
:focus-visible { outline: 3px solid #00728b; outline-offset: 4px; }
.navMobilePanel { max-height: calc(100dvh - 90px); overflow-y: auto; overscroll-behavior: contain; }
.donationOverlay { overscroll-behavior: contain; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
@media (max-width: 700px) {
  .siteHeader button, .siteHeader select, .back, summary,
  .paymentPage button, .profilePage button, .linkProfilePage button,
  .adminReal button, .adminReal select, .adminReal summary,
  .donationOverlay button, .donationOverlay a { min-height: 44px; }
  .paymentPage input:not([type=radio]):not([type=checkbox]),
  .profileLinkForm input, .adminReal input:not([type=radio]):not([type=checkbox]),
  .adminReal select, .adminReal textarea { font-size: 16px !important; min-height: 44px; max-width: 100%; }
  .paymentPage, .profilePage, .linkProfilePage, .mapPage { padding-inline: 18px !important; }
  .payGrid { grid-template-columns: minmax(0,1fr) !important; gap: 28px !important; }
  .payGrid > *, .adminReal form > * { min-width: 0; }
  .paymentPage .whatNext { padding: 20px !important; }
  .whatNext h3 { font-size: 19px !important; line-height: 1.3 !important; }
  .whatNext p, .paymentPage .dataNotice, .paymentPage .pvPrivacyCheck,
  .profilePage .privacyNote, .mapPage .mapMethod, .mapPage .pvPulsePrivacy { font-size: 14px !important; line-height: 1.55 !important; }
  .pvPrivacyCheck { align-items: start !important; gap: 12px !important; padding-block: 8px; }
  .pathSection, .purpose, .principlesSection, .careSection, .collectivePreview { padding-block: 36px !important; }
  .hero { min-height: 0 !important; }
  .hero .actions { gap: 10px !important; }
  .hero .actions button { min-height: 48px; }
  .limitsBlock h2, .principlesSection h2, .purpose h2 { font-size: clamp(34px,9vw,52px) !important; line-height: 1.05 !important; }
  .adminReal .adminHead { padding-block: 20px !important; }
  .adminReal .adminHead h1 { font-size: 36px !important; line-height: 1.05 !important; }
  .adminReal pre, .donationOverlay pre { overflow-wrap: anywhere; white-space: pre-wrap; }
  .bonusMethodChoices small { font-size: 13px !important; }
  .donationOverlay > main { padding-bottom: max(24px,env(safe-area-inset-bottom)) !important; }
}
.navMobilePanel a { display:block; padding:14px 18px; min-height:44px; color:inherit; font-weight:700; }
