/*
 * Manuel Möbius Design System
 *
 * This is the final semantic layer for public, portal, staff and admin
 * surfaces. Component styles may consume the tokens below, but must not
 * introduce an automatic operating-system dark theme. The brand currently
 * has one deliberately art-directed, contrast-audited colour scheme.
 */
:root {
    color-scheme: light;

    --text-primary: #172b27;
    --text-secondary: #40534d;
    --text-muted: #586963;
    --text-inverse: #fffaf2;
    --text-inverse-muted: #c1d0cb;

    --surface-primary: #f8f5ef;
    --surface-secondary: #eee8dd;
    --surface-elevated: #fffdf8;
    --surface-accent: #e3d7c7;
    --surface-inverse: #10231f;
    --surface-inverse-hover: #24483e;

    --border-default: #b4bdb8;
    --border-strong: #6e7d77;

    --action-primary: #174f43;
    --action-primary-hover: #103b33;
    --action-secondary: #fffdf8;

    --state-success: #174b36;
    --state-success-surface: #e2f2e9;
    --state-warning: #65430f;
    --state-warning-surface: #fff0d2;
    --state-error: #742c24;
    --state-error-surface: #fde8e4;
    --focus-ring: #075ea8;
    --disabled-text: #5c6763;
    --disabled-surface: #e3e5e1;
    --lux-cognac: #754827;

    --type-display: clamp(3rem, 5vw, 5rem);
    --type-h1: clamp(2.4rem, 4vw, 4.2rem);
    --type-h2: clamp(1.9rem, 3.2vw, 3.35rem);
    --type-h3: clamp(1.35rem, 2vw, 1.85rem);
    --type-h4: 1.2rem;
    --type-lead: clamp(1.05rem, 1.35vw, 1.2rem);
    --type-body-large: 1.08rem;
    --type-body: 1rem;
    --type-small: .875rem;
    --type-caption: .78rem;
    --type-label: .82rem;
    --type-button: .875rem;
    --type-helper: .875rem;
    --type-validation: .875rem;

    --line-display: .98;
    --line-heading: 1.08;
    --line-body: 1.65;
    --line-compact: 1.4;

    --space-1: .25rem;
    --space-2: .5rem;
    --space-3: .75rem;
    --space-4: 1rem;
    --space-5: 1.5rem;
    --space-6: 2rem;
    --space-7: 3rem;
    --space-8: 4rem;
    --space-section: clamp(3.5rem, 6vw, 6rem);
    --space-section-large: clamp(4rem, 7vw, 6.5rem);

    --radius-control: .55rem;
    --radius-card: .9rem;
    --shadow-elevated: 0 1.25rem 3.5rem rgb(16 35 31 / .11);
    --content-reading: 68ch;
    --control-min-height: 2.75rem;

    /* Compatibility aliases for the established component layers. */
    --ink: var(--text-primary);
    --muted: var(--text-muted);
    --paper: var(--surface-primary);
    --surface: var(--surface-elevated);
    --soft: var(--surface-secondary);
    --border: var(--border-default);
    --brand: var(--action-primary);
    --brand-strong: var(--action-primary-hover);
    --focus: var(--focus-ring);
    --luxury-section: var(--space-section-large);
}

html {
    background: var(--surface-primary);
}

body,
.admin-body {
    background: var(--surface-primary);
    color: var(--text-primary);
    font-size: var(--type-body);
    line-height: var(--line-body);
}

/* A CMS "soft" section remains a light editorial surface even when an
 * active theme uses its secondary surface token for dark brand panels. */
.public-body .section.soft {
    background: linear-gradient(130deg, var(--surface-primary), var(--surface-elevated));
    color: var(--text-primary);
}

.public-body .section.soft > .shell > :is(h1, h2, h3, p),
.public-body .section.soft .accordion summary {
    color: var(--text-primary);
}

/* Experience hubs use a deliberately dark editorial intro. The global
 * cognac eyebrow is intended for light surfaces, so use the audited inverse
 * accent here instead of relying on inheritance from the active theme. */
.public-body .experience-hub .experience-intro .eyebrow {
    color: #d4b27d;
}

.site-header,
.site-header[data-scroll-state="compact"] {
    background: rgb(248 245 239 / .975);
    color: var(--text-primary);
}

.luxury-services,
.luxury-process,
.luxury-editorial-links {
    background: var(--surface-primary);
    color: var(--text-primary);
}

.luxury-proof,
.luxury-contact {
    background: #f1ede4;
    color: var(--text-primary);
}

.luxury-appointments {
    background: #dcd4c7;
    color: var(--text-primary);
}

.luxury-companions {
    background: #d8cfc1;
    color: var(--text-primary);
}

.v3-detail-object,
.v3-cover-stage,
.v3-meta-row span,
.v3-portal-security {
    background-color: var(--surface-elevated);
    color: var(--text-primary);
}

.site-footer {
    background: #091512;
    color: #eee9df;
}

.public-body h1,
.admin-body h1 {
    font-size: var(--type-h1);
    line-height: var(--line-display);
}

.public-body h2,
.admin-body h2 {
    font-size: var(--type-h2);
    line-height: var(--line-heading);
}

.public-body h3,
.admin-body h3 {
    font-size: var(--type-h3);
    line-height: 1.15;
}

.public-body h4,
.admin-body h4 {
    font-size: var(--type-h4);
    line-height: 1.25;
}

.eyebrow,
.status-label,
.luxury-proof-intro,
.luxury-paths article > span {
    color: var(--lux-cognac);
    font-size: var(--type-caption);
}

/*
 * Public chapter labels always participate in normal document flow. This is
 * intentionally stronger than page-specific art direction: an eyebrow must
 * never be pinned over a heading when text wraps or the viewport narrows.
 */
.public-body .eyebrow {
    position: static !important;
    inset: auto !important;
    max-width: 100%;
    color: #754827;
    line-height: 1.45;
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: auto;
}

.public-body .luxury-proof-intro,
.public-body .luxury-paths article > span,
.public-body .v3-module-navigation a > span:first-child {
    color: #754827;
}

.public-body .hero-copy > .eyebrow {
    color: #754827;
}

.public-body .eyebrow + :is(h1, h2, h3, h4) {
    margin-top: 0;
}

.public-body :is(h1, h2, h3, h4) {
    max-width: 100%;
    overflow-wrap: break-word;
    text-wrap: balance;
}

.public-body .luxury-home-hero .eyebrow,
.public-body .luxury-about .eyebrow,
.public-body .luxury-companion:first-child .eyebrow,
.public-body .luxury-closing .eyebrow,
.public-body .footer-invitation .eyebrow,
.public-body .cta-panel .eyebrow,
.public-body .contact-box .eyebrow,
.public-body .booking-assurance .eyebrow,
.public-body .editorial-feature .eyebrow {
    color: #d4b27d;
}

.public-body .lead,
.admin-body .lead {
    color: var(--text-secondary);
    font-size: var(--type-lead);
    line-height: 1.6;
}

.muted,
small,
.helper,
.form-help {
    color: var(--text-muted);
}

p,
li,
dd {
    max-width: var(--content-reading);
}

a:not(.button):not(.brand) {
    text-decoration-thickness: .08em;
    text-underline-offset: .18em;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
    outline: 3px solid var(--focus-ring);
    outline-offset: 3px;
}

.button,
button,
input,
select,
textarea,
summary {
    min-height: var(--control-min-height);
}

.button,
button {
    min-width: 0;
    max-width: 100%;
    font-size: var(--type-button);
    font-weight: 750;
    line-height: 1.25;
    text-align: center;
    white-space: normal;
}

.button:not(:where(.secondary, .tertiary, .destructive)),
button:not(:where(.secondary, .tertiary, .destructive)) {
    border-color: var(--action-primary);
    background: var(--action-primary);
    color: var(--text-inverse);
}

.button:not(:where(.secondary, .tertiary, .destructive)):hover,
button:not(:where(.secondary, .tertiary, .destructive)):hover {
    border-color: var(--action-primary-hover);
    background: var(--action-primary-hover);
    color: var(--text-inverse);
}

.button:not(:where(.secondary, .tertiary, .destructive)):active,
button:not(:where(.secondary, .tertiary, .destructive)):active {
    border-color: var(--surface-inverse);
    background: var(--surface-inverse);
    color: var(--text-inverse);
}

.button.secondary,
button.secondary {
    border-color: var(--border-strong);
    background: var(--action-secondary);
    color: var(--text-primary);
}

.button.tertiary,
button.tertiary {
    border-color: transparent;
    background: transparent;
    color: var(--action-primary);
    box-shadow: none;
}

.button.destructive,
button.destructive {
    border-color: var(--state-error);
    background: var(--state-error);
    color: #fff;
}

.button:disabled,
button:disabled,
[aria-disabled="true"] {
    border-color: var(--border-default);
    background: var(--disabled-surface);
    color: var(--disabled-text);
    opacity: 1;
}

.admin-body :is(.button, button)[aria-pressed="true"]:not(:disabled) {
    border-color: var(--action-primary);
    background: var(--action-primary);
    color: var(--text-inverse);
}

.admin-body :is(.button, button) :is(.muted, small) {
    color: inherit;
}

input,
select,
textarea {
    border-color: var(--border-strong);
    border-radius: var(--radius-control);
    background: var(--surface-elevated);
    color: var(--text-primary);
    font-size: 1rem;
}

::placeholder {
    color: #65736e;
    opacity: 1;
}

label,
legend {
    color: var(--text-primary);
    font-size: var(--type-label);
    font-weight: 700;
}

.check,
.premium-check {
    min-height: 2.875rem;
    align-items: flex-start;
    padding-block: .5rem;
}

.error,
.success,
.warning {
    border: 1px solid currentColor;
    font-size: var(--type-validation);
    line-height: 1.5;
}

.error {
    background: var(--state-error-surface);
    color: var(--state-error);
}

.success {
    background: var(--state-success-surface);
    color: var(--state-success);
}

.warning {
    background: var(--state-warning-surface);
    color: var(--state-warning);
}

.section,
.luxury-services,
.luxury-appointments,
.luxury-process,
.luxury-editorial-links,
.luxury-contact {
    padding-block: var(--space-section);
}

.luxury-section-intro {
    gap: clamp(2rem, 5vw, 5rem);
    margin-bottom: clamp(2rem, 4vw, 3.5rem);
}

.luxury-section-intro h2,
.luxury-about-copy h2,
.luxury-contact h2,
.luxury-closing h2 {
    font-size: var(--type-h2);
    line-height: 1.02;
}

.hero {
    min-height: auto;
    padding-block: clamp(2.75rem, 5vw, 4.75rem);
}

.hero h1 {
    max-width: 15ch;
    font-size: var(--type-h1);
    line-height: var(--line-display);
}

.luxury-home-hero {
    min-height: clamp(34rem, calc(100svh - 8rem), 42rem);
}

.luxury-home-hero .hero-copy {
    width: min(38rem, 55%);
}

.luxury-home-hero h1 {
    max-width: 12.5ch;
    margin-block: 1.1rem 1.35rem;
    color: #fffaf1;
    font-size: clamp(3rem, 4.4vw, 4.4rem);
    line-height: .96;
}

.luxury-home-hero .lead {
    color: #e3ddd3;
}

.luxury-home-hero .button {
    border-color: #d4b27d;
    background: #d4b27d;
    color: #14231f;
}

.cta-panel .button {
    border-color: #d4b27d;
    background: #d4b27d;
    color: #14231f;
}

.luxury-home-hero .text-link {
    color: #fffaf1;
}

.luxury-hero-shell {
    padding-top: 2rem;
}

.luxury-service,
.luxury-paths article {
    padding-block: clamp(1.5rem, 3vw, 2.25rem);
}

.luxury-process li {
    min-height: 11rem;
    padding: 1.5rem;
}

.luxury-process li > span {
    margin-bottom: 2rem;
}

.luxury-companion {
    min-height: 18rem;
}

.luxury-companion .eyebrow {
    align-self: flex-start;
    margin: 0 0 var(--space-4);
}

.v3-podcast-feature-copy > .eyebrow {
    color: #d4b27d;
}

.v3-podcast-row-number {
    color: #754827;
}

.public-pagination {
    margin-block: var(--space-6);
}

.public-pagination ul {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0;
    list-style: none;
}

.public-pagination :is(a, span) {
    min-width: var(--control-min-height);
    min-height: var(--control-min-height);
    display: inline-grid;
    place-items: center;
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--border-default);
    background: var(--surface-elevated);
    color: var(--text-primary);
    text-decoration: none;
}

.public-pagination [aria-current="page"] {
    border-color: var(--action-primary);
    background: var(--action-primary);
    color: var(--text-inverse);
}

.public-pagination [aria-disabled="true"] {
    background: var(--disabled-surface);
    color: var(--disabled-text);
}

.luxury-companion:is(:hover, :focus-visible) {
    border-color: #d4b27d;
    background: #091512;
    color: var(--text-inverse);
}

.luxury-companion:is(:hover, :focus-visible) h3,
.luxury-companion:is(:hover, :focus-visible) p,
.luxury-companion:is(:hover, :focus-visible) > span:last-child,
.luxury-companion:is(:hover, :focus-visible) svg {
    color: inherit;
}

.luxury-companion:is(:hover, :focus-visible) .eyebrow {
    color: #d4b27d;
}

.luxury-companion:is(:hover, :focus-visible) h3 {
    text-decoration: underline;
    text-decoration-color: #d4b27d;
    text-decoration-thickness: .07em;
    text-underline-offset: .18em;
}

@media (hover: none) {
    .luxury-companion:active {
        border-color: #d4b27d;
        background: #091512;
        color: var(--text-inverse);
    }

    .luxury-companion:active h3,
    .luxury-companion:active p,
    .luxury-companion:active > span:last-child,
    .luxury-companion:active svg {
        color: inherit;
    }

    .luxury-companion:active .eyebrow {
        color: #d4b27d;
    }
}

.luxury-editorial-links article {
    min-height: 18rem;
}

.luxury-editorial-links h2 {
    margin-top: 2.5rem;
}

.v3-module-navigation a {
    min-height: 10rem;
    padding: 1.5rem 1.1rem;
}

.v3-module-navigation a strong {
    margin-top: 1.5rem;
}

.footer-invitation {
    gap: 3rem;
    padding-block: clamp(3.25rem, 5vw, 5rem);
}

.footer-invitation p:not(.eyebrow) {
    max-width: 16ch;
    font-size: clamp(2.25rem, 4vw, 4rem);
    line-height: 1;
}

.footer-grid {
    padding-block: clamp(2.5rem, 4vw, 4rem);
}

.footer-grid h2 {
    color: #dfbd86;
    font-size: var(--type-caption);
}

.footer-grid a,
.footer-grid p,
.footer-bottom {
    color: #dedbd3;
    font-size: var(--type-small);
}

.premium-booking {
    padding-block: clamp(2.5rem, 4.5vw, 4.75rem) 5rem;
}

.premium-booking-intro h1 {
    font-size: var(--type-h1);
}

.booking-stage,
.booking-panel,
.v3-auth-card,
.portal-panel,
.admin-card,
.card {
    border-color: var(--border-default);
    border-radius: var(--radius-card);
}

.booking-assurance span,
.service-card-copy > span,
.payment-method-card small,
.booking-fields small,
.booking-contract-form > p,
.calendar-legend,
.calendar-weekday {
    color: var(--text-muted);
    font-size: var(--type-small);
}

.calendar-grid button:disabled {
    color: var(--disabled-text);
}

.v3-portal-auth {
    min-height: auto;
    padding: clamp(2.5rem, 5vw, 4.5rem) 0;
}

.v3-auth-shell {
    align-items: start;
    gap: clamp(2rem, 5vw, 4.5rem);
}

.v3-auth-intro h1 {
    font-size: var(--type-h1);
}

.personal-registration .v3-auth-intro h1 {
    font-size: var(--type-h1);
}

.v3-auth-intro .v3-portal-security {
    margin: 1.25rem 0;
}

.v3-auth-card {
    padding: clamp(1.25rem, 3vw, 2.25rem);
}

.v3-daily-meta,
.v3-daily-note,
.v3-daily-ritual .v3-ritual-steps li,
.daily-flip-card > figcaption span,
.daily-flip-card > figcaption small {
    font-size: max(.75rem, 1em);
    line-height: 1.4;
}

.v3-daily-note summary {
    display: flex;
    min-height: var(--control-min-height);
    align-items: center;
}

.admin-main {
    padding: clamp(1rem, 3vw, 2.5rem);
}

.admin-main > .card {
    margin-bottom: var(--space-5);
}

.admin-main .card {
    padding: clamp(1rem, 2vw, 1.5rem);
}

.admin-main .card h2 {
    font-size: clamp(1.4rem, 2vw, 1.9rem);
}

.sidebar {
    background: #10231f;
}

.sidebar nav a {
    color: #eef3f0;
}

.sidebar nav a:hover,
.sidebar nav a:focus-visible {
    background: #294d43;
    color: #fff;
}

th {
    background: var(--surface-secondary);
    color: var(--text-primary);
}

th,
td {
    padding: .75rem;
}

.badge {
    min-width: 0;
    max-width: 100%;
    border: 1px solid var(--border-default);
    background: var(--surface-secondary);
    color: var(--text-primary);
    font-size: var(--type-caption);
    line-height: 1.3;
    overflow-wrap: break-word;
    text-align: center;
    white-space: normal;
}

.badge--neutral {
    border-color: var(--border-default);
    background: var(--surface-secondary);
    color: var(--text-primary);
}

.badge--success {
    border-color: #93b9a4;
    background: var(--state-success-surface);
    color: var(--state-success);
}

.badge--warning {
    border-color: #d1ac6d;
    background: var(--state-warning-surface);
    color: var(--state-warning);
}

.badge--danger {
    border-color: #d5a19a;
    background: var(--state-error-surface);
    color: var(--state-error);
}

/* Dark administrative surfaces opt into inverse text explicitly. This also
   defeats legacy global heading and muted-text rules without weakening them
   on light cards. */
.admin-body :is(.admin-inverse-surface, .boc-summary, .boc-price-summary) {
    background-color: var(--surface-inverse);
    color: var(--text-inverse);
}

.admin-body :is(.admin-inverse-surface, .boc-summary, .boc-price-summary) :is(h1, h2, h3, h4, p, li, dd, strong, label, legend) {
    color: inherit;
}

.admin-body :is(.admin-inverse-surface, .boc-summary, .boc-price-summary) :is(.muted, small, .helper, .form-help) {
    color: var(--text-inverse-muted);
}

.admin-card-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.admin-card-heading h2,
.admin-card-heading p {
    margin-bottom: 0;
}

.admin-invoice-filters {
    display: grid;
    grid-template-columns: minmax(14rem, 1.3fr) repeat(2, minmax(11rem, .75fr)) auto;
    align-items: end;
    gap: var(--space-4);
}

.admin-invoice-filters label {
    margin: 0;
}

.admin-invoice-filter-actions {
    align-self: end;
}

.admin-table-actions {
    display: grid;
    min-width: 9.5rem;
    gap: .2rem;
}

.admin-table-actions a {
    display: inline-flex;
    min-height: 2.75rem;
    align-items: center;
    font-weight: 700;
}

.admin-invoice-summary .card {
    min-height: 8rem;
}

.admin-pagination {
    margin-block: var(--space-6);
}

.admin-pagination ul {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    margin: 0;
    padding: 0;
    list-style: none;
}

.admin-pagination :is(a, span) {
    min-width: var(--control-min-height);
    min-height: var(--control-min-height);
    display: inline-grid;
    place-items: center;
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-control);
    background: var(--surface-elevated);
    color: var(--text-primary);
    font-weight: 700;
    text-decoration: none;
}

.admin-pagination a:hover {
    border-color: var(--action-primary);
    background: var(--surface-secondary);
    color: var(--text-primary);
}

.admin-pagination [aria-current="page"] {
    border-color: var(--action-primary);
    background: var(--action-primary);
    color: var(--text-inverse);
}

.admin-pagination [aria-disabled="true"] {
    border-color: var(--border-default);
    background: var(--disabled-surface);
    color: var(--disabled-text);
}

@media (max-width: 1100px) {
    .admin-invoice-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .admin-card-heading,
    .admin-invoice-filter-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .admin-invoice-filters {
        grid-template-columns: minmax(0, 1fr);
    }

    /* Tables opt into this mobile card layout explicitly. Keeping the
       conversion on the shared marker prevents wide data tables from being
       squeezed while preserving their semantic table structure in the DOM. */
    .admin-responsive-card-table {
        border: 0;
        background: transparent;
        overflow: visible;
    }

    .admin-responsive-card-table table,
    .admin-responsive-card-table tbody,
    .admin-responsive-card-table tr,
    .admin-responsive-card-table td {
        display: block;
        width: 100%;
        min-width: 0;
    }

    .admin-responsive-card-table thead {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }

    .admin-responsive-card-table tr {
        margin-bottom: var(--space-4);
        padding: var(--space-4);
        border: 1px solid var(--border-default);
        border-radius: var(--radius-card);
        background: var(--surface-elevated);
        box-shadow: 0 .35rem 1.2rem rgb(23 43 39 / .045);
    }

    .admin-responsive-card-table td {
        display: grid;
        grid-template-columns: minmax(7.5rem, .7fr) minmax(0, 1.3fr);
        gap: var(--space-3);
        padding: var(--space-3) 0;
        border-bottom: 1px solid var(--border-default);
    }

    .admin-responsive-card-table td:last-child {
        border-bottom: 0;
    }

    .admin-responsive-card-table td::before {
        color: var(--text-muted);
        content: attr(data-label);
        font-size: var(--type-caption);
        font-weight: 800;
    }

    .admin-responsive-card-table td:not([data-label]) {
        display: block;
    }

    .admin-responsive-card-table td:not([data-label])::before {
        display: none;
    }

    .admin-responsive-card-table .admin-responsive-card-table__empty {
        padding: 0;
        border: 0;
        background: transparent;
        box-shadow: none;
    }

    .admin-responsive-card-table .admin-responsive-card-table__empty td {
        padding: 0;
        border: 0;
    }

    .admin-table-actions {
        min-width: 0;
    }
}

.empty {
    padding: clamp(1.5rem, 4vw, 3rem);
    color: var(--text-secondary);
}

.design-system-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
    gap: var(--space-4);
}

.design-system-swatch {
    min-height: 7rem;
    padding: var(--space-4);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-card);
}

.design-system-swatch--primary {
    background: var(--surface-primary);
    color: var(--text-primary);
}

.design-system-swatch--secondary {
    background: var(--surface-secondary);
    color: var(--text-secondary);
}

.design-system-swatch--action {
    background: var(--action-primary);
    color: var(--text-inverse);
}

.design-system-swatch--elevated {
    background: var(--surface-elevated);
    color: var(--text-muted);
}

.design-system-stack {
    display: grid;
    gap: var(--space-4);
}

.header-booking-compact {
    display: none;
}

@media (max-width: 820px) {
    .luxury-home-hero {
        min-height: calc(100svh - 4.4rem);
        align-items: end;
    }

    .luxury-hero-shell {
        padding-block: 12rem 2rem;
    }

    .luxury-home-hero h1 {
        font-size: clamp(2.5rem, 10vw, 3.6rem);
    }

    .luxury-about-portrait {
        height: min(30rem, 115vw);
    }

    .luxury-companion,
    .luxury-editorial-links article,
    .luxury-editorial-links article:first-child {
        min-height: 14rem;
    }
}

@media (max-width: 620px) {
    .hero {
        padding-block: 2.25rem;
    }

    .hero h1,
    .public-body h1,
    .admin-body h1 {
        font-size: clamp(2.15rem, 10.5vw, 3rem);
        line-height: 1.02;
    }

    .public-body h2,
    .admin-body h2 {
        font-size: clamp(1.75rem, 8vw, 2.4rem);
    }

    .luxury-home-hero {
        min-height: min(42rem, calc(100svh - 4.4rem));
        padding: 0;
    }

    .luxury-hero-media {
        height: min(20rem, 48svh);
    }

    .luxury-hero-shell {
        padding-block: 8rem 1.5rem;
    }

    .luxury-home-hero .hero-copy {
        width: 100%;
    }

    .luxury-home-hero h1 {
        font-size: clamp(2.35rem, 11vw, 3.15rem);
        margin-block: .75rem 1rem;
    }

    .luxury-home-hero .lead {
        font-size: 1rem;
        line-height: 1.45;
        margin-top: .75rem;
    }

    .luxury-home-hero .hero-actions {
        gap: .75rem;
        margin-top: 1rem;
    }

    .section,
    .luxury-services,
    .luxury-appointments,
    .luxury-process,
    .luxury-editorial-links,
    .luxury-contact {
        padding-block: 3rem;
    }

    .v3-portal-auth {
        padding-block: 2rem;
    }

    .v3-auth-shell {
        gap: 1.5rem;
    }

    .v3-auth-intro .v3-portal-security {
        margin-block: .75rem;
    }

    .premium-booking {
        padding-top: 2rem;
    }

    .premium-booking-intro h1 {
        font-size: clamp(2.2rem, 10vw, 3rem);
    }

    .footer-invitation {
        gap: 1.5rem;
        padding-block: 2.75rem;
    }

    .footer-invitation p:not(.eyebrow) {
        font-size: clamp(2rem, 10vw, 2.8rem);
    }

    .footer-grid {
        gap: 2rem;
        padding-block: 2.5rem;
    }

    .admin-main {
        padding: 1rem;
    }

    .admin-main .actions > * {
        width: auto;
        max-width: 100%;
    }
}

/* Long localized booking labels switch before common 412–440 px phones overflow. */
@media (max-width: 480px) {
    .header-booking-full {
        display: none;
    }

    .header-booking-compact {
        display: inline;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}

@media (forced-colors: active) {
    :root {
        --text-primary: CanvasText;
        --text-secondary: CanvasText;
        --text-muted: CanvasText;
        --text-inverse: Canvas;
        --surface-primary: Canvas;
        --surface-secondary: Canvas;
        --surface-elevated: Canvas;
        --surface-accent: Canvas;
        --border-default: CanvasText;
        --border-strong: CanvasText;
        --action-primary: ButtonText;
        --action-primary-hover: Highlight;
        --action-secondary: Canvas;
        --focus-ring: Highlight;
    }

    .button,
    button,
    input,
    select,
    textarea,
    .card,
    .admin-card,
    .booking-stage,
    .payment-method-card {
        border: 2px solid CanvasText;
    }

    :focus-visible {
        outline: 3px solid Highlight !important;
        outline-offset: 3px !important;
    }

    .luxury-companion:is(:hover, :focus-visible),
    .luxury-companion:active {
        border-color: HighlightText;
        background: Highlight;
        color: HighlightText;
        forced-color-adjust: auto;
    }

    .luxury-companion:is(:hover, :focus-visible) h3,
    .luxury-companion:is(:hover, :focus-visible) p,
    .luxury-companion:is(:hover, :focus-visible) .eyebrow,
    .luxury-companion:is(:hover, :focus-visible) > span:last-child,
    .luxury-companion:active h3,
    .luxury-companion:active p,
    .luxury-companion:active .eyebrow,
    .luxury-companion:active > span:last-child {
        color: HighlightText;
    }
}
