:root {
    --forest: #17283B;
    --forest-2: #203A54;
    --forest-3: #0D1B2A;

    --cream: #F0F3F8;
    --cream-2: #DFE6F0;
    --white: #FFFFFF;

    --papaya: #FF684D;
    --papaya-d: #E94C39;

    --marigold: #F4D34F;

    --sage: #4B91C5;
    --sage-l: #DCECF7;

    --blush: #E9A5A0;

    --ink: #1B2A3D;
    --muted: #718096;

    --line: rgba(27, 42, 61, .14);
    --line-d: rgba(240, 243, 248, .17);

    --fd: 'DM Serif Display', Georgia, serif;
    --fb: 'Karla', system-ui, sans-serif;
    --fh: 'Caveat', cursive;

    --ease: cubic-bezier(.34, 1.4, .44, 1);
    --sec: clamp(84px, 9vw, 140px);

    --r-lg: 26px;
    --r-md: 18px;
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    margin: 0;
    font-family: var(--fb);
    background: var(--cream);
    color: var(--ink);
    line-height: 1.68;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased
}

a {
    text-decoration: none;
    color: inherit
}

button,
input,
select,
textarea {
    font: inherit
}

::selection {
    background: var(--papaya);
    color: #fff
}

.shell {
    width: min(1240px, calc(100% - 40px));
    margin: auto;
    position: relative;
    z-index: 2
}

.section {
    padding: var(--sec) 0;
    position: relative
}

.dark-sec {
    background: var(--forest);
    color: var(--cream)
}

.dark-sec .lead-copy {
    color: rgba(248, 243, 232, .72)
}

.soft-sec {
    background: var(--cream-2)
}

h1,
h2,
h3,
h4 {
    font-family: var(--fd);
    font-weight: 400;
    line-height: 1.06;
    letter-spacing: .01em;
    margin: 0
}

.display-xl {
    font-size: clamp(2.7rem, 4vw, 3.4rem)
}

.display-lg {
    font-size: clamp(2.1rem, 4.4vw, 3.8rem)
}

.display-md {
    font-size: clamp(1.4rem, 2.4vw, 1.9rem)
}

.serif-i {
    font-style: italic
}

.accent-p {
    color: var(--papaya-d)
}

.accent-g {
    color: var(--marigold)
}

.accent-s {
    color: #7FA273
}

.lead-copy {
    font-size: clamp(1rem, 1.25vw, 1.13rem);
    color: var(--muted);
    max-width: 62ch;
    line-height: 1.78
}

.hand {
    font-family: var(--fh);
    font-size: 1.35rem;
    color: var(--papaya-d)
}

.dark-sec .hand {
    color: var(--marigold)
}

.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-weight: 700;
    font-size: .72rem;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--papaya-d)
}

.dark-sec .eyebrow {
    color: var(--marigold)
}

.eyebrow::before {
    content: "";
    width: 30px;
    height: 2px;
    background: currentColor;
    border-radius: 2px
}

/* ---------- Buttons ---------- */
.btn-sprig {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border: 0;
    cursor: pointer;
    background: var(--papaya);
    color: #fff;
    border-radius: 100px;
    padding: 15px 28px;
    font-weight: 700;
    font-size: .82rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    box-shadow: 0 10px 24px rgba(233, 106, 58, .28);
    transition: transform .25s var(--ease), box-shadow .25s ease
}

.btn-sprig:hover {
    color: #fff;
    transform: translateY(-3px);
    box-shadow: 0 16px 32px rgba(233, 106, 58, .36)
}

.btn-sprig:active {
    transform: translateY(1px)
}

.btn-ghost {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    cursor: pointer;
    border: 2px solid var(--line);
    background: transparent;
    color: var(--ink);
    border-radius: 100px;
    padding: 13px 26px;
    font-weight: 700;
    font-size: .82rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    transition: all .25s ease
}

.btn-ghost:hover {
    background: var(--ink);
    color: var(--cream);
    border-color: var(--ink);
    transform: translateY(-3px)
}

.dark-sec .btn-ghost {
    border-color: var(--line-d);
    color: var(--cream)
}

.dark-sec .btn-ghost:hover {
    background: var(--cream);
    color: var(--forest);
    border-color: var(--cream)
}

.btn-forest {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    cursor: pointer;
    background: var(--forest);
    color: var(--cream);
    border-radius: 100px;
    padding: 14px 26px;
    font-weight: 700;
    font-size: .8rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    border: 0;
    transition: transform .25s var(--ease), background .25s ease
}

.btn-forest:hover {
    color: #fff;
    background: var(--forest-2);
    transform: translateY(-3px)
}

/* ---------- Progress + Nav ---------- */
#sprigProgress {
    position: fixed;
    top: 0;
    left: 0;
    height: 5px;
    width: 0;
    background: linear-gradient(90deg, var(--papaya), var(--marigold), var(--sage));
    z-index: 400;
    border-radius: 0 5px 5px 0
}

.nav-pod {
    position: fixed;
    top: 16px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 300;
    width: min(1240px, calc(100% - 30px));
    display: flex;
    align-items: center;
    gap: 16px;
    background: rgba(248, 243, 232, .9);
    backdrop-filter: blur(16px);
    border: 1.5px solid rgba(31, 58, 44, .14);
    border-radius: 100px;
    padding: 9px 10px 9px 22px;
    box-shadow: 0 14px 40px rgba(31, 58, 44, .10);
    transition: box-shadow .3s ease, top .3s ease
}

.nav-pod.solid {
    top: 8px;
    box-shadow: 0 18px 46px rgba(31, 58, 44, .16)
}

.brand {
    display: flex;
    align-items: center;
    gap: 11px;
    color: var(--ink)
}

.brand-mark {
    width: 42px;
    height: 42px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: var(--forest);
    color: var(--marigold);
    display: grid;
    place-items: center;
    font-size: 1.25rem;
    border: 2px solid var(--marigold);
    transition: transform .5s var(--ease)
}

.brand:hover .brand-mark {
    transform: rotate(140deg)
}

.brand-t {
    font-family: var(--fd);
    font-size: 1.12rem;
    line-height: 1;
    display: block
}

.brand-s {
    font-family: var(--fh);
    font-size: .98rem;
    color: var(--papaya-d);
    display: block;
    margin-top: 1px
}

.nav-links {
    display: flex;
    gap: 2px;
    margin-left: auto
}

.nav-links a {
    font-weight: 600;
    font-size: .72rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--ink);
    padding: 10px 13px;
    border-radius: 100px;
    opacity: .72;
    transition: all .25s ease;
    white-space: nowrap
}

.nav-links a:hover {
    opacity: 1;
    background: var(--sage-l);
    transform: translateY(-2px)
}

.nav-links a.active {
    opacity: 1;
    background: var(--forest);
    color: var(--cream)
}

.nav-cta {
    padding: 12px 22px;
    font-size: .74rem
}

.burger {
    display: none;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 2px solid var(--line);
    background: transparent;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    cursor: pointer;
    margin-left: auto
}

.burger i {
    width: 18px;
    height: 2.5px;
    background: var(--ink);
    border-radius: 3px;
    transition: all .3s ease
}

.burger.open i:nth-child(1) {
    transform: translateY(8px) rotate(45deg)
}

.burger.open i:nth-child(2) {
    opacity: 0
}

.burger.open i:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg)
}

@media(max-width:1080px) {
    .nav-links,
    .nav-cta {
        display: none
    }
    .burger {
        display: flex
    }
}

.menu-full {
    position: fixed;
    inset: 0;
    z-index: 290;
    background: var(--forest);
    color: var(--cream);
    padding: 110px 28px 36px;
    clip-path: circle(0% at calc(100% - 38px) 38px);
    transition: clip-path .75s var(--ease);
    overflow-y: auto
}

.menu-full.open {
    clip-path: circle(150% at calc(100% - 38px) 38px)
}

.menu-full ol {
    list-style: none;
    margin: 0;
    padding: 0
}

.menu-full li {
    border-bottom: 1px solid var(--line-d)
}

.menu-full li a {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 15px 4px;
    font-family: var(--fd);
    font-size: clamp(1.6rem, 6vw, 2.4rem);
    color: var(--cream);
    transform: translateY(115%);
    transition: transform .6s var(--ease), color .25s ease
}

.menu-full.open li a {
    transform: none
}

.menu-full li:nth-child(1) a { transition-delay: .08s }
.menu-full li:nth-child(2) a { transition-delay: .13s }
.menu-full li:nth-child(3) a { transition-delay: .18s }
.menu-full li:nth-child(4) a { transition-delay: .23s }
.menu-full li:nth-child(5) a { transition-delay: .28s }
.menu-full li:nth-child(6) a { transition-delay: .33s }
.menu-full li:nth-child(7) a { transition-delay: .38s }

.menu-full li a em {
    font-family: var(--fh);
    font-size: 1.2rem;
    font-style: normal;
    color: var(--marigold)
}

.menu-full li a:hover {
    color: var(--marigold);
    padding-left: 14px
}

.menu-foot {
    margin-top: 34px;
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: center
}

/* ---------- Hero ---------- */
.hero {
    position: relative;
    padding: calc(100px + 2vw) 0 0;
    background: var(--cream);
    overflow: hidden
}

.hero::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(700px 420px at 85% -5%, rgba(242, 184, 75, .18), transparent 60%),
        radial-gradient(600px 400px at -8% 45%, rgba(255, 138, 92, .14), transparent 60%)
}

.leaf {
    position: absolute;
    pointer-events: none;
    font-size: 1.6rem;
    opacity: .55;
    animation: sway 7s ease-in-out infinite;
    z-index: 0
}

.leaf.l1 { top: 16%; left: 4%; animation-delay: -1s }
.leaf.l2 { top: 58%; left: 2%; font-size: 1.1rem; animation-delay: -3s }
.leaf.l3 { top: 12%; right: 34%; font-size: 1.2rem; animation-delay: -5s }
.leaf.l4 { top: 70%; right: 3%; animation-delay: -2s }
.leaf.l5 { top: 36%; right: 46%; font-size: .95rem; animation-delay: -4s }

@keyframes sway {
    0%, 100% { transform: translateY(0) rotate(-8deg) }
    50% { transform: translateY(-18px) rotate(10deg) }
}

.hero-grid {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: clamp(32px, 5vw, 70px);
    align-items: center
}

@media(max-width:1040px) {
    .hero-grid { grid-template-columns: 1fr }
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 100px;
    padding: 9px 18px;
    font-weight: 700;
    font-size: .7rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    box-shadow: 0 8px 20px rgba(31, 58, 44, .08);
    transform: rotate(-1.5deg)
}

.hero-badge .live-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--sage);
    position: relative;
    flex: 0 0 auto
}

.hero-badge .live-dot::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: var(--sage);
    animation: ping 1.8s ease-out infinite
}

@keyframes ping {
    0% { transform: scale(1); opacity: .8 }
    100% { transform: scale(3.2); opacity: 0 }
}

.hero h1 {
    margin: 24px 0 20px
}

.hero h1 .squig {
    position: relative;
    white-space: nowrap
}

.hero h1 .squig::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -2px;
    height: 10px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 10'%3E%3Cpath d='M0 6 Q 25 0 50 6 T 100 6 T 150 6 T 200 6' fill='none' stroke='%23FF8A5C' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
    opacity: .85
}

.hero-copy {
    color: var(--muted);
    max-width: 56ch;
    font-size: 1.05rem;
    margin-bottom: 28px
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 36px
}

.hero-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px
}

.hero-chip {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 16px;
    padding: 10px 15px;
    font-weight: 600;
    font-size: .85rem;
    box-shadow: 0 6px 16px rgba(31, 58, 44, .06);
    transition: all .25s var(--ease)
}

.hero-chip:hover {
    transform: translateY(-4px) rotate(-1deg);
    border-color: var(--sage);
    box-shadow: 0 12px 26px rgba(31, 58, 44, .12)
}

/* Concierge chat */
.chat {
    background: #fff;
    border: 1.5px solid rgba(31, 58, 44, .12);
    border-radius: 30px;
    box-shadow: 0 30px 70px rgba(31, 58, 44, .14);
    overflow: hidden;
    position: relative;
    transform: rotate(.6deg);
    transition: transform .4s var(--ease)
}

.chat:hover { transform: rotate(0) }

.chat-head {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 18px 22px;
    background: var(--forest);
    color: var(--cream)
}

.chat-ava {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--marigold);
    color: var(--forest);
    display: grid;
    place-items: center;
    font-size: 1.3rem;
    flex: 0 0 auto
}

.chat-head b {
    font-family: var(--fd);
    font-size: 1.05rem;
    display: block;
    line-height: 1.2
}

.chat-head small {
    font-family: var(--fh);
    font-size: 1rem;
    color: var(--marigold)
}

.chat-head .on {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: .62rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    font-weight: 700;
    color: rgba(248, 243, 232, .75)
}

.chat-head .on i {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--sage);
    animation: ping 1.8s infinite
}

.chat-body {
    padding: 22px;
    min-height: 380px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: radial-gradient(500px 300px at 100% 0%, rgba(169, 195, 160, .14), transparent 60%);
    overflow-y: auto;
    max-height: 430px
}

.bubble {
    max-width: 82%;
    padding: 13px 17px;
    border-radius: 20px;
    font-size: .93rem;
    line-height: 1.6;
    animation: popIn .4s var(--ease)
}

@keyframes popIn {
    from { opacity: 0; transform: translateY(10px) scale(.96) }
    to { opacity: 1; transform: none }
}

.bubble.bot {
    align-self: flex-start;
    background: var(--sage-l);
    border-bottom-left-radius: 6px;
    color: var(--ink)
}

.bubble.user {
    align-self: flex-end;
    background: var(--papaya);
    color: #fff;
    border-bottom-right-radius: 6px;
    font-weight: 600
}

.bubble.typing {
    align-self: flex-start;
    background: var(--sage-l);
    display: inline-flex;
    gap: 5px;
    padding: 16px 18px
}

.bubble.typing i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--sage);
    animation: blink 1.2s infinite
}

.bubble.typing i:nth-child(2) { animation-delay: .2s }
.bubble.typing i:nth-child(3) { animation-delay: .4s }

@keyframes blink {
    0%, 80%, 100% { opacity: .25; transform: translateY(0) }
    40% { opacity: 1; transform: translateY(-4px) }
}

.chat-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0 22px 18px
}

.chat-chip {
    border: 1.5px solid var(--line);
    background: #fff;
    border-radius: 100px;
    padding: 9px 14px;
    cursor: pointer;
    font-weight: 700;
    font-size: .8rem;
    transition: all .22s var(--ease)
}

.chat-chip:hover {
    background: var(--sage-l);
    border-color: var(--sage);
    transform: translateY(-2px)
}

.chat-restart {
    display: none;
    border: 0;
    background: none;
    color: var(--muted);
    font-family: var(--fh);
    font-size: 1.1rem;
    cursor: pointer;
    padding: 0 22px 16px;
    text-align: left;
    text-decoration: underline dotted
}

.chat-restart.show { display: block }

.chat-suggest {
    margin-top: 6px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px
}

.chat-suggest .s-chip {
    background: #fff;
    border: 1.5px solid var(--sage);
    border-radius: 100px;
    padding: 8px 13px;
    font-weight: 700;
    font-size: .76rem;
    color: var(--forest)
}

.chat-cta { margin-top: 14px }

/* Wave divider */
.wave {
    display: block;
    width: 100%;
    height: 90px;
    margin-top: clamp(48px, 6vw, 80px);
    line-height: 0
}

.wave svg {
    width: 100%;
    height: 100%;
    display: block
}

/* ---------- Reveals ---------- */
.rv {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .8s var(--ease), transform .8s var(--ease);
    transition-delay: var(--d, 0s)
}
.rv.in { opacity: 1; transform: none }
.rv-l {
    opacity: 0;
    transform: translateX(-36px);
    transition: .8s var(--ease);
    transition-delay: var(--d, 0s)
}
.rv-l.in { opacity: 1; transform: none }
.rv-r {
    opacity: 0;
    transform: translateX(36px);
    transition: .8s var(--ease);
    transition-delay: var(--d, 0s)
}
.rv-r.in { opacity: 1; transform: none }
.bloom {
    opacity: 0;
    transform: scale(.85) rotate(-5deg);
    transition: .8s var(--ease);
    transition-delay: var(--d, 0s)
}
.bloom.in { opacity: 1; transform: none }

/* ---------- Section heads ---------- */
.sec-head {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 820px;
    margin-bottom: clamp(40px, 5vw, 64px);
    position: relative
}

/* ---------- About ---------- */
.about-grid {
    display: grid;
    grid-template-columns: .9fr 1.1fr;
    gap: clamp(36px, 6vw, 90px);
    align-items: start
}

@media(max-width:960px) {
    .about-grid { grid-template-columns: 1fr }
}

.emblem {
    position: relative;
    width: 300px;
    height: 300px;
    margin: 0 auto 30px;
    display: grid;
    place-items: center
}

.emblem .ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px dashed rgba(248, 243, 232, .3);
    animation: spin 26s linear infinite
}

.emblem .ring.r2 {
    inset: 26px;
    border-style: solid;
    border-color: rgba(242, 184, 75, .35);
    animation-direction: reverse;
    animation-duration: 18s
}

.emblem .core {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    background: var(--marigold);
    display: grid;
    place-items: center;
    font-size: 3.4rem;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .25)
}

.emblem .petal {
    position: absolute;
    font-size: 1.4rem;
    animation: bob 5s ease-in-out infinite
}

.emblem .petal.p1 { top: -6px; left: 44% }
.emblem .petal.p2 { right: -4px; top: 40%; animation-delay: -1.2s }
.emblem .petal.p3 { bottom: 2px; left: 40%; animation-delay: -2.4s }
.emblem .petal.p4 { left: -8px; top: 44%; animation-delay: -3.6s }

@keyframes spin { to { transform: rotate(360deg) } }
@keyframes bob {
    0%, 100% { transform: translateY(0) }
    50% { transform: translateY(-10px) }
}

.about-copy p {
    font-size: 1.03rem;
    line-height: 1.85;
    color: rgba(248, 243, 232, .75);
    margin-bottom: 20px
}

.about-copy .drop::first-letter {
    font-family: var(--fd);
    font-size: 4.6rem;
    line-height: .75;
    float: left;
    margin: 8px 12px 0 0;
    color: var(--marigold)
}

.creed {
    list-style: none;
    margin: 30px 0 0;
    padding: 0
}

.creed li {
    display: grid;
    grid-template-columns: 44px 1fr;
    gap: 16px;
    padding: 16px 0;
    border-bottom: 1px solid var(--line-d);
    align-items: start
}

.creed li .cn {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2px solid var(--marigold);
    color: var(--marigold);
    display: grid;
    place-items: center;
    font-family: var(--fh);
    font-size: 1.2rem
}

.creed li b {
    font-family: var(--fd);
    font-size: 1.15rem;
    display: block;
    margin-bottom: 3px;
    color: var(--cream)
}

.creed li p {
    margin: 0;
    font-size: .92rem;
    color: rgba(248, 243, 232, .62)
}

.impact-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 28px
}

.impact-row span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: 1px solid var(--line-d);
    border-radius: 100px;
    padding: 9px 16px;
    font-weight: 600;
    font-size: .82rem;
    color: var(--cream);
    background: rgba(248, 243, 232, .05)
}

/* ---------- Services: garden picker ---------- */
.garden-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 20px;
    padding: 14px 20px;
    margin-bottom: 26px;
    box-shadow: 0 10px 28px rgba(31, 58, 44, .07)
}

.garden-bar .gb-count {
    font-family: var(--fh);
    font-size: 1.5rem;
    color: var(--forest)
}

.garden-bar .gb-count b {
    font-family: var(--fb);
    font-size: .95rem
}

.garden-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px
}

@media(max-width:1020px) {
    .garden-grid { grid-template-columns: repeat(2, 1fr) }
}

@media(max-width:560px) {
    .garden-grid { grid-template-columns: 1fr }
}

.seed-card {
    position: relative;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: var(--r-lg) var(--r-lg) var(--r-md) var(--r-md);
    padding: 30px 24px 26px;
    display: flex;
    flex-direction: column;
    cursor: pointer;
    box-shadow: 0 12px 30px rgba(31, 58, 44, .08);
    transition: all .35s var(--ease);
    overflow: hidden
}

.seed-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background: var(--card-c, var(--sage));
    border-radius: 0 0 6px 6px;
    transition: height .35s var(--ease)
}

.seed-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 26px 54px rgba(31, 58, 44, .16);
    border-color: var(--sage)
}

.seed-card:hover::before { height: 9px }

.seed-card.planted {
    border-color: var(--forest);
    background: linear-gradient(180deg, #fff, var(--sage-l))
}

.seed-card.planted::before {
    background: var(--forest);
    height: 9px
}

.seed-card .plant-icon {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--sage-l);
    display: grid;
    place-items: center;
    font-size: 1.9rem;
    margin-bottom: 18px;
    transition: all .4s var(--ease);
    border: 1.5px solid transparent
}

.seed-card:hover .plant-icon {
    transform: scale(1.12) rotate(-8deg)
}

.seed-card.planted .plant-icon { background: var(--forest) }

.seed-card .tag {
    font-weight: 700;
    font-size: .62rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 6px
}

.seed-card h3 {
    font-size: 1.42rem;
    margin-bottom: 10px
}

.seed-card p {
    font-size: .89rem;
    color: var(--muted);
    line-height: 1.72;
    flex: 1;
    margin-bottom: 16px
}

.seed-card .plant-hint {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
    font-size: .72rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--papaya-d);
    transition: gap .3s ease
}

.seed-card:hover .plant-hint { gap: 13px }
.seed-card.planted .plant-hint { color: var(--forest) }

.seed-card .check-mark {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--forest);
    color: var(--marigold);
    display: none;
    place-items: center;
    font-size: .8rem;
    font-weight: 700;
    animation: popIn .35s var(--ease)
}

.seed-card.planted .check-mark { display: grid }

/* ---------- Why: stems ---------- */
.stems {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px
}

@media(max-width:960px) {
    .stems { grid-template-columns: 1fr 1fr }
}

@media(max-width:620px) {
    .stems { grid-template-columns: 1fr }
}

.stem {
    position: relative;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: var(--r-md);
    padding: 28px 24px;
    overflow: hidden;
    transition: all .3s var(--ease)
}

.stem::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 4px;
    background: var(--stem-c, var(--sage));
    transform: scaleY(0);
    transform-origin: top;
    transition: transform .5s var(--ease)
}

.stem:hover {
    transform: translateY(-6px);
    box-shadow: 0 20px 44px rgba(31, 58, 44, .13)
}

.stem:hover::before { transform: scaleY(1) }

.stem .s-num {
    font-family: var(--fh);
    font-size: 1.6rem;
    color: var(--stem-c, var(--papaya));
    display: block;
    margin-bottom: 8px
}

.stem .s-e {
    font-size: 1.8rem;
    display: block;
    margin-bottom: 12px
}

.stem h3 {
    font-size: 1.28rem;
    margin-bottom: 10px
}

.stem p {
    font-size: .9rem;
    color: var(--muted);
    margin: 0;
    line-height: 1.7
}

.stem .s-dot {
    position: absolute;
    top: 22px;
    right: 22px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--stem-c, var(--sage));
    opacity: .25;
    transition: opacity .3s
}

.stem:hover .s-dot { opacity: 1 }

/* ---------- Testimonials ---------- */
.voice-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px
}

@media(max-width:1000px) {
    .voice-grid { grid-template-columns: 1fr 1fr }
}

@media(max-width:620px) {
    .voice-grid { grid-template-columns: 1fr }
}

.voice-card {
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: var(--r-md);
    padding: 28px 26px;
    position: relative;
    box-shadow: 0 12px 30px rgba(31, 58, 44, .08);
    transition: all .3s var(--ease)
}

.voice-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 26px;
    right: 26px;
    height: 4px;
    border-radius: 0 0 6px 6px;
    background: var(--vc, var(--sage))
}

.voice-card:hover {
    transform: translateY(-7px) rotate(-.6deg);
    box-shadow: 0 26px 54px rgba(31, 58, 44, .15)
}

.voice-card .quote-mark {
    font-family: var(--fd);
    font-size: 4rem;
    line-height: .6;
    color: var(--vc, var(--sage));
    display: block;
    margin-bottom: 16px;
    opacity: .5
}

.voice-card .stars {
    color: var(--marigold);
    letter-spacing: .26em;
    font-size: .85rem;
    margin-bottom: 12px
}

.voice-card p {
    font-size: .92rem;
    color: var(--muted);
    line-height: 1.78;
    margin: 0 0 22px
}

.voice-card .who {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-top: 16px;
    border-top: 1px dashed var(--line)
}

.voice-card .who .face {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--vc, var(--sage-l));
    display: grid;
    place-items: center;
    font-size: 1.2rem;
    flex: 0 0 auto
}

.voice-card .who b {
    font-family: var(--fd);
    font-size: 1.02rem;
    display: block;
    line-height: 1.2;
    color: #E96A3A;
}

.voice-card .who small {
    font-size: .72rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--muted)
}

/* ---------- FAQ ---------- */
.faq-grid {
    display: grid;
    grid-template-columns: .72fr 1.28fr;
    gap: clamp(34px, 5vw, 80px);
    align-items: start
}

@media(max-width:960px) {
    .faq-grid { grid-template-columns: 1fr }
}

.faq-aside {
    position: sticky;
    top: 110px
}

@media(max-width:960px) {
    .faq-aside { position: static }
}

.faq-note {
    margin-top: 28px;
    background: #fff;
    border: 1.5px dashed var(--line);
    border-radius: var(--r-md);
    padding: 24px
}

.faq-note .ne {
    font-size: 1.9rem;
    display: block;
    margin-bottom: 10px
}

.faq-note b {
    font-family: var(--fd);
    font-size: 1.15rem;
    display: block;
    margin-bottom: 6px
}

.faq-note p {
    font-size: .9rem;
    color: var(--muted);
    margin: 0 0 16px
}

.faq-item { border-bottom: 1.5px solid var(--line) }
.faq-item:first-child { border-top: 1.5px solid var(--line) }

.faq-q {
    width: 100%;
    border: 0;
    background: transparent;
    padding: 24px 6px;
    display: grid;
    grid-template-columns: 50px 1fr 40px;
    gap: 14px;
    text-align: left;
    align-items: center;
    cursor: pointer;
    color: var(--ink);
    transition: padding .3s var(--ease)
}

.faq-q:hover { padding-left: 14px }

.faq-q .q-num {
    font-family: var(--fh);
    font-size: 1.35rem;
    color: var(--papaya-d)
}

.faq-q b {
    font-family: var(--fd);
    font-size: clamp(1.05rem, 1.7vw, 1.3rem);
    font-weight: 400
}

.faq-q .q-toggle {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 2px solid var(--line);
    position: relative;
    transition: all .35s var(--ease)
}

.faq-q .q-toggle::before,
.faq-q .q-toggle::after {
    content: "";
    position: absolute;
    background: var(--ink);
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transition: all .3s ease
}

.faq-q .q-toggle::before { width: 12px; height: 2px }
.faq-q .q-toggle::after { width: 2px; height: 12px }

.faq-item.open .faq-q .q-toggle {
    background: var(--forest);
    border-color: var(--forest);
    transform: rotate(180deg)
}

.faq-item.open .faq-q .q-toggle::before { background: var(--marigold) }
.faq-item.open .faq-q .q-toggle::after {
    background: var(--marigold);
    transform: translate(-50%, -50%) scaleY(0)
}

.faq-a {
    max-height: 0;
    overflow: hidden;
    transition: max-height .5s var(--ease)
}

.faq-a p {
    padding: 0 60px 24px 64px;
    margin: 0;
    color: var(--muted);
    font-size: .94rem;
    line-height: 1.8
}

@media(max-width:560px) {
    .faq-a p { padding: 0 8px 22px }
}

/* ---------- Newsletter: seed packet ---------- */
.seed-packet {
    display: grid;
    grid-template-columns: .9fr 1.1fr;
    border: 2px dashed var(--forest);
    border-radius: var(--r-lg);
    background: #fff;
    overflow: hidden;
    box-shadow: 0 26px 60px rgba(31, 58, 44, .12);
    position: relative
}

@media(max-width:940px) {
    .seed-packet { grid-template-columns: 1fr }
}

.packet-l {
    padding: clamp(28px, 4vw, 52px);
    background: linear-gradient(160deg, var(--sage-l), #fff);
    position: relative;
    overflow: hidden
}

.packet-l::before {
    content: "✿";
    position: absolute;
    right: -30px;
    top: -40px;
    font-size: 11rem;
    color: rgba(31, 58, 44, .05);
    transform: rotate(14deg)
}

.packet-stamp {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    border: 2px solid var(--forest);
    color: var(--forest);
    border-radius: 12px;
    padding: 8px 14px;
    font-weight: 700;
    font-size: .64rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    transform: rotate(-2deg);
    position: relative;
    z-index: 2;
    background: #fff
}

.packet-l h2 {
    font-size: clamp(1.9rem, 3.6vw, 2.9rem);
    margin: 20px 0 14px;
    position: relative;
    z-index: 2
}

.packet-l p {
    color: var(--muted);
    font-size: .98rem;
    position: relative;
    z-index: 2
}

.packet-perks {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-top: 24px;
    position: relative;
    z-index: 2
}

.packet-perks i {
    font-style: normal;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 100px;
    padding: 8px 14px;
    font-weight: 700;
    font-size: .74rem
}

.packet-r { padding: clamp(28px, 4vw, 52px) }

.fld { margin-bottom: 17px }

.fld label {
    display: block;
    font-weight: 700;
    font-size: .7rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--forest);
    margin-bottom: 8px
}

.fld input,
.fld select,
.fld textarea {
    width: 100%;
    border: 1.5px solid var(--line);
    border-radius: 14px;
    background: var(--cream);
    padding: 13px 16px;
    font-size: .96rem;
    color: var(--ink);
    outline: none;
    transition: all .25s ease
}

.fld input:focus,
.fld select:focus,
.fld textarea:focus {
    border-color: var(--sage);
    background: #fff;
    box-shadow: 0 0 0 4px rgba(169, 195, 160, .2)
}

.fld input::placeholder,
.fld textarea::placeholder { color: #A9B4A4 }

.two {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 18px
}

@media(max-width:540px) {
    .two { grid-template-columns: 1fr }
}

.chk {
    display: flex;
    gap: 11px;
    align-items: flex-start;
    margin: 4px 0 18px;
    cursor: pointer;
    font-size: .85rem;
    color: var(--muted)
}

.chk input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0
}

.cbox {
    width: 22px;
    height: 22px;
    flex: 0 0 auto;
    border: 2px solid var(--line);
    border-radius: 7px;
    background: #fff;
    display: grid;
    place-items: center;
    transition: all .2s var(--ease)
}

.cbox::after {
    content: "✓";
    font-size: .75rem;
    font-weight: 700;
    color: #fff;
    opacity: 0;
    transform: scale(.3);
    transition: all .2s var(--ease)
}

.chk input:checked+.cbox {
    background: var(--forest);
    border-color: var(--forest);
    transform: rotate(-5deg)
}

.chk input:checked+.cbox::after {
    opacity: 1;
    transform: scale(1)
}

.unsub-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: 0;
    background: none;
    cursor: pointer;
    margin-top: 15px;
    font-weight: 700;
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--muted);
    border-bottom: 2px dashed var(--line);
    padding-bottom: 2px;
    transition: all .3s ease
}

.unsub-link:hover {
    color: var(--papaya-d);
    border-color: var(--papaya-d)
}

/* ---------- Contact ---------- */
.contact-grid {
    display: grid;
    grid-template-columns: .85fr 1.15fr;
    gap: clamp(34px, 5vw, 70px);
    align-items: start
}

@media(max-width:960px) {
    .contact-grid { grid-template-columns: 1fr }
}

.station {
    border-bottom: 1.5px solid var(--line);
    padding: 20px 4px;
    display: grid;
    grid-template-columns: 52px 1fr;
    gap: 16px;
    align-items: start;
    transition: padding .3s ease
}

.station:first-child { border-top: 1.5px solid var(--line) }
.station:hover { padding-left: 14px }

.station .s-n {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: var(--sage-l);
    display: grid;
    place-items: center;
    font-family: var(--fh);
    font-size: 1.25rem;
    color: var(--forest);
    transition: all .3s var(--ease)
}

.station:hover .s-n {
    background: var(--forest);
    color: var(--marigold);
    transform: rotate(-8deg)
}

.station small {
    display: block;
    font-weight: 700;
    font-size: .64rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 3px
}

.station b { font-size: .98rem; font-weight: 600 }

.station b span {
    font-family: var(--fh);
    font-size: 1.1rem;
    color: var(--papaya-d);
    margin-right: 6px
}

.support-note {
    margin-top: 26px;
    background: var(--forest);
    color: var(--cream);
    border-radius: var(--r-md);
    padding: 24px;
    display: flex;
    gap: 16px;
    align-items: flex-start;
    box-shadow: 0 18px 44px rgba(31, 58, 44, .2)
}

.support-note .ne { font-size: 1.8rem }

.support-note b {
    font-family: var(--fd);
    font-size: 1.15rem;
    display: block;
    margin-bottom: 4px
}

.support-note p {
    margin: 0;
    font-size: .9rem;
    color: rgba(248, 243, 232, .7)
}

.contact-form {
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: var(--r-lg);
    padding: clamp(26px, 3.5vw, 44px);
    box-shadow: 0 20px 50px rgba(31, 58, 44, .1)
}

.contact-form h3 {
    font-size: 1.6rem;
    margin-bottom: 4px
}

.contact-form .hand {
    font-size: 1.2rem;
    margin-bottom: 22px;
    display: block
}

/* ---------- Footer ---------- */
footer {
    background: var(--forest-3);
    color: var(--cream);
    padding: clamp(60px, 7vw, 90px) 0 28px;
    position: relative;
    overflow: hidden
}

footer::before {
    content: "✿ ✿ ✿";
    position: absolute;
    top: 40px;
    right: 30px;
    font-size: 2rem;
    color: rgba(242, 184, 75, .12);
    letter-spacing: 1.4rem;
    transform: rotate(10deg)
}

.f-grid {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1.1fr 1.2fr;
    gap: clamp(26px, 3.5vw, 48px);
    padding-bottom: 44px;
    border-bottom: 1px solid var(--line-d)
}

@media(max-width:980px) {
    .f-grid { grid-template-columns: 1fr 1fr }
}

@media(max-width:560px) {
    .f-grid { grid-template-columns: 1fr }
}

.f-brand .brand-t { color: var(--cream) }
.f-brand .brand-s { color: var(--marigold) }

.f-desc {
    color: rgba(248, 243, 232, .6);
    font-size: .9rem;
    max-width: 36ch;
    margin: 16px 0 20px
}

.f-lbl {
    display: block;
    font-weight: 700;
    font-size: .68rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--marigold);
    margin-bottom: 18px
}

.f-list {
    list-style: none;
    margin: 0;
    padding: 0
}

.f-list li { margin-bottom: 10px }

.f-list a {
    color: rgba(248, 243, 232, .65);
    font-size: .9rem;
    transition: all .25s ease;
    display: inline-flex;
    align-items: center;
    gap: 8px
}

.f-list a::before {
    content: "✿";
    color: var(--marigold);
    font-size: .6rem;
    opacity: 0;
    transition: all .25s ease
}

.f-list a:hover {
    color: #fff;
    transform: translateX(5px)
}

.f-list a:hover::before { opacity: 1 }

.f-list li.plain {
    color: rgba(248, 243, 232, .65);
    font-size: .9rem
}

.soc-row {
    display: flex;
    gap: 9px;
    flex-wrap: wrap
}

.soc {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 1.5px solid var(--line-d);
    display: grid;
    place-items: center;
    font-size: .95rem;
    transition: all .3s var(--ease);
    color: var(--cream)
}

.soc:hover {
    background: var(--marigold);
    border-color: var(--marigold);
    color: var(--forest);
    transform: translateY(-4px) rotate(-8deg)
}

.f-remind {
    border: 1.5px dashed var(--line-d);
    border-radius: 14px;
    padding: 15px;
    margin-top: 16px;
    font-size: .84rem;
    color: rgba(248, 243, 232, .65)
}

.f-remind a {
    color: var(--marigold);
    border-bottom: 1px solid currentColor
}

.wordmark {
    font-family: var(--fd);
    font-style: italic;
    font-size: clamp(2.6rem, 13vw, 10rem);
    text-align: center;
    line-height: .9;
    color: transparent;
    -webkit-text-stroke: 1px rgba(248, 243, 232, .14);
    margin: 44px 0 20px;
    user-select: none
}

.f-bottom {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 14px;
    align-items: center;
    padding-top: 22px;
    border-top: 1px solid var(--line-d)
}

.f-bottom p {
    margin: 0;
    font-size: .74rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(248, 243, 232, .45)
}

.f-legal {
    display: flex;
    gap: 20px;
    flex-wrap: wrap
}

.f-legal button {
    border: 0;
    background: none;
    color: rgba(248, 243, 232, .45);
    font-size: .74rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    cursor: pointer;
    transition: color .25s
}

.f-legal button:hover { color: var(--marigold) }

/* ---------- Modals ---------- */
.modal-content {
    border: 1.5px solid var(--line);
    border-radius: var(--r-lg);
    overflow: hidden;
    background: var(--cream)
}

.modal-header {
    background: var(--forest);
    color: var(--cream);
    border: 0;
    padding: 24px 28px;
    align-items: flex-start
}

.modal-title {
    font-family: var(--fd);
    font-size: 1.45rem;
    font-weight: 400
}

.modal-header .sub {
    display: block;
    font-family: var(--fh);
    font-size: 1.15rem;
    color: var(--marigold);
    margin-bottom: 4px
}

.modal-header .btn-close { filter: invert(1) brightness(2) }

.modal-body {
    padding: 28px;
    font-size: .93rem;
    line-height: 1.82;
    color: var(--muted)
}

.modal-body strong { color: var(--ink) }

.modal-body h6 {
    font-family: var(--fd);
    font-weight: 400;
    font-size: 1.15rem;
    color: var(--forest);
    margin: 24px 0 8px;
    display: flex;
    align-items: center;
    gap: 10px
}

.modal-body h6::before {
    content: "✿";
    color: var(--papaya);
    font-size: .8rem
}

.modal-footer {
    border-top: 1.5px solid var(--line);
    padding: 18px 28px;
    justify-content: flex-start;
    gap: 10px;
    background: #fff
}

.modal .fld input { background: #fff }

.modal.fade .modal-dialog {
    transform: translateY(30px) scale(.97);
    transition: all .5s var(--ease);
    opacity: 0
}

.modal.show .modal-dialog {
    transform: none;
    opacity: 1
}

.modal-backdrop.show { opacity: .55 }

/* ---------- Toast ---------- */
.toast-sprig {
    position: fixed;
    left: 50%;
    bottom: 24px;
    transform: translate(-50%, 160%);
    z-index: 600;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--forest);
    color: var(--cream);
    border: 1.5px solid var(--marigold);
    border-radius: 100px;
    padding: 14px 22px;
    box-shadow: 0 20px 50px rgba(15, 34, 22, .35);
    transition: transform .55s var(--ease);
    max-width: calc(100% - 30px)
}

.toast-sprig.up { transform: translate(-50%, 0) }

.toast-sprig .te { font-size: 1.2rem }

.toast-sprig b {
    font-weight: 700;
    font-size: .82rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    display: block
}

.toast-sprig small {
    color: rgba(248, 243, 232, .65);
    font-size: .78rem
}

/* ---------- Legal Pages ---------- */
.legal-body {
    padding: 28px;
    font-size: .93rem;
    line-height: 1.82;
    color: var(--muted);
    max-width: 820px;
    margin: 0 auto
}

.legal-body p { margin-bottom: 16px }
.legal-body h6 {
    font-family: var(--fd);
    font-weight: 400;
    font-size: 1.15rem;
    color: var(--forest);
    margin: 24px 0 8px;
    display: flex;
    align-items: center;
    gap: 10px
}
.legal-body h6::before {
    content: "✿";
    color: var(--papaya);
    font-size: .8rem
}

/* ---------- Form Container (for subscribe/unsubscribe standalone) ---------- */
.form-wrap {
    max-width: 860px;
    margin: 0 auto
}

/* Back link */
.back-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
    font-weight: 700;
    font-size: .82rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--papaya-d);
    transition: gap .3s ease
}
.back-link:hover { gap: 13px }

@media(prefers-reduced-motion:reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        transition-duration: .01ms !important
    }
}