/* BlessU V4 — tactile botanical world. Real content remains still and legible. */
:root{--bg:#f4f1e5;--surface:#fffdf5;--surface-2:#e8eedc;--ink:#223c32;--ink-2:#4e6356;--ink-3:#677663;--line:#ccd7bd;--accent:#39714d;--accent-ink:#fffdf3;--accent-soft:#e2eccf;--radius:28px;--radius-btn:24px}
body[data-living-world=v4]{background-color:var(--bg);background-image:radial-gradient(color-mix(in srgb,var(--accent) 12%,transparent) 1px,transparent 1px);background-size:22px 22px;overflow-x:clip}
body[data-living-world=v4] .site-header{background:color-mix(in srgb,var(--bg) 95%,transparent);backdrop-filter:blur(12px)}
body[data-living-world=v4] .nav{background:var(--bg)}
body[data-living-world=v4] :is(.hero,.page-hero){background:radial-gradient(ellipse at 95% 10%,var(--accent-soft),transparent 65%)}
body[data-living-world=v4] .hero{padding-top:30px}
body[data-living-world=v4] .hero .wrap{row-gap:20px}
body[data-living-world=v4] .home-games{display:flex;align-items:center;gap:10px;flex-wrap:wrap;grid-column:1/-1;padding:4px 0 0;color:var(--ink)}
body[data-living-world=v4] .home-games-label{font-size:12px;font-weight:800;letter-spacing:.08em;color:var(--ink-2);margin-right:2px}
body[data-living-world=v4] .home-game-link{display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:750;text-decoration:none;line-height:1.2;box-shadow:0 2px 10px #0000000b;transition:transform .2s,border-color .2s,box-shadow .2s}
body[data-living-world=v4] .home-game-link:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 5px 16px #0000001a}
body[data-living-world=v4] .home-game-link:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
body[data-living-world=v4] .home-game-link svg{display:block;width:22px;height:22px;flex:none;fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
body[data-living-world=v4] .home-motion-toggle{display:inline-block;margin-top:14px;padding:3px 0;border:0;border-bottom:1px dotted var(--ink-2);background:transparent;color:var(--ink-2);font:600 12px/1.4 inherit;cursor:pointer}
body[data-living-world=v4] .home-motion-toggle:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(max-width:700px){body[data-living-world=v4] .home-games{gap:7px;padding-top:10px}body[data-living-world=v4] .home-game-link{font-size:12px;padding:7px 9px}body[data-living-world=v4] .home-game-link svg{width:19px;height:19px}}
@media(max-width:860px){body[data-living-world=v4] .hero .wrap .home-games{order:-1;grid-column:1;gap:7px;margin-top:-8px}body[data-living-world=v4] .hero .wrap>.reveal:first-child{order:0}}
body[data-living-world=v4] .hero-media{aspect-ratio:1.15;max-height:520px}
.hero-media>.living-creature{top:20px;right:20px;bottom:auto;width:82px;height:82px}
.price-row{flex-wrap:wrap}.price-row .price{white-space:nowrap;flex-shrink:0}
.price-box{flex-wrap:wrap}.price-box .price{white-space:nowrap;flex-shrink:0}.price-box .note{max-width:100%}
.product-hero>*{min-width:0}.price-box .price.sale{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:2px .4em;max-width:100%}.price-box .price.sale .price-old{margin-left:0;white-space:nowrap}
.app-panel>.panel{min-width:0}.g-btn-wrap{max-width:100%}.member-card>div{min-width:0;overflow-wrap:anywhere}
.living-product{position:relative;border-radius:var(--radius) var(--radius) 22px 22px!important;border:1px solid var(--line)!important;background:var(--surface)!important;box-shadow:0 10px 30px #344a3010;transition:box-shadow .3s,border-color .3s}
.living-product:hover{border-color:#82a567!important;box-shadow:0 16px 35px #344a3023}
.living-image{position:relative;isolation:isolate}.living-image img{transition:filter .3s;object-fit:cover}.living-image:hover img{filter:saturate(1.08)}
.living-creature{position:absolute;width:65px;height:65px;right:12px;bottom:12px;pointer-events:none;z-index:3;filter:drop-shadow(0 4px 3px #20332125);transform-origin:50% 85%}
.living-creature svg{display:block;width:100%;height:100%;overflow:visible}.living-creature .living-eyes{transform-origin:50% 48%;animation:living-blink 7s infinite;animation-delay:var(--delay,0s)}
.living-creature .pupil{transform:translate(var(--eye-x,0px),var(--eye-y,0px));transition:transform .12s}
.living-image.is-awake .living-creature{animation:living-breathe 5s ease-in-out infinite;animation-delay:var(--delay,0s)}
.living-image:hover .living-creature{animation:living-greet .6s ease-in-out 2}
.living-button{position:relative;gap:8px}.living-button .living-mini{display:inline-flex;width:22px;height:22px;flex:none;pointer-events:none}.living-mini svg{width:100%;height:100%}.living-button:hover .living-mini{animation:living-greet .6s 2}
.living-text{position:relative;padding-right:24px}.living-text::after{content:'✧';display:block;position:absolute;right:0;bottom:0;color:#88a270;opacity:.45;font-size:20px;pointer-events:none;transition:transform .5s,color .5s}
.living-image:is(picture){display:block}
.living-text:hover::after{transform:rotate(100deg);color:#bb7758}.living-text[data-grown="true"]::after{content:'✿';color:#bb7758}
.living-image[data-grown="true"]::after{content:'❧';position:absolute;left:12px;bottom:10px;font-size:40px;color:#9dba6c;text-shadow:0 2px 5px #fff;pointer-events:none;z-index:3}
.living-reaction{position:fixed;z-index:95;pointer-events:none;font-size:22px;animation:living-pop .9s ease-out forwards;color:#629248}
.garden-talk-toggle{position:fixed;left:12px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:86;background:#f8f4e7;color:#315640;border:1px solid #9db38a;border-radius:24px;padding:10px 14px;font:600 13px/1.4 inherit;cursor:pointer;box-shadow:0 4px 16px #25473620}
.garden-talk-toggle[aria-pressed=false]{background:#e8efd9}
.garden-dialogue{position:fixed;left:12px;bottom:calc(70px + env(safe-area-inset-bottom,0px));z-index:87;width:min(290px,calc(100vw - 32px));max-height:calc(100dvh - 170px);overflow:auto;padding:15px 17px;background:#fffdf3;border:1px solid #aac198;border-radius:23px 23px 23px 6px;color:#304a36;box-shadow:0 10px 32px #25473625;font-size:14px;line-height:1.65}
.garden-dialogue[hidden]{display:none}.garden-dialogue-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.garden-dialogue p{margin:7px 0 12px}.garden-dialogue small{display:block;font-size:10px;color:#6d7b63;margin-top:10px}.garden-dialogue button{cursor:pointer;font:inherit}.garden-dialogue-close{border:0;background:none;font-size:24px!important;line-height:1;width:32px;min-height:32px;color:#54694a}.garden-dialogue-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.garden-dialogue-actions a,.garden-dialogue-next{display:inline-block;padding:6px 10px;border-radius:18px;text-decoration:none;border:1px solid #becbad;background:#eef3e2;color:#36563d;font-size:12px}.garden-dialogue-actions a[hidden]{display:none}.garden-dialogue :focus-visible,.garden-talk-toggle:focus-visible{outline:3px solid #b07848;outline-offset:3px}
body:has(.install-bar.show) .garden-talk-toggle{bottom:110px}
body:has(.install-bar.show) .garden-dialogue{bottom:165px;max-height:calc(100dvh - 245px)}
.touch-buddy-host{position:relative}.living-touch-buddy{position:absolute;top:12px;right:12px;z-index:5;border:1px solid #a8bf91;border-radius:24px;background:#fffdf2ed;padding:6px 8px;min-width:64px;min-height:76px;color:#35573e;box-shadow:0 4px 12px #223c3220;touch-action:manipulation;cursor:pointer}
.living-touch-buddy>.living-creature{position:static!important;display:block;width:44px!important;height:44px!important;margin:auto;filter:none;transform-origin:50% 85%}.touch-buddy-label{display:block;font:600 10px/1.5 sans-serif;margin-top:3px}.touch-buddy-source>.living-creature{display:none}.living-touch-buddy.is-awake>.living-creature{animation:living-breathe 4s ease-in-out infinite}.living-touch-buddy.touch-greeting>.living-creature{animation:living-greet .4s 2}.living-touch-buddy.touch-pressed{background:#dce9c8}.living-touch-buddy:focus-visible{outline:3px solid #b07848;outline-offset:3px}.touch-response{box-shadow:inset 0 0 0 2px #87a97470!important}.garden-touch .living-text.touch-response::after{transform:rotate(90deg) scale(1.3);color:#bb7758}
body[data-garden-motion=off] .living-touch-buddy>.living-creature{animation:none!important}
.garden-dialogue-voice{padding:6px 10px;border:1px solid #becbad;border-radius:18px;background:#fff2d5;color:#36563d;font-size:12px!important}.garden-voice-status{display:block;font-size:11px;color:#6d7b63}.garden-dialogue-voice[hidden]{display:none}.living-touch-buddy.is-awake:not(.touch-greeting)>.living-creature{animation:living-wander 9s ease-in-out infinite}.is-speaking .living-creature svg>path:last-child{animation:living-mouth .35s ease-in-out infinite}
.living-image.is-awake:not(:hover)>.living-creature{animation:living-wander 12s ease-in-out infinite}
@keyframes living-wander{0%,30%,100%{transform:translateX(0) rotate(0)}40%,55%{transform:translateX(-7px) rotate(-7deg)}70%,85%{transform:translateX(7px) rotate(7deg)}}@keyframes living-mouth{50%{transform:translateY(2px) scaleY(1.12);transform-origin:50% 65%}}
body[data-garden-motion=off] .is-speaking .living-creature svg>path:last-child{animation:none!important}
@media(max-width:820px){.product-hero .media.living-image{position:relative;top:auto}}
@keyframes living-breathe{50%{transform:translateY(-3px) rotate(3deg)}}@keyframes living-blink{0%,44%,48%,100%{transform:scaleY(1)}46%{transform:scaleY(.08)}}@keyframes living-greet{25%{transform:rotate(-9deg) translateY(-4px)}75%{transform:rotate(9deg)}}@keyframes living-pop{to{transform:translateY(-55px) rotate(25deg);opacity:0}}
body[data-garden-motion=off] :is(.living-creature,.living-eyes,.living-mini){animation:none!important}body[data-garden-motion=off] .living-text::after{transition:none}
@media(max-width:700px){.living-creature{width:52px;height:52px;right:8px;bottom:8px}body[data-theme=garden] .hero{padding-top:14px}}
@media(prefers-reduced-motion:reduce){body[data-living-world=v4] *,body[data-living-world=v4] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Skin colours never disable the common living layer. Overrides are before CMS custom CSS. */
body[data-living-world=v4] :is(.garden-dialogue,.garden-talk-toggle,.living-touch-buddy){background:var(--surface);color:var(--ink);border-color:var(--line)}
body[data-living-world=v4] :is(.garden-dialogue-actions a,.garden-dialogue-next,.garden-dialogue-voice){background:var(--accent-soft);color:var(--ink);border-color:var(--line)}
body[data-living-world=v4] :is(.garden-dialogue small,.garden-voice-status,.garden-dialogue-close){color:var(--ink-2)}
body[data-living-world=v4] .garden-talk-toggle[aria-pressed=false]{background:var(--accent-soft)}
body[data-living-world=v4] .living-product:hover{border-color:var(--accent)!important}
/* Pair badge foreground/background explicitly; seasonal .badge ink is for buttons. */
body[data-living-world=v4] .card .badge{background:var(--surface);color:var(--ink);border:1px solid var(--line);z-index:6}
/* Keep whole components on matched colour pairs, including dark-theme dialogs. */
body[data-living-world=v4]{--ink-3:var(--ink-2)}
body[data-living-world=v4] .qr-sheet{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
body[data-living-world=v4] .qr-sheet :is(.qr-close,.qr-url){color:var(--ink-2)}
body[data-living-world=v4] .qr-sheet .btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--ink-2)}
body[data-living-world=v4] .line-button{background:#007A35;color:#fff;border-color:#007A35}
body[data-living-world=v4] .stars{color:var(--ink)}
body[data-living-world=v4] .stars i{color:var(--ink-2)}
body[data-living-world=v4][data-style=warm] :is(.eyebrow,.event-date,.price.sale,.sale-note,.status.err,.ml b,.market tr.ours td:first-child b,.card .body h3 a:hover){color:#99401F}
body[data-living-world=v4] .status.ok{color:var(--ink)}
body[data-living-world=v4] :is(input,textarea,select){background:var(--surface);color:var(--ink);border-color:var(--line)}
body[data-living-world=v4] :is(input,textarea)::placeholder{color:var(--ink-2);opacity:1}
body[data-living-world=v4] select option{background:var(--surface);color:var(--ink)}
.garden-dialogue-trait{font-size:11px;color:var(--ink-2);margin:5px 0 8px}.garden-dialogue-cast{display:flex;gap:14px;margin:8px 0}.garden-dialogue-cast[hidden],.garden-scene-history[hidden]{display:none}
.garden-cast-avatar{display:grid;justify-items:center;gap:2px;font-size:11px;color:var(--ink-2);padding:4px 8px;border:1px solid var(--line);border-radius:16px;min-width:58px}.garden-cast-avatar svg{width:36px;height:36px}.garden-cast-avatar[data-active=true]{background:var(--accent-soft);color:var(--ink);border-color:var(--ink-2)}
.garden-scene-history{list-style:none;padding:0 0 0 10px;margin:6px 0;border-left:2px solid var(--line);font-size:11px;color:var(--ink-2)}.garden-scene-history li{margin:5px 0}.garden-dialogue-scene{padding:6px 10px;border:1px solid var(--line);border-radius:18px;background:var(--accent-soft);color:var(--ink);font-size:12px!important}.garden-dialogue-scene[hidden]{display:none}
body[data-living-world=v4] .is-bantering>.living-creature,.garden-cast-avatar[data-active=true] svg{animation:living-banter 1.2s ease-in-out infinite}
@keyframes living-banter{30%{transform:translateY(-2px) rotate(-5deg)}70%{transform:translateY(-1px) rotate(5deg)}}
body[data-garden-motion=off] .garden-cast-avatar svg{animation:none!important}
.garden-cast-avatar.is-speaking svg>path:last-child,.is-speaking .living-mini svg>path:last-child{animation:living-mouth .35s ease-in-out infinite}
body[data-living-world=v4] .is-bantering>.living-mini{animation:living-banter 1.2s ease-in-out infinite}
body[data-garden-motion=off] :is(.garden-cast-avatar *,.is-speaking .living-mini svg>path:last-child){animation:none!important}
.brand-values{margin:24px 0 40px}.brand-values>.prose{max-width:78ch;margin-bottom:28px}.brand-values .features{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:700px){.brand-values .features{grid-template-columns:1fr}}
body[data-garden-motion=off] :is(.seasonal-effects *,.seasonal-pumpkin){animation:none!important}
body:has(.garden-dialogue:not([hidden])) .seasonal-pumpkin{bottom:auto;top:calc(var(--header-h) + 12px)}
