/* ===================================================
   GoldArt — Parchment Gold Theme
   Artisan Editorial Style
   =================================================== */

/* --- Design Tokens --- */
:root {
    --surface-primary: #F4F2EF;
    --surface-inverse: #1A1A1A;
    --fg-primary: #1A1A1A;
    --fg-secondary: #4A4A4A;
    --fg-inverse: #FFFFFF;
    --border-subtle: #EEECE8;
    --accent-primary: #C8B496;
    --accent-hover: #b9a284;

    --font-display: 'Newsreader', Georgia, 'Times New Roman', serif;
    --font-body: 'Funnel Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

    --header-height: 72px;
}

/* --- Reset & Base --- */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: var(--font-body);
    color: var(--fg-primary);
    background: var(--surface-primary);
    line-height: 1.6;
    overflow-x: hidden;
}

a {
    color: inherit;
    text-decoration: none;
}

ul { list-style: none; }

img {
    max-width: 100%;
    display: block;
}

/* --- HEADER --- */
.header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    height: var(--header-height);
    transition: background 0.4s ease, backdrop-filter 0.4s ease;
}

.header--scrolled {
    background: rgba(26, 26, 26, 0.85);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

.header__inner {
    max-width: 1440px;
    margin: 0 auto;
    height: 100%;
    padding: 0 48px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

/* Logo */
.logo {
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 500;
    letter-spacing: 0.01em;
    z-index: 101;
    transition: opacity 0.3s;
}

.logo:hover { opacity: 0.8; }

.logo__gold { color: var(--fg-inverse); }
.logo__art { color: var(--accent-primary); }

/* Nav */
.nav__list {
    display: flex;
    gap: 40px;
}

.nav__link {
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.7);
    transition: color 0.3s;
    position: relative;
}

.nav__link::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    right: 0;
    height: 1px;
    background: var(--accent-primary);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.45s cubic-bezier(0.65, 0, 0.35, 1);
}

.nav__link:hover {
    color: var(--fg-inverse);
}

.nav__link:hover::after {
    transform: scaleX(1);
}

/* On mouse-out, retract to the right — feels like a smooth continuation
   rather than collapsing back to the start edge. */
.nav__link:not(:hover)::after {
    transform-origin: right center;
}

/* Header Phone */
.header__phone {
    display: flex;
    align-items: center;
    gap: 8px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 14px;
    font-weight: 400;
    letter-spacing: 0.03em;
    transition: color 0.3s;
}

.header__phone:hover { color: var(--fg-inverse); }

.header__phone-icon { display: none; }

/* Burger */
.burger {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    width: 32px;
    height: 32px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 101;
    padding: 4px;
}

.burger__line {
    display: block;
    width: 100%;
    height: 1.5px;
    background: var(--fg-inverse);
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s;
    transform-origin: center;
}

.burger--active .burger__line:first-child {
    transform: translateY(3.75px) rotate(45deg);
}

.burger--active .burger__line:last-child {
    transform: translateY(-3.75px) rotate(-45deg);
}

/* Mobile Menu */
.mobile-menu {
    position: fixed;
    inset: 0;
    z-index: 99;
    background: rgba(26, 26, 26, 0.97);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.mobile-menu--open {
    opacity: 1;
    pointer-events: all;
}

.mobile-menu__list {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
}

.mobile-menu__link {
    font-family: var(--font-display);
    font-size: 32px;
    font-weight: 400;
    color: var(--fg-inverse);
    transition: color 0.3s;
    opacity: 0;
    transform: translateY(20px);
}

.mobile-menu--open .mobile-menu__link {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.4s ease, transform 0.4s ease, color 0.3s;
}

.mobile-menu--open .mobile-menu__list li:nth-child(1) .mobile-menu__link { transition-delay: 0.1s; }
.mobile-menu--open .mobile-menu__list li:nth-child(2) .mobile-menu__link { transition-delay: 0.15s; }
.mobile-menu--open .mobile-menu__list li:nth-child(3) .mobile-menu__link { transition-delay: 0.2s; }
.mobile-menu--open .mobile-menu__list li:nth-child(4) .mobile-menu__link { transition-delay: 0.25s; }

.mobile-menu__link:hover { color: var(--accent-primary); }

.mobile-menu__phone {
    display: block;
    margin-top: 48px;
    text-align: center;
    font-size: 18px;
    color: var(--accent-primary);
    letter-spacing: 0.05em;
    opacity: 0;
    transform: translateY(20px);
}

.mobile-menu--open .mobile-menu__phone {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.4s ease 0.3s, transform 0.4s ease 0.3s;
}

/* ===== HERO ===== */
.hero {
    position: relative;
    min-height: 100vh;
    min-height: 100svh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: hidden;
}

/* Hero Background */
.hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.hero__bg-image {
    position: absolute;
    inset: 0;
    /* Placeholder: warm dark workshop ambience via gradients.
       Replace with actual photo: background-image: url('images/hero.webp'); background-size: cover; */
    background:
        radial-gradient(ellipse 80% 60% at 75% 45%, rgba(200, 180, 150, 0.12) 0%, transparent 70%),
        radial-gradient(ellipse 40% 50% at 85% 55%, rgba(200, 170, 120, 0.08) 0%, transparent 60%),
        radial-gradient(ellipse 60% 80% at 20% 80%, rgba(26, 26, 26, 1) 0%, transparent 70%),
        linear-gradient(160deg, #1a1a1a 0%, #2a2420 40%, #1e1c1a 70%, #141210 100%);
    filter: contrast(1.05);
}

/* Hero background video — sits above the gradient placeholder so it paints
   over the fallback once it starts, and below the dark overlay so copy
   stays legible. object-fit: cover keeps the frame filled at any aspect. */
.hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
    pointer-events: none;
    /* Slight desaturation + gentle warm grade so the video sits in the
       same cinematic register as the rest of the hero, not a loud clip. */
    filter: saturate(0.92) contrast(1.04);
}

/* Subtle film grain */
.hero__bg-image::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
    background-size: 200px 200px;
    opacity: 0.5;
    pointer-events: none;
}

/* Overlay gradient (from brief) */
.hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        90deg,
        rgba(26, 26, 26, 0.93) 0%,
        rgba(26, 26, 26, 0.80) 50%,
        rgba(26, 26, 26, 0.53) 100%
    );
}

/* Hero Content */
.hero__content {
    position: relative;
    z-index: 2;
    max-width: 1440px;
    width: 100%;
    margin: 0 auto;
    padding: 0 48px;
    padding-top: calc(var(--header-height) + 40px);
    padding-bottom: 48px;
    flex: 1;
    display: flex;
    align-items: center;
}

.hero__text {
    max-width: 720px;
}

/* Title */
.hero__title {
    font-family: var(--font-display);
    font-weight: 400;
    font-size: clamp(48px, 5.2vw, 76px);
    line-height: 1.08;
    color: var(--fg-inverse);
    letter-spacing: -0.01em;
    margin-bottom: 24px;
}

.hero__title-line {
    display: block;
}

.hero__title-accent em {
    font-style: italic;
    color: var(--accent-primary);
    /* One-shot gold shimmer — light highlight sweeps across the accent word
       once after the hero page-load stagger finishes. Background-clip: text
       on a moving gradient; after the animation completes the end-state
       keeps the original gold tone. */
    background-image: linear-gradient(
        100deg,
        var(--accent-primary) 0%,
        var(--accent-primary) 42%,
        #fff3d0 50%,
        var(--accent-primary) 58%,
        var(--accent-primary) 100%
    );
    background-size: 200% 100%;
    background-position: 0% 0;
    background-repeat: no-repeat;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: heroAccentShine 2.2s cubic-bezier(0.22, 1, 0.36, 1) 1.3s 1 forwards;
    will-change: background-position;
}

@keyframes heroAccentShine {
    from { background-position: 0% 0; }
    to   { background-position: 100% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .hero__title-accent em {
        animation: none;
        background: none;
        -webkit-text-fill-color: var(--accent-primary);
    }
}

/* Subtitle */
.hero__subtitle {
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 40px;
}

/* CTA Buttons */
.hero__cta {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0.02em;
    padding: 14px 28px;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    transition: background 0.3s ease, transform 0.2s ease, box-shadow 0.3s ease;
}

.btn--primary {
    background: var(--accent-primary);
    color: var(--surface-inverse);
}

.btn--primary:hover {
    background: var(--accent-hover);
    box-shadow: 0 8px 24px rgba(200, 180, 150, 0.25);
}

.btn--primary:active {
    transform: translateY(0) rotateX(0) rotateY(0) !important;
}

/* Ghost-dark: outline button for dark backgrounds (pairs with .btn--primary as secondary CTA) */
.btn--ghost-dark {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.25);
    color: var(--fg-inverse);
    padding: 13px 27px;
}

.btn--ghost-dark:hover {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.45);
    transform: translateY(-1px);
}

.btn__icon {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.btn__icon svg {
    width: 18px;
    height: 18px;
    display: block;
}

/* Hero Facts */
.hero__facts {
    position: relative;
    z-index: 2;
    margin-top: auto;
    /* Softer integration with hero bg — faint golden gradient instead of white line */
    background: linear-gradient(180deg, transparent 0%, rgba(200, 180, 150, 0.03) 100%);
    border-top: 1px solid rgba(200, 180, 150, 0.08);
}

.hero__facts-inner {
    max-width: 1440px;
    margin: 0 auto;
    padding: 20px 48px;
    display: flex;
    align-items: center;
    gap: 0;
}

.hero__fact {
    flex: 1;
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 0 24px;
}

.hero__fact:first-child { padding-left: 0; }
.hero__fact:last-child { padding-right: 0; }

.hero__fact-number {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 500;
    color: var(--accent-primary);
    letter-spacing: -0.01em;
}

.hero__fact-label {
    font-size: 13px;
    font-weight: 400;
    color: rgba(255, 255, 255, 0.45);
    letter-spacing: 0.02em;
}

.hero__fact-divider {
    width: 1px;
    height: 24px;
    background: rgba(255, 255, 255, 0.1);
    flex-shrink: 0;
}

/* Scroll Indicator — animated chevron at hero bottom center */
.hero__scroll {
    position: absolute;
    bottom: 96px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 3;
    color: rgba(200, 180, 150, 0.65);
    pointer-events: none;
}

.hero__scroll-chevron {
    display: block;
    animation: scrollBounce 2.2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

@keyframes scrollBounce {
    0%, 100% { transform: translateY(0);    opacity: 0.55; }
    50%      { transform: translateY(8px);  opacity: 1; }
}

/* ===== ENTRY ANIMATIONS ===== */
.hero__title-line,
.hero__subtitle,
.hero__cta,
.hero__fact,
.hero__fact-divider {
    opacity: 0;
    transform: translateY(28px);
    animation: fadeUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Scroll-chevron has its own transform (centering) — fade in via opacity only */
.hero__scroll {
    opacity: 0;
    animation: heroScrollFadeIn 0.8s cubic-bezier(0.16, 1, 0.3, 1) 1.3s forwards;
}

@keyframes heroScrollFadeIn {
    to { opacity: 1; }
}

.hero__title-line:nth-child(1) { animation-delay: 0.15s; }
.hero__title-line:nth-child(2) { animation-delay: 0.25s; }
.hero__title-line:nth-child(3) { animation-delay: 0.35s; }
.hero__title-line:nth-child(4) { animation-delay: 0.45s; }
.hero__subtitle { animation-delay: 0.6s; }
.hero__cta { animation-delay: 0.75s; }

.hero__facts-inner > :nth-child(1) { animation-delay: 0.9s; }
.hero__facts-inner > :nth-child(2) { animation-delay: 0.95s; }
.hero__facts-inner > :nth-child(3) { animation-delay: 1.0s; }
.hero__facts-inner > :nth-child(4) { animation-delay: 1.05s; }
.hero__facts-inner > :nth-child(5) { animation-delay: 1.1s; }
.hero__facts-inner > :nth-child(6) { animation-delay: 1.15s; }
.hero__facts-inner > :nth-child(7) { animation-delay: 1.2s; }

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(28px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ===== SERVICES — Editorial Index (TZ §7.1 alternating text/photo) ===== */
.services {
    background: var(--surface-primary);
    padding: 140px 0 120px;
}

.services__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 48px;
}

/* Header */
.services__header {
    text-align: center;
    margin-bottom: 96px;
    padding-bottom: 40px;
    position: relative;
}

.services__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

.services__title {
    font-family: var(--font-display);
    font-size: clamp(40px, 4.5vw, 64px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.08;
    letter-spacing: -0.01em;
}

.services__title em {
    font-style: italic;
    color: var(--accent-primary);
}

.services__rule {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 48px;
    height: 1px;
    background: var(--accent-primary);
}

/* List */
.services__list {
    display: flex;
    flex-direction: column;
    /* Start counter at 1 so first row's ::after reads the NEXT row's number (02). */
    counter-reset: svc 1;
}

/* Row */
.svc-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 96px;
    align-items: center;
    padding: 96px 0;
    position: relative;
    counter-increment: svc;
}

.svc-row:first-child {
    padding-top: 0;
}

.svc-row:last-child {
    padding-bottom: 0;
}

/* Chapter-style italic numeral in the gap between rows.
   Earlier versions showed the NEXT row's numeral (02 under row 01,
   03 under row 02…) as a floating editorial chapter mark. The kicker
   meta strip ("02 — ЛАЗЕР") inside each row already carries the
   index though, so the floating numeral read as visual noise / a
   layout bug. Replaced with a refined editorial divider:
   a thin gold hairline broken by a small gold diamond in the middle.
   Muted enough to whisper, distinctive enough to read as intentional
   ornament rather than utility rule. */
.svc-row:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 50%;
    /* bottom: 0 + translateY(50%) places the divider's vertical center
       EXACTLY on the row boundary. Since row 1 has 96px padding-bottom
       and row 2 has 96px padding-top, the row boundary is the midpoint
       of the 192px visual gap between content — perfect centering. */
    bottom: 0;
    transform: translate(-50%, 50%);
    width: clamp(260px, 26vw, 360px);
    height: 24px;
    /* Inline SVG of an engraved rose-cut diamond silhouette flanked by
       two hairlines that rise from transparent to a warmer gold near the
       stone — the whole figure drawn as a single asset so symmetry is
       pixel-exact. Gold tones #c8b496 (cream-gold) at the outer edges
       shifting to #b8965e (deep ochre) near the gem, matching the
       editorial "parchment gold" palette. Facet lines inside the crown
       give the stone real presence at this tiny scale rather than
       reading as a generic rotated square. */
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 24' fill='none'><defs><linearGradient id='dvl' x1='0' x2='1'><stop offset='0' stop-color='%23c8b496' stop-opacity='0'/><stop offset='.55' stop-color='%23c8b496' stop-opacity='.42'/><stop offset='1' stop-color='%23b8965e' stop-opacity='.72'/></linearGradient><linearGradient id='dvr' x1='0' x2='1'><stop offset='0' stop-color='%23b8965e' stop-opacity='.72'/><stop offset='.45' stop-color='%23c8b496' stop-opacity='.42'/><stop offset='1' stop-color='%23c8b496' stop-opacity='0'/></linearGradient></defs><line x1='0' y1='12' x2='150' y2='12' stroke='url(%23dvl)' stroke-width='1'/><line x1='210' y1='12' x2='360' y2='12' stroke='url(%23dvr)' stroke-width='1'/><g transform='translate(180 12)' stroke='%23b8965e' fill='none' stroke-linejoin='round'><path d='M-11 -3 L-6 -8 L6 -8 L11 -3 L0 9 Z' stroke-width='1'/><path d='M-11 -3 L11 -3' stroke-width='.5' stroke-opacity='.6'/><path d='M-6 -8 L0 -3' stroke-width='.5' stroke-opacity='.6'/><path d='M6 -8 L0 -3' stroke-width='.5' stroke-opacity='.6'/><path d='M0 -3 L0 9' stroke-width='.5' stroke-opacity='.6'/></g></svg>");
    background-repeat: no-repeat;
    background-size: 100% 100%;
    background-position: center;
    pointer-events: none;
    user-select: none;
    z-index: 0;
}

/* Subtle breath — the gem very gently dims and brightens as if catching
   ambient light. 5s cycle, only under no-motion-preference so we respect
   accessibility defaults. */
@media (prefers-reduced-motion: no-preference) {
    .svc-row:not(:last-child)::after {
        animation: svc-divider-breath 5.5s ease-in-out infinite;
    }
}

@keyframes svc-divider-breath {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.78; }
}

/* Stack rows with descending z-index so each row's ::after divider (sitting
   below the row's own box) paints ABOVE the next row's padding-top area —
   without this, the next row (later in DOM) wins the stacking and hides the
   ornament. Only first-4 rows need it (row 5 has no divider). */
.svc-row:nth-child(1) { z-index: 4; }
.svc-row:nth-child(2) { z-index: 3; }
.svc-row:nth-child(3) { z-index: 2; }
.svc-row:nth-child(4) { z-index: 1; }


/* Alternating layout — image right on even rows */
.svc-row--reverse .svc-row__media {
    order: 2;
}

/* Media column */
.svc-row__media {
    position: relative;
}

.svc-row__image {
    aspect-ratio: 4 / 5;
    background: var(--g, linear-gradient(135deg, #2a2520, #c8b496));
    position: relative;
    overflow: hidden;
    /* Gentle hover zoom — ease-out (not expo) so the curve doesn't snap
       to 95% instantly when the cursor crosses the photo while scrolling.
       Longer duration + smaller scale keeps it subtle. */
    transition: transform 1.2s ease-out;
}

/* Grain + highlight overlay for the placeholder */
.svc-row__image::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 70% 50% at 70% 30%, rgba(200, 180, 150, 0.18), transparent 60%),
        url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.08'/%3E%3C/svg%3E");
    background-size: auto, 220px 220px;
    mix-blend-mode: screen;
    pointer-events: none;
}

.svc-row:hover .svc-row__image {
    transform: scale(1.02);
}

/* Compare variant: preserve rectangular frame and suppress hover zoom —
   the drag handle owns the interaction here. */
.svc-row__image--compare {
    transform: none !important;
    cursor: ew-resize;
}
.svc-row__image--compare::after {
    display: none;
}

/* Badge — small editorial pagination label on image corner */
.svc-row__badge {
    position: absolute;
    top: 20px;
    left: 20px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.7);
    background: rgba(26, 26, 26, 0.4);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    padding: 6px 10px;
    z-index: 1;
}

/* Body column */
.svc-row__body {
    max-width: 480px;
    position: relative;
}

.svc-row--reverse .svc-row__body {
    margin-left: auto;
}

/* Ghost outlined italic number inside body — removed in favor of the
   chapter numeral that now sits in the gap between rows. The .svc-row__num
   in the meta strip ("01 — Ремонт") still provides per-card index. */
.svc-row__ghost {
    display: none;
}

/* Lift all meaningful content above the ghost */
.svc-row__meta,
.svc-row__title,
.svc-row__desc,
.svc-row__tags,
.svc-row__footer {
    position: relative;
    z-index: 1;
}

.svc-row__meta {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 24px;
}

.svc-row__num {
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 400;
    font-style: italic;
    color: var(--accent-primary);
    letter-spacing: 0.04em;
}

.svc-row__divider {
    width: 32px;
    height: 1px;
    background: var(--accent-primary);
}

.svc-row__kicker {
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--fg-secondary);
}

.svc-row__title {
    font-family: var(--font-display);
    font-size: clamp(30px, 3vw, 46px);
    font-weight: 400;
    line-height: 1.12;
    color: var(--fg-primary);
    letter-spacing: -0.015em;
    margin-bottom: 24px;
}

.svc-row__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.svc-row__desc {
    font-size: 16px;
    line-height: 1.7;
    color: var(--fg-secondary);
    margin-bottom: 28px;
}

.svc-row__tags {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 28px;
    margin-bottom: 40px;
    padding: 22px 0;
    border-top: 1px solid var(--border-subtle);
    border-bottom: 1px solid var(--border-subtle);
}

.svc-row__tags li {
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.06em;
    color: var(--fg-secondary);
    padding-left: 18px;
    position: relative;
    line-height: 1.35;
}

.svc-row__tags li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 8px;
    height: 1px;
    background: var(--accent-primary);
}

.svc-row__footer {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
}

.svc-row__price {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.svc-row__price-label {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--fg-secondary);
    opacity: 0.7;
}

.svc-row__price-value {
    font-family: var(--font-display);
    font-size: 26px;
    font-weight: 500;
    color: var(--fg-primary);
    line-height: 1;
}

.svc-row__link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--fg-primary);
    padding-bottom: 4px;
    border-bottom: 1px solid var(--fg-primary);
    transition: color 0.3s ease, border-color 0.3s ease, gap 0.3s ease;
    white-space: nowrap;
}

.svc-row__link:hover {
    color: var(--accent-primary);
    border-color: var(--accent-primary);
    gap: 14px;
}

.svc-row__link span {
    display: inline-block;
    transition: transform 0.3s ease;
}

.svc-row__link:hover span {
    transform: translateX(2px);
}

/* No scroll-reveal on service rows — they show instantly in their final state.
   Any fade/slide here felt like a bug because the rows are tall and the
   chapter numerals in the gap already give the section its own rhythm. */

/* ===== PROCESS — 4-step timeline on parchment ===== */
.process {
    background: var(--surface-primary);
    padding: 120px 0;
    border-top: 1px solid var(--border-subtle);
}

.process__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 48px;
}

.process__header {
    text-align: center;
    margin-bottom: 88px;
    padding-bottom: 40px;
    position: relative;
}

.process__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

.process__title {
    font-family: var(--font-display);
    font-size: clamp(36px, 4vw, 56px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.1;
    letter-spacing: -0.01em;
}

.process__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.process__rule {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 48px;
    height: 1px;
    background: var(--accent-primary);
}

/* Step grid */
.process__list {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 56px;
    list-style: none;
    padding: 0;
    margin: 0;
    position: relative;
}

.process__step {
    position: relative;
    z-index: 1;
    padding-top: 28px;
}

/* ===== Timeline rail =====
   Horizontal gold rail at the top of the grid; progress fills gold when
   .process gains .is-visible (set by IntersectionObserver in script.js).
   Desktop only — tablet/mobile layouts override these to display: none. */
.process__list::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: rgba(200, 180, 150, 0.18);
    z-index: 0;
}

.process__list::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 1px;
    background: var(--accent-primary);
    z-index: 1;
    transition: width 1.8s cubic-bezier(0.65, 0, 0.35, 1) 0.3s;
}

.process.is-visible .process__list::after {
    width: 100%;
}

/* Station dot on the rail, one per step, animated in sequence */
.process__step::before {
    content: '';
    position: absolute;
    top: -4px;
    left: 0;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--accent-primary);
    transform: scale(0);
    transform-origin: center;
    transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
    z-index: 2;
}

.process.is-visible .process__step:nth-child(1)::before { transform: scale(1); transition-delay: 0.35s; }
.process.is-visible .process__step:nth-child(2)::before { transform: scale(1); transition-delay: 0.75s; }
.process.is-visible .process__step:nth-child(3)::before { transform: scale(1); transition-delay: 1.15s; }
.process.is-visible .process__step:nth-child(4)::before { transform: scale(1); transition-delay: 1.55s; }

.process__step-num {
    display: block;
    font-family: var(--font-display);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(44px, 4vw, 56px);
    line-height: 1;
    color: var(--accent-primary);
    margin-bottom: 24px;
    letter-spacing: -0.02em;
}

.process__step-kicker {
    display: block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--fg-secondary);
    margin-top: 28px;
    margin-bottom: 12px;
}

.process__step-title {
    font-family: var(--font-display);
    font-size: clamp(20px, 1.7vw, 26px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.25;
    letter-spacing: -0.005em;
    margin-bottom: 14px;
}

.process__step-title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.process__step-desc {
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.65;
    color: var(--fg-secondary);
}

/* Reveal */
.process__step {
    opacity: 0;
    transform: translateY(32px);
}

.process.is-visible .process__step {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.process.is-visible .process__step:nth-child(1) { transition-delay: 0.0s; }
.process.is-visible .process__step:nth-child(2) { transition-delay: 0.1s; }
.process.is-visible .process__step:nth-child(3) { transition-delay: 0.2s; }
.process.is-visible .process__step:nth-child(4) { transition-delay: 0.3s; }

/* ===== CUSTOM ORDER ===== */
.custom {
    position: relative;
    background: var(--surface-inverse);
    padding: 120px 0;
    overflow: hidden;
}

.custom__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 60% 80% at 80% 50%, rgba(200, 180, 150, 0.06) 0%, transparent 70%),
        radial-gradient(ellipse 40% 60% at 10% 80%, rgba(200, 180, 150, 0.03) 0%, transparent 60%);
    pointer-events: none;
}

.custom__inner {
    position: relative;
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 48px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 64px;
    align-items: center;
}

/* Text */
.custom__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

.custom__title {
    font-family: var(--font-display);
    font-size: clamp(36px, 3.5vw, 56px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.15;
    margin-bottom: 24px;
}

.custom__title em {
    font-style: italic;
    color: var(--accent-primary);
}

.custom__desc {
    font-size: 16px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.55);
    margin-bottom: 48px;
    max-width: 500px;
}

/* Steps */
.custom__steps {
    display: flex;
    align-items: center;
    gap: 0;
    margin-bottom: 48px;
}

.custom__step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    min-width: 72px;
}

.custom__step-num {
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 500;
    color: var(--accent-primary);
    line-height: 1;
}

.custom__step-label {
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.45);
    white-space: nowrap;
}

.custom__step-line {
    flex: 1;
    height: 1px;
    min-width: 24px;
    background: linear-gradient(90deg, rgba(200, 180, 150, 0.3), rgba(200, 180, 150, 0.1));
    margin: 0 8px;
    margin-bottom: 20px;
}

/* CTA */
.custom__cta {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.btn--gold {
    background: transparent;
    border: 1px solid rgba(200, 180, 150, 0.4);
    color: var(--accent-primary);
    padding: 14px 28px;
    border-radius: 4px;
}

.btn--gold:hover {
    background: var(--accent-primary);
    color: var(--surface-inverse);
    border-color: var(--accent-primary);
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(200, 180, 150, 0.15);
}

/* Solid-gold variant: primary CTA inside .custom__cta (Telegram, as main channel) */
.btn--gold-filled {
    background: var(--accent-primary);
    border-color: var(--accent-primary);
    color: var(--surface-inverse);
}

.btn--gold-filled:hover {
    background: #d8c4a6;
    border-color: #d8c4a6;
    color: var(--surface-inverse);
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(200, 180, 150, 0.25);
}

/* Image */
.custom__image {
    position: relative;
}

.custom__image-inner {
    width: 100%;
    aspect-ratio: 4 / 5;
    background-size: cover;
    background-position: center;
    box-shadow:
        0 8px 32px rgba(0, 0, 0, 0.3),
        0 24px 64px rgba(0, 0, 0, 0.15);
}

/* Scroll reveal */
.custom__text,
.custom__image {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.custom__image {
    transition-delay: 0.15s;
}

.custom.is-visible .custom__text,
.custom.is-visible .custom__image {
    opacity: 1;
    transform: translateY(0);
}

/* ===== PORTFOLIO PREVIEW ===== */
.portfolio {
    padding: 120px 0;
    background: var(--surface-primary);
}

.portfolio__inner {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 48px;
}

.portfolio__header {
    position: relative;
    text-align: center;
    margin-bottom: 72px;
    padding-bottom: 40px;
}

.portfolio__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

.portfolio__title {
    font-family: var(--font-display);
    font-size: clamp(36px, 4vw, 56px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.1;
    letter-spacing: -0.01em;
}

.portfolio__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.portfolio__rule {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 48px;
    height: 1px;
    background: var(--accent-primary);
}

/* Grid: 1 featured wide (2 cols) + 4 regular */
.portfolio__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: 440px 300px;
    gap: 12px;
    margin-bottom: 64px;
}

.portfolio__item--featured {
    grid-column: 1 / 3;
}

/* Card */
.portfolio__item {
    position: relative;
    display: block;
    overflow: hidden;
    text-decoration: none;
    border: none;
    padding: 0;
    margin: 0;
    background: var(--surface-inverse);
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.portfolio__item-img {
    position: absolute;
    inset: 0;
    background: var(--g, #1a1a1a);
    background-size: cover;
    background-position: center;
    transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

.portfolio__item:hover .portfolio__item-img {
    transform: scale(1.05);
}

/* Deepening shade on hover — same pattern as .pf-item__shade */
.portfolio__item-shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        transparent 0%,
        transparent 45%,
        rgba(0, 0, 0, 0.3) 75%,
        rgba(0, 0, 0, 0.7) 100%
    );
    transition: opacity 0.4s ease;
    pointer-events: none;
}
.portfolio__item:hover .portfolio__item-shade {
    opacity: 1.15;
}

/* Corner tag (e.g., "До / после") */
.portfolio__item-tag {
    position: absolute;
    top: 16px;
    right: 18px;
    z-index: 3;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--accent-primary);
    padding: 5px 10px;
    border: 1px solid rgba(200, 180, 150, 0.45);
    background: rgba(26, 26, 26, 0.35);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

/* Gradient overlay + text at card bottom */
.portfolio__item-meta {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 2;
    padding: 56px 24px 24px;
    background: linear-gradient(
        0deg,
        rgba(0, 0, 0, 0.72) 0%,
        rgba(0, 0, 0, 0.28) 60%,
        transparent 100%
    );
    transform: translateY(20px);
    transition: transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
}
.portfolio__item:hover .portfolio__item-meta {
    transform: translateY(0);
}

.portfolio__item-cat {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 6px;
}

.portfolio__item-title {
    font-family: var(--font-display);
    font-size: 20px;
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.25;
    margin-bottom: 10px;
}

.portfolio__item-title em {
    font-style: italic;
    color: var(--accent-primary);
}

.portfolio__item-hint {
    display: inline-block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.6);
    opacity: 0;
    transform: translateY(4px);
    transition:
        opacity 0.35s ease 0.05s,
        transform 0.35s ease 0.05s,
        color 0.25s ease;
}
.portfolio__item:hover .portfolio__item-hint {
    opacity: 1;
    transform: translateY(0);
    color: var(--accent-primary);
}

.portfolio__item:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
}

/* Featured card: larger type treatment */
.portfolio__item--featured .portfolio__item-title {
    font-size: 28px;
}
.portfolio__item--featured .portfolio__item-meta {
    padding: 60px 32px 28px;
}

/* CTA */
.portfolio__cta {
    text-align: center;
}

/* Outline button — for light-background sections */
.btn--outline {
    background: transparent;
    border: 1px solid rgba(26, 26, 26, 0.28);
    color: var(--fg-primary);
}

.btn--outline:hover {
    background: var(--fg-primary);
    color: var(--surface-primary);
    border-color: var(--fg-primary);
    transform: translateY(-1px);
}

/* Scroll reveal */
.portfolio__item,
.portfolio__cta {
    opacity: 0;
    transform: translateY(24px);
}

.portfolio.is-visible .portfolio__item {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

.portfolio.is-visible .portfolio__item:nth-child(1) { transition-delay: 0s; }
.portfolio.is-visible .portfolio__item:nth-child(2) { transition-delay: 0.08s; }
.portfolio.is-visible .portfolio__item:nth-child(3) { transition-delay: 0.16s; }
.portfolio.is-visible .portfolio__item:nth-child(4) { transition-delay: 0.22s; }
.portfolio.is-visible .portfolio__item:nth-child(5) { transition-delay: 0.28s; }

.portfolio.is-visible .portfolio__cta {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.6s ease 0.42s,
                transform 0.6s ease 0.42s;
}

/* ===== CONTACTS ===== */
.contacts {
    padding: 120px 0;
    background: var(--surface-inverse);
}

.contacts__inner {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 48px;
}

.contacts__header {
    position: relative;
    text-align: center;
    margin-bottom: 72px;
    padding-bottom: 40px;
}

.contacts__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

.contacts__title {
    font-family: var(--font-display);
    font-size: clamp(36px, 4vw, 56px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.1;
    letter-spacing: -0.01em;
}

.contacts__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.contacts__rule {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 48px;
    height: 1px;
    background: var(--accent-primary);
}

/* Cards grid */
.contacts__cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-bottom: 48px;
}

/* Card base */
.contact-card {
    display: flex;
    flex-direction: column;
    padding: 32px;
    border: 1px solid rgba(255, 255, 255, 0.09);
    transition: border-color 0.3s ease;
}

.contact-card:hover {
    border-color: rgba(255, 255, 255, 0.18);
}

/* Featured card — ателье */
.contact-card--featured {
    border-color: rgba(200, 180, 150, 0.35);
    position: relative;
}

.contact-card--featured::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--accent-primary), transparent);
}

.contact-card--featured:hover {
    border-color: rgba(200, 180, 150, 0.55);
}

/* Card top */
.contact-card__top {
    margin-bottom: 28px;
}

.contact-card__type {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.35);
    margin-bottom: 12px;
}

.contact-card--featured .contact-card__type {
    color: var(--accent-primary);
}

.contact-card__name {
    font-family: var(--font-display);
    font-size: clamp(20px, 1.8vw, 26px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.2;
}

.contact-card__name em {
    font-style: italic;
    color: var(--accent-primary);
}

/* Card body */
.contact-card__body {
    flex: 1;
    margin-bottom: 28px;
}

.contact-card__address {
    font-style: normal;
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.55);
    margin-bottom: 20px;
}

.contact-card__note {
    display: block;
    font-size: 12px;
    color: rgba(255, 255, 255, 0.3);
    margin-top: 4px;
}

.contact-card__phone {
    display: inline-block;
    font-family: var(--font-body);
    font-size: 18px;
    font-weight: 500;
    color: var(--accent-primary);
    letter-spacing: 0.01em;
    text-decoration: none;
    margin-bottom: 20px;
    transition: opacity 0.25s ease;
}

.contact-card__phone:hover { opacity: 0.75; }

.contact-card__hours {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 16px;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.contact-card__hours-row {
    display: flex;
    justify-content: space-between;
    font-family: var(--font-body);
    font-size: 12px;
}

.contact-card__hours-row span:first-child {
    color: rgba(255, 255, 255, 0.35);
}

.contact-card__hours-row span:last-child {
    color: rgba(255, 255, 255, 0.6);
}

/* Card actions */
.contact-card__actions {
    display: flex;
    gap: 10px;
}

/* Ghost small button — for card actions on dark bg */
.btn--ghost-sm {
    display: inline-flex;
    align-items: center;
    padding: 8px 18px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    color: rgba(255, 255, 255, 0.5);
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-radius: 4px;
    text-decoration: none;
    transition: border-color 0.25s ease, color 0.25s ease;
}

.btn--ghost-sm:hover {
    border-color: var(--accent-primary);
    color: var(--accent-primary);
}

/* Yandex map */
.contacts__map {
    width: 100%;
    overflow: hidden;
    margin-bottom: 80px;
    border: 1px solid rgba(255, 255, 255, 0.07);
}

.contacts__map iframe {
    display: block;
    width: 100%;
    height: 400px;
}

/* Callback form */
.contacts__form-wrap {
    max-width: 620px;
    margin: 0 auto;
}

.contacts__form-header {
    text-align: center;
    margin-bottom: 48px;
}

.contacts__form-kicker {
    display: block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 16px;
}

.contacts__form-title {
    font-family: var(--font-display);
    font-size: clamp(26px, 2.5vw, 36px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.2;
}

.contacts__form-title em {
    font-style: italic;
    color: var(--accent-primary);
}

/* Form fields */
.contact-form__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 16px;
}

.contact-form__field {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 16px;
}

.contact-form__row .contact-form__field {
    margin-bottom: 0;
}

.contact-form__label {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.4);
}

.contact-form__input {
    width: 100%;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 0;
    padding: 14px 16px;
    font-family: var(--font-body);
    font-size: 15px;
    color: var(--fg-inverse);
    transition: border-color 0.25s ease;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

.contact-form__input::placeholder {
    color: rgba(255, 255, 255, 0.25);
}

.contact-form__input:focus {
    outline: none;
    border-color: var(--accent-primary);
    background: rgba(255, 255, 255, 0.07);
}

/* Select arrow */
select.contact-form__input {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23C8B496' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    padding-right: 40px;
    cursor: pointer;
}

select.contact-form__input option {
    background: var(--surface-inverse);
    color: var(--fg-inverse);
}

.contact-form__btn {
    width: 100%;
    justify-content: center;
    margin-top: 8px;
}

/* Scroll reveal */
.contacts__cards,
.contacts__map,
.contacts__form-wrap {
    opacity: 0;
    transform: translateY(32px);
}

.contacts.is-visible .contacts__cards {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.contacts.is-visible .contacts__map {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.15s,
                transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.15s;
}

.contacts.is-visible .contacts__form-wrap {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.3s,
                transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.3s;
}

/* ===== FOOTER ===== */
.footer {
    background: #111111;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.footer__inner {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 48px;
}

.footer__main {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 64px;
    padding: 72px 0 64px;
}

/* Brand */
.footer__logo {
    display: inline-block;
    margin-bottom: 16px;
}

.footer__tagline {
    font-family: var(--font-body);
    font-size: 13px;
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.35);
    margin-bottom: 32px;
    max-width: 260px;
}

.footer__messengers {
    display: flex;
    gap: 24px;
}

.footer__messenger-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.4);
    text-decoration: none;
    transition: color 0.25s ease;
}

.footer__messenger-link:hover {
    color: var(--accent-primary);
}

/* Nav & Contact columns */
.footer__col-label {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.22);
    margin-bottom: 20px;
}

.footer__nav-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer__nav-list a {
    font-family: var(--font-body);
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    text-decoration: none;
    transition: color 0.25s ease;
}

.footer__nav-list a:hover {
    color: var(--fg-inverse);
}

.footer__phone {
    display: block;
    font-family: var(--font-body);
    font-size: 17px;
    font-weight: 500;
    color: var(--accent-primary);
    text-decoration: none;
    margin-bottom: 12px;
    letter-spacing: 0.01em;
    transition: opacity 0.25s ease;
}

.footer__phone:hover { opacity: 0.7; }

.footer__address-brief {
    font-family: var(--font-body);
    font-size: 13px;
    color: rgba(255, 255, 255, 0.3);
    line-height: 1.5;
}

/* Bottom bar */
.footer__bottom {
    border-top: 1px solid rgba(255, 255, 255, 0.07);
    padding: 24px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.footer__copy {
    font-family: var(--font-body);
    font-size: 12px;
    color: rgba(255, 255, 255, 0.22);
}

.footer__privacy {
    font-family: var(--font-body);
    font-size: 12px;
    color: rgba(255, 255, 255, 0.22);
    text-decoration: none;
    transition: color 0.25s ease;
}

.footer__privacy:hover { color: rgba(255, 255, 255, 0.5); }

/* ===== FLOATING MESSENGER BUTTONS =====
   Desktop: collapsed icon-only circles by default, expand to labeled pill on hover.
   Hidden while hero is in view (JS adds .float-msgs--visible) and when footer is in view
   (JS adds .float-msgs--hidden) so they don't duplicate the footer messenger links. */
.float-msgs {
    position: fixed;
    right: 20px;
    bottom: 24px;
    z-index: 80;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
    /* Hidden until hero scrolls out of view — JS adds .float-msgs--visible */
    opacity: 0;
    pointer-events: none;
    transform: translateX(8px);
    transition: opacity 0.35s ease, transform 0.35s ease;
}

.float-msgs--visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
}

/* Footer in viewport — fade out to avoid duplicating footer messengers */
.float-msgs--hidden {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateX(16px) !important;
}

.float-msgs__btn {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 11px 20px 11px 14px;
    background: rgba(20, 20, 20, 0.88);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(200, 180, 150, 0.22);
    border-radius: 32px;
    color: rgba(255, 255, 255, 0.72);
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.06em;
    text-decoration: none;
    white-space: nowrap;
    transition: border-color 0.25s ease, color 0.25s ease,
                transform 0.25s ease, background 0.25s ease;
}

.float-msgs__btn:hover {
    border-color: var(--accent-primary);
    color: var(--accent-primary);
    background: rgba(26, 26, 26, 0.98);
    transform: translateX(-4px);
}

.float-msgs__icon {
    flex-shrink: 0;
    transition: color 0.25s ease;
}

/* ===================================================
   PRICES PAGE  (/tseny/)
   =================================================== */

/* --- Header variant on dark page-head ---
   Active nav link gets gold underline to mark current page. */
.nav__link--active {
    color: var(--fg-inverse);
}
.nav__link--active::after {
    width: 100%;
}

/* --- Breadcrumbs --- */
.breadcrumbs {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 32px;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.breadcrumbs__link {
    color: rgba(255, 255, 255, 0.5);
    transition: color 0.25s ease;
}
.breadcrumbs__link:hover {
    color: var(--accent-primary);
}
.breadcrumbs__sep {
    color: rgba(255, 255, 255, 0.25);
}
.breadcrumbs__current {
    color: var(--accent-primary);
}

/* --- Page head (dark banner for sub-pages) --- */
.page-head {
    position: relative;
    background: var(--surface-inverse);
    padding: calc(var(--header-height) + 88px) 0 96px;
    overflow: hidden;
}

.page-head::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 120% 80% at 80% 20%, rgba(200, 180, 150, 0.10), transparent 60%),
        radial-gradient(ellipse 80% 60% at 20% 100%, rgba(200, 180, 150, 0.06), transparent 70%);
    pointer-events: none;
}

.page-head__inner {
    position: relative;
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 48px;
}

.page-head__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 24px;
}

.page-head__title {
    font-family: var(--font-display);
    font-size: clamp(44px, 5.5vw, 76px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.04;
    letter-spacing: -0.015em;
    margin-bottom: 28px;
    max-width: 900px;
}

.page-head__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.page-head__subtitle {
    max-width: 560px;
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.68);
    margin-bottom: 40px;
}

.page-head__rule {
    display: block;
    width: 56px;
    height: 1px;
    background: var(--accent-primary);
}

/* --- Prices section wrapper --- */
.prices {
    padding: 96px 0 120px;
    background: var(--surface-primary);
}

.prices__inner {
    max-width: 1080px;
    margin: 0 auto;
    padding: 0 48px;
}

/* --- Tabs --- */
.prices__tabs {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--border-subtle);
    margin-bottom: 64px;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.prices__tabs::-webkit-scrollbar { display: none; }

.prices__tab {
    position: relative;
    display: inline-flex;
    align-items: baseline;
    gap: 10px;
    padding: 18px 32px;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--fg-secondary);
    font-family: var(--font-body);
    transition: color 0.25s ease;
    white-space: nowrap;
    margin-bottom: -1px;
}

.prices__tab::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: 0;
    width: 0;
    height: 2px;
    background: var(--accent-primary);
    transform: translateX(-50%);
    transition: width 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.prices__tab:hover {
    color: var(--fg-primary);
}

.prices__tab:hover::after {
    width: 24px;
}

.prices__tab--active {
    color: var(--fg-primary);
}

.prices__tab--active::after {
    width: 100%;
}

.prices__tab:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: -6px;
}

.prices__tab-num {
    font-family: var(--font-display);
    font-style: italic;
    font-size: 15px;
    color: var(--accent-primary);
    opacity: 0.55;
    transition: opacity 0.25s ease;
}

.prices__tab-label {
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.prices__tab:hover .prices__tab-num,
.prices__tab--active .prices__tab-num {
    opacity: 1;
}

/* --- Panels --- */
.prices__panel {
    display: none;
}

.prices__panel--active {
    display: block;
    animation: priceFadeIn 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes priceFadeIn {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: translateY(0); }
}

/* --- Group (e.g., "Замки и крепления") --- */
.price-group {
    margin-bottom: 72px;
}

.price-group:last-child {
    margin-bottom: 0;
}

.price-group__title {
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 500;
    color: var(--accent-primary);
    letter-spacing: 0.24em;
    text-transform: uppercase;
    margin-bottom: 28px;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(200, 180, 150, 0.32);
}

.price-list {
    display: flex;
    flex-direction: column;
}

/* --- Price row (item + description + value) --- */
.price-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 48px;
    padding: 26px 0;
    border-bottom: 1px solid var(--border-subtle);
    transition: background 0.2s ease, padding 0.2s ease;
}

.price-row:last-child {
    border-bottom: none;
}

.price-row:hover {
    background: rgba(200, 180, 150, 0.05);
    padding-left: 12px;
    padding-right: 12px;
}

.price-row__info {
    flex: 1;
    min-width: 0;
}

.price-row__name {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.25;
    margin-bottom: 6px;
}

.price-row__desc {
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.5;
    color: var(--fg-secondary);
    max-width: 560px;
}

.price-row__value {
    flex-shrink: 0;
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 500;
    color: var(--accent-primary);
    white-space: nowrap;
    line-height: 1.3;
    letter-spacing: -0.01em;
}

.price-row--free .price-row__value {
    font-style: italic;
    font-size: 20px;
}

/* --- Info note (inside a panel) --- */
.prices__note {
    margin-top: 56px;
    padding: 24px 28px;
    background: #ECE8DF;
    border-left: 2px solid var(--accent-primary);
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.prices__note-label {
    flex-shrink: 0;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--accent-hover);
    margin-top: 2px;
}

.prices__note p {
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.6;
    color: var(--fg-primary);
    margin: 0;
}

/* --- Disclaimer (bottom of prices section) --- */
.prices__disclaimer {
    margin-top: 72px;
    padding-top: 32px;
    border-top: 1px solid var(--border-subtle);
    font-family: var(--font-body);
    font-size: 13px;
    line-height: 1.65;
    color: var(--fg-secondary);
    max-width: 720px;
}

/* --- CTA block at bottom --- */
.prices-cta {
    position: relative;
    padding: 120px 0;
    background: var(--surface-inverse);
    overflow: hidden;
}

.prices-cta__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 100% 70% at 50% 100%, rgba(200, 180, 150, 0.12), transparent 70%),
        radial-gradient(ellipse 80% 50% at 15% 0%, rgba(200, 180, 150, 0.08), transparent 65%);
    pointer-events: none;
}

.prices-cta__inner {
    position: relative;
    max-width: 820px;
    margin: 0 auto;
    padding: 0 48px;
    text-align: center;
}

.prices-cta__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 24px;
}

.prices-cta__title {
    font-family: var(--font-display);
    font-size: clamp(36px, 4.5vw, 56px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin-bottom: 24px;
}

.prices-cta__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.prices-cta__desc {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.7);
    max-width: 560px;
    margin: 0 auto 40px;
}

.prices-cta__buttons {
    display: flex;
    gap: 14px;
    justify-content: center;
    flex-wrap: wrap;
}

/* ===================================================
   PORTFOLIO PAGE  (/portfolio/)
   Editorial asymmetric grid + cinematic reveals
   =================================================== */

/* --- Page-head variant: animated ornament --- */
.page-head--portfolio .page-head__inner {
    position: relative;
}

.page-head__ornament {
    position: absolute;
    top: 50%;
    right: 48px;
    transform: translateY(-50%);
    color: var(--accent-primary);
    opacity: 0;
    animation: pfOrnamentIn 2s cubic-bezier(0.16, 1, 0.3, 1) 0.2s forwards;
    pointer-events: none;
}

.page-head__ornament svg {
    animation: pfOrnamentSpin 80s linear infinite;
}

@keyframes pfOrnamentIn {
    from { opacity: 0; transform: translateY(-50%) scale(0.7); }
    to { opacity: 1; transform: translateY(-50%) scale(1); }
}

@keyframes pfOrnamentSpin {
    to { transform: rotate(360deg); }
}

/* --- Portfolio section wrapper --- */
.pf {
    padding: 88px 0 120px;
    background: var(--surface-primary);
}

.pf__inner {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 48px;
}

/* --- Bar: counter + filters --- */
.pf__bar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 40px;
    margin-bottom: 56px;
    padding-bottom: 28px;
    border-bottom: 1px solid var(--border-subtle);
    position: relative;
}

.pf__bar::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 56px;
    height: 1px;
    background: var(--accent-primary);
}

/* Counter */
.pf__counter {
    display: flex;
    align-items: baseline;
    gap: 12px;
    font-family: var(--font-body);
    color: var(--fg-secondary);
    font-size: 13px;
    letter-spacing: 0.04em;
}

.pf__counter-num {
    font-family: var(--font-display);
    font-style: italic;
    font-size: 48px;
    color: var(--fg-primary);
    line-height: 1;
    letter-spacing: -0.02em;
    transition: color 0.3s ease;
}

.pf__counter-label {
    padding-bottom: 6px;
}

/* Filters */
.pf__filters {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.pf-filter {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    background: transparent;
    border: 1px solid transparent;
    cursor: pointer;
    font-family: var(--font-body);
    color: var(--fg-secondary);
    transition:
        color 0.3s ease,
        border-color 0.3s ease,
        background 0.3s ease;
}

.pf-filter__label {
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}

.pf-filter__count {
    font-family: var(--font-display);
    font-style: italic;
    font-size: 12px;
    color: var(--accent-primary);
    opacity: 0.5;
    transition: opacity 0.25s ease;
}

.pf-filter:hover {
    color: var(--fg-primary);
}
.pf-filter:hover .pf-filter__count {
    opacity: 1;
}

.pf-filter--active {
    border-color: var(--fg-primary);
    color: var(--fg-primary);
    background: var(--fg-primary);
}
.pf-filter--active .pf-filter__label {
    color: var(--fg-inverse);
}
.pf-filter--active .pf-filter__count {
    color: var(--accent-primary);
    opacity: 1;
}

.pf-filter:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 3px;
}

/* --- GRID (editorial 12-col asymmetric, auto-dense) --- */
.pf-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 120px;
    grid-auto-flow: dense;
    gap: 14px;
}

/* Item size variants */
.pf-item--hero   { grid-column: span 6; grid-row: span 4; }
.pf-item--tall   { grid-column: span 3; grid-row: span 4; }
.pf-item--wide   { grid-column: span 6; grid-row: span 3; }
.pf-item--square { grid-column: span 3; grid-row: span 3; }

/* --- Item card (a button, clickable) --- */
.pf-item {
    position: relative;
    display: block;
    overflow: hidden;
    border: none;
    padding: 0;
    cursor: pointer;
    background: var(--surface-inverse);
    color: inherit;
    font: inherit;
    text-align: left;

    /* Reveal start state */
    opacity: 0;
    transform: translateY(24px);
    clip-path: inset(0 0 100% 0);
    transition:
        opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
        transform 0.9s cubic-bezier(0.16, 1, 0.3, 1),
        clip-path 1.1s cubic-bezier(0.77, 0, 0.175, 1);
}

/* Stagger delays — chained for a wavy reveal */
.pf-item:nth-child(1)  { transition-delay: 0.00s, 0.00s, 0.00s; }
.pf-item:nth-child(2)  { transition-delay: 0.08s, 0.08s, 0.08s; }
.pf-item:nth-child(3)  { transition-delay: 0.14s, 0.14s, 0.14s; }
.pf-item:nth-child(4)  { transition-delay: 0.20s, 0.20s, 0.20s; }
.pf-item:nth-child(5)  { transition-delay: 0.26s, 0.26s, 0.26s; }
.pf-item:nth-child(6)  { transition-delay: 0.32s, 0.32s, 0.32s; }
.pf-item:nth-child(7)  { transition-delay: 0.38s, 0.38s, 0.38s; }
.pf-item:nth-child(8)  { transition-delay: 0.44s, 0.44s, 0.44s; }
.pf-item:nth-child(9)  { transition-delay: 0.50s, 0.50s, 0.50s; }
.pf-item:nth-child(10) { transition-delay: 0.56s, 0.56s, 0.56s; }
.pf-item:nth-child(11) { transition-delay: 0.62s, 0.62s, 0.62s; }
.pf-item:nth-child(12) { transition-delay: 0.68s, 0.68s, 0.68s; }

.pf-item.is-revealed {
    opacity: 1;
    transform: translateY(0);
    clip-path: inset(0 0 0 0);
}

/* Filter: instant hide — remove the item from grid flow so dense packing
   re-flows cleanly. Any fade/waterfall here conflicts with the stagger
   transition-delays on the reveal state above and causes a flicker. */
.pf-item.is-filtered-out {
    display: none;
}

/* Image layer */
.pf-item__img {
    position: absolute;
    inset: 0;
    background: var(--g, #1a1a1a);
    background-size: cover;
    background-position: center;
    transition: transform 1.1s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: transform;
}

/* Subtle noise + highlight overlay (matches svc-row treatment) */
.pf-item__img::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 70% 50% at 70% 30%, rgba(200, 180, 150, 0.18), transparent 60%),
        url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");
    background-size: auto, 200px 200px;
    mix-blend-mode: screen;
    pointer-events: none;
}

.pf-item:hover .pf-item__img {
    transform: scale(1.06);
}

/* Gradient shade at bottom — deepens on hover */
.pf-item__shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        transparent 0%,
        transparent 40%,
        rgba(0, 0, 0, 0.35) 75%,
        rgba(0, 0, 0, 0.78) 100%
    );
    transition: opacity 0.4s ease;
}
.pf-item:hover .pf-item__shade {
    opacity: 1.1;
}

/* Corner number (top-left) */
.pf-item__num {
    position: absolute;
    top: 18px;
    left: 20px;
    z-index: 3;
    font-family: var(--font-display);
    font-style: italic;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.55);
    letter-spacing: 0.02em;
    transition: color 0.3s ease;
}
.pf-item:hover .pf-item__num {
    color: var(--accent-primary);
}

/* Corner tag (e.g., "До / после") — top-right */
.pf-item__tag {
    position: absolute;
    top: 18px;
    right: 20px;
    z-index: 3;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--accent-primary);
    padding: 5px 10px;
    border: 1px solid rgba(200, 180, 150, 0.45);
    background: rgba(26, 26, 26, 0.35);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

/* Meta (bottom) */
.pf-item__meta {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    padding: 28px 24px 24px;
    color: var(--fg-inverse);

    /* Editorial slide-up: hint line travels in on hover */
    transform: translateY(28px);
    transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.pf-item:hover .pf-item__meta {
    transform: translateY(0);
}

.pf-item__cat {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 8px;
}

.pf-item__title {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.2;
    letter-spacing: -0.005em;
    margin-bottom: 12px;
}

.pf-item__title em {
    font-style: italic;
    color: var(--accent-primary);
}

.pf-item__hint {
    display: inline-block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.55);
    opacity: 0;
    transform: translateY(6px);
    transition:
        opacity 0.4s ease 0.05s,
        transform 0.4s ease 0.05s,
        color 0.3s ease;
}
.pf-item:hover .pf-item__hint {
    opacity: 1;
    transform: translateY(0);
    color: var(--accent-primary);
}

/* Hero item: larger typography */
.pf-item--hero .pf-item__title {
    font-size: 34px;
}
.pf-item--hero .pf-item__meta {
    padding: 40px 36px 32px;
}
.pf-item--hero .pf-item__num {
    top: 24px;
    left: 28px;
    font-size: 15px;
}

/* Wide item: accent typography treatment */
.pf-item--wide .pf-item__title {
    font-size: 26px;
}

/* Tall item: compact but proud */
.pf-item--tall .pf-item__title {
    font-size: 20px;
}

/* Focus visible — accessible */
.pf-item:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
}

/* --- Empty state --- */
.pf__empty {
    padding: 80px 20px;
    text-align: center;
    font-family: var(--font-display);
    font-size: 20px;
    font-style: italic;
    color: var(--fg-secondary);
    border: 1px solid var(--border-subtle);
    max-width: 640px;
    margin: 0 auto;
}

/* --- PORTFOLIO CTA (distinct from prices-cta) --- */
.pf-cta {
    position: relative;
    padding: 120px 0;
    background: var(--surface-inverse);
    overflow: hidden;
}

.pf-cta__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 70% 50% at 90% 40%, rgba(200, 180, 150, 0.15), transparent 65%),
        radial-gradient(ellipse 60% 40% at 10% 80%, rgba(200, 180, 150, 0.08), transparent 70%);
    pointer-events: none;
}

.pf-cta__bg::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 2px;
    height: 120px;
    background: linear-gradient(180deg, transparent, var(--accent-primary), transparent);
    transform: translate(-50%, -50%) rotate(45deg);
    opacity: 0.15;
}

.pf-cta__inner {
    position: relative;
    max-width: 860px;
    margin: 0 auto;
    padding: 0 48px;
    text-align: center;
}

.pf-cta__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 24px;
}

.pf-cta__title {
    font-family: var(--font-display);
    font-size: clamp(40px, 5vw, 64px);
    font-weight: 400;
    color: var(--fg-inverse);
    line-height: 1.08;
    letter-spacing: -0.015em;
    margin-bottom: 28px;
}

.pf-cta__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.pf-cta__desc {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.7);
    max-width: 560px;
    margin: 0 auto 40px;
}

.pf-cta__buttons {
    display: flex;
    gap: 14px;
    justify-content: center;
    flex-wrap: wrap;
}

/* ===================================================
   BACK TO HOME (sub-pages: /tseny/, /portfolio/)
   Minimal editorial band above footer — gives the user
   an obvious return path to the landing page.
   =================================================== */
.back-home {
    background: var(--surface-primary);
    border-top: 1px solid var(--border-subtle);
    padding: 48px 24px;
    text-align: center;
}

.back-home__link {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: var(--font-display);
    font-size: 20px;
    font-weight: 400;
    color: var(--fg-primary);
    text-decoration: none;
    letter-spacing: -0.005em;
    transition: color 0.25s ease, gap 0.25s ease;
}

.back-home__link em {
    font-style: italic;
    color: var(--accent-primary);
}

.back-home__arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(26, 26, 26, 0.28);
    border-radius: 50%;
    font-family: var(--font-body);
    font-size: 16px;
    color: var(--fg-primary);
    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.25s ease,
                border-color 0.25s ease,
                color 0.25s ease;
}

.back-home__link:hover {
    gap: 18px;
}

.back-home__link:hover .back-home__arrow {
    transform: translateX(-4px);
    background: var(--fg-primary);
    border-color: var(--fg-primary);
    color: var(--surface-primary);
}

/* ===================================================
   COMPARE — reusable before/after slider component
   Used inline on services section (home) and inside
   lightbox on portfolio. Two gradient/image layers +
   draggable handle that clips the "after" layer.
   =================================================== */
.compare {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    user-select: none;
    -webkit-user-select: none;
    cursor: ew-resize;
}

.compare__before,
.compare__after {
    position: absolute;
    inset: 0;
    background: var(--g, #1a1a1a);
    background-size: cover;
    background-position: center;
}

.compare__before {
    background: var(--g-before, #2a2520);
}

.compare__after {
    clip-path: inset(0 50% 0 0);
}

.compare__after::after,
.compare__before::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 70% 50% at 70% 30%, rgba(200, 180, 150, 0.18), transparent 60%),
        url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.08'/%3E%3C/svg%3E");
    background-size: auto, 220px 220px;
    mix-blend-mode: screen;
    pointer-events: none;
}

.compare__label {
    position: absolute;
    top: 18px;
    z-index: 4;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.85);
    padding: 5px 10px;
    background: rgba(26, 26, 26, 0.45);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.compare__label--before {
    right: 18px;
}

.compare__label--after {
    left: 18px;
    color: var(--accent-primary);
}

.compare__handle {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 2px;
    background: rgba(255, 255, 255, 0.8);
    transform: translateX(-50%);
    z-index: 5;
    cursor: ew-resize;
    touch-action: none;
}

.compare__handle-line {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        rgba(200, 180, 150, 0.1) 0%,
        rgba(200, 180, 150, 0.9) 50%,
        rgba(200, 180, 150, 0.1) 100%
    );
}

.compare__handle-grip {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--accent-primary);
    color: var(--surface-inverse);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.compare:hover .compare__handle-grip,
.compare__handle--active .compare__handle-grip {
    transform: translate(-50%, -50%) scale(1.08);
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.45);
}

.compare__handle:focus-visible {
    outline: none;
}
.compare__handle:focus-visible .compare__handle-grip {
    outline: 2px solid var(--accent-primary);
    outline-offset: 4px;
}

/* Smooth mode: animate clip-path for mobile tap-to-toggle + auto-demo */
.compare--smooth .compare__after,
.compare--smooth .compare__handle {
    transition: clip-path 0.6s cubic-bezier(0.65, 0, 0.35, 1),
                left 0.6s cubic-bezier(0.65, 0, 0.35, 1);
}

/* Mobile hint pill — hidden by default, revealed on mobile */
.compare__hint {
    position: absolute;
    bottom: 14px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 6;
    display: none;
    align-items: center;
    gap: 6px;
    padding: 7px 14px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.08em;
    color: rgba(255, 255, 255, 0.88);
    background: rgba(20, 20, 20, 0.72);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(200, 180, 150, 0.3);
    border-radius: 20px;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.4s ease;
    white-space: nowrap;
}

.compare__hint::before {
    content: '';
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--accent-primary);
    box-shadow: 0 0 0 0 rgba(200, 180, 150, 0.6);
    animation: compare-hint-pulse 1.8s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes compare-hint-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(200, 180, 150, 0.55); }
    70% { box-shadow: 0 0 0 8px rgba(200, 180, 150, 0); }
}

.compare--interacted .compare__hint {
    opacity: 0 !important;
}

/* ===================================================
   LIGHTBOX (shared — portfolio & future pages)
   =================================================== */
.lb {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    justify-content: center;
    visibility: hidden;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.4s ease, visibility 0s 0.4s;
}

.lb--open {
    visibility: visible;
    pointer-events: auto;
    opacity: 1;
    transition: opacity 0.4s ease;
}

.lb__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(10, 10, 10, 0.94);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    cursor: pointer;
}

.lb__close,
.lb__nav {
    position: absolute;
    z-index: 3;
    width: 52px;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(200, 180, 150, 0.22);
    color: rgba(255, 255, 255, 0.8);
    cursor: pointer;
    transition:
        background 0.25s ease,
        border-color 0.25s ease,
        color 0.25s ease,
        transform 0.25s ease;
}

.lb__close {
    top: 28px;
    right: 28px;
    border-radius: 50%;
}

.lb__close:hover,
.lb__nav:hover {
    background: rgba(200, 180, 150, 0.14);
    border-color: var(--accent-primary);
    color: var(--accent-primary);
}

.lb__nav {
    top: 50%;
    transform: translateY(-50%);
    border-radius: 0;
}
.lb__nav--prev { left: 28px; }
.lb__nav--next { right: 28px; }

.lb__nav--prev:hover { transform: translateY(-50%) translateX(-4px); }
.lb__nav--next:hover { transform: translateY(-50%) translateX(4px); }

.lb__nav:focus-visible,
.lb__close:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
}

/* Stage */
.lb__stage {
    position: relative;
    z-index: 2;
    width: calc(100vw - 200px);
    max-width: 1280px;
    max-height: calc(100vh - 120px);
    display: flex;
    flex-direction: column;
    transform: scale(0.96);
    transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.lb--open .lb__stage {
    transform: scale(1);
}

.lb__figure {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 40px;
    margin: 0;
    height: calc(100vh - 120px);
    max-height: 800px;
}

.lb__media {
    position: relative;
    overflow: hidden;
    background: #0a0a0a;
    border: 1px solid rgba(200, 180, 150, 0.18);
}

.lb__image {
    position: absolute;
    inset: 0;
    background: var(--g, #1a1a1a);
    background-size: cover;
    background-position: center;
    transition: opacity 0.4s ease;
}

/* Before/after compare — stacked */
.lb__compare {
    position: absolute;
    inset: 0;
    user-select: none;
    -webkit-user-select: none;
}

.lb__compare-before,
.lb__compare-after {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
}

.lb__compare-before {
    background: var(--g-before, #2a2a2a);
}

.lb__compare-after {
    background: var(--g, #c8b496);
    clip-path: inset(0 50% 0 0);
}

.lb__compare-label {
    position: absolute;
    top: 24px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--fg-inverse);
    padding: 6px 12px;
    background: rgba(10, 10, 10, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(200, 180, 150, 0.28);
}

/* Labels sit on the visible half of each layer at default 50% split.
   "До" is on the before-layer, which is visible on the RIGHT at default split.
   "После" is on the after-layer, which is visible on the LEFT at default split. */
.lb__compare-label--before {
    right: 24px;
}

.lb__compare-label--after {
    left: 24px;
    color: var(--accent-primary);
}

/* Draggable handle with gold vertical line and center grip */
.lb__compare-handle {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 44px;
    transform: translateX(-50%);
    cursor: ew-resize;
    touch-action: none;
}

.lb__compare-handle-line {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 2px;
    background: var(--accent-primary);
    transform: translateX(-50%);
    box-shadow: 0 0 16px rgba(200, 180, 150, 0.6);
}

.lb__compare-handle-grip {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 44px;
    height: 44px;
    transform: translate(-50%, -50%);
    background: #0a0a0a;
    border: 1.5px solid var(--accent-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--accent-primary);
    transition: transform 0.25s ease, background 0.25s ease;
}

.lb__compare-handle:hover .lb__compare-handle-grip,
.lb__compare-handle--active .lb__compare-handle-grip {
    transform: translate(-50%, -50%) scale(1.1);
    background: var(--accent-primary);
    color: #0a0a0a;
}

.lb__compare-handle:focus-visible {
    outline: none;
}
.lb__compare-handle:focus-visible .lb__compare-handle-grip {
    box-shadow: 0 0 0 3px rgba(200, 180, 150, 0.4);
}

/* Caption panel on the right */
.lb__caption {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 32px 8px;
    color: var(--fg-inverse);
    opacity: 0;
    transform: translateX(12px);
    transition:
        opacity 0.5s ease 0.15s,
        transform 0.6s cubic-bezier(0.16, 1, 0.3, 1) 0.15s;
}

.lb--open .lb__caption {
    opacity: 1;
    transform: translateX(0);
}

.lb__cat {
    display: inline-block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(200, 180, 150, 0.25);
    margin-bottom: 24px;
    align-self: flex-start;
}

.lb__title {
    font-family: var(--font-display);
    font-size: clamp(28px, 3vw, 40px);
    font-weight: 400;
    line-height: 1.12;
    letter-spacing: -0.01em;
    margin-bottom: 20px;
}

.lb__title em {
    font-style: italic;
    color: var(--accent-primary);
}

.lb__desc {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.72);
    margin-bottom: 32px;
}

.lb__counter {
    font-family: var(--font-display);
    font-size: 14px;
    font-style: italic;
    color: rgba(255, 255, 255, 0.48);
    letter-spacing: 0.04em;
    margin-top: auto;
    padding-top: 24px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.lb__counter-sep {
    margin: 0 6px;
    color: rgba(255, 255, 255, 0.3);
}

#lbCounterCurrent {
    color: var(--accent-primary);
    font-style: italic;
    font-size: 24px;
}

/* ===== RESPONSIVE ===== */

/* Tablet */
@media (max-width: 1024px) {
    .header__inner {
        padding: 0 32px;
    }

    .hero__content {
        padding: 0 32px;
        padding-top: calc(var(--header-height) + 32px);
    }

    .hero__facts-inner {
        padding: 16px 32px;
    }

    .hero__scroll { display: none; }

    .hero__title {
        font-size: clamp(42px, 5vw, 64px);
    }

    .services { padding: 100px 0 80px; }
    .services__inner { padding: 0 32px; }
    .services__header { margin-bottom: 72px; }

    .svc-row {
        gap: 56px;
        padding: 72px 0;
    }

    .svc-row__body { max-width: none; }
    .svc-row__title { font-size: clamp(28px, 4vw, 40px); }

    .process { padding: 96px 0; }
    .process__inner { padding: 0 32px; }
    .process__header { margin-bottom: 64px; }

    .process__list {
        grid-template-columns: repeat(2, 1fr);
        gap: 56px 40px;
    }

    /* On tablet the border-top is the separator; hide the horizontal timeline rail */
    .process__list::before,
    .process__list::after { display: none; }

    .process__step {
        padding-top: 24px;
        border-top: 1px solid rgba(200, 180, 150, 0.4);
    }

    .process__step::before { display: none; }

    .custom { padding: 80px 0; }
    .custom__inner { padding: 0 32px; gap: 40px; }

    /* Footer */
    .footer__inner { padding: 0 32px; }
    .footer__main { grid-template-columns: 1fr 1fr; gap: 40px; padding: 56px 0 48px; }
    .footer__brand { grid-column: 1 / 3; }

    /* Contacts */
    .contacts { padding: 96px 0; }
    .contacts__inner { padding: 0 32px; }
    .contacts__header { margin-bottom: 56px; }

    .contacts__cards {
        grid-template-columns: 1fr;
        gap: 16px;
        margin-bottom: 40px;
    }

    .contact-card {
        padding: 28px;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 0 32px;
    }

    .contact-card__top { width: 100%; margin-bottom: 20px; }
    .contact-card__body { flex: 1; min-width: 200px; margin-bottom: 0; }
    .contact-card__actions { align-self: flex-end; }

    .contacts__map { margin-bottom: 56px; }

    /* Portfolio */
    .portfolio { padding: 96px 0; }
    .portfolio__inner { padding: 0 32px; }
    .portfolio__header { margin-bottom: 56px; }

    .portfolio__grid {
        grid-template-columns: repeat(2, 1fr);
        grid-template-rows: 320px 240px 240px;
        gap: 10px;
        margin-bottom: 48px;
    }

    /* featured still spans full width */
    .portfolio__item--featured {
        grid-column: 1 / 3;
    }

    /* --- Prices page --- */
    .page-head { padding: calc(var(--header-height) + 64px) 0 72px; }
    .page-head__inner { padding: 0 32px; }
    .page-head__title { font-size: clamp(40px, 6vw, 60px); }

    .prices { padding: 72px 0 96px; }
    .prices__inner { padding: 0 32px; }

    .prices__tab {
        padding: 16px 22px;
    }

    .prices-cta { padding: 96px 0; }
    .prices-cta__inner { padding: 0 32px; }

    /* --- Portfolio page (sub-page) --- */
    .pf { padding: 56px 0 96px; }
    .pf__inner { padding: 0 32px; }

    .pf__bar {
        flex-direction: column;
        align-items: flex-start;
        gap: 20px;
        margin-bottom: 40px;
        padding-bottom: 24px;
    }

    .pf__filters {
        width: 100%;
        overflow-x: auto;
        padding-bottom: 4px;
        -webkit-overflow-scrolling: touch;
    }

    /* Simplify asymmetric grid on tablet: 6-col, coarser rows */
    .pf-grid {
        grid-template-columns: repeat(6, 1fr);
        grid-auto-rows: 140px;
        gap: 12px;
    }
    .pf-item--hero   { grid-column: span 6; grid-row: span 3; }
    .pf-item--tall   { grid-column: span 3; grid-row: span 3; }
    .pf-item--wide   { grid-column: span 6; grid-row: span 2; }
    .pf-item--square { grid-column: span 3; grid-row: span 2; }

    .page-head--portfolio .page-head__ornament { display: none; }

    .pf-cta { padding: 96px 0; }
    .pf-cta__inner { padding: 0 32px; }

    /* Lightbox tablet */
    .lb__figure {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .lb__stage { padding: 32px; }
    .lb__media { min-height: 50vh; }
    .lb__nav--prev { left: 16px; }
    .lb__nav--next { right: 16px; }
}

/* Mobile */
@media (max-width: 768px) {
    :root {
        --header-height: 64px;
    }

    .header__inner {
        padding: 0 20px;
    }

    .nav { display: none; }

    /* On mobile: phone lives only in hamburger menu — header stays clean (logo + burger) */
    .header__phone { display: none; }

    .burger { display: flex; }

    /* Hide hero video on mobile to save ~2.7MB on cellular + battery on
       autoplay. Gradient fallback (.hero__bg-image) paints the hero.
       TODO: serve a separate lighter mobile cut of the video (~500KB,
       720×540, lower bitrate) when one's available, via <source media>. */
    .hero__video { display: none; }

    .hero__overlay {
        background: linear-gradient(
            180deg,
            rgba(26, 26, 26, 0.7) 0%,
            rgba(26, 26, 26, 0.88) 50%,
            rgba(26, 26, 26, 0.95) 100%
        );
    }

    .hero__content {
        padding: 0 20px;
        padding-top: calc(var(--header-height) + 32px);
        padding-bottom: 40px;
        align-items: flex-start;
    }

    /* Mobile: drop 100vh so content sits right under header, no dead space */
    .hero {
        min-height: auto;
    }

    .hero__title {
        font-size: clamp(36px, 10vw, 52px);
        margin-bottom: 16px;
    }

    .hero__subtitle {
        font-size: 12px;
        margin-bottom: 32px;
    }

    .hero__cta {
        flex-direction: column;
        gap: 12px;
    }

    .btn {
        width: 100%;
        justify-content: center;
        padding: 16px 24px;
        font-size: 15px;
    }

    /* Facts: 2x2 grid on mobile */
    .hero__facts-inner {
        padding: 16px 20px;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 12px 24px;
    }

    .hero__fact-divider { display: none; }

    .hero__fact {
        padding: 0;
        gap: 6px;
    }

    .hero__fact-number {
        font-size: 18px;
    }

    .hero__fact-label {
        font-size: 12px;
    }

    .hero__scroll { display: none; }

    .services { padding: 72px 0 56px; }
    .services__inner { padding: 0 20px; }
    .services__header { margin-bottom: 48px; padding-bottom: 28px; }

    /* On mobile each service becomes a weightless floating card.
       Rationale: the desktop "editorial river" (one long flow with chapter
       numerals in the gaps) works at desktop width, but on a 375px screen
       the texts of adjacent services bleed into each other and feel like
       one sheet. Cards give the eye a clear per-service container: white
       tile, hairline gold border, soft shadow, generous air between. */
    .svc-row {
        grid-template-columns: 1fr;
        gap: 0;
        padding: 0;
        background: #ffffff;
        border: 1px solid rgba(200, 180, 150, 0.14);
        border-radius: 16px;
        overflow: hidden;
        box-shadow:
            0 1px 4px rgba(42, 37, 32, 0.03),
            0 12px 28px rgba(42, 37, 32, 0.045);
    }

    .svc-row + .svc-row {
        margin-top: 28px;
    }

    /* Engraved gem divider lives in the gap between rows on desktop only.
       On mobile the card borders + padding already provide the visual break,
       so drop the ornament. Per-card "02 — ЛАЗЕР" eyebrow still labels each row. */
    .svc-row:not(:last-child)::after {
        display: none;
    }

    /* On mobile: always image first, regardless of reverse */
    .svc-row--reverse .svc-row__media {
        order: 0;
    }

    .svc-row--reverse .svc-row__body {
        margin-left: 0;
    }

    .svc-row__image {
        aspect-ratio: 4 / 3;
        /* Image is flush to card top; corners get clipped by card's
           overflow:hidden + border-radius, so the photo tile matches the
           card outline without needing its own radius. */
    }

    /* Content below the photo breathes inside the card */
    .svc-row__body {
        padding: 24px 20px 26px;
    }

    .svc-row__title {
        font-size: clamp(26px, 7vw, 34px);
        margin-bottom: 16px;
    }

    .svc-row__desc {
        font-size: 15px;
        margin-bottom: 20px;
    }

    .svc-row__tags {
        margin-bottom: 28px;
        padding: 16px 0;
        gap: 10px 20px;
    }

    .svc-row__tags li {
        font-size: 11px;
        padding-left: 14px;
    }

    .svc-row__tags li::before {
        width: 6px;
    }

    /* Ghost number too large for mobile — shrink + push up so it doesn't overlap the "01 — РЕМОНТ" label */
    .svc-row__ghost {
        top: -74px;
        left: -6px;
        font-size: 88px;
        -webkit-text-stroke-width: 0.5px;
        opacity: 0.9;
    }

    .svc-row__footer {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    .svc-row__price-value { font-size: 22px; }
    .svc-row__badge { top: 12px; left: 12px; font-size: 10px; padding: 5px 8px; }

    /* Process — simple vertical stack; the big italic step number is the marker */
    .process { padding: 72px 0; }
    .process__inner { padding: 0 20px; }
    .process__header { margin-bottom: 48px; padding-bottom: 28px; }

    .process__list {
        grid-template-columns: 1fr;
        gap: 40px;
        padding-left: 0;
        position: relative;
    }

    /* No rail, no dots on mobile — the 01/02/03/04 italic numbers are marker enough */
    .process__list::before,
    .process__list::after { display: none; }
    .process__step::before { display: none; }
    .process__step::after { display: none; }

    .process__step {
        padding-top: 28px;
        border-top: 1px solid rgba(200, 180, 150, 0.35);
    }

    .process__step:first-child {
        padding-top: 0;
        border-top: none;
    }

    .process__step-num {
        font-size: 40px;
        margin-bottom: 12px;
    }

    .process__step-kicker {
        margin-top: 8px;
        margin-bottom: 8px;
    }

    .process__step-title {
        font-size: clamp(20px, 5.5vw, 24px);
        margin-bottom: 10px;
    }

    .custom { padding: 64px 0; }
    .custom__inner {
        padding: 0 20px;
        grid-template-columns: 1fr;
        gap: 40px;
    }

    .custom__image { order: -1; }

    .custom__image-inner {
        aspect-ratio: 3 / 2;
    }

    .custom__desc { margin-bottom: 32px; }

    .custom__steps {
        margin-bottom: 32px;
    }

    .custom__step { min-width: 56px; }
    .custom__step-num { font-size: 22px; }
    .custom__step-label { font-size: 11px; }

    .custom__cta {
        flex-direction: column;
        gap: 12px;
    }

    .custom__cta .btn {
        width: 100%;
        justify-content: center;
    }

    /* Floating messengers — mobile: full-width bottom bar */
    body { padding-bottom: 64px; }

    .float-msgs {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        flex-direction: row;
        gap: 0;
        background: rgba(18, 18, 18, 0.97);
        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(20px);
        border-top: 1px solid rgba(200, 180, 150, 0.18);
        border-radius: 0;
        opacity: 1;
        pointer-events: auto;
        transform: none;
    }

    .float-msgs__btn {
        flex: 1;
        justify-content: center;
        background: transparent;
        border: none;
        border-radius: 0;
        padding: 14px 12px;
        padding-bottom: calc(14px + env(safe-area-inset-bottom));
        color: rgba(255, 255, 255, 0.72);
        font-size: 13px;
        transform: none !important;
    }

    .float-msgs__btn:hover {
        background: rgba(200, 180, 150, 0.08);
        border: none;
        transform: none !important;
    }

    .float-msgs__btn--tg {
        border-right: 1px solid rgba(255, 255, 255, 0.07);
    }

    /* Mobile: widget is a bottom bar, can't get out of way — no hide-on-footer */
    .float-msgs--hidden {
        opacity: 1 !important;
        pointer-events: auto !important;
        transform: none !important;
    }

    /* Footer */
    .footer__inner { padding: 0 20px; }
    .footer__main { grid-template-columns: 1fr; gap: 32px; padding: 48px 0 40px; }
    .footer__brand { grid-column: auto; }
    .footer__tagline { max-width: none; margin-bottom: 24px; }
    .footer__bottom { flex-direction: column; align-items: flex-start; gap: 8px; padding: 20px 0; }

    /* Contacts */
    .contacts { padding: 72px 0; }
    .contacts__inner { padding: 0 20px; }
    .contacts__header { margin-bottom: 40px; padding-bottom: 28px; }

    .contacts__cards { margin-bottom: 32px; }

    .contact-card {
        flex-direction: column;
        padding: 24px;
    }

    .contact-card__body { margin-bottom: 24px; }
    .contact-card__actions { gap: 8px; }

    .contacts__map iframe { height: 280px; }
    .contacts__map { margin-bottom: 48px; }

    .contacts__form-wrap { max-width: 100%; }

    .contact-form__row {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .contact-form__row .contact-form__field {
        margin-bottom: 16px;
    }

    /* Portfolio */
    .portfolio { padding: 72px 0; }
    .portfolio__inner { padding: 0 20px; }
    .portfolio__header { margin-bottom: 40px; padding-bottom: 28px; }

    .portfolio__grid {
        grid-template-columns: repeat(2, 1fr);
        grid-template-rows: 200px 180px 180px;
        gap: 6px;
        margin-bottom: 40px;
    }

    /* On mobile hover-reveal doesn't exist — show meta always, hide hint */
    .portfolio__item-meta {
        padding: 40px 14px 14px;
        transform: none;
    }

    .portfolio__item-title {
        font-size: 16px;
    }

    .portfolio__item-hint { display: none; }
    .portfolio__item-tag { top: 10px; right: 10px; font-size: 9px; padding: 4px 8px; }
    .portfolio__item--featured .portfolio__item-title { font-size: 20px; }
    .portfolio__item--featured .portfolio__item-meta { padding: 48px 18px 18px; }

    .portfolio__cta .btn {
        width: 100%;
        justify-content: center;
    }

    /* --- Prices page mobile --- */
    .page-head { padding: calc(var(--header-height) + 48px) 0 56px; }
    .page-head__inner { padding: 0 20px; }
    .page-head__eyebrow { margin-bottom: 16px; }
    .page-head__title { font-size: clamp(36px, 9vw, 48px); margin-bottom: 20px; }
    .page-head__subtitle { font-size: 15px; margin-bottom: 28px; }
    .breadcrumbs { margin-bottom: 24px; font-size: 11px; }

    .prices { padding: 56px 0 72px; }
    .prices__inner { padding: 0 20px; }

    .prices__tabs {
        margin-bottom: 40px;
        /* keep horizontal scroll, add fade hint via padding */
        padding-right: 20px;
    }
    .prices__tab {
        padding: 14px 16px;
        gap: 6px;
    }
    .prices__tab-num { font-size: 13px; }
    .prices__tab-label { font-size: 12px; letter-spacing: 0.08em; }

    .price-group { margin-bottom: 48px; }
    .price-group__title {
        font-size: 12px;
        margin-bottom: 20px;
        letter-spacing: 0.2em;
    }

    /* Stack row on narrow screens so the price sits below the name */
    .price-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
        padding: 20px 0;
    }
    .price-row:hover {
        padding-left: 0;
        padding-right: 0;
        background: transparent;
    }
    .price-row__name { font-size: 18px; }
    .price-row__desc { font-size: 13px; }
    .price-row__value { font-size: 20px; }
    .price-row--free .price-row__value { font-size: 16px; }

    .prices__note {
        flex-direction: column;
        gap: 12px;
        margin-top: 40px;
        padding: 20px;
    }

    .prices__disclaimer {
        margin-top: 48px;
        padding-top: 24px;
        font-size: 12px;
    }

    /* CTA */
    .prices-cta { padding: 72px 0; }
    .prices-cta__inner { padding: 0 20px; }
    .prices-cta__eyebrow { margin-bottom: 16px; }
    .prices-cta__desc { font-size: 15px; margin-bottom: 32px; }
    .prices-cta__buttons { flex-direction: column; gap: 12px; }
    .prices-cta__buttons .btn { width: 100%; justify-content: center; }

    /* --- Portfolio page mobile --- */
    .pf { padding: 40px 0 72px; }
    .pf__inner { padding: 0 20px; }

    .pf__bar {
        gap: 18px;
        margin-bottom: 32px;
        padding-bottom: 20px;
    }

    .pf__counter-num { font-size: 40px; }
    .pf__counter-label { font-size: 12px; }

    .pf-filter { padding: 8px 14px; font-size: 12px; }

    /* Mobile grid: 2 cols, stacked hero, simpler spans */
    .pf-grid {
        grid-template-columns: repeat(2, 1fr);
        grid-auto-rows: 180px;
        gap: 8px;
    }
    .pf-item--hero   { grid-column: span 2; grid-row: span 2; }
    .pf-item--tall   { grid-column: span 1; grid-row: span 2; }
    .pf-item--wide   { grid-column: span 2; grid-row: span 1; }
    .pf-item--square { grid-column: span 1; grid-row: span 1; }

    /* On mobile disable hover-based meta-slide — always show meta */
    .pf-item__meta { transform: none; padding: 16px; }
    .pf-item__hint { display: none; }
    .pf-item__num { font-size: 10px; top: 10px; right: 10px; }
    .pf-item__tag { top: 10px; left: 10px; font-size: 10px; padding: 4px 8px; }
    .pf-item__cat { font-size: 10px; margin-bottom: 4px; }
    .pf-item__title { font-size: 16px; }
    .pf-item--hero .pf-item__title { font-size: 20px; }

    .pf-cta { padding: 72px 0; }
    .pf-cta__inner { padding: 0 20px; }
    .pf-cta__buttons { flex-direction: column; gap: 12px; }
    .pf-cta__buttons .btn { width: 100%; justify-content: center; }

    /* Lightbox mobile */
    .lb__close { top: 16px; right: 16px; width: 40px; height: 40px; }
    .lb__nav { width: 40px; height: 40px; }
    .lb__nav--prev { left: 8px; }
    .lb__nav--next { right: 8px; }
    .lb__stage { padding: 20px; max-height: 100vh; }
    .lb__figure { gap: 16px; }
    .lb__media { min-height: 45vh; }
    .lb__caption { padding: 16px 0; }
    .lb__title { font-size: 22px; }
    .lb__desc { font-size: 14px; }
    .lb__compare-label { top: 12px; font-size: 9px; padding: 4px 8px; }
    .lb__compare-label--before { left: 12px; }
    .lb__compare-label--after { right: 12px; }

    /* Back to home — mobile */
    .back-home { padding: 36px 20px; }
    .back-home__link { font-size: 17px; gap: 12px; }
    .back-home__arrow { width: 32px; height: 32px; font-size: 14px; }

    /* Compare slider — mobile: tap-to-toggle, hide drag handle */
    .compare {
        cursor: pointer;
    }
    .compare__label { top: 12px; font-size: 9px; padding: 4px 8px; letter-spacing: 0.14em; }
    .compare__label--before { right: 12px; }
    .compare__label--after { left: 12px; }
    .compare__handle {
        display: none;
    }
    .compare__hint {
        display: inline-flex;
        opacity: 1;
    }
}

/* Narrow mobile — custom-order timeline reflow.
   On the horizontal flex layout, at ≤~520px the 4 step boxes + 3 connector
   lines + the "ГОТОВО" label's uppercase nowrap text push past the viewport
   (reported in audit as "04 ГОТОВО is clipped"). Switch to a balanced 2×2
   grid, drop the connectors, and let each cell breathe. */
@media (max-width: 520px) {
    .custom__steps {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 28px 20px;
        align-items: start;
        justify-items: center;
    }

    .custom__step-line {
        display: none;
    }

    .custom__step {
        min-width: 0;
        width: 100%;
    }

    .custom__step-label {
        white-space: normal;
        text-align: center;
    }
}

/* Small mobile */
@media (max-width: 374px) {
    .hero__title {
        font-size: 32px;
    }

    .hero__content {
        padding-bottom: 120px;
    }
}

/* ===================================================
   LEGAL PAGE (Privacy policy prose)
   Editorial long-read layout — narrow measure,
   Newsreader H2s, quiet hierarchy.
   =================================================== */
.legal {
    background: var(--surface-primary);
    padding: 96px 0 120px;
}

.legal__inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 48px;
}

.legal__meta {
    font-family: var(--font-body);
    font-size: 13px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-secondary);
    padding-bottom: 24px;
    margin-bottom: 48px;
    border-bottom: 1px solid var(--border-subtle);
}

.legal__prose {
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 1.7;
    color: var(--fg-primary);
}

.legal__prose h2 {
    font-family: var(--font-display);
    font-size: clamp(24px, 2.2vw, 30px);
    font-weight: 400;
    letter-spacing: -0.01em;
    line-height: 1.2;
    margin: 56px 0 18px;
    color: var(--fg-primary);
}

.legal__prose h2:first-child {
    margin-top: 0;
}

.legal__prose p,
.legal__prose ul {
    margin: 0 0 18px;
}

.legal__prose ul {
    padding-left: 22px;
    list-style: none;
}

.legal__prose ul li {
    position: relative;
    padding-left: 16px;
    margin-bottom: 8px;
}

.legal__prose ul li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.75em;
    width: 6px;
    height: 1px;
    background: var(--accent-primary);
}

.legal__prose a {
    color: var(--fg-primary);
    text-decoration: none;
    border-bottom: 1px solid var(--accent-primary);
    transition: color 0.2s ease, border-color 0.2s ease;
}

.legal__prose a:hover {
    color: var(--accent-primary);
}

.legal__prose strong {
    font-weight: 600;
    color: var(--fg-primary);
}

/* Footer privacy link — active state for the current page */
.footer__privacy--active {
    color: var(--accent-primary) !important;
}

/* ===================================================
   CONSENT CHECKBOX (callback form)
   =================================================== */
.contact-form__consent {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-top: 4px;
    cursor: pointer;
    font-family: var(--font-body);
    font-size: 13px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.55);
}

.contact-form__consent-input {
    appearance: none;
    -webkit-appearance: none;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin-top: 2px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 2px;
    cursor: pointer;
    position: relative;
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

.contact-form__consent-input:hover {
    border-color: rgba(200, 180, 150, 0.5);
}

.contact-form__consent-input:checked {
    background: var(--accent-primary);
    border-color: var(--accent-primary);
}

.contact-form__consent-input:checked::after {
    content: '';
    position: absolute;
    left: 5px;
    top: 1px;
    width: 5px;
    height: 10px;
    border: solid var(--surface-inverse);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.contact-form__consent-input:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
}

.contact-form__consent a {
    color: var(--accent-primary);
    text-decoration: none;
    border-bottom: 1px solid rgba(200, 180, 150, 0.3);
    transition: border-color 0.2s ease;
}

.contact-form__consent a:hover {
    border-bottom-color: var(--accent-primary);
}

/* ===================================================
   LEGAL PAGE — responsive
   =================================================== */
@media (max-width: 768px) {
    .legal {
        padding: 64px 0 80px;
    }

    .legal__inner {
        padding: 0 24px;
    }

    .legal__prose {
        font-size: 15px;
    }

    .legal__prose h2 {
        margin: 44px 0 14px;
    }
}

/* ===================================================
   SHARED SECTION HEADER (reusable eyebrow + title)
   Used by many service-page modules below.
   =================================================== */
.proc-full,
.materials,
.terms,
.examples,
.why-custom,
.ring-styles,
.ring-calc,
.pair-essentials,
.reviews,
.faq {
    padding: 96px 0 96px;
    background: var(--surface-primary);
}

.examples {
    text-align: center;
}

/* Section headers share this skeleton */
.proc-full__header,
.materials__header,
.terms__header,
.why-custom__header,
.ring-styles__header,
.ring-calc__header,
.faq__header {
    max-width: 760px;
    margin: 0 auto 64px;
    padding: 0 48px;
    text-align: center;
}

.proc-full__inner,
.materials__inner,
.terms__inner,
.examples__inner,
.why-custom__inner,
.ring-styles__inner,
.ring-calc__inner,
.pair-essentials__inner,
.reviews__inner,
.faq__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 48px;
}

/* Eyebrow (section kicker) */
.proc-full__eyebrow,
.materials__eyebrow,
.terms__eyebrow,
.examples__eyebrow,
.why-custom__eyebrow,
.ring-styles__eyebrow,
.ring-calc__eyebrow,
.reforge__eyebrow,
.engraving__eyebrow,
.pair-essentials__eyebrow,
.reviews__eyebrow,
.faq__eyebrow,
.bridge__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

/* H2 title shared */
.proc-full__title,
.materials__title,
.terms__title,
.examples__title,
.why-custom__title,
.ring-styles__title,
.ring-calc__title,
.reforge__title,
.engraving__title,
.pair-essentials__title,
.reviews__title,
.faq__title,
.bridge__title {
    font-family: var(--font-display);
    font-size: clamp(32px, 4.2vw, 56px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.08;
    letter-spacing: -0.015em;
    margin-bottom: 18px;
}

.proc-full__title em,
.materials__title em,
.terms__title em,
.examples__title em,
.why-custom__title em,
.ring-styles__title em,
.ring-calc__title em,
.reforge__title em,
.engraving__title em,
.pair-essentials__title em,
.reviews__title em,
.faq__title em,
.bridge__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

/* Section descriptions */
.proc-full__desc,
.why-custom__desc,
.ring-styles__desc,
.ring-calc__desc,
.examples__desc {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: var(--fg-secondary);
    max-width: 620px;
    margin: 0 auto;
}

/* ===================================================
   PROCESS — full (6 steps grid)
   =================================================== */
.proc-full__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--border-subtle);
    border: 1px solid var(--border-subtle);
}

.proc-full__grid--5 {
    grid-template-columns: repeat(5, 1fr);
}

.proc-step {
    background: var(--surface-primary);
    padding: 40px 32px 44px;
    position: relative;
    transition: background 0.3s ease;
}

.proc-step:hover {
    background: #faf8f5;
}

.proc-step__num {
    display: block;
    font-family: var(--font-display);
    font-size: 14px;
    font-style: italic;
    color: var(--accent-primary);
    letter-spacing: 0.12em;
    margin-bottom: 16px;
}

.proc-step__title {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.2;
    margin-bottom: 12px;
}

.proc-step__desc {
    font-family: var(--font-body);
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--fg-secondary);
    margin-bottom: 14px;
}

.proc-step__meta {
    display: block;
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--accent-primary);
}

/* ===================================================
   MATERIALS — grid of cards
   =================================================== */
.materials__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}

.material-card {
    background: #fff;
    border: 1px solid var(--border-subtle);
    padding: 32px 28px;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.material-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(26, 26, 26, 0.06);
}

.material-card--featured {
    background: var(--fg-primary);
    color: var(--fg-inverse);
    border-color: var(--fg-primary);
}

.material-card__tag {
    display: inline-block;
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 14px;
}

.material-card__title {
    font-family: var(--font-display);
    font-size: 26px;
    font-weight: 400;
    line-height: 1.15;
    margin-bottom: 14px;
    color: inherit;
}

.material-card__desc {
    font-family: var(--font-body);
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--fg-secondary);
    margin-bottom: 20px;
    min-height: 88px;
}

.material-card--featured .material-card__desc {
    color: rgba(255, 255, 255, 0.7);
}

.material-card__price {
    display: block;
    font-family: var(--font-display);
    font-style: italic;
    font-size: 16px;
    color: var(--accent-primary);
    padding-top: 16px;
    border-top: 1px solid var(--border-subtle);
}

.material-card--featured .material-card__price {
    border-top-color: rgba(200, 180, 150, 0.25);
}

.materials__note {
    margin: 40px auto 0;
    max-width: 720px;
    text-align: center;
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.6;
    color: var(--fg-secondary);
}

/* Metal chips — pill-style with color swatch */
.materials__grid--metals {
    grid-template-columns: repeat(5, 1fr);
    gap: 16px;
}

.metal-chip {
    background: #fff;
    border: 1px solid var(--border-subtle);
    padding: 24px 22px 26px;
    text-align: center;
    transition: transform 0.3s ease;
}

.metal-chip:hover {
    transform: translateY(-3px);
}

.metal-chip__sample {
    display: block;
    width: 44px;
    height: 44px;
    margin: 0 auto 18px;
    border-radius: 50%;
    background: var(--metal, #c8b496);
    box-shadow: inset -6px -8px 14px rgba(0, 0, 0, 0.15),
                inset 6px 8px 14px rgba(255, 255, 255, 0.4);
}

.metal-chip__title {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 400;
    color: var(--fg-primary);
    margin-bottom: 8px;
}

.metal-chip__desc {
    font-family: var(--font-body);
    font-size: 13px;
    line-height: 1.5;
    color: var(--fg-secondary);
}

/* ===================================================
   REFORGE — featured dark block (переплавка старого)
   =================================================== */
.reforge {
    position: relative;
    padding: 112px 0;
    background: var(--surface-inverse);
    overflow: hidden;
}

.reforge__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 80% 60% at 20% 30%, rgba(200, 180, 150, 0.10), transparent 60%),
        radial-gradient(ellipse 60% 80% at 90% 80%, rgba(200, 180, 150, 0.06), transparent 70%);
    pointer-events: none;
}

.reforge__inner {
    position: relative;
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 48px;
    display: grid;
    grid-template-columns: 1fr 1.1fr;
    gap: 80px;
    align-items: center;
}

.reforge__visual {
    aspect-ratio: 4 / 5;
    overflow: hidden;
}

.reforge__visual-inner {
    width: 100%;
    height: 100%;
}

.reforge__title {
    color: var(--fg-inverse);
    margin-bottom: 22px;
}

.reforge__desc {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.72);
    margin-bottom: 28px;
}

.reforge__list {
    list-style: none;
    padding: 0;
    margin: 0 0 36px;
}

.reforge__list li {
    position: relative;
    padding-left: 22px;
    margin-bottom: 12px;
    font-family: var(--font-body);
    font-size: 15.5px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.85);
}

.reforge__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.75em;
    width: 12px;
    height: 1px;
    background: var(--accent-primary);
}

.reforge__cta {
    color: var(--fg-inverse) !important;
    border-color: rgba(255, 255, 255, 0.25) !important;
}

.reforge__cta:hover {
    color: var(--accent-primary) !important;
    border-color: var(--accent-primary) !important;
}

/* ===================================================
   TERMS — 3 large cards
   =================================================== */
.terms__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

.term-card {
    background: #fff;
    border: 1px solid var(--border-subtle);
    padding: 40px 32px 44px;
}

.term-card__num {
    display: block;
    font-family: var(--font-display);
    font-style: italic;
    font-size: 14px;
    color: var(--accent-primary);
    letter-spacing: 0.12em;
    margin-bottom: 14px;
}

.term-card__title {
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--fg-secondary);
    margin-bottom: 14px;
}

.term-card__big {
    font-family: var(--font-display);
    font-size: clamp(28px, 3.6vw, 44px);
    font-weight: 400;
    line-height: 1.1;
    color: var(--fg-primary);
    margin-bottom: 14px;
}

.term-card__desc {
    font-family: var(--font-body);
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--fg-secondary);
}

/* ===================================================
   EXAMPLES — centered CTA band
   =================================================== */
.examples__inner {
    max-width: 760px;
}

.examples__title {
    margin-top: 8px;
}

.examples__desc {
    margin-bottom: 36px;
}

/* ===================================================
   BRIDGE — cross-link between services
   =================================================== */
.bridge {
    background: var(--surface-primary);
    border-top: 1px solid var(--border-subtle);
    border-bottom: 1px solid var(--border-subtle);
}

.bridge__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 64px 48px;
    display: grid;
    grid-template-columns: 1.5fr 1fr;
    gap: 48px;
    align-items: center;
}

.bridge__content .bridge__eyebrow {
    margin-bottom: 14px;
}

.bridge__title {
    font-size: clamp(26px, 2.6vw, 34px);
    margin-bottom: 10px;
}

.bridge__desc {
    font-family: var(--font-body);
    font-size: 15.5px;
    line-height: 1.6;
    color: var(--fg-secondary);
    max-width: 640px;
    margin: 0;
}

.bridge__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 28px 32px;
    background: #fff;
    border: 1px solid var(--border-subtle);
    text-decoration: none;
    color: var(--fg-primary);
    transition: background 0.3s ease, border-color 0.3s ease;
}

.bridge__link:hover {
    background: var(--fg-primary);
    color: var(--fg-inverse);
    border-color: var(--fg-primary);
}

.bridge__link-label {
    font-family: var(--font-display);
    font-size: 20px;
    line-height: 1.2;
}

.bridge__link-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid var(--accent-primary);
    color: var(--accent-primary);
    transition: transform 0.3s ease, background 0.3s ease;
    flex-shrink: 0;
}

.bridge__link:hover .bridge__link-arrow {
    background: var(--accent-primary);
    color: var(--fg-primary);
    transform: translateX(4px);
}

/* ===================================================
   WHY CUSTOM (wedding page) — 4 reasons
   =================================================== */
.why-custom__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1px;
    background: var(--border-subtle);
    border: 1px solid var(--border-subtle);
}

.why-card {
    background: var(--surface-primary);
    padding: 48px 40px 52px;
    transition: background 0.3s ease;
}

.why-card:hover {
    background: #faf8f5;
}

.why-card__num {
    display: block;
    font-family: var(--font-display);
    font-style: italic;
    font-size: 14px;
    color: var(--accent-primary);
    letter-spacing: 0.12em;
    margin-bottom: 18px;
}

.why-card__title {
    font-family: var(--font-display);
    font-size: clamp(22px, 2.4vw, 28px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.15;
    margin-bottom: 14px;
}

.why-card__desc {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.6;
    color: var(--fg-secondary);
}

/* ===================================================
   RING STYLES — gallery of style cards
   =================================================== */
.ring-styles {
    background: #fff;
}

.ring-styles__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

.style-card {
    display: flex;
    flex-direction: column;
    background: var(--surface-primary);
    border: 1px solid var(--border-subtle);
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.style-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 24px 48px rgba(26, 26, 26, 0.08);
}

.style-card__img {
    aspect-ratio: 4 / 3;
    width: 100%;
}

.style-card__body {
    padding: 24px 28px 28px;
}

.style-card__title {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.2;
    margin-bottom: 10px;
}

.style-card__desc {
    font-family: var(--font-body);
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--fg-secondary);
}

.ring-styles__note {
    max-width: 720px;
    margin: 40px auto 0;
    text-align: center;
    font-family: var(--font-body);
    font-size: 13px;
    color: var(--fg-secondary);
    opacity: 0.7;
}

/* ===================================================
   ENGRAVING — dark feature block
   =================================================== */
.engraving {
    position: relative;
    padding: 112px 0;
    background: var(--surface-inverse);
    overflow: hidden;
}

.engraving__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 100% 60% at 80% 20%, rgba(200, 180, 150, 0.10), transparent 60%);
    pointer-events: none;
}

.engraving__inner {
    position: relative;
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 48px;
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 80px;
    align-items: center;
}

.engraving__title {
    color: var(--fg-inverse);
    margin-bottom: 22px;
}

.engraving__desc {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.72);
    margin-bottom: 28px;
}

.engraving__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.engraving__list li {
    position: relative;
    padding-left: 22px;
    margin-bottom: 14px;
    font-family: var(--font-body);
    font-size: 15.5px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.82);
}

.engraving__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.75em;
    width: 12px;
    height: 1px;
    background: var(--accent-primary);
}

.engraving__list strong {
    color: var(--accent-primary);
    font-weight: 500;
}

.engraving__sample {
    aspect-ratio: 1;
    background:
        radial-gradient(ellipse 70% 70% at 50% 50%, rgba(200, 180, 150, 0.18), transparent 70%),
        linear-gradient(135deg, #1f1b17 0%, #3a3129 45%, #7d6c50 100%);
    border: 1px solid rgba(200, 180, 150, 0.25);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-align: center;
}

.engraving__sample-text {
    font-family: var(--font-display);
    font-style: italic;
    font-size: clamp(32px, 4.2vw, 56px);
    font-weight: 400;
    color: var(--accent-primary);
    letter-spacing: 0.06em;
}

.engraving__sample-caption {
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.4);
}

/* ===================================================
   RING CALCULATOR
   =================================================== */
.ring-calc {
    background: var(--surface-inverse);
}

.ring-calc__header {
    text-align: center;
}

.ring-calc__eyebrow {
    color: var(--accent-primary);
}

.ring-calc__title {
    color: var(--fg-inverse);
}

.ring-calc__desc {
    color: rgba(255, 255, 255, 0.68);
}

.ring-calc__form {
    max-width: 900px;
    margin: 0 auto;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 40px 44px;
}

.ring-calc__row {
    display: grid;
    grid-template-columns: 1.1fr 1.3fr 1.1fr;
    gap: 32px;
    margin-bottom: 36px;
}

.ring-calc__field {
    display: flex;
    flex-direction: column;
}

.ring-calc__label {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 14px;
}

.ring-calc__input {
    width: 100%;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.12);
    padding: 14px 16px;
    font-family: var(--font-body);
    font-size: 15px;
    color: var(--fg-inverse);
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23C8B496' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    padding-right: 40px;
}

.ring-calc__input:focus {
    outline: none;
    border-color: var(--accent-primary);
}

.ring-calc__input option {
    background: var(--surface-inverse);
    color: var(--fg-inverse);
}

.ring-calc__range {
    appearance: none;
    -webkit-appearance: none;
    width: 100%;
    height: 4px;
    background: rgba(255, 255, 255, 0.15);
    outline: none;
    cursor: pointer;
    padding: 0;
    margin-top: 18px;
}

.ring-calc__range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--accent-primary);
    cursor: pointer;
    border: 3px solid var(--surface-inverse);
    box-shadow: 0 0 0 1px var(--accent-primary);
}

.ring-calc__range::-moz-range-thumb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--accent-primary);
    cursor: pointer;
    border: 3px solid var(--surface-inverse);
    box-shadow: 0 0 0 1px var(--accent-primary);
}

.ring-calc__range-value {
    display: block;
    margin-top: 12px;
    font-family: var(--font-display);
    font-style: italic;
    font-size: 20px;
    color: var(--accent-primary);
    text-align: center;
}

.ring-calc__result {
    padding-top: 32px;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    text-align: center;
}

.ring-calc__result-label {
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 12px;
}

.ring-calc__result-value {
    font-family: var(--font-display);
    font-size: clamp(34px, 4.6vw, 56px);
    font-weight: 400;
    color: var(--accent-primary);
    line-height: 1.1;
    margin-bottom: 14px;
    letter-spacing: -0.01em;
}

.ring-calc__result-breakdown {
    font-family: var(--font-body);
    font-size: 13.5px;
    color: rgba(255, 255, 255, 0.6);
}

.ring-calc__disclaimer {
    max-width: 720px;
    margin: 32px auto 0;
    text-align: center;
    font-family: var(--font-body);
    font-size: 13px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.4);
}

/* ===================================================
   PAIR ESSENTIALS — split layout
   =================================================== */
.pair-essentials__inner {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 80px;
    align-items: center;
}

.pair-essentials__title {
    margin-bottom: 22px;
}

.pair-essentials__desc {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: var(--fg-secondary);
    margin-bottom: 28px;
    max-width: 560px;
}

.pair-essentials__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.pair-essentials__list li {
    position: relative;
    padding-left: 22px;
    margin-bottom: 12px;
    font-family: var(--font-body);
    font-size: 15.5px;
    line-height: 1.55;
    color: var(--fg-primary);
}

.pair-essentials__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.75em;
    width: 12px;
    height: 1px;
    background: var(--accent-primary);
}

.pair-essentials__visual {
    position: relative;
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.pair-essentials__ring {
    position: absolute;
    width: 44%;
    aspect-ratio: 1;
    border-radius: 50%;
}

.pair-essentials__ring::after {
    content: '';
    position: absolute;
    inset: 24%;
    background: var(--surface-primary);
    border-radius: 50%;
}

.pair-essentials__ring--his {
    left: 12%;
    top: 20%;
    z-index: 2;
}

.pair-essentials__ring--hers {
    right: 12%;
    bottom: 20%;
    z-index: 1;
}

/* ===================================================
   REVIEWS — placeholder cards
   =================================================== */
.reviews {
    text-align: center;
}

.reviews__eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}

.reviews__title {
    font-family: var(--font-display);
    font-size: clamp(30px, 3.6vw, 48px);
    font-weight: 400;
    color: var(--fg-primary);
    line-height: 1.1;
    max-width: 820px;
    margin: 0 auto 56px;
}

.reviews__title em {
    font-style: italic;
    font-weight: 500;
    color: var(--accent-primary);
}

.reviews__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    text-align: left;
}

.review-card {
    background: #fff;
    border: 1px solid var(--border-subtle);
    padding: 32px 28px 28px;
    display: flex;
    flex-direction: column;
}

.review-card__text {
    font-family: var(--font-display);
    font-style: italic;
    font-size: 17px;
    line-height: 1.55;
    color: var(--fg-primary);
    margin-bottom: 24px;
    flex-grow: 1;
}

.review-card__author {
    padding-top: 18px;
    border-top: 1px solid var(--border-subtle);
}

.review-card__name {
    display: block;
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 500;
    color: var(--fg-primary);
    margin-bottom: 4px;
}

.review-card__meta {
    font-family: var(--font-body);
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-secondary);
}

.reviews__note {
    margin: 32px auto 0;
    font-family: var(--font-body);
    font-size: 12px;
    color: var(--fg-secondary);
    opacity: 0.6;
}

/* ===================================================
   FAQ — accordion
   =================================================== */
.faq {
    background: #fff;
}

.faq__list {
    max-width: 860px;
    margin: 0 auto;
}

.faq-item {
    border-bottom: 1px solid var(--border-subtle);
}

.faq-item:first-child {
    border-top: 1px solid var(--border-subtle);
}

.faq-item__q {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 24px;
    padding: 28px 0;
    cursor: pointer;
    list-style: none;
    transition: color 0.2s ease;
}

.faq-item__q::-webkit-details-marker {
    display: none;
}

.faq-item__q:hover {
    color: var(--accent-primary);
}

.faq-item__q-text {
    font-family: var(--font-display);
    font-size: clamp(18px, 1.8vw, 22px);
    font-weight: 400;
    color: inherit;
    line-height: 1.3;
}

.faq-item__q-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid var(--border-subtle);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-body);
    font-size: 18px;
    font-weight: 300;
    color: var(--accent-primary);
    transition: transform 0.3s ease, border-color 0.3s ease;
}

.faq-item[open] .faq-item__q-icon {
    transform: rotate(45deg);
    border-color: var(--accent-primary);
}

.faq-item__a {
    padding: 0 0 28px;
    max-width: 720px;
}

.faq-item__a p {
    font-family: var(--font-body);
    font-size: 15.5px;
    line-height: 1.65;
    color: var(--fg-secondary);
    margin: 0;
}

/* ===================================================
   RESPONSIVE — new modules
   =================================================== */
@media (max-width: 1024px) {
    .proc-full__grid,
    .proc-full__grid--5 {
        grid-template-columns: repeat(2, 1fr);
    }
    .materials__grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .materials__grid--metals {
        grid-template-columns: repeat(3, 1fr);
    }
    .terms__grid,
    .ring-styles__grid,
    .reviews__grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .why-custom__grid {
        grid-template-columns: 1fr;
    }
    .reforge__inner,
    .engraving__inner,
    .pair-essentials__inner {
        grid-template-columns: 1fr;
        gap: 48px;
    }
    .ring-calc__row {
        grid-template-columns: 1fr 1fr;
    }
    .bridge__inner {
        grid-template-columns: 1fr;
        gap: 32px;
    }
}

@media (max-width: 768px) {
    .proc-full,
    .materials,
    .terms,
    .examples,
    .why-custom,
    .ring-styles,
    .ring-calc,
    .pair-essentials,
    .reviews,
    .faq {
        padding: 64px 0;
    }
    .reforge,
    .engraving {
        padding: 72px 0;
    }
    .proc-full__header,
    .materials__header,
    .terms__header,
    .why-custom__header,
    .ring-styles__header,
    .ring-calc__header,
    .faq__header {
        padding: 0 24px;
        margin-bottom: 40px;
    }
    .proc-full__inner,
    .materials__inner,
    .terms__inner,
    .examples__inner,
    .why-custom__inner,
    .ring-styles__inner,
    .ring-calc__inner,
    .pair-essentials__inner,
    .reviews__inner,
    .faq__inner,
    .reforge__inner,
    .engraving__inner,
    .bridge__inner {
        padding-left: 24px;
        padding-right: 24px;
    }
    .proc-full__grid,
    .proc-full__grid--5,
    .materials__grid,
    .terms__grid,
    .ring-styles__grid,
    .reviews__grid {
        grid-template-columns: 1fr;
    }
    .materials__grid--metals {
        grid-template-columns: repeat(2, 1fr);
    }
    .ring-calc__form {
        padding: 28px 24px;
    }
    .ring-calc__row {
        grid-template-columns: 1fr;
        gap: 24px;
        margin-bottom: 24px;
    }
    .pair-essentials__visual {
        max-width: 360px;
        margin: 0 auto;
    }
    .bridge__link {
        padding: 20px 24px;
    }
    .bridge__link-label {
        font-size: 17px;
    }
    .faq-item__q {
        padding: 22px 0;
        gap: 16px;
    }
    .faq-item__q-icon {
        width: 32px;
        height: 32px;
    }
}

/* ==========================================================================
   Home page: custom → learn more link (below messenger CTAs)
   ========================================================================== */
.custom__learn-more {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-top: 18px;
    padding: 6px 0 4px;
    font-family: 'Funnel Sans', sans-serif;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    /* Section uses --surface-inverse (near-black) — default --fg-primary
       was also dark, so the link painted invisibly. Use light warm tone
       on dark, matched to the cream palette elsewhere on this section. */
    color: rgba(242, 232, 210, 0.78);
    text-decoration: none;
    border-bottom: 1px solid rgba(242, 232, 210, 0.22);
    transition: color 0.25s ease, border-color 0.25s ease, gap 0.25s ease;
}
.custom__learn-more:hover {
    color: var(--accent-primary);
    border-bottom-color: var(--accent-primary);
    gap: 14px;
}
.custom__learn-more span {
    font-size: 15px;
    letter-spacing: 0;
    line-height: 1;
    transform: translateY(-1px);
}

/* ==========================================================================
   Home page: wedding-teaser section (bridge to /uslugi/obruchalnye-koltsa/)
   ========================================================================== */
.wedding-teaser {
    position: relative;
    /* deep warm-black gradient distinguishes from #na-zakaz (#1A1A1A) above */
    background:
        radial-gradient(ellipse 60% 70% at 15% 20%, rgba(200, 180, 150, 0.09) 0%, transparent 65%),
        radial-gradient(ellipse 55% 65% at 85% 85%, rgba(200, 180, 150, 0.07) 0%, transparent 60%),
        linear-gradient(180deg, #0e0c08 0%, #14110b 50%, #0c0a07 100%);
    color: #F4F2EF;
    padding: clamp(40px, 6vw, 80px) clamp(20px, 4vw, 40px) clamp(80px, 10vw, 140px);
    overflow: hidden;
}

/* --- Ornamental divider between #na-zakaz and wedding-teaser --- */
.wedding-teaser__divider {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    max-width: 600px;
    margin: 0 auto clamp(48px, 6vw, 88px);
    position: relative;
}
.wedding-teaser__divider-line {
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, rgba(200, 180, 150, 0.35) 40%, rgba(200, 180, 150, 0.55) 50%, rgba(200, 180, 150, 0.35) 60%, transparent 100%);
}
.wedding-teaser__divider-mark {
    flex-shrink: 0;
    opacity: 0.8;
}

/* --- Layout: two columns (visual left, card right) --- */
.wedding-teaser__inner {
    position: relative;
    max-width: 1280px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 1.1fr;
    gap: clamp(40px, 6vw, 80px);
    align-items: center;
}

/* --- Content card (no longer floating) --- */
.wedding-teaser__card {
    position: relative;
    background: linear-gradient(155deg, rgba(200, 180, 150, 0.04) 0%, rgba(200, 180, 150, 0.01) 100%);
    border: 1px solid rgba(200, 180, 150, 0.18);
    padding: clamp(32px, 4vw, 56px);
    max-width: 620px;
}
/* gold corner ornaments — 4 small brackets */
.wedding-teaser__card::before,
.wedding-teaser__card::after {
    content: '';
    position: absolute;
    width: 18px;
    height: 18px;
    border: 1px solid var(--accent-primary);
}
.wedding-teaser__card::before {
    top: -1px;
    left: -1px;
    border-right: none;
    border-bottom: none;
}
.wedding-teaser__card::after {
    bottom: -1px;
    right: -1px;
    border-left: none;
    border-top: none;
}

.wedding-teaser__eyebrow {
    display: inline-block;
    font-family: 'Funnel Sans', sans-serif;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 20px;
}
.wedding-teaser__title {
    font-family: 'Newsreader', serif;
    font-size: clamp(30px, 3.6vw, 48px);
    font-weight: 400;
    line-height: 1.08;
    letter-spacing: -0.01em;
    margin: 0 0 24px;
    color: #F4F2EF;
}
.wedding-teaser__title em {
    font-style: italic;
    color: var(--accent-primary);
}
.wedding-teaser__desc {
    font-family: 'Funnel Sans', sans-serif;
    font-size: clamp(15px, 1.2vw, 17px);
    line-height: 1.65;
    color: rgba(244, 242, 239, 0.78);
    margin: 0 0 32px;
}

/* --- Stats strip --- */
.wedding-teaser__stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    padding: 20px 0;
    margin: 0 0 32px;
    border-top: 1px solid rgba(200, 180, 150, 0.18);
    border-bottom: 1px solid rgba(200, 180, 150, 0.18);
}
.wedding-teaser__stat {
    display: flex;
    flex-direction: column-reverse;
    gap: 6px;
    padding: 0 8px;
    text-align: left;
    border-right: 1px solid rgba(200, 180, 150, 0.12);
}
.wedding-teaser__stat:last-child {
    border-right: none;
}
.wedding-teaser__stat-label {
    font-family: 'Funnel Sans', sans-serif;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(244, 242, 239, 0.55);
    margin: 0;
}
.wedding-teaser__stat-value {
    font-family: 'Newsreader', serif;
    font-size: clamp(22px, 2.2vw, 30px);
    font-weight: 400;
    line-height: 1;
    color: var(--accent-primary);
    margin: 0;
}
.wedding-teaser__stat-value span {
    font-size: 0.55em;
    color: rgba(244, 242, 239, 0.7);
    letter-spacing: 0;
}

/* --- Bullets --- */
.wedding-teaser__bullets {
    list-style: none;
    padding: 0;
    margin: 0 0 36px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}
.wedding-teaser__bullets li {
    position: relative;
    padding-left: 22px;
    font-family: 'Funnel Sans', sans-serif;
    font-size: 14px;
    line-height: 1.55;
    color: rgba(244, 242, 239, 0.85);
}
.wedding-teaser__bullets li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.68em;
    width: 12px;
    height: 1px;
    background: var(--accent-primary);
}

/* --- CTAs --- */
.wedding-teaser__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
.wedding-teaser__btn-primary {
    background: var(--accent-primary);
    color: #1A1A1A;
    border-color: var(--accent-primary);
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.wedding-teaser__btn-primary:hover {
    background: transparent;
    color: var(--accent-primary);
    border-color: var(--accent-primary);
}
.wedding-teaser__btn-primary svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: transform 0.3s ease;
}
.wedding-teaser__btn-primary:hover svg {
    transform: translateX(4px);
}
.wedding-teaser__btn-msg {
    background: rgba(200, 180, 150, 0.06);
    color: #F4F2EF;
    border: 1px solid rgba(200, 180, 150, 0.55);
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.wedding-teaser__btn-msg svg {
    color: var(--accent-primary);
    flex-shrink: 0;
    transition: color 0.25s ease;
}
.wedding-teaser__btn-msg:hover {
    background: rgba(200, 180, 150, 0.12);
    border-color: var(--accent-primary);
    color: var(--accent-primary);
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(200, 180, 150, 0.18);
}

/* --- Visual column: SVG rings (3/4 perspective + hover interaction) --- */
.wedding-teaser__visual {
    position: relative;
    aspect-ratio: 1 / 1;
    max-width: 520px;
    margin: 0 auto;
    width: 100%;
    cursor: pointer;
    /* warm backlight behind rings appears on hover */
    isolation: isolate;
}
.wedding-teaser__visual::before {
    content: '';
    position: absolute;
    inset: 15% 20%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(200, 180, 150, 0.25) 0%, rgba(200, 180, 150, 0) 60%);
    opacity: 0;
    transition: opacity 0.6s ease;
    z-index: -1;
    filter: blur(20px);
}
.wedding-teaser__visual:hover::before {
    opacity: 1;
}

.wedding-teaser__ring {
    position: absolute;
    display: block;
    filter: drop-shadow(0 22px 38px rgba(0, 0, 0, 0.55));
    transition: transform 0.7s cubic-bezier(0.22, 0.8, 0.36, 1), filter 0.5s ease;
    transform-origin: center center;
    will-change: transform;
}

/* HIS: wider, tilted left, slightly back */
.wedding-teaser__ring--his {
    width: 62%;
    top: 8%;
    left: 4%;
    z-index: 2;
    transform: rotate(-8deg) translate(0, 0);
    animation: wtFloatHis 7s ease-in-out infinite;
}

/* HERS: smaller, tilted right, slightly forward */
.wedding-teaser__ring--hers {
    width: 56%;
    bottom: 2%;
    right: 4%;
    z-index: 3;
    transform: rotate(10deg) translate(0, 0);
    animation: wtFloatHers 8s ease-in-out infinite;
}

/* --- idle float (gentle, not distracting) --- */
@keyframes wtFloatHis {
    0%, 100% { transform: rotate(-8deg) translate(0, 0); }
    50%      { transform: rotate(-7deg) translate(0, -6px); }
}
@keyframes wtFloatHers {
    0%, 100% { transform: rotate(10deg) translate(0, 0); }
    50%      { transform: rotate(9deg)  translate(0, 5px); }
}

/* --- HOVER: rings lean toward each other (wedding "coming together") --- */
.wedding-teaser__visual:hover .wedding-teaser__ring--his {
    animation-play-state: paused;
    transform: rotate(-4deg) translate(12px, 4px) scale(1.02);
    filter: drop-shadow(0 28px 50px rgba(0, 0, 0, 0.6)) drop-shadow(0 0 12px rgba(200, 180, 150, 0.2));
}
.wedding-teaser__visual:hover .wedding-teaser__ring--hers {
    animation-play-state: paused;
    transform: rotate(6deg) translate(-12px, -4px) scale(1.02);
    filter: drop-shadow(0 28px 50px rgba(0, 0, 0, 0.6)) drop-shadow(0 0 12px rgba(255, 255, 255, 0.2));
}

/* --- Diamond sparkle/twinkle --- */
.wt-diamond__glint {
    transform-origin: 106px 90px;
    animation: wtDiamondTwinkle 3.5s ease-in-out infinite;
}
@keyframes wtDiamondTwinkle {
    0%, 70%, 100% { opacity: 1;   transform: scale(1); }
    80%           { opacity: 0.3; transform: scale(0.5); }
    90%           { opacity: 1;   transform: scale(1.6); }
}
/* Extra sparkle burst on hover */
.wedding-teaser__visual:hover .wt-diamond {
    animation: wtDiamondFlash 0.8s ease-out;
}
@keyframes wtDiamondFlash {
    0%   { filter: none; }
    50%  { filter: brightness(1.4) drop-shadow(0 0 8px rgba(220, 240, 255, 0.9)); }
    100% { filter: none; }
}

@media (prefers-reduced-motion: reduce) {
    .wedding-teaser__ring--his,
    .wedding-teaser__ring--hers,
    .wt-diamond__glint {
        animation: none;
    }
    .wedding-teaser__visual:hover .wedding-teaser__ring--his,
    .wedding-teaser__visual:hover .wedding-teaser__ring--hers {
        transform: none;
    }
}
.wedding-teaser__visual-caption {
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    font-family: 'Funnel Sans', sans-serif;
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(200, 180, 150, 0.6);
    white-space: nowrap;
}

/* --- Responsive --- */
@media (max-width: 900px) {
    .wedding-teaser__inner {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .wedding-teaser__visual {
        max-width: 360px;
        order: -1;
    }
    .wedding-teaser__card {
        max-width: 100%;
    }
    .wedding-teaser__stats {
        gap: 4px;
    }
    .wedding-teaser__stat {
        padding: 0 4px;
    }
}
@media (max-width: 560px) {
    .wedding-teaser__title {
        font-size: clamp(26px, 7vw, 34px);
    }
    .wedding-teaser__visual {
        max-width: 280px;
    }
    .wedding-teaser__stats {
        grid-template-columns: 1fr;
        gap: 14px;
    }
    .wedding-teaser__stat {
        border-right: none;
        border-bottom: 1px solid rgba(200, 180, 150, 0.12);
        padding-bottom: 12px;
    }
    .wedding-teaser__stat:last-child {
        border-bottom: none;
        padding-bottom: 0;
    }
    .wedding-teaser__ctas {
        flex-direction: column;
        align-items: stretch;
    }
    .wedding-teaser__ctas .btn {
        justify-content: center;
    }
}

/* =======================================================
   POLISH — section rule reveal + gold CTA breathing glow
   Each section's 48px gold tick draws from center outward
   when the section enters viewport. Unified for all four
   landing sections that wire .is-visible via revealObserver.
   ======================================================= */
.services__rule,
.process__rule,
.portfolio__rule,
.contacts__rule {
    transform: translateX(-50%) scaleX(0);
    transform-origin: center;
    transition: transform 1.1s cubic-bezier(0.65, 0, 0.35, 1) 0.2s;
}

.services.is-visible .services__rule,
.process.is-visible .process__rule,
.portfolio.is-visible .portfolio__rule,
.contacts.is-visible .contacts__rule {
    transform: translateX(-50%) scaleX(1);
}

@media (prefers-reduced-motion: reduce) {
    .services__rule,
    .process__rule,
    .portfolio__rule,
    .contacts__rule {
        transform: translateX(-50%) scaleX(1);
        transition: none;
    }
}

/* Primary gold CTA — soft gold glow on hover.
   Combines the existing lift with a larger, softer shadow
   that reads as warm light spilling from the button. */
.btn--gold-filled {
    transition: background 0.25s ease, border-color 0.25s ease,
                color 0.25s ease, transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.btn--gold-filled:hover {
    transform: translateY(-2px);
    box-shadow:
        0 10px 28px rgba(200, 180, 150, 0.32),
        0 0 48px rgba(200, 180, 150, 0.28),
        0 0 0 1px rgba(255, 235, 200, 0.45) inset;
}

.btn--gold-filled:active {
    transform: translateY(0);
    box-shadow:
        0 4px 12px rgba(200, 180, 150, 0.28),
        0 0 0 1px rgba(255, 235, 200, 0.4) inset;
    transition-duration: 0.12s;
}
