/* Grenny scenes use the shared Engine surface, text and accent tokens. */
.grenny-landing { overflow: clip; }
.grenny-landing section[id] { scroll-margin-top: 5rem; }
.grenny-landing [hidden] { display: none !important; }
.grenny-wordmark { font-size: 2rem; font-weight: 800; letter-spacing: -.07em; line-height: 1; }
.grenny-app-icon { border-radius: 27%; flex-shrink: 0; }
.grenny-availability { max-width: 10rem; font-size: .75rem; line-height: 1.4; }
.grenny-title { font-size: clamp(2.65rem,4.7vw,4.6rem); line-height: 1.07; letter-spacing: -.055em; }
.grenny-intro { max-width: 34rem; line-height: 1.6; }
.grenny-primary { border-radius: 1rem; padding: 1rem 1.5rem; }
.grenny-eyebrow { font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.grenny-section-heading { max-width: 46rem; }
.grenny-section-heading h2, .grenny-landing h2 { letter-spacing: -.045em; line-height: 1.12; }
.grenny-tiny { font-size: .72rem; line-height: 1.5; }
.grenny-phone { display: block; height: auto; border: 5px solid var(--x-border-color, var(--bs-border-color)); border-radius: 1.75rem; background: var(--x-body-bg, var(--bs-body-bg)); box-shadow: 0 1.5rem 3rem -.9rem rgba(var(--x-dark-rgb, var(--bs-dark-rgb)),.15); }
.grenny-hero-stage { position: relative; height: 35rem; max-width: 36rem; margin-inline: auto; isolation: isolate; }
.grenny-hero-disc { position: absolute; width: 90%; aspect-ratio: 1; border-radius: 50%; top: 11%; left: 4%; z-index: -2; opacity: .72; }
.grenny-hero-orbit { position: absolute; border: 1px solid var(--x-success-border-subtle, var(--bs-success-border-subtle)); border-radius: 50%; z-index: -1; }
.grenny-orbit-one { inset: 2% -4% 5%; transform: rotate(-20deg); }
.grenny-orbit-two { inset: 12% -9% 10%; transform: rotate(26deg); }
.grenny-hero-phone { position: absolute; width: 43%; max-width: 15rem; right: 8%; top: 0; transform: rotate(7deg); }
.grenny-hero-mascot { position: absolute; width: 72%; left: -4%; bottom: 5%; height: auto; }
.grenny-float { position: absolute; display: flex; align-items: center; gap: .75rem; padding: .85rem 1rem; border-radius: 1rem; z-index: 3; }
.grenny-float-reminder { left: -2%; top: 9%; max-width: 19rem; animation: grenny-drift 6s ease-in-out infinite; }
.grenny-float-saved { right: -1%; bottom: 7%; max-width: 18rem; animation: grenny-drift 7s ease-in-out -2s infinite; }
.grenny-round-icon { width: 2.7rem; height: 2.7rem; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 1.2rem; }
.grenny-leaf { position: absolute; z-index: -1; font-size: 2.4rem; }
.grenny-leaf-one { right: -2%; top: 35%; transform: rotate(25deg); }
.grenny-leaf-two { left: 0; bottom: 3%; transform: rotate(-30deg); font-size: 1.7rem; }
.grenny-motion-button { border: 0; background: transparent; font-size: .7rem; padding: .5rem; border-radius: .5rem; }
.grenny-landing.is-motion-paused *, .grenny-landing.is-motion-paused *::before, .grenny-landing.is-motion-paused *::after { animation: none !important; transition: none !important; }
.grenny-care-stage { display: grid; grid-template-columns: minmax(0,.75fr) minmax(0,1.4fr); gap: 2.5rem; align-items: center; }
.grenny-care-guide { position: relative; display: flex; flex-direction: column; align-items: center; }
.grenny-guide-bubble { position: relative; max-width: 17rem; border-radius: 1rem 1rem 1rem .2rem; padding: 1rem 1.4rem; font-weight: 600; font-size: 1.05rem; line-height: 1.4; text-align: center; }
.grenny-care-mascot { width: 100%; max-width: 16rem; height: auto; margin-top: -.25rem; }
.grenny-care-counter { position: relative; width: 6.8rem; height: 6.8rem; margin-top: -1.1rem; margin-bottom: .5rem; background: var(--x-body-bg, var(--bs-body-bg)); border-radius: 50%; }
.grenny-care-counter svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.grenny-care-counter circle { fill: none; stroke-width: 5; }
.grenny-ring-track { stroke: var(--x-border-color, var(--bs-border-color)); }
.grenny-ring-progress { stroke: var(--x-success, var(--bs-success)); stroke-linecap: round; stroke-dasharray: 257.61; stroke-dashoffset: 257.61; transition: stroke-dashoffset .6s ease; }
.grenny-care-counter > span { position: absolute; inset: 0; display: flex; gap: .15rem; align-items: center; justify-content: center; font-size: 1.15rem; }
.grenny-care-counter b { font-size: 1.8rem; }
.grenny-care-board { overflow: hidden; }
.grenny-board-header { display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: 1.5rem; }
.grenny-care-row { display: flex; align-items: center; gap: 1rem; padding: 1.5rem; transition: background-color .25s ease; }
.grenny-care-row.is-done { background-color: color-mix(in srgb,var(--x-success-bg-subtle, var(--bs-success-bg-subtle)) 40%,var(--x-body-bg, var(--bs-body-bg))); }
.grenny-plant-thumb { width: 4rem; height: 4rem; border-radius: .9rem; object-fit: cover; flex-shrink: 0; }
.grenny-care-info { flex: 1; min-width: 0; }
.grenny-care-actions { display: flex; align-items: center; justify-content: flex-end; gap: .75rem; flex-shrink: 0; min-width: 8rem; }
.grenny-care-actions .btn { padding: .7rem .8rem; font-size: .8rem; border-radius: .8rem; white-space: nowrap; }
.grenny-task-tick { font-size: 1.8rem; animation: grenny-pop .3s ease-out; }
.grenny-care-feedback { padding: 1rem 1.5rem; font-size: .85rem; min-height: 4.75rem; display: flex; align-items: center; }
.grenny-section-foot { display: flex; justify-content: space-between; align-items: start; gap: 1.5rem; margin-top: 1rem; }
.grenny-text-link { display: inline-flex; justify-content: center; align-items: center; gap: .5rem; font-size: .8rem; font-weight: 600; background: transparent; border: 0; padding: .4rem 0; text-decoration: none; }
.grenny-text-link:hover { text-decoration: underline; }
.grenny-section-foot .grenny-text-link { flex-shrink: 0; }
.grenny-checklist { padding: 0; list-style: none; display: grid; gap: 1rem; }
.grenny-checklist li { display: flex; align-items: center; gap: .8rem; }
.grenny-analysis-stage { position: relative; height: 35rem; overflow: hidden; isolation: isolate; }
.grenny-analysis-top { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.5rem; }
.grenny-signal { display: inline-flex; gap: .5rem; align-items: center; font-size: .8rem; font-weight: 600; }
.grenny-analysis-art { position: absolute; width: 87%; left: -3%; bottom: 0; }
.grenny-analysis-art img { width: 100%; height: auto; display: block; }
.grenny-scan-frame { position: absolute; left: 46%; top: 7%; width: 46%; height: 50%; border: 2px solid var(--x-success, var(--bs-success)); border-radius: 1.1rem; opacity: .4; overflow: hidden; }
.grenny-scan-frame::before, .grenny-scan-frame::after { content: ''; position: absolute; background: var(--x-success-bg-subtle, var(--bs-success-bg-subtle)); opacity: .25; }
.grenny-scan-frame span { display: none; position: absolute; width: 100%; height: 2px; background: var(--x-success, var(--bs-success)); box-shadow: 0 0 1rem var(--x-success, var(--bs-success)); }
[data-analysis-state="scanning"] .grenny-scan-frame { opacity: 1; }
[data-analysis-state="scanning"] .grenny-scan-frame span { display: block; animation: grenny-scan 1.25s ease-in-out; }
.grenny-analysis-console { position: absolute; right: 1.5rem; bottom: 1.5rem; width: min(20rem,calc(100% - 3rem)); padding: 1.3rem; min-height: 8.5rem; box-shadow: 0 1rem 2rem -.8rem rgba(var(--x-dark-rgb, var(--bs-dark-rgb)),.12); }
.grenny-analysis-console .btn { font-size: .8rem; border-radius: .75rem; padding: .75rem; }
.grenny-analysis-console > :not([hidden]) { animation: grenny-console .3s ease-out; }
.grenny-analysis-loading { display: flex; align-items: center; justify-content: center; gap: 1rem; min-height: 6rem; font-size: .9rem; }
.grenny-analysis-loading i { font-size: 1.5rem; animation: grenny-pulse .6s ease-in-out infinite alternate; }
.grenny-bento { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
.grenny-widget-card, .grenny-journal-card { overflow: hidden; position: relative; min-height: 40rem; }
.grenny-bento-copy { position: relative; z-index: 2; max-width: 28rem; }
.grenny-widget-preview { width: min(17rem,100%); border-radius: 1.7rem; padding: 1.5rem; margin: 2rem auto; transform: rotate(-3deg); position: relative; z-index: 1; }
.grenny-widget-brand { font-size: 1.5rem; }
.grenny-widget-plant { display: flex; align-items: center; gap: .8rem; }
.grenny-widget-plant img { width: 3.3rem; height: 3.3rem; border-radius: .8rem; object-fit: cover; }
.grenny-widget-preview .btn { border-radius: .8rem; font-size: .85rem; }
.grenny-notification { display: flex; align-items: center; gap: .8rem; border-radius: 1.2rem; padding: 1rem; max-width: 26rem; margin: -.6rem auto 1rem; position: relative; z-index: 2; box-shadow: 0 .6rem 1.5rem -.7rem rgba(var(--x-dark-rgb, var(--bs-dark-rgb)),.12); }
.grenny-notification.is-arriving { animation: grenny-arrive .6s cubic-bezier(.2,.8,.2,1); }
.grenny-notification-dot { width: .45rem; height: .45rem; border-radius: 50%; flex-shrink: 0; margin-left: auto; }
.grenny-widget-card > .grenny-text-link { display: flex; margin-inline: auto; }
.grenny-journal-composition { position: relative; height: 27rem; margin-top: 2rem; }
.grenny-journal-phone { width: 12rem; margin-left: 1rem; transform: rotate(-5deg); }
.grenny-history { position: absolute; right: -.5rem; bottom: 1.25rem; width: 15.5rem; padding: 1.3rem; border-radius: 1.2rem; }
.grenny-history li { display: flex; gap: .6rem; align-items: center; padding: .6rem 0; animation: grenny-console .3s ease-out; }
.grenny-history small { display: block; font-size: .7rem; margin-top: .2rem; }
.grenny-history-icon { width: 2rem; height: 2rem; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.grenny-access { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items: center; overflow: hidden; }
.grenny-access-copy { position: relative; z-index: 1; }
.grenny-access-art img { width: 115%; max-width: none; height: auto; margin-left: -12%; }
.grenny-faq { max-width: 55rem; }
.grenny-faq-item summary { cursor: pointer; line-height: 1.5; padding-right: .75rem; }
.grenny-faq-item[open] summary { color: var(--x-success-text-emphasis, var(--bs-success-text-emphasis)) !important; }
.grenny-closing { text-align: center; max-width: 45rem; margin-inline: auto; }
.grenny-closing > img { display: block; margin: 0 auto 1.5rem; }
.grenny-closing > a { display: flex; }
.grenny-credits { font-size: .68rem; line-height: 1.7; }
.grenny-credits a { color: inherit; text-decoration: underline; }
.grenny-landing :is(a,button,summary):focus-visible { outline: 3px solid var(--x-success, var(--bs-success)); outline-offset: 4px; }
@keyframes grenny-drift { 0%,100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-9px) rotate(1deg); } }
@keyframes grenny-pop { from { transform: scale(.6); opacity: .4; } to { transform: scale(1); opacity: 1; } }
@keyframes grenny-scan { 0% { top: 2%; opacity: 0; } 15% { opacity: 1; } 90% { opacity: 1; } 100% { top: 98%; opacity: 0; } }
@keyframes grenny-pulse { from { opacity: .45; } to { opacity: 1; } }
@keyframes grenny-console { from { transform: translateY(6px); opacity: .3; } to { transform: translateY(0); opacity: 1; } }
@keyframes grenny-arrive { from { transform: translateY(-2rem) scale(.96); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
@media (min-width: 992px) and (max-width: 1199.98px) {
    .grenny-hero-stage { height: 30rem; }
    .grenny-float-reminder { max-width: 17rem; left: -4%; }
    .grenny-care-stage { gap: 1.5rem; grid-template-columns: minmax(0,.6fr) minmax(0,1.4fr); }
    .grenny-care-row { padding: 1.2rem; gap: .8rem; }
    .grenny-care-actions { min-width: 7rem; }
    .grenny-analysis-stage { height: 32rem; }
    .grenny-history { right: -1rem; width: 14rem; }
}
@media (max-width: 991.98px) {
    .grenny-hero-copy { max-width: 42rem; }
    .grenny-hero-stage { height: 34rem; max-width: 33rem; margin-top: 2rem; }
    .grenny-title { font-size: clamp(2.65rem,7vw,4.2rem); }
    .grenny-care-stage { grid-template-columns: minmax(0,.65fr) minmax(0,1.4fr); gap: 1.5rem; }
    .grenny-care-row { flex-wrap: wrap; gap: .75rem; padding: 1.2rem; }
    .grenny-care-actions { flex-basis: 100%; justify-content: flex-start; }
    .grenny-analysis-stage { height: 37rem; max-width: 40rem; margin: 1.5rem auto 0; }
    .grenny-analysis-art { width: 80%; }
    .grenny-history { right: -1rem; width: 13rem; padding: 1rem; }
    .grenny-journal-phone { margin-left: -.5rem; width: 11rem; }
    .grenny-bento { gap: 1rem; }
    .grenny-widget-card,.grenny-journal-card { min-height: 40rem; }
}
@media (max-width: 767.98px) {
    .grenny-hero-stage { height: 115vw; max-height: 35rem; }
    .grenny-hero-phone { top: 3%; right: 9%; width: 43%; }
    .grenny-float { padding: .7rem .8rem; gap: .6rem; }
    .grenny-float-reminder { left: 0; top: 5%; max-width: 17rem; }
    .grenny-float-reminder > img { width: 30px; height: 30px; }
    .grenny-float-saved { right: 0; bottom: 2%; max-width: 15rem; }
    .grenny-float .text-sm { font-size: .72rem !important; }
    .grenny-float .grenny-tiny { font-size: .63rem; }
    .grenny-float .grenny-round-icon { width: 2rem; height: 2rem; }
    .grenny-hero-orbit { inset-inline: 0; }
    .grenny-leaf-one { right: 0; }
    .grenny-care-stage { grid-template-columns: 1fr; gap: 1.2rem; }
    .grenny-care-guide { display: grid; grid-template-columns: 5.5rem minmax(0,1fr) 4.5rem; align-items: center; gap: .7rem; }
    .grenny-care-mascot { grid-column: 1; grid-row: 1; width: 6rem; margin: 0; }
    .grenny-guide-bubble { grid-column: 2; grid-row: 1; font-size: .85rem; padding: .75rem; }
    .grenny-care-counter { grid-column: 3; grid-row: 1; width: 4.5rem; height: 4.5rem; margin: 0; }
    .grenny-care-counter b { font-size: 1.3rem; }
    .grenny-care-counter > span { font-size: .8rem; }
    .grenny-care-guide > p { grid-column: 1 / -1; font-size: .75rem; }
    .grenny-care-row { flex-wrap: nowrap; }
    .grenny-care-actions { flex-basis: auto; }
    .grenny-section-foot { flex-direction: column; gap: .4rem; }
    .grenny-analysis-stage { height: 32rem; }
    .grenny-analysis-art { width: 100%; bottom: 10%; left: -10%; }
    .grenny-analysis-console { right: 1rem; bottom: 1rem; width: min(19rem,calc(100% - 2rem)); }
    .grenny-bento { grid-template-columns: 1fr; gap: 1.5rem; }
    .grenny-widget-card,.grenny-journal-card { min-height: 0; }
    .grenny-widget-preview { margin-top: 1.5rem; }
    .grenny-journal-composition { height: 27rem; max-width: 28rem; margin-inline: auto; }
    .grenny-journal-phone { width: 12rem; margin-left: .5rem; }
    .grenny-history { width: 15rem; right: 0; }
    .grenny-access { grid-template-columns: 1fr; }
    .grenny-access-art img { width: 100%; margin: -1rem 0 0; }
}
@media (max-width: 479.98px) {
    .grenny-care-guide { grid-template-columns: 3.7rem minmax(0,1fr) 3.7rem; gap: .35rem; }
    .grenny-care-mascot { width: 4.5rem; margin-left: -.4rem; }
    .grenny-care-counter { width: 3.7rem; height: 3.7rem; }
    .grenny-guide-bubble { font-size: .75rem; padding: .6rem; }
    .grenny-care-row { flex-wrap: wrap; }
    .grenny-care-actions { flex-basis: 100%; }
    .grenny-plant-thumb { width: 3.4rem; height: 3.4rem; }
    .grenny-board-header,.grenny-care-feedback { padding: 1rem; }
    .grenny-care-row { padding: 1rem; }
    .grenny-analysis-stage { height: 30rem; }
    .grenny-analysis-art { width: 120%; left: -23%; bottom: 15%; }
    .grenny-analysis-top { padding: 1rem; }
    .grenny-history { width: 13rem; right: -.3rem; bottom: 0; }
    .grenny-journal-phone { width: 11rem; margin-left: -.5rem; }
    .grenny-notification { gap: .5rem; padding: .8rem; }
    .grenny-notification > img { width: 30px; height: 30px; }
    .grenny-notification strong { font-size: .8rem; }
    .grenny-notification .text-sm { font-size: .7rem !important; }
}
@media (prefers-reduced-motion: reduce) {
    .grenny-landing *, .grenny-landing *::before, .grenny-landing *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
.grenny-ai-facts { display: grid; gap: .5rem; font-size: .72rem; }
.grenny-ai-facts > div { display: flex; gap: 1rem; justify-content: space-between; padding-top: .5rem; border-top: 1px solid var(--x-border-color,var(--bs-border-color)); }
.grenny-ai-facts dt { font-weight: 500; color: var(--x-secondary-color,var(--bs-secondary-color)); white-space: nowrap; }
.grenny-ai-facts dd { margin: 0; color: var(--x-body-color,var(--bs-body-color)); text-align: right; }
@media (max-width: 767.98px) {
    .grenny-analysis-art { width: 100%; left: 0; top: 3.7rem; bottom: auto; }
    .grenny-analysis-stage[data-analysis-state="result"] { height: 38rem; }
}
.grenny-plan { display: flex; flex-direction: column; border-color: var(--x-border-color,var(--bs-border-color)); box-shadow: none; }
.grenny-plan-header { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: 1.5rem; min-height: 3rem; }
.grenny-plan-icon { width: 3rem; height: 3rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 1rem; font-size: 1.4rem; flex-shrink: 0; }
.grenny-plan-header .badge { font-size: .65rem; font-weight: 600; padding: .5rem .7rem; }
.grenny-plan-amount { display: flex; flex-wrap: wrap; align-items: baseline; gap: .45rem .7rem; }
.grenny-plan-price { font-size: clamp(2.3rem,3.5vw,3rem); font-weight: 650; letter-spacing: -.055em; line-height: 1.1; white-space: nowrap; }
.grenny-plan-unit { font-size: .8rem; white-space: nowrap; }
.grenny-plan-details { min-height: 4rem; line-height: 1.6; }
.grenny-plan-billing { font-size: .72rem; line-height: 1.6; }
@media (max-width: 991.98px) { .grenny-plan-details { min-height: 0; } }
