* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    font-size: 16px;
}

body {
    margin: 0;
    overflow-x: clip;
    background: var(--paper);
    color: var(--ink);
    font-family: Manrope, sans-serif;
}

.gift-site {
    --paper: #f6eee7;
    --paper-2: #ead2c7;
    --ink: #2d211e;
    --accent: #ad6f60;
    --deep: #633f38;
    --serif: "Cormorant Garamond", serif;
}

/* Пока обложка закрыта, прокрутка принадлежит только ей: иначе рядом видны
   полосы самой обложки и спрятанного за ней длинного сайта. */
.gift-site.gift-gate-locked {
    height: 100svh;
    overflow: hidden;
}

.gift-bright-moments {
    --paper: #fff5d9;
    --paper-2: #ffcbb7;
    --ink: #293b35;
    --accent: #e75c4c;
    --deep: #286b55;
}

.gift-night-premiere {
    --paper: #0d0918;
    --paper-2: #291743;
    --ink: #f8f1ff;
    --accent: #c7a6ff;
    --deep: #7e55d5;
}

.gift-cursor-glow {
    position: fixed;
    z-index: 80;
    left: 0;
    top: 0;
    width: 150px;
    height: 150px;
    border-radius: 50%;
    background: radial-gradient(circle, color-mix(in srgb, var(--accent) 48%, transparent), transparent 68%);
    filter: blur(20px);
    mix-blend-mode: soft-light;
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease;
    will-change: transform, opacity;
}

.gift-cursor-glow.is-visible {
    opacity: .38;
}

.gift-cursor-spark {
    position: fixed;
    z-index: 81;
    display: block;
    color: var(--accent);
    font: 500 13px/1 Manrope, sans-serif;
    font-style: normal;
    filter: drop-shadow(0 2px 5px color-mix(in srgb, var(--deep) 28%, transparent));
    pointer-events: none;
    animation: giftCursorSpark 1.28s cubic-bezier(.22, .61, .36, 1) both;
    will-change: transform, opacity;
}

.gift-night-premiere .gift-cursor-glow {
    mix-blend-mode: screen;
    opacity: 0;
}

.gift-night-premiere .gift-cursor-glow.is-visible {
    opacity: .3;
}

@keyframes giftCursorSpark {
    0% {
        opacity: 0;
        transform: translate3d(-50%, -50%, 0) scale(.55) rotate(0);
    }
    24% { opacity: .72; }
    68% { opacity: .4; }
    100% {
        opacity: 0;
        transform: translate3d(calc(-50% + var(--trail-x)), calc(-50% + var(--trail-y)), 0) scale(.96) rotate(var(--trail-r));
    }
}

@media (pointer: coarse), (prefers-reduced-motion: reduce) {
    .gift-cursor-glow,
    .gift-cursor-spark {
        display: none;
    }
}

.gift-gate {
    position: fixed;
    inset: 0;
    z-index: 20;
    display: grid;
    place-items: center;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    background: radial-gradient(circle at 50% 35%, var(--paper-2), var(--paper) 65%);
    transition: opacity .65s ease, visibility .65s ease;
}

.gift-gate.is-open {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
}

.gift-gate-glow {
    position: absolute;
    border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
    border-radius: 50%;
    pointer-events: none;
}

.gift-gate-glow-one {
    width: 70vmax;
    height: 70vmax;
    animation: giftPulse 7s ease-in-out infinite;
}

.gift-gate-glow-two {
    width: 52vmax;
    height: 52vmax;
    border-style: dashed;
    opacity: .25;
    animation: giftOrbit 40s linear infinite;
}

.gift-atmosphere {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
}

.gift-atmosphere i {
    position: absolute;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--accent);
    opacity: .24;
    animation: giftDrift 8s ease-in-out infinite;
}

.gift-atmosphere i:nth-child(1) { left: 8%; top: 18%; animation-delay: -2s; }
.gift-atmosphere i:nth-child(2) { left: 19%; top: 72%; width: 5px; height: 5px; animation-delay: -5s; }
.gift-atmosphere i:nth-child(3) { left: 42%; top: 12%; width: 4px; height: 4px; animation-delay: -1s; }
.gift-atmosphere i:nth-child(4) { right: 28%; top: 74%; width: 6px; height: 6px; animation-delay: -6s; }
.gift-atmosphere i:nth-child(5) { right: 12%; top: 24%; width: 5px; height: 5px; animation-delay: -3s; }
.gift-atmosphere i:nth-child(6) { right: 7%; bottom: 8%; animation-delay: -7s; }

.gift-bright-moments .gift-atmosphere i {
    border-radius: 2px;
    background: #e75c4c;
    box-shadow: 22px 18px 0 #f1b82d, -18px 28px 0 #4ea98b, 14px -25px 0 #7f67c7;
}

.gift-night-premiere .gift-atmosphere i {
    width: 3px;
    height: 3px;
    background: #fff;
    box-shadow: 0 0 12px 3px color-mix(in srgb, var(--accent) 75%, transparent);
    opacity: .72;
}

.gift-gate-art {
    position: absolute;
    right: -2vw;
    bottom: -3vh;
    width: min(42vw, 560px);
    max-height: 52vh;
    object-fit: contain;
    filter: drop-shadow(0 24px 35px rgba(0, 0, 0, .16));
    transform-origin: 60% 100%;
    animation: giftGateArt 1.15s cubic-bezier(.18, .8, .25, 1) both,
               giftFloat 6s 1.15s ease-in-out infinite;
}

.gift-gate-copy {
    position: relative;
    z-index: 2;
    width: min(820px, 88vw);
    padding: 48px;
    text-align: center;
}

.gift-gate-copy > * {
    animation: giftGateCopy .64s cubic-bezier(.18, .8, .25, 1) both;
}

.gift-gate-copy > span { animation-delay: .04s; }
.gift-gate-copy > h1 { animation-delay: .08s; }
.gift-gate-copy > p { animation-delay: .14s; }
.gift-gate-copy > button { animation-delay: .2s; }

.gift-gate-copy span,
.gift-hero-copy span,
.gift-story small,
.gift-work-copy small,
.gift-section-heading small {
    text-transform: uppercase;
    letter-spacing: .18em;
    font-size: clamp(.9rem, 1.1vw, 1rem);
    font-weight: 700;
}

.gift-gate-copy h1 {
    margin: 24px 0;
    overflow-wrap: anywhere;
    font: 500 clamp(3.4rem, 9vw, 8rem)/.88 var(--serif);
}

.gift-gate-copy p {
    display: -webkit-box;
    overflow: hidden;
    max-width: 620px;
    margin: 0 auto 32px;
    font: 500 clamp(1.25rem, 2vw, 1.75rem)/1.55 var(--serif);
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
}

button,
.gift-gate-copy button {
    border: 0;
    cursor: pointer;
}

.gift-gate-copy button {
    display: inline-flex;
    align-items: center;
    min-height: 64px;
    gap: 28px;
    padding: 12px 14px 12px 30px;
    border-radius: 999px;
    background: var(--deep);
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;
}

.gift-gate-copy button:hover {
    transform: translateY(-3px) scale(1.015);
    filter: brightness(1.08);
    box-shadow: 0 16px 35px rgba(0, 0, 0, .2);
}

.gift-gate-copy button:focus-visible,
.gift-brand-footer a:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--accent) 68%, #fff 28%);
    outline-offset: 4px;
}

.gift-sound:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--deep) 52%, #fff 48%);
    outline-offset: 4px;
}

.gift-gate-button-icon {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .17);
    transition: transform .25s ease;
}

.gift-gate-button-icon svg {
    display: block;
    width: 22px;
    height: 22px;
}

.gift-gate-copy button:hover .gift-gate-button-icon {
    transform: translateX(3px);
}

.gift-main {
    opacity: 0;
    transition: opacity .6s ease;
}

.gift-main.is-ready {
    opacity: 1;
}

.gift-main section {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

.gift-motion [data-reveal] {
    --reveal-x: 0px;
    --reveal-y: 48px;
    --reveal-scale: 1;
    opacity: 0;
    transform: translate3d(var(--reveal-x), calc(var(--reveal-y) + var(--parallax-y, 0px)), 0) scale(var(--reveal-scale));
    transition: opacity .65s cubic-bezier(.2, .7, .2, 1) var(--reveal-delay, 0ms),
                transform .82s cubic-bezier(.16, .8, .2, 1) var(--reveal-delay, 0ms);
    will-change: transform, opacity;
}

.gift-motion [data-reveal="left"] { --reveal-x: -64px; --reveal-y: 0px; }
.gift-motion [data-reveal="right"] { --reveal-x: 64px; --reveal-y: 0px; }
.gift-motion [data-reveal="scale"] { --reveal-y: 24px; --reveal-scale: .9; }

.gift-motion [data-reveal].is-visible {
    --reveal-x: 0px;
    --reveal-y: 0px;
    --reveal-scale: 1;
    opacity: 1;
}

[data-parallax] {
    --parallax-y: 0px;
}

.gift-hero {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    align-items: center;
    min-height: 100svh;
    gap: 6vw;
    padding: 8vw;
    background:
        radial-gradient(circle at 85% 20%, color-mix(in srgb, var(--paper-2) 62%, transparent), transparent 32%),
        var(--paper);
}

.gift-hero::after {
    position: absolute;
    z-index: -1;
    inset: 7%;
    border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
    border-radius: 52% 48% 46% 54% / 42% 52% 48% 58%;
    content: "";
    animation: giftShape 18s ease-in-out infinite alternate;
}

.gift-hero-orbit {
    position: absolute;
    z-index: -1;
    right: -14vw;
    top: -18vw;
    width: 52vw;
    height: 52vw;
    border: 1px dashed color-mix(in srgb, var(--accent) 34%, transparent);
    border-radius: 50%;
    animation: giftOrbit 48s linear infinite;
}

.gift-night-premiere .gift-hero {
    background:
        radial-gradient(circle at 74% 32%, rgba(126, 85, 213, .28), transparent 30%),
        radial-gradient(circle at 16% 72%, rgba(73, 42, 117, .32), transparent 28%),
        var(--paper);
}

.gift-bright-moments .gift-hero::before {
    position: absolute;
    z-index: -1;
    inset: 0;
    opacity: .18;
    background-image:
        radial-gradient(circle, #e75c4c 0 4px, transparent 5px),
        radial-gradient(circle, #f1b82d 0 3px, transparent 4px),
        radial-gradient(circle, #4ea98b 0 4px, transparent 5px);
    background-position: 8% 18%, 66% 12%, 90% 74%;
    background-size: 170px 190px, 210px 240px, 260px 220px;
    content: "";
}

.gift-hero-copy {
    position: relative;
    z-index: 2;
}

.gift-hero-copy h2,
.gift-story h2,
.gift-section-heading h2,
.gift-work-copy h2 {
    margin: 20px 0;
    overflow-wrap: break-word;
    hyphens: none;
    word-break: normal;
    font: 500 clamp(3rem, 7vw, 7rem)/.95 var(--serif);
}

.gift-hero-copy p,
.gift-story p {
    font: 500 clamp(1.15rem, 2vw, 1.65rem)/1.65 var(--serif);
}

.gift-hero-visual {
    position: relative;
    min-height: 70vh;
}

.gift-hero-visual figure {
    position: absolute;
    inset: 4% 5% 6% 2%;
    margin: 0;
    padding: 18px;
    overflow: hidden;
    background: #fff;
    transform: rotate(3deg);
    box-shadow: 0 35px 70px rgba(49, 31, 28, .2);
}

.gift-bright-moments .gift-hero-visual figure {
    border-radius: 34px 8px 38px 10px;
    transform: rotate(-2deg);
}

.gift-night-premiere .gift-hero-visual figure {
    padding: 10px;
    border: 1px solid rgba(199, 166, 255, .5);
    border-radius: 6px;
    background: rgba(255, 255, 255, .07);
    box-shadow: 0 40px 90px rgba(0, 0, 0, .55), 0 0 55px rgba(126, 85, 213, .24);
}

.gift-hero-visual figure img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gift-floating-shell {
    position: absolute;
    z-index: 3;
    right: -4%;
    bottom: -2%;
    width: min(48%, 460px);
    transform: translate3d(0, var(--parallax-y, 0px), 0);
    transition: transform .2s linear;
}

.gift-floating-art {
    display: block;
    width: 100%;
    filter: drop-shadow(0 18px 25px rgba(0, 0, 0, .16));
    animation: giftFloat 6s ease-in-out infinite;
}

.gift-hero-companion {
    position: absolute;
    z-index: 2;
    pointer-events: none;
    transform: translate3d(0, var(--parallax-y, 0px), 0) rotate(-4deg);
    transition: transform .2s linear;
}

.gift-hero-companion img {
    display: block;
    width: 100%;
    filter: drop-shadow(0 20px 28px rgba(113, 65, 54, .15));
    animation: giftSoftSway 7.5s ease-in-out infinite;
}

.gift-hero.is-art-only {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(620px, auto) minmax(340px, 34svh);
    align-items: stretch;
    min-height: auto;
    gap: 0;
    padding: clamp(36px, 4vw, 64px) clamp(54px, 7vw, 108px) 0 clamp(40px, 5vw, 80px);
    background:
        linear-gradient(90deg, var(--paper) 0 79%, color-mix(in srgb, var(--paper-2) 82%, var(--paper)) 79%),
        var(--paper);
}

.gift-hero.is-art-only::after {
    z-index: 0;
    inset: auto clamp(54px, 7vw, 108px) 0 clamp(40px, 5vw, 80px);
    height: max(340px, 34svh);
    border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
    border-bottom: 0;
    border-radius: 0;
    background: color-mix(in srgb, var(--paper) 84%, #fff 16%);
    box-shadow: inset 0 12px 34px rgba(91, 55, 48, .04);
    animation: none;
}

.gift-hero.is-art-only .gift-hero-orbit {
    display: none;
}

.gift-hero.is-art-only .gift-hero-copy {
    position: relative;
    z-index: 3;
    grid-row: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    align-self: stretch;
    width: 100%;
    min-height: 0;
    margin: 0;
    padding: clamp(74px, 8vw, 112px) clamp(118px, 13vw, 188px) clamp(64px, 7vw, 100px) clamp(72px, 9vw, 132px);
    border: 1px solid color-mix(in srgb, var(--accent) 36%, transparent);
    border-bottom-color: transparent;
    background:
        linear-gradient(color-mix(in srgb, var(--paper) 94%, #fff 6%), color-mix(in srgb, var(--paper) 94%, #fff 6%)),
        var(--paper);
    text-align: center;
    box-shadow: 0 22px 60px rgba(91, 55, 48, .11);
}

.gift-hero.is-art-only .gift-hero-copy::before {
    position: absolute;
    z-index: 0;
    inset: 14px;
    border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
    content: "";
    pointer-events: none;
}

.gift-hero.is-art-only .gift-hero-copy span {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--accent);
}

.gift-hero.is-art-only .gift-hero-copy h2 {
    max-width: min(100%, 680px);
    margin: clamp(38px, 5vw, 64px) 0 0;
    font-size: clamp(3.7rem, 6.4vw, 6.2rem);
    line-height: .92;
}

.gift-hero.is-art-only .gift-hero-copy h2::after {
    display: block;
    width: 176px;
    margin: clamp(32px, 4vw, 48px) auto;
    background: linear-gradient(90deg, var(--accent), var(--accent)) center / 100% 1px no-repeat;
    color: var(--accent);
    content: "♡";
    font: 400 1.55rem/1 var(--serif);
    text-shadow: -12px 0 var(--paper), -8px 0 var(--paper), 8px 0 var(--paper), 12px 0 var(--paper);
}

.gift-hero.is-art-only .gift-hero-copy p {
    max-width: 660px;
    margin: 0;
    font-size: clamp(1.2rem, 1.8vw, 1.55rem);
}

.gift-hero.is-art-only .gift-hero-visual {
    position: relative;
    z-index: 4;
    grid-row: 2;
    inset: auto;
    min-height: 340px;
    border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
    border-top-color: transparent;
    border-bottom: 0;
    background:
        radial-gradient(circle at 50% 100%, color-mix(in srgb, var(--paper-2) 52%, transparent), transparent 64%),
        color-mix(in srgb, var(--paper) 86%, #fff 14%);
    pointer-events: none;
}

.gift-hero.is-art-only .gift-floating-shell {
    right: auto;
    bottom: 0;
    left: 50%;
    width: auto;
    height: calc(100% + clamp(64px, 8vw, 112px));
    aspect-ratio: 1510 / 904;
    transform: translate3d(-50%, var(--parallax-y, 0px), 0);
}

.gift-hero.is-art-only .gift-hero-companion {
    z-index: 5;
    top: clamp(12px, 2vw, 28px);
    right: auto;
    left: clamp(-46px, -3vw, -24px);
    width: min(17vw, 190px);
    transform: translate3d(0, var(--parallax-y, 0px), 0) rotate(58deg);
}

.gift-letter-ribbon {
    position: absolute;
    z-index: 5;
    top: 0;
    right: clamp(30px, 4vw, 58px);
    bottom: 0;
    width: clamp(54px, 6vw, 78px);
    border-right: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
    border-left: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
    background:
        repeating-linear-gradient(90deg, rgba(255, 255, 255, .15) 0 1px, transparent 1px 4px),
        color-mix(in srgb, var(--paper-2) 58%, #d8bca8 42%);
    box-shadow: inset 8px 0 18px rgba(91, 55, 48, .04);
}

.gift-letter-ribbon::after {
    position: absolute;
    left: 50%;
    top: 41%;
    width: clamp(66px, 7.5vw, 96px);
    aspect-ratio: 1;
    border: 5px double color-mix(in srgb, var(--deep) 74%, #d69b7a);
    border-radius: 50%;
    background:
        radial-gradient(circle at 36% 30%, rgba(255, 255, 255, .2), transparent 22%),
        var(--accent);
    box-shadow: 0 11px 24px rgba(73, 40, 34, .22), inset 0 0 0 6px rgba(255, 255, 255, .08);
    content: "";
    transform: translate(-50%, -50%) rotate(-7deg);
}

.gift-letter-ribbon::before {
    position: absolute;
    z-index: 1;
    left: 50%;
    top: 41%;
    width: clamp(11px, 1.2vw, 16px);
    height: clamp(20px, 2vw, 27px);
    border-radius: 100% 0 100% 0;
    background: color-mix(in srgb, var(--deep) 72%, var(--accent));
    content: "";
    opacity: .66;
    transform: translate(-50%, -50%) rotate(-42deg);
}

.gift-story {
    display: grid;
    grid-template-columns: 1fr .85fr;
    align-items: center;
    min-height: 82vh;
    gap: 5vw;
    padding: 10vw;
    background:
        linear-gradient(125deg, color-mix(in srgb, var(--paper-2) 42%, var(--paper)), var(--paper));
}

.gift-story::before {
    position: absolute;
    z-index: -1;
    left: -12vw;
    bottom: -25vw;
    width: 55vw;
    height: 55vw;
    border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);
    border-radius: 50%;
    content: "";
}

.gift-story > div:first-child {
    min-width: 0;
    max-width: 760px;
}

.gift-art-stage {
    min-height: 480px;
}

.gift-art-stage img {
    width: 100%;
    height: 100%;
    max-height: 620px;
    object-fit: contain;
    filter: drop-shadow(0 25px 35px rgba(0, 0, 0, .12));
    animation: giftSoftSway 8s ease-in-out infinite;
}

.gift-night-premiere .gift-story {
    background:
        radial-gradient(circle at 72% 52%, rgba(126, 85, 213, .24), transparent 33%),
        linear-gradient(135deg, #171025, #0d0918);
}

.gift-bright-moments .gift-story {
    background: linear-gradient(145deg, #ffe4c6, #fff5d9 58%, #dff2dc);
}

.gift-gallery {
    padding: 9vw 6vw;
    background:
        radial-gradient(circle at 10% 8%, color-mix(in srgb, var(--paper-2) 42%, transparent), transparent 22%),
        var(--paper);
}

.gift-section-heading {
    max-width: 900px;
    margin: 0 auto 70px;
    text-align: center;
}

.gift-photo-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    max-width: 1400px;
    gap: 24px;
    margin: auto;
    perspective: 1500px;
}

.gift-photo-grid figure {
    --photo-rotation: -2deg;
    grid-column: span 6;
    min-height: 360px;
    margin: 0;
    position: relative;
    isolation: isolate;
}

.gift-photo-card {
    display: block;
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    padding: 12px;
    overflow: hidden;
    background: #fff;
    transform: rotateZ(var(--photo-rotation));
    transform-origin: center;
    transform-style: preserve-3d;
    box-shadow: 0 20px 50px rgba(30, 20, 20, .14);
    transition: transform .44s cubic-bezier(.16, .8, .2, 1);
    will-change: transform;
    backface-visibility: hidden;
}

.gift-photo-grid figure:nth-child(3n+1) { grid-column: span 7; }
.gift-photo-grid figure:nth-child(3n+2) { --photo-rotation: 2deg; grid-column: span 5; }
.gift-photo-grid figure:nth-child(3n) { grid-column: span 12; max-width: 760px; justify-self: center; }

/* Режимы зависят от числа фотографий, поэтому композиция не разваливается и не
   дублирует hero при любом разрешённом количестве от двух до восьми. */
.gift-photo-grid-diptych figure:nth-child(n) {
    grid-column: span 6;
    min-height: 560px;
}

.gift-photo-grid-triptych figure:nth-child(n) {
    grid-column: span 4;
    min-height: 520px;
}

.gift-photo-grid-triptych figure:nth-child(2) {
    margin-top: 56px;
}

.gift-photo-grid-editorial-grid figure:nth-child(4n+1),
.gift-photo-grid-editorial-grid figure:nth-child(4n) {
    grid-column: span 7;
}

.gift-photo-grid-editorial-grid figure:nth-child(4n+2),
.gift-photo-grid-editorial-grid figure:nth-child(4n+3) {
    grid-column: span 5;
}

.gift-photo-grid-collage {
    gap: 18px;
}

.gift-photo-grid-collage figure:nth-child(n) {
    grid-column: span 3;
    min-height: 340px;
}

.gift-photo-grid-collage figure:nth-child(3n+2) {
    margin-top: 46px;
}

.gift-bright-moments .gift-photo-card {
    border-radius: 28px 8px 28px 8px;
    box-shadow: 0 20px 50px rgba(70, 42, 24, .1);
}

/* Цветная подложка принадлежит сетке, а не карточке: при наведении фотография
   приподнимается отдельно и оставляет за собой неподвижный цветовой силуэт. */
.gift-bright-moments .gift-photo-grid figure::before {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0;
    pointer-events: none;
    border-radius: 28px 8px 28px 8px;
    background: color-mix(in srgb, var(--accent) 24%, transparent);
    transform: translate(12px, 14px) rotateZ(var(--photo-rotation));
    transform-origin: center;
}

.gift-night-premiere .gift-gallery {
    background: linear-gradient(180deg, #0d0918, #171025);
}

.gift-night-premiere .gift-photo-card {
    border: 1px solid rgba(199, 166, 255, .35);
    background: #1a1129;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .5), 0 0 36px rgba(126, 85, 213, .14);
}

.gift-photo-grid img {
    width: 100%;
    height: 100%;
    min-height: 340px;
    object-fit: cover;
}

@media (hover: hover) and (pointer: fine) {
    .gift-photo-grid figure:hover .gift-photo-card {
        transform: translateY(-10px) scale(1.018) rotateZ(0deg) rotateX(1.2deg) rotateY(-1.6deg);
    }

    .gift-photo-grid figure:nth-child(even):hover .gift-photo-card {
        transform: translateY(-10px) scale(1.018) rotateZ(0deg) rotateX(1.2deg) rotateY(1.6deg);
    }

}

.gift-work {
    padding: 9vw 6vw;
    background: var(--deep);
}

.gift-work::before,
.gift-work::after {
    position: absolute;
    z-index: -1;
    width: 36vw;
    height: 36vw;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 50%;
    content: "";
}

.gift-work::before { left: -14vw; top: -17vw; }
.gift-work::after { right: -12vw; bottom: -19vw; }

.gift-work-halo {
    position: absolute;
    z-index: -1;
    left: 50%;
    top: 50%;
    width: 70vw;
    height: 70vw;
    border-radius: 50%;
    background: radial-gradient(circle, color-mix(in srgb, var(--accent) 24%, transparent), transparent 65%);
    transform: translate(-50%, -50%);
    animation: giftPulse 10s ease-in-out infinite;
}

.gift-work-card {
    position: relative;
    isolation: isolate;
    max-width: 1250px;
    margin: auto;
    overflow: hidden;
    border-radius: 40px;
    background: var(--paper);
    color: var(--ink);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .28);
}

.gift-work-feature {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(300px, .85fr) minmax(0, 1.15fr);
    min-height: 560px;
}

.gift-night-premiere .gift-work-card {
    border: 1px solid rgba(199, 166, 255, .24);
    background: linear-gradient(145deg, #211435, #130d20);
    color: #f8f1ff;
    box-shadow: 0 34px 100px rgba(0, 0, 0, .58), 0 0 50px rgba(126, 85, 213, .18);
}

/* Декор начинается только в текстовой части, поэтому не перекрывает подарок.
   Нижняя часть продолжается в следующий раздел и растворяется там: так у
   сюжетного арта нет искусственного среза на границе двух похожих фонов. */
.gift-work-cinema-art {
    position: absolute;
    z-index: 0;
    top: 0;
    display: block;
    width: min(28%, 240px);
    height: calc(100% + clamp(240px, 25vw, 420px));
    overflow: hidden;
    pointer-events: none;
    user-select: none;
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 62%, rgba(0, 0, 0, .82) 78%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 0%, #000 62%, rgba(0, 0, 0, .82) 78%, transparent 100%);
}

.gift-work-cinema-art--left { left: 0; }
.gift-work-cinema-art--right { right: 0; }

.gift-work-cinema-art img {
    display: block;
    width: auto;
    height: 100%;
    max-width: none;
    object-fit: cover;
    filter: drop-shadow(0 20px 30px rgba(0, 0, 0, .32));
}

.gift-work-cinema-art--right img { margin-left: auto; }

.gift-work-media {
    min-height: 560px;
    overflow: hidden;
}

.gift-work-media > .gift-cover,
.gift-work-media > video {
    display: block;
    width: 100%;
    height: 100%;
    max-height: 760px;
    object-fit: contain;
    background: color-mix(in srgb, var(--paper-2) 48%, var(--paper));
}

/* Ориентацию берём из метаданных самого ролика: горизонтальное видео получает
   полноценный киноэкран, а вертикальное — высокий экран и текст на всю ширину. */
.gift-work-card.is-video-landscape .gift-work-feature,
.gift-work-card.is-video-portrait .gift-work-feature {
    grid-template-columns: 1fr;
    min-height: auto;
}

.gift-work-card.is-video-landscape .gift-work-media {
    aspect-ratio: 16 / 9;
    min-height: 0;
}

.gift-work-card.is-video-landscape .gift-work-media > video {
    max-height: none;
}

.gift-work-card.is-video-landscape .gift-work-copy,
.gift-work-card.is-video-portrait .gift-work-copy {
    padding-block: clamp(30px, 4vw, 56px);
    text-align: center;
}

.gift-work-card.is-video-landscape .gift-work-copy > span,
.gift-work-card.is-video-portrait .gift-work-copy > span {
    margin-bottom: 20px;
}

.gift-work-card.is-video-portrait .gift-work-copy {
    order: -1;
    padding-bottom: 24px;
}

.gift-work-card.is-video-portrait .gift-work-media {
    display: grid;
    place-items: center;
    min-height: 0;
    padding: 0 clamp(16px, 4vw, 48px) clamp(32px, 5vw, 64px);
    background: color-mix(in srgb, var(--paper-2) 48%, var(--paper));
}

.gift-work-card.is-video-portrait .gift-work-media > video {
    width: auto;
    height: min(74vh, 820px);
    max-width: 100%;
    max-height: 820px;
    border-radius: 24px;
}

.gift-night-premiere .gift-work-card.is-video-portrait .gift-work-media {
    background: #0d0918;
}

.gift-night-premiere .gift-work-media > .gift-cover,
.gift-night-premiere .gift-work-media > video {
    background: #0d0918;
}

.gift-work-art {
    display: grid;
    place-items: center;
    min-height: 560px;
    padding: 8%;
    background: color-mix(in srgb, var(--paper-2) 48%, var(--paper));
}

.gift-night-premiere .gift-work-art {
    background: radial-gradient(circle, rgba(126, 85, 213, .32), transparent 68%);
}

.gift-work-art img {
    width: 100%;
    max-height: 560px;
    object-fit: contain;
    filter: drop-shadow(0 28px 35px rgba(0, 0, 0, .2));
    animation: giftFloat 7s ease-in-out infinite;
}

.gift-work-copy {
    position: relative;
    align-self: center;
    overflow: hidden;
    padding: clamp(32px, 6vw, 90px);
}

.gift-work-copy > :not(.gift-work-cinema-art) {
    position: relative;
    z-index: 2;
}

.gift-night-premiere .gift-work-card.is-video .gift-work-copy {
    overflow: visible;
    padding-inline: clamp(72px, 18vw, 230px);
}

.gift-work-copy > span {
    display: block;
    margin-bottom: 28px;
    color: var(--accent);
    font: 500 1.35rem/1.2 "Marck Script", cursive;
}

.gift-work-copy > small {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 7px 14px;
    border: 1px solid color-mix(in srgb, var(--accent) 34%, transparent);
    border-radius: 999px;
    color: var(--accent);
}

.gift-work-copy h2 {
    font-size: clamp(2.5rem, 5vw, 5.5rem);
}

.gift-work-copy audio {
    width: 100%;
    margin-top: 12px;
}

.gift-work-player {
    margin-top: 34px;
    padding-top: 26px;
    border-top: 1px solid color-mix(in srgb, var(--ink) 18%, transparent);
}

.gift-work-player b {
    display: block;
    font-size: .9rem;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.gift-poem-player {
    position: relative;
    z-index: 3;
    width: min(680px, calc(100% - clamp(40px, 9vw, 150px)));
    margin: 0 auto clamp(44px, 6vw, 78px);
    text-align: center;
}

.gift-poem-player audio {
    width: 100%;
    margin-top: 14px;
}

.gift-lyrics-stage {
    position: relative;
    padding: clamp(52px, 6vw, 82px) clamp(18px, 4vw, 56px) clamp(18px, 4vw, 56px);
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--paper-2) 52%, var(--paper)), var(--paper) 84px);
}

.gift-lyrics-stage::before {
    position: absolute;
    left: 50%;
    top: 26px;
    width: min(220px, 36%);
    height: 1px;
    background: color-mix(in srgb, var(--accent) 34%, transparent);
    content: "";
    transform: translateX(-50%);
}

.gift-lyrics-stage::after {
    position: absolute;
    left: 50%;
    top: 26px;
    padding: 0 14px;
    background: color-mix(in srgb, var(--paper-2) 52%, var(--paper));
    color: color-mix(in srgb, var(--accent) 72%, var(--ink));
    content: "♥";
    font-size: .9rem;
    transform: translate(-50%, -50%);
}

.gift-lyrics-card {
    position: relative;
    margin: 0;
    padding: clamp(36px, 7vw, 92px);
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);
    border-radius: 32px;
    background:
        radial-gradient(circle at 50% 0, color-mix(in srgb, var(--paper-2) 44%, transparent), transparent 38%),
        color-mix(in srgb, var(--paper) 96%, white);
    box-shadow: inset 0 0 70px color-mix(in srgb, var(--paper-2) 24%, transparent);
}

.gift-lyrics-card::before,
.gift-lyrics-card::after {
    position: absolute;
    color: color-mix(in srgb, var(--accent) 14%, transparent);
    font: 500 clamp(8rem, 18vw, 15rem)/1 var(--serif);
    pointer-events: none;
}

.gift-lyrics-card::before {
    left: 2%;
    top: -16px;
    content: "“";
}

.gift-lyrics-card::after {
    right: 3%;
    bottom: -92px;
    content: "”";
}

.gift-lyrics-card header {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    max-width: 760px;
    margin: 0 auto 48px;
    color: var(--accent);
}

.gift-lyrics-card header::before,
.gift-lyrics-card header::after {
    width: 64px;
    height: 1px;
    background: color-mix(in srgb, var(--accent) 42%, transparent);
    content: "";
}

.gift-lyrics-card header small {
    font-size: .9rem;
    letter-spacing: .16em;
    text-align: center;
    text-transform: uppercase;
}

.gift-lyrics-card header i {
    font-style: normal;
}

.gift-lyrics {
    position: relative;
    z-index: 1;
    max-width: 820px;
    margin: auto;
    overflow-wrap: anywhere;
    color: var(--ink);
    text-align: center;
    font: 500 clamp(1.3rem, 2vw, 1.65rem)/1.85 var(--serif);
}

/* Для стихотворения с одной фотографией используем самостоятельную композицию,
   чтобы центральное произведение ощущалось подарком, а не вложенным текстовым блоком. */
.gift-bright-moments .gift-work:has(.gift-poem-keepsake) {
    padding-block: clamp(120px, 11vw, 190px);
    background:
        radial-gradient(circle at 12% 10%, rgba(239, 127, 108, .28), transparent 31%),
        radial-gradient(circle at 88% 82%, rgba(246, 203, 118, .18), transparent 26%),
        var(--deep);
}

.gift-poem-keepsake {
    position: relative;
    isolation: isolate;
    max-width: 1250px;
    margin: auto;
    padding-top: clamp(90px, 8vw, 130px);
}

.gift-poem-photo {
    position: relative;
    z-index: 1;
    width: min(710px, 64%);
    margin: 0 auto 0 2%;
    padding: 18px 18px 58px;
    border-radius: 5px;
    background: #fffaf1;
    box-shadow: 0 30px 70px rgba(18, 53, 47, .32);
    transform: rotate(-3.2deg);
}

.gift-poem-photo::after {
    position: absolute;
    right: 24px;
    bottom: 14px;
    color: var(--accent);
    content: "♥";
    font: 500 1.7rem/1 var(--serif);
}

.gift-poem-photo img {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
}

.gift-poem-sheet {
    position: relative;
    z-index: 2;
    width: min(980px, 84%);
    margin: clamp(-170px, -12vw, -125px) 2% 0 auto;
    padding: clamp(170px, 16vw, 225px) clamp(62px, 8vw, 118px) clamp(76px, 8vw, 118px);
    overflow: visible;
    border: 1px solid rgba(177, 91, 71, .2);
    border-radius: 8px 28px 18px 12px;
    background:
        linear-gradient(90deg, transparent 0 96%, rgba(222, 126, 107, .08) 96%),
        radial-gradient(circle at 50% 0, rgba(244, 210, 194, .42), transparent 34%),
        #fffaf1;
    color: #233d37;
    box-shadow: 0 42px 100px rgba(9, 38, 32, .34), inset 0 0 80px rgba(221, 147, 127, .08);
}

.gift-poem-sheet::before {
    position: absolute;
    inset: 22px;
    border: 1px solid rgba(177, 91, 71, .15);
    border-radius: 5px 20px 12px 8px;
    content: "";
    pointer-events: none;
}

.gift-poem-ribbon {
    position: absolute;
    z-index: 5;
    top: -12px;
    right: clamp(24px, 4.5vw, 58px);
    width: auto;
    height: clamp(410px, 38vw, 520px);
    object-fit: contain;
    pointer-events: none;
    filter: drop-shadow(0 18px 20px rgba(80, 31, 26, .22));
}

.gift-poem-floral {
    position: absolute;
    z-index: 4;
    left: clamp(-138px, -10vw, -92px);
    top: clamp(96px, 10vw, 148px);
    width: auto;
    height: clamp(500px, 50vw, 700px);
    object-fit: contain;
    pointer-events: none;
    filter: drop-shadow(0 24px 26px rgba(81, 48, 35, .18));
    transform-origin: 50% 88%;
    animation: giftSoftSway 9s ease-in-out infinite;
}

.gift-poem-heading {
    position: relative;
    z-index: 3;
    max-width: 650px;
    margin: 0 clamp(68px, 8vw, 118px) 0 clamp(100px, 12vw, 170px);
    text-align: center;
}

.gift-poem-heading small {
    display: inline-flex;
    padding: 7px 16px;
    border: 1px solid rgba(177, 91, 71, .32);
    border-radius: 999px;
    color: #b15b47;
    font: 700 .78rem/1.2 var(--sans);
    letter-spacing: .16em;
    text-transform: uppercase;
}

.gift-poem-heading span {
    display: block;
    margin: 28px 0 10px;
    color: #b15b47;
    font: 500 clamp(1.2rem, 2vw, 1.55rem)/1.25 "Marck Script", cursive;
}

.gift-poem-heading h2 {
    margin: 0;
    overflow-wrap: anywhere;
    color: #233d37;
    font-family: var(--serif);
    font-weight: 600;
    font-size: clamp(3rem, 6vw, 5.8rem);
    line-height: .95;
}

.gift-poem-heading i {
    display: flex;
    align-items: center;
    gap: 14px;
    width: min(300px, 70%);
    margin: 30px auto 0;
    color: #b15b47;
    font-style: normal;
}

.gift-poem-heading i::before,
.gift-poem-heading i::after {
    flex: 1;
    height: 1px;
    background: rgba(177, 91, 71, .38);
    content: "";
}

.gift-poem-text {
    position: relative;
    z-index: 3;
    max-width: 720px;
    margin: clamp(70px, 8vw, 110px) auto 0;
    overflow-wrap: anywhere;
    text-align: center;
    font: 500 clamp(1.3rem, 2vw, 1.65rem)/1.9 var(--serif);
}

.gift-poem-footer-art {
    position: relative;
    z-index: 4;
    display: block;
    width: min(720px, 94%);
    margin: clamp(56px, 7vw, 92px) -8% clamp(-110px, -8vw, -72px) auto;
    filter: drop-shadow(0 22px 24px rgba(59, 42, 29, .15));
    transform: rotate(-1.2deg);
    animation: giftFloat 8s ease-in-out infinite;
}

.gift-night-premiere .gift-lyrics-card {
    background:
        radial-gradient(circle at 50% 0, rgba(126, 85, 213, .22), transparent 40%),
        #181025;
    box-shadow: inset 0 0 70px rgba(126, 85, 213, .08);
}

.gift-work-card.is-video .gift-lyrics-stage {
    position: relative;
    z-index: 4;
}

/* Прозрачный фон пропускает продолжение бокового арта, а непрозрачная
   карточка стихотворения сохраняет спокойную и полностью читаемую область. */
.gift-night-premiere .gift-work-card.is-video .gift-lyrics-stage {
    background: transparent;
}

.gift-finale {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 82vh;
    padding: 8vw;
    text-align: center;
    background:
        radial-gradient(circle at 50% 35%, color-mix(in srgb, var(--paper-2) 58%, transparent), transparent 42%),
        var(--paper);
}

.gift-finale::before {
    position: absolute;
    z-index: -1;
    inset: 8%;
    border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
    border-radius: 48% 52% 45% 55% / 56% 42% 58% 44%;
    content: "";
    animation: giftShape 16s ease-in-out infinite alternate-reverse;
}

.gift-night-premiere .gift-finale {
    background:
        radial-gradient(circle at 50% 38%, rgba(126, 85, 213, .28), transparent 34%),
        #0d0918;
}

.gift-finale-art {
    width: min(560px, 72vw);
    transform: translate3d(0, var(--parallax-y, 0px), 0);
}

.gift-finale-art img {
    display: block;
    width: 100%;
    max-height: 390px;
    object-fit: contain;
    filter: drop-shadow(0 20px 30px rgba(0, 0, 0, .12));
    animation: giftSoftSway 8s ease-in-out infinite;
}

.gift-finale p {
    max-width: 800px;
    margin: 30px;
    font: 500 clamp(2rem, 5vw, 5rem)/1.05 var(--serif);
}

.gift-finale strong {
    font: 500 clamp(2rem, 4vw, 4rem) "Marck Script", cursive;
}

.gift-brand-footer {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 176px;
    padding: 56px 24px;
    border-top: 1px solid color-mix(in srgb, var(--ink) 14%, transparent);
    background: color-mix(in srgb, var(--paper) 94%, var(--ink));
}

.gift-brand-footer a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 10px 16px;
    color: inherit;
    opacity: .58;
    font-size: .875rem;
    font-weight: 500;
    letter-spacing: .035em;
    text-decoration: none;
    transition: opacity .2s ease, transform .2s ease;
}

.gift-brand-footer a:hover {
    opacity: .86;
    transform: translateY(-2px);
}

.gift-sound {
    position: fixed;
    z-index: 12;
    right: 22px;
    bottom: 22px;
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    border: 0;
    border-radius: 50%;
    background: var(--deep);
    color: #fff;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .24);
    isolation: isolate;
    overflow: visible;
    transition: transform .2s ease, opacity .2s ease, filter .2s ease;
}

.gift-sound::before,
.gift-sound::after {
    content: "";
    position: absolute;
    z-index: -1;
    inset: -1px;
    border: 1px solid color-mix(in srgb, var(--deep) 30%, transparent);
    border-radius: inherit;
    pointer-events: none;
    animation: giftSoundWave 2.2s ease-out infinite;
}

.gift-sound::after {
    animation-delay: 1.1s;
}

.gift-sound:hover {
    transform: scale(1.08);
    filter: brightness(1.08);
}

.gift-sound svg {
    width: 24px;
    fill: currentColor;
}

.gift-sound-icon-muted {
    display: none;
    fill: none !important;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.gift-sound.is-muted .gift-sound-icon-on {
    display: none;
}

.gift-sound.is-muted .gift-sound-icon-muted {
    display: block;
}

.gift-sound.is-muted {
    opacity: .55;
}

.gift-sound.is-muted::before,
.gift-sound.is-muted::after {
    display: none;
}

@keyframes giftSoundWave {
    0% { opacity: 0; transform: scale(1.02); }
    16% { opacity: .34; }
    76%, 100% { opacity: 0; transform: scale(1.72); }
}

@keyframes giftGateCopy {
    from { opacity: 0; transform: translateY(28px); filter: blur(8px); }
    to { opacity: 1; transform: translateY(0); filter: blur(0); }
}

@keyframes giftGateArt {
    from { opacity: 0; transform: translate3d(70px, 60px, 0) rotate(5deg) scale(.84); }
    to { opacity: 1; transform: translate3d(0, 0, 0) rotate(0) scale(1); }
}

@keyframes giftFloat {
    50% { transform: translateY(-14px) rotate(1deg); }
}

@keyframes giftSoftSway {
    50% { transform: translateY(-8px) rotate(-1deg); }
}

@keyframes giftPulse {
    50% { transform: scale(1.08); opacity: .55; }
}

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

@keyframes giftDrift {
    50% { transform: translate3d(12px, -18px, 0) rotate(24deg); opacity: .48; }
}

@keyframes giftShape {
    to { border-radius: 42% 58% 54% 46% / 52% 44% 56% 48%; transform: rotate(3deg) scale(1.025); }
}

@media (min-width: 900px) {
    .gift-gate-copy {
        transform: translateX(-6vw);
    }

    .gift-gate-art {
        right: -3vw;
        bottom: -7vh;
        width: min(38vw, 520px);
        max-height: 48vh;
    }
}

@media (min-width: 961px) and (max-height: 1000px) {
    .gift-hero.is-art-only .gift-hero-copy {
        padding-top: clamp(64px, 7vh, 76px);
        padding-bottom: clamp(132px, 16vh, 152px);
    }

    .gift-hero.is-art-only .gift-floating-shell {
        height: calc(100% + 72px);
    }
}

@media (min-width: 761px) and (max-width: 960px) {
    .gift-hero {
        grid-template-columns: minmax(0, 1fr);
        align-items: start;
        min-height: 100svh;
        gap: 6px;
        padding: 76px 7vw 42px;
    }

    .gift-hero:not(.is-art-only) .gift-hero-copy {
        width: min(72%, 540px);
    }

    .gift-hero:not(.is-art-only) .gift-hero-copy h2 {
        font-size: clamp(3.7rem, 9.5vw, 5.9rem);
    }

    .gift-hero.is-art-only {
        display: grid;
        grid-template-rows: minmax(700px, auto) minmax(380px, 35svh);
        min-height: auto;
        padding: 32px 4vw 0;
    }

    .gift-hero.is-art-only::after {
        inset: auto 4vw 0;
        width: auto;
        height: max(380px, 35svh);
    }

    .gift-hero.is-art-only .gift-hero-copy {
        width: 100%;
        min-height: 0;
        padding: 84px 128px 72px 90px;
    }

    .gift-hero.is-art-only .gift-hero-copy h2 {
        max-width: min(100%, 560px);
        font-size: clamp(3.7rem, 8.5vw, 5rem);
    }

    .gift-hero.is-art-only .gift-floating-shell {
        right: auto;
        bottom: 0;
        left: 50%;
        width: auto;
        height: calc(100% + 72px);
    }

    .gift-hero.is-art-only .gift-hero-companion {
        top: 4px;
        right: auto;
        left: -30px;
        width: 150px;
    }
}

@media (max-width: 760px) {
    .gift-gate {
        align-items: start;
        padding-top: 10vh;
    }

    .gift-gate-copy {
        width: 94vw;
        padding: 24px;
    }

    .gift-gate-copy h1 {
        font-size: clamp(2.7rem, 15vw, 5rem);
    }

    .gift-gate-copy p {
        font-size: 1.25rem;
        line-height: 1.6;
    }

    .gift-gate-art {
        right: -15vw;
        bottom: -2vh;
        width: 78vw;
        max-height: 38vh;
        opacity: .76;
    }

    .gift-gate-glow-one { width: 120vw; height: 120vw; }
    .gift-gate-glow-two { width: 88vw; height: 88vw; }

    .gift-hero {
        grid-template-columns: 1fr;
        min-height: auto;
        gap: 30px;
        padding: 110px 24px 70px;
    }

    .gift-hero::after {
        inset: 24px 12px;
    }

    .gift-hero-copy h2 {
        font-size: clamp(2.8rem, 14vw, 5rem);
    }

    .gift-hero-copy p,
    .gift-story p {
        font-size: 1.18rem;
        line-height: 1.55;
    }

    .gift-hero-visual {
        min-height: 58vh;
    }

    .gift-hero-visual figure {
        inset: 0 4% 8%;
        padding: 10px;
    }

    .gift-floating-shell {
        right: -7%;
        width: 58%;
    }

    .gift-hero.is-art-only {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: minmax(560px, auto) 300px;
        gap: 0;
        min-height: auto;
        padding: 16px 12px 0;
        background: linear-gradient(90deg, var(--paper) 0 88%, color-mix(in srgb, var(--paper-2) 82%, var(--paper)) 88%);
    }

    .gift-hero.is-art-only::after {
        inset: auto 12px 0;
        width: auto;
        height: 300px;
        border-radius: 0;
    }

    .gift-hero.is-art-only .gift-hero-copy {
        width: 100%;
        min-height: 560px;
        padding: 72px 54px 64px 28px;
        text-align: left;
    }

    .gift-hero.is-art-only .gift-hero-copy h2 {
        max-width: 100%;
        margin-top: 34px;
        font-size: clamp(2.9rem, 13vw, 4.1rem);
    }

    .gift-hero.is-art-only .gift-hero-copy h2::after {
        width: 132px;
        margin: 30px 0;
        text-align: center;
    }

    .gift-hero.is-art-only .gift-hero-copy p {
        font-size: 1.08rem;
        line-height: 1.55;
    }

    .gift-hero.is-art-only .gift-hero-visual {
        position: relative;
        inset: auto;
        min-height: 300px;
    }

    .gift-hero.is-art-only .gift-floating-shell {
        right: auto;
        bottom: 0;
        left: 50%;
        width: auto;
        height: calc(100% + 56px);
    }

    .gift-hero.is-art-only .gift-hero-companion {
        top: -10px;
        right: auto;
        left: -34px;
        width: 112px;
    }

    .gift-letter-ribbon {
        right: 16px;
        width: 30px;
    }

    .gift-letter-ribbon::after {
        width: 54px;
        border-width: 4px;
    }

    .gift-story {
        grid-template-columns: minmax(0, 1fr);
        min-height: auto;
        gap: 28px;
        padding: 90px 24px 46px;
        text-align: center;
    }

    .gift-story h2,
    .gift-section-heading h2 {
        font-size: clamp(2.6rem, 13vw, 4.4rem);
    }

    .gift-art-stage {
        width: 100%;
        min-height: 310px;
    }

    .gift-art-stage img {
        max-height: 360px;
    }

    .gift-gallery {
        padding: 80px 18px;
    }

    .gift-section-heading {
        margin-bottom: 40px;
    }

    .gift-photo-grid {
        gap: 16px;
    }

    .gift-photo-grid figure,
    .gift-photo-grid figure:nth-child(n) {
        --photo-rotation: -1deg;
        grid-column: span 12;
        min-height: 340px;
        max-width: none;
        margin-top: 0;
        justify-self: stretch;
    }

    .gift-photo-grid figure:nth-child(even) {
        --photo-rotation: 1deg;
    }

    .gift-work {
        padding: 70px 16px;
    }

    .gift-work-card {
        border-radius: 26px;
    }

    .gift-work-feature {
        grid-template-columns: 1fr;
        min-height: auto;
    }

    .gift-work-media,
    .gift-work-media > .gift-cover,
    .gift-work-media > video {
        min-height: 0;
        max-height: 62vh;
    }

    .gift-work-card.is-video-landscape .gift-work-media {
        aspect-ratio: 16 / 9;
        max-height: none;
    }

    .gift-work-card.is-video-landscape .gift-work-media > video {
        width: 100%;
        height: 100%;
        max-height: none;
    }

    .gift-night-premiere .gift-work-card.is-video-portrait .gift-work-media {
        max-height: none;
        padding: 0 16px 28px;
    }

    .gift-work-card.is-video-portrait .gift-work-media > video {
        width: auto;
        height: min(72vh, 680px);
        max-width: 100%;
        max-height: 680px;
        border-radius: 18px;
    }

    .gift-work-cinema-art {
        width: min(28%, 132px);
        height: calc(100% + clamp(160px, 50vw, 260px));
    }

    /* На мобильном показываем вертикальные иллюстрации целиком: масштабируем
       по ширине боковой зоны вместо увеличения по высоте и последующего кропа. */
    .gift-work-cinema-art img {
        width: 100%;
        height: auto;
        object-fit: contain;
    }

    .gift-night-premiere .gift-work-card.is-video .gift-work-copy {
        padding-inline: clamp(72px, 25vw, 132px);
    }

    .gift-work-art {
        min-height: 330px;
        padding: 10%;
    }

    .gift-work-copy {
        padding: 36px 24px;
        text-align: center;
    }

    .gift-work-copy h2 {
        font-size: clamp(2.7rem, 13vw, 4rem);
    }

    .gift-work-copy > span {
        margin-bottom: 20px;
    }

    .gift-bright-moments .gift-work:has(.gift-poem-keepsake) {
        padding: 74px 12px 94px;
    }

    .gift-poem-keepsake {
        padding-top: 24px;
    }

    .gift-poem-photo {
        width: 94%;
        margin-left: -1%;
        padding: 9px 9px 34px;
        transform: rotate(-2deg);
    }

    .gift-poem-photo::after {
        right: 14px;
        bottom: 8px;
        font-size: 1.15rem;
    }

    .gift-poem-sheet {
        width: 100%;
        margin: -42px 0 0;
        padding: 132px 24px 72px;
        border-radius: 7px 22px 14px 8px;
    }

    .gift-poem-sheet::before {
        inset: 11px;
    }

    .gift-poem-ribbon {
        top: -6px;
        right: 14px;
        width: auto;
        height: 306px;
    }

    .gift-poem-floral {
        left: -18px;
        top: 70px;
        width: auto;
        height: 280px;
    }

    .gift-poem-heading {
        margin: 0 32px 0 72px;
    }

    .gift-poem-heading small {
        padding: 6px 11px;
        font-size: .68rem;
    }

    .gift-poem-heading span {
        margin-top: 22px;
        font-size: 1.18rem;
    }

    .gift-poem-heading h2 {
        font-size: clamp(2.6rem, 12vw, 3.8rem);
    }

    .gift-poem-heading i {
        margin-top: 24px;
    }

    .gift-poem-text {
        margin-top: 66px;
        font-size: 1.25rem;
        line-height: 1.8;
    }

    .gift-poem-footer-art {
        width: 112%;
        margin: 46px -16% -94px auto;
    }

    .gift-lyrics-stage {
        padding: 50px 10px 10px;
        background: linear-gradient(180deg, color-mix(in srgb, var(--paper-2) 52%, var(--paper)), var(--paper) 64px);
    }

    .gift-lyrics-stage::after {
        background: color-mix(in srgb, var(--paper-2) 52%, var(--paper));
    }

    .gift-lyrics-card {
        margin: 0;
        padding: 54px 22px;
        border-radius: 22px;
    }

    .gift-lyrics-card header {
        gap: 10px;
        margin-bottom: 36px;
    }

    .gift-lyrics-card header::before,
    .gift-lyrics-card header::after {
        width: 22px;
    }

    .gift-lyrics-card header small {
        max-width: 210px;
        font-size: .9rem;
        line-height: 1.45;
    }

    .gift-lyrics {
        font-size: 1.3rem;
        line-height: 1.75;
    }

    .gift-finale {
        min-height: 78vh;
        padding: 90px 24px;
    }

    .gift-finale-art {
        width: min(520px, 90vw);
    }

    .gift-finale p {
        margin: 28px 0;
    }

    .gift-brand-footer {
        min-height: 152px;
        padding: 48px 20px;
    }

    .gift-sound {
        right: 20px;
        bottom: 20px;
        width: 48px;
        height: 48px;
    }

    .gift-motion [data-reveal="left"] { --reveal-x: -34px; }
    .gift-motion [data-reveal="right"] { --reveal-x: 34px; }
}

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