/* Forest OS｜Forest Wrap 2026 Pilot V1 */

/* ---------- Central Home seasonal entry ---------- */
.forest-wrap-home {
    margin-top: clamp(42px, 6vw, 66px);
}

.forest-wrap-home-card {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto 28px;
    align-items: center;
    gap: clamp(18px, 4vw, 48px);
    width: 100%;
    min-height: 132px;
    margin: 0;
    padding: 27px clamp(26px, 4vw, 46px) 31px;
    overflow: hidden;
    border: 1px solid rgba(74, 102, 81, 0.16);
    border-radius: 25px;
    background: rgba(255, 255, 255, 0.72);
    box-shadow: 0 16px 42px rgba(62, 84, 68, 0.055);
    color: #344a3a;
    text-align: left;
    appearance: none;
    cursor: pointer;
    transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.forest-wrap-home-card::before {
    position: absolute;
    top: -80px;
    right: 90px;
    width: 260px;
    height: 260px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(102, 126, 151, 0.11), transparent 66%);
    content: "";
    pointer-events: none;
}

.forest-wrap-home-card:hover {
    border-color: rgba(74, 102, 81, 0.28);
    box-shadow: 0 20px 50px rgba(62, 84, 68, 0.085);
    transform: translateY(-2px);
}

.forest-wrap-home-card:focus-visible {
    outline: 2px solid rgba(70, 98, 78, 0.52);
    outline-offset: 4px;
}

.forest-wrap-home-copy {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 5px;
    min-width: 0;
}

.forest-wrap-home-kicker {
    color: #7d8f82;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.19em;
}

.forest-wrap-home-copy strong {
    color: #30483a;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: clamp(25px, 3vw, 34px);
    font-weight: 500;
    line-height: 1.15;
}

.forest-wrap-home-copy > span:last-child {
    color: #829087;
    font-size: 11px;
    line-height: 1.6;
}

.forest-wrap-home-year {
    position: relative;
    z-index: 1;
    color: #6e806f;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
    font-size: clamp(54px, 7vw, 78px);
    font-weight: 400;
    line-height: 0.82;
    letter-spacing: -0.08em;
}

.forest-wrap-home-arrow {
    position: relative;
    z-index: 1;
    color: #819086;
    font-size: 21px;
    transition: transform 180ms ease;
}

.forest-wrap-home-card:hover .forest-wrap-home-arrow {
    transform: translateX(4px);
}

.forest-wrap-home-progress {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 4px;
    overflow: hidden;
    background: rgba(73, 97, 79, 0.07);
}

.forest-wrap-home-progress > span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #72927a 0 25%, #738ba0 25% 50%, #b59152 50% 75%, #8c7894 75% 100%);
    transition: width 500ms ease;
}

body.night-mode .forest-wrap-home-card {
    border-color: rgba(167, 188, 173, 0.15);
    background: rgba(255, 255, 255, 0.035);
    box-shadow: 0 18px 44px rgba(0, 0, 0, 0.13);
    color: #dce7df;
}

body.night-mode .forest-wrap-home-copy strong {
    color: #dce7df;
}

body.night-mode .forest-wrap-home-kicker,
body.night-mode .forest-wrap-home-copy > span:last-child,
body.night-mode .forest-wrap-home-year,
body.night-mode .forest-wrap-home-arrow {
    color: #9eb0a3;
}

@media (min-width: 1100px) {
    .forest-wrap-home {
        grid-column: 1 / -1;
    }
}

/* ---------- Immersive Wrap shell ---------- */
body.forest-wrap-open {
    position: fixed;
    inset: 0;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
}

body.forest-wrap-open #backToTopButton,
body.forest-wrap-open #rainLayer {
    display: none !important;
}

.forest-wrap-view {
    position: fixed;
    z-index: 1200;
    inset: 0;
    width: 100%;
    height: 100%;
    height: 100dvh;
    min-height: 100vh;
    min-height: 100dvh;
    overflow: hidden;
    background: #f2f4ef;
    color: #2d3830;
}

.forest-wrap-shell {
    display: grid;
    grid-template-rows: auto 3px minmax(0, 1fr) auto;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
}

.forest-wrap-topbar {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 18px;
    width: min(1280px, 100%);
    min-height: 70px;
    margin: 0 auto;
    padding: max(12px, env(safe-area-inset-top)) clamp(20px, 4vw, 52px) 12px;
}

.forest-wrap-back,
.forest-wrap-privacy,
.forest-wrap-control,
.forest-wrap-replay,
.forest-wrap-dot {
    margin: 0;
    appearance: none;
    cursor: pointer;
}

.forest-wrap-back,
.forest-wrap-privacy {
    min-height: 38px;
    padding: 7px 13px;
    border: 1px solid rgba(58, 79, 64, 0.16);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.52);
    color: #526158;
    font-size: 12px;
}

.forest-wrap-back {
    display: inline-flex;
    align-items: center;
    justify-self: start;
    gap: 7px;
}

.forest-wrap-privacy {
    justify-self: end;
    min-width: 82px;
}

.forest-wrap-privacy[hidden] {
    display: none !important;
}

.forest-wrap-back:hover,
.forest-wrap-privacy:hover,
.forest-wrap-back:focus-visible,
.forest-wrap-privacy:focus-visible {
    border-color: rgba(58, 79, 64, 0.3);
    background: rgba(255, 255, 255, 0.78);
}

.forest-wrap-back:focus-visible,
.forest-wrap-privacy:focus-visible,
.forest-wrap-control:focus-visible,
.forest-wrap-replay:focus-visible,
.forest-wrap-dot:focus-visible {
    outline: 2px solid rgba(64, 91, 72, 0.54);
    outline-offset: 3px;
}

.forest-wrap-brand {
    display: inline-flex;
    align-items: baseline;
    justify-self: center;
    gap: 8px;
    color: #65746a;
    white-space: nowrap;
}

.forest-wrap-brand span {
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.19em;
}

.forest-wrap-brand strong {
    font-family: Georgia, serif;
    font-size: 17px;
    font-weight: 400;
}

.forest-wrap-progress {
    width: 100%;
    overflow: hidden;
    background: rgba(54, 75, 60, 0.08);
}

.forest-wrap-progress span {
    display: block;
    width: 14.285%;
    height: 100%;
    background: #55725e;
    transition: width 420ms cubic-bezier(.22, .7, .28, 1);
}

.forest-wrap-stage {
    position: relative;
    min-height: 0;
    outline: 0;
    touch-action: pan-y;
}

.forest-wrap-slide {
    position: absolute;
    display: grid;
    visibility: hidden;
    overflow-x: hidden;
    overflow-y: auto;
    opacity: 0;
    inset: 0;
    pointer-events: none;
    overscroll-behavior: contain;
    transform: translateX(24px);
    transition: opacity 340ms ease, transform 420ms cubic-bezier(.22, .7, .28, 1), visibility 0s linear 420ms;
}

.forest-wrap-slide.is-active {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
    transition-delay: 0s;
}

.forest-wrap-slide-inner {
    width: min(1160px, calc(100vw - 64px));
    min-height: 100%;
    margin: auto;
    padding: clamp(32px, 5vh, 64px) 0 clamp(32px, 5vh, 58px);
}

.forest-wrap-slide h1,
.forest-wrap-slide h2,
.forest-wrap-slide p {
    margin-top: 0;
}

.forest-wrap-slide h1,
.forest-wrap-slide h2,
.forest-wrap-primary-number strong,
.forest-wrap-hero-stat strong,
.forest-wrap-money-card strong {
    font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, "Noto Serif TC", serif;
}

.forest-wrap-slide h2 {
    margin-bottom: 10px;
    font-size: clamp(34px, 5vw, 62px);
    font-weight: 500;
    line-height: 1.08;
    letter-spacing: -0.045em;
}

.forest-wrap-eyebrow {
    margin-bottom: 17px;
    color: #728178;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.2em;
}

.forest-wrap-heading > p:last-child,
.forest-wrap-module-heading > div:last-child > p:last-child {
    margin-bottom: 0;
    color: #7f8b83;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: clamp(13px, 1.5vw, 16px);
    line-height: 1.7;
}

.forest-wrap-controls {
    display: grid;
    grid-template-columns: 76px minmax(120px, auto) 112px;
    align-items: center;
    justify-content: center;
    gap: 22px;
    min-height: 70px;
    padding: 10px 22px max(10px, env(safe-area-inset-bottom));
    border-top: 1px solid rgba(54, 75, 60, 0.08);
    background: rgba(247, 249, 245, 0.78);
    backdrop-filter: blur(18px);
}

.forest-wrap-control {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 48px;
    min-height: 42px;
    padding: 8px 16px;
    border: 1px solid rgba(59, 80, 64, 0.16);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.65);
    color: #4d6253;
    font-size: 13px;
}

.forest-wrap-control-next {
    border-color: #506e59;
    background: #506e59;
    color: #fff;
}

.forest-wrap-control:disabled {
    cursor: default;
    opacity: 0.32;
}

.forest-wrap-dots {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.forest-wrap-dot {
    width: 7px;
    height: 7px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: rgba(58, 79, 64, 0.22);
    transition: width 180ms ease, background-color 180ms ease;
}

.forest-wrap-dot.is-active {
    width: 24px;
    background: #58725f;
}

.forest-wrap-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* ---------- Cover ---------- */
.forest-wrap-cover {
    background:
        radial-gradient(circle at 82% 22%, rgba(109, 139, 118, 0.18), transparent 28%),
        radial-gradient(circle at 22% 86%, rgba(179, 153, 102, 0.11), transparent 30%),
        #f1f3ed;
}

.forest-wrap-cover-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(330px, .85fr);
    grid-template-rows: 1fr auto;
    align-items: center;
    gap: 24px clamp(34px, 7vw, 100px);
}

.forest-wrap-cover-copy h1 {
    margin-bottom: 24px;
    color: #314638;
    font-size: clamp(56px, 8vw, 108px);
    font-weight: 400;
    line-height: .91;
    letter-spacing: -0.065em;
}

.forest-wrap-cover-copy h1 em {
    display: block;
    margin-top: 12px;
    color: #72826d;
    font-size: .75em;
    font-style: normal;
}

.forest-wrap-lead {
    max-width: 530px;
    margin-bottom: 20px;
    color: #68776d;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: clamp(16px, 2vw, 22px);
    line-height: 1.65;
}

.forest-wrap-date-range {
    margin: 0;
    color: #8b968e;
    font-size: 11px;
    letter-spacing: .14em;
}

.forest-wrap-orbit {
    position: relative;
    display: grid;
    width: min(36vw, 390px);
    aspect-ratio: 1;
    justify-self: center;
    place-items: center;
}

.forest-wrap-orbit::before {
    position: absolute;
    width: 68%;
    height: 68%;
    border: 1px solid rgba(68, 92, 74, 0.16);
    border-radius: 50%;
    content: "";
}

.forest-wrap-orbit-year {
    color: #49604f;
    font-family: "Iowan Old Style", Georgia, serif;
    font-size: clamp(86px, 12vw, 148px);
    letter-spacing: -.1em;
    transform: translateX(-.05em);
}

.forest-wrap-orbit-ring {
    position: absolute;
    border: 1px solid rgba(68, 92, 74, 0.12);
    border-radius: 50%;
    inset: 5%;
}

.forest-wrap-orbit-ring.ring-two {
    border-style: dashed;
    inset: 17%;
    transform: rotate(22deg);
}

.forest-wrap-orbit-dot {
    position: absolute;
    width: 14px;
    height: 14px;
    border: 3px solid #f1f3ed;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(56, 74, 60, 0.1);
}

.forest-wrap-orbit-dot.dot-writing { top: 11%; left: 29%; background: #6f9277; }
.forest-wrap-orbit-dot.dot-time { top: 28%; right: 8%; background: #728ba0; }
.forest-wrap-orbit-dot.dot-wealth { right: 25%; bottom: 8%; background: #b38b48; }
.forest-wrap-orbit-dot.dot-learning { bottom: 21%; left: 8%; background: #8d7596; }

.forest-wrap-cover-note {
    display: flex;
    grid-column: 1 / -1;
    align-items: baseline;
    gap: 12px;
    padding-top: 18px;
    border-top: 1px solid rgba(65, 87, 70, 0.12);
    color: #7b8980;
}

.forest-wrap-cover-note strong {
    color: #4d6554;
    font-family: Georgia, serif;
    font-size: 25px;
    font-weight: 400;
}

.forest-wrap-cover-note span {
    font-size: 11px;
    letter-spacing: .08em;
}

/* ---------- Overview ---------- */
.forest-wrap-overview {
    background:
        radial-gradient(circle at 12% 18%, rgba(126, 152, 132, .1), transparent 26%),
        #f7f6f1;
}

.forest-wrap-overview .forest-wrap-slide-inner {
    display: grid;
    grid-template-columns: .82fr 1.18fr;
    grid-template-rows: auto 1fr;
    align-items: end;
    gap: 36px clamp(48px, 7vw, 94px);
}

.forest-wrap-heading {
    align-self: start;
}

.forest-wrap-heading h2 {
    max-width: 620px;
    color: #37493d;
}

.forest-wrap-overview-grid {
    display: grid;
    grid-column: 1;
    gap: 14px;
}

.forest-wrap-hero-stat {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: baseline;
    gap: 8px;
    padding: 22px 0;
    border-top: 1px solid rgba(64, 84, 68, .14);
}

.forest-wrap-hero-stat span {
    color: #758279;
    font-size: 12px;
}

.forest-wrap-hero-stat strong {
    color: #3e5948;
    font-size: clamp(48px, 7vw, 78px);
    font-weight: 400;
    line-height: .8;
    letter-spacing: -.055em;
}

.forest-wrap-hero-stat small {
    color: #79857d;
    font-size: 13px;
}

.forest-wrap-hero-stat.is-secondary strong {
    color: #6c786f;
}

.forest-wrap-forest-grid {
    display: grid;
    grid-column: 2;
    grid-row: 1 / span 2;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-self: stretch;
    gap: 14px;
}

.forest-wrap-forest-stat {
    display: grid;
    grid-template-columns: 46px 1fr;
    grid-template-rows: auto 1fr auto;
    min-height: 190px;
    padding: 24px;
    border: 1px solid rgba(62, 83, 67, .1);
    border-radius: 25px;
    background: rgba(255, 255, 255, .62);
}

.forest-wrap-forest-stat img {
    grid-row: 1 / span 2;
    width: 36px;
    height: 36px;
}

.forest-wrap-forest-stat > span {
    align-self: center;
    color: #718078;
    font-size: 11px;
    letter-spacing: .08em;
}

.forest-wrap-forest-stat strong {
    grid-column: 1 / -1;
    align-self: end;
    margin-top: 18px;
    color: #3f5748;
    font-family: Georgia, "Noto Serif TC", serif;
    font-size: clamp(48px, 6vw, 70px);
    font-weight: 400;
    line-height: .9;
}

.forest-wrap-forest-stat small {
    grid-column: 1 / -1;
    margin-top: 9px;
    color: #89938d;
    font-size: 11px;
}

.forest-wrap-forest-stat.is-writing { background: #f0f6f1; }
.forest-wrap-forest-stat.is-time { background: #f0f4f7; }
.forest-wrap-forest-stat.is-wealth { background: #fbf5eb; }
.forest-wrap-forest-stat.is-learning { background: #f6f1f7; }

/* ---------- Shared module slides ---------- */
.forest-wrap-module-layout {
    display: grid;
    grid-template-columns: minmax(300px, .86fr) minmax(420px, 1.14fr);
    grid-template-rows: auto 1fr auto;
    align-items: stretch;
    gap: 24px clamp(44px, 7vw, 94px);
}

.forest-wrap-module-heading {
    display: flex;
    grid-column: 1;
    align-items: flex-start;
    gap: 18px;
}

.forest-wrap-module-mark {
    display: grid;
    width: 62px;
    height: 62px;
    flex: 0 0 auto;
    border: 1px solid currentColor;
    border-radius: 20px;
    background: rgba(255, 255, 255, .5);
    opacity: .8;
    place-items: center;
}

.forest-wrap-module-mark img {
    width: 42px;
    height: 42px;
}

.forest-wrap-module-heading h2 {
    margin-bottom: 8px;
    font-size: clamp(34px, 4.4vw, 54px);
}

.forest-wrap-primary-number {
    display: flex;
    grid-column: 1;
    align-self: end;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px 13px;
    padding: 24px 0 18px;
    border-top: 1px solid currentColor;
    border-bottom: 1px solid currentColor;
}

.forest-wrap-primary-number > span {
    width: 100%;
    font-size: 12px;
    opacity: .68;
}

.forest-wrap-primary-number strong {
    font-size: clamp(76px, 11vw, 132px);
    font-weight: 400;
    line-height: .8;
    letter-spacing: -.07em;
}

.forest-wrap-primary-number small {
    font-size: 16px;
    opacity: .72;
}

.forest-wrap-stat-row {
    display: grid;
    grid-column: 1;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.forest-wrap-stat-row article {
    display: flex;
    min-height: 96px;
    padding: 17px;
    border: 1px solid rgba(60, 81, 66, .11);
    border-radius: 19px;
    background: rgba(255, 255, 255, .5);
    flex-direction: column;
    justify-content: space-between;
}

.forest-wrap-stat-row strong {
    overflow-wrap: anywhere;
    font-family: Georgia, "Noto Serif TC", serif;
    font-size: clamp(24px, 3vw, 36px);
    font-weight: 400;
    line-height: 1;
}

.forest-wrap-stat-row span,
.forest-wrap-stat-row small {
    color: inherit;
    font-size: 10px;
    line-height: 1.4;
    opacity: .65;
}

.forest-wrap-insight-card {
    display: flex;
    grid-column: 2;
    grid-row: 1 / span 3;
    min-height: 100%;
    padding: clamp(34px, 5vw, 58px);
    border: 1px solid rgba(60, 81, 66, .11);
    border-radius: 31px;
    background: rgba(255, 255, 255, .58);
    flex-direction: column;
    justify-content: center;
}

.forest-wrap-insight-card > span {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .16em;
    opacity: .62;
}

.forest-wrap-insight-card > strong {
    margin-top: 18px;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: clamp(35px, 5vw, 60px);
    font-weight: 500;
    line-height: 1.18;
    letter-spacing: -.035em;
    overflow-wrap: anywhere;
}

.forest-wrap-insight-card > p {
    margin: 26px 0 0;
    padding-top: 24px;
    border-top: 1px solid currentColor;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: 15px;
    line-height: 1.8;
    opacity: .68;
}

.forest-wrap-writing {
    color: #365743;
    background: radial-gradient(circle at 87% 14%, rgba(106, 150, 118, .15), transparent 30%), #eef6ef;
}

.forest-wrap-time {
    color: #405d71;
    background: radial-gradient(circle at 84% 16%, rgba(104, 132, 155, .16), transparent 30%), #edf4f8;
}

.forest-wrap-wealth {
    color: #74552f;
    background: radial-gradient(circle at 85% 18%, rgba(192, 143, 72, .14), transparent 30%), #fbf4e9;
}

.forest-wrap-learning {
    color: #68516f;
    background: radial-gradient(circle at 86% 16%, rgba(139, 104, 151, .14), transparent 30%), #f7f0f8;
}

/* ---------- Time milestones ---------- */
.forest-wrap-time-focus {
    justify-content: flex-start;
}

.forest-wrap-milestones {
    display: grid;
    margin-top: 28px;
}

.forest-wrap-milestone {
    display: grid;
    grid-template-columns: 78px minmax(0, 1fr) auto;
    align-items: center;
    gap: 14px;
    min-height: 65px;
    border-top: 1px solid rgba(64, 93, 113, .14);
}

.forest-wrap-milestone span,
.forest-wrap-milestone small {
    color: #718797;
    font-size: 10px;
}

.forest-wrap-milestone strong {
    overflow: hidden;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: 16px;
    font-weight: 500;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.forest-wrap-empty {
    margin: 20px 0 0;
    color: inherit;
    font-size: 12px;
    line-height: 1.7;
    opacity: .58;
}

/* ---------- Wealth ---------- */
.forest-wrap-wealth .forest-wrap-module-layout {
    grid-template-columns: minmax(300px, .8fr) minmax(500px, 1.2fr);
}

.forest-wrap-money-grid {
    display: grid;
    grid-column: 2;
    grid-row: 1 / span 2;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-self: stretch;
    gap: 13px;
}

.forest-wrap-money-card {
    display: flex;
    min-height: 136px;
    padding: 25px;
    border: 1px solid rgba(116, 85, 47, .13);
    border-radius: 24px;
    background: rgba(255, 255, 255, .56);
    flex-direction: column;
    justify-content: space-between;
}

.forest-wrap-money-card.is-balance {
    grid-column: 1 / -1;
}

.forest-wrap-money-card span {
    color: #90795e;
    font-size: 11px;
    letter-spacing: .06em;
}

.forest-wrap-money-card strong {
    font-size: clamp(31px, 4vw, 50px);
    font-weight: 400;
    line-height: 1;
    letter-spacing: -.04em;
    white-space: nowrap;
}

.forest-wrap-wealth-row {
    grid-column: 2;
    grid-row: 3;
}

.forest-wrap-wealth-row article {
    gap: 6px;
    min-height: 104px;
}

.forest-wrap-wealth-row strong {
    font-size: clamp(19px, 2.5vw, 29px);
}

/* ---------- Learning list ---------- */
.forest-wrap-song-list {
    display: grid;
    margin-top: 26px;
}

.forest-wrap-song {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    align-items: center;
    gap: 14px;
    min-height: 65px;
    border-top: 1px solid rgba(104, 81, 111, .14);
}

.forest-wrap-song > span:first-child {
    color: #907d95;
    font-family: Georgia, serif;
    font-size: 11px;
}

.forest-wrap-song > span:last-child {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.forest-wrap-song strong {
    overflow: hidden;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: 16px;
    font-weight: 500;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.forest-wrap-song small {
    color: #8d7d91;
    font-size: 10px;
}

/* ---------- Finale ---------- */
.forest-wrap-finale {
    background:
        radial-gradient(circle at 50% 44%, rgba(100, 132, 108, .15), transparent 32%),
        #f0f2e9;
}

.forest-wrap-finale-inner {
    position: relative;
    display: flex;
    align-items: center;
    max-width: 900px;
    text-align: center;
    flex-direction: column;
    justify-content: center;
}

.forest-wrap-finale h2 {
    margin-bottom: 13px;
    color: #344b3a;
    font-size: clamp(44px, 7vw, 80px);
}

.forest-wrap-finale-lead {
    max-width: 650px;
    margin-bottom: 25px;
    color: #728078;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: 15px;
    line-height: 1.8;
}

.forest-wrap-finale-ring {
    position: relative;
    display: grid;
    width: clamp(124px, 16vw, 175px);
    aspect-ratio: 1;
    margin: 3px 0 24px;
    border: 1px solid rgba(59, 82, 64, .18);
    border-radius: 50%;
    color: #506b57;
    place-content: center;
}

.forest-wrap-finale-ring::before,
.forest-wrap-finale-ring::after {
    position: absolute;
    border: 1px solid rgba(59, 82, 64, .1);
    border-radius: 50%;
    content: "";
    inset: 10px;
}

.forest-wrap-finale-ring::after {
    border-style: dashed;
    inset: -10px;
}

.forest-wrap-finale-ring span,
.forest-wrap-finale-ring strong {
    font-family: Georgia, serif;
    font-size: clamp(31px, 4vw, 46px);
    font-weight: 400;
    line-height: .78;
}

.forest-wrap-final-footprints {
    display: flex;
    justify-content: center;
    gap: 13px 24px;
    flex-wrap: wrap;
    color: #6d7b72;
    font-size: 11px;
}

.forest-wrap-final-footprints span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.forest-wrap-final-footprints i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #6f9277;
}

.forest-wrap-final-footprints i.is-time { background: #728ba0; }
.forest-wrap-final-footprints i.is-wealth { background: #b38b48; }
.forest-wrap-final-footprints i.is-learning { background: #8d7596; }

.forest-wrap-final-footprints b {
    color: #435949;
    font-family: Georgia, serif;
    font-size: 14px;
    font-weight: 400;
}

.forest-wrap-final-summary {
    max-width: 660px;
    margin: 25px 0 21px;
    padding-top: 22px;
    border-top: 1px solid rgba(59, 82, 64, .13);
    color: #566a5b;
    font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif TC", serif;
    font-size: clamp(17px, 2.2vw, 22px);
    line-height: 1.7;
}

.forest-wrap-replay {
    min-height: 42px;
    padding: 9px 19px;
    border: 1px solid rgba(65, 91, 71, .24);
    border-radius: 999px;
    background: rgba(255, 255, 255, .56);
    color: #4c6654;
    font-size: 12px;
}

.forest-wrap-finale-inner > small {
    margin-top: 16px;
    color: #98a199;
    font-size: 8px;
    letter-spacing: .08em;
}

/* ---------- Night mode ---------- */
body.night-mode .forest-wrap-view {
    color: #dfe7e1;
    background: #1d2420;
}

body.night-mode .forest-wrap-topbar,
body.night-mode .forest-wrap-controls {
    background: rgba(28, 36, 31, .86);
}

body.night-mode .forest-wrap-progress,
body.night-mode .forest-wrap-controls {
    border-color: rgba(202, 216, 206, .1);
}

body.night-mode .forest-wrap-back,
body.night-mode .forest-wrap-privacy,
body.night-mode .forest-wrap-control,
body.night-mode .forest-wrap-replay {
    border-color: rgba(196, 214, 201, .15);
    background: rgba(255, 255, 255, .045);
    color: #c8d5cc;
}

body.night-mode .forest-wrap-control-next {
    border-color: #78917f;
    background: #78917f;
    color: #17201a;
}

body.night-mode .forest-wrap-brand,
body.night-mode .forest-wrap-heading > p:last-child,
body.night-mode .forest-wrap-module-heading > div:last-child > p:last-child,
body.night-mode .forest-wrap-eyebrow {
    color: #9baa9f;
}

body.night-mode .forest-wrap-cover,
body.night-mode .forest-wrap-overview,
body.night-mode .forest-wrap-finale {
    background: radial-gradient(circle at 80% 20%, rgba(114, 145, 122, .13), transparent 32%), #1d2420;
}

body.night-mode .forest-wrap-writing { background: radial-gradient(circle at 85% 18%, rgba(87, 135, 99, .14), transparent 32%), #1b2820; color: #c6dacb; }
body.night-mode .forest-wrap-time { background: radial-gradient(circle at 85% 18%, rgba(89, 118, 142, .15), transparent 32%), #1c262d; color: #c5d4de; }
body.night-mode .forest-wrap-wealth { background: radial-gradient(circle at 85% 18%, rgba(154, 111, 53, .14), transparent 32%), #2a241b; color: #dfceb5; }
body.night-mode .forest-wrap-learning { background: radial-gradient(circle at 85% 18%, rgba(124, 91, 135, .14), transparent 32%), #29212c; color: #dbcce0; }

body.night-mode .forest-wrap-cover-copy h1,
body.night-mode .forest-wrap-heading h2,
body.night-mode .forest-wrap-finale h2 {
    color: #e2e9e3;
}

body.night-mode .forest-wrap-cover-copy h1 em,
body.night-mode .forest-wrap-cover-note strong,
body.night-mode .forest-wrap-orbit-year,
body.night-mode .forest-wrap-final-footprints b,
body.night-mode .forest-wrap-final-summary {
    color: #afc1b2;
}

body.night-mode .forest-wrap-lead,
body.night-mode .forest-wrap-date-range,
body.night-mode .forest-wrap-finale-lead,
body.night-mode .forest-wrap-final-footprints {
    color: #9daaa1;
}

body.night-mode .forest-wrap-orbit-dot {
    border-color: #1d2420;
}

body.night-mode .forest-wrap-forest-stat,
body.night-mode .forest-wrap-forest-stat.is-writing,
body.night-mode .forest-wrap-forest-stat.is-time,
body.night-mode .forest-wrap-forest-stat.is-wealth,
body.night-mode .forest-wrap-forest-stat.is-learning,
body.night-mode .forest-wrap-stat-row article,
body.night-mode .forest-wrap-insight-card,
body.night-mode .forest-wrap-money-card,
body.night-mode .forest-wrap-module-mark {
    border-color: rgba(212, 224, 215, .1);
    background: rgba(255, 255, 255, .035);
}

body.night-mode .forest-wrap-forest-stat strong,
body.night-mode .forest-wrap-hero-stat strong {
    color: #c7d6ca;
}

body.night-mode .forest-wrap-forest-stat > span,
body.night-mode .forest-wrap-forest-stat small,
body.night-mode .forest-wrap-hero-stat span,
body.night-mode .forest-wrap-hero-stat small {
    color: #98a59d;
}

/* ---------- Mobile ---------- */
@media (max-width: 780px) {
    .forest-wrap-home-card {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 16px;
        min-height: 116px;
        padding: 22px 22px 26px;
    }

    .forest-wrap-home-arrow {
        display: none;
    }

    .forest-wrap-home-year {
        font-size: 58px;
    }

    .forest-wrap-topbar {
        position: relative;
        z-index: 12;
        grid-template-columns: 44px minmax(0, 1fr) 74px;
        min-height: calc(
            56px + var(
                --forest-system-safe-top,
                env(safe-area-inset-top, 0px)
            )
        );
        padding:
            calc(
                var(
                    --forest-system-safe-top,
                    env(safe-area-inset-top, 0px)
                ) + 8px
            )
            16px
            8px;
        background: #f2f4ef;
        isolation: isolate;
    }

    .forest-wrap-back {
        position: relative;
        z-index: 1;
        display: inline-flex !important;
        visibility: visible !important;
        opacity: 1 !important;
        width: 40px;
        min-width: 40px;
        padding: 7px;
        color: #526158 !important;
        -webkit-text-fill-color: #526158;
    }

    .forest-wrap-back span:last-child {
        display: none;
    }

    .forest-wrap-privacy {
        position: relative;
        z-index: 1;
        min-width: 74px;
        padding-inline: 10px;
        font-size: 11px;
    }

    .forest-wrap-brand {
        position: relative;
        z-index: 1;
        display: inline-flex !important;
        visibility: visible !important;
        opacity: 1 !important;
        color: #65746a !important;
        -webkit-text-fill-color: #65746a;
    }

    .forest-wrap-slide-inner {
        width: calc(100vw - 36px);
        padding: 28px 0 30px;
    }

    .forest-wrap-controls {
        grid-template-columns: 48px minmax(96px, 1fr) 94px;
        gap: 12px;
        min-height: 66px;
        padding-inline: 16px;
    }

    .forest-wrap-control {
        min-width: 44px;
        min-height: 42px;
        padding-inline: 12px;
    }

    .forest-wrap-cover-grid,
    .forest-wrap-overview .forest-wrap-slide-inner,
    .forest-wrap-module-layout,
    .forest-wrap-wealth .forest-wrap-module-layout {
        display: flex;
        flex-direction: column;
    }

    .forest-wrap-cover-grid {
        align-items: stretch;
        justify-content: center;
        gap: 10px;
    }

    .forest-wrap-cover-copy h1 {
        margin-bottom: 17px;
        font-size: clamp(52px, 17vw, 78px);
    }

    .forest-wrap-cover-copy h1 em {
        display: inline;
        margin: 0 0 0 8px;
        font-size: .72em;
    }

    .forest-wrap-lead {
        margin-bottom: 14px;
        font-size: 15px;
    }

    .forest-wrap-orbit {
        width: min(54vw, 230px);
        margin: 8px auto 0;
    }

    .forest-wrap-cover-note {
        margin-top: 10px;
    }

    .forest-wrap-overview .forest-wrap-slide-inner {
        justify-content: center;
        gap: 22px;
    }

    .forest-wrap-overview-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: 100%;
        gap: 13px;
    }

    .forest-wrap-hero-stat {
        display: flex;
        align-items: flex-start;
        padding: 16px 0;
        flex-direction: column;
        gap: 7px;
    }

    .forest-wrap-hero-stat strong {
        font-size: 51px;
    }

    .forest-wrap-forest-grid {
        width: 100%;
        gap: 10px;
    }

    .forest-wrap-forest-stat {
        min-height: 142px;
        padding: 17px;
        border-radius: 20px;
    }

    .forest-wrap-forest-stat img {
        width: 30px;
        height: 30px;
    }

    .forest-wrap-forest-stat strong {
        font-size: 44px;
    }

    .forest-wrap-module-layout {
        justify-content: flex-start;
        gap: 18px;
    }

    .forest-wrap-module-heading {
        width: 100%;
    }

    .forest-wrap-module-mark {
        width: 52px;
        height: 52px;
        border-radius: 17px;
    }

    .forest-wrap-module-mark img {
        width: 35px;
        height: 35px;
    }

    .forest-wrap-module-heading h2 {
        font-size: 33px;
    }

    .forest-wrap-module-heading > div:last-child > p:last-child {
        font-size: 12px;
    }

    .forest-wrap-primary-number {
        width: 100%;
        padding: 18px 0;
    }

    .forest-wrap-primary-number strong {
        font-size: clamp(66px, 21vw, 94px);
    }

    .forest-wrap-stat-row,
    .forest-wrap-wealth-row {
        width: 100%;
        gap: 8px;
    }

    .forest-wrap-stat-row article {
        min-height: 84px;
        padding: 13px;
        border-radius: 16px;
    }

    .forest-wrap-stat-row strong {
        font-size: 26px;
    }

    .forest-wrap-insight-card {
        width: 100%;
        min-height: 210px;
        padding: 25px;
        border-radius: 23px;
    }

    .forest-wrap-insight-card > strong {
        margin-top: 13px;
        font-size: 36px;
    }

    .forest-wrap-insight-card > p {
        margin-top: 19px;
        padding-top: 17px;
        font-size: 13px;
    }

    .forest-wrap-milestones,
    .forest-wrap-song-list {
        margin-top: 20px;
    }

    .forest-wrap-milestone {
        grid-template-columns: 64px minmax(0, 1fr);
        gap: 10px;
    }

    .forest-wrap-milestone small {
        display: none;
    }

    .forest-wrap-money-grid {
        width: 100%;
    }

    .forest-wrap-money-card {
        min-height: 112px;
        padding: 18px;
        border-radius: 20px;
    }

    .forest-wrap-money-card strong {
        font-size: clamp(25px, 7.4vw, 35px);
    }

    .forest-wrap-wealth-row strong {
        font-size: 19px;
    }

    .forest-wrap-finale-inner {
        justify-content: center;
    }

    .forest-wrap-final-summary {
        font-size: 16px;
    }
}

@media (max-width: 430px) {
    .forest-wrap-home-copy > span:last-child {
        max-width: 230px;
    }

    .forest-wrap-slide-inner {
        width: calc(100vw - 30px);
        padding-top: 22px;
    }

    .forest-wrap-slide h2 {
        font-size: 31px;
    }

    .forest-wrap-eyebrow {
        margin-bottom: 12px;
        font-size: 8px;
    }

    .forest-wrap-cover-copy h1 {
        font-size: clamp(47px, 16vw, 68px);
    }

    .forest-wrap-orbit {
        width: min(48vw, 195px);
    }

    .forest-wrap-forest-stat {
        min-height: 124px;
        padding: 14px;
    }

    .forest-wrap-forest-stat strong {
        font-size: 38px;
    }

    .forest-wrap-module-heading {
        gap: 12px;
    }

    .forest-wrap-module-mark {
        width: 46px;
        height: 46px;
    }

    .forest-wrap-module-mark img {
        width: 31px;
        height: 31px;
    }

    .forest-wrap-module-heading h2 {
        font-size: 29px;
    }

    .forest-wrap-primary-number strong {
        font-size: clamp(60px, 20vw, 82px);
    }

    .forest-wrap-stat-row article {
        padding: 11px;
    }

    .forest-wrap-stat-row strong {
        font-size: 23px;
    }

    .forest-wrap-money-card strong {
        font-size: clamp(23px, 7vw, 31px);
    }

    .forest-wrap-wealth-row {
        grid-template-columns: 1fr;
    }

    .forest-wrap-wealth-row article {
        display: grid;
        grid-template-columns: 1fr auto;
        align-items: center;
        min-height: 66px;
    }

    .forest-wrap-wealth-row article span {
        grid-column: 1;
    }

    .forest-wrap-wealth-row article small {
        grid-column: 2;
        grid-row: 1 / span 2;
        text-align: right;
    }

    .forest-wrap-finale-ring {
        width: 112px;
    }
}

@media (max-height: 700px) and (min-width: 781px) {
    .forest-wrap-slide-inner {
        padding-top: 26px;
        padding-bottom: 26px;
    }

    .forest-wrap-primary-number strong {
        font-size: 74px;
    }

    .forest-wrap-insight-card {
        padding: 30px;
    }

    .forest-wrap-orbit {
        width: 280px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .forest-wrap-slide,
    .forest-wrap-progress span,
    .forest-wrap-home-progress > span,
    .forest-wrap-home-card,
    .forest-wrap-home-arrow,
    .forest-wrap-dot {
        transition: none !important;
    }
}
