@import url('https://fonts.googleapis.com/css2?family=Coiny&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Chewy&family=DM+Sans:wght@400;500;600&display=swap');
*{box-sizing:border-box}body{margin:0;background:#041710;color:#fff0d9;font-family:'DM Sans',sans-serif}main{min-height:100svh;display:grid;place-items:center;background:radial-gradient(ellipse at center,#1b3928,#03130d)}.scene{width:min(100vw,177.7778svh);aspect-ratio:16/9;position:relative;overflow:hidden;isolation:isolate;container-type:inline-size;background:#102a1c}canvas{position:absolute;width:100%;height:100%;inset:0}.brand{position:absolute;top:5%;left:4%;font-size:1cqw;letter-spacing:.25em;line-height:1.8;opacity:.8}.brand span{display:block;font-size:.57cqw;letter-spacing:.26em}.invitation{position:absolute;left:12%;top:17%;color:#ffacd4;pointer-events:none;transform:rotate(-8deg);filter:drop-shadow(0 4px 0 #442632) drop-shadow(0 8px 14px #03170c);transition:opacity .4s,transform .6s}.invitation h1{font:400 12cqw/.95 'Chewy',cursive;margin:0;letter-spacing:-.04em}.invitation p{font:400 4.4cqw/1.1 'Chewy',cursive;margin:1cqw 0;opacity:0;animation:appear .8s 1.3s forwards}.invitation>span{display:block;text-align:right;font:400 2.1cqw 'Chewy',cursive;opacity:0;animation:appear .8s 2.5s forwards}.invitation b{display:inline-block;font:400 5cqw 'Chewy';transform:rotate(10deg)}#foliage{position:absolute;inset:35% 0 0;width:100%;border:0;background:none;cursor:pointer}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:3px solid #ffd0e5;outline-offset:5px}#foliage:focus-visible{outline-offset:-8px;border-radius:30%}.dialogue{position:absolute;left:70%;top:25%;width:25%;text-align:center;color:#ffd2e6;filter:drop-shadow(0 4px 8px #03170b)}.dialogue strong{font:400 5cqw/1 'Chewy',cursive}.dialogue p{font:400 2.7cqw/1.13 'Chewy',cursive;margin:1.2cqw 0}.dialogue button{font:400 2.7cqw 'Chewy';background:#ffd0e4;color:#42313c;border:1px solid #ffe7ef;border-radius:50% 45% 48% 42%/40% 60% 45% 55%;padding:1cqw 1.5cqw;box-shadow:0 4px 25px #0a190b55}.controls{position:absolute;bottom:4%;right:3%;display:flex;gap:1.8cqw;z-index:5}.controls button,#replay{border:0;background:none;font-size:.9cqw;letter-spacing:.02em;padding:.5cqw}.caption{position:absolute;bottom:5%;left:4%;font-size:.8cqw;letter-spacing:.12em;opacity:.65}.arrival{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;background:radial-gradient(ellipse,#153c28cc,#09231f99);animation:appear 1s}.arrival[hidden]{display:none}.arrival>span{font-size:1cqw;letter-spacing:.3em}.arrival h2{font:400 7cqw/.98 'Chewy';color:#ffb5d5;margin:2cqw 0}.arrival p{font-size:1.5cqw}#replay{border-bottom:1px solid #aab892;font-size:1.1cqw}#loading{position:absolute;inset:0;display:grid;place-items:center;background:#0b2419;font-size:18px;z-index:10}.revealing .invitation{opacity:0;transform:translateY(-20px) rotate(-12deg)}.entered .brand,.entered .caption,.entered .dialogue,.entered #skip{display:none}@keyframes appear{to{opacity:1}}@media(max-width:600px){.brand{font-size:1.5cqw}.brand span{font-size:1cqw}.controls button{font-size:1.7cqw;padding:1cqw}.caption{font-size:1.4cqw}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Glossy invitation and a clear, generous welcome. */
.invitation{left:8%;top:14%;filter:drop-shadow(0 3px 0 #792e58) drop-shadow(0 8px 1px #572747) drop-shadow(0 10px 16px #173a3666)}
.invitation h1{font-size:15cqw;padding:.03em .08em .1em 0;color:#ffb0d6;background:linear-gradient(115deg,transparent 30%,#fff9fc 44%,transparent 55%),linear-gradient(#fff2f9 0%,#ffbddd 24%,#f784ba 50%,#e7549b 53%,#ffb8dd 85%);background-size:250% 100%,100% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:gloss 5s ease-in-out infinite;-webkit-text-stroke:1px #ffe0f0}
.invitation p{margin:-.5cqw 0 0 1cqw}.invitation>span{margin-right:1cqw}
@keyframes gloss{0%,20%{background-position:130% 0,0 0}65%,100%{background-position:-70% 0,0 0}}
.dialogue{left:66%;top:22%;width:32%;filter:drop-shadow(0 5px 8px #14312655);color:#773b5a}
.speech:has(#hello:not(:empty)){position:relative;background:#fff0da;border:2px solid #68482f;border-radius:48% 44% 43% 42% / 35% 43% 36% 43%;padding:2cqw 1cqw 2.4cqw;box-shadow:inset 0 3px 0 #fff9ea}
.speech:has(#hello:not(:empty)):after{content:'';position:absolute;left:3%;bottom:-1.1cqw;width:3cqw;height:3cqw;background:#fff0da;border-left:2px solid #68482f;border-bottom:2px solid #68482f;transform:skew(-30deg) rotate(-25deg);z-index:-1}
.dialogue strong{font-size:4.6cqw}.dialogue p{margin:1cqw 0 0;line-height:1.2}.dialogue p span{display:block;font-size:2.3cqw}.dialogue p b{display:block;font:400 3.6cqw/1.2 'Chewy',cursive;white-space:nowrap;letter-spacing:-.04em;margin-top:.4cqw;color:#913d66}
.dialogue button{margin-top:4cqw;font-size:3cqw;padding:.9cqw 2cqw;border:2px solid #833958;box-shadow:0 4px 0 #63394a,0 8px 20px #17332066;background:linear-gradient(#ffdfed,#f5a8ce);color:#65344e}
@media(prefers-reduced-motion:reduce){.invitation h1{animation:none}}
/* Let the invitation and welcome arrive with the choreography. */
.invitation{top:17%;left:9%;transform:rotate(-9deg)}
.invitation h1{font-size:16cqw;filter:drop-shadow(0 1px 0 #fff1fa)}
.invitation p{font-size:4.5cqw;color:#ffd2e6;text-shadow:0 2px 0 #6b304f}
.invitation>span{font-size:2.2cqw;color:#ffe2ee}
.invitation:after{content:'✦';position:absolute;right:-1.7cqw;top:1cqw;color:#fff3d9;font-size:3cqw;text-shadow:0 0 12px #fff0ba;animation:twinkle 3.5s ease-in-out infinite}
@keyframes twinkle{0%,100%{transform:scale(.5) rotate(-10deg);opacity:.25}50%{transform:scale(1) rotate(10deg);opacity:1}}
.speech:has(#hello:not(:empty)){animation:welcome-in .7s cubic-bezier(.2,.9,.3,1.15) both;background:linear-gradient(145deg,#fff8e8,#ffe8bf);box-shadow:inset 0 3px 0 #fffdf2,0 8px 24px #173d2a33}
#welcome b{animation:name-in .7s ease-out both;text-shadow:0 1px 0 #fff9e9}
.dialogue button:not([hidden]){animation:welcome-in .6s ease-out both;transition:transform .2s,filter .2s}
.dialogue button:hover{transform:translateY(-3px);filter:brightness(1.08)}
@keyframes welcome-in{from{opacity:0;transform:translateY(16px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes name-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.invitation:after,.speech,#welcome b,.dialogue button{animation:none!important}}
/* Oversized inflated lettering with an extruded raspberry edge. */

.invitation{left:7%;top:13%;filter:drop-shadow(0 2px 0 #882850) drop-shadow(0 7px 0 #752044) drop-shadow(0 13px 0 #531d39) drop-shadow(0 20px 14px #092b2666)}
.invitation h1{font-family:'Coiny','Chewy',cursive;font-size:17cqw;line-height:1.1;letter-spacing:-.065em;padding:.06em .1em .12em 0;background-image:linear-gradient(115deg,transparent 32%,#ffffff 44%,transparent 55%),linear-gradient(#fff5fb 0%,#ffd0e9 18%,#ff9ed2 39%,#ed5eaa 53%,#ffb9df 80%,#ffe6f3 100%);-webkit-text-stroke:1.5px #ffe9f5;filter:none}
.invitation p{font-size:5cqw;margin:-1.3cqw 0 .3cqw 1cqw;color:#ffd9eb;letter-spacing:.015em}
.invitation>span{font-size:2.8cqw;color:#fff0f7;text-align:left;margin-left:4cqw}.invitation b{font-size:4cqw}
.dialogue{left:65%;width:34%}.dialogue strong{font-size:4.8cqw}
.dialogue p span{font-size:2.8cqw}
.dialogue p b{font-family:'Coiny','Chewy',cursive;font-size:3.5cqw;letter-spacing:-.07em;line-height:1.5;margin-top:.2cqw;color:#f795cb;-webkit-text-stroke:.7px #ffe1f2;text-shadow:0 2px 0 #a13a72,0 4px 0 #84305f,0 6px 0 #652448,0 9px 7px #6b244640}
.dialogue button{font-size:3.4cqw;font-family:'Coiny','Chewy',cursive;padding:.6cqw 1.4cqw;box-shadow:0 3px 0 #a45078,0 7px 0 #702c50,0 12px 18px #102c2466}
.brand{font-size:1.55cqw;letter-spacing:.18em;font-weight:700;color:#fff4df;text-shadow:0 2px 0 #193a2d,0 4px 10px #062719;line-height:1.5}.brand span{display:block;font-size:.78cqw;letter-spacing:.18em;color:#ffe5c0;opacity:.9}.caption{display:none}

.invitation{filter:none}.invitation h1{filter:drop-shadow(0 2px 0 #882850) drop-shadow(0 6px 0 #752044) drop-shadow(0 10px 0 #531d39) drop-shadow(0 15px 12px #092b2666)}.invitation p,.invitation>span{filter:drop-shadow(0 2px 0 #692542) drop-shadow(0 4px 5px #102b25)}
#welcome b{color:#ef80bc;-webkit-text-stroke:.5px #ffe5f2;text-shadow:0 2px 0 #a13a72,0 4px 0 #84305f,0 6px 0 #652448,0 9px 7px #6b244640}
/* The site name is the promise of the intro: give it the visual weight. */
.dialogue{left:62%;width:37%}
.dialogue strong{font-size:3.75cqw;letter-spacing:.01em}
.dialogue p span{font-size:2.15cqw;opacity:.82}
.dialogue p b{font-size:4.45cqw;line-height:1.05;margin-top:.15cqw;letter-spacing:-.08em;-webkit-text-stroke:1.2px #542041;text-shadow:0 2px 0 #a13a72,0 4px 0 #84305f,0 6px 0 #652448,0 9px 7px #6b244640}
.dialogue strong{-webkit-text-stroke:1px #542041;text-shadow:0 2px 0 #a13a72,0 4px 0 #84305f}
.dialogue button{margin-top:3.2cqw;font-size:2.55cqw;padding:.55cqw 1.35cqw;opacity:.9}
/* A single illustrated voice: purple ink around a warm pink fill. */
.invitation h1{font-family:'Modak','Coiny','Chewy',cursive;-webkit-text-stroke:2px #4a2865;background-image:linear-gradient(115deg,transparent 31%,#fff 43%,transparent 54%),linear-gradient(#fff6fb 0%,#ffd5ed 20%,#f59acb 48%,#d77cc7 75%,#f7c4e7 100%);filter:drop-shadow(0 3px 0 #7d3d86) drop-shadow(0 7px 0 #512650) drop-shadow(0 12px 12px #2b173755)}
.dialogue p b{font-family:'Modak','Coiny','Chewy',cursive;-webkit-text-stroke:1.5px #4a2865;text-shadow:0 3px 0 #9d5aae,0 6px 0 #673574,0 9px 8px #321b3f66}
.dialogue strong{-webkit-text-stroke:1px #4a2865}
.dialogue{left:60%;width:40%;top:20%}
.speech:has(#hello:not(:empty)){padding:2.5cqw 2.4cqw 2.2cqw;background:linear-gradient(145deg,#fff8e9 0%,#ffe9d0 46%,#ffd4e9 100%);border:3px solid #6b3b68;border-radius:35% 42% 38% 44% / 32% 38% 35% 40%;box-shadow:inset 0 3px 0 #fffdf5,inset 0 -6px 0 #f0b9d2,0 10px 0 #55315e,0 18px 30px #173d2a55}
.speech:has(#hello:not(:empty)):before{content:'WELCOME TO';display:block;margin-bottom:.7cqw;color:#8e5b70;font:600 1.45cqw/1 'DM Sans',sans-serif;letter-spacing:.22em}
.speech:has(#hello:not(:empty)):after{left:8%;bottom:-1.6cqw;width:4cqw;height:4cqw;background:#ffd9df;border-left:3px solid #6b3b68;border-bottom:3px solid #6b3b68;box-shadow:-2px 3px 0 #55315e}
.dialogue strong{font-size:3.75cqw;color:#693b65;letter-spacing:.02em}
.dialogue p{margin:.45cqw 0 0}.dialogue p span{font-size:2.05cqw;color:#835c73}.dialogue p b{font-size:5.05cqw;line-height:1;display:block;color:#f58abd;background:linear-gradient(#fff4fb 0%,#ffc9e8 28%,#ed72bb 62%,#b96bc4 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;-webkit-text-stroke:1.5px #4a2865;text-shadow:0 3px 0 #9d5aae,0 6px 0 #673574,0 9px 8px #321b3f55}
.dialogue button{margin-top:2.2cqw;font-size:2.75cqw;background:linear-gradient(135deg,#ffb6d8,#e781c5);color:#fff7fc;border:2px solid #6b3b68;text-shadow:0 2px 0 #8c447d;box-shadow:0 3px 0 #a45078,0 7px 0 #702c50,0 12px 18px #17332066}
.scene{border:2px solid #d6b66c;box-shadow:inset 0 0 0 5px #f6deb044,inset 0 0 70px #061d17aa}
.brand{font-size:1.9cqw;letter-spacing:.16em;color:#fff5d9;text-shadow:0 2px 0 #503f38,0 0 14px #ffe7a8aa}.brand span{font-size:.88cqw;letter-spacing:.25em;color:#fff0c7}
.invitation h1{font-size:19cqw;letter-spacing:-.075em}
.invitation p{font-size:5.6cqw;text-shadow:0 2px 0 #692542,0 0 15px #ffb9e099}
.invitation>span{font-size:3cqw;letter-spacing:.02em}
.dialogue{left:57%;width:42%;top:18%;filter:drop-shadow(0 10px 14px #142c2866)}
.speech:has(#hello:not(:empty)){padding:2.8cqw 2.8cqw 2.5cqw;background:radial-gradient(circle at 22% 12%,#fffdf5 0%,transparent 22%),linear-gradient(145deg,#fff9e9 0%,#ffe6c9 40%,#ffc6e3 100%);border:3px solid #5d396c;border-radius:34% 44% 39% 46% / 32% 40% 33% 42%;box-shadow:inset 0 4px 0 #fffef8,inset 0 -8px 0 #edafd3,0 0 0 4px #e3c16e,0 11px 0 #55315e,0 20px 35px #173d2a66}
.speech:has(#hello:not(:empty)):before{content:none}
.dialogue strong{font-size:4.3cqw;color:#713d6b}
.dialogue p span{font-size:2.25cqw}.dialogue p b{font-size:5.35cqw;letter-spacing:-.09em;text-shadow:0 3px 0 #b16dc0,0 6px 0 #713b7d,0 9px 0 #4b2858,0 12px 10px #321b3f55}
.dialogue button{font-size:3cqw;margin-top:2.7cqw;box-shadow:0 4px 0 #a45078,0 8px 0 #702c50,0 15px 22px #17332066}
/* The Grove homepage: four conversational doors inside the same illustrated world. */
.grove-home{position:absolute;inset:0;z-index:7;overflow:auto;padding:5.5cqw 7cqw 3cqw;background:linear-gradient(145deg,#fff4d7f2,#f8c9dff0 58%,#c8d994ee);color:#34233e;animation:home-in .9s ease both}
.grove-home[hidden]{display:none}.grove-home header{display:flex;align-items:flex-start;justify-content:space-between}.grove-home .eyebrow{font-size:1.1cqw;letter-spacing:.28em;color:#6c496f;font-weight:700}.grove-home h2{font:400 8cqw/.9 'Modak','Coiny','Chewy',cursive;color:#66346b;margin:.5cqw 0 0;text-shadow:0 3px 0 #fff8e9}.home-intro{max-width:46cqw;font:400 1.65cqw/1.35 'DM Sans',sans-serif;color:#664b5f;margin:1.8cqw 0 2.5cqw}.grove-home header button{border:2px solid #63386c;border-radius:999px;background:#fff4df;color:#63386c;padding:.7cqw 1.15cqw;font-size:1.1cqw;box-shadow:0 3px 0 #8f5a91}.doors{display:grid;grid-template-columns:repeat(4,1fr);gap:1.3cqw}.door{min-height:18cqw;padding:1.5cqw;border:3px solid #68416f;border-radius:2.2cqw;text-decoration:none;color:#3d2945;box-shadow:0 7px 0 #7c4d79,0 14px 24px #68416f22;transition:transform .22s,box-shadow .22s;display:flex;flex-direction:column}.door:hover,.door:focus-visible{transform:translateY(-8px) rotate(-1deg);box-shadow:0 12px 0 #7c4d79,0 20px 28px #68416f33;outline:none}.door.food{background:#ffd0bb}.door.support{background:#cee1a9}.door.stories{background:#e4c9ef}.door.rest{background:#bfe4da}.door-icon{font-size:3.2cqw}.door h3{font:400 2.7cqw/1.02 'Modak','Coiny','Chewy',cursive;margin:1cqw 0 .8cqw;color:#55305e}.door p{font:600 1.3cqw/1.2 'DM Sans',sans-serif;margin:0 0 auto}.door small{font-size:.9cqw;line-height:1.25;margin-top:1.5cqw;color:#664b5f}.grove-home footer{display:flex;justify-content:space-between;margin-top:3cqw;padding-top:1cqw;border-top:1px solid #8c668b;color:#73586d;font-size:.8cqw;letter-spacing:.18em}.entered .grove-home{display:block}.entered .controls{z-index:8}.entered .controls #skip{display:none}@keyframes home-in{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}
@media(max-width:800px){.grove-home{padding:8cqw 6cqw 5cqw}.grove-home .eyebrow{font-size:2.2cqw}.grove-home h2{font-size:13cqw}.home-intro{font-size:3.4cqw;max-width:75cqw}.grove-home header button{font-size:2.4cqw;padding:1.2cqw 1.8cqw}.doors{grid-template-columns:repeat(2,1fr);gap:2.5cqw}.door{min-height:30cqw;padding:2.4cqw;border-radius:4cqw}.door-icon{font-size:6cqw}.door h3{font-size:5.4cqw}.door p{font-size:2.8cqw}.door small{font-size:2.1cqw}.grove-home footer{font-size:1.8cqw;margin-top:5cqw}}
/* Brand pass: let the homepage stay inside the cinematic grove. */
.grove-home{background:linear-gradient(145deg,#08271fd9,#143d2bd9 55%,#4f315bd9);color:#fff3d8}.grove-home .eyebrow{color:#ffd48f}.grove-home h2{color:#ffb6d7;text-shadow:0 3px 0 #55234e,0 6px 0 #2a1836}.home-intro{color:#ffe8c8}.grove-home header button{border-color:#f4ce85;background:#4d2c58;color:#fff2d5;box-shadow:0 3px 0 #24162d}.door{border-color:#f1c978;border-radius:38% 22% 32% 20% / 20% 28% 18% 25%;color:#fff4df;box-shadow:0 7px 0 #2b1938,0 14px 24px #030e0b66}.door:hover,.door:focus-visible{box-shadow:0 12px 0 #2b1938,0 20px 28px #030e0b88}.door.food{background:linear-gradient(145deg,#9b4e68,#61324f)}.door.support{background:linear-gradient(145deg,#477552,#244b3d)}.door.stories{background:linear-gradient(145deg,#754f86,#402b59)}.door.rest{background:linear-gradient(145deg,#337b78,#204d5b)}.door h3{color:#fff0d1;text-shadow:0 3px 0 #3d214a}.door p{color:#ffe8c8}.door small{color:#ffd99d}.grove-home footer{border-color:#d2a863;color:#ffe0a9}
.door-logo{width:100%;height:6.8cqw;object-fit:contain;object-position:center;border-radius:1cqw;margin:-.3cqw 0 .3cqw;filter:drop-shadow(0 3px 0 #24162d55)}.koso-logo{background:#fff;padding:.25cqw}.gglw-logo{background:#0a0a0c;padding:.25cqw}.door.support h3,.door.stories h3{font-size:2.35cqw}@media(max-width:800px){.door-logo{height:12cqw;border-radius:2cqw}.door.support h3,.door.stories h3{font-size:4.7cqw}}
.mission{margin:4cqw 0 2.5cqw;padding:2.4cqw 3cqw;display:grid;grid-template-columns:1fr 1.35fr;gap:3cqw;align-items:center;border-top:1px solid #d2a863;border-bottom:1px solid #d2a863;background:#071f19aa;border-radius:2cqw}.mission h3{font:400 4.1cqw/1 'Modak','Coiny','Chewy',cursive;color:#ffb6d7;margin:.7cqw 0 0;text-shadow:0 3px 0 #452143}.mission p{font-size:1.45cqw;line-height:1.45;color:#ffe8c8;margin:0}.world-notes{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2cqw}.world-notes article{padding:1.5cqw 1.4cqw;border-left:2px solid #d2a863;background:#ffffff0b}.world-notes article>span{font-size:.8cqw;letter-spacing:.18em;color:#ffd48f}.world-notes h3{font:400 2.1cqw/1.05 'Modak','Coiny','Chewy',cursive;color:#fff0d1;margin:.65cqw 0}.world-notes p{font-size:1.05cqw;line-height:1.35;color:#ffe8c8;margin:0}.world-notes article:target{background:#ffffff18;scroll-margin-top:2cqw}@media(max-width:800px){.mission{grid-template-columns:1fr;padding:4cqw;margin:6cqw 0 4cqw}.mission h3{font-size:8cqw}.mission p{font-size:3.2cqw}.world-notes{grid-template-columns:repeat(2,1fr);gap:3cqw}.world-notes article{padding:2.5cqw 2cqw}.world-notes article>span{font-size:1.8cqw}.world-notes h3{font-size:4.6cqw}.world-notes p{font-size:2.6cqw}}
/* Exploration homepage: the Grove itself is the navigation. */
.grove-home{padding:0;overflow:hidden;background:linear-gradient(180deg,#08271f66,#09281f35 55%,#04171099);color:#fff3d8}
.grove-home header{position:absolute;z-index:2;top:6%;left:7%;right:7%;align-items:flex-start}.grove-home header>div{max-width:48cqw}.grove-home .eyebrow{font-size:1cqw;letter-spacing:.32em;color:#ffd48f;text-shadow:0 2px 5px #071c14}.grove-home h2{font-size:7cqw;margin:.4cqw 0 0;color:#ffb6d7;text-shadow:0 3px 0 #452143,0 7px 16px #061b14}.grove-home header button{background:#3b2548aa;border-color:#ffd48f;color:#fff1d0;backdrop-filter:blur(4px)}
.home-intro{position:absolute;z-index:2;top:23%;left:7%;max-width:30cqw;margin:0;font:400 1.5cqw/1.3 'DM Sans',sans-serif;color:#ffe8c8;text-shadow:0 2px 6px #071c14}.doors{position:absolute;inset:0;display:block}.door{position:absolute;z-index:3;min-height:0;width:auto;padding:0;border:0;border-radius:0;background:none!important;box-shadow:none;color:#fff4df;display:block;text-shadow:0 3px 8px #061b14;transition:transform .35s ease,filter .35s ease}.door:after{content:'';position:absolute;left:0;right:0;bottom:-.45cqw;height:.18cqw;background:#e5bc70;transform:scaleX(.25);transform-origin:left;border-radius:99px;transition:transform .35s}.door:hover,.door:focus-visible{transform:translateY(-.6cqw) rotate(-2deg);box-shadow:none;filter:brightness(1.14);outline:none}.door:hover:after,.door:focus-visible:after{transform:scaleX(1)}.door.food{left:14%;bottom:20%}.door.support{right:14%;top:45%}.door.stories{left:41%;top:39%}.door.rest{right:25%;bottom:16%}.door-icon{display:block;font-size:3.3cqw;filter:drop-shadow(0 3px 4px #071c14);margin-bottom:.4cqw}.door-logo{display:block;width:15cqw;height:6cqw;object-fit:contain;object-position:center;background:transparent!important;padding:0;margin:0 0 .5cqw;filter:drop-shadow(0 3px 5px #071c14)}.koso-logo{object-position:left center}.gglw-logo{object-position:center}.door h3,.door.support h3,.door.stories h3{font:400 3.2cqw/1.02 'Modak','Coiny','Chewy',cursive;color:#fff0d1;margin:0;text-shadow:0 3px 0 #452143,0 7px 12px #061b14}.door p{font:600 1.25cqw/1.2 'DM Sans',sans-serif;color:#ffe8c8;margin:.55cqw 0 0;opacity:0;transform:translateY(.4cqw);transition:opacity .3s,transform .3s}.door small{display:block;font-size:.85cqw;line-height:1.2;color:#ffd99d;margin-top:.35cqw;max-width:14cqw;opacity:0;transition:opacity .3s}.door:hover p,.door:hover small,.door:focus-visible p,.door:focus-visible small{opacity:1;transform:translateY(0)}
.mission{position:absolute;z-index:2;left:7%;bottom:7%;max-width:36cqw;margin:0;padding:0;border:0;background:none;border-radius:0;display:block}.mission h3{font-size:3.2cqw;color:#ffd48f;text-shadow:0 3px 8px #061b14;margin:.5cqw 0}.mission p{font-size:1.2cqw;line-height:1.35;color:#ffe8c8;text-shadow:0 2px 6px #061b14}.world-notes{display:none}.grove-home footer{position:absolute;z-index:2;right:7%;bottom:5%;margin:0;border:0;padding:0;display:flex;flex-direction:column;align-items:flex-end;color:#ffd99d;font-size:.72cqw;letter-spacing:.2em;text-shadow:0 2px 5px #061b14}
@media(max-width:800px){.grove-home header{top:7%;left:6%;right:6%}.grove-home .eyebrow{font-size:2cqw}.grove-home h2{font-size:12cqw}.home-intro{top:25%;left:6%;max-width:48cqw;font-size:3cqw}.door.food{left:8%;bottom:26%}.door.support{right:7%;top:45%}.door.stories{left:34%;top:38%}.door.rest{right:9%;bottom:16%}.door-icon{font-size:6cqw}.door-logo{width:26cqw;height:10cqw}.door h3,.door.support h3,.door.stories h3{font-size:5.6cqw}.door p{font-size:2.5cqw}.door small{font-size:1.8cqw;max-width:25cqw}.mission{left:6%;bottom:7%;max-width:52cqw}.mission h3{font-size:5.5cqw}.mission p{font-size:2.5cqw}.grove-home footer{right:6%;bottom:5%;font-size:1.5cqw}}
/* Clean Grove pass: leave the scene open while interaction is developed. */
.grove-home{padding:6cqw 7cqw;overflow:hidden;background:linear-gradient(180deg,#08271f72,#09281f42 60%,#04171088);color:#fff3d8}
.grove-home header{position:relative;inset:auto;display:flex;align-items:flex-start;justify-content:space-between}.grove-home header>div{max-width:52cqw}.grove-home .eyebrow{font-size:1.1cqw}.grove-home h2{font-size:7.5cqw;margin:.5cqw 0 0}.grove-home header button{font-size:1.1cqw;margin-top:.3cqw}.home-intro{position:relative;inset:auto;max-width:34cqw;margin:1.8cqw 0 0;font-size:1.5cqw}.doors,.mission,.world-notes,.grove-home footer{display:none}
@media(max-width:800px){.grove-home{padding:8cqw 6cqw}.grove-home .eyebrow{font-size:2cqw}.grove-home h2{font-size:12cqw}.grove-home header button{font-size:2.4cqw}.home-intro{max-width:60cqw;font-size:3.2cqw;margin-top:2.5cqw}}
/* One experimental environmental discovery. */
.discovery{position:absolute;right:3.5%;bottom:4%;z-index:4;width:13cqw;height:16cqw;background:none;border:0;cursor:pointer;outline:none}.discovery i{position:absolute;bottom:0;left:50%;width:4.5cqw;height:11cqw;border:2px solid #182b18;border-radius:100% 0 100% 0;background:linear-gradient(135deg,#8aaa43,#315d32 72%);transform-origin:bottom center;box-shadow:0 4px 8px #03130d88}.discovery i:nth-child(1){transform:translateX(-70%) rotate(-35deg)}.discovery i:nth-child(2){height:14cqw;transform:translateX(-30%) rotate(4deg);background:linear-gradient(135deg,#b2c95c,#4f8037 72%)}.discovery i:nth-child(3){transform:translateX(30%) rotate(36deg);background:linear-gradient(135deg,#769d3b,#254f30 72%)}.discovery:before{content:'';position:absolute;bottom:0;left:46%;width:1.2cqw;height:9cqw;background:#2c532d;border-radius:99px;transform:rotate(8deg);transform-origin:bottom}.discovery-whisper,.discovery-over{position:absolute;left:-4cqw;top:-1cqw;white-space:nowrap;opacity:0;pointer-events:none;color:#ffe5c0;font:400 2.2cqw 'Chewy',cursive;text-shadow:0 2px 5px #061b14;transform:translateY(.5cqw);transition:opacity .5s,transform .5s}.discovery-over{top:2.2cqw;left:0;font-size:1.7cqw;color:#ffd1e5}.discovery:hover i,.discovery:focus-visible i,.discovery.discovered i{animation:leaf-nudge 2.8s ease-in-out infinite}.discovery:hover i:nth-child(1),.discovery:focus-visible i:nth-child(1),.discovery.discovered i:nth-child(1){animation-delay:-.4s}.discovery:hover i:nth-child(3),.discovery:focus-visible i:nth-child(3),.discovery.discovered i:nth-child(3){animation-delay:-.8s}.discovery:hover .discovery-whisper,.discovery:focus-visible .discovery-whisper,.discovery.discovered .discovery-whisper{opacity:1;transform:translateY(0)}.discovery:hover .discovery-over,.discovery:focus-visible .discovery-over,.discovery.discovered .discovery-over{opacity:1;transform:translateY(0);transition-delay:.35s}@keyframes leaf-nudge{0%,100%{rotate:0deg}50%{rotate:2deg}}@media(max-width:800px){.discovery{right:2%;bottom:3%;width:23cqw;height:26cqw}.discovery i{width:8cqw;height:18cqw}.discovery i:nth-child(2){height:23cqw}.discovery-whisper{font-size:4cqw;left:-5cqw}.discovery-over{font-size:3.2cqw;left:2cqw;top:4cqw}}
/* Speech bubble typography only. */
@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@500;600;700&family=Titan+One&display=swap');
.dialogue strong{display:block;font-family:'Fredoka','Chewy',sans-serif;font-size:4.25cqw;line-height:1;color:#a46bd1;letter-spacing:.01em;text-shadow:0 2px 0 #fff6ef,0 3px 0 #633575}
.dialogue p{display:flex;flex-direction:column;align-items:center;gap:.25cqw;margin:.8cqw 0 0}
.dialogue p span{display:block;font-family:'Fredoka','Chewy',sans-serif;font-size:1.9cqw;line-height:1.1;letter-spacing:.04em;color:#795a86;text-shadow:0 1px 0 #fff8ef}
.dialogue p b{display:block;font-family:'Titan One','Modak','Coiny',sans-serif;font-size:5.7cqw;line-height:.98;letter-spacing:-.055em;white-space:nowrap;color:#713b9b;background:linear-gradient(180deg,#d9a8f4 0%,#a667c9 25%,#713b9b 56%,#4b256d 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;-webkit-text-stroke:1.4px #48215f;text-shadow:0 2px 0 #f4d9fa,0 4px 0 #b16cce,0 7px 0 #6d347f,0 10px 7px #32144266}
.dialogue p b{background:linear-gradient(180deg,#f1ccff 0%,#d17af2 20%,#9b3fd0 46%,#681c9e 72%,#3b0c63 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;-webkit-text-stroke:1.6px #3b1458;text-shadow:0 2px 0 #fff0ff,0 4px 0 #df8cf8,0 7px 0 #8a2daf,0 10px 0 #4a146d,0 14px 10px #24103377}
.speech:has(#hello:not(:empty)){width:112%;margin-left:-6%;padding-left:2.5cqw;padding-right:2.5cqw}
.dialogue p b{font-size:6.35cqw;color:#541078;background:none;-webkit-text-fill-color:#541078;-webkit-text-stroke:1.8px #351044;text-shadow:0 2px 0 #e9b9ff,0 5px 0 #a448c4,0 8px 0 #64207f,0 12px 0 #351043,0 16px 10px #1e0a2d88;transform:translateX(-2cqw) scaleX(.72);transform-origin:center;display:block;letter-spacing:-.105em}
@media(max-width:800px){.dialogue p b{transform:translateX(-1.6cqw) scaleX(.7);letter-spacing:-.11em}}
@media(max-width:800px){.dialogue strong{font-size:6cqw}.dialogue p span{font-size:3cqw}.dialogue p b{font-size:7.2cqw}}
