/* ==========================================================================
   필승고딕 — 제목 글자만 서브셋
   ========================================================================== */
@font-face {
    font-family: "PilseungGothic";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../bj-fonts/PilseungGothic-subset.woff2") format("woff2"),
         url("../bj-fonts/PilseungGothic-subset.woff") format("woff");
}

/* ==========================================================================
   Base Reset & Typography
   ========================================================================== */
html {
    scroll-behavior: smooth;
    overflow-x: clip;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: "Pretendard", "Freesentation", "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;
    letter-spacing: -0.02em;
    font-display: swap;
    font-size: 1.0625rem;
    background-color: #fff;
    color: var(--grayscale-dark);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

nav {
    font-family: "Freesentation", "Pretendard", "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;
}

a {
    text-decoration: none;
    color: inherit;
    transition: all 0.3s ease;
}

ul,
ol {
    list-style: none;
}

/* ==========================================================================
   스크롤 진입 연출 — .js-reveal 없으면 노출 유지
   ========================================================================== */
.js-reveal .reveal {
    opacity: 0;
    transform: translateY(1rem);
    transition: opacity 0.5s ease, transform 0.5s ease;
    transition-delay: var(--reveal-delay, 0s);
}

.js-reveal .reveal.is-in {
    opacity: 1;
    transform: none;
}

/* --reveal-delay 는 스크립트가 주입 */

@media (prefers-reduced-motion: reduce) {
    .js-reveal .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* ==========================================================================
   Layout Helpers
   ========================================================================== */
.container {
    width: 100%;
    max-width: 67.5rem;
    margin: 0 auto;
    padding: 0 var(--s-60);
}

.container.narrow {
    max-width: 53.75rem;
}

@media (max-width: 47.9375rem) {
    .container {
        padding: 0 var(--s-40);
    }
}

.section-pad {
    /* .band-section 아래 여백과 동일 값 유지 */
    padding: clamp(1.25rem, 3.5vw, 2.25rem) 0 2.25rem;
}

.section-pad.pull-top {
    padding-top: clamp(3rem, 7vh, 4.75rem);
}

@media (min-width: 48rem) {
    .section-pad {
        padding: 2.25rem 0 3.25rem;
    }
}

.bg-sky {
    background-color: #e9f3ff;
}

.bg-gray {
    background-color: #f1f3f5;
}

/* ==========================================================================
   Animations
   ========================================================================== */
@keyframes float {
    0%, 100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-0.75rem);
    }
}

@keyframes spin-slow {
    to {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}

@keyframes burst-drift {
    0%, 100% {
        transform: translate(-50%, 30%) scale(1);
    }

    50% {
        transform: translate(-50%, 28.5%) scale(1.015);
    }
}

@keyframes tilt {
    0%, 100% {
        transform: rotate(0deg);
    }

    50% {
        transform: rotate(-6deg);
    }
}

@keyframes pop-in {
    from {
        opacity: 0;
        transform: rotate(-1.5deg) scale(0.82) translateY(0.875rem);
    }

    to {
        opacity: 1;
        transform: rotate(-1.5deg) scale(1) translateY(0);
    }
}

@keyframes bounce-down {
    0%, 100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(0.5rem);
    }
}

@media (prefers-reduced-motion: reduce) {
    .hero-headline,
    .hero-key,
    .hero-rays,
    .hero-balloons,
    .hero-popper,
    .hero-envelope,
    .hero-voucher-bubble {
        animation: none;
    }
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero-section {
    position: relative;
    z-index: 1;
    min-height: 95vh;
    min-height: 95svh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background: linear-gradient(180deg, #0a4fa8 0%, #1170d8 22%, #2b95f2 48%, #79c0fa 74%, #cfe7ff 92%, #e9f3ff 100%);
    padding: calc(var(--nav-height) + 1.5rem) 0 0;
    text-align: center;
    /* 세로 겹침 유지 — overflow:hidden 불가 */
    overflow-x: clip;
    overflow-y: visible;
}

.hero-sky {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

.hero-rays {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 160vmax;
    height: 160vmax;
    transform: translate(-50%, -50%);
    background: conic-gradient(
        from 0deg,
        rgba(255, 255, 255, 0.16) 0deg 8deg,
        transparent 8deg 24deg
    );
    opacity: 0.5;
    animation: spin-slow 90s linear infinite;
}

.hero-glow {
    position: absolute;
    left: 50%;
    top: 52%;
    width: min(51.25rem, 96vw);
    aspect-ratio: 1;
    transform: translate(-50%, -50%);
    background: radial-gradient(circle, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 62%);
}

.hero-cloud {
    position: absolute;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.5);
    filter: blur(3.125rem);
}

    .hero-cloud.c1 {
        width: 34vw;
        min-width: 13.75rem;
        aspect-ratio: 2 / 1;
        top: 18%;
        left: -6%;
    }

    .hero-cloud.c2 {
        width: 40vw;
        min-width: 15rem;
        aspect-ratio: 2.2 / 1;
        top: 8%;
        right: -8%;
    }

    .hero-cloud.c3 {
        width: 72vw;
        aspect-ratio: 3 / 1;
        bottom: 2%;
        left: 50%;
        transform: translateX(-50%);
        background-color: rgba(255, 255, 255, 0.6);
    }

/* 배경 레이어 밖 배치 불가 — 다음 섹션 침범 */
.hero-burst {
    position: absolute;
    left: 50%;
    bottom: 0;
    width: min(70rem, 122vw);
    height: auto;
    transform: translate(-50%, 30%);
    opacity: 0.9;
    animation: burst-drift 9s ease-in-out infinite;
}

.hero-decor {
    position: absolute;
    display: block;
    height: auto;
    pointer-events: none;
}

.hero-balloons {
    /* 기준 90rem 무대 — 뷰포트 기준 불가 */
    left: calc(50% - min(45rem, 50%) + clamp(-2rem, 3vw, 4rem));
    top: calc(var(--nav-height) + 1vh);
    width: min(11.875rem, 17vw);
    animation: float 7s ease-in-out infinite;
}

.hero-popper {
    right: calc(50% - min(45rem, 50%) + clamp(-1.5rem, 2vw, 3.5rem));
    top: 32%;
    width: min(13.125rem, 19vw);
    transform-origin: 70% 70%;
    animation: tilt 6s ease-in-out infinite;
}

.hero-inner {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: clamp(0.5rem, 1.6vh, 1.1rem);
}

.hero-headline {
    display: inline-block;
    transform: rotate(-1.5deg);
    animation: pop-in 0.6s cubic-bezier(0.2, 0.9, 0.3, 1.45) both;
}

.hero-title {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(0.05rem, 0.4vh, 0.25rem);
    font-family: "PilseungGothic", "SBAggro", "Pretendard", sans-serif;
    font-weight: 400;
    font-size: min(14vw, 8.8vh, 8.5rem);
    line-height: 1.02;
    letter-spacing: 0.01em;
    transform: skewY(-1.5deg);
}


.hero-title .c.tight {
    letter-spacing: -0.02em;
}

.hero-title .c {
    position: relative;
    z-index: var(--z, 1);
    display: inline-block;
    text-shadow: calc(var(--dx) * 0.01em) 0.004em 0 #0a3a78,
                 calc(var(--dx) * 0.02em) 0.008em 0 #0a3a78,
                 calc(var(--dx) * 0.03em) 0.013em 0 #0a3a78,
                 calc(var(--dx) * 0.04em) 0.017em 0 #0a3a78,
                 calc(var(--dx) * 0.05em) 0.021em 0 #0a3a78,
                 calc(var(--dx) * 0.06em) 0.025em 0 #0a3a78,
                 calc(var(--dx) * 0.07em) 0.029em 0 #0a3a78,
                 calc(var(--dx) * 0.08em) 0.034em 0 #0a3a78,
                 calc(var(--dx) * 0.09em) 0.038em 0 #0a3a78,
                 calc(var(--dx) * 0.10em) 0.042em 0 #0a3a78,
                 calc(var(--dx) * 0.11em) 0.046em 0 #0a3a78,
                 calc(var(--dx) * 0.12em) 0.050em 0 #0a3a78,
                 calc(var(--dx) * 0.13em) 0.055em 0 #0a3a78,
                 calc(var(--dx) * 0.14em) 0.059em 0 #0a3a78,
                 calc(var(--dx) * 0.15em) 0.063em 0 #0a3a78,
                 calc(var(--dx) * 0.16em) 0.067em 0 #0a3a78;
}

.hero-title .t-main {
    font-size: 1.42em;
    color: var(--system-yellow-400);
    letter-spacing: 0.03em;
    -webkit-text-stroke: 0.05em #0a3a78;
    paint-order: stroke fill;
    filter: drop-shadow(0 0.1em 0.7rem rgba(4, 34, 78, 0.5));
}

.hero-title .t-tail {
    font-size: 0.86em;
    letter-spacing: 0.02em;
    color: var(--grayscale-white);
    filter: drop-shadow(0 0.07em 0.5rem rgba(4, 34, 78, 0.45));
}

    .hero-title .t-tail em {
        font-style: normal;
        color: var(--system-yellow-400);
    }

.hero-key {
    container-type: inline-size;
    position: relative;
    z-index: 4;
    display: flex;
    justify-content: center;
    width: min(30rem, 44vw, 34vh);
    margin: clamp(2rem, 5vh, 3.5rem) auto clamp(-2rem, -3vh, -0.75rem);
    animation: float 6s ease-in-out infinite;
}

.hero-envelope {
    position: relative;
    z-index: 1;
    display: block;
    width: 100%;
    height: auto;
    filter: drop-shadow(0 0.75rem 1rem rgba(12, 52, 112, 0.3));
}

.hero-logo-badge {
    position: absolute;
    left: 53%;
    top: 62%;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56%;
    padding: clamp(0.6rem, 1.8vh, 1.6rem) clamp(1rem, 3vw, 1.6rem);
    border-radius: 62.5rem;
    background-image: linear-gradient(180deg, var(--baljugo-primary-500) 0%, var(--baljugo-primary-700) 100%);
    box-shadow: inset 0 0.0625rem 0 rgba(255, 255, 255, 0.45),
                0 0.2rem 0.35rem -0.15rem rgba(4, 34, 78, 0.45),
                0 1rem 1.6rem -0.55rem rgba(4, 34, 78, 0.55);
    transform: translate(-50%, -50%) rotate(-3deg);
}

    .hero-logo-badge img {
        display: block;
        width: 100%;
        height: auto;
    }

/* ==========================================================================
   봉투 주변 말풍선
   ========================================================================== */
.hero-say-bubble,
.hero-voucher-bubble,
.hero-benefit-bubble {
    position: absolute;
    z-index: 3;
    border-radius: 0.875rem;
    background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0) 60%);
    box-shadow: inset 0 0.0625rem 0 rgba(255, 255, 255, 0.65),
                0 0.2rem 0.35rem -0.15rem rgba(4, 34, 78, 0.42),
                0 1rem 1.6rem -0.55rem rgba(4, 34, 78, 0.52);
}

.hero-say-bubble::before,
.hero-say-bubble::after,
.hero-voucher-bubble::before,
.hero-voucher-bubble::after,
.hero-benefit-bubble::before,
.hero-benefit-bubble::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    background-color: inherit;
    background-image: inherit;
}

.hero-say-bubble::before,
.hero-voucher-bubble::before,
.hero-benefit-bubble::before {
    width: 0.8rem;
    height: 0.8rem;
}

.hero-say-bubble::after,
.hero-voucher-bubble::after,
.hero-benefit-bubble::after {
    width: 0.38rem;
    height: 0.38rem;
}

.hero-voucher-bubble,
.hero-benefit-bubble {
    display: flex;
    align-items: center;
    gap: clamp(0.45rem, 1.4vw, 0.65rem);
    padding: clamp(0.5rem, 1.5vh, 0.75rem) clamp(0.75rem, 2vw, 1.1rem);
}

    .hero-voucher-bubble .ico,
    .hero-benefit-bubble .ico {
        flex-shrink: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        width: clamp(1.6rem, min(4.4vw, 3.75vh), 2.9rem);
        height: clamp(1.6rem, min(4.4vw, 3.75vh), 2.9rem);
        border-radius: 50%;
    }

        .hero-voucher-bubble .ico svg,
        .hero-benefit-bubble .ico svg {
            width: 60%;
            height: 60%;
        }

    .hero-voucher-bubble .txt,
    .hero-benefit-bubble .txt {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 0.05rem;
    }

    .hero-voucher-bubble .who,
    .hero-benefit-bubble .who {
        font-size: min(2.4vw, 1.45vh, 1rem);
        font-weight: 700;
        opacity: 0.78;
        white-space: nowrap;
    }

    .hero-voucher-bubble .amount,
    .hero-benefit-bubble .amount {
        font-size: min(4vw, 2.4vh, 1.875rem);
        font-weight: 800;
        line-height: 1.08;
        letter-spacing: -0.02em;
        white-space: nowrap;
    }

    .hero-voucher-bubble .label,
    .hero-benefit-bubble .label {
        font-size: min(2.3vw, 1.4vh, 1rem);
        font-weight: 600;
        opacity: 0.66;
        white-space: nowrap;
    }

    .hero-voucher-bubble .note,
    .hero-benefit-bubble .note {
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
        bottom: -1.9rem;
        font-size: min(2vw, 1.2vh, 0.875rem);
        font-weight: 600;
        line-height: 1.3;
        color: inherit;
        white-space: nowrap;
    }

.hero-voucher-bubble {
    right: -26%;
    top: 30%;
    background-color: var(--system-yellow-400);
    color: #4a3300;
    transform: rotate(3deg);
}

    .hero-voucher-bubble .ico {
        background-color: rgba(0, 0, 0, 0.14);
    }

    .hero-voucher-bubble::before {
        left: -0.45rem;
        bottom: 0.9rem;
    }

    .hero-voucher-bubble::after {
        left: -1rem;
        bottom: 0.35rem;
    }

.hero-benefit-bubble {
    left: -20%;
    bottom: -2%;
    background-color: var(--grayscale-white);
    color: var(--baljugo-primary-700);
    transform: rotate(-3deg);
}

    .hero-benefit-bubble .ico {
        background-color: var(--baljugo-primary-50);
    }

    .hero-benefit-bubble .label {
        color: var(--grayscale-600);
    }

    .hero-benefit-bubble::before {
        right: 1.3rem;
        top: -0.45rem;
    }

    .hero-benefit-bubble::after {
        right: 0.75rem;
        top: -0.95rem;
    }

.hero-say-bubble {
    left: -24%;
    top: 6%;
    max-width: 12.5em;
    padding: clamp(0.55rem, 1.6vh, 0.85rem) clamp(0.75rem, 2vw, 1.1rem);
    background-color: var(--grayscale-white);
    color: var(--grayscale-dark);
    font-size: min(2.8vw, 1.75vh, 1.25rem);
    font-weight: 600;
    line-height: 1.45;
    text-align: left;
    word-break: keep-all;
    transform: rotate(-2deg);
}

    .hero-say-bubble::before {
        right: 1.4rem;
        bottom: -0.45rem;
    }

    .hero-say-bubble::after {
        right: 0.85rem;
        bottom: -0.95rem;
    }

@media (max-width: 35rem) {
    .hero-say-bubble {
        left: -12%;
        top: 14%;
        font-size: 0.75rem;
    }

    .hero-benefit-bubble {
        left: -10%;
        bottom: -4%;
    }
}

/* ==========================================================================
   말풍선 크기는 봉투(.hero-key) 폭에 종속 필요 — 뷰포트 기준 불가(좁은 화면 겹침).
   미지원 브라우저는 위 선언 유지
   ========================================================================== */
@supports (container-type: inline-size) {
    .hero-say-bubble,
    .hero-voucher-bubble,
    .hero-benefit-bubble {
        border-radius: 4.6cqw;
    }

    .hero-say-bubble::before,
    .hero-voucher-bubble::before,
    .hero-benefit-bubble::before {
        width: 4.2cqw;
        height: 4.2cqw;
    }

    .hero-say-bubble::after,
    .hero-voucher-bubble::after,
    .hero-benefit-bubble::after {
        width: 2cqw;
        height: 2cqw;
    }

    .hero-voucher-bubble,
    .hero-benefit-bubble {
        gap: 3.4cqw;
        padding: 3.9cqw 5.75cqw;
    }

        .hero-voucher-bubble .ico,
        .hero-benefit-bubble .ico {
            width: 11cqw;
            height: 11cqw;
        }

        .hero-voucher-bubble .who,
        .hero-benefit-bubble .who {
            font-size: 4.3cqw;
        }

        .hero-voucher-bubble .amount,
        .hero-benefit-bubble .amount {
            font-size: 7.1cqw;
        }

        .hero-voucher-bubble .label,
        .hero-benefit-bubble .label {
            font-size: 4.1cqw;
        }

        .hero-voucher-bubble .note,
        .hero-benefit-bubble .note {
            bottom: -6.6cqw;
            font-size: 3.6cqw;
        }

    .hero-say-bubble {
        max-width: 12.5em;
        padding: 4.4cqw 5.75cqw;
        font-size: 5.15cqw;
    }

    .hero-voucher-bubble::before { left: -2.35cqw; bottom: 4.7cqw; }
    .hero-voucher-bubble::after  { left: -5.2cqw;  bottom: 1.85cqw; }
    .hero-benefit-bubble::before { right: 6.8cqw;  top: -2.35cqw; }
    .hero-benefit-bubble::after  { right: 3.9cqw;  top: -5cqw; }
    .hero-say-bubble::before     { right: 7.3cqw;  bottom: -2.35cqw; }
    .hero-say-bubble::after      { right: 4.4cqw;  bottom: -5cqw; }

    @media (max-width: 35rem) {
        .hero-say-bubble {
            max-width: 12.5em;
            font-size: 5.15cqw;
        }
    }
}

.hero-cta {
    display: inline-flex;
    align-items: center;
    gap: var(--s-30);
    margin-top: clamp(0.25rem, 1.2vh, 0.75rem);
    padding: clamp(0.8rem, 1.9vh, 1.15rem) clamp(1.75rem, 6vw, 2.75rem);
    border-radius: 62.5rem;
    background-color: var(--grayscale-white);
    color: var(--baljugo-primary-700);
    font-size: min(4vw, 2.4vh, 1.625rem);
    font-weight: 800;
    letter-spacing: -0.02em;
    white-space: nowrap;
    box-shadow: 0 1rem 1.875rem -0.875rem rgba(8, 48, 105, 0.6);
    transition: transform 0.25s ease, box-shadow 0.25s ease, color 0.25s ease;
}

    .hero-cta:hover,
    .hero-cta:focus-visible {
        transform: translateY(-0.1875rem);
        color: var(--baljugo-primary-800);
        box-shadow: 0 1.375rem 2.25rem -1rem rgba(8, 48, 105, 0.7);
    }

.hero-wave {
    position: absolute;
    left: 0;
    bottom: -2px;
    width: 100%;
    height: clamp(1.625rem, 5vh, 3.25rem);
    z-index: 2;
}

    .hero-wave path {
        fill: #e9f3ff;
    }

@media (max-width: 40rem) {
    .hero-balloons {
        left: -1.5rem;
        width: 30vw;
    }

    .hero-popper {
        right: -1.5rem;
        top: 30%;
        width: 32vw;
    }

    .hero-key {
        width: min(76vw, 34vh);
        margin-top: clamp(3.5rem, 9vh, 5rem);
    }

    .hero-voucher-bubble {
        right: -16%;
        top: 30%;
    }
}

@media (max-height: 35rem) {
    .hero-balloons,
    .hero-popper {
        display: none;
    }

    .hero-section {
        padding-top: calc(var(--nav-height) + 0.75rem);
    }
}

/* ==========================================================================
   Section 1 — 이벤트 홍보
   ========================================================================== */
.promo-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2.5rem;
}

@media (min-width: 48rem) {
    .promo-inner {
        flex-direction: row;
        align-items: center;
        gap: 3rem;
    }
}

.promo-content {
    flex: 1 1 46%;
    min-width: 0;
    width: 100%;
}

.promo-side {
    flex: 1 1 50%;
    min-width: 0;
    width: 100%;
}

.promo-eyebrow {
    font-size: var(--font-size-dl);
    color: var(--grayscale-700);
    font-weight: 600;
    line-height: 1.4;
    margin-bottom: var(--s-25);
    word-break: keep-all;
}

    .promo-eyebrow strong {
        color: var(--baljugo-primary-600);
        font-weight: 800;
    }

.promo-stats {
    display: flex;
    gap: var(--s-30);
    margin-top: clamp(1.25rem, 3vw, 1.75rem);
}

.promo-stat {
    flex: 1;
    min-width: 0;
    padding: var(--s-50) var(--s-30);
    border-radius: 0.75rem;
    background-color: var(--grayscale-white);
    text-align: center;
    box-shadow: 0 0.5rem 1.2rem -0.7rem rgba(4, 34, 78, 0.3);
}

    .promo-stat .num {
        font-size: 1.375rem;
        font-weight: 800;
        line-height: 1.1;
        letter-spacing: -0.02em;
        color: var(--baljugo-primary-600);
    }

@media (min-width: 48rem) {
    .promo-stat .num {
        font-size: 1.5rem;
    }
}

    .promo-stat .cap {
        margin-top: var(--s-10);
        font-size: var(--font-size-xs);
        font-weight: 600;
        color: var(--grayscale-500);
        word-break: keep-all;
    }

.promo-title {
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.35;
    color: var(--grayscale-dark);
    margin-bottom: 2rem;
    word-break: keep-all;
}

@media (min-width: 48rem) {
    .promo-title {
        font-size: 2rem;
    }
}

.quote-list {
    display: flex;
    flex-direction: column;
    gap: var(--s-50);
}

.quote-item {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-30);
    padding: var(--s-50) var(--s-60);
    border-radius: 0.875rem;
    background-color: var(--grayscale-white);
    background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0) 60%);
    box-shadow: inset 0 0.0625rem 0 rgba(255, 255, 255, 0.7),
                0 0.2rem 0.35rem -0.15rem rgba(4, 34, 78, 0.22),
                0 0.9rem 1.4rem -0.6rem rgba(4, 34, 78, 0.32);
    font-size: var(--font-size-md);
    font-weight: 600;
    color: var(--grayscale-800);
    word-break: keep-all;
}

@media (min-width: 48rem) {
    .quote-item {
        font-size: 1.0625rem;
    }
}

    .quote-item::before,
    .quote-item::after {
        content: "";
        position: absolute;
        border-radius: 50%;
        background-color: var(--grayscale-white);
    }

    .quote-item::before {
        left: 1.6rem;
        bottom: -0.35rem;
        width: 0.7rem;
        height: 0.7rem;
    }

    .quote-item::after {
        left: 1.1rem;
        bottom: -0.8rem;
        width: 0.34rem;
        height: 0.34rem;
    }

    .quote-item .who {
        flex-shrink: 0;
        display: inline-flex;
        align-items: center;
        padding: 0.25em 0.7em;
        border-radius: 62.5rem;
        background-color: var(--baljugo-primary-50);
        color: var(--baljugo-primary-700);
        font-size: var(--font-size-xs);
        font-weight: 700;
        white-space: nowrap;
    }

    .quote-item .body {
        display: flex;
        flex-direction: column;
        gap: var(--s-05);
        min-width: 0;
    }

    .quote-item .metric {
        font-size: var(--font-size-xs);
        font-weight: 700;
        color: var(--baljugo-primary-600);
    }

.promo-figure {
    width: min(100%, 18rem);
    margin: clamp(1.75rem, 4.5vw, 2.5rem) auto 0;
}

    .promo-figure img {
        display: block;
        width: 100%;
        max-width: 100%;
        height: auto;
        filter: drop-shadow(0 0.75rem 1rem rgba(12, 52, 112, 0.18));
    }

@media (max-width: 47.9375rem) {
    .promo-figure {
        width: min(100%, 15rem);
    }
}

/* ==========================================================================
   Section 2 — 감사 인사 띠배너
   ========================================================================== */
.band-section {
    padding: clamp(1.25rem, 3.5vw, 2.25rem) 0;
    background-color: #e9f3ff;
}

.band-card {
    position: relative;
    overflow: hidden;
    padding: clamp(2rem, 6vw, 3.25rem) clamp(1.25rem, 5vw, 3rem);
    border-radius: 0.75rem;
    background: linear-gradient(135deg, var(--baljugo-primary-700) 0%, var(--baljugo-primary-500) 55%, #4aa3f0 100%);
    box-shadow: 0 1.25rem 2.5rem -1.25rem rgba(4, 34, 78, 0.65);
    text-align: center;
}

.band-ribbon {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 120%;
    height: auto;
    transform: translate(-50%, -50%);
    opacity: 0.22;
    pointer-events: none;
}

.band-card::before,
.band-card::after {
    content: "";
    position: absolute;
    width: 18rem;
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.28) 0%, rgba(255, 255, 255, 0) 65%);
    pointer-events: none;
}

.band-card::before {
    left: -6rem;
    top: -8rem;
}

.band-card::after {
    right: -6rem;
    bottom: -8rem;
}

.band-inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(0.5rem, 2vw, 0.9rem);
}

.band-text {
    color: var(--grayscale-white);
    font-size: clamp(1.25rem, 4.6vw, 2rem);
    font-weight: 800;
    line-height: 1.4;
    letter-spacing: -0.03em;
    word-break: keep-all;
    text-shadow: 0 0.25rem 1rem rgba(4, 34, 78, 0.4);
}

    .band-text .hl {
        position: relative;
        display: inline-block;
        padding: 0 0.15em;
        z-index: 1;
    }

        .band-text .hl::after {
            content: "";
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0.1em;
            height: 0.36em;
            border-radius: 0.125rem;
            background-color: rgba(255, 194, 17, 0.85);
            z-index: -1;
        }

.band-sub {
    color: #d7e9ff;
    font-size: clamp(0.875rem, 3vw, 1.0625rem);
    font-weight: 500;
    word-break: keep-all;
}

/* ==========================================================================
   Section 3 — 혜택 · 참여 방법 카드
   ========================================================================== */
.event-card {
    background-color: var(--grayscale-white);
    border-radius: 0.75rem;
    box-shadow: 0 1rem 2.125rem -1.625rem rgba(20, 61, 123, 0.5);
    padding: 2.5rem 1.25rem;
}

@media (min-width: 48rem) {
    .event-card {
        padding: 3.5rem 3rem;
    }
}

.event-card + .event-card {
    margin-top: 2rem;
}

.event-card-head {
    text-align: center;
    margin-bottom: 2.5rem;
}

.event-card-eyebrow {
    margin-bottom: var(--s-10);
    font-size: 1.0625rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--grayscale-600);
    word-break: keep-all;
}

@media (min-width: 48rem) {
    .event-card-eyebrow {
        font-size: 1.1875rem;
    }
}

    .event-card-eyebrow .accent {
        color: var(--baljugo-primary-600);
    }

.event-card-title {
    font-size: 1.75rem;
    font-weight: 800;
    line-height: 1.22;
    color: var(--grayscale-dark);
    word-break: keep-all;
}

@media (min-width: 48rem) {
    .event-card-title {
        font-size: 2.25rem;
    }
}

    .event-card-title .accent {
        color: var(--baljugo-primary-600);
    }

    .event-card-title.underline {
        color: var(--baljugo-primary-600);
        display: inline-block;
        padding-bottom: var(--s-20);
        border-bottom: 0.25rem solid var(--baljugo-primary-600);
    }

.event-card-sub {
    margin-top: var(--s-10);
    font-size: 1.0625rem;
    color: var(--grayscale-600);
    word-break: keep-all;
    line-height: 1.55;
}

@media (min-width: 48rem) {
    .event-card-sub {
        font-size: 1.25rem;
    }
}

    .event-card-sub strong {
        color: var(--grayscale-dark);
        font-weight: 700;
    }

.benefit-split {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

@media (min-width: 48rem) {
    .benefit-split {
        flex-direction: row;
        gap: 0;
    }
}

.benefit-item {
    flex: 1;
    text-align: center;
    padding: 0 var(--s-40);
}

@media (min-width: 48rem) {
    .benefit-item + .benefit-item {
        border-left: 1px solid var(--grayscale-100);
    }
}

.benefit-figure {
    position: relative;
    width: 100%;
    max-width: 10rem;
    margin: 0 auto clamp(1.5rem, 4vw, 2rem);
}

.benefit-role {
    position: absolute;
    z-index: 2;
    left: 50%;
    bottom: -0.75rem;
    transform: translateX(-50%);
    padding: var(--s-30) var(--s-60);
    border-radius: 62.5rem;
    background-color: var(--baljugo-primary-500);
    color: var(--grayscale-white);
    font-size: var(--font-size-md);
    font-weight: 700;
    white-space: nowrap;
    box-shadow: 0 0.5rem 1rem -0.5rem rgba(4, 34, 78, 0.55);
}

.benefit-copy {
    font-size: 1.0625rem;
    color: var(--grayscale-800);
    line-height: 1.5;
    word-break: keep-all;
}

@media (min-width: 48rem) {
    .benefit-copy {
        font-size: 1.25rem;
    }
}

    .benefit-copy strong {
        display: block;
        font-size: 1.5rem;
        font-weight: 800;
        color: var(--baljugo-primary-600);
    }

@media (min-width: 48rem) {
    .benefit-copy strong {
        font-size: 1.875rem;
    }
}

.benefit-visual {
    /* 비율이 달라 공통 높이 상자 필요 */
    display: flex;
    align-items: flex-end;
    justify-content: center;
    width: 100%;
    max-width: 7.5rem;
    aspect-ratio: 1 / 1.1;
    margin: clamp(1rem, 3vw, 1.5rem) auto clamp(0.75rem, 2.5vw, 1.25rem);
}

@media (min-width: 48rem) {
    .benefit-visual {
        max-width: 8.5rem;
    }
}

.benefit-visual.is-voucher {
    position: relative;
    align-items: center;
}

    .benefit-visual.is-voucher::before {
        content: "";
        position: absolute;
        left: 50%;
        top: 50%;
        width: 150%;
        aspect-ratio: 1;
        transform: translate(-50%, -50%);
        background: radial-gradient(circle,
                    rgba(255, 216, 102, 0.42) 0%,
                    rgba(255, 216, 102, 0.14) 48%,
                    rgba(255, 216, 102, 0) 72%);
    }

    /* 흐름 배치 불가 — 옆 칸과 줄 어긋남 */
    .benefit-visual .voucher-card {
        position: absolute;
        left: 50%;
        bottom: 8%;
        width: 126%;
        height: auto;
        transform: translateX(-50%);
        filter: drop-shadow(0 0.5rem 0.7rem rgba(12, 52, 112, 0.28));
    }

    .benefit-visual img,
    .benefit-visual svg {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: contain;
        object-position: bottom center;
    }

.step-flow {
    display: flex;
    flex-direction: column;
    gap: var(--s-50);
}

.step-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-60);
    padding: var(--s-60) var(--s-65);
    border-radius: 0.5rem;
    background-color: #f7f9fb;
    border: 1px solid #eceff3;
}

.step-copy {
    text-align: left;
}

.step-num {
    display: block;
    font-size: var(--font-size-md);
    font-weight: 800;
    color: var(--baljugo-primary-600);
    letter-spacing: 0.02em;
    margin-bottom: var(--s-10);
}

.step-text {
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--grayscale-dark);
    word-break: keep-all;
    line-height: 1.45;
}

@media (min-width: 48rem) {
    .step-text {
        font-size: 1.1875rem;
    }
}

.step-icon {
    flex-shrink: 0;
    width: 3rem;
    height: 3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.5rem;
    background-color: var(--baljugo-primary-50);
    color: var(--baljugo-primary-600);
}

    .step-icon svg {
        width: 1.625rem;
        height: 1.625rem;
    }

/* ==========================================================================
   Section 4 — 신청 폼
   ========================================================================== */
.form-section {
    padding: clamp(1.5rem, 4vw, 2.5rem) 0;
}

.form-box {
    width: 100%;
    max-width: 44rem;
    margin: 0 auto;
    border-radius: 0.75rem;
    background-color: var(--grayscale-white);
    box-shadow: 0 1rem 2.1rem -1.6rem rgba(20, 61, 123, 0.5);
    overflow: hidden;
}

.form-head {
    padding: clamp(1.5rem, 4vw, 2.25rem) clamp(1.25rem, 4vw, 2.5rem) clamp(1rem, 3vw, 1.5rem);
    border-bottom: 1px solid var(--grayscale-100);
    text-align: center;
}

.form-title {
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.25;
    color: var(--grayscale-dark);
    word-break: keep-all;
}

@media (min-width: 48rem) {
    .form-title {
        font-size: 1.875rem;
    }
}

.form-desc {
    margin-top: var(--s-10);
    line-height: 1.5;
    font-size: var(--font-size-md);
    color: var(--grayscale-500);
    word-break: keep-all;
}

.inquiry-form {
    display: flex;
    flex-direction: column;
    gap: clamp(1.25rem, 3vw, 1.75rem);
    padding: clamp(1.5rem, 4vw, 2.5rem);
}

.form-cols {
    display: flex;
    flex-direction: column;
    gap: var(--s-65);
}

@media (min-width: 48rem) {
    .form-cols {
        flex-direction: row;
        gap: var(--s-60);
    }
}

.form-col {
    flex: 1;
    min-width: 0;
    padding: clamp(1rem, 3vw, 1.35rem);
    border-radius: 0.5rem;
    background-color: #f7f9fb;
    border: 1px solid #e8edf3;
}

    .form-col.is-sender {
        background-color: var(--baljugo-primary-50);
        border-color: #cfe1fb;
    }

.form-col-title {
    display: flex;
    align-items: center;
    gap: var(--s-30);
    margin-bottom: var(--s-50);
    font-size: var(--font-size-md);
    font-weight: 700;
    color: var(--grayscale-dark);
}

    .form-col-title svg {
        width: 1.25rem;
        height: 1.25rem;
        color: var(--baljugo-primary-600);
    }

.field {
    margin-bottom: var(--s-50);
}

    .field:last-child {
        margin-bottom: 0;
    }

.field-label {
    display: block;
    margin-bottom: var(--s-25);
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--grayscale-700);
}

.required {
    color: var(--system-red-500);
}

.field-input {
    width: 100%;
    padding: var(--s-40) var(--s-50);
    border: 1px solid #dde4ec;
    border-radius: 0.375rem;
    background-color: var(--grayscale-white);
    outline: none;
    font-family: inherit;
    font-size: var(--font-size-md);
    color: var(--grayscale-900);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

    .field-input::placeholder {
        color: var(--grayscale-300);
    }

    .field-input:focus {
        border-color: var(--baljugo-primary-500);
        box-shadow: 0 0 0 0.1875rem rgba(var(--baljugo-primary-500-rgb), 0.22);
    }

textarea.field-input {
    min-height: 6.5rem;
    resize: vertical;
    line-height: 1.6;
}

.field.is-valid .field-input {
    border-color: var(--system-green-600);
}

.field.is-error .field-input {
    border-color: var(--system-red-500);
    background-color: rgba(var(--system-red-50-rgb), 0.35);
}

    .field.is-error .field-input:focus {
        box-shadow: 0 0 0 0.1875rem rgba(217, 52, 0, 0.18);
    }

.field-hint {
    font-size: var(--font-size-xs);
    color: var(--grayscale-400);
}

.field-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-30);
    margin-top: var(--s-20);
}

.field-count {
    font-size: var(--font-size-xs);
    color: var(--grayscale-400);
    font-variant-numeric: tabular-nums;
}

    .field-count.is-full {
        color: var(--system-red-500);
        font-weight: 700;
    }

.agree-group {
    display: flex;
    flex-direction: column;
    gap: var(--s-40);
    padding: var(--s-50) var(--s-60);
    border-radius: 0.5rem;
    background-color: #f7f9fb;
    border: 1px solid #e8edf3;
}

.form-agree.is-error label {
    color: var(--system-red-500);
}

.form-agree.is-error input[type="checkbox"] {
    outline: 0.125rem solid var(--system-red-500);
    outline-offset: 0.125rem;
}

.form-agree {
    display: flex;
    align-items: flex-start;
    gap: var(--s-35);
    font-size: var(--font-size-sm);
    color: var(--grayscale-600);
}

    .form-agree + .form-agree {
        padding-top: var(--s-40);
        border-top: 1px solid #e8edf3;
    }

    .form-agree input[type="checkbox"] {
        margin-top: 0.15rem;
        width: 1.15rem;
        height: 1.15rem;
        accent-color: var(--baljugo-primary-500);
        cursor: pointer;
        flex-shrink: 0;
    }

    .form-agree label {
        cursor: pointer;
        word-break: keep-all;
        line-height: 1.5;
    }

.modal-link {
    padding: 0;
    border: none;
    background: none;
    color: var(--baljugo-primary-700);
    font-family: inherit;
    font-size: inherit;
    font-weight: 700;
    text-decoration: underline;
    cursor: pointer;
}

    .modal-link:hover {
        color: var(--baljugo-primary-800);
    }

.submit-btn {
    width: 100%;
    padding: var(--s-60);
    border: none;
    border-radius: 0.375rem;
    background-color: var(--baljugo-primary-600);
    color: var(--grayscale-white);
    font-family: inherit;
    font-size: var(--font-size-dl);
    font-weight: 800;
    letter-spacing: -0.02em;
    cursor: pointer;
    box-shadow: 0 0.75rem 1.25rem -0.75rem rgba(var(--baljugo-primary-500-rgb), 0.8);
    transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

    .submit-btn:hover,
    .submit-btn:focus-visible {
        background-color: var(--baljugo-primary-700);
        transform: translateY(-0.125rem);
        box-shadow: 0 1rem 1.75rem -0.875rem rgba(var(--baljugo-primary-500-rgb), 0.9);
    }

    .submit-btn:disabled {
        background-color: var(--grayscale-300);
        box-shadow: none;
        transform: none;
        cursor: not-allowed;
    }

/* ==========================================================================
   Privacy Modal
   ========================================================================== */
.modal-overlay {
    position: fixed;
    inset: 0;
    /* 공통 헤더(z-index 10001)보다 위 필요 */
    z-index: 10100;
    background-color: rgba(var(--grayscale-900-rgb), 0.6);
    -webkit-backdrop-filter: blur(0.25rem);
    backdrop-filter: blur(0.25rem);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
}

    .modal-overlay.show {
        opacity: 1;
        visibility: visible;
    }

.modal-content {
    background-color: var(--grayscale-white);
    width: 90%;
    max-width: 32rem;
    border-radius: 0.75rem;
    padding: 2rem;
    box-shadow: 0 1.5625rem 3.125rem -0.75rem rgba(0, 0, 0, 0.25);
    transform: translateY(1rem);
    transition: transform 0.3s ease;
}

.modal-overlay.show .modal-content {
    transform: translateY(0);
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.5rem;
}

    .modal-header h3 {
        font-size: 1.25rem;
        font-weight: 700;
        color: var(--grayscale-900);
    }

.modal-close {
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--grayscale-50);
    border: none;
    border-radius: 50%;
    color: var(--grayscale-500);
    cursor: pointer;
    transition: background-color 0.3s ease;
    flex-shrink: 0;
}

    .modal-close:hover {
        background-color: var(--grayscale-100);
    }

    .modal-close svg {
        width: 1.25rem;
        height: 1.25rem;
    }

.modal-body {
    max-height: 60vh;
    overflow-y: auto;
    padding-right: 0.5rem;
}

    .modal-body::-webkit-scrollbar {
        width: 0.375rem;
    }

    .modal-body::-webkit-scrollbar-thumb {
        background-color: var(--grayscale-200);
        border-radius: 0.1875rem;
    }

    .modal-body p {
        font-size: var(--font-size-sm);
        color: var(--grayscale-600);
        margin-bottom: 1rem;
        line-height: 1.5;
        word-break: keep-all;
    }

        .modal-body p strong {
            display: block;
            color: var(--grayscale-800);
            margin-bottom: 0.25rem;
        }

.modal-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 1rem;
    font-size: var(--font-size-sm);
}

    .modal-table th,
    .modal-table td {
        border: 1px solid var(--grayscale-100);
        padding: var(--s-30);
        text-align: left;
        color: var(--grayscale-600);
        word-break: keep-all;
        line-height: 1.5;
    }

    .modal-table th {
        background-color: var(--grayscale-50);
        color: var(--grayscale-800);
        font-weight: 700;
        white-space: nowrap;
    }

.modal-footer-text {
    padding-top: 1rem;
    border-top: 1px solid var(--grayscale-100);
    color: var(--grayscale-500) !important;
}

/* ==========================================================================
   Section 5 — 안내 및 유의사항
   ========================================================================== */
.footer-notice {
    background-color: #3f4247;
    padding: 1.625rem 0;
}

.footer-notice-title {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--grayscale-white);
    margin-bottom: var(--s-50);
}

.footer-notice-list {
    display: flex;
    flex-direction: column;
    gap: var(--s-30);
}

    .footer-notice-list li {
        position: relative;
        padding-left: var(--s-40);
        font-size: var(--font-size-xs);
        color: var(--grayscale-200);
        line-height: 1.6;
        word-break: keep-all;
    }

@media (min-width: 48rem) {
    .footer-notice-list li {
        font-size: var(--font-size-sm);
    }
}

        .notice-example {
            display: block;
            margin-top: var(--s-20);
            padding-left: var(--s-30);
            color: var(--grayscale-400);
        }

        .footer-notice-list li::before {
            content: "·";
            position: absolute;
            left: var(--s-10);
            color: var(--grayscale-300);
        }
