.rf-monogram{display:block;width:64px;height:46px;object-fit:contain}.signature{letter-spacing:0!important;line-height:1}.footer-top .rf-monogram{filter:brightness(0) saturate(100%) invert(88%) sepia(29%) saturate(472%) hue-rotate(338deg)}
.rooms.worlds{padding:75px 0 0;overflow:hidden;background:#052b37;color:#fff0d0;position:relative}.world-heading{text-align:center;position:relative;z-index:2;padding:0 6% 20px}.world-heading .eyebrow{color:#e8b875;margin-bottom:18px}.world-heading h2{font-size:clamp(43px,5vw,78px);line-height:1.04}.world-heading h2 em{color:#edbe7c}.world-heading>p:last-child{font-size:12px;color:#ccdbd1;margin-top:22px;line-height:1.8}.world-scene{position:relative;isolation:isolate;aspect-ratio:1.5;max-width:1800px;margin:auto}.world-panorama{width:100%;height:100%;object-fit:cover;display:block;mask-image:linear-gradient(transparent,#000 12%,#000 85%,transparent)}.world-haze{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 58%,#efae4b0c,transparent 55%);pointer-events:none;animation:lantern-breath 8s ease-in-out infinite;animation-play-state:paused}.world-portals{position:absolute;inset:6% 2% 3%;display:grid;grid-template-columns:repeat(3,1fr);gap:1%}.world-portal{position:relative;border:0;border-radius:40% 40% 12px 12px;padding:0;display:block;background:transparent;color:#fff2d6;transition:background .35s}.world-portal:hover,.world-portal:focus-visible{background:radial-gradient(ellipse,#ffd78625,transparent 68%);outline:none}.portal-number{position:absolute;top:18%;left:calc(50% - 17px);width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#082f3bca;border:1px solid #dbb981;color:#f7dbab;font-size:11px;opacity:.8;transition:transform .3s}.world-portal:hover .portal-number{transform:translateY(-8px);background:#b3603c}.portal-label{position:absolute;left:0;right:0;bottom:0;padding:25px 6px 14px;background:linear-gradient(transparent,#052b37e8 35%,#052b37);text-align:center}.portal-label small{display:block;font-size:8px;letter-spacing:1.5px;color:#e8b875;margin-bottom:10px}.portal-label strong{font:clamp(21px,2.5vw,38px) var(--serif);display:block}.portal-label em{display:block;font:11px var(--sans);color:#c4d4cc;margin-top:10px;transition:color .2s}.world-portal:hover .portal-label em{color:#f2c88c}.worlds .discovery-status{border-top:1px solid #d6b17335;margin:0 7%;padding:25px 0 30px;color:#c6d8cf}.worlds .discovery-status button{color:#efc98d}
.last-door.unfinished{height:min(920px,110vh);min-height:650px;position:relative;padding:0;text-align:left;background:#042731;overflow:hidden}.door-landscape{position:absolute;width:100%;height:100%;inset:0;object-fit:cover;object-position:center;mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}.door-atmosphere{position:absolute;inset:0;background:linear-gradient(90deg,#052a36c9,transparent 65%);pointer-events:none}.beyond-copy{position:absolute;left:7%;top:22%;width:44%;z-index:2;pointer-events:none}.beyond-copy .eyebrow{color:#e2b782;font-size:9px}.beyond-copy h2{font-size:clamp(52px,6.2vw,92px);letter-spacing:-2px;line-height:1.05;margin:25px 0}.beyond-copy>p:not(.eyebrow){font-size:13px;line-height:1.9;color:#d4dacd}.beyond-copy #door-note{margin-top:25px;color:#f2cd8e;font:italic 18px var(--serif);max-width:320px}.mystery-door{position:absolute;left:52%;top:9%;width:38%;height:76%;padding:0;border-radius:45% 45% 0 0;isolation:isolate}.mystery-door:focus-visible{outline:2px solid #edcb8a;outline-offset:4px}.knock-invitation{position:absolute;bottom:0;left:5%;right:5%;font-size:8px;letter-spacing:2px;text-align:center;background:#062c37d9;border:1px solid #d1ad6d66;border-radius:30px;padding:13px;transition:background .3s}.mystery-door:hover .knock-invitation{background:#a95838;color:#fff2d6}.knock-halo{position:absolute;width:50%;height:65%;top:18%;left:24%;background:radial-gradient(ellipse,#ffd77440,transparent 70%);pointer-events:none;opacity:.35;transition:opacity .4s}.mystery-door:hover .knock-halo,.mystery-door.knocked .knock-halo{opacity:1}.door-footnote{position:absolute;bottom:35px;left:7%;right:7%;text-align:center;font-size:7px;letter-spacing:1.8px;color:#b9c9c4}.crack-life{position:absolute;overflow:hidden;left:33%;top:24%;width:12%;height:50%;clip-path:polygon(40% 0,100% 8%,100% 100%,0 100%);opacity:.5;pointer-events:none;filter:blur(.7px)}.passing-robot,.passing-ears{position:absolute;left:-150%;top:43%;width:100%;height:27%;background:#123b3b;border-radius:22%;animation:behind-door 17s ease-in-out infinite;animation-play-state:paused;transform:translateX(-140%)}.passing-robot:before{content:'';position:absolute;left:46%;top:-30%;height:35%;width:4px;background:#123b3b}.passing-robot:after{content:'';position:absolute;left:35%;top:-38%;width:14px;height:14px;border-radius:50%;background:#123b3b}.passing-robot i,.passing-robot b{position:absolute;top:34%;width:12%;height:24%;border-radius:30%;background:#f5d38d}.passing-robot i{left:24%}.passing-robot b{right:24%}.passing-ears{top:69%;height:20%;border-radius:45%;animation-delay:7s;animation-duration:23s}.passing-ears i,.passing-ears b{position:absolute;top:-80%;width:34%;height:110%;background:#123b3b;border-radius:80% 80% 10% 10%}.passing-ears i{left:3%;transform:rotate(-15deg)}.passing-ears b{right:3%;transform:rotate(15deg)}.in-view .world-haze,.in-view .passing-robot,.in-view .passing-ears{animation-play-state:running}.page-hidden .world-haze,.page-hidden .passing-robot,.page-hidden .passing-ears{animation-play-state:paused!important}@keyframes behind-door{0%,64%,100%{transform:translateX(-140%)}70%,74%{transform:translateX(185%)}83%,90%{transform:translateX(400%)}}@keyframes lantern-breath{50%{opacity:.25}}.door-awake .knock-halo{opacity:1}
#modal[data-scene=library],#modal[data-scene=observatory],#modal[data-scene=cinema],#modal[data-scene=beyond]{background-image:linear-gradient(90deg,#062c36f2,#062c36df),url('assets/floating-worlds-henry-v50.webp');background-size:cover;border:1px solid #ceaa6b80;border-radius:18px;box-shadow:0 0 100px #d8a84f16,0 30px 100px #0009}#modal[data-scene=beyond]{background-image:linear-gradient(90deg,#062c36ee,#062c36b8),url('assets/another-door.webp');min-height:470px}#modal .close-dialog{color:#f5d598}#modal .star-chart{border-radius:50%;border:1px solid #d2b47888;background:linear-gradient(#05233399,#05233399),url('assets/galaxy.webp') center/cover;height:340px}#modal input{background:#06232f;border-color:#c5a775;color:#ffebc6}#modal .riddle{color:#f2d9ac!important}
@media(max-width:700px){.rf-monogram{width:54px;height:38px}.rooms.worlds{padding-top:65px}.world-heading{padding-bottom:5px}.world-heading h2{font-size:48px}.world-heading>p:last-child{max-width:280px;margin:20px auto;font-size:11px}.world-scene{aspect-ratio:auto}.world-panorama{display:none}.world-haze{display:none}.world-portals{position:relative;inset:auto;display:block;padding:0 5%}.world-portal{width:100%;height:480px;margin:12px 0 25px;border-radius:0;background-image:linear-gradient(0deg,#052b37 0,transparent 27%,transparent 90%,#052b37),url('assets/floating-worlds-henry-v50.webp');background-size:100% 100%,300% auto;background-repeat:no-repeat;background-position:center,left center}.world-portal.library{background-position:center,center center}.world-portal.observatory{background-position:center,right center}.world-portal:hover,.world-portal:focus-visible{background-image:linear-gradient(0deg,#052b37 0,transparent 27%,transparent 90%,#052b37),url('assets/floating-worlds-henry-v50.webp');background-color:transparent;outline:none}.portal-number{top:17%}.portal-label{bottom:0;padding-bottom:20px}.portal-label strong{font-size:32px}.portal-label small{font-size:8px}.portal-label em{font-size:11px}.worlds .discovery-status{font-size:7px;gap:15px}.worlds .discovery-status button{margin:0 0 0 auto}.last-door.unfinished{height:920px;min-height:0}.door-landscape{object-fit:cover;object-position:70% center;opacity:.9}.door-atmosphere{background:linear-gradient(180deg,#052a36f2 0,#052a36c9 30%,transparent 55%,#052a3655 80%)}.beyond-copy{left:7%;top:7%;width:86%}.beyond-copy h2{font-size:58px;margin:20px 0}.beyond-copy>p:not(.eyebrow){font-size:12px}.beyond-copy #door-note{font-size:17px;margin-top:15px}.mystery-door{left:24%;top:39%;width:65%;height:48%}.knock-invitation{font-size:7px;letter-spacing:1.2px}.door-footnote{bottom:40px;line-height:1.8;font-size:6px}.crack-life{left:35%;top:3%;height:72%;width:17%}#modal .star-chart{height:280px}}

.hero-art .crack-life{left:73%;top:22%;width:5.5%;height:17%;clip-path:polygon(20% 0,100% 0,100% 100%,0 100%);opacity:.45;filter:blur(.6px)}.hero-art .passing-robot{top:40%;height:35%}.hero-art .passing-ears{top:72%;height:24%}.rf-monogram{mix-blend-mode:multiply}.footer-top .rf-monogram{filter:none;mix-blend-mode:normal;border-radius:9px}
@media(max-width:700px){.last-door .door-landscape{top:auto;bottom:50px;height:570px;object-position:right center;mask-image:linear-gradient(transparent,#000 18%,#000 88%,transparent)}.last-door .door-atmosphere{background:linear-gradient(180deg,#052a36 0,#052a36e8 28%,transparent 55%)}.last-door .mystery-door{left:10%;top:44%;width:83%;height:43%}}

/* Transparent monogram: no surface-colored rectangle on either background. */
.rf-monogram{mix-blend-mode:normal}.footer-top .rf-monogram{filter:brightness(0) saturate(100%) invert(91%) sepia(20%) saturate(410%);border-radius:0}
.mascot-cameo{position:absolute;pointer-events:none;width:clamp(55px,7vw,105px);opacity:0;visibility:hidden;z-index:1}.mascot-cameo img{display:block;width:100%;height:auto;filter:drop-shadow(0 3px 8px #021e2980)}.cameo-silent{width:clamp(78px,10vw,145px)}.cameo-trader{width:clamp(45px,5.5vw,85px)}.wormhole-copy,.space-dogs,.coordinates{z-index:3}.reduced .mascot-cameo{display:none}@media(max-width:700px){.mascot-cameo{width:60px}.cameo-silent{width:85px}.cameo-trader{width:48px}}

/* Small pinpricks of light stay inside the illustrated hero doorway. */
.door-twinkles{position:absolute;left:57%;top:8%;width:20%;height:26%;pointer-events:none;clip-path:ellipse(48% 50% at 50% 50%)}
.door-twinkles i{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff0c5;box-shadow:0 0 7px 2px #ffcf7b77;opacity:.15;animation:door-twinkle 5.8s ease-in-out infinite;animation-play-state:paused}
.door-twinkles i:nth-child(1){left:48%;top:15%}.door-twinkles i:nth-child(2){left:23%;top:43%;animation-delay:-2.6s;width:3px;height:3px}.door-twinkles i:nth-child(3){left:72%;top:53%;animation-delay:-4.1s}.door-twinkles i:nth-child(4){left:40%;top:77%;animation-delay:-1.2s;width:3px;height:3px}.door-twinkles i:nth-child(5){left:65%;top:33%;animation-delay:-3.3s;width:2px;height:2px}
.in-view .door-twinkles i{animation-play-state:running}.page-hidden .door-twinkles i{animation-play-state:paused!important}.reduced .door-twinkles i{animation:none;opacity:.3}
@keyframes door-twinkle{0%,100%{opacity:.12;transform:scale(.65)}50%{opacity:.8;transform:scale(1.15)}}
@media(prefers-reduced-motion:reduce){.door-twinkles i{animation:none;opacity:.3}}
/* Let the illustrated universe dissolve gently into the closing credits. */
footer{position:relative;isolation:isolate;overflow:hidden;background:#052b36;border-top:0}
footer:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(180deg,#052b36 0%,#052b36d9 25%,#052b36dc 75%,#052b36f5),url('assets/another-door.webp');background-size:100% 100%,cover;background-position:center,10% 75%;opacity:.7}
footer:after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 85% 85%,#cf975614,transparent 55%),radial-gradient(ellipse at 10% 60%,#47978918,transparent 60%)}
.door-footnote{font-size:clamp(11px,1.1vw,15px);letter-spacing:.8px;color:#d8d5be;text-shadow:0 1px 8px #052b36}

/* An ink-drawn pond: a quiet, living end to the journey. */
footer{background:radial-gradient(ellipse at 45% 65%,#235853 0,#123f44 48%,#052b36 100%)}footer:before,footer:after{display:none}
.pond-scene{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.pond-ink{position:absolute;inset:0;width:100%;height:100%;opacity:.8}
.pond-origin{position:absolute;left:var(--pond-x,45%);top:var(--pond-y,65%);width:0;height:0}
.water-ring{position:absolute;left:0;top:0;width:150vmax;height:65vmax;border:1.5px solid #e5cc9255;border-radius:50%;box-shadow:0 3px 0 #7db6a326,inset 0 2px 0 #cae2b51a;animation:pond-ring 12s linear infinite;animation-play-state:paused;transform:translate(-50%,-50%) scale(.01);opacity:0}
.r2{animation-delay:-3s}.r3{animation-delay:-6s}.r4{animation-delay:-9s}
.water-drop{position:absolute;width:5px;height:10px;left:-2px;top:0;border-radius:70% 30% 65% 40%;background:#efda9c;box-shadow:0 0 8px #d8e6bb55;animation:pond-drop 3s ease-in infinite;animation-play-state:paused}
.water-impact{position:absolute;left:-8px;top:-3px;width:16px;height:6px;border:1px solid #e4dbad;border-radius:50%;animation:pond-impact 3s ease-out infinite;animation-play-state:paused}
footer.in-view .pond-origin>*{animation-play-state:running}.page-hidden .pond-origin>*{animation-play-state:paused!important}.footer-promise{position:relative;text-shadow:0 2px 12px #052b36}
@keyframes pond-ring{0%{transform:translate(-50%,-50%) scale(.005);opacity:0}3%{opacity:.65}65%{opacity:.3}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
@keyframes pond-drop{0%,70%{transform:translateY(-75px) scale(.6);opacity:0}76%{opacity:.65}98%{transform:translateY(-4px) scale(1);opacity:.85}100%{transform:translateY(0);opacity:0}}
@keyframes pond-impact{0%{transform:scale(.6);opacity:.7}18%{transform:scale(3);opacity:0}100%{transform:scale(3);opacity:0}}
.door-twinkles i{box-shadow:0 0 10px 3px #ffe3a7aa;animation-duration:4.8s}
@keyframes door-twinkle{0%,100%{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.6)}}
.reduced .pond-origin>*{animation:none!important;opacity:0}@media(prefers-reduced-motion:reduce){.pond-origin>*{animation:none!important;opacity:0}}

#modal.venture-dialog{background:radial-gradient(ellipse at 90% 0,#315e57,#123b40 65%);border:1px solid #d9bb7777;border-radius:24px;box-shadow:0 24px 100px #0008;max-width:650px}
.venture-dialog .venture-emblem{width:115px;height:105px;display:flex;align-items:center;justify-content:center;margin-bottom:25px;font-size:58px;color:#e9bd77}.venture-emblem img{max-width:100%;max-height:105px;object-fit:contain}.venture-dialog h2{font-size:clamp(34px,5vw,55px);line-height:1.05;margin:16px 0 22px}.venture-dialog .eyebrow{line-height:1.7;max-width:90%;font-size:10px}.venture-dialog p{line-height:1.85}.venture-dialog .button{border-radius:30px;padding:14px 22px;margin-top:22px;background:#e6c48c;color:#133d40;border-color:#e6c48c}.venture-dialog small{display:block;border-top:1px solid #b9c6ac33;padding-top:16px;color:#c3cabc}.venture-dialog[data-brand="trader"]{background:radial-gradient(ellipse at 100% 0,#724b37,#283c3b 65%)}.venture-dialog[data-brand="pocket"]{background:radial-gradient(ellipse at 100% 0,#49695e,#263c42 65%)}.venture-dialog[data-brand="silent"]{background:radial-gradient(ellipse at 100% 0,#75472e,#123b40 65%)}
.venture-emblem .venture-illustration{flex-shrink:0;width:110px;mix-blend-mode:normal;border-radius:18px}.venture-emblem .venture-illustration img{max-width:none;max-height:none;object-fit:initial}

.portland-mark{background:url('assets/portland-hand-inked.webp') center/contain no-repeat;mix-blend-mode:normal;border-radius:0}.venture-emblem .portland-mark{width:110px;height:110px;flex-shrink:0}

/* Hand-inked water garden; the live ripple layer remains above the illustration. */
footer{background:#063a3d}.pond-scene{background:linear-gradient(180deg,#052b36 0%,#052b3610 22%,#052b361a 75%,#052b3666 100%),url('assets/pond-hand-drawn.webp') center/cover no-repeat}.pond-ink{display:none}.footer-promise{text-shadow:0 2px 12px #032d32,0 0 24px #032d32}.footer-bottom{position:relative;text-shadow:0 1px 5px #032d32}.water-ring{border-radius:49% 51% 48% 52% / 51% 48% 52% 49%;border-color:#e5cc9277;box-shadow:0 2px 0 #7db6a326,inset 0 1px 0 #cae2b52a}
@media(max-width:700px){.pond-scene{background-position:center;background-size:auto 100%}.footer-promise{padding:18px 0}}

/* Open water and two floating ink illustrations, with softly shaded waves. */
.pond-scene{background:radial-gradient(ellipse at 45% 65%,#205a57,#103e46 55%,#052b36);background-image:radial-gradient(ellipse at 45% 65%,#205a57,#103e46 55%,#052b36)}
.pond-water{position:absolute;inset:0;width:100%;height:100%}.pond-origin{display:none}.lily-pad{position:absolute;width:clamp(100px,15vw,205px);height:auto;pointer-events:none;will-change:transform}.pad-one{left:8%;top:33%}.pad-two{right:9%;top:63%;width:clamp(75px,11vw,145px)}
@media(max-width:700px){.pad-one{left:-12px;top:18%;width:100px}.pad-two{right:-8px;top:75%;width:85px}}
/* A quiet resident, with all the twinkles safely inside the open doorway. */
.door-twinkles{left:56%;top:12%;width:15%;height:23%}
.pad-two{right:5%;top:auto;bottom:35px;width:clamp(140px,17vw,220px)}
@media(max-width:700px){.pad-two{right:8px;top:auto;bottom:50px;width:125px}}

/* The approved rain frog gets a spacious corner of his own. */
footer{padding-bottom:55px}
.footer-promise{padding-right:290px;min-height:180px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;align-content:center;column-gap:.3em}
.pad-two{width:clamp(135px,13.5vw,185px);right:2%;bottom:65px;line-height:0}
.pond-resident{width:100%;height:auto;transform:scaleX(-1);transform-origin:50% 88%;animation:frog-breath 4.8s ease-in-out infinite;animation-play-state:paused}
footer.in-view .pond-resident{animation-play-state:running}
.page-hidden .pond-resident{animation-play-state:paused!important}
@keyframes frog-breath{0%,100%{transform:scale(-1,1)}50%{transform:scale(-1.012,1.022)}}
body.reduced .pond-resident{animation:none}
@media(prefers-reduced-motion:reduce){.pond-resident{animation:none}}
@media(max-width:700px){.footer-promise{padding-right:0;min-height:0;margin-bottom:250px}.pad-two{width:135px;right:8%;bottom:75px}}

/* Closed until knocked; reveal the existing open illustration. */
.door-open-art{opacity:0;transition:opacity 1.2s ease;pointer-events:none}
.door-awake .door-open-art{opacity:1}
.footer-promise{padding-right:0;display:block;text-align:center;min-height:0;margin:85px auto 120px;max-width:none}
.pad-two{width:clamp(94.5px,9.45vw,129.5px);opacity:.86}
.frog-facing{display:block;transform:scaleX(-1)}
.frog-body{display:block;position:relative;transform-origin:50% 88%;animation:frog-breathe-small 4.8s ease-in-out infinite}
.pond-resident{display:block;transform:none!important;animation:none!important}
.frog-throat,.frog-lids{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.frog-throat{mask-image:radial-gradient(ellipse 25% 25% at 62% 56%,#000 48%,transparent 100%);transform-origin:62% 56%;animation:throat-puff 6.5s ease-in-out infinite}
.frog-blink{opacity:0;animation:frog-blink 11s linear infinite}
@keyframes frog-blink{0%,42%,44%,71%,73%,100%{opacity:0}42.3%,43.7%,71.3%,72.7%{opacity:1}}
@keyframes throat-puff{0%,28%,88%,100%{transform:scale(1)}48%,62%{transform:translateY(2%) scale(1.32,1.4)}}
@keyframes frog-breathe-small{50%{transform:scale(1.012,1.022)}}
.frog-body,.frog-throat,.frog-blink{animation-play-state:paused}
footer.in-view .frog-body,footer.in-view .frog-throat,footer.in-view .frog-blink{animation-play-state:running}
.page-hidden .frog-body,.page-hidden .frog-throat,.page-hidden .frog-blink{animation-play-state:paused!important}
body.reduced .frog-body,body.reduced .frog-throat,body.reduced .frog-blink{animation:none}
@media(prefers-reduced-motion:reduce){.frog-body,.frog-throat,.frog-blink{animation:none}.door-open-art{transition:none}}
@media(max-width:700px){.footer-promise{max-width:300px;margin:55px auto 150px}.pad-two{width:94.5px;right:8%}}

/* Quiet footer controls; no divider through our resident. */
.footer-bottom{border:0!important}
#motion-toggle{display:none}
.surface-link,.flight-motion{padding:6px 10px;font-size:9px;line-height:1.3;bottom:12px;min-height:26px}
@media(max-width:700px){.surface-link,.flight-motion{font-size:9px;padding:6px 9px;bottom:10px}}

/* Final spacing and a reversible doorway. */
footer{padding-bottom:43px}
.footer-bottom{align-items:center;padding-bottom:0!important;min-height:14px}
#close-door{position:absolute;z-index:6;right:13%;bottom:92px;padding:9px 15px;border:1px solid #eed09a80;border-radius:25px;background:#123d40e6;color:#f7dfb5;font:inherit;font-size:12px;cursor:pointer}
#close-door[hidden]{display:none}
.frog-warp{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.frog-body.warp-ready .pond-resident{visibility:hidden}
@media(max-width:700px){footer{padding-bottom:45px}#close-door{right:15%;bottom:85px}}

/* The illustrated leaf turns on its right hinge instead of cross-fading. */
.hinged-door-leaf{transform-origin:0 0;transform:matrix(1,0,0,1,0,0);transition:transform 1.9s cubic-bezier(.42,0,.2,1);filter:drop-shadow(-3px 2px 3px #031d2690)}
.door-awake .hinged-door-leaf{transform:matrix(-.38,0,0,1.16,1835.4,-78)}
.frog-body{animation:none!important}
@media(prefers-reduced-motion:reduce){.hinged-door-leaf{transition:none}}

/* Both door panels descend together through the illustrated threshold. */
.hatch-door-leaf{transform:translateY(0);transition:transform 2.3s cubic-bezier(.45,0,.2,1);filter:drop-shadow(0 -4px 4px #031d2660)}
.door-awake .hatch-door-leaf{transform:translateY(750px)}
.door-hatch-slot{opacity:.18;transition:opacity .5s;pointer-events:none}
.door-awake .door-hatch-slot{opacity:.65}
@media(prefers-reduced-motion:reduce){.hatch-door-leaf,.door-hatch-slot{transition:none}}

/* Launch-ready worlds and direct interactions. */
.world-coming{position:absolute;z-index:4;left:0;right:0;top:47%;text-align:center;padding:15px 20px;background:#f8eedc24;border-block:1px solid #f4dba047;backdrop-filter:blur(3px);color:#fff0d0;font:italic clamp(23px,3vw,40px) var(--serif);letter-spacing:2px;pointer-events:none}
.world-portal:disabled{opacity:1;cursor:default;pointer-events:auto}
.world-portal::before{content:"";position:absolute;inset:5% 1% 9%;border-radius:48%;background:radial-gradient(ellipse at center,transparent 42%,#f5c85b24 65%,transparent 77%);filter:blur(14px);opacity:0;transition:opacity .4s ease;pointer-events:none}
.world-portal:hover::before,.world-portal:focus-visible::before{opacity:1}
.world-portal:disabled:hover{outline:none;box-shadow:none}
.world-portal:hover .portal-label strong{ text-shadow:0 0 16px #f5c85b65; }
@media(prefers-reduced-motion:reduce){.world-portal::before{transition:none}}
.mystery-door{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Ctext x='2' y='31' font-size='30'%3E%F0%9F%91%8A%3C/text%3E%3C/svg%3E") 20 15,pointer}
#frog-sound{pointer-events:auto;cursor:pointer;border:0;padding:0;background:none;color:inherit;z-index:5}
#frog-sound:focus-visible{outline:2px solid #ead39d;outline-offset:4px;border-radius:50%}
#footer-secret{cursor:inherit}
@media(max-width:700px){.world-coming{top:0;font-size:25px}.world-portals{padding-top:50px}}

/* Ribbon below the chair; hit area follows the actual illustrated arch. */
.world-coming{top:62%}
.door-knock-target{pointer-events:all;cursor:url('assets/knocking-hand.svg') 40 20,pointer}
.door-knock-target:focus-visible{outline:none;stroke:#f2d18e;stroke-width:3}
@media(max-width:700px){.world-coming{top:0}}

/* Keep pointer focus free of the browser's rectangular SVG outline. */
#secret-door:focus{outline:none}#secret-door:focus-visible{stroke:#f2d18e;stroke-width:3}
.door-knock-target{cursor:url('assets/knock-silhouette.png') 22 10,pointer}.door-knock-target.is-knocking{cursor:none}
.knocking-ghost{position:fixed;width:48px;height:auto;pointer-events:none;z-index:9999;transform:translate(-50%,-25%);filter:drop-shadow(0 1px 1px #fff8)}
.sound-control{position:fixed;bottom:45px;right:20px;z-index:30;padding:6px 10px;border:1px solid #c8b88b80;border-radius:20px;background:#123c43;color:#f5e8cc;font-size:9px;line-height:1.3}
body.reduced .hatch-door-leaf{transition:none}

.door-knock-target{cursor:url('assets/knock-cream.svg') 22 10,pointer}.door-knock-target.is-knocking{cursor:none}
.knocking-ghost{filter:drop-shadow(0 1px 2px #112b30a0)}
.ambient-controls{position:fixed;right:20px;bottom:12px;display:flex;gap:7px;align-items:center;z-index:35}
.ambient-controls .sound-control,.ambient-controls .flight-motion{position:static;margin:0;padding:6px 10px;min-height:26px;font-size:9px;line-height:1.3}
.frog-mouth{opacity:0;transform-box:fill-box;transform-origin:50% 0%;pointer-events:none}
.is-croaking .frog-mouth{animation:frog-squeak .44s ease-in-out}
@keyframes frog-squeak{0%,45%,100%{opacity:0;transform:scaleY(.08)}12%,30%,65%,82%{opacity:1;transform:scaleY(.48)}}
@media(max-width:700px){.ambient-controls{right:10px;bottom:10px}}
@media(prefers-reduced-motion:reduce){.frog-mouth{animation:none!important}}

.door-knock-target{cursor:url('assets/knock-cream.svg') 18 8,pointer}.door-knock-target.is-knocking{cursor:none}.knocking-ghost{width:38.4px}
/* Phone journey: keep the pets below the chapter copy, including narrow screens. */
@media(max-width:700px){.space-dogs{top:58%;width:62%;right:19%}.reduced .space-dogs{top:58%}}
@media(max-width:700px) and (max-height:650px){.wormhole-copy{top:12%}.wormhole h2{font-size:48px}.space-dogs{top:57%;width:58%;right:21%}}
@media(max-width:700px) and (max-height:650px){.space-dogs span{display:none}}

/* Stable touch artwork: hover must never reset the panorama crop. */
.venture-list::before{display:none}
.ui-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.14em;flex-shrink:0}
@media(max-width:700px){
.world-portal:hover,.world-portal:focus-visible{background-size:100% 100%,300% auto;background-position:center,left center}
.world-portal.library:hover,.world-portal.library:focus-visible{background-position:center,center center}
.world-portal.observatory:hover,.world-portal.observatory:focus-visible{background-position:center,right center}
}
@media(hover:none),(pointer:coarse){
.world-portal:hover::before{opacity:0}
.world-portal:hover .portal-number{transform:none;background:#082f3bca}
.world-portal:hover .portal-label strong{text-shadow:none}
.world-portal:hover .portal-label em{color:#c4d4cc}
}

/* Mobile ribbon floats over the illustration, with Safari frosted glass. */
.world-coming{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
@media(max-width:700px){
 .world-portals{padding-top:0}
 .world-coming{top:35px;background:rgba(248,238,220,.14);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
 .world-portal{margin-bottom:60px}
 .portal-label{bottom:-28px}
}

/* Give mobile captions their own space beneath, never over, the art. */
@media(max-width:700px){
 .world-portal{margin-bottom:132px;overflow:visible}
 .world-portal .portal-label{top:100%;bottom:auto;height:144px;padding:0;background:none;display:flex;flex-direction:column;justify-content:center}
 .world-portal .portal-label small{margin-bottom:12px}
}

/* A quiet correspondence nook, always within reach. */
.nav nav .hello-open,.footer-hello{border:1px solid #b4492d;border-radius:30px;padding:10px 16px;color:#a73f26;white-space:nowrap}
.footer-hello{background:#ad482e;color:#fff2dc;border-color:#ad482e;position:relative;z-index:3}
#hello-dialog{width:min(940px,94vw);max-width:940px;max-height:90dvh;padding:55px;border:1px solid #c5a46e;border-radius:18px;background:radial-gradient(ellipse at 0 100%,#ddceaa55,transparent 60%),#f8eedc;color:#184b4e;box-shadow:0 25px 100px #001b27aa;overflow:auto}
#hello-dialog::backdrop{background:#032a36b8;backdrop-filter:blur(4px)}
.hello-close{position:absolute;right:16px;top:12px;width:44px;height:44px;font-size:30px;color:#184b4e}
.hello-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:45px}.hello-intro .eyebrow{font-size:8px;letter-spacing:1.5px;color:#857147;margin-bottom:20px}
#hello-dialog h2{font-size:64px;color:#184b4e;margin:0 0 18px;letter-spacing:-2px}
#hello-dialog p{font-size:14px;line-height:1.6;color:#426562;margin:12px 0}
#hello-dialog .hello-sub{font:italic 25px/1.25 var(--serif);color:#184b4e}
.hello-direct{margin-top:28px;font-size:12px}.hello-direct span{display:block;margin-bottom:8px}.hello-direct a{color:#a94229;text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
.hello-frog{width:180px;max-width:70%;display:block;margin:18px 0 -18px;mix-blend-mode:multiply}
#hello-form{display:flex;flex-direction:column;align-self:center;gap:8px}#hello-form label{font-size:13px;margin-top:12px}
#hello-form input,#hello-form textarea{box-sizing:border-box;width:100%;border:1px solid #bda276;background:#fffaf08a;border-radius:7px;padding:12px;color:#184b4e;font:16px/1.5 var(--sans)}#hello-form textarea{resize:vertical;min-height:130px}
#hello-dialog :focus-visible{outline:2px solid #b4492d;outline-offset:3px}
.hello-send{margin-top:14px;background:#b4492d;color:#fff3da;padding:14px;border-radius:25px;font-size:14px}
#hello-dialog .hello-help,#hello-dialog #hello-status{font-size:11px;line-height:1.5;margin:5px 0}
@media(max-width:700px){.nav{gap:8px}.nav nav{gap:10px}.nav nav .hello-open{padding:8px 10px}.nav .map-button{padding:7px}.footer-top{align-items:center}#hello-dialog{padding:50px 24px 25px;width:94vw;max-height:92dvh}.hello-layout{grid-template-columns:minmax(0,1fr);gap:12px}.hello-layout>*{min-width:0}#hello-dialog h2{font-size:48px}.hello-intro{display:grid;grid-template-columns:minmax(0,1fr) 72px;column-gap:8px}.hello-intro> :not(.hello-direct):not(.hello-frog){grid-column:1 / -1}.hello-frog{display:block;grid-column:2;grid-row:5;width:72px;max-width:100%;margin:12px 0 0;align-self:center}.hello-direct{grid-column:1;grid-row:5;margin-top:18px;align-self:center}.hello-intro .eyebrow{padding-right:20px}#hello-dialog .hello-sub{font-size:23px}}
@media(max-width:370px){.nav nav{gap:8px;font-size:9px}.nav{padding-inline:4%}.nav nav .hello-open{padding:8px}.nav .rf-monogram{width:42px}}
