/*
 * Website Evolution V3 — Luxury polish.
 *
 * This final presentation layer centralises rhythm, typography and motion.
 * It intentionally changes no content, permissions or business behaviour.
 */
:root {
    --luxury-ivory: #fffaf1;
    --luxury-ink: #12231f;
    --luxury-line: rgb(23 43 39 / .14);
    --luxury-line-strong: rgb(23 43 39 / .24);
    --luxury-metal: #a5793e;
    --luxury-glow: rgb(180 138 71 / .16);
    --luxury-reading: 66ch;
    --luxury-narrow: 52ch;
    --luxury-section: clamp(4.75rem, 9vw, 9rem);
    --motion-instant: 90ms;
    --motion-fast: 160ms;
    --motion-standard: 260ms;
    --motion-slow: 520ms;
    --motion-editorial: 760ms;
    --ease-luxury: cubic-bezier(.22, 1, .36, 1);
    --ease-purposeful: cubic-bezier(.4, 0, .2, 1);
}

html {
    scroll-padding-top: 6.5rem;
}

body {
    -webkit-font-smoothing: antialiased;
    font-kerning: normal;
    text-rendering: optimizeLegibility;
}

::selection {
    background: var(--gold-soft);
    color: var(--luxury-ink);
}

.public-body p,
.public-body li {
    text-wrap: pretty;
}

.public-body .lead,
.public-body .luxury-section-intro > p,
.public-body .v3-section-heading > p,
.public-body .v3-panel-heading > p {
    max-width: var(--luxury-reading);
}

.public-body h1 {
    letter-spacing: -.055em;
}

.public-body h2 {
    letter-spacing: -.035em;
}

.public-body h3,
.admin-body h2,
.admin-body h3 {
    letter-spacing: -.018em;
}

.eyebrow {
    letter-spacing: .17em;
}

.site-header{position: sticky;top:0;border-bottom:1px solid var(--luxury-line);background:rgb(248 245 239/.93);backdrop-filter:blur(22px) saturate(120%);transition:background-color var(--motion-standard) var(--ease-purposeful),border-color var(--motion-standard) var(--ease-purposeful),box-shadow var(--motion-standard) var(--ease-purposeful)}

.header-inner,.brand-copy small{transition:min-height var(--motion-standard) var(--ease-luxury),opacity var(--motion-fast) var(--ease-purposeful)}

.site-header[data-scroll-state="compact"] {
    border-color: var(--luxury-line-strong);
    background: rgb(248 245 239 / .975);
    box-shadow: 0 .85rem 2.6rem rgb(16 35 31 / .09);
}

.site-header[data-scroll-state="compact"] .header-inner{min-height:4.35rem}
.site-header[data-scroll-state="compact"] .brand-copy small{opacity:.72}

.header-portal{display:inline-flex;min-width:3rem;min-height:3rem;align-items:center;justify-content:center;gap:.5rem;padding:.65rem .8rem;border:1px solid #cecdc8;color:#18231f;font-size:.7rem;font-weight:750;letter-spacing:.04em;white-space:nowrap}
.header-portal:hover,.header-portal[aria-current="page"]{border-color:rgb(16 23 21/.42);background:rgb(255 255 255/.48)}
.header-portal:focus-visible{outline:2px solid #8f653f;outline-offset:3px}
.header-portal svg{flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4}
.mobile-menu-languages{display:none}
.brand,
.desktop-nav > a:not(.button),
.language-switcher a,
.mobile-menu summary {
    transition:
        color var(--motion-fast) var(--ease-purposeful),
        background-color var(--motion-fast) var(--ease-purposeful),
        border-color var(--motion-fast) var(--ease-purposeful),
        opacity var(--motion-fast) var(--ease-purposeful);
}

.header-brand {
    flex: 0 0 auto;
}

.header-logo {
    display: block;
    width: clamp(10.5rem, 13vw, 12.5rem);
    height: auto;
}

.brand-mark {
    transition:
        transform var(--motion-standard) var(--ease-luxury),
        box-shadow var(--motion-standard) var(--ease-luxury);
}

.brand:hover .brand-mark {
    box-shadow:
        inset 0 0 0 1px rgb(255 255 255 / .28),
        0 .7rem 1.6rem rgb(23 63 55 / .2);
    transform: translateY(-1px);
}

.desktop-nav > a:not(.button):hover,
.language-switcher a:hover {
    background: rgb(255 255 255 / .56);
    color: var(--ink);
    text-decoration: none;
}

.button,
button {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    box-shadow:
        inset 0 0 0 1px rgb(255 255 255 / .12),
        0 .45rem 1.3rem rgb(23 63 55 / .15);
    transition:
        background-color var(--motion-fast) var(--ease-purposeful),
        border-color var(--motion-fast) var(--ease-purposeful),
        color var(--motion-fast) var(--ease-purposeful),
        transform var(--motion-fast) var(--ease-luxury),
        box-shadow var(--motion-standard) var(--ease-luxury),
        opacity var(--motion-fast) var(--ease-purposeful);
}

.button:hover,
button:hover {
    box-shadow:
        inset 0 0 0 1px rgb(255 255 255 / .16),
        0 .8rem 1.8rem rgb(23 63 55 / .2);
    transform: translateY(-1px);
}

.button:active,
button:active {
    box-shadow: inset 0 0 0 1px rgb(255 255 255 / .18);
    transform: translateY(0) scale(.985);
    transition-duration: var(--motion-instant);
}

.button:disabled,
button:disabled,
[aria-disabled="true"] {
    box-shadow: none;
    cursor: not-allowed;
    opacity: .56;
    transform: none;
}

.button.secondary,
button.secondary {
    box-shadow: inset 0 0 0 1px rgb(23 63 55 / .06);
}

.text-link {
    position: relative;
    text-decoration: none;
}

.text-link::after {
    position: absolute;
    right: 0;
    bottom: .25rem;
    left: 0;
    height: 1px;
    background: currentColor;
    content: "";
    opacity: .42;
    transform: scaleX(.28);
    transform-origin: left;
    transition:
        opacity var(--motion-fast) var(--ease-purposeful),
        transform var(--motion-standard) var(--ease-luxury);
}

.text-link:hover::after,
.text-link:focus-visible::after {
    opacity: .8;
    transform: scaleX(1);
}

.mobile-menu-panel {
    opacity: 0;
    transform: translateY(-.5rem);
    transition:
        opacity var(--motion-standard) var(--ease-purposeful),
        transform var(--motion-standard) var(--ease-luxury);
}

.mobile-menu[open] .mobile-menu-panel {
    opacity: 1;
    transform: translateY(0);
}

.mobile-menu[open] summary {
    border-color: var(--luxury-line-strong);
    background: var(--luxury-ink);
    color: var(--luxury-ivory);
}

.site-header[data-scroll-state="compact"] .mobile-menu-panel {
    inset-block-start: 4.35rem;
}

.mobile-menu nav a {
    transition:
        background-color var(--motion-fast) var(--ease-purposeful),
        color var(--motion-fast) var(--ease-purposeful),
        transform var(--motion-fast) var(--ease-luxury);
}

.mobile-menu nav a:hover,
.mobile-menu nav a:focus-visible {
    background: var(--soft);
    transform: translateX(.2rem);
}

.luxury-home-hero .hero-copy > *,
.luxury-content-hero .hero-copy > *,
.luxury-about-hero .hero-copy > * {
    animation: luxury-intro var(--motion-editorial) var(--ease-luxury) both;
}

.luxury-home-hero .hero-copy > :nth-child(2),
.luxury-content-hero .hero-copy > :nth-child(2),
.luxury-about-hero .hero-copy > :nth-child(2) {
    animation-delay: 70ms;
}

.luxury-home-hero .hero-copy > :nth-child(3),
.luxury-content-hero .hero-copy > :nth-child(3),
.luxury-about-hero .hero-copy > :nth-child(3) {
    animation-delay: 130ms;
}

.luxury-home-hero .hero-copy > :nth-child(4),
.luxury-content-hero .hero-copy > :nth-child(4),
.luxury-about-hero .hero-copy > :nth-child(4) {
    animation-delay: 190ms;
}

@keyframes luxury-intro {
    from {
        opacity: 0;
        transform: translateY(1.1rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.luxury-motion-ready [data-luxury-reveal]:not(.is-visible) {
    opacity: 0;
    transform: translateY(1.4rem);
}

[data-luxury-reveal] {
    transition:
        opacity var(--motion-slow) var(--ease-purposeful),
        transform var(--motion-slow) var(--ease-luxury);
}

.luxury-proof,
.luxury-services,
.luxury-about,
.luxury-appointments,
.luxury-process,
.luxury-companions,
.luxury-editorial-links,
.luxury-contact {
    scroll-margin-top: 7rem;
}

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

.luxury-section-intro {
    margin-bottom: clamp(2.4rem, 5vw, 4.75rem);
}

.luxury-service,
.luxury-companion,
.v3-library-card,
.v3-seminar-card,
.v3-archive-card,
.v3-related-card,
.v3-portal-content-grid article {
    transition:
        border-color var(--motion-standard) var(--ease-purposeful),
        background-color var(--motion-standard) var(--ease-purposeful),
        box-shadow var(--motion-standard) var(--ease-luxury),
        transform var(--motion-standard) var(--ease-luxury);
}

.luxury-service:hover,
.luxury-companion:hover,
.v3-library-card:hover,
.v3-seminar-card:hover,
.v3-archive-card:hover,
.v3-related-card:hover,
.v3-portal-content-grid article:hover {
    border-color: var(--luxury-line-strong);
    box-shadow: 0 1.6rem 4rem rgb(16 35 31 / .1);
    transform: translateY(-3px);
}

.luxury-service:focus-within,
.luxury-companion:focus-within,
.v3-library-card:focus-within,
.v3-seminar-card:focus-within,
.v3-archive-card:focus-within,
.v3-related-card:focus-within {
    border-color: var(--focus);
}

.v3-library-card img,
.v3-seminar-card img,
.luxury-about figure img {
    transition:
        filter var(--motion-slow) var(--ease-purposeful),
        transform var(--motion-editorial) var(--ease-luxury);
}

.v3-library-card:hover img,
.v3-seminar-card:hover img,
.luxury-about figure:hover img {
    filter: saturate(.88) contrast(1.035);
    transform: scale(1.018);
}

.accordion summary,
details > summary {
    transition:
        color var(--motion-fast) var(--ease-purposeful),
        background-color var(--motion-fast) var(--ease-purposeful);
}

.accordion summary:hover,
details > summary:hover {
    color: var(--brand);
}

input,
select,
textarea {
    transition:
        background-color var(--motion-fast) var(--ease-purposeful),
        border-color var(--motion-fast) var(--ease-purposeful),
        box-shadow var(--motion-fast) var(--ease-purposeful);
}

input:focus,
select:focus,
textarea:focus {
    border-color: var(--brand);
    box-shadow: 0 0 0 4px rgb(40 93 82 / .12);
}

input:user-invalid,
select:user-invalid,
textarea:user-invalid {
    border-color: var(--danger);
}

[aria-invalid="true"] {
    border-color: var(--danger);
    box-shadow: 0 0 0 4px rgb(152 47 53 / .1);
}

input[type="checkbox"],
input[type="radio"] {
    accent-color: var(--brand);
}

form button::after {
    content: none;
}

.field-error {
    padding-left: .8rem;
    border-left: 2px solid var(--danger);
}

.success,
.error,
.warning,
.notice,
.empty {
    border: 1px solid transparent;
}

.success {
    border-color: rgb(37 97 62 / .18);
}

.error {
    border-color: rgb(152 47 53 / .2);
}

.warning,
.notice {
    border-color: rgb(122 83 22 / .16);
}

.empty {
    border-color: var(--luxury-line);
    background:
        linear-gradient(135deg, rgb(255 255 255 / .72), rgb(255 250 241 / .46));
}

.v3-daily-ritual .v3-ritual-stage,
.v3-daily-reveal,
.v3-oracle-reading,
.v3-daily-important,
.v3-reflection {
    box-shadow: 0 1.35rem 4rem rgb(10 28 24 / .08);
}

.v3-daily-reveal {
    transition:
        border-color var(--motion-standard) var(--ease-purposeful),
        box-shadow var(--motion-slow) var(--ease-luxury);
}

.v3-daily-reveal:focus-within {
    border-color: var(--luxury-metal);
    box-shadow: 0 1.75rem 5rem rgb(10 28 24 / .12);
}

.v3-portal {
    background:
        radial-gradient(circle at 85% 4%, var(--luxury-glow), transparent 22rem),
        linear-gradient(180deg, var(--paper), var(--cream));
}

.v3-portal-hero {
    border-bottom: 1px solid var(--luxury-line);
}

.v3-portal-primary,
.v3-portal-tile,
.v3-portal-panel {
    border-color: var(--luxury-line);
    box-shadow: 0 1rem 3rem rgb(23 43 39 / .055);
}

.v3-portal-primary {
    background:
        linear-gradient(145deg, rgb(19 53 46 / .98), rgb(29 73 63 / .96));
}

.v3-portal-notice,
.v3-portal-booking,
.v3-invoice-record,
.v3-record {
    transition:
        background-color var(--motion-fast) var(--ease-purposeful),
        border-color var(--motion-fast) var(--ease-purposeful);
}

.v3-portal-notice:hover,
.v3-portal-booking:hover,
.v3-invoice-record:hover,
.v3-record:hover {
    background-color: rgb(255 255 255 / .7);
    border-color: var(--luxury-line-strong);
}

.status-pill,
.badge {
    font-variant-numeric: tabular-nums;
    letter-spacing: .025em;
}

.admin-body {
    --admin-density: .88rem;
    background:
        radial-gradient(circle at 100% 0, rgb(40 93 82 / .08), transparent 28rem),
        #f4f1e9;
}

.admin-body .sidebar {
    border-right: 1px solid var(--luxury-line);
}

.admin-body .sidebar nav a,
.admin-body .breadcrumbs a {
    transition:
        background-color var(--motion-fast) var(--ease-purposeful),
        color var(--motion-fast) var(--ease-purposeful),
        transform var(--motion-fast) var(--ease-luxury);
}

.admin-body .sidebar nav a:hover,
.admin-body .sidebar nav a:focus-visible {
    transform: translateX(.15rem);
}

.staff-command {
    border-color: var(--luxury-line);
    background:
        linear-gradient(135deg, rgb(255 252 246 / .96), rgb(236 229 217 / .82));
    box-shadow: 0 1rem 3rem rgb(23 43 39 / .06);
}

.staff-metric {
    border-left-color: var(--luxury-metal);
    box-shadow: inset 0 0 0 1px var(--luxury-line);
}

.operation-row,
.agenda-entry,
.admin-body .card {
    transition:
        background-color var(--motion-fast) var(--ease-purposeful),
        border-color var(--motion-fast) var(--ease-purposeful),
        box-shadow var(--motion-standard) var(--ease-luxury);
}

.operation-row:hover,
.agenda-entry:hover {
    border-color: var(--luxury-line-strong);
    background-color: var(--luxury-ivory);
}

.admin-body table {
    font-variant-numeric: tabular-nums;
}

@media(max-width:1180px) {
    .header-portal{width:3rem;padding-inline:.6rem}
    .header-portal span{display:none}
}
@media(max-width:720px) {
    :root {
        --luxury-section: clamp(3.75rem, 16vw, 6rem);
    }

    html {
        scroll-padding-top: 5.75rem;
    }

    .site-header[data-scroll-state="compact"] .header-inner {
        min-height: 4.15rem;
    }

    .site-header[data-scroll-state="compact"] .mobile-menu-panel {
        inset-block-start: 4.15rem;
    }

    .mobile-menu-panel {
        padding-right: max(var(--s4), env(safe-area-inset-right));
        padding-bottom: max(var(--s4), env(safe-area-inset-bottom));
        padding-left: max(var(--s4), env(safe-area-inset-left));
    }

    .header-logo {
        width: clamp(8rem, 34vw, 10rem);
    }

    .public-body h1 {
        font-size: clamp(2.5rem, 13vw, 4.15rem);
        line-height: .98;
    }

    .public-body h2 {
        font-size: clamp(2rem, 9vw, 3rem);
        line-height: 1.03;
    }

    .button,
    button {
        min-height: 3rem;
    }

    .luxury-service:hover,
    .luxury-companion:hover,
    .v3-library-card:hover,
    .v3-seminar-card:hover,
    .v3-archive-card:hover,
    .v3-related-card:hover,
    .v3-portal-content-grid article:hover {
        transform: none;
    }

    .v3-portal-panel,
    .v3-portal-primary,
    .v3-portal-tile {
        border-radius: 1rem;
    }
}

@media(max-width:440px) {
    .header-actions>.language-selector{display:none}
    .mobile-menu .mobile-menu-languages{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.25rem;border-top:1px solid rgb(208 185 142/.24)}
    .mobile-menu-languages p{margin:0;color:rgb(244 239 226/.72);font-size:.67rem;font-weight:750;letter-spacing:.14em;text-transform:uppercase}
    .mobile-menu-languages div{display:flex;gap:.4rem}
    .mobile-menu-languages a{display:inline-flex;width:3rem;min-height:3rem;align-items:center;justify-content:center;border:1px solid rgb(208 185 142/.28);color:#f4efe2;font-size:.68rem;font-weight:800;letter-spacing:.08em}
    .mobile-menu-languages a[aria-current="page"]{border-color:#d0b98e;background:rgb(208 185 142/.12)}
}
@media(max-width:360px) {
    .public-body h1 {
        font-size: clamp(2.25rem, 12.5vw, 3.1rem);
    }

    .header-inner {
        gap: .55rem;
    }

    .brand-copy small {
        display: none;
    }

    .button,
    button {
        max-width: 100%;
        white-space: normal;
    }
}

@media(prefers-reduced-motion:reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-delay: 0s !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-delay: 0s !important;
        transition-duration: .01ms !important;
    }

    .luxury-motion-ready [data-luxury-reveal]:not(.is-visible) {
        opacity: 1;
        transform: none;
    }

    .site-header,
    .header-inner,
    .brand-copy small {
        transition: none;
    }
}

@media(max-width:360px) {
    .header-logo {
        width: 6.75rem;
    }

    .header-actions {
        gap: .3rem;
    }

    .mobile-menu summary {
        font-size: 0;
    }

    .mobile-menu summary::after {
        font-size: 1.25rem;
        line-height: 1;
        content: "☰";
    }

    .mobile-menu[open] summary::after {
        content: "×";
    }
}

@media(forced-colors: active) {
    .button,
    button,
    .text-link,
    .luxury-service,
    .luxury-companion,
    .v3-library-card,
    .v3-seminar-card,
    .v3-archive-card,
    .v3-related-card,
    .v3-portal-primary,
    .v3-portal-tile,
    .v3-portal-panel,
    .staff-command,
    .staff-metric,
    .operation-row,
    .agenda-entry {
        border: 2px solid CanvasText;
        box-shadow: none;
    }

    .site-header,
    .site-header[data-scroll-state="compact"],
    .mobile-menu[open] summary,
    .header-portal,
    .mobile-menu-languages a {
        border-color: CanvasText;
        background: Canvas;
        color: CanvasText;
        box-shadow: none;
    }

    .header-logo {
        padding: .2rem;
        background: Canvas;
    }

    .text-link::after {
        background: LinkText;
    }
}
