:root{--font-ui:"Microsoft YaHei","微软雅黑",sans-serif;--cream:#f3e8d0;--gold:#e5c789;--ink:#142a36;--line:#e5d5af33;font-family:var(--font-ui);color-scheme:dark;font-size:16px}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#091923;color:var(--cream)}body{overflow:hidden}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:5px}a{color:inherit}button:disabled{cursor:wait}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.icon-definitions{position:absolute;width:0;height:0;overflow:hidden}.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.icon-button{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:transparent}.icon-button:hover{background:#fff1}.icon-button .icon{width:20px;height:20px}
.experience{position:relative;height:100%;min-height:350px;isolation:isolate;overflow:hidden}.world-viewport{position:absolute;inset:0;overflow:auto;scrollbar-width:none;overscroll-behavior:none;cursor:grab}.world-viewport::-webkit-scrollbar{display:none}.world-viewport.dragging{cursor:grabbing}.scene{position:relative;width:max(100vw,177.7778svh);height:max(56.25vw,100svh);overflow:hidden;isolation:isolate;transform-origin:center;transition:filter 1.2s}.scene-art{width:100%;height:100%;position:absolute;inset:0;object-fit:fill;user-select:none;-webkit-user-drag:none;pointer-events:none}.effect-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.light-shade{position:absolute;inset:0;pointer-events:none;background:#031025;opacity:0;transition:opacity 1.8s;mix-blend-mode:multiply}body[data-light="1"] .light-shade{opacity:.29}body[data-light="2"] .light-shade{opacity:.66}.object-layer{position:absolute;inset:0}.object-hit{position:absolute;display:block;padding:0;border:0;background:transparent;cursor:pointer;border-radius:30%;touch-action:pan-x pan-y;transition:backdrop-filter .3s,background .3s;outline-offset:1px}.object-hit:hover{backdrop-filter:brightness(1.12);background:#fff2b508}.object-hit:focus-visible{outline:2px solid #efd7a399;background:#fff2b514}.object-hit.window-hit{border-radius:0;touch-action:none}.object-hit.window-hit:hover{backdrop-filter:none;background:transparent}.object-hit.responding{animation:object-response 1.2s ease-out}.boarding .object-layer{pointer-events:none}.boarding .world-viewport{overflow:hidden;cursor:default}.vignette{position:absolute;inset:0;background:linear-gradient(180deg,#071a2c65,transparent 17%,transparent 85%,#06172285);pointer-events:none;z-index:2;transition:background 1.8s}.boarding .vignette{background:linear-gradient(90deg,#071a29c9,#081d2d7a 35%,#081d2d0a 73%),linear-gradient(180deg,#071a2926,transparent 65%,#0515267d)}body.resting .vignette{background:radial-gradient(ellipse at center,transparent 28%,#081a3566 70%,#091526b3 100%)}
.header{position:absolute;z-index:4;top:max(28px,env(safe-area-inset-top));left:3.5%;right:3.5%;display:flex;justify-content:space-between;align-items:center;pointer-events:none;gap:24px;transition:opacity 2s}.brand{display:flex;align-items:center;gap:17px}.brand-name{font-size:30px;font-weight:600;letter-spacing:2px}.brand-name>span{color:var(--gold);margin-left:-4px}.brand-en{font-size:12px;letter-spacing:1px;border-left:1px solid var(--line);padding-left:17px;opacity:.7}.journey{font-size:12px;letter-spacing:2px;color:#efe2cbb8}.journey i{font-style:normal;margin:0 13px;opacity:.4}.entered .header{opacity:.6}.intro{position:absolute;z-index:4;left:8%;top:50%;transform:translateY(-44%);transition:opacity 1.3s,transform 1.3s,visibility 1.3s}.eyebrow{font-size:12px;letter-spacing:3px;color:#d6d2b9}.intro h1{font-size:clamp(38px,3.8vw,64px);font-weight:400;line-height:1.6;letter-spacing:3px;margin:25px 0 16px;text-shadow:0 2px 25px #061928}.intro h1 span{color:#f0d49d}.intro p{font-size:16px;line-height:1.9;color:#d1d5c9;letter-spacing:1px;margin:0 0 28px}.board-button{min-width:245px;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:18px 22px;background:#ebd9b4;color:#233536;border-radius:4px;font-size:15px;letter-spacing:1px;transition:background .3s,transform .3s}.board-button:hover{background:#ffebc2;transform:translateY(-2px)}.board-button .icon{width:20px;height:20px}.headphone-note{display:block;font-size:12px;letter-spacing:1px;color:#c1c7b8;margin-top:17px}.intro.dismissed{opacity:0;visibility:hidden;transform:translateY(-40%);pointer-events:none}
.welcome-whisper{position:absolute;z-index:5;bottom:10%;left:50%;transform:translateX(-50%);font-size:14px;letter-spacing:2px;white-space:nowrap;background:#102b36a6;backdrop-filter:blur(10px);padding:12px 20px;border:1px solid #e1d1aa22;border-radius:30px;opacity:0;pointer-events:none}.entered .welcome-whisper{animation:welcome 9s .5s both}.object-tooltip{position:fixed;z-index:12;pointer-events:none;background:#112935ee;color:#f5e9cf;border:1px solid var(--line);padding:9px 14px;border-radius:6px;max-width:260px;font-size:13px;line-height:1.65;letter-spacing:.5px;opacity:0;transform:translate(-50%,-100%) translateY(4px);transition:opacity .2s,transform .2s;box-shadow:0 5px 24px #04151c44}.object-tooltip.visible{opacity:1;transform:translate(-50%,-100%) translateY(0)}.toast{position:fixed;z-index:25;bottom:max(65px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%,8px);max-width:min(90vw,510px);width:max-content;padding:13px 23px;border:1px solid #e4d7b326;background:#102835eb;backdrop-filter:blur(10px);border-radius:30px;font-size:14px;line-height:1.7;letter-spacing:1px;opacity:0;pointer-events:none;text-align:center;transition:opacity .5s,transform .5s}.toast.visible{opacity:1;transform:translate(-50%,0)}.footer{position:absolute;z-index:4;left:3.5%;right:3.5%;bottom:max(22px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:center;gap:20px;color:#d2d7c388;font-size:12px;letter-spacing:2px;pointer-events:none}.footer>span:nth-child(2){color:#e0dfc9b8}.night time{letter-spacing:1px;margin-left:8px}.camera-flash{position:absolute;inset:0;z-index:15;background:#fff6e2;opacity:0;pointer-events:none}.camera-flash.flash{animation:camera-flash .7s ease-out}
dialog{font-family:var(--font-ui)}dialog::backdrop{background:#061728b3;backdrop-filter:blur(8px)}.paper-dialog{width:min(570px,calc(100vw - 32px));max-height:calc(100svh - 44px);overflow:auto;padding:45px 42px 28px;color:#34413c;background:#ede3c9;border:1px solid #fff6de;border-radius:5px;box-shadow:0 22px 90px #02121b77}.paper-close{position:absolute;right:13px;top:12px;color:#586256}.paper-close:hover,.ticket-close:hover{background:#253c3910}.paper-eyebrow{font-size:12px;letter-spacing:3px;color:#8d8a72}.paper-dialog h2{font-weight:500;font-size:25px;line-height:1.65;letter-spacing:2px;margin:20px 0 22px}.paper-prose{font-size:16px;line-height:2.3;letter-spacing:.7px;white-space:pre-line;min-height:170px}.paper-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:29px;padding-top:18px;border-top:1px solid #65725b33;color:#8a8b75;font-size:12px}.paper-bottom button{background:transparent;color:#526c5e;font-size:14px;padding:8px 0 8px 14px}.paper-dialog textarea{font-family:var(--font-ui);display:block;width:100%;background:#f7f0df99;color:#33473f;border:1px solid #65725b33;border-radius:3px;padding:15px;resize:vertical;font-size:16px;line-height:2;max-height:38svh}.paper-save{background:#405c4b;color:#fff0d0;width:100%;padding:14px;border-radius:3px;margin-top:20px;font-size:14px}.note-meta{font-size:12px;color:#888d75;margin-top:10px}.paper-image-wrap{margin:10px -12px}.paper-image-wrap canvas{display:block;width:auto;max-width:100%;height:auto;max-height:52svh;margin:auto;border:1px solid #7f857333;border-radius:3px}.paper-dialog.has-image .paper-prose{min-height:0;margin-top:12px;font-size:14px;line-height:1.9}.photo-dialog{padding:16px 16px 18px;width:min(850px,calc(100vw - 30px));max-height:calc(100svh - 40px);background:#eee4d1;color:#37473e;border:0;border-radius:3px;overflow:auto;box-shadow:0 20px 80px #04151f99}.photo-dialog>img{width:100%;height:auto;display:block}.photo-close{position:absolute;top:23px;right:23px;background:#102731bb;color:#f7e8c8}.photo-caption{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:23px 7px 6px;font-size:14px}.photo-caption>a{text-decoration:none;color:#496d55;white-space:nowrap}
.ticket-dialog{width:min(450px,calc(100% - 36px));border:0;background:#e8dfc7;color:#35423d;border-radius:5px;padding:33px;box-shadow:0 20px 100px #0009;max-height:calc(100svh - 48px);overflow:auto}.ticket-close{position:absolute;top:10px;right:10px;color:#596056;width:32px;height:32px}.ticket-top{display:flex;align-items:center;justify-content:space-between;margin:0 5px 32px 0}.ticket-top>.icon{width:32px;height:32px;opacity:.65;margin-right:12px}.ticket-brand{font-size:29px;font-weight:600;letter-spacing:1px}.ticket-subtitle{font-size:12px;margin-left:14px;color:#7a7c69}.ticket-route{display:flex;justify-content:space-between;align-items:center;gap:13px;margin-bottom:28px}.ticket-route small{font-size:12px;display:block;color:#7a7c69;margin-bottom:10px}.ticket-route strong{font-size:16px;font-weight:500;display:block}.ticket-route>.icon{width:24px;color:#8b8d76}.ticket-perforation{border-top:1px dashed #4e594955;margin:0 -33px 28px}.ticket-dialog label{font-size:17px;display:block;margin-bottom:17px}.ticket-dialog textarea{display:block;width:100%;border:1px solid #6e775929;background:#f2ecdc69;border-radius:4px;padding:14px;font-size:16px;line-height:1.9;color:#34443e;resize:vertical;min-height:140px;max-height:35svh}.ticket-dialog textarea::placeholder{color:#8b8e79}.ticket-dialog .note-meta{display:flex;justify-content:space-between}.save-ticket{margin-top:24px;width:100%;background:#344b45;color:#f0e8d2;padding:14px 17px;border-radius:3px;display:flex;align-items:center;justify-content:space-between;font-size:14px;letter-spacing:1px}.save-ticket:hover{background:#243d37}.save-ticket .icon{width:18px;height:18px}.ticket-bottom{display:flex;justify-content:space-between;margin-top:24px;padding-top:18px;border-top:1px solid #59674f22;font-size:12px;color:#7a7c69}
@keyframes welcome{0%{opacity:0}12%,70%{opacity:1}100%{opacity:0}}@keyframes object-response{20%{backdrop-filter:brightness(1.4);background:#ffe9a518}100%{backdrop-filter:brightness(1);background:transparent}}@keyframes camera-flash{5%{opacity:.5}100%{opacity:0}}
@media(max-width:800px){.brand-en{display:none}.journey{font-size:11px;letter-spacing:1px}.journey i{margin:0 7px}.header{left:25px;right:25px;top:max(23px,env(safe-area-inset-top))}.brand-name{font-size:27px}.intro{left:7%;right:5%;top:46%}.intro h1{font-size:44px;letter-spacing:1px}.intro p{font-size:14px;max-width:230px;line-height:2}.eyebrow{font-size:11px;letter-spacing:2px}.board-button{min-width:225px;max-width:260px;padding:16px 20px}.headphone-note{font-size:11px}.footer{left:24px;right:24px;bottom:max(22px,env(safe-area-inset-bottom));font-size:11px;letter-spacing:1px}.footer>span:first-child{display:none}.welcome-whisper{font-size:12px;letter-spacing:1px;bottom:12%;max-width:90%;white-space:normal;text-align:center}.paper-dialog{padding:37px 26px 20px}.paper-dialog h2{font-size:23px}.paper-prose{font-size:15px;line-height:2.2}.paper-image-wrap{margin:10px -5px}.photo-caption{font-size:12px;line-height:1.8;flex-wrap:wrap}.ticket-dialog{padding:30px 24px}.ticket-route strong{font-size:14px}.ticket-perforation{margin-left:-24px;margin-right:-24px}}
@media(max-height:570px) and (min-width:801px){.header{top:18px}.intro h1{font-size:39px;line-height:1.45;margin:17px 0 12px}.intro p{margin-bottom:18px}.board-button{padding:13px 20px}.headphone-note{margin-top:12px}.footer{bottom:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.camera-flash{display:none}.entered .welcome-whisper{opacity:1}}

/* Object feedback follows artwork alpha; buttons remain visually unobtrusive. */
.object-hit:hover,.object-hit.responding,.object-hit:active{background:transparent;backdrop-filter:none;animation:none;box-shadow:none}.object-hit{border-radius:22%;touch-action:none;min-width:0;min-height:0}.object-hit:focus-visible{outline:1px solid #ffe3a3;outline-offset:3px}.object-hit.window-hit{z-index:0}.object-hit:not(.window-hit){z-index:50}.object-hit[data-object="fallen_flower"]{cursor:grab}.object-hit[data-object="fallen_flower"]:active{cursor:grabbing}.scene>canvas{pointer-events:none}.scene #objectCanvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.board-button:disabled{opacity:.6}

.book-dialog{--book-cover:#344a3e;width:min(980px,96vw);max-height:94svh;overflow:auto;border:0;border-radius:10px;padding:18px 23px 15px;background:var(--book-cover);color:#f0e6cc;box-shadow:0 30px 110px #0009}.book-heading{display:flex;align-items:center;justify-content:space-between;padding:0 5px 13px;letter-spacing:3px;font-size:16px}.reader-spread{position:relative;display:flex;min-height:510px;perspective:1900px;perspective-origin:50% 35%;isolation:isolate}.reader-page{position:relative;width:50%;padding:40px 35px 35px;background:#eee3c8;color:#394239;border-radius:3px;overflow:hidden;min-height:510px}.reader-page>canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.17;pointer-events:none}.reader-left{background:linear-gradient(90deg,#efe6cd 94%,#c5b795)}.reader-right{background:linear-gradient(90deg,#c9bea1,#f2e9d3 7%,#ebdfc1)}.reader-text{position:relative;z-index:1}.reader-text h3{margin:8px 0 30px;font-size:21px;font-weight:500;letter-spacing:2px}.reader-text p{white-space:pre-line;line-height:2.05;font-size:16px;letter-spacing:.6px;margin:16px 0}.reader-leaf{position:absolute;z-index:4;top:0;bottom:0;left:50%;width:50%;transform-style:preserve-3d;transform-origin:0 50%;will-change:transform}.reader-leaf>.reader-page{position:absolute;inset:0;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:3px 5px 17px #3d261c20}.leaf-back{transform:rotateY(180deg);background:#ece1c5}.reader-leaf.turning{animation:reader-turn var(--turn-duration,1400ms) cubic-bezier(.36,.03,.32,1) both}.reader-leaf.turning .leaf-front:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#37261488,transparent 75%);animation:leaf-shade var(--turn-duration,1400ms) ease-in-out both}.reader-gutter{pointer-events:none;position:absolute;z-index:5;top:0;bottom:0;left:calc(50% - 8px);width:16px;background:linear-gradient(90deg,transparent,#5b482e28,#fff4da33,transparent)}.reader-footer{display:flex;justify-content:space-between;align-items:center;padding:16px 8px 0;color:#e7ddc4;font-size:13px;letter-spacing:2px}.reader-footer button{padding:8px 13px;background:#eee4ca1a;border:1px solid #eee4ca33;border-radius:3px;font-size:14px}.reader-footer button:disabled{opacity:.45}.book-dialog[data-edition="poetry"] .reader-text{text-align:center}.book-dialog[data-edition="poetry"] .reader-text p{line-height:2.35;letter-spacing:2px}.book-dialog[data-edition="sketch"] .reader-left>canvas{opacity:.28}.paper-dialog[data-kind="notebook"]{background:#dce3e5;color:#334453;border:8px solid #344459}.paper-dialog[data-kind="suitcase"]{border:6px solid #714c32}.book-dialog::backdrop{background:#07131ed1;backdrop-filter:blur(7px)}
@keyframes reader-turn{0%{transform:rotateY(0deg) skewY(0)}25%{transform:rotateY(-34deg) skewY(-1.5deg)}65%{transform:rotateY(-133deg) skewY(1.2deg)}100%{transform:rotateY(-180deg) skewY(0)}}@keyframes leaf-shade{0%,100%{opacity:0}50%{opacity:1}}
@media(max-width:700px){.book-dialog{padding:12px 10px}.reader-page{padding:23px 14px;min-height:530px}.reader-spread{min-height:530px}.reader-text h3{font-size:18px;letter-spacing:0;margin:5px 0 20px}.reader-text p{font-size:14px;line-height:1.95;letter-spacing:0}.book-dialog[data-edition="poetry"] .reader-text p{letter-spacing:0;line-height:2.2}.book-heading{font-size:14px;padding-left:5px}.reader-leaf>.reader-page{padding:23px 14px}}@media(prefers-reduced-motion:reduce){.reader-leaf.turning{animation-duration:.01ms!important}}
