.world-body{height:100dvh;min-height:0;overflow:hidden;background:#0c1a15;color:#f7efd6;font-family:'Segoe UI',Arial,sans-serif}.world-viewport{cursor:grab}.world-viewport.dragging{cursor:grabbing}.world-viewport .hotspot{cursor:pointer}
.world-body [hidden]{display:none!important}.world-body button,.world-body a{touch-action:manipulation}.world-body button:focus-visible,.world-body a:focus-visible{outline:2px solid #e8ca7b;outline-offset:5px}
.world{height:100dvh;width:100%;position:relative;isolation:isolate;background:#102018;overflow:hidden}.world-viewport{width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior:contain;position:absolute;inset:0;-webkit-overflow-scrolling:touch}.world-viewport::-webkit-scrollbar{display:none}
.world-stage{position:relative;width:max(100vw,177.69dvh);height:max(100dvh,56.28vw);top:50%;transform:translateY(-50%);margin:auto;isolation:isolate}.world-scene{position:absolute;inset:0}.scene-art{width:100%;height:100%;max-width:none;object-fit:fill;user-select:none;pointer-events:none}.scene-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#05140c55,transparent 22%,transparent 73%,#091b1933)}
.scene-portraits{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;user-select:none}
.world-vignette{pointer-events:none;position:absolute;inset:0;z-index:3;background:radial-gradient(ellipse at 50% 50%,transparent 45%,#07170e45 90%,#030e0bab 115%);box-shadow:inset 0 0 12vw #0617104a}
.hotspot{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);width:calc(var(--w)*1%);height:calc(var(--h)*1%);transform:translate(-50%,-50%);min-width:44px;min-height:44px;border:0;border-radius:45%;padding:0;background:transparent;isolation:isolate;display:flex;align-items:center;justify-content:center;z-index:4;color:#fff0bf}
.hotspot:before{content:'';position:absolute;inset:14%;border-radius:50%;background:radial-gradient(ellipse,#ebc65926,transparent 70%);opacity:0;transition:opacity .3s,scale .3s;pointer-events:none}.hotspot:hover:before,.hotspot:focus-visible:before{opacity:1;scale:1.35}
.hotspot-light{position:absolute;width:8px;height:8px;border-radius:50%;background:#fff2ad;box-shadow:0 0 0 5px #ffd86d15,0 0 14px 3px #f2d1738f,0 0 30px 8px #ecac495e;animation:light-breath 3s ease-in-out infinite;transition:opacity .3s,scale .3s;opacity:.85;pointer-events:none}
.hotspot-light:after{content:'';position:absolute;inset:-9px;border:1px solid #ffe9a363;border-radius:50%}.hotspot:hover .hotspot-light,.hotspot:focus-visible .hotspot-light{scale:1.25;opacity:1}
.hotspot-name{position:absolute;bottom:calc(50% + 24px);left:50%;transform:translate(-50%,7px);display:flex;flex-direction:column;gap:4px;padding:10px 15px;background:#13271ceb;box-shadow:0 6px 24px #00120e40;border:1px solid #cfb36c80;border-radius:4px;font-family:Georgia,serif;font-size:15px;line-height:1.2;white-space:nowrap;color:#f3e8c7;text-shadow:none;opacity:0;visibility:hidden;transition:opacity .2s,transform .2s;pointer-events:none;font-weight:400}
.hotspot-name b{font-family:'Segoe UI',sans-serif;font-size:9px;font-weight:400;letter-spacing:.3px;color:#c6c9a3;text-align:center}.hotspot:hover .hotspot-name,.hotspot:focus-visible .hotspot-name,.show-places .hotspot-name,.entered:not(.settled) .main-path .hotspot-name{opacity:1;visibility:visible;transform:translate(-50%,0)}.show-places .hotspot-name{font-size:12px;padding:8px 11px}.show-places .hotspot-name b{font-size:8px}.small-object .hotspot-name{bottom:calc(50% + 20px)}
.world-ui{position:absolute;inset:0;z-index:8;pointer-events:none}.world-ui button,.world-ui a,.world-map{pointer-events:auto}.world-hud{display:flex;align-items:center;justify-content:space-between;padding:24px 32px;gap:24px;background:linear-gradient(#06160d83,transparent)}
.world-brand{display:flex;align-items:center;gap:9px;border:0;padding:0;color:#f4efd7;text-shadow:0 2px 15px #061b14;font-family:var(--display);font-size:24px;font-weight:800;letter-spacing:-1.3px}.world-brand img{width:27px;height:27px;border-radius:9px;opacity:.9}.world-tools{display:flex;gap:12px;align-items:center}
.tool-button{background:#12271a91;color:#f0eacf;backdrop-filter:blur(8px);border:1px solid #ded6aa40;border-radius:5px;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;line-height:1;min-height:38px}.tool-button:hover,.tool-button[aria-pressed=true],.tool-button[aria-expanded=true]{background:#b8ba8040;border-color:#e5d49c99}.tool-button span{font-size:19px;line-height:1}.tool-button small{font-size:10px;letter-spacing:.4px}
.world-location{position:absolute;top:94px;left:34px;text-shadow:0 2px 15px #000;pointer-events:none}.world-location>span{font-size:8px;letter-spacing:2.3px;color:#e9dcad;opacity:.8}.world-location h2{font-family:Georgia,serif;font-size:21px;font-style:italic;font-weight:400;letter-spacing:-.4px;margin-top:7px}.settled .world-location{opacity:.65;transition:opacity 2s}
.world-bottom{position:absolute;bottom:0;left:0;width:100%;display:flex;align-items:end;justify-content:space-between;gap:20px;padding:50px 30px 23px;background:linear-gradient(transparent,#08170ebb)}.navigation-tools,.world-links{display:flex;align-items:center;gap:12px}.world-hint{font-family:Georgia,serif;font-size:13px;font-style:italic;color:#efe7c4b5;line-height:1.4;text-align:center;margin-bottom:10px;pointer-events:none}.world-links button,.world-links a{border:0;padding:8px;line-height:1;color:#ebe7ce;font-size:18px;background:none;text-shadow:0 2px 8px #000}.world-links #privacy-open{font-family:'Segoe UI',sans-serif;font-size:9px;opacity:.7;padding-right:0}
.world-map{position:absolute;left:30px;bottom:88px;background:#13261bf5;backdrop-filter:blur(12px);border:1px solid #b2a36b80;border-radius:9px;padding:16px;width:285px;box-shadow:0 20px 70px #03100888}.world-map>div{display:flex;justify-content:space-between;align-items:center;padding:0 0 8px;border-bottom:1px solid #cab96f3b}.world-map>div>span{font-size:8px;letter-spacing:1.8px;color:#dac992}.world-map>div>button{border:0;color:#e7dfbe;font-size:24px;line-height:1}.world-map>button{border:0;display:flex;align-items:center;width:100%;gap:13px;text-align:left;padding:13px 0;font-size:12px;color:#f2e8cb;border-bottom:1px solid #a7b08322}.world-map>button:last-child{border:0;padding-bottom:4px}.world-map>button>span{font-size:8px;color:#bcad75}.world-map>button>b{font-weight:400;margin-left:auto;color:#dac992}.world-map>button:hover{color:#ddda86}
.entry-gate{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse,#0b241278 20%,#05130fb5 100%);backdrop-filter:blur(7px);padding:30px;color:#f7f1d3;text-align:center;transition:opacity .6s,backdrop-filter .6s}.entry-gate.leaving{opacity:0;backdrop-filter:blur(0);pointer-events:none}
.entry-overline{font-family:Georgia,serif;font-style:italic;letter-spacing:1px;font-size:12px;color:#e5e3bdb0;margin-bottom:30px;text-shadow:0 3px 8px #000}.entry-gate h1{font-family:var(--display);font-size:clamp(58px,8vw,130px);font-weight:900;letter-spacing:-.065em;line-height:.9;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 8px 12px #00140e66);text-shadow:0 3px 0 #b7be8750}.entry-gate h1 img{width:clamp(43px,5.6vw,86px);height:auto;border-radius:21px;margin-right:16px;transform:rotate(-8deg);box-shadow:0 6px 0 #07150a60}.entry-gate h1 span{color:#cbd887}
.entry-world-name{display:flex;align-items:center;gap:17px;font-size:11px;letter-spacing:4.5px;color:#dedcb1;margin-top:29px}.entry-world-name>span{display:block;width:50px;height:1px;background:#d2c8895c}
.enter-button{display:flex;align-items:center;justify-content:center;gap:28px;color:#183c25;background:linear-gradient(#eee1aa,#d3bf77);border:1px solid #f9edbd;border-radius:6px;box-shadow:0 5px 0 #59492b,0 12px 32px #00100e65;padding:18px 28px;min-width:231px;font-size:14px;font-weight:700;letter-spacing:.3px;margin-top:43px;transition:translate .2s,box-shadow .2s}.enter-button:hover{translate:0 -2px;box-shadow:0 7px 0 #59492b,0 14px 36px #00100e80}.enter-button:active{translate:0 2px}.enter-button:disabled{opacity:.7;cursor:wait}
.entry-note{font-size:10px;color:#d4dcbbc7;margin-top:23px;letter-spacing:.3px}.entry-footer{position:absolute;bottom:25px;left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;gap:20px;color:#d9dec39c}.entry-footer>span{font-size:8px;letter-spacing:2px}.entry-footer button{font-size:11px;border:1px solid #b7c09240;color:#d7dcc2;border-radius:4px;padding:9px 13px}
.scene-transition{position:absolute;inset:0;background:#06100b;z-index:15;pointer-events:none;opacity:0;transition:opacity .4s}.scene-transition.cover{opacity:1;pointer-events:auto}.scene-toast{position:absolute;bottom:108px;left:50%;transform:translate(-50%,10px);background:#11271aeb;border:1px solid #c9b87866;color:#f0e5c5;padding:14px 25px;font-family:Georgia,serif;font-size:15px;line-height:1.5;text-align:center;max-width:min(520px,90vw);width:max-content;border-radius:7px;box-shadow:0 10px 40px #00160966;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}.scene-toast.visible{opacity:1;transform:translate(-50%,0)}
.motes{position:absolute;inset:0;pointer-events:none;z-index:2}.motes i{position:absolute;left:var(--mx);top:var(--my);width:3px;height:3px;background:#fff2ad;border-radius:50%;box-shadow:0 0 12px 3px #efe1908f;animation:drift var(--duration) var(--delay) ease-in-out infinite;opacity:.3}.fireflies-awake .motes i{width:5px;height:5px;box-shadow:0 0 22px 6px #fbda76bb;animation-duration:3.5s}
.pond-ripple{position:absolute;left:29%;top:88%;width:20%;height:8%;border:2px solid #e9dda8;border-radius:50%;transform:translate(-50%,-50%) scale(.05);opacity:0;pointer-events:none;z-index:3}.pond-ripple.rippling{animation:pond-ripple 2.7s ease-out forwards}.bell-rung #study-scene .small-object:before{animation:bell-flash 1.1s ease-out}
@keyframes light-breath{50%{opacity:.5;box-shadow:0 0 0 3px #ffd86d15,0 0 8px 2px #f2d1738f,0 0 20px 5px #ecac495e}}
@keyframes drift{0%,100%{translate:0 0;opacity:.18}40%{translate:15px -30px;opacity:.65}75%{translate:-8px -48px;opacity:.3}}
@keyframes pond-ripple{0%{opacity:.7;transform:translate(-50%,-50%) scale(.05)}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
@keyframes bell-flash{0%{opacity:1;background:#edcf7c55;scale:.5}100%{opacity:0;scale:1.5}}
.world-body dialog{color:#2e4830;background:#f4efd9;border:1px solid #c1b784;box-shadow:0 26px 100px #020c09aa;max-height:90dvh}.world-body dialog::backdrop{background:#06160ea1;backdrop-filter:blur(5px)}.world-body .close{border-color:#b3af863b;z-index:3;color:#365236;background:#f4efd9c2}
.world-dialog{border-radius:10px;padding:42px;width:min(560px,calc(100vw - 28px));overflow:auto}.world-dialog h2{font-family:Georgia,serif;font-weight:400;letter-spacing:-1.8px;font-size:43px;line-height:1.07;margin:16px 0 20px}.world-dialog p{font-size:14px;line-height:1.8;color:#687057;margin:14px 0}.folio{display:block;font-size:8px;letter-spacing:2.2px;color:#88905e;line-height:1.5}.king-dialog{position:fixed;inset:auto 5vw 11vh auto;margin:0;padding:35px 38px;width:min(470px,calc(100vw - 28px))}.king-dialog>small{font-size:10px;color:#81876b;display:block;margin-top:18px}.king-choices{margin-top:21px;border-top:1px solid #c8c5a5}.king-choices button{padding:14px 0;width:100%;font-size:12px;display:flex;align-items:center;justify-content:space-between;gap:14px;border:0;border-bottom:1px solid #c8c5a5;text-align:left}.king-choices button:hover{color:#719042}
.gallery-dialog{width:min(1080px,calc(100vw - 30px));padding:0;background:#ece9d5}.gallery-pages{padding:43px 40px 30px}.gallery-dialog .section-heading{align-items:start}.gallery-dialog .section-heading h2{font-size:43px;margin-bottom:0}.gallery-dialog .section-heading>p{font-size:11px;padding-top:30px}.gallery-dialog .head-grid{gap:24px 18px}.gallery-dialog .head-frame{background:#bac6a9;aspect-ratio:1/1.06}.gallery-dialog .head-number{font-size:7px;letter-spacing:1px;top:14px}.gallery-dialog .head-caption{font-size:9px}.gallery-dialog .head-card-label{font-size:11px}.gallery-dialog .gallery-tools{margin:27px 0 20px}.gallery-dialog .filter{font-size:11px}.gallery-dialog .gallery-count{font-size:10px}
.book-dialog{width:min(920px,calc(100vw - 30px));padding:0;overflow:auto;border-radius:4px;background:#ece6ca!important;box-shadow:inset 6px 0 0 #81744e,0 26px 100px #020c09aa!important}.book-spread{display:grid;grid-template-columns:1fr 1.15fr}.book-illustration{padding:35px 22px 35px;background:linear-gradient(90deg,transparent 90%,#c5ba963f);display:flex;flex-direction:column;align-items:center;justify-content:center}.book-illustration img{width:100%;max-height:420px;object-fit:contain}.book-illustration span{font-family:Georgia,serif;font-size:24px;line-height:1.3;text-align:center;font-style:italic;margin-top:15px;color:#6d7d4f}.book-page{padding:45px 34px 35px;border-left:1px solid #b3a57255;background:linear-gradient(90deg,#897c4920,transparent 7%)}.book-page h2{font-size:37px;letter-spacing:-1.6px}.book-page p{font-size:12px;line-height:1.9}.book-footnote{padding-top:16px;border-top:1px solid #c6bc9277;color:#818567;font-size:10px;line-height:1.7;margin-top:22px}.book-page .text-button{margin-top:22px;font-size:11px}
.notice-dialog{background:#e5e1c3!important}.pinned-note{padding:28px;background:#f7efce;box-shadow:2px 4px 0 #948b6033;transform:rotate(-1deg);position:relative;border:1px solid #c4b8804d;margin-top:25px}.pinned-note small{font-size:8px;letter-spacing:2px;color:#899365}.pinned-note h3{font-family:Georgia,serif;font-weight:400;font-size:29px;margin-top:10px;letter-spacing:-1px}.pinned-note p{font-size:12px}.pinned-note.pale{transform:rotate(1deg);background:#dce3bf}.wax-seal{position:absolute;right:20px;top:-14px;font-size:21px;background:#5e7547;color:#c6d894;border:4px double #8d9a65;border-radius:50%;width:39px;height:39px;display:grid;place-items:center;box-shadow:0 3px 6px #13201033}
.world-body .apply-dialog{background:#f0ead0;width:min(580px,calc(100vw - 28px));border-radius:9px;border:1px solid #d0bf83}.world-body .apply-dialog h2{font-family:Georgia,serif;font-weight:400;letter-spacing:-1.5px}.world-body .pass-dialog{color:var(--ink)}.help-dialog .button{margin-top:12px}.world-body .head-dialog-content h2{font-family:Georgia,serif;font-weight:400;letter-spacing:-1px}
@media(max-width:750px){.world-hud{padding:18px 16px;gap:8px}.world-brand{font-size:21px;gap:6px}.world-brand img{width:23px;height:23px}.world-tools{gap:7px}.tool-button{padding:9px;min-height:38px;gap:5px}.tool-button small{font-size:9px}.world-tools .tool-button small{max-width:55px}.world-location{left:18px;top:82px}.world-location h2{font-size:17px}.world-location>span{font-size:7px}.world-bottom{padding:50px 16px 20px;align-items:end;gap:8px}.world-hint{position:absolute;bottom:70px;left:10%;width:80%;margin:0;font-size:11px}.world-links{gap:7px}.world-links button,.world-links a{padding:9px;font-size:16px}.world-links #privacy-open{font-size:8px}.world-map{left:16px;bottom:109px;width:min(310px,calc(100vw - 32px))}.scene-toast{bottom:126px;font-size:13px;padding:12px 17px}.world-vignette{background:radial-gradient(ellipse,transparent 30%,#07170e30 90%);box-shadow:inset 0 0 16vw #06171030}.entry-gate{padding:23px}.entry-overline{font-size:8px;letter-spacing:.4px;margin-bottom:27px}.entry-gate h1{font-size:clamp(42px,9.3vw,69px)}.entry-gate h1 img{width:36px;margin-right:10px;border-radius:12px}.entry-world-name{font-size:8px;letter-spacing:3.5px;gap:13px;margin-top:22px}.entry-world-name>span{width:35px}.enter-button{font-size:12px;padding:16px 23px;margin-top:35px;min-width:211px}.entry-note{font-size:9px;max-width:250px;line-height:1.7}.entry-footer{left:18px;right:18px;bottom:24px;gap:9px}.entry-footer>span{font-size:6px;letter-spacing:1.4px}.entry-footer button{font-size:9px}.hotspot-name{font-size:13px}.hotspot-name b{font-size:9px}.world-dialog{padding:35px 25px}.world-dialog h2{font-size:36px}.world-dialog p{font-size:12px}.king-dialog{inset:auto 14px 105px 14px;width:auto;margin:0;max-height:75dvh;padding:29px 25px}.king-dialog h2{margin-top:12px;font-size:35px}.king-choices button{font-size:11px;padding:13px 0}.gallery-dialog{padding:0}.gallery-pages{padding:38px 22px 24px}.gallery-dialog .section-heading{display:block}.gallery-dialog .section-heading h2{font-size:36px}.gallery-dialog .section-heading>p{padding:0;margin-top:15px;font-size:10px}.gallery-dialog .head-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px}.gallery-dialog .filter{font-size:9px}.gallery-dialog .gallery-tools{margin:23px 0 18px}.gallery-dialog .filter-group{gap:12px}.gallery-dialog .gallery-bottom{margin-top:22px;gap:12px}.gallery-dialog .gallery-bottom p{font-size:9px}.book-dialog{padding:0}.book-spread{grid-template-columns:1fr}.book-illustration{padding:24px 30px 20px;max-height:270px;background:linear-gradient(0deg,#d3c6a233,transparent)}.book-illustration img{height:185px;width:auto}.book-illustration span{font-size:18px;margin:5px 0 0}.book-illustration span br{display:none}.book-page{padding:26px 26px 30px;border-left:0;border-top:1px solid #b3a57255;background:none}.book-page h2{font-size:32px}.book-page p{font-size:12px}.pinned-note{padding:22px}.pinned-note h3{font-size:25px}.world-body .apply-dialog{padding:36px 23px}}
@media(prefers-reduced-motion:reduce){.motes i{animation:none;opacity:.3}.hotspot-light{animation:none}.scene-transition,.entry-gate,.scene-toast{transition:none}.world-body *{scroll-behavior:auto!important}.pond-ripple.rippling{animation:none;opacity:.4;transform:translate(-50%,-50%) scale(.6)}}

/* Scene positions also work with the same-origin production CSP. */
.spot-pos-1{--x:52;--y:47;--w:12;--h:27}
.spot-pos-2{--x:16;--y:47;--w:20;--h:37}
.spot-pos-3{--x:90;--y:49;--w:17;--h:35}
.spot-pos-4{--x:77;--y:76;--w:15;--h:15}
.spot-pos-5{--x:29;--y:88;--w:34;--h:18}
.spot-pos-6{--x:50;--y:44;--w:27;--h:38}
.spot-pos-7{--x:63;--y:69;--w:16;--h:10}
.spot-pos-8{--x:34;--y:69;--w:25;--h:12}
.spot-pos-9{--x:15;--y:27;--w:24;--h:49}
.spot-pos-10{--x:50.8;--y:70;--w:6;--h:8}
.spot-pos-11{--x:87;--y:31;--w:10;--h:24}
.spot-pos-12{--x:91;--y:56;--w:12;--h:25}
.spot-pos-13{--x:8;--y:58;--w:15;--h:35}
