/* =========================================================
   Legacy Engravings — design system
   ========================================================= */

:root {
    --ink:        #0a0907;
    --ink-2:      #141210;
    --ink-3:      #1c1916;
    --bone:       #f5f1ea;
    --bone-2:     #cfc7b8;
    --mute:       #6b6964;
    --rule:       rgba(245, 241, 234, 0.08);
    --rule-2:     rgba(245, 241, 234, 0.16);
    --copper:     #c8a87a;
    --copper-2:   rgba(200, 168, 122, 0.18);

    --ease:       cubic-bezier(0.2, 0.6, 0.2, 1);
    --ease-out:   cubic-bezier(0.16, 1, 0.3, 1);
    --ease-emph:  cubic-bezier(0.65, 0, 0.05, 1);

    --pad:        clamp(20px, 4vw, 56px);
    --maxw:       1440px;

    --font-display: "Fraunces", "Times New Roman", serif;
    --font-ui:      "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
img, svg { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; text-decoration: none; }
ol, ul { list-style: none; padding: 0; margin: 0; }
h1, h2, h3, h4, p { margin: 0; }

html { scroll-behavior: auto; }
body.le-body {
    background: var(--ink);
    color: var(--bone);
    font-family: var(--font-ui);
    font-size: 16px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
    /* cursor: none; */ /* paired with the custom .le-cursor in Index.cshtml — re-enable together. */
}

/* Engraving texture — shop + home, masked + tinted dark grey, rotated 45° */
body.le-body:has(.le-shop-head)::before,
body.le-body:has(.le-hero)::before {
    content: "";
    position: fixed;
    top: -50vh;
    left: -50vw;
    width: 200vw;
    height: 200vh;
    pointer-events: none;
    z-index: 0;
    background-color: #1a1612;
    transform: rotate(45deg);
    transform-origin: center center;
    -webkit-mask-repeat: repeat;
            mask-repeat: repeat;
    -webkit-mask-size: 720px auto;
            mask-size: 720px auto;
}
body.le-body:has(.le-shop-head)::before {
    -webkit-mask-image: url("/pics/engraving.svg");
            mask-image: url("/pics/engraving.svg");
}
body.le-body:has(.le-hero)::before {
    -webkit-mask-image: url("/pics/engraving-home.svg");
            mask-image: url("/pics/engraving-home.svg");
}

/* Subtle film grain (very faint) */
body.le-body::after {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.05;
    mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* Keep page content above the engraving texture */
.le-body > main { position: relative; z-index: 1; }

@media (hover: none), (pointer: coarse) {
    body.le-body { cursor: auto; }
}

/* ---------- custom cursor (paper-airplane) ---------- */
.le-cursor {
    position: fixed;
    top: 0; left: 0;
    width: 40px; height: 40px;
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 10000;
    background-repeat: no-repeat;
    transition: width 0.45s var(--ease), height 0.45s var(--ease),
                opacity 0.3s var(--ease);
    will-change: transform;
}
.le-cursor__plane {
    width: 100%; height: 100%;
    transform: rotate(var(--angle, -28deg));
    transform-origin: 50% 50%;
    transition: transform 0.18s linear;
    filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.35));
}
.le-cursor__plane svg { width: 100%; height: 100%; display: block; overflow: visible; }
.le-cursor__plane-body {
    fill: rgba(245, 241, 234, 0.08);
    stroke: rgba(190, 188, 184, 0.85);
    stroke-width: 4;
    stroke-linejoin: round;
    stroke-linecap: round;
}
/* Wiggle while moving — keyframes recompute calc() with the live --angle. */
.le-cursor.is-moving .le-cursor__plane {
    animation: le-cursor-wiggle 0.42s ease-in-out infinite;
    transition: none;
}
@keyframes le-cursor-wiggle {
    0%   { transform: rotate(calc(var(--angle, 0deg) - 7deg)); }
    50%  { transform: rotate(calc(var(--angle, 0deg) + 7deg)); }
    100% { transform: rotate(calc(var(--angle, 0deg) - 7deg)); }
}
.le-cursor.is-hover {
    width: 64px;
    height: 64px;
}
/* Lens mode (currently disabled in JS) — circle wraps the magnified image. */
.le-cursor.is-lens {
    width: 120px;
    height: 120px;
    border: 2px solid rgba(245, 241, 234, 0.92);
    border-radius: 50%;
    background-color: var(--ink);
    box-shadow:
        0 0 0 1px rgba(0, 0, 0, 0.5),
        0 18px 40px rgba(0, 0, 0, 0.55),
        inset 0 0 0 1px rgba(255, 255, 255, 0.18),
        inset 0 12px 24px -8px rgba(255, 255, 255, 0.18);
}
.le-cursor.is-lens .le-cursor__plane { display: none; }
@media (hover: none), (pointer: coarse) {
    .le-cursor { display: none; }
}

/* =========================================================
   Nav
   ========================================================= */
.le-nav {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 100;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    padding: 22px var(--pad);
    transition: background 0.4s var(--ease), backdrop-filter 0.4s var(--ease), padding 0.4s var(--ease);
}
.le-nav.is-scrolled {
    background: rgba(10, 9, 7, 0.72);
    backdrop-filter: saturate(140%) blur(14px);
    -webkit-backdrop-filter: saturate(140%) blur(14px);
    padding-top: 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--rule);
}
.le-nav__brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-family: var(--font-display);
    font-weight: 500;
    letter-spacing: 0.02em;
    font-size: 15px;
}
.le-nav__brand-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px; height: 32px;
}
.le-nav__brand-mark img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
.le-nav__brand-word { color: var(--bone); }
.le-nav__links {
    display: flex;
    gap: 28px;
    justify-self: center;
    font-size: 13px;
    letter-spacing: 0.02em;
}
.le-nav__links a {
    color: var(--bone-2);
    position: relative;
    padding: 8px 2px;
    transition: color 0.3s var(--ease);
}
.le-nav__links a::after {
    content: "";
    position: absolute;
    left: 0; right: 0; bottom: 4px;
    height: 1px;
    background: var(--bone);
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.5s var(--ease-out);
}
.le-nav__links a:hover,
.le-nav__links a.is-active { color: var(--bone); }
.le-nav__links a:hover::after,
.le-nav__links a.is-active::after { transform: scaleX(1); transform-origin: left center; }
.le-nav__links a.is-active::after { background: var(--copper); }
.le-nav__cta {
    justify-self: end;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 11px 18px;
    border: 1px solid var(--bone);
    border-radius: 999px;
    font-size: 13px;
    letter-spacing: 0.04em;
    background: var(--bone);
    color: var(--ink);
    transition: background 0.4s var(--ease), border-color 0.4s var(--ease), color 0.4s var(--ease);
    will-change: transform;
}
.le-nav__cta:hover {
    background: var(--copper);
    border-color: var(--copper);
    color: var(--ink);
}

@media (max-width: 720px) {
    .le-nav { grid-template-columns: 1fr auto; }
    .le-nav__links { display: none; }
    .le-nav__brand-word { display: none; }
}

/* =========================================================
   Hero
   ========================================================= */
.le-hero {
    position: relative;
    min-height: 100vh;
    padding: 140px var(--pad) 30px;
    display: grid;
    grid-template-rows: 1fr auto;
    overflow: hidden;
    isolation: isolate;
    background: var(--ink);
}

/* Sections that should sit on solid black instead of the engraving texture.
   Keeps the texture as a punctuation between sections, not a wallpaper. */
.le-cta,
.le-process,
.le-footer {
    background: var(--ink);
    position: relative;
}

/* Hero photo — full bleed */
.le-hero__photo {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.le-hero__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    /* Slight scale gives slack so the translate doesn't reveal a blank edge. */
    transform: translateX(6%) scale(1.10);
    transform-origin: center;
    filter: brightness(0.96) saturate(0.95) contrast(1.04);
}

/* Dark gradient scrim — keeps text legible over the photo's lighter mid-tones,
   then fades into the surround at top/bottom. */
.le-hero__scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(
            to right,
            rgba(10, 9, 7, 0.82) 0%,
            rgba(10, 9, 7, 0.55) 35%,
            rgba(10, 9, 7, 0.18) 70%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            rgba(10, 9, 7, 0.35) 0%,
            transparent 28%,
            transparent 72%,
            rgba(10, 9, 7, 0.55) 100%
        );
}

.le-hero__content {
    position: relative;
    z-index: 2;
    max-width: 720px;
    align-self: center;
}

.le-hero__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--bone-2);
    font-size: 12px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}
.le-dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--copper);
    box-shadow: 0 0 12px var(--copper);
}

.le-hero__title {
    font-family: var(--font-display);
    font-weight: 350;
    font-size: clamp(48px, 6.5vw, 108px);
    line-height: 0.96;
    letter-spacing: -0.02em;
    margin-top: 28px;
    color: var(--bone);
    font-variation-settings: "opsz" 144, "SOFT" 30;
}
.le-hero__title em {
    font-style: italic;
    color: var(--bone-2);
    font-variation-settings: "opsz" 144, "SOFT" 100;
    font-weight: 300;
}

.le-line {
    display: block;
    overflow: hidden;
    /* Headline line-heights are tight (~0.96), so descenders & italic flourishes
       overflow the line box. Give them room before overflow:hidden clips them. */
    padding-bottom: 0.2em;
}
.le-line > [data-reveal-text] {
    display: inline-block;
    will-change: transform;
}

.le-hero__meta {
    margin-top: 40px;
    padding-top: 28px;
    border-top: 1px solid var(--rule);
    max-width: 640px;
}
.le-hero__meta p {
    max-width: 44ch;
    color: var(--bone-2);
    font-size: 14px;
    line-height: 1.65;
}
.le-hero__meta p.le-hero__sig {
    font-family: var(--font-display);
    font-weight: 350;
    font-size: clamp(15px, 1.4vw, 18px);
    line-height: 1.45;
    color: var(--bone);
    letter-spacing: 0.005em;
    max-width: 42ch;
    margin-bottom: 14px;
}
.le-hero__sig em {
    font-style: italic;
    color: var(--copper);
    font-variation-settings: "SOFT" 100;
    white-space: nowrap;
}
.le-hero__actions {
    display: flex;
    align-items: center;
    gap: 22px;
    margin-top: 22px;
    flex-wrap: wrap;
}
.le-hero__primary {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 22px;
    background: var(--bone);
    color: var(--ink);
    border-radius: 999px;
    font-size: 13px;
    letter-spacing: 0.04em;
    transition: background 0.4s var(--ease), color 0.4s var(--ease), transform 0.6s var(--ease-out);
    will-change: transform;
}
.le-hero__primary:hover {
    background: var(--copper);
    color: var(--ink);
}
.le-hero__secondary {
    color: var(--bone-2);
    font-size: 13px;
    letter-spacing: 0.04em;
    border-bottom: 1px solid var(--rule-2);
    padding: 4px 0;
    transition: color 0.3s var(--ease), border-color 0.3s var(--ease);
}
.le-hero__secondary:hover {
    color: var(--bone);
    border-color: var(--bone);
}

.le-hero__scroll {
    position: absolute;
    left: 50%;
    bottom: 80px;
    transform: translateX(-50%);
    z-index: 3;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    color: var(--bone-2);
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}
.le-hero__scroll svg { animation: bob 2.4s var(--ease) infinite; }
@keyframes bob {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(6px); }
}

.le-hero__rule {
    position: relative;
    z-index: 2;
    margin-top: 32px;
    display: flex;
    justify-content: space-between;
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    border-top: 1px solid var(--rule);
    padding-top: 16px;
}

@media (max-width: 900px) {
    .le-hero__photo img {
        object-position: 65% center;
    }
    .le-hero__scrim {
        background:
            linear-gradient(
                to right,
                rgba(10, 9, 7, 0.92) 0%,
                rgba(10, 9, 7, 0.7) 50%,
                rgba(10, 9, 7, 0.4) 100%
            ),
            linear-gradient(
                to bottom,
                rgba(10, 9, 7, 0.4) 0%,
                transparent 30%,
                transparent 70%,
                rgba(10, 9, 7, 0.6) 100%
            );
    }
}

@media (max-width: 720px) {
    .le-hero { padding-top: 110px; }
    .le-hero__scroll { display: none; }
    .le-hero__photo img { transform: translate(6%, -8%) scale(1.10); }
}

/* =========================================================
   Marquee
   ========================================================= */
.le-marquee {
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    padding: 20px 0;
    overflow: hidden;
}
.le-marquee__track {
    display: inline-flex;
    gap: 36px;
    white-space: nowrap;
    font-family: var(--font-display);
    font-style: italic;
    font-weight: 350;
    font-size: clamp(22px, 4vw, 38px);
    color: var(--bone-2);
    animation: scroll 80s linear infinite;
    padding-left: 36px;
}
.le-marquee__track span { flex: 0 0 auto; }
@keyframes scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* =========================================================
   Section heads
   ========================================================= */
.le-section__head {
    padding: clamp(72px, 11vh, 128px) var(--pad) 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
    border-top: 1px solid var(--rule);
}
.le-section__num {
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}
.le-section__title {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(40px, 5.4vw, 76px);
    line-height: 1.0;
    letter-spacing: -0.02em;
    color: var(--bone);
    max-width: 18ch;
}
.le-section__title em {
    font-style: italic;
    color: var(--bone-2);
}

/* =========================================================
   Work / cards
   ========================================================= */
.le-work { padding-bottom: clamp(80px, 12vh, 140px); }

/* Editorial 12-col grid — each piece owns a different width.
   Row 1: 001 (span 7) + 002 (span 5)
   Row 2: 003 (span 5) + 004 (span 7)
   Row 3: 005 (span 8, offset 3) — centered feature */
.le-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: clamp(10px, 1.2vw, 18px);
    padding: 0 var(--pad);
    max-width: var(--maxw);
    margin: 0 auto;
}
/* Longhands — the `grid-column` shorthand would clobber the end value
   when combined with a separate `grid-column-start` offset rule. */
.le-card[data-span="5"] { grid-column-end: span 5; }
.le-card[data-span="7"] { grid-column-end: span 7; }
.le-card[data-span="8"] { grid-column-end: span 8; }
.le-card[data-offset="3"] { grid-column-start: 3; }

/* Landscape aspects tuned per span so paired cards come out near-equal height.
   At maxw 1440: span-5 ≈ 588w × 441h (4:3); span-7 ≈ 830w × 467h (16:9). */
.le-card[data-span="5"] .le-card__media { aspect-ratio: 4 / 3; }
.le-card[data-span="7"] .le-card__media { aspect-ratio: 16 / 9; }

/* Feature piece — shallower 16:10 + warm copper vignette in the footer */
.le-card[data-feature="true"] .le-card__media { aspect-ratio: 16 / 10; }
.le-card[data-feature="true"] .le-card__foot {
    padding: 24px 28px 28px;
    background: linear-gradient(to top, rgba(200, 168, 122, 0.05), transparent 60%);
}
.le-card[data-feature="true"] .le-card__name { font-size: 22px; }

@media (max-width: 1024px) {
    /* Pair to two columns, keep the alternating rhythm */
    .le-card[data-span="5"],
    .le-card[data-span="7"] { grid-column-end: span 6; }
    .le-card[data-span="8"] { grid-column-end: span 12; }
    .le-card[data-offset="3"] { grid-column-start: auto; }
    /* At 2-col, both spans narrow — use one shared aspect so heights match */
    .le-card[data-span="5"] .le-card__media,
    .le-card[data-span="7"] .le-card__media { aspect-ratio: 4 / 3; }
}
@media (max-width: 600px) {
    .le-card[data-span="5"],
    .le-card[data-span="7"],
    .le-card[data-span="8"] { grid-column-end: span 12; }
}

.le-card {
    --card-bg: #0f0d0a;
    background: var(--card-bg);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    /* cursor: none; */ /* paired with the custom .le-cursor — re-enable when restoring it. */
    will-change: transform;
    position: relative;
}
/* Committed hue tints — bumped so the warmth/cool actually reads, not invisible */
.le-card[data-hue="warm"]    { --card-bg: #241708; --card-accent: rgba(200, 168, 122, 0.35); }
.le-card[data-hue="cool"]    { --card-bg: #0a1320; --card-accent: rgba(140, 170, 200, 0.25); }
.le-card[data-hue="neutral"] { --card-bg: #141211; --card-accent: rgba(245, 241, 234, 0.18); }

.le-card__media {
    position: relative;
    aspect-ratio: 4 / 5;
    overflow: hidden;
}
.le-card__media::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(ellipse at center, transparent 48%, rgba(0, 0, 0, 0.55) 100%);
    opacity: 1;
    transition: opacity 0.7s var(--ease);
    z-index: 1;
}
.le-card:hover .le-card__media::after {
    opacity: 0;
}
.le-card__placeholder {
    position: absolute; inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    transition: transform 1.8s var(--ease-out), filter 0.7s var(--ease);
    will-change: transform;
}
.le-card__placeholder svg { width: 100%; height: 100%; }
.le-card:hover .le-card__placeholder {
    transform: scale(1.06);
    filter: brightness(1.06) saturate(1.08);
}

/* Hairline rule — draws in across the bottom of the image on hover, tinted to the card's hue */
.le-card__rule {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 1px;
    background: var(--card-accent, rgba(245, 241, 234, 0.22));
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.9s var(--ease-out);
    z-index: 2;
}
.le-card:hover .le-card__rule { transform: scaleX(1); }

.le-card__overlay {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 20px 22px;
    display: flex;
    justify-content: flex-end;
    pointer-events: none;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.55s var(--ease), transform 0.55s var(--ease);
    background: linear-gradient(to top, rgba(0,0,0,0.55), transparent);
    z-index: 2;
}
.le-card:hover .le-card__overlay {
    opacity: 1;
    transform: translateY(0);
}
.le-card__view {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--bone);
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}
.le-card__view svg { opacity: 0.75; }
.le-card:hover .le-card__view { pointer-events: auto; }

/* Small dot — reusable (used in card overlay and eyebrow). */
.le-dot--sm {
    width: 4px; height: 4px;
    border-radius: 50%;
    background: var(--copper);
    box-shadow: 0 0 6px var(--copper);
    display: inline-block;
}

/* Touch / no-hover devices: scroll-driven hover effect.
   --hover (0 → 1) is set from JS based on the card's proximity to viewport center. */
@media (hover: none) {
    .le-card { --hover: 0; }
    .le-card .le-card__media::after {
        transition: none;
        opacity: calc(1 - var(--hover));
    }
    .le-card .le-card__placeholder {
        transition: none;
        transform: scale(calc(1 + 0.03 * var(--hover)));
        filter: brightness(calc(1 + 0.04 * var(--hover))) saturate(calc(1 + 0.05 * var(--hover)));
    }
    .le-card .le-card__overlay {
        transition: none;
        opacity: var(--hover);
        transform: translateY(calc(8px * (1 - var(--hover))));
    }
    .le-card .le-card__rule {
        transition: none;
        transform: scaleX(var(--hover));
    }
}

.le-card__foot {
    padding: 18px 22px 22px;
    border-top: 1px solid var(--rule);
}
.le-card__row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 16px;
}
.le-card__row + .le-card__row { margin-top: 8px; }
.le-card__row--muted {
    color: var(--mute);
    font-size: 12px;
    letter-spacing: 0.06em;
}
.le-card__num {
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}
.le-card__name {
    font-family: var(--font-display);
    font-weight: 400;
    font-style: italic;
    font-size: 18px;
    color: var(--bone);
}
.le-card__price {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 14px;
    color: var(--bone);
    letter-spacing: 0.02em;
}

/* =========================================================
   Shop — catalog page
   ========================================================= */
.le-shop-head {
    padding: clamp(120px, 18vh, 200px) var(--pad) clamp(40px, 6vh, 72px);
    max-width: var(--maxw);
    margin: 0 auto;
}
.le-shop-head__row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 24px;
    flex-wrap: wrap;
    border-bottom: 1px solid var(--rule);
    padding-bottom: 18px;
    margin-bottom: 36px;
}
.le-shop-head__tally {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    flex-wrap: wrap;
}
.le-shop-head__tally b { color: var(--bone); font-weight: 500; }
.le-shop-head__tally-sep { opacity: 0.5; }

.le-shop-head__title {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(44px, 7.5vw, 108px);
    line-height: 0.96;
    letter-spacing: -0.02em;
    color: var(--bone);
}
.le-shop-head__title em {
    font-style: italic;
    color: var(--copper);
    font-variation-settings: "SOFT" 100;
}
.le-shop-head__lead {
    color: var(--bone-2);
    font-size: 15px;
    line-height: 1.6;
    max-width: 52ch;
    margin-top: 28px;
}

/* Filter chips */
.le-shop-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 44px;
    padding-top: 28px;
    border-top: 1px solid var(--rule);
}
.le-shop-filter__chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 16px;
    border: 1px solid var(--rule-2);
    border-radius: 999px;
    color: var(--bone-2);
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    cursor: pointer;
    transition: color 0.3s var(--ease), background 0.3s var(--ease), border-color 0.3s var(--ease);
}
.le-shop-filter__chip:hover {
    color: var(--bone);
    border-color: var(--bone-2);
}
.le-shop-filter__chip.is-active {
    background: var(--bone);
    color: var(--ink);
    border-color: var(--bone);
}
.le-shop-filter__pip {
    display: inline-block;
    padding: 2px 6px 1px;
    border-radius: 999px;
    background: var(--copper);
    color: var(--ink);
    font-size: 9px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    line-height: 1;
}
.le-shop-filter__chip.is-active .le-shop-filter__pip {
    background: var(--ink);
    color: var(--copper);
}

/* Catalog grid — uniform 3-up, no editorial drama */
.le-shop {
    padding-bottom: clamp(80px, 12vh, 140px);
}
.le-grid--shop {
    grid-row-gap: clamp(32px, 4vw, 48px);
}
.le-card--shop {
    grid-column-end: span 4;
}
.le-card--shop .le-card__media {
    aspect-ratio: 4 / 5;
}
@media (max-width: 1024px) {
    .le-card--shop { grid-column-end: span 6; }
}
@media (max-width: 600px) {
    .le-card--shop { grid-column-end: span 12; }
    .le-card--shop .le-card__media { aspect-ratio: 4 / 3; }
}

.le-card--shop[data-filtered-out] {
    display: none;
}

/* Flatten the editorial card to a calm shop card:
   - single neutral surface (drop hue tints)
   - no corner vignette (let product detail show)
   - subtle hover lift only (no scale + saturate jump) */
.le-card--shop {
    background: var(--ink-2);
}
.le-card--shop .le-card__media::after {
    display: none;
}
.le-card--shop .le-card__placeholder {
    transition: transform 0.6s var(--ease);
}
.le-card--shop:hover .le-card__placeholder {
    transform: scale(1.02);
    filter: none;
}
.le-card--shop .le-card__foot {
    border-top-color: var(--rule);
}

/* Status pill — quiet, top-left */
.le-status {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 5px 10px 5px 9px;
    background: rgba(10, 9, 7, 0.5);
    border-radius: 999px;
    font-size: 10px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--bone-2);
}
.le-status__dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--bone-2);
}
.le-status--available .le-status__dot {
    background: #8fc18f;
}
.le-status--reserved .le-status__dot {
    background: var(--copper);
}
.le-status--made-to-order .le-status__dot {
    background: transparent;
    border: 1px solid var(--copper);
}
.le-status--sold {
    color: var(--mute);
}
.le-status--sold .le-status__dot {
    background: transparent;
    border: 1px solid var(--mute);
}

/* "New" pip — small, top-right */
.le-shop-new {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 3;
    padding: 4px 9px 3px;
    background: var(--copper);
    color: var(--ink);
    border-radius: 999px;
    font-size: 9px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    line-height: 1.2;
}

/* Sold cards: desaturated, no hover lift, muted footer */
.le-card--shop[data-status="sold"] .le-card__placeholder {
    filter: grayscale(0.85) brightness(0.65);
}
.le-card--shop[data-status="sold"]:hover .le-card__placeholder {
    transform: none;
    filter: grayscale(0.7) brightness(0.7) saturate(1);
}
.le-card--shop[data-status="sold"] .le-card__media::after {
    background: radial-gradient(ellipse at center, transparent 38%, rgba(0, 0, 0, 0.7) 100%);
    opacity: 1 !important;
}
.le-card--shop[data-status="sold"] .le-card__name,
.le-card--shop[data-status="sold"] .le-card__price {
    color: var(--bone-2);
}

/* Materials row — quietest line in the card footer */
.le-card__row--materials {
    margin-top: 6px;
    color: var(--mute);
    font-family: var(--font-display);
    font-style: italic;
    font-size: 12px;
    letter-spacing: 0.01em;
}

/* Empty state */
.le-shop__empty {
    padding: clamp(40px, 6vh, 72px) var(--pad);
    text-align: center;
    color: var(--bone-2);
    font-family: var(--font-display);
    font-style: italic;
    font-size: clamp(18px, 2vw, 22px);
}
.le-shop__empty a {
    color: var(--copper);
    border-bottom: 1px solid var(--copper-2);
    padding-bottom: 2px;
    margin-left: 6px;
    transition: border-color 0.3s var(--ease);
}
.le-shop__empty a:hover { border-color: var(--copper); }

/* Shop CTA on the /shop page reads as "you're here" — quiet outline, not a CTA */
.le-nav__cta--active {
    background: transparent;
    color: var(--bone-2);
    border-color: var(--rule-2);
}
.le-nav__cta--active:hover {
    background: transparent;
    color: var(--bone);
    border-color: var(--bone);
}

/* Final commission strip on shop */
.le-shop-commission {
    border-top: 1px solid var(--rule);
    padding: clamp(80px, 12vh, 140px) var(--pad);
}
.le-shop-commission__inner {
    max-width: 720px;
    margin: 0 auto;
    text-align: center;
}
.le-shop-commission__title {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(40px, 6vw, 84px);
    line-height: 1.0;
    letter-spacing: -0.02em;
    margin: 22px 0 28px;
    color: var(--bone);
}
.le-shop-commission__title em {
    font-style: italic;
    color: var(--copper);
    font-variation-settings: "SOFT" 100;
}
.le-shop-commission p {
    color: var(--bone-2);
    font-size: 15px;
    line-height: 1.65;
    max-width: 52ch;
    margin: 0 auto 28px;
}
.le-shop-commission__actions {
    display: inline-flex;
    align-items: center;
    gap: 22px;
    flex-wrap: wrap;
    justify-content: center;
}

@media (max-width: 720px) {
    .le-shop-head { padding-top: 110px; }
    .le-shop-head__row { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* Shop card structure — name + detail stacked, action button at bottom.
   Index keeps its own .le-card__row layout; shop overrides only its own. */
.le-card--shop { position: relative; }
.le-card__link {
    position: absolute;
    inset: 0;
    z-index: 1;
}
.le-card--shop .le-card__foot {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 18px 20px 20px;
    border-top: 1px solid var(--rule);
}
.le-card--shop .le-card__row { margin: 0; }
.le-card--shop .le-card__name {
    font-family: var(--font-display);
    font-style: italic;
    font-weight: 400;
    font-size: 20px;
    color: var(--bone);
    margin: 0;
}
.le-card--shop .le-card__detail {
    color: var(--mute);
    font-size: 12px;
    letter-spacing: 0.04em;
    margin: 0;
}
.le-card--shop[data-status="sold"] .le-card__name,
.le-card--shop[data-status="sold"] .le-card__detail { color: var(--mute); }

/* Action button — primary / ghost / muted variants */
.le-shop-buy {
    position: relative;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 6px;
    padding: 12px 16px;
    background: var(--bone);
    color: var(--ink);
    border: 1px solid var(--bone);
    border-radius: 4px;
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    transition: background 0.3s var(--ease), color 0.3s var(--ease), border-color 0.3s var(--ease);
}
.le-shop-buy:hover {
    background: var(--copper);
    border-color: var(--copper);
}
.le-shop-buy--ghost {
    background: transparent;
    color: var(--bone);
    border-color: var(--rule-2);
}
.le-shop-buy--ghost:hover {
    color: var(--ink);
    background: var(--bone);
    border-color: var(--bone);
}
.le-shop-buy--muted {
    background: transparent;
    color: var(--mute);
    border-color: var(--rule);
    pointer-events: auto;
}
.le-shop-buy--muted:hover {
    color: var(--bone-2);
    border-color: var(--rule-2);
    background: transparent;
}

/* =========================================================
   Shop — detail page (/shop/{slug})
   ========================================================= */
.le-detail-crumb {
    max-width: var(--maxw);
    margin: 0 auto;
    padding: clamp(110px, 16vh, 160px) var(--pad) 0;
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}
.le-detail-crumb a {
    color: var(--bone-2);
    transition: color 0.3s var(--ease);
}
.le-detail-crumb a:hover { color: var(--bone); }
.le-detail-crumb span[aria-hidden] { color: var(--mute); opacity: 0.5; }

.le-detail {
    max-width: var(--maxw);
    margin: 0 auto;
    padding: clamp(28px, 4vh, 48px) var(--pad) clamp(80px, 12vh, 140px);
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    gap: clamp(32px, 4vw, 64px);
    align-items: start;
}
.le-detail__media {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr);
    gap: clamp(14px, 1.6vw, 22px);
    align-items: start;
}
.le-detail__media:not(:has(.le-detail__thumbs)) {
    grid-template-columns: 1fr;
}
.le-detail__media:not(:has(.le-detail__thumbs)) .le-detail__stage,
.le-detail__media:not(:has(.le-detail__thumbs)) > .le-detail__photo {
    grid-column: 1;
}

/* Stage (main image) */
.le-detail__stage {
    grid-column: 2;
    position: relative;
    overflow: hidden;
    background: var(--ink-2);
    aspect-ratio: 1 / 1;
}
.le-detail__track {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    width: 100%;
    height: 100%;
    transition: transform 0.5s var(--ease-out);
    will-change: transform;
}
.le-detail__slide {
    flex: 0 0 100%;
    width: 100%;
    height: 100%;
    min-width: 0;
}
.le-detail__photo {
    position: relative;
    margin: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: var(--ink-2);
    aspect-ratio: 1 / 1;
}
.le-detail__photo img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: transform 0.7s var(--ease-out);
}
button.le-detail__photo {
    display: block;
    font: inherit;
    color: inherit;
    border: 0;
    padding: 0;
    text-align: left;
    cursor: zoom-in;
}
button.le-detail__photo:hover img,
button.le-detail__photo:focus-visible img { transform: scale(1.025); }
button.le-detail__photo:focus-visible {
    outline: 2px solid var(--copper);
    outline-offset: -2px;
}
.le-detail__photo-zoom {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(10, 9, 7, 0.55);
    color: var(--bone);
    border-radius: 999px;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity 0.3s var(--ease), transform 0.3s var(--ease);
    pointer-events: none;
}
button.le-detail__photo:hover .le-detail__photo-zoom,
button.le-detail__photo:focus-visible .le-detail__photo-zoom {
    opacity: 1;
    transform: translateY(0);
}

/* Paddle nav (desktop) */
.le-detail__paddle {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(10, 9, 7, 0.55);
    color: var(--bone);
    border: 1px solid var(--rule-2);
    border-radius: 999px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.25s var(--ease), background 0.25s var(--ease), color 0.25s var(--ease);
}
.le-detail__stage:hover .le-detail__paddle,
.le-detail__paddle:focus-visible { opacity: 1; }
.le-detail__paddle:hover {
    background: var(--bone);
    color: var(--ink);
}
.le-detail__paddle--prev { left: 14px; }
.le-detail__paddle--next { right: 14px; }

/* Dots (mobile) + counter */
.le-detail__dots {
    position: absolute;
    bottom: 14px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2;
    display: none;
    gap: 6px;
    pointer-events: none;
}
.le-detail__dot {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: rgba(245, 240, 232, 0.4);
    transition: background 0.25s var(--ease), transform 0.25s var(--ease);
}
.le-detail__dot.is-active {
    background: var(--bone);
    transform: scale(1.3);
}
.le-detail__count {
    position: absolute;
    top: 14px;
    left: 14px;
    z-index: 2;
    color: var(--bone-2);
    font-size: 10px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    background: rgba(10, 9, 7, 0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    padding: 6px 10px;
    border-radius: 999px;
}

/* Thumbnail rail (desktop: vertical left of stage) */
.le-detail__thumbs {
    grid-column: 1;
    grid-row: 1;
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: 100%;
}
.le-detail__thumb {
    display: block;
    width: 88px;
    height: 88px;
    padding: 0;
    border: 1px solid transparent;
    background: var(--ink-2);
    cursor: pointer;
    overflow: hidden;
    opacity: 0.55;
    transition: opacity 0.25s var(--ease), border-color 0.25s var(--ease);
}
.le-detail__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.le-detail__thumb:hover { opacity: 0.85; }
.le-detail__thumb.is-active {
    opacity: 1;
    border-color: var(--copper);
}
.le-detail__thumb:focus-visible {
    outline: 2px solid var(--copper);
    outline-offset: 2px;
}

/* Sticky info column */
.le-detail__info { position: relative; }
.le-detail__sticky {
    position: sticky;
    top: 96px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.le-detail__title {
    font-family: var(--font-display);
    font-weight: 350;
    font-style: italic;
    font-size: clamp(34px, 4.4vw, 60px);
    line-height: 1.02;
    letter-spacing: -0.015em;
    color: var(--bone);
    margin: 4px 0 6px;
}

.le-detail__statusline {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}
.le-status--inline {
    position: static;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}
.le-detail__edition {
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.le-detail__price {
    font-family: var(--font-display);
    font-weight: 400;
    font-size: clamp(28px, 3.2vw, 40px);
    color: var(--bone);
    margin: 4px 0 0;
}

.le-detail__desc {
    color: var(--bone-2);
    font-size: 15px;
    line-height: 1.65;
    max-width: 48ch;
    margin: 8px 0 0;
}

.le-detail__specs {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin: 12px 0 0;
    padding: 22px 0;
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}
.le-detail__specs > div {
    display: grid;
    grid-template-columns: 110px 1fr;
    gap: 16px;
    align-items: baseline;
}
.le-detail__specs dt {
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin: 0;
}
.le-detail__specs dd {
    margin: 0;
    color: var(--bone);
    font-size: 14px;
    line-height: 1.5;
}

.le-detail__buy {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-top: 8px;
    padding: 18px 22px;
    background: var(--bone);
    color: var(--ink);
    border: 1px solid var(--bone);
    border-radius: 4px;
    font-size: 13px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition: background 0.3s var(--ease), color 0.3s var(--ease), border-color 0.3s var(--ease);
    will-change: transform;
}
.le-detail__buy:hover {
    background: var(--copper);
    border-color: var(--copper);
}

.le-detail__fineprint {
    color: var(--mute);
    font-size: 12px;
    line-height: 1.55;
    margin: 6px 0 0;
}

@media (max-width: 900px) {
    .le-detail { grid-template-columns: 1fr; }
    .le-detail__sticky { position: static; }
    .le-detail__buy { width: 100%; }

    .le-detail__media { grid-template-columns: 1fr; }
    .le-detail__stage { grid-column: 1; }
    .le-detail__paddle { display: none; }
    .le-detail__dots { display: flex; }
    .le-detail__thumbs {
        grid-column: 1;
        grid-row: auto;
        flex-direction: row;
        overflow-x: auto;
        overflow-y: hidden;
        max-height: none;
        padding-bottom: 4px;
        scrollbar-width: none;
        -ms-overflow-style: none;
        scroll-snap-type: x mandatory;
    }
    .le-detail__thumbs::-webkit-scrollbar { display: none; }
    .le-detail__thumbs > li { flex: 0 0 auto; scroll-snap-align: start; }
    .le-detail__thumb { width: 64px; height: 64px; }
    .le-detail__count { font-size: 9px; padding: 5px 8px; }
}

/* Related strip on detail page */
.le-detail-related {
    border-top: 1px solid var(--rule);
    padding: clamp(60px, 8vh, 100px) var(--pad);
    max-width: var(--maxw);
    margin: 0 auto;
}
.le-detail-related__head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 24px;
    margin-bottom: 36px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--rule);
}
.le-detail-related__all {
    color: var(--bone-2);
    font-size: 12px;
    letter-spacing: 0.06em;
    transition: color 0.3s var(--ease);
}
.le-detail-related__all:hover { color: var(--bone); }
.le-detail-related .le-grid--shop {
    padding: 0;
}

/* =========================================================
   Lightbox (detail gallery)
   ========================================================= */
.le-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(16px, 4vh, 56px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s var(--ease);
}
.le-lightbox[hidden] { display: none; }
.le-lightbox.is-open {
    opacity: 1;
    pointer-events: auto;
}
.le-lightbox__overlay {
    position: absolute;
    inset: 0;
    border: 0;
    padding: 0;
    background: rgba(10, 9, 7, 0.94);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    cursor: zoom-out;
}
.le-lightbox__stage {
    position: relative;
    z-index: 1;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: min(1200px, 100%);
}
.le-lightbox__stage img {
    max-width: 100%;
    max-height: 86vh;
    display: block;
    object-fit: contain;
    transition: opacity 0.2s var(--ease);
}
.le-lightbox__close,
.le-lightbox__nav {
    position: absolute;
    z-index: 2;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--rule-2);
    background: rgba(10, 9, 7, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: var(--bone);
    border-radius: 999px;
    cursor: pointer;
    transition: background 0.25s var(--ease), border-color 0.25s var(--ease), color 0.25s var(--ease);
}
.le-lightbox__close:hover,
.le-lightbox__nav:hover {
    background: var(--bone);
    border-color: var(--bone);
    color: var(--ink);
}
.le-lightbox__close { top: clamp(16px, 3vh, 28px); right: clamp(16px, 3vh, 28px); }
.le-lightbox__nav--prev { left: clamp(16px, 3vh, 28px); top: 50%; transform: translateY(-50%); }
.le-lightbox__nav--next { right: clamp(16px, 3vh, 28px); top: 50%; transform: translateY(-50%); }
.le-lightbox__nav[hidden] { display: none; }
.le-lightbox__counter {
    position: absolute;
    bottom: clamp(16px, 3vh, 28px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 2;
    color: var(--bone-2);
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}
@media (max-width: 720px) {
    .le-lightbox__close,
    .le-lightbox__nav {
        width: 40px;
        height: 40px;
    }
    .le-lightbox__nav--prev { left: 10px; }
    .le-lightbox__nav--next { right: 10px; }
    .le-lightbox__close { top: 14px; right: 14px; }
}
@media (prefers-reduced-motion: reduce) {
    .le-lightbox,
    .le-detail__photo img,
    .le-detail__photo-zoom,
    .le-detail__track { transition: none; }
}

/* =========================================================
   Process
   ========================================================= */
.le-process {
    border-top: 1px solid var(--rule);
    padding: clamp(80px, 14vh, 180px) var(--pad);
}
.le-process__inner {
    max-width: var(--maxw);
    margin: 0 auto;
}
.le-process__title {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(48px, 9vw, 132px);
    line-height: 0.94;
    letter-spacing: -0.02em;
    margin: 28px 0 48px;
}
.le-process__title em {
    font-style: italic;
    color: var(--copper);
    font-variation-settings: "SOFT" 100;
}

/* Scrollwork ornament — single engraving callback, used once */
.le-ornament {
    color: var(--copper);
    opacity: 0.7;
    width: clamp(180px, 22vw, 260px);
    margin: 0 0 48px;
    display: block;
}
.le-ornament svg { width: 100%; height: auto; display: block; }

/* Editorial lead — larger, readable, the one place on the page meant to be READ */
.le-process__lead {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(22px, 2.4vw, 32px);
    line-height: 1.35;
    letter-spacing: -0.005em;
    color: var(--bone);
    max-width: 28ch;
    margin-bottom: 64px;
}
.le-process__lead em {
    font-style: italic;
    color: var(--bone-2);
}

/* Pull quote — sits in the right column at desktop, signed */
.le-process__quote {
    margin: 0 0 96px auto;
    max-width: 620px;
    padding: 40px 48px;
    border-left: 1px solid var(--copper-2);
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    background: linear-gradient(to right, rgba(200, 168, 122, 0.035), transparent 60%);
}
.le-process__quote blockquote {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(28px, 3.2vw, 44px);
    line-height: 1.12;
    letter-spacing: -0.015em;
    color: var(--bone);
    margin: 0;
}
.le-process__quote blockquote em {
    font-style: italic;
    color: var(--copper);
    font-variation-settings: "SOFT" 100;
}
.le-process__quote figcaption {
    margin-top: 24px;
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}
@media (max-width: 720px) {
    .le-process__quote { padding: 28px 24px; margin-bottom: 72px; }
}

.le-steps {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 40px;
    border-top: 1px solid var(--rule);
    padding-top: 40px;
}
.le-steps li {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.le-steps__num {
    font-family: var(--font-display);
    font-style: italic;
    font-weight: 400;
    color: var(--copper);
    font-size: 18px;
}
.le-steps h3 {
    font-family: var(--font-display);
    font-weight: 400;
    font-size: 22px;
    color: var(--bone);
}
.le-steps p {
    color: var(--bone-2);
    font-size: 14px;
    line-height: 1.6;
    max-width: 30ch;
}
@media (max-width: 900px) { .le-steps { grid-template-columns: repeat(2, 1fr); gap: 32px; } }
@media (max-width: 520px) { .le-steps { grid-template-columns: 1fr; } }

/* =========================================================
   CTA
   ========================================================= */
.le-cta {
    border-top: 1px solid var(--rule);
    padding: clamp(64px, 9vh, 110px) var(--pad);
    text-align: center;
    background: radial-gradient(ellipse at 50% 100%, rgba(200, 168, 122, 0.06), transparent 60%);
}
.le-cta__inner {
    max-width: 900px;
    margin: 0 auto;
}
.le-cta__title {
    font-family: var(--font-display);
    font-weight: 300;
    font-size: clamp(40px, 6vw, 92px);
    line-height: 1.04;
    letter-spacing: -0.02em;
    margin: 14px 0 22px;
}
.le-cta__title em {
    font-style: italic;
    color: var(--copper);
    font-variation-settings: "SOFT" 100;
}
.le-cta p {
    color: var(--bone-2);
    font-size: 15px;
    margin-bottom: 28px;
}
.le-cta__button {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    padding: 22px 38px;
    border: 1px solid var(--bone);
    border-radius: 999px;
    color: var(--bone);
    font-size: 14px;
    letter-spacing: 0.06em;
    transition: background 0.5s var(--ease), color 0.5s var(--ease), transform 0.6s var(--ease-out);
    will-change: transform;
}
.le-cta__button:hover {
    background: var(--bone);
    color: var(--ink);
}

/* --- Bulk: rotating word + auto-scroll item carousel --- */
.le-cta__title--bulk { line-height: 1.04; }
.le-cta__title--bulk > span { display: inline-block; max-width: 100%; }
.le-cta__title--bulk .le-cta__title-line { display: block; }

.le-rotator {
    display: inline-block;
    height: 1.2em;
    line-height: 1;
    overflow: hidden;
    padding-right: 0.3em;
    margin-right: -0.3em;
    vertical-align: -0.16em;
    color: var(--copper);
    font-style: italic;
}
.le-rotator__words {
    display: block;
    text-align: center;
    animation: rotate-words 21s cubic-bezier(0.65, 0, 0.05, 1) infinite;
    will-change: transform;
}
.le-rotator__words > span {
    display: block;
    height: 1.2em;
    line-height: 1.2;
    white-space: nowrap;
}
@keyframes rotate-words {
    0%,    12%     { transform: translateY(0); }
    16.66%, 28.66% { transform: translateY(-1.2em); }
    33.33%, 45.33% { transform: translateY(-2.4em); }
    50%,    62%    { transform: translateY(-3.6em); }
    66.66%, 78.66% { transform: translateY(-4.8em); }
    83.33%, 95.33% { transform: translateY(-6em); }
    100%           { transform: translateY(-7.2em); }
}

.le-bulk {
    margin: clamp(28px, 4vh, 56px) calc(var(--pad) * -1);
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    overflow: hidden;
    text-align: left;
    padding: clamp(18px, 2.5vh, 28px) 0;
}
.le-bulk__track {
    display: flex;
    width: max-content;
    gap: clamp(14px, 1.6vw, 22px);
    padding-inline-start: clamp(14px, 1.6vw, 22px);
    animation: bulk-scroll 50s linear infinite;
    will-change: transform;
}
@keyframes bulk-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}
.le-bulk__card {
    flex: 0 0 auto;
    width: clamp(160px, 16vw, 220px);
    background: var(--ink-2);
    border: 1px solid var(--rule);
    overflow: hidden;
}
.le-bulk__media {
    aspect-ratio: 4 / 5;
    background:
        radial-gradient(ellipse at center, transparent 50%, rgba(0, 0, 0, 0.45) 100%),
        linear-gradient(135deg, var(--ink-3), var(--ink-2));
    display: grid;
    place-items: center;
}
.le-bulk__icon {
    font-size: clamp(96px, 10vw, 140px);
    color: var(--bone);
    opacity: 0.55;
    font-variation-settings: 'wght' 200, 'opsz' 48, 'GRAD' 0;
}
.le-bulk__name {
    display: block;
    padding: 10px 14px;
    border-top: 1px solid var(--rule);
    font-family: var(--font-display);
    font-style: italic;
    font-size: 13px;
    color: var(--bone);
    letter-spacing: 0.02em;
}
@media (max-width: 600px) {
    .le-bulk__card { width: 60vw; }
}

/* =========================================================
   Footer
   ========================================================= */
.le-footer {
    border-top: 1px solid var(--rule);
    padding: 60px var(--pad) 30px;
}
.le-footer__top {
    display: flex;
    justify-content: space-between;
    align-items: end;
    gap: 40px;
    padding-bottom: 60px;
    border-bottom: 1px solid var(--rule);
}
.le-footer__brand {
    font-family: var(--font-display);
    font-style: italic;
    font-weight: 400;
    font-size: clamp(40px, 8vw, 96px);
    line-height: 1;
    color: var(--bone);
}
.le-footer__links {
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 14px;
    color: var(--bone-2);
    text-align: right;
}
.le-footer__links a { transition: color 0.3s var(--ease); }
.le-footer__links a:hover { color: var(--bone); }

.le-footer__mark {
    display: flex;
    justify-content: center;
    margin: 36px 0 20px;
    color: var(--copper);
    opacity: 0.55;
}
.le-footer__mark svg { width: 80px; height: auto; display: block; }

.le-footer__bottom {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    margin-top: 24px;
    color: var(--mute);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}
.le-footer__bottom a:hover { color: var(--bone); }

@media (max-width: 600px) {
    .le-footer__top { flex-direction: column; align-items: start; }
    .le-footer__links { text-align: left; }
    .le-footer__bottom { flex-direction: column; gap: 8px; }
}

/* =========================================================
   Reveal initial states (driven by JS)
   ========================================================= */
[data-reveal] { opacity: 0; transform: translateY(20px); will-change: transform, opacity; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    [data-reveal] { opacity: 1 !important; transform: none !important; }
    [data-reveal-text] { transform: none !important; }
    .le-marquee__track { animation: none; }
    .le-bulk__track { animation: none; }
    .le-rotator__words { animation: none; }
    .le-hero__scroll svg { animation: none; }
    .le-card__rule { transform: scaleX(1); }
}
