:root{color-scheme:dark;font-family:Arial,"Microsoft JhengHei",sans-serif;color:#f1ede4;background:#070d1c}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,select,a{-webkit-tap-highlight-color:transparent}button,select{font:inherit}button,a,select{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid #e6bc77;outline-offset:5px}[hidden]{display:none!important}#stage{position:fixed;inset:0;background:#070d1c url('360view/pano-a9eb7526ce85.webp') center/cover}#stage canvas{display:block;width:100%;height:100%}.masthead{position:fixed;z-index:3;top:0;left:0;right:0;padding:26px 4vw;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:11px;letter-spacing:.12em;text-shadow:0 1px 9px #000}.masthead span{font-size:10px;letter-spacing:.2em}.masthead i{font-style:normal;color:#e8b975;margin:0 12px}.intro{position:fixed;inset:0;z-index:2;padding:15vh 9vw 5vh;background:linear-gradient(90deg,#050a16db,#050a1670 50%,#050a1600);overflow:auto}.eyebrow{font-size:10px;letter-spacing:.32em;color:#e5bd83;margin:0 0 24px}h1{font:400 clamp(48px,7.5vw,108px)/.95 Georgia,serif;letter-spacing:-.04em;margin:0}h1 em{font-weight:400;color:#f0ca94}.chinese{font-size:21px;letter-spacing:.42em;margin:28px 0}.invitation{font:italic 19px/1.5 Georgia,serif;color:#d7dce8}.details{margin-top:28px;font-size:11px;letter-spacing:.14em;color:#c6d2e1}#enter{margin-top:15px;border:1px solid #d9bc8d;color:#171720;background:#ead1a9;padding:16px 36px;min-width:205px;letter-spacing:.12em}#enter:disabled{opacity:.5;cursor:wait}#load-status{font-size:11px;color:#bdc9d8;max-width:450px;line-height:1.7}.chapter{position:fixed;top:90px;left:4vw;font-size:10px;letter-spacing:.2em;display:grid;gap:10px;text-shadow:0 1px 8px #000}.chapter span:last-child{font-size:11px;letter-spacing:.08em;color:#cad3e1}.caption{position:fixed;bottom:120px;left:4vw;max-width:min(550px,80vw);text-shadow:0 1px 12px #000}.caption p:first-child{color:#e6be80;font-size:10px;letter-spacing:.2em}.caption h2{font:400 clamp(22px,3vw,38px)/1.15 Georgia,serif;margin:10px 0}.caption p:last-child{font:14px/1.6 Georgia,serif;max-width:480px;color:#d9e2ec;margin:0}#controls{position:fixed;right:4vw;bottom:max(30px,env(safe-area-inset-bottom));z-index:4;max-width:92vw;border:1px solid #bbcbe442;background:#070e1cdb;backdrop-filter:blur(16px);border-radius:8px;padding:6px}.main-controls{display:flex;align-items:center;gap:4px}#controls button{background:none;color:#f0ede5;border:0;min-width:42px;min-height:42px;padding:10px 13px;font-size:12px}#pause{color:#efc994!important;min-width:66px!important}#extra-controls{padding:12px;display:grid;gap:14px;border-top:1px solid #aebbd52e;font-size:12px}#extra-controls label{display:flex;align-items:center;justify-content:space-between;gap:20px}select{max-width:220px;background:#172034;border:1px solid #6b7586;color:#efede8;padding:9px;font-size:12px}.progress{position:fixed;bottom:0;left:0;right:0;height:2px;background:#ffffff18}#progress-fill{display:block;height:100%;width:0;background:#e4b675;transition:width .4s}#error{position:fixed;z-index:10;inset:15vh 8vw;background:#0d1628f5;padding:35px;overflow:auto;line-height:1.8}#error a{display:block;margin:20px 0;color:#efc994}#error h2{font-size:24px}body.entered .masthead{background:linear-gradient(#060d1bc0,transparent)}@media(max-width:700px){.masthead{padding:20px;font-size:10px}.masthead span{display:none}.intro{padding:17vh 7vw 25px}.eyebrow{font-size:9px}h1{font-size:clamp(43px,11vw,75px)}.chinese{font-size:17px}.invitation{font-size:17px}.chapter{top:70px;left:6vw}.caption{left:6vw;bottom:120px;max-width:88vw}.caption p:last-child{font-size:12px;max-height:58px;overflow:auto}.caption h2{font-size:24px}#controls{right:5vw;bottom:max(22px,env(safe-area-inset-bottom))}#controls button{padding:10px 9px}.details{font-size:10px;line-height:1.8}}@media(max-height:650px) and (min-width:701px){.intro{padding-top:15vh}h1{font-size:65px}.chinese{margin:16px 0}.invitation{font-size:16px}.details{margin-top:12px}.caption p:last-child{display:none}.caption{bottom:90px}}@media(prefers-reduced-motion:reduce){.progress span{transition:none}}

.entered #stage canvas{cursor:grab}.entered #stage canvas:active{cursor:grabbing}.main-controls{flex-wrap:wrap}
