/* PHOTO SPOTT 0.8.0-preview.10 — component layer loaded after the legacy module CSS. */

/* Typography and layout */
body, button, input, select, textarea { font-family: var(--ps-font-ui); }
body { color: var(--ps-text); font-size: var(--text-base); line-height: 1.6; }
h1, h2, h3, h4, legend, th, label { font-family: var(--ps-font-ui); }
h1, h2, h3 { line-height: 1.18; letter-spacing: -.025em; }
.eyebrow { color: var(--ps-gold-text); font-family: var(--font-ui); font-size: clamp(11px, .8vw, 13px); font-weight: 700; letter-spacing: .16em; line-height: 1.4; text-transform: uppercase; }
.brand-mark { font-family: var(--font-ui); }
.ui-label { font-family: var(--font-ui); font-size: var(--text-sm); font-weight: 600; }
.numeric-value { font-family: var(--font-ui); font-variant-numeric: tabular-nums; font-weight: 700; }
.body-copy { max-width: 72ch; font-family: var(--font-ui); line-height: 1.65; }
.admin-body { --admin-page-title-size: 34px; --admin-section-title-size: 24px; --admin-card-title-size: 19px; --admin-font-size: 15px; background: var(--ps-bg-soft); }
.admin-body .admin-shell h1, .admin-body .admin-shell h2, .admin-body .admin-shell h3,
.admin-body .admin-shell legend, .admin-body .admin-shell .metric strong,
.admin-body .business-kpi strong, .admin-body .consent-kpis strong { font-family: var(--ps-font-ui); }
.admin-body .admin-shell h1, .admin-body .dashboard-header h1 { font-size: clamp(30px, 3vw, 36px); font-weight: 700; line-height: 1.15; }
.admin-body .admin-shell h2 { font-size: clamp(22px, 2.3vw, 26px); font-weight: 600; line-height: 1.2; }
.admin-body .admin-shell h3, .admin-body .admin-shell .card-title { font-size: clamp(16px, 1.6vw, 20px); font-weight: 600; line-height: 1.25; }
.admin-body .admin-shell .addon-admin-grid .client-card-title h2 { font-size: clamp(20px, 2vw, 24px); }
.admin-body .admin-shell .metric strong, .admin-body .analytics-kpi strong,
.admin-body .consent-kpis strong { font-family: var(--font-ui); font-size: clamp(20px, 2.3vw, 32px); font-weight: 700; line-height: 1.14; }
.admin-body .analytics-kpi h2, .admin-body .cash-confirm-dialog h2 { font-family: var(--font-ui); }
.admin-body .admin-shell .section-heading, .admin-body .dashboard-header {
  padding: var(--ps-space-4) var(--ps-space-6);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-md);
  background: linear-gradient(105deg, var(--ps-navy-soft), var(--ps-surface) 72%);
}
.admin-body .admin-shell .section-heading h1, .admin-body .dashboard-header h1 { font-size: clamp(30px, 3vw, 36px); }
.admin-body .admin-shell .section-heading h2 { font-size: clamp(22px, 2.3vw, 26px); }
.admin-body .admin-topbar { box-shadow: var(--ps-shadow-sm); }
.admin-body .admin-topbar nav a { border-radius: var(--ps-radius-sm); padding: .42rem .55rem; }
.admin-body .admin-topbar nav a[aria-current="page"] { background: var(--ps-navy-soft); color: var(--ps-navy); box-shadow: inset 0 -3px var(--ps-gold); }

/* Selected marketing headings only. Client portal and gallery remain application UI. */
.public-hero h1, .public-page-head h1, .public-section-intro h2,
.public-cta h2, .public-offer-story h2, .public-faq-preview h2,
.public-split > div > h2, .public-contact-grid > div > h2 { font-family: var(--font-display); font-weight: 600; }
.public-hero h1, .public-page-head h1 { font-size: var(--text-display); line-height: 1.03; }
.public-section-intro h2, .public-cta h2, .public-offer-story h2,
.public-faq-preview h2, .public-split > div > h2, .public-contact-grid > div > h2 {
  font-size: clamp(34px, 4vw, 48px); line-height: 1.1;
}
.public-process-preview-step h3, .public-benefit h3, .public-feature h3,
.public-package h3, .public-product-card h3, .public-addon h3,
.public-faq-points h3, .public-process-step h2, .public-faq-question,
.faq-item button, .faq-question {
  font-family: var(--font-ui); font-size: clamp(22px, 2.2vw, 30px); font-weight: 600; line-height: 1.24;
}
.faq-item button, .faq-question { font-size: clamp(17px, 1.4vw, 20px); line-height: 1.4; }
.public-price, .payment-choice-card strong { font-family: var(--font-ui); font-variant-numeric: tabular-nums; font-weight: 700; }
.public-price { font-size: clamp(28px, 3vw, 36px); line-height: 1.18; }
.payment-choice-card strong { font-size: clamp(20px, 2vw, 26px); line-height: 1.25; }
.public-page-head.legal-page-head h1, .public-contact-grid > .public-contact-details > h2 {
  font-family: var(--font-ui); font-size: clamp(28px, 3vw, 36px); font-weight: 600; line-height: 1.2;
}
.public-hero .public-lead, .public-hero .hero-lead, .public-testimonial p,
.client-panel h1, .client-panel h2, .client-panel h3, .client-panel h4,
.consent-scope-card h2, .consent-scope-card h4, .package-option .package-name,
.package-option .package-price { font-family: var(--ps-font-ui); }
.client-panel-header h1 { font-size: clamp(30px, 3.5vw, 38px); }
.client-panel .event-card-header h2 { font-size: clamp(22px, 2.6vw, 30px); line-height: 1.22; }
.client-panel > .container > h2 { font-size: clamp(22px, 2.3vw, 26px); }
.consent-scope-card h2, .consent-scope-card h4 { overflow-wrap: break-word; line-height: 1.25; }
.public-lead, .public-hero .hero-lead { max-width: 72ch; font-family: var(--font-ui); font-size: clamp(17px, 1.4vw, 19px); line-height: 1.6; }
.public-section-intro p:last-child, .public-offer-story p { max-width: 72ch; line-height: 1.65; }
.public-testimonial p { font-size: clamp(16px, 1.4vw, 19px); line-height: 1.58; }
.public-testimonial footer { font-family: var(--font-ui); font-weight: 600; }
.booking-form-fields .booking-step-title, .booking-form-fields .availability-heading h2,
.booking-form-fields .package-options legend { font-family: var(--font-ui); font-size: clamp(22px, 2.2vw, 28px); font-weight: 600; line-height: 1.25; }
.booking-form-fields .booking-section-title, .booking-form-fields .booking-addons legend,
.booking-price-summary h2, .booking-hero .rules-card h2 { font-family: var(--font-ui); font-size: clamp(19px, 1.8vw, 24px); font-weight: 600; line-height: 1.25; }
.booking-hero .package-name, .booking-hero .package-price, .booking-hero .booking-day,
.booking-hero .booking-progress, .booking-hero .booking-price-summary { font-family: var(--font-ui); }
.section-tint { background: linear-gradient(115deg, var(--ps-bg), var(--ps-gold-soft)); }
.public-process-preview, .public-portfolio-section { background: var(--ps-surface); }
.public-product-card > img { aspect-ratio: 4 / 3; height: auto; object-fit: cover; }

/* Cards and sections */
.card, .form-card, .metric, .public-package, .public-benefit, .public-product-card,
.public-testimonial, .public-comparison-card, .public-process-step, .consent-scope-card {
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-md);
  background: var(--ps-surface);
  box-shadow: var(--ps-shadow-sm);
}
.public-testimonial { border-left: 3px solid var(--ps-gold); }
.admin-body .admin-shell .card, .admin-body .admin-shell .form-card { background: var(--ps-surface); }
.admin-body .admin-section { margin-block: var(--ps-space-8); }
.owner-priority-grid > .admin-section, .owner-secondary-grid > .admin-section {
  padding: var(--ps-space-6); border: 1px solid var(--ps-border); border-radius: var(--ps-radius-md);
  background: var(--ps-surface); box-shadow: var(--ps-shadow-sm);
}
.owner-priority-grid > .admin-section:nth-child(2) { background: linear-gradient(110deg, var(--ps-warning-soft), var(--ps-surface) 48%); }
.owner-priority-grid > .admin-section .section-heading, .owner-secondary-grid > .admin-section .section-heading { padding: 0; border: 0; background: transparent; }
.empty-state { padding: var(--ps-space-6); border: 1px dashed var(--ps-border-strong); border-radius: var(--ps-radius-md); background: var(--ps-surface); color: var(--ps-text-muted); }

/* Canonical buttons: link pseudo-states must not inherit dark calendar/nav text. */
.button, a.button:link, a.button:visited, a.button:hover, a.button:focus-visible, a.button:active {
  border-color: var(--ps-navy); border-radius: var(--ps-radius-sm);
  background: var(--ps-navy); color: #fff; font-family: var(--ps-font-ui);
  font-size: .875rem; font-weight: 700; letter-spacing: .025em; text-decoration: none;
}
.button:hover, a.button:hover { background: linear-gradient(110deg, var(--ps-navy), #25415f); border-color: #25415f; }
.button:focus-visible, a.button:focus-visible { outline: 3px solid var(--ps-gold); outline-offset: 2px; }
.button:active, a.button:active { background: #0f2037; transform: none; }
.button-ghost, a.button-ghost:link, a.button-ghost:visited, a.button-ghost:hover, a.button-ghost:focus-visible {
  border-color: var(--ps-border-strong); background: var(--ps-surface); color: var(--ps-navy);
}
.button-ghost:hover, a.button-ghost:hover { border-color: var(--ps-navy); background: var(--ps-navy-soft); }
.button-light, a.button-light:link, a.button-light:visited, a.button-light:hover, a.button-light:focus-visible {
  border-color: #fff; background: #fff; color: var(--ps-navy);
}
.button-danger, a.button-danger:link, a.button-danger:visited { border-color: var(--ps-danger); background: var(--ps-danger); color: #fff; }
.button-danger:hover, a.button-danger:hover { border-color: #782732; background: #782732; color: #fff; }
.button:disabled, .button[aria-disabled="true"] { opacity: 1; border-color: var(--ps-border); background: #e7ebef; color: #526174; cursor: not-allowed; box-shadow: none; transform: none; }
.admin-calendar-page .calendar-nav a.button:link, .admin-calendar-page .calendar-nav a.button:visited,
.admin-calendar-page .calendar-nav a.button:hover, .admin-calendar-page .calendar-nav a.button:focus-visible,
.admin-calendar-page .calendar-nav a.button:active { color: #fff; text-decoration: none; }
.admin-calendar-page .calendar-nav { align-items: center; justify-content: flex-end; }
.admin-calendar-page .calendar-nav > a:not(.button) { white-space: nowrap; }

/* Forms: native radios/checkboxes retain their compact intrinsic dimensions. */
input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]), select, textarea,
.admin-body .business-filters input:not([type="checkbox"]), .admin-body .business-filters select {
  border: 1px solid var(--ps-border-strong); border-radius: var(--ps-radius-sm);
  background: var(--ps-surface); color: var(--ps-text);
}
input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]), select { min-height: 44px; }
textarea { min-height: 120px; resize: vertical; }
.admin-body .admin-shell textarea { height: auto; min-height: 120px; }
.admin-body .admin-shell textarea[name="body_html"], .admin-body .admin-shell textarea[name="body_text"] { min-height: 160px; }
input:not([type="radio"]):not([type="checkbox"]):hover, select:hover, textarea:hover { border-color: #7f90a3; }
input:not([type="radio"]):not([type="checkbox"]):focus-visible, select:focus-visible, textarea:focus-visible {
  border-color: var(--ps-navy); outline: 3px solid rgb(164 123 62 / 30%); outline-offset: 1px;
}
input[type="radio"], input[type="checkbox"] { width: auto; height: auto; padding: 0; accent-color: var(--ps-navy); }
label, legend { font-family: var(--font-ui); font-size: clamp(14px, 1vw, 15px); font-weight: 600; }
input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]), select, textarea {
  font-family: var(--font-ui); font-size: clamp(15px, 1.05vw, 16px); font-weight: 400;
}
input::placeholder, textarea::placeholder { font-family: var(--font-ui); font-size: inherit; font-weight: 400; }

/* Tables and badges */
.admin-body .table-wrap, .admin-body .analytics-table-scroll {
  max-width: 100%; overflow-x: auto; border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-md); background: var(--ps-surface);
}
.admin-body .table-wrap table { min-width: max-content; }
.admin-body table th { background: var(--ps-navy-soft); color: var(--ps-navy); font-family: var(--font-ui); font-size: clamp(13px, .95vw, 14px); font-weight: 700; line-height: 1.4; }
.admin-body .admin-shell .table-wrap th { font-size: clamp(13px, .95vw, 14px); }
.admin-body table td { border-bottom-color: var(--ps-border); font-family: var(--font-ui); font-size: clamp(14px, 1vw, 15px); line-height: 1.5; }
.admin-body table td :is(strong, b, data, time) { font-variant-numeric: tabular-nums; font-weight: 600; }
.admin-body table tbody tr:hover { background: #f8fafb; }
.admin-body tr.table-empty td, .admin-body tr.bookings-empty td { padding: var(--ps-space-6); background: var(--ps-bg-soft); color: var(--ps-text-muted); text-align: center; white-space: normal; }
.badge, .consent-status { border-radius: 999px; font-family: var(--ps-font-ui); font-weight: 700; }
.badge-confirmed, .badge-completed, .consent-status.status-granted { background: var(--ps-success-soft); color: var(--ps-success); }
.badge-awaiting_deposit, .badge-warning, .consent-status.status-requested { background: var(--ps-warning-soft); color: var(--ps-warning); }
.badge-cancelled, .badge-expired, .badge-rejected, .consent-status.status-declined, .consent-status.status-withdrawn { background: var(--ps-danger-soft); color: var(--ps-danger); }
.alert-error { border-color: #e9bfc5; background: var(--ps-danger-soft); color: #7c2632; }
.alert-info { border-color: #b9d4e3; background: var(--ps-info-soft); color: var(--ps-info); }
.alert-success { border-color: #b9dec5; background: var(--ps-success-soft); color: var(--ps-success); }

/* Finance and owner dashboard */
.admin-body .business-kpis, .admin-body .owner-kpis { gap: var(--ps-space-4); }
.admin-body .business-kpi {
  position: relative; min-width: 0; overflow: hidden; border: 1px solid var(--ps-border);
  border-top: 4px solid var(--ps-navy); border-radius: var(--ps-radius-md);
  background: linear-gradient(125deg, var(--ps-surface), var(--ps-navy-soft));
  box-shadow: var(--ps-shadow-sm); color: var(--ps-text);
}
.admin-body .business-kpi:hover, .admin-body .business-kpi:focus-visible { box-shadow: var(--ps-shadow-md); }
.admin-body .business-kpi span { color: var(--ps-text-muted); font-size: .75rem; }
.admin-body .business-kpi strong { color: var(--ps-navy); font-size: clamp(20px, 2.3vw, 32px); font-weight: 700; line-height: 1.14; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.admin-body .business-kpi.is-income { border-top-color: var(--ps-success); background: linear-gradient(125deg, #fff, var(--ps-success-soft)); }
.admin-body .business-kpi.is-due { border-top-color: var(--ps-gold); background: linear-gradient(125deg, #fff, var(--ps-warning-soft)); }
.admin-body .business-kpi.is-cost, .admin-body .business-kpi.is-negative { border-top-color: var(--ps-danger); background: linear-gradient(125deg, #fff, var(--ps-danger-soft)); }
.admin-body .business-kpi.is-result:not(.is-negative) { border-top-color: var(--ps-success); background: linear-gradient(125deg, #fff, var(--ps-success-soft)); }
.admin-body .business-panels .card, .admin-body .business-page > .card { border-radius: var(--ps-radius-md); }
.admin-body .business-client-summary > div, .admin-body .business-booking-summary > div { border: 1px solid var(--ps-border); border-radius: var(--ps-radius-sm); background: var(--ps-bg-soft); }
.admin-body .business-chart-row { min-width: 680px; }
.admin-body .business-chart { overflow-x: auto; }
.admin-body .business-bar.income { background: var(--ps-success); }
.admin-body .business-bar.cost { background: var(--ps-danger); }
.admin-body .business-tabs a.is-active, .admin-body .business-tabs a.is-active:visited { background: var(--ps-navy); color: #fff; }

/* Calendar status is textual and softly tinted, never a solid red/green day. */
.admin-body .calendar-scroll { border-radius: var(--ps-radius-md); box-shadow: var(--ps-shadow-sm); }
.admin-body .calendar-head div { background: var(--ps-navy-soft); color: var(--ps-navy); font-weight: 700; }
.admin-body .calendar-day { background: var(--ps-surface); }
.admin-body .calendar-day.is-today { box-shadow: inset 0 3px var(--ps-gold); background: var(--ps-surface-raised); }
.admin-body .calendar-day.is-today .calendar-day-number { background: var(--ps-navy); color: #fff; }
.admin-body .calendar-day.is-blocked { background: var(--ps-bg-soft); }
.admin-body .calendar-event { border-radius: var(--ps-radius-sm); }
.admin-body .calendar-event.is-archived { border-left-color: #84909d; background: #f1f3f5; }
.admin-body .calendar-free { width: max-content; margin-top: var(--ps-space-4); padding: .2rem .5rem; border-radius: 999px; background: var(--ps-success-soft); color: var(--ps-success); font-weight: 700; }
.admin-body .calendar-add-booking { display: block; margin-top: var(--ps-space-2); }

/* Client portal and gallery share UI typography while keeping gallery theme colors. */
.client-panel .client-quick-nav a { min-height: 46px; border-radius: var(--ps-radius-sm); font-size: .875rem; }
.client-panel .client-quick-nav a[aria-current="location"] { border-color: var(--ps-navy); background: var(--ps-navy); color: #fff; }
.client-panel .client-quick-nav a:focus-visible { outline: 3px solid var(--ps-gold); outline-offset: 2px; }
.client-profile { scroll-margin-top: 5rem; margin-bottom: 1.5rem; padding: clamp(1rem, 3vw, 1.5rem); }
.client-profile h2 { margin: 0; font-family: Manrope, system-ui, sans-serif; font-size: clamp(1.3rem, 3vw, 1.7rem); }
.client-profile-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin: 1rem 0; }
.client-profile-summary > div { min-width: 0; padding: .8rem 1rem; border: 1px solid #d8dfe8; border-radius: 8px; background: #fafbfc; overflow-wrap: anywhere; }
.client-profile-summary dt { color: #5c6878; font-size: .82rem; }
.client-profile-summary dd { margin: .25rem 0 0; font-weight: 700; }
.client-profile-editor summary { cursor: pointer; width: max-content; list-style: none; }
.client-profile-editor summary::-webkit-details-marker { display: none; }
.client-profile-editor form { margin-top: 1.2rem; }
.client-profile-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 1rem; }
.client-profile-fields label, .client-profile-billing label { min-width: 0; }
.client-profile-fields input, .client-profile-billing input, .client-profile-billing select { width: 100%; max-width: 100%; }
.client-profile-billing { min-width: 0; border: 1px solid #d8dfe8; border-radius: 8px; padding: 1rem; }
.client-profile-billing legend { font-weight: 700; }
.client-profile-billing > div { margin-top: .75rem; }
.client-profile-billing [hidden] { display: none !important; }
.client-profile-actions { display: flex; flex-wrap: wrap; gap: .6rem; }
.client-profile-confirmation { max-width: 42rem; margin-inline: auto; padding: 2rem; }
@media (max-width: 767px) { .client-profile-summary, .client-profile-fields { grid-template-columns: minmax(0, 1fr); } .client-profile-actions .button { width: 100%; } }
.calendar-options { margin: 1rem 0; }
.calendar-options > summary { cursor: pointer; color: var(--ps-navy); font-weight: 700; }
.calendar-options .client-links { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-top: .7rem; }
.client-document-center { margin: 2rem 0; scroll-margin-top: 7rem; }
.document-booking { margin: 1rem 0; }
.document-groups { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1rem; }
.document-groups > section, .document-groups > div { min-width: 0; padding: 1rem; border: 1px solid #d9e0e8; border-radius: var(--ps-radius-sm); background: #fff; }
.document-groups h3, .document-groups h4 { margin: 0 0 .7rem; font-family: var(--ps-font-ui); font-size: 1rem; }
.document-row { display: flex; justify-content: space-between; align-items: flex-start; gap: .8rem; padding: .6rem 0; border-top: 1px solid #e9edf2; overflow-wrap: anywhere; }
.document-row small { display: block; color: #607087; }
.document-row a { flex: 0 0 auto; font-weight: 700; }
.document-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
@media (max-width: 767px) { .document-groups { grid-template-columns: minmax(0,1fr); } .document-row { flex-wrap: wrap; } }
html[data-theme] { font-family: var(--ps-font-ui); }
html[data-theme] .gallery-intro h1, html[data-theme] .gallery-gate h1,
html[data-theme] .gallery-saal h2, html[data-theme] .gallery-symbol { font-family: var(--ps-font-ui); }
html[data-theme] .gallery-cta { font-family: var(--ps-font-ui); border-radius: var(--ps-radius-sm); }
html[data-theme] .gallery-tile { border-radius: var(--ps-radius-sm); }
html[data-theme] .gallery-brand-mark { font-family: var(--font-ui); }
html[data-theme] .gallery-intro h1, html[data-theme] .gallery-gate h1,
html[data-theme] .gallery-saal h2 { font-size: clamp(26px, 3.5vw, 38px); line-height: 1.16; }

@media (max-width: 1023px) {
  .admin-body .admin-shell .section-heading { align-items: flex-start; }
  .admin-calendar-page .calendar-nav { justify-content: flex-start; }
}
@media (max-width: 767px) {
  .public-hero h1, .public-page-head h1 { font-size: clamp(38px, 11vw, 52px); line-height: 1.04; }
  .public-section-intro h2, .public-cta h2, .public-offer-story h2,
  .public-faq-preview h2, .public-split > div > h2, .public-contact-grid > div > h2 {
    font-size: clamp(34px, 8vw, 44px);
  }
  .admin-body .admin-shell .section-heading, .admin-body .dashboard-header { padding: var(--ps-space-4); }
  .admin-body .admin-shell .section-heading h1, .admin-body .dashboard-header h1 { font-size: 30px; }
  .owner-priority-grid > .admin-section, .owner-secondary-grid > .admin-section { padding: var(--ps-space-4); }
  .admin-calendar-page .calendar-nav { width: 100%; gap: var(--ps-space-2) var(--ps-space-3); }
  .admin-calendar-page .calendar-nav .button { flex-basis: 100%; }
  .admin-body .business-kpi strong { font-size: 1.75rem; }
}
@media (max-width: 390px) {
  .public-hero h1, .public-page-head h1 { overflow-wrap: break-word; text-wrap: balance; }
  .client-panel .event-card-header h2, .booking-form-fields .booking-step-title,
  .booking-form-fields .availability-heading h2 { overflow-wrap: break-word; }
  .client-panel .client-quick-nav a { flex: 1 1 calc(50% - var(--ps-space-2)); }
  .admin-body .admin-shell { padding-inline: var(--ps-space-3); }
}

/* preview.15: public marketing refinement. The :has() gate excludes booking,
   client portal, admin, gallery access and legal pages sharing this stylesheet. */
#main:has(> .public-hero, > .public-page-head:not(.legal-page-head)) {
  --public-display-xl: clamp(3.5rem, 4.4vw, 4.5rem);
  --public-display-lg: clamp(2.25rem, 2.3vw + 1rem, 3.2rem);
  --public-card-title: clamp(1.25rem, 1.2vw + .8rem, 1.8rem);
  --public-body: clamp(.98rem, .3vw + .9rem, 1.08rem);
  --public-section-space: clamp(2.4rem, 4vw, 4.6rem);
  --review-star-color: #a97918;
  font-family: var(--font-ui);
  font-size: var(--public-body);
  line-height: 1.6;
}
#main:has(> .public-hero, > .public-page-head:not(.legal-page-head)) > .section {
  padding-block: var(--public-section-space);
}
#main .public-hero { padding-block: clamp(2.25rem, 3.7vw, 4.25rem); }
#main .public-page-head:not(.legal-page-head) { padding-block: clamp(2.4rem, 4vw, 4.4rem); }
#main .public-hero h1, #main .public-page-head:not(.legal-page-head) h1 {
  font-family: var(--font-display);
  font-size: var(--public-display-xl);
  font-weight: 600;
  line-height: 1.03;
  margin-bottom: .85rem;
  overflow-wrap: normal;
  text-wrap: balance;
}
#main .public-section-intro h2, #main .public-cta h2, #main .public-offer-story h2,
#main .public-faq-preview h2, #main .public-split > div > h2 {
  font-family: var(--font-display);
  font-size: var(--public-display-lg);
  font-weight: 600;
  line-height: 1.09;
  margin-bottom: .7rem;
  text-wrap: balance;
}
#main .public-hero .public-lead, #main .public-page-head:not(.legal-page-head) .public-lead {
  max-width: 62ch;
  font-family: var(--font-ui);
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  line-height: 1.62;
}
#main .public-section-intro { margin-bottom: clamp(1.3rem, 2.1vw, 2rem); }
#main .public-section-intro p:last-child, #main .public-offer-story p {
  max-width: 66ch;
  font-size: var(--public-body);
  line-height: 1.6;
}
#main .public-section-actions { margin-top: clamp(1.25rem, 2vw, 1.75rem); }
#main .public-hero .eyebrow, #main .public-page-head .eyebrow,
#main:has(> .public-hero, > .public-page-head:not(.legal-page-head)) .section .eyebrow,
#main .public-process-preview-step > span,
#main .public-process-step > span {
  font-family: var(--font-ui);
  font-size: clamp(.6875rem, .85vw, .8125rem);
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
#main .public-process-preview-step h3, #main .public-process-step h2,
#main .public-benefit h3, #main .public-feature h3, #main .public-package h3,
#main .public-product-content h3, #main .public-addon h3,
#main .public-faq-points h3, #main .public-offer-includes h3,
#main .public-product-group-heading {
  font-family: var(--font-ui);
  font-size: var(--public-card-title);
  font-weight: 600;
  line-height: 1.19;
  overflow-wrap: normal;
}
#main .public-process-preview-step h3 { margin: .65rem 0 .45rem; }
#main .public-process-five .public-process-preview-step h3 {
  font-size: clamp(1.2rem, 1.55vw, 1.45rem);
}
#main .public-process-grid, #main .public-process-preview-grid,
#main .public-benefits-grid, #main .public-product-grid,
#main .public-testimonials-grid { gap: clamp(.85rem, 1.3vw, 1.2rem); }
#main .public-process-step { min-width: 0; padding: clamp(1.5rem, 2.3vw, 2rem); }
#main .public-process-step h2 { margin: .7rem 0 .45rem; }
#main .public-process-step p, #main .public-process-preview-step p,
#main .public-benefit p, #main .public-product-content p:not(.eyebrow),
#main .public-addon p {
  font-family: var(--font-ui);
  font-size: 1rem;
  line-height: 1.57;
}
#main .public-benefit { padding: clamp(1.25rem, 1.7vw, 1.55rem); }
#main .public-benefit h3 { margin: .5rem 0 .45rem; }
#main .public-package-single .public-package { padding: clamp(1.4rem, 2.4vw, 2.2rem); }
#main .public-package h3 { margin-bottom: .6rem; }
#main .public-product-content { gap: .45rem; padding: clamp(1rem, 1.3vw, 1.2rem); }
#main .public-product-group-heading { margin: 1.6rem 0 .8rem; }
#main .public-addon { padding: clamp(1.15rem, 1.7vw, 1.5rem); }
#main .public-extra-hour { margin-bottom: 1.15rem; padding: 1.1rem 1.35rem; }
#main .public-testimonial { padding: clamp(1.15rem, 1.6vw, 1.4rem); }
#main .public-testimonial p:not(.review-stars) {
  font-family: var(--font-ui);
  font-size: clamp(.98rem, 1.1vw, 1.08rem);
  line-height: 1.58;
  margin-bottom: .85rem;
}
#main .public-testimonial .review-stars {
  color: var(--review-star-color);
  font-family: var(--font-ui);
  font-size: 1.25rem;
  letter-spacing: .05em;
  line-height: 1.2;
  margin-bottom: .7rem;
}
#main .public-testimonial footer { font-family: var(--font-ui); font-weight: 600; }
#main .public-contact-grid { gap: clamp(1.5rem, 2.5vw, 2.75rem); }
#main .public-contact-details > h2 {
  font-family: var(--font-ui);
  font-size: clamp(1.4rem, 1.7vw, 1.75rem);
  line-height: 1.2;
}
#main .public-contact-form-column h2 {
  font-family: var(--font-ui);
  font-size: clamp(1.5rem, 1.9vw, 2rem);
  font-weight: 600;
  line-height: 1.2;
  margin-bottom: .8rem;
}
#main .public-contact-form { gap: .75rem; }
#main .public-contact-form label { font-size: clamp(.875rem, .95vw, .9375rem); }
#main .public-contact-form input:not([type="checkbox"]),
#main .public-contact-form select, #main .public-contact-form textarea {
  font-family: var(--font-ui);
  font-size: 1rem;
}
#main .public-contact-form input:not([type="checkbox"]), #main .public-contact-form select {
  min-height: 44px;
  height: 44px;
}
#main .public-contact-form textarea { min-height: 140px; height: 150px; }
#main .faq-question { font-family: var(--font-ui); font-size: clamp(1rem, 1.3vw, 1.2rem); }

@media (min-width: 1200px) {
  #main .public-benefits-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 768px) and (max-width: 1199px) {
  #main .public-benefits-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) and (max-width: 1023px) {
  #main:has(> .public-hero, > .public-page-head:not(.legal-page-head)) {
    --public-display-xl: clamp(3rem, 5.4vw, 3.5rem);
    --public-display-lg: clamp(2.25rem, 4.2vw, 2.625rem);
  }
}
@media (max-width: 767px) {
  #main:has(> .public-hero, > .public-page-head:not(.legal-page-head)) {
    --public-display-xl: clamp(2.7rem, 9.5vw, 3rem);
    --public-display-lg: clamp(2rem, 7.5vw, 2.25rem);
    --public-section-space: clamp(2.25rem, 6vw, 3rem);
  }
  #main .public-hero h1, #main .public-page-head:not(.legal-page-head) h1 {
    overflow-wrap: break-word;
  }
  #main .public-process-step { padding: clamp(1.25rem, 5vw, 1.5rem); }
  #main .public-contact-grid { grid-template-columns: minmax(0, 1fr); }
  #main .public-contact-form-column, #main .public-contact-form { width: 100%; min-width: 0; }
}

/* preview.16: discreet public-only back-to-top control, created by public-site.js. */
:root {
  --back-to-top-size: 46px;
  --back-to-top-bg: var(--ps-navy);
  --back-to-top-color: #fff;
  --back-to-top-shadow: 0 3px 12px rgb(20 39 66 / 14%);
}
.back-to-top {
  position: fixed;
  z-index: 35;
  right: max(24px, calc(16px + env(safe-area-inset-right)));
  bottom: calc(28px + env(safe-area-inset-bottom));
  display: grid;
  place-items: center;
  width: var(--back-to-top-size);
  height: var(--back-to-top-size);
  min-width: var(--back-to-top-size);
  min-height: var(--back-to-top-size);
  padding: 0;
  border: 1px solid var(--back-to-top-bg);
  border-radius: 50%;
  background: var(--back-to-top-bg);
  box-shadow: var(--back-to-top-shadow);
  color: var(--back-to-top-color);
  font-family: var(--font-ui);
  font-size: 21px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transform: translateY(8px);
  visibility: hidden;
  pointer-events: none;
  transition: opacity 180ms ease, transform 180ms ease, visibility 0s linear 180ms;
}
.back-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
  visibility: visible;
  pointer-events: auto;
  transition-delay: 0s;
}
.back-to-top:hover { border-color: var(--ps-gold); background: #25415f; }
.back-to-top:focus-visible { outline: 3px solid var(--ps-gold); outline-offset: 3px; }
body:has(dialog[open], .cookie-banner:not([hidden]), .main-nav.is-open) .back-to-top {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
@media (max-width: 767px) {
  :root { --back-to-top-size: 44px; }
  .back-to-top { right: calc(16px + env(safe-area-inset-right)); bottom: calc(18px + env(safe-area-inset-bottom)); }
  .has-sticky-booking-cta .back-to-top { bottom: calc(96px + env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion: reduce) {
  .back-to-top { transition: none; transform: none; }
}
