:root {
    --km-family-page-text: #5f523e;
    --km-family-page-muted: #8f7d62;
    --km-family-page-gold: #a8864b;
    --km-family-page-line: rgba(120, 92, 48, .16);
    --km-family-page-paper: #fbf7ed;
}

html {
    scroll-behavior: smooth;
}

.km-family-page,
.km-family-page * {
    box-sizing: border-box;
}

.km-family-page {
    overflow: hidden;
    color: var(--km-family-page-text);
    background: var(--km-family-page-paper);
}

.km-family-page-wrap {
    width: min(1080px, calc(100% - 48px));
    margin: 0 auto;
}


/* =========================================================
   OPENING
   ========================================================= */

.km-family-page-hero {
    position: relative;

    min-height: calc(100svh - 82px);

    display: grid;
    place-items: center;

    overflow: hidden;
    isolation: isolate;

    background:
        radial-gradient(
            circle at 50% 46%,
            rgba(255,255,255,1) 0%,
            rgba(255,255,255,.96) 8%,
            rgba(255,252,244,.88) 19%,
            rgba(249,239,215,.86) 36%,
            rgba(247,231,198,.94) 68%,
            #f1dcac 100%
        );
}

.km-family-page-hero::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 47%;

    width: min(560px, 78vw);
    aspect-ratio: 1.55 / 1;

    transform: translate(-50%, -50%);
    border-radius: 50%;

    background: rgba(255,255,255,.92);
    filter: blur(36px);

    z-index: -1;

    animation:
        kmFamilyPageHalo 3.6s ease-in-out both;
}

.km-family-page-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;

    opacity: .42;

    background-image:
        radial-gradient(circle at 9% 74%, rgba(184,132,45,.60) 0 1px, transparent 1.3px),
        radial-gradient(circle at 24% 30%, rgba(184,132,45,.32) 0 1px, transparent 1.3px),
        radial-gradient(circle at 39% 65%, rgba(184,132,45,.38) 0 1px, transparent 1.3px),
        radial-gradient(circle at 62% 28%, rgba(184,132,45,.42) 0 1px, transparent 1.3px),
        radial-gradient(circle at 76% 69%, rgba(184,132,45,.54) 0 1px, transparent 1.3px),
        radial-gradient(circle at 91% 37%, rgba(184,132,45,.38) 0 1px, transparent 1.3px);
}
.km-family-page-hero-inner {
    position: relative;
    top: -14vh;
    z-index: 2;

    width: min(680px, calc(100% - 40px));

    text-align: center;

    animation:
        kmFamilyPageOpening 1.6s ease both;
}

.km-family-page-logo-halo {
    position: relative;
    width: min(270px, 54vw);
    margin: 0 auto;
}

.km-family-page-logo-halo::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;

    width: 138%;
    height: 120%;

    transform: translate(-50%, -50%);
    border-radius: 50%;

    background: rgba(255,255,255,.92);
    filter: blur(26px);

    z-index: -1;
}

.km-family-page-logo {
    display: block;
    width: 100%;
    height: auto;

    opacity: .92;

    animation:
        kmFamilyPageLogo 3.5s ease .15s both;
}
.km-family-page-brand {
    margin: 24px 0 0;

    color: #92703c;

    font-family:
        "Times New Roman",
        serif;

    font-size: clamp(18px, 2.1vw, 24px);
    font-weight: 400;

    letter-spacing: .38em;

    animation:
        kmFamilyPageBrand 1.8s ease .35s both;
}

.km-family-page-hero-description {
    max-width: 540px;

    margin: 24px auto 0;

    color: #8b7655;

    font-size: 13px;
    line-height: 2;

    letter-spacing: .04em;

    opacity: 0;

    animation:
        kmFamilyPageDescription 1.5s ease .75s forwards;
}

.km-family-page-scroll {
    display: inline-flex;

    width: 42px;
    height: 42px;

    align-items: center;
    justify-content: center;

    margin-top: 30px;

    text-decoration: none;
}

.km-family-page-scroll span {
    display: block;

    width: 13px;
    height: 13px;

    border-right: 1px solid rgba(143,110,55,.68);
    border-bottom: 1px solid rgba(143,110,55,.68);

    transform: rotate(45deg);

    animation:
        kmFamilyPageScroll 1.8s ease-in-out infinite;
}

@keyframes kmFamilyPageScroll {
    0%,
    100% {
        opacity: .3;
        transform:
            translateY(-3px)
            rotate(45deg);
    }

    50% {
        opacity: 1;
        transform:
            translateY(4px)
            rotate(45deg);
    }
}


/* =========================================================
   INTRO
   ========================================================= */

.km-family-page-intro {
    padding: 140px 0 132px;

    background:
        radial-gradient(
            circle at 50% 0%,
            rgba(255,255,255,.96),
            transparent 56%
        ),
        #f8f5ee;
}

.km-family-page-kicker {
    margin: 0 0 20px;

    color: #a17f45;

    font-family:
        "Times New Roman",
        serif;

    font-size: 10px;
    letter-spacing: .38em;
}

.km-family-page-title {
    margin: 0;

    font-family:
        "Yu Mincho",
        "Hiragino Mincho ProN",
        "Times New Roman",
        serif;

    font-size: clamp(34px, 5vw, 56px);
    font-weight: 400;
    line-height: 1.6;
    letter-spacing: .06em;
}

.km-family-page-lead {
    max-width: 700px;
    margin: 38px 0 0;
    color: #5f5546;
    font-size: 15px;
    line-height: 2.25;
}


/* =========================================================
   COMMON CONTENT
   ========================================================= */

.km-family-page-section {
    padding: 120px 0;
    background: #fffdf8;
}

.km-family-page-heading {
    max-width: 820px;

    margin: 0;

    font-family:
        "Yu Mincho",
        "Hiragino Mincho ProN",
        "Times New Roman",
        serif;

    font-size: clamp(28px, 4vw, 42px);
    font-weight: 400;
    line-height: 1.7;
    letter-spacing: .05em;
}

.km-family-page-text {
    max-width: 760px;

    margin: 30px 0 0;
color: #5f5546;

    font-size: 14px;
    line-height: 2.2;
}

/* =========================================================
   FAMILY INFO CARDS
   ========================================================= */

.km-family-page-section-light {
    background:
        linear-gradient(
            145deg,
            #ead8ae 0%,
            #f7ecd2 48%,
            #e7d1a1 100%
        );
}

.km-family-info-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin-top: 52px;
}

.km-family-info-card {
    min-height: 260px;
    padding: 30px 30px 34px;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.96),
            rgba(248,240,224,.96)
        );

    border: 1px solid rgba(120,92,48,.14);
}

.km-family-info-number {
    display: block;

    color: rgba(168,134,75,.62);

    font-family: "Times New Roman", serif;
    font-size: 10px;
    letter-spacing: .24em;
}

.km-family-info-card h3 {
    margin: 52px 0 0;

    font-family:
        "Yu Mincho",
        "Hiragino Mincho ProN",
        serif;

    color: #493e30;

    font-size: 17px;
    font-weight: 400;
    line-height: 1.7;
    letter-spacing: .04em;
}

.km-family-info-card p {
    margin: 18px 0 0;

    color: #5f5546;

    font-size: 13px;
    line-height: 2.05;
}
.km-family-page-section-flow {
    background:
        linear-gradient(
            180deg,
            #e7e1d7 0%,
            #f3efe8 100%
        );
}

/* =========================================================
   ABOUT
   ========================================================= */

.km-family-page-about {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

.km-family-page-about::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;

    background-image: url("../images/page/members/family-bg-2.webp");
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;

    opacity: 0.20;
    pointer-events: none;
}

.km-family-page-about > * {
    position: relative;
    z-index: 1;
}

/* =========================================================
   FAMILY BENEFITS
   ========================================================= */

.km-family-benefit-list {
    margin-top: 50px;

    border-top: 1px solid var(--km-family-page-line);
}

.km-family-benefit-item {
    display: grid;
    grid-template-columns: 70px 1fr;
    gap: 24px;

    padding: 30px 0;

    border-bottom: 1px solid var(--km-family-page-line);
}

.km-family-benefit-item > span {
    padding-top: 4px;

    color: rgba(168,134,75,.58);

    font-family: "Times New Roman", serif;
    font-size: 10px;
    letter-spacing: .20em;
}

.km-family-benefit-item h3 {
    margin: 0;

    font-family:
        "Yu Mincho",
        "Hiragino Mincho ProN",
        serif;

    color: #493e30;

    font-size: 17px;
    font-weight: 400;
    line-height: 1.7;
}

.km-family-benefit-item p {
    max-width: 760px;

    margin: 12px 0 0;

    color: #5f5546;

    font-size: 13px;
    line-height: 2.05;
}


/* =========================================================
   INVITATION FLOW
   ========================================================= */

.km-family-flow {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0;

    margin-top: 52px;

    border-top: 1px solid var(--km-family-page-line);
    border-bottom: 1px solid var(--km-family-page-line);
}

.km-family-flow-step {
    position: relative;

    min-height: 190px;

    padding: 30px 32px;

    border-right: 1px solid var(--km-family-page-line);
}

.km-family-flow-step:last-child {
    border-right: none;
}

.km-family-flow-step span {
    display: block;

    color: rgba(168,134,75,.60);

    font-family: "Times New Roman", serif;
    font-size: 10px;
    letter-spacing: .22em;
}

.km-family-flow-step p {
    margin: 44px 0 0;

    color: #5b5145;

    font-size: 13px;
    line-height: 2;
}


/* =========================================================
   SUBTLE SCROLL REVEAL
   ========================================================= */

.km-family-info-card,
.km-family-benefit-item,
.km-family-flow-step {
    opacity: 0;
    transform: translateY(28px);
}

.km-family-info-grid.is-visible .km-family-info-card {
    animation: kmFamilyContentItemReveal .85s ease forwards;
}

.km-family-info-grid.is-visible .km-family-info-card:nth-child(2) {
    animation-delay: .12s;
}

.km-family-info-grid.is-visible .km-family-info-card:nth-child(3) {
    animation-delay: .24s;
}

.km-family-benefit-list.is-visible .km-family-benefit-item {
    animation: kmFamilyContentItemReveal .8s ease forwards;
}

.km-family-benefit-list.is-visible .km-family-benefit-item:nth-child(2) {
    animation-delay: .10s;
}

.km-family-benefit-list.is-visible .km-family-benefit-item:nth-child(3) {
    animation-delay: .20s;
}

.km-family-flow.is-visible .km-family-flow-step {
    animation: kmFamilyContentItemReveal .85s ease forwards;
}

.km-family-flow.is-visible .km-family-flow-step:nth-child(2) {
    animation-delay: .12s;
}

.km-family-flow.is-visible .km-family-flow-step:nth-child(3) {
    animation-delay: .24s;
}

@keyframes kmFamilyContentItemReveal {
    from {
        opacity: 0;
        transform: translateY(28px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* =========================================================
   FINAL
   ========================================================= */

.km-family-page-final {
    position: relative;
    padding: 128px 0;
    text-align: center;

    background:
        radial-gradient(
            circle at 50% 35%,
            rgba(255,255,255,.96) 0%,
            rgba(255,255,255,.58) 22%,
            transparent 56%
        ),
        linear-gradient(
            145deg,
            #ead5a8 0%,
            #f6ead1 50%,
            #dfc58f 100%
        );

    color: #574527;
}

.km-family-page-final .km-family-page-kicker {
    color: #92703b;
}

.km-family-page-final .km-family-page-heading {
    margin-left: auto;
    margin-right: auto;
    color: #4d3d25;
}

.km-family-page-back-wrap {
    margin-top: 34px;
    text-align: center;
}

.km-family-page-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding-bottom: 4px;

    color: #725a32;
    border-bottom: 1px solid rgba(114,90,50,.38);

    text-decoration: none;
    font-size: 12px;
    letter-spacing: .06em;

    transition:
        color .25s ease,
        border-color .25s ease;
}

.km-family-page-back:hover {
    color: #44331c;
    border-color: rgba(68,51,28,.70);
}

.km-family-page-actions {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 26px;
}

.km-family-page-button {
    min-width: 230px;
    min-height: 52px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    padding: 0 28px;
    border: 1px solid transparent;
    text-decoration: none;

    font-size: 13px;
    letter-spacing: .07em;

    transition:
        transform .3s ease,
        background-color .3s ease,
        border-color .3s ease,
        color .3s ease;
}

.km-family-page-button:hover {
    transform: translateY(-2px);
}

.km-family-page-button-main {
    color: #fff;
    background: #806331;
    border-color: #806331;
}

.km-family-page-button-main:hover {
    background: #6e552b;
    border-color: #6e552b;
}

.km-family-page-button-outline {
    color: #624b27;
    background: rgba(255,255,255,.30);
    border-color: rgba(110,82,39,.38);
}

.km-family-page-button-outline:hover {
    background: rgba(255,255,255,.56);
    border-color: rgba(98,75,39,.60);
}

/* =========================================================
   ANIMATIONS
   ========================================================= */

@keyframes kmFamilyPageHalo {
    0% {
        opacity: 0;
        transform:
            translate(-50%, -50%)
            scale(.80);
    }

    45% {
        opacity: 1;
        transform:
            translate(-50%, -50%)
            scale(1);
    }

    100% {
        opacity: .88;
        transform:
            translate(-50%, -50%)
            scale(1.04);
    }
}

@keyframes kmFamilyPageOpening {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes kmFamilyPageLogo {
    0% {
        opacity: 0;
        transform: scale(.985);
        filter: blur(5px);
    }

    40% {
        opacity: .94;
        transform: scale(1);
        filter: blur(0);
    }

    100% {
        opacity: .92;
        transform: scale(1);
        filter: blur(0);
    }
}

@keyframes kmFamilyPageBrand {
    0% {
        opacity: 0;
    }

    45% {
        opacity: 1;
    }

    100% {
        opacity: 1;
    }
}

@keyframes kmFamilyPageDescription {
    from {
        opacity: 0;
        transform: translateY(6px);
    }

    to {
        opacity: .86;
        transform: translateY(0);
    }
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 820px) {

    .km-family-page-wrap {
        width: min(100% - 32px, 680px);
    }

    .km-family-page-logo-halo {
        width: min(270px, 64vw);
    }

    .km-family-page-intro {
        padding: 100px 0 92px;
    }

    .km-family-page-section {
        padding: 86px 0;
    }

    .km-family-page-final {
        padding: 94px 0;
    }

    .km-family-page-lead,
    .km-family-page-text {
        font-size: 14px;
    }

    .km-family-page-actions {
        gap: 10px;
    }

    .km-family-page-button {
        width: min(300px, 100%);
    }
	
	.km-family-info-grid {
    grid-template-columns: 1fr;
}

.km-family-info-card {
    min-height: 210px;
}

.km-family-benefit-item {
    grid-template-columns: 48px 1fr;
    gap: 16px;
}

.km-family-flow {
    grid-template-columns: 1fr;
}

.km-family-flow-step {
    min-height: auto;
    border-right: none;
    border-bottom: 1px solid var(--km-family-page-line);
}

.km-family-flow-step:last-child {
    border-bottom: none;
}
}

@media (max-width: 480px) {

.km-family-page-brand {
    font-size: 17px;
    letter-spacing: .30em;
}

    .km-family-page-title {
        font-size: clamp(30px, 10vw, 42px);
    }
}


/* Accessibility */

@media (prefers-reduced-motion: reduce) {

    html {
        scroll-behavior: auto;
    }

    .km-family-page-hero::before,
    .km-family-page-hero-inner,
    .km-family-page-logo,
    .km-family-page-brand,
    .km-family-page-hero-description,
    .km-family-page-scroll span {
        animation: none !important;
    }

    .km-family-info-card,
    .km-family-benefit-item,
    .km-family-flow-step {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}