@charset "UTF-8";

.child-page {
    --brown: #774617;
    --child-green: #29c479;
    --child-pale: #fffdec;
    color: var(--brown);
    background: #fff;
    font-size: clamp(14px, .811125vw, 15.5px);
    line-height: 1.85;
}

.child-page main {
    overflow: clip;
}

.child-page main [id] {
    scroll-margin-top: 120px;
}

.child-page img {
    max-width: 100%;
    height: auto;
}

.child-main h2 {
    font-size: clamp(18px, 1.425vw, 25px);
    font-weight: 700;
    border-left: 4px solid #61d56c;
    padding-left: 14px;
    margin-bottom: 28px;
}

.child-main h3,
.child-main h4 {
    font-size: clamp(15px, .9vw, 17px);
}

.child-layout {
    display: grid;
    grid-template-columns: 10.8vw minmax(0, 1fr);
}

.child-sidebar {
    background: var(--child-green);
    padding: 16vw 1vw 30px;
}

.child-sidebar nav {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.child-sidebar a {
    color: #276744;
    text-decoration: none;
}

.child-sidebar a:hover,
.child-sidebar a[aria-current] {
    color: #fff;
}

.child-main {
    min-width: 0;
}

.child-hero {
    position: relative;
    min-height: 29.5vw;
    padding: 9.3vw 4vw 3.2vw;
    background: var(--child-pale);
    background-image: url('/common/img/child/hero-wave.svg');
    background-repeat: no-repeat;
    background-position: left top;
    background-size: 32vw 12vw;
}

.child-hero h1 {
    position: relative;
    z-index: 1;
    margin: 0 0 2.8vw;
    font-size: 2.205vw;
    font-weight: 700;
    letter-spacing: -.05em;
}

.child-hero h1 span {
    font-size: 1.1025vw;
    font-weight: 400;
    letter-spacing: 0;
}

.child-hero > p {
    position: relative;
    width: 55%;
    margin: 0;
    font-size: .811125vw;
    font-weight: 700;
    line-height: 2;
}

.child-hero-photo {
    position: absolute;
    z-index: 2;
    top: -9.375vw;
    right: 0;
    width: 37.125vw;
    height: 37.125vw;
}

.child-hero-photo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    filter: drop-shadow(-12px 8px 22px rgba(174, 201, 88, 0.28))
        drop-shadow(-24px 12px 42px rgba(202, 220, 125, 0.35));
}

.child-hero::before,
.child-hero::after {
    content: "";
    position: absolute;
    z-index: 3;
    width: 8vw;
    height: 8vw;
    border-radius: 50%;
    pointer-events: none;
}

.child-hero::before {
    top: 23.5vw;
    right: 1.2vw;
    background: rgb(255 96 14 / 80%);
}

.child-hero::after {
    top: 24.7vw;
    right: .3vw;
    border: 3px solid #ffb52f;
}

@media (min-width: 768px) {
    .child-greeting-wrap {
        margin-top: -4vw;
    }
}

/* 背景と画像はメイン領域の横幅いっぱいに表示する。 */
.child-main > .child-section,
.child-main > .child-attractions,
.child-main > .child-access {
    width: 100%;
}

.child-section {
    padding: 3.2vw;
}

.child-greeting-wrap {
    position: relative;
    isolation: isolate;
    padding: 0 6vw 6vw;
    background: var(--child-pale);
}

.child-greeting-wrap::before {
    content: "";
    position: absolute;
    z-index: 2;
    top: -4vw;
    left: -2vw;
    width: 9vw;
    height: 10vw;
    background: radial-gradient(circle, #ffa600 1.5px, transparent 2px) 0 0 / 14px 14px;
    border-radius: 50%;
    pointer-events: none;
}

.child-greeting-wrap::after {
    content: "";
    position: absolute;
    z-index: -1;
    right: 1.5vw;
    bottom: 0;
    width: 20vw;
    height: 22.2vw;
    background: url('/common/img/child/greeting-decoration.svg') center / contain no-repeat;
    pointer-events: none;
}

.child-greeting {
    position: relative;
    display: flow-root;
    margin: 0;
    padding: 2.4vw 2.8vw 3.4vw;
    border: 0;
    border-radius: 4vw;
    background: #fff;
    box-shadow: 0 6px 24px 3px rgb(126 201 82 / 25%);
}

.child-greeting-content {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 20%);
    align-items: start;
    gap: 32px;
}

.child-greeting-text p {
    margin: 0;
    font-size: clamp(16px, 1vw, 19px);
    line-height: 1.95;
}

.child-director-profile {
    width: 100%;
    max-width: 235px;
    margin: 0;
    justify-self: end;
}

.child-director {
    display: block;
    width: 100%;
    margin: 0;
    border-radius: 0;
}

.child-signature {
    margin-top: 6px;
    color: #27221e;
    font-size: clamp(16px, 1vw, 19px);
    line-height: 1.5;
    text-align: center;
}

.child-beliefs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 5vw;
    padding: 3.2vw 6vw 5vw;
    background: var(--child-pale);
}

.child-beliefs > section {
    min-width: 0;
}

.child-beliefs p {
    margin: 0;
    font-size: clamp(16px, 1vw, 19px);
    line-height: 1.95;
}

.child-belief-visual {
    position: relative;
    isolation: isolate;
    width: 65%;
    margin-top: 24px;
}

.child-belief-visual::before {
    content: "";
    position: absolute;
    z-index: -1;
    top: -8%;
    right: -14%;
    width: 48%;
    aspect-ratio: 1;
    border-radius: 48% 52% 40% 60%;
    background: #f5b2c7;
    transform: rotate(-15deg);
}

.child-belief-visual img {
    display: block;
    width: 100%;
    height: auto;
    border: 0;
}

.child-belief-visual img.is-placeholder {
    aspect-ratio: 1.25;
    object-fit: cover;
    object-position: left center;
    border-radius: 35% 65% 48% 52% / 30% 42% 58% 70%;
}

.child-belief-vision {
    margin-left: auto;
}

.child-belief-vision::before {
    top: 8%;
    right: auto;
    left: -14%;
    background: #ffe558;
}

.child-belief-vision img.is-placeholder {
    object-position: right center;
    border-radius: 62% 38% 47% 53% / 42% 35% 65% 58%;
}

.child-attractions {
    background: #fffcec;
}

.child-main .child-attractions-banner {
    position: relative;
    margin: 0;
    padding: 0;
    border: 0;
    line-height: 0;
}

.child-main .child-attractions-title {
    position: absolute;
    top: 35%;
    left: 33%;
    width: 34%;
    margin: 0;
    padding: 0;
    border: 0;
    line-height: 0;
}

.child-attractions-banner img,
.child-attractions-bottom {
    display: block;
    width: 100%;
    height: auto;
}

.child-attractions-content {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    align-items: center;
    gap: 4vw;
    padding: 0 6vw;
}

.child-attractions-copy h3 {
    margin: 0 0 24px;
    color: #ffa600;
    font-size: clamp(20px, 1.5vw, 28px);
    line-height: 1.6;
    font-weight: 700;
}

.child-attractions-copy p {
    margin: 0;
    font-size: clamp(16px, 1vw, 19px);
    line-height: 1.95;
}

.child-attractions-map {
    display: block;
    width: 100%;
    height: auto;
}

@media (min-width: 768px) {
    .child-attractions-map {
        width: 80%;
        margin-inline: auto;
    }
}

@media (max-width: 767.98px) {
    .child-main .child-attractions-title {
        position: relative;
        top: auto;
        left: auto;
        width: 80%;
        margin: -13% auto 24px;
    }

    .child-attractions-content {
        grid-template-columns: minmax(0, 1fr);
        gap: 24px;
        padding: 0 24px;
    }

    .child-attractions-map {
        max-width: 440px;
        margin-inline: auto;
    }
}

.child-policy {
    padding-inline: 6vw;
}

.child-policy-card {
    position: relative;
    width: 55%;
    margin: 6.3vw 12% 5.4vw auto;
    padding: 3.42vw 3.24vw 1.8vw;
    background: #f6f6b7;
}

.child-policy-card:nth-of-type(2) {
    margin-left: 0;
}

.child-policy-card:nth-of-type(3) {
    margin-right: 0;
}

.child-policy-card h3 {
    position: relative;
    display: table;
    max-width: 78%;
    background: #ffe779;
    padding: 9px 21.6px;
    margin: calc(-3.42vw - 25.2px) 0 25.2px -1.08vw;
    font-size: clamp(18px, 1.35vw, 25.2px);
    font-weight: 700;
    line-height: 1.5;
    clip-path: polygon(0 0, 100% 0, 98% 10%, 100% 20%, 98% 30%, 100% 40%, 98% 50%, 100% 60%, 98% 70%, 100% 80%, 98% 90%, 100% 100%, 0 100%, 2% 90%, 0 80%, 2% 70%, 0 60%, 2% 50%, 0 40%, 2% 30%, 0 20%, 2% 10%);
}

.child-policy-card h4 {
    margin: 0 0 10.8px;
    font-size: clamp(15.3px, 1.08vw, 20.7px);
    line-height: 1.6;
}

.child-policy-card p {
    margin: 0;
    font-size: clamp(14.4px, 0.99vw, 18.9px);
    line-height: 1.6;
}

.child-policy-card:nth-of-type(2) h3 {
    background: #d4e99b;
}

.child-policy-number {
    position: absolute;
    z-index: 1;
    isolation: isolate;
    right: 5%;
    top: -5.58vw;
    width: clamp(90px, 9.45vw, 171px);
    height: clamp(90px, 9.45vw, 171px);
    display: grid;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    font-size: clamp(44px, 5.25vw, 90px);
    line-height: 1;
    font-weight: 700;
}

.child-policy-number::before {
    content: "";
    position: absolute;
    z-index: -1;
    inset: 0;
    border-radius: 50%;
    background: rgb(255 112 34 / 80%);
    pointer-events: none;
}

.child-policy-number::after {
    content: "";
    position: absolute;
    z-index: -2;
    top: -18%;
    right: -22%;
    width: 80%;
    height: 80%;
    border-radius: 50%;
    background: radial-gradient(circle, #ff9700 1.8px, transparent 2.25px) 0 0 / 13.5px 13.5px;
    pointer-events: none;
}

.child-policy-card:nth-of-type(2) .child-policy-number {
    left: -2.25vw;
    right: auto;
    top: auto;
    bottom: -2.7vw;
}

.child-policy-card:nth-of-type(2) .child-policy-number::after {
    top: auto;
    right: auto;
    bottom: -18%;
    left: -22%;
}

.child-policy-icon {
    position: absolute;
    left: -4.05vw;
    bottom: 1.35vw;
    width: clamp(72px, 5.85vw, 112.5px);
    height: clamp(86.4px, 7.2vw, 135px);
    object-fit: contain;
}

.child-policy-card:first-of-type .child-policy-icon {
    transform: rotate(-55deg);
}

.child-policy-card:nth-of-type(2) .child-policy-icon,
.child-policy-card:nth-of-type(3) .child-policy-icon {
    transform: scale(1.2);
}

.child-policy-card:nth-of-type(2) .child-policy-icon {
    left: auto;
    right: -2.7vw;
    top: 0;
}

.child-section#capacity,
.child-section#layout,
.child-section#daily,
.child-section#events,
.child-section#admission {
    padding-inline: 6vw;
}

.child-capacity-scene {
    display: grid;
    grid-template-columns: 70px 85px minmax(0, 380px) 80px 65px;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin: 0 auto 32px;
}

.child-capacity-scene img {
    display: block;
    width: 100%;
    height: auto;
}

.child-capacity-flowers {
    align-self: end;
}

.child-capacity-butterfly {
    align-self: start;
}

.child-capacity {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    justify-items: center;
    max-width: 380px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: clamp(15.3px, 1.08vw, 20.7px);
    font-weight: 700;
}

.child-hours {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    border: 8px solid #ffb43a;
    border-radius: 30px;
    padding: 24px;
    font-size: clamp(16px, 1vw, 19px);
}

.child-hours h3 {
    font-size: clamp(18px, 1.2vw, 23px);
    font-weight: 700;
    line-height: 1.6;
    margin-bottom: 20px;
}

.child-hours section + section {
    border-left: 1px solid #af8f6f;
    padding-left: 24px;
}

.child-hours dl {
    display: grid;
    grid-template-columns: 160px minmax(0, 1fr);
    gap: 15px;
}

.child-hours dt {
    background: var(--child-pale);
}

.child-hours section dl {
    background: linear-gradient(to right, var(--child-pale) 160px, transparent 160px);
}

.child-hours section dt {
    padding: 10px;
    white-space: nowrap;
}

.child-hours section dd {
    padding-top: 10px;
}

.child-hours dd {
    margin: 0;
}

.child-pale {
    background: var(--child-pale);
}

.child-section#layout {
    padding-bottom: 0;
}

.child-floor-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 4vw;
    align-items: center;
}

.child-floor-upper {
    grid-template-columns: minmax(0, 47fr) minmax(0, 53fr);
    gap: 0;
    align-items: end;
    margin-top: 3vw;
}

.child-floor-image {
    position: relative;
    display: block;
    align-self: center;
    width: 72%;
    margin-inline: auto;
}

.child-floor-label {
    display: block;
    margin-top: 16px;
    text-align: center;
    color: #08c849;
    font-size: clamp(22px, 2vw, 36px);
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    -webkit-text-stroke: 5px #fff;
    paint-order: stroke fill;
    filter: drop-shadow(0 1px 1px #a4dba5);
}

.child-floor-image img {
    display: block;
    width: 100%;
    height: auto;
}

.child-floor-second img {
    clip-path: polygon(0 0, 80% 0, 80% 55%, 100% 55%, 100% 100%, 0 100%);
}

.child-floor-lower {
    grid-template-columns: minmax(0, 47fr) minmax(0, 53fr);
    gap: 0;
    align-items: end;
    margin-top: 2vw;
}

.child-floor-layout h3 {
    border-bottom: 5px solid #ffe16a;
    width: fit-content;
}

.child-floor-story {
    position: relative;
    isolation: isolate;
    padding: 1.5vw 1vw 5vw 2vw;
    font-size: clamp(16px, 1.1vw, 21px);
    line-height: 1.9;
}

.child-floor-story::before {
    content: '';
    position: absolute;
    z-index: -1;
    inset: -5vw 0 0 -4vw;
    background: url('/common/img/child/floor-story.svg') center / 100% 100% no-repeat;
    pointer-events: none;
}

.child-floor-story h3 {
    margin: 0 0 18px;
    border: 0;
    background: linear-gradient(transparent 65%, #ffb000 65%, #ffb000 93%, transparent 93%);
    font-size: clamp(15.3px, 1.08vw, 20.7px);
    font-weight: 700;
    line-height: 1.5;
}

.child-floor-story p {
    margin: 0;
    font-size: clamp(16px, 1vw, 19px);
}

.child-floor-upper .child-floor-story h3 {
    font-size: clamp(18px, 1.2vw, 23px);
}

.child-floor-play {
    padding-bottom: 6vw;
}

.child-floor-play::before {
    inset: 0 0 0 -5vw;
    background-image: url('/common/img/child/floor-play.svg');
}

.child-floor-play h3 {
    position: relative;
}

.child-floor-play h3::after {
    content: '';
    position: absolute;
    left: 100%;
    bottom: 90%;
    width: clamp(66px, 6vw, 99px);
    aspect-ratio: 132 / 88;
    background: url('/common/img/child/capacity-butterfly.png') center / contain no-repeat;
    pointer-events: none;
}

.child-floor-play p {
    line-height: 1.6;
}

.child-floor-play p + p {
    text-indent: 1em;
}

.child-class-names {
    display: grid;
    font-size: clamp(16px, 1vw, 19px);
    grid-auto-flow: column;
    grid-template-rows: repeat(3, auto);
    column-gap: 12px;
    margin: 20px auto 0;
    padding: 10px 20px;
    background: #fae7db;
    border-radius: 20px;
    width: fit-content;
    list-style: none;
}

.child-class-names li {
    white-space: nowrap;
}

.child-floor-flowers {
    position: absolute;
    right: 0;
    bottom: 1vw;
    width: 7vw;
    transform: rotate(-75deg);
    pointer-events: none;
}

@media (max-width: 767.98px) {
    .child-floor-upper {
        margin-top: 24px;
    }

    .child-floor-lower {
        margin-top: 20px;
    }

    .child-floor-story {
        padding: 36px 20px;
    }

    .child-floor-story::before {
        inset: 0 -12px;
    }

    .child-floor-play {
        padding-bottom: 80px;
    }

    .child-floor-play h3::after {
        left: auto;
        right: 0;
        bottom: 100%;
    }

    .child-class-names {
        column-gap: 10px;
        padding: 12px;
    }

    .child-floor-flowers {
        right: 0;
        bottom: 4px;
        width: 55px;
        transform: rotate(-75deg);
    }
}

.child-section#garden {
    padding-inline: 0;
}

.child-section#garden > h2 {
    margin-inline: 6vw;
}

.child-gallery {
    --gallery-photo-width: 36%;
    --gallery-gap: 4%;
    position: relative;
    overflow: hidden;
}

.child-gallery-track {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--gallery-gap);
}

.child-gallery img {
    flex: 0 0 var(--gallery-photo-width);
    width: var(--gallery-photo-width);
    aspect-ratio: 1.55;
    object-fit: cover;
    border-radius: 12px;
}

.child-gallery button {
    position: absolute;
    z-index: 1;
    top: 50%;
    transform: translate(-50%, -50%);
    border: 0;
    border-radius: 50%;
    width: 50px;
    height: 50px;
    padding: 0;
    color: #fff;
    background: #ffb000;
    cursor: pointer;
}

.child-gallery button svg {
    display: block;
    width: 100%;
    height: 100%;
    fill: none;
    stroke: currentColor;
    stroke-width: 6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.child-gallery button[data-direction="-1"] {
    left: calc((100% - var(--gallery-photo-width) - var(--gallery-gap)) / 2);
}

.child-gallery button[data-direction="1"] {
    left: calc((100% + var(--gallery-photo-width) + var(--gallery-gap)) / 2);
}

.child-gallery-caption {
    text-align: center;
    margin-top: 16px;
}

.child-daily-tables {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    background: #f5eedc;
    padding: 30px;
    max-width: 800px;
    margin: auto;
}

.child-daily-tables table {
    width: 100%;
    border-collapse: collapse;
}

.child-daily-tables caption {
    caption-side: top;
    color: var(--brown);
    font-weight: 700;
    font-size: 18px;
}

.child-daily-tables th,
.child-daily-tables td {
    padding: 5px 7px;
    border-bottom: 1px solid #dacbb3;
    text-align: left;
    vertical-align: top;
}

.child-events {
    display: grid;
    grid-template-columns: 3fr 2fr;
    align-items: center;
    gap: 4vw;
}

.child-event-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    border: 2px solid #ffca8d;
    background: #ffe6bf;
    border-radius: 45%;
    padding: 40px;
    list-style: none;
    text-align: center;
    color: #f67746;
}

.child-event-list strong,
.child-coming span {
    display: block;
}

.child-coming {
    border: 12px solid #96d55d;
    border-radius: 8px;
    background: #fff;
    text-align: center;
    padding: 50px 16px;
    font-size: 18px;
}

.child-coming span {
    color: #c5ad95;
}

.child-access > h2 {
    margin: 0 4vw 24px;
}

.child-access-scene {
    position: relative;
}

.child-access-scene > img {
    display: block;
    width: 100%;
}

.child-access-address {
    position: absolute;
    right: 0;
    bottom: 0;
    width: clamp(420px, 38vw, 650px);
    max-width: calc(100% - 40px);
    padding: clamp(16px, 1.5vw, 28px);
    border: clamp(12px, 1.2vw, 20px) solid rgb(86 166 16 / 75%);
    background: rgb(255 255 255 / 86%);
    background-clip: padding-box;
    font-size: clamp(16px, 1.05vw, 20px);
    font-weight: 700;
    line-height: 1.5;
}

.child-access-address h3,
.child-access-address p {
    margin: 0;
}

.child-access-address address {
    font-size: clamp(20px, 1.5vw, 28px);
    font-style: normal;
    font-weight: 700;
}

.child-access-address .child-access-route-title {
    margin-top: 16px;
}

.child-access-directions {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: 8px 16px;
}

.child-access-address a {
    display: block;
    width: fit-content;
    margin-left: auto;
    flex: 0 0 auto;
    padding: 0 22px;
    background: var(--child-green);
    color: #fff;
    font-size: clamp(18px, 1.4vw, 26px);
    line-height: 1.3;
    text-decoration: none;
}

.child-admission ol {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 35px;
    list-style: none;
    padding: 0;
    margin: 45px 0;
}

.child-admission li {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 0 12px 12px;
    background: #ff941a;
}

.child-admission li:not(:last-child)::after {
    content: "»";
    position: absolute;
    right: -28px;
    top: 45%;
    color: #aa9e94;
    font-size: 32px;
}

.child-admission li h3 {
    color: #fff;
    padding: 12px 0 12px 25px;
    font-size: 16px;
    text-align: center;
    margin: 0;
}

.child-admission li p {
    flex: 1;
    margin: 0;
    padding: 20px;
    border-radius: 10px;
    background: #fff;
}

.child-step {
    position: absolute;
    left: -15px;
    top: -20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    background: #fff;
    border: 2px solid #ff941a;
    border-radius: 50%;
    color: #ff941a;
    font-size: 30px;
    line-height: 1;
}

.child-step small {
    font-size: 12px;
}

.child-inquiry {
    display: block;
    width: 100%;
    max-width: 420px;
    margin: 30px auto;
    border: 2px solid #fa8389;
    padding: 12px;
    color: #ed7078;
    text-align: center;
    text-decoration: none;
    font-size: 18px;
}

@media (max-width: 991.98px) {
    .child-hero > p {
        font-size: 9.45px;
    }

    .child-layout {
        display: block;
    }

    .child-sidebar {
        padding: 20px;
    }

    .child-sidebar nav {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
    }

    .child-hours,
    .child-events {
        grid-template-columns: 1fr;
    }

    .child-hours section + section {
        border-left: 0;
        border-top: 1px solid #af8f6f;
        padding: 24px 0 0;
    }
}

@media (max-width: 767.98px) {
    .child-layout {
        display: flex;
        flex-direction: column;
    }

    .child-sidebar {
        order: -1;
    }

    .child-main {
        display: contents;
    }

    .child-hero {
        order: -2;
        position: relative;
        overflow: hidden;
        padding: calc(66vw + 24px) 8.5vw 32px;
        min-height: 61vw;
        background-size: 62vw auto;
    }

    .child-hero-photo {
        width: 70vw;
        height: 70vw;
        top: -6vw;
        right: 0;
    }

    .child-hero::before,
    .child-hero::after {
        width: 12vw;
        height: 12vw;
    }

    .child-hero::before {
        top: 43vw;
        right: 2vw;
    }

    .child-hero::after {
        top: 45vw;
        right: .5vw;
        border-width: 2px;
    }

    .child-hero h1 {
        position: absolute;
        z-index: 4;
        top: max(31vw, 150px);
        left: 8.5vw;
        margin: 0;
        padding: 0;
        font-size: clamp(20px, 5vw, 28px);
        white-space: nowrap;
        text-shadow:
            0 0 3px #fff,
            0 0 6px #fff,
            1px 1px 2px #fff,
            -1px -1px 2px #fff;
    }

    .child-hero h1 span {
        font-size: clamp(16px, 4vw, 22px);
    }

    .child-hero > p {
        width: 100%;
        margin: 0;
        font-size: 14px;
        line-height: 1.5;
    }

    .child-main > .child-section,
    .child-main > .child-attractions,
    .child-main > .child-access {
        width: 100%;
    }

    .child-section {
        padding: 26px 20px;
    }

    .child-greeting-wrap {
        padding: 0 24px 48px;
    }

    .child-greeting {
        margin: 0;
        padding: 24px 20px 28px;
        border-radius: 28px;
    }

    .child-greeting-wrap::before {
        top: -20px;
        left: 0;
        width: 48px;
        height: 56px;
        background-size: 10px 10px;
    }

    .child-greeting-content {
        grid-template-columns: minmax(0, 1fr);
        gap: 16px;
    }

    .child-director-profile {
        grid-row: 1;
        max-width: 120px;
        justify-self: center;
    }

    .child-director {
        width: 100%;
        margin: 0;
    }

    .child-beliefs,
    .child-floor-layout,
    .child-daily-tables,
    .child-admission ol {
        grid-template-columns: minmax(0, 1fr);
        gap: 32px;
    }

    .child-beliefs {
        padding: 26px 24px 40px;
    }

    .child-policy {
        padding-inline: 24px;
    }

    .child-belief-visual {
        width: 70%;
        max-width: 360px;
    }

    .child-policy-card {
        width: 100%;
        margin: 90px 0 70px;
        padding: 28px 22px;
    }

    .child-policy-card h3 {
        max-width: calc(100% - 38px);
        padding: 10px 14px;
        margin: -48px 0 20px -8px;
        font-size: 18px;
    }

    .child-policy-number {
        width: 65px;
        height: 65px;
        font-size: 32px;
        right: -10px;
        top: -45px;
    }

    .child-policy-number::after {
        background-size: 9px 9px;
    }

    .child-policy-card:nth-of-type(2) .child-policy-number {
        left: -10px;
        bottom: -68px;
    }

    .child-policy-icon {
        width: 50px;
        height: 60px;
        left: -15px;
    }

    .child-section#capacity,
    .child-section#layout,
    .child-section#daily,
    .child-section#events,
    .child-section#admission {
        padding-inline: 24px;
    }

    .child-capacity-scene {
        grid-template-columns: 38px minmax(0, 380px) 38px;
        gap: 12px 8px;
    }

    .child-capacity-girl {
        grid-column: 1;
        grid-row: 2;
    }

    .child-capacity-scene .child-capacity {
        grid-column: 2;
        grid-row: 2;
    }

    .child-capacity-boy {
        grid-column: 3;
        grid-row: 2;
    }

    .child-capacity-flowers {
        grid-column: 1;
        grid-row: 1;
    }

    .child-capacity-butterfly {
        grid-column: 3;
        grid-row: 1;
    }

    .child-hours {
        padding: 16px;
        border-radius: 20px;
    }

    .child-hours dl {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .child-hours section dl {
        background: none;
    }

    .child-hours section dd {
        padding-top: 0;
    }

    .child-daily-tables {
        padding: 16px;
    }

    .child-gallery {
        --gallery-photo-width: 61.2%;
        --gallery-gap: 5%;
    }

    .child-section#garden > h2 {
        margin-inline: 24px;
    }

    .child-event-list {
        gap: 16px 8px;
        padding: 30px 14px;
        border-radius: 35%;
    }

    .child-access-address {
        position: static;
        width: auto;
        max-width: none;
        margin: 16px 24px;
    }

    .child-admission li:not(:last-child)::after {
        right: 50%;
        top: auto;
        bottom: -35px;
        transform: rotate(90deg);
    }

    .child-inquiry {
        width: 100%;
    }
}

/* /care と共通パーツの寸法を揃える。子育て支援事業に適用。 */
body.child-page .front-breadcrumb {
    font-size: clamp(11.5px, .738vw, 15px);
}

@media (max-width: 991.98px) {
    body.child-page .front-breadcrumb {
        font-size: 11.5px;
    }

}

@media (min-width: 992px) {
    body.child-page .front-breadcrumb {
        margin-left: 20.8%;
        width: calc(79.2% - 24px);
    }

}

@media (min-width: 768px) {
    .child-page .footer-contact {
        min-height: 0;
        padding: 8vw 0;
    }

    .child-page .footer-contact-bubble {
        width: 22.4vw;
        height: 22.4vw;
    }

    .child-page .footer-contact-pink {
        width: 31.2vw;
        height: 31.2vw;
    }

    .child-page .footer-contact-green {
        width: 20.8vw;
        height: 20.8vw;
    }

    .child-page .footer-contact-card {
        width: 56.25vw;
        padding: 3.375vw 4.5vw;
        border-radius: 2.25vw;
    }

    .child-page .footer-contact-card h2 {
        gap: 2.025vw;
        margin-bottom: 1.29375vw;
        font-size: 1.0125vw;
    }

    .child-page .footer-contact-message {
        margin-bottom: .45vw;
        font-size: .759375vw;
    }

    .child-page .footer-contact-phone {
        font-size: 3.0375vw;
    }

    .child-page .footer-contact-phone small {
        font-size: 1.4625vw;
    }

    .child-page .footer-contact-hours {
        margin-top: .75vw;
        padding: .3vw 3.375vw;
        font-size: .95625vw;
    }

}

@media (max-width: 767.98px) {

    body.child-page .front-breadcrumb {
        display: none;
    }

}

@media (max-width: 767.98px) {

    body.child-page .front-breadcrumb,
    .child-page .footer-contact-message,
    .child-page .footer-contact-phone small,
    .child-page .footer-contact-hours,
    .child-page .footer-tagline,
    .child-page .footer-brand address,
    .child-page .footer-sitemap h2,
    .child-page .footer-sitemap a,
    .child-page .footer-bottom,
    .child-page .copyright {
        font-size: 14px;
    }

    .child-page .footer-bottom {
        white-space: normal;
        overflow-wrap: anywhere;
    }

    .child-page .footer-sitemap > div,
    .child-page .footer-bottom > div {
        flex: 0 0 100%;
        width: 100%;
        padding: 0 15px;
    }

    .child-page .footer-bottom {
        row-gap: 20px;
    }

    .child-page .footer-brand .badges {
        display: none;
    }

    .child-page .footer-brand address {
        text-align: left;
    }

    .child-page .footer-tagline > span {
        display: block;
        white-space: nowrap;
    }

    .child-page .footer-tagline > .footer-tagline-gap {
        display: none;
    }

    .child-page .footer-mobile-badges {
        display: flex;
        width: 100%;
        margin-top: 0;
        padding: 0 15px 24px;
        gap: 16px;
    }

}


/* 元の緑枠と横長の構成を活かした行事写真。 */
.child-event-gallery {
    position: relative;
    min-width: 0;
    overflow: hidden;
    border: 12px solid #96d55d;
    border-radius: 8px;
    background: #fff;
    text-align: center;
}

.child-event-slide {
    margin: 0;
}

.child-event-slide[hidden] {
    display: none;
}

.child-event-slide img {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.child-event-slide figcaption {
    padding: 8px 16px;
    overflow-wrap: anywhere;
    font-size: 14px;
}

.child-event-controls {
    padding: 4px 12px 8px;
    color: #774617;
    font-size: 12px;
}

/* 同じ位置に重ね、枠の高さを保ったままフェードする。 */
.child-event-slides.is-ready {
    display: grid;
}

.child-event-slides.is-ready .child-event-slide {
    grid-area: 1 / 1;
    min-width: 0;
    opacity: 0;
    pointer-events: none;
    transition: opacity .7s ease-in-out;
}

.child-event-slides.is-ready .child-event-slide.is-active {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .child-event-slides.is-ready .child-event-slide {
        transition: none;
    }
}

/* 支給素材を使用した子育て支援事業ページの装飾。 */
.child-greeting-wrap::before {
    background: url('/common/img/child/materials/dots-orange.png') center / contain no-repeat;
    border-radius: 0;
}

.child-greeting-wrap::after {
    background:
        url('/common/img/child/materials/dots-white-diagonal.png') left bottom / 58% auto no-repeat,
        url('/common/img/child/materials/greeting-blue-shape.png') left bottom / 100% auto no-repeat,
        url('/common/img/child/materials/greeting-yellow-shape.png') right top / 58% auto no-repeat;
}

.child-belief-visual::before {
    border-radius: 0;
    transform: none;
    background: url('/common/img/child/materials/philosophy-pink-shape.png') center / contain no-repeat;
}

.child-belief-vision::before {
    background-image: url('/common/img/child/materials/vision-yellow-shape.png');
}

.child-policy-card h3 {
    clip-path: none;
    background: url('/common/img/child/materials/policy-ribbon-01.png') center / 100% 100% no-repeat;
}

.child-policy-card:nth-of-type(2) h3 {
    background: url('/common/img/child/materials/policy-ribbon-02.png') center / 100% 100% no-repeat;
}

.child-policy-card:nth-of-type(3) h3 {
    background-image: url('/common/img/child/materials/policy-ribbon-03.png');
}

.child-policy-number {
    width: clamp(110px, 12vw, 215px);
    height: auto;
    border-radius: 0;
    top: -7vw;
    right: 0;
}

.child-policy-number img {
    display: block;
    width: 100%;
    height: auto;
}

@media (min-width: 768px) {
    .child-policy-card:nth-of-type(2) {
        margin-bottom: clamp(110px, 12vw, 215px);
    }

    .child-policy-card:nth-of-type(2) .child-policy-number {
        top: calc(100% - 1vw);
        bottom: auto;
    }
}

.child-policy-number::before,
.child-policy-number::after {
    content: none;
}

.child-policy-card:first-of-type .child-policy-icon {
    transform: none;
}

.child-floor-second img {
    clip-path: none;
}

.child-floor-story::before {
    background-image: url('/common/img/child/materials/floor-class-background.png');
}

.child-floor-upper .child-floor-story::after {
    content: '';
    position: absolute;
    left: -3vw;
    top: 1vw;
    width: clamp(40px, 4.5vw, 80px);
    aspect-ratio: 93 / 123;
    background: url('/common/img/child/materials/flower-stem.png') center / contain no-repeat;
    pointer-events: none;
}

.child-floor-play::before {
    background:
        url('/common/img/child/materials/floor-play-background.png') left bottom -3vw / 65% auto no-repeat,
        url('/common/img/child/materials/dots-peach.png') right bottom / 28% auto no-repeat;
}

.child-floor-play h3::after {
    background-image: url('/common/img/child/materials/butterfly.png');
}

.child-section#garden {
    position: relative;
}

.child-gallery-bottom-decoration {
    position: absolute;
    z-index: 1;
    right: 0;
    bottom: -9vw;
    width: 30vw;
    aspect-ratio: 420 / 300;
    background:
        url('/common/img/child/materials/dots-white-scattered.png') right 2vw bottom 2vw / 42% auto no-repeat,
        url('/common/img/child/gallery-bottom-decoration.svg') center / contain no-repeat;
    pointer-events: none;
}

.child-section#garden .child-gallery,
.child-section#garden .child-gallery-caption {
    position: relative;
    z-index: 2;
}

.child-section#garden::before {
    content: '';
    position: absolute;
    top: 1vw;
    left: -3vw;
    width: 8vw;
    height: 8vw;
    border-radius: 50%;
    background: #fbc0d7;
    clip-path: inset(0 0 0 3vw);
    pointer-events: none;
}

.child-section#garden > h2 {
    position: relative;
    z-index: 2;
}

.child-section#garden::after {
    content: '';
    position: absolute;
    z-index: 3;
    top: 6vw;
    left: -1.5vw;
    width: 8vw;
    aspect-ratio: 220 / 248;
    background: url('/common/img/child/materials/dots-white-scattered.png') center / contain no-repeat;
    pointer-events: none;
}

@media (max-width: 991.98px) {
    .child-gallery-bottom-decoration {
        width: 220px;
        bottom: -70px;
    }

    .child-section#garden::before {
        top: 8px;
        left: -45px;
        width: 65px;
        height: 85px;
        clip-path: inset(0 0 0 45px);
    }

    .child-section#garden::after {
        top: 70px;
        left: 0;
        width: 80px;
    }
}

@media (max-width: 767.98px) {
    .child-section#garden::after {
        display: none;
    }
}

.child-section#daily {
    position: relative;
    isolation: isolate;
    background-image: none;
}

.child-section#daily::before {
    content: '';
    position: absolute;
    z-index: -1;
    left: -7vw;
    bottom: 3.5vw;
    width: 18.2vw;
    height: 15.4vw;
    background: url('/common/img/child/materials/events-yellow-shape.png') center / 100% 100% no-repeat;
    clip-path: inset(0 0 0 7vw);
    pointer-events: none;
}

.child-section#daily::after {
    content: '';
    position: absolute;
    z-index: -1;
    left: 1vw;
    bottom: 0;
    width: 11.2vw;
    aspect-ratio: 233 / 172;
    background: url('/common/img/child/materials/dots-peach.png') center / contain no-repeat;
    pointer-events: none;
}

.child-section#daily > h2 {
    position: relative;
    width: fit-content;
    max-width: 100%;
    padding-right: calc(clamp(16px, 2vw, 32px) + clamp(45px, 6vw, 100px));
}

.child-section#daily > h2::after {
    content: '';
    position: absolute;
    top: 50%;
    right: 0;
    width: clamp(45px, 6vw, 100px);
    aspect-ratio: 110 / 105;
    transform: translateY(-50%);
    background: url('/common/img/child/materials/daily-leaves.png') center / contain no-repeat;
    pointer-events: none;
}

.child-daily-art {
    display: block;
    max-width: 900px;
    margin-inline: auto;
}

.child-daily-art img,
.child-annual-events {
    display: block;
    width: 100%;
    height: auto;
}

.child-schedule-text {
    max-width: 900px;
    margin: 20px auto;
    font-size: clamp(14px, 1vw, 18px);
}

.child-schedule-text summary {
    width: fit-content;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 4px;
}

.child-schedule-text[open] summary {
    margin-bottom: 16px;
}

/* 年間行事と写真枠を、見本と同じ左右比率・下揃えで配置する。 */
.child-section#events {
    padding-bottom: 6vw;
}

.child-section#events > h2 {
    margin-bottom: 4vw;
}

.child-events {
    grid-template-columns: minmax(0, 1.9fr) minmax(0, 1fr);
    align-items: end;
}

.child-events > div:first-child > p {
    width: fit-content;
    max-width: 100%;
    margin: 18px auto 0;
    font-size: clamp(16px, 1vw, 19px);
    line-height: 1.6;
}

.child-event-frame {
    position: relative;
    min-width: 0;
    top: 2vw;
    padding: clamp(10px, 1.2vw, 20px);
    border-radius: 8px;
    background: #92d35e;
}

.child-event-frame::before,
.child-event-frame::after {
    content: '';
    position: absolute;
    z-index: 2;
    width: clamp(60px, 7vw, 115px);
    aspect-ratio: 115 / 89;
    pointer-events: none;
}

.child-event-frame::before {
    top: -2.5vw;
    right: -2.5vw;
    background: url('/common/img/child/materials/butterfly.png') center / contain no-repeat;
    transform: rotate(-15deg);
}

.child-event-frame::after {
    left: -5.5vw;
    bottom: -3vw;
    background: url('/common/img/child/materials/flowers-pink.png') center / contain no-repeat;
}

.child-event-frame .child-event-gallery {
    border: 0;
    border-radius: 8px;
}

.child-event-frame .child-coming {
    display: flex;
    flex-direction: column;
    justify-content: center;
    aspect-ratio: 1.5;
    margin: 0;
    padding: 16px;
    border: 0;
    border-radius: 8px;
    font-size: clamp(18px, 1.6vw, 30px);
    line-height: 1.3;
}

@media (max-width: 991.98px) {
    .child-events {
        grid-template-columns: minmax(0, 1fr);
        gap: 50px;
    }

    .child-event-frame {
        top: 0;
        width: min(100%, 460px);
        justify-self: center;
        margin-bottom: 30px;
    }

    .child-event-frame::before {
        top: -25px;
        right: -15px;
    }

    .child-event-frame::after {
        left: -20px;
        bottom: -35px;
    }
}

.child-section.child-admission {
    position: relative;
    isolation: isolate;
    padding: 12vw 6vw 24px;
    background: url('/common/img/child/materials/admission-shapes.png') left -5.5vw top 20px / 20vw auto no-repeat;
}

.child-admission::before {
    content: "";
    position: absolute;
    z-index: -1;
    top: 6vw;
    left: -4vw;
    width: 10vw;
    aspect-ratio: 1;
    background: url('/common/img/child/materials/dots-white-scattered.png') center / contain no-repeat;
    pointer-events: none;
}

.child-main .child-admission > h2 {
    border-left-width: 6px;
    padding-left: 24px;
}

.child-admission ol {
    gap: 4.5vw;
    margin: 70px 0 60px;
    padding-left: 24px;
}

.child-admission li {
    padding: 0 16px 14px;
}

.child-admission li h3 {
    padding: 10px 0 10px 24px;
    font-size: clamp(16px, 1.35vw, 22px);
    line-height: 1.4;
}

.child-admission li p {
    padding: 24px 22px;
    border-radius: 16px;
    font-size: clamp(16px, 1.35vw, 22px);
    line-height: 1.6;
}

.child-admission .child-step {
    left: -26px;
    top: -20px;
    width: 70px;
    height: 70px;
    border-width: 3px;
    font-size: 44px;
}

.child-admission li:not(:last-child)::after {
    content: "";
    right: -3.4vw;
    top: 56%;
    width: 30px;
    height: 28px;
    background: #aaa29d;
    clip-path: polygon(0 0, 45% 50%, 0 100%, 0 0, 55% 0, 100% 50%, 55% 100%, 55% 0);
}

.child-admission .child-inquiry {
    width: 74%;
    max-width: 900px;
    margin: 0 auto 18px;
    border-width: 3px;
    padding: 8px 16px;
    font-size: clamp(20px, 1.8vw, 28px);
}

.child-admission > p {
    margin: 0;
    text-align: center;
    font-size: clamp(14px, 1.2vw, 18px);
}

@media (max-width: 767.98px) {
    .child-policy-number {
        width: 88px;
        top: -68px;
        right: 0;
    }

    .child-floor-upper .child-floor-story::after {
        left: -12px;
        top: 0;
        width: 40px;
    }

    .child-floor-play::before {
        background-position: left bottom -24px, right bottom;
    }

    .child-class-names {
        grid-auto-flow: row;
        grid-template-rows: none;
    }

    .child-event-list {
        border-radius: 20px;
        padding: 20px 12px;
        gap: 12px;
    }

    .child-section.child-admission {
        padding: 110px 24px 32px;
        background-position: left -42px top 12px;
        background-size: 154px auto;
    }

    .child-admission::before {
        top: 40px;
        left: -20px;
        width: 90px;
    }

    .child-admission ol {
        gap: 54px;
        margin: 50px 0 36px;
        padding-left: 12px;
    }

    .child-admission li:not(:last-child)::after {
        top: auto;
        right: calc(50% - 15px);
        bottom: -40px;
    }

    .child-admission .child-step {
        left: -18px;
        width: 58px;
        height: 58px;
        font-size: 34px;
    }

    .child-admission .child-inquiry {
        width: 100%;
    }
}
