/* Codex维护：2026-09-05。全新孔庙游览界面，桌面与触屏适配。 */
:root{font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:#f2f0df;background:#142523;font-synthesis:none;--glass:rgba(20,37,35,.91);--gold:#dbbd7d;--muted:#c3c8b8;--line:rgba(230,226,198,.21)}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);border-radius:7px;background:rgba(31,47,42,.65);padding:10px 15px}button:hover{background:#426052}button:focus-visible,a:focus-visible{outline:2px solid #ffe5a2;outline-offset:3px}button[aria-pressed=true]{color:#233c33;background:#d7caa5}a{color:inherit;text-decoration:none}button[hidden],[hidden]{display:none!important}#scene{display:block;width:100vw;height:100dvh;touch-action:none;outline:none}.topbar{position:absolute;top:0;left:0;width:100%;height:98px;padding:20px 32px;display:flex;align-items:center;gap:20px;background:linear-gradient(180deg,rgba(10,29,26,.94),rgba(10,29,26,.5) 77%,transparent);z-index:5;pointer-events:none}.topbar>*{pointer-events:auto}.back{font-size:35px;width:34px;color:var(--gold)}.brand{display:flex;align-items:center;gap:14px}.seal{border:1px solid #d5bd8c;color:#e1c591;font-family:KaiTi,serif;font-size:30px;padding:5px 7px;line-height:1.15;border-radius:3px}.eyebrow{font-size:10px;letter-spacing:.27em;color:#e8dcbb}h1{font-family:KaiTi,STKaiti,serif;font-size:29px;margin:3px 0;letter-spacing:.12em}h1 span{font:11px "Microsoft YaHei",sans-serif;letter-spacing:.1em;margin-left:15px;color:#d3d5c8}.topbar nav{margin-left:auto;display:flex;gap:8px;align-items:center}.topbar nav button{font-size:12px;background:rgba(18,36,32,.73)}#help-btn{border-radius:50%;width:35px;height:35px;padding:0}.welcome{position:absolute;left:max(6vw,40px);top:25%;width:390px;z-index:3;text-shadow:0 2px 10px #18342c}.welcome-kicker{font-size:12px;color:#f6dfac;letter-spacing:.28em;display:flex;align-items:center;gap:13px}.welcome-kicker:before{content:"";width:30px;height:1px;background:var(--gold)}.welcome h2{font-family:KaiTi,STKaiti,serif;font-size:clamp(40px,4.5vw,70px);font-weight:400;line-height:1.25;margin:24px 0;letter-spacing:.04em}.welcome em{font-style:normal;color:#f4dfac}.welcome p{font-size:13px;line-height:1.9;color:#f7f4dd}.start-actions{display:flex;gap:10px;margin-top:28px}.primary{background:#e1c795!important;color:#243d30;border-color:#e1c795;padding:13px 20px;font-weight:600}.primary span{margin-left:20px}.welcome .truth{font-size:10px;color:#d9ddce;margin-top:21px;line-height:1.65}.panel{background:var(--glass);border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 55px #091d2540;backdrop-filter:blur(14px)}.map-panel{position:absolute;left:22px;top:108px;bottom:80px;width:365px;z-index:8;display:flex;flex-direction:column;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;padding:20px 20px 8px;align-items:flex-start}.panel-heading h2{font-family:KaiTi,serif;font-size:22px;font-weight:400;margin:7px 0}.panel small,dialog small,.place-panel small{font-size:10px;letter-spacing:.14em;color:var(--gold)}.close{font-size:25px;background:transparent;border:0;padding:0;width:32px;height:32px;line-height:1}.map-body{position:relative;display:flex;min-height:0;flex:1;gap:6px;padding:4px 14px}.map-body canvas{width:120px;height:100%;object-fit:contain;border-right:1px solid var(--line)}.destinations{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#758574 transparent}.destinations button{display:block;text-align:left;border:0;background:none;font-size:12px;padding:9px 11px;width:100%;border-radius:4px}.destinations button:hover,.destinations button.active{background:#4b635347;color:var(--gold)}.destinations span{display:inline-block;color:#aeb6a0;font:9px monospace;width:25px}.map-note{font-size:9px;color:#bcc1af;line-height:1.7;margin:12px 22px 17px}.location{position:absolute;top:111px;left:36px;display:flex;align-items:center;gap:8px;font-size:12px;background:var(--glass);border:1px solid var(--line);border-radius:30px;padding:9px 15px}.live-dot{height:6px;width:6px;border-radius:50%;background:var(--gold)}#indoor{font-size:9px;border-left:1px solid var(--line);padding-left:9px;color:var(--gold)}.part-panel{position:absolute;right:27px;top:120px;width:282px;z-index:7;padding:23px}.part-panel .close{position:absolute;right:12px;top:8px}.part-panel h2{font:30px KaiTi,serif;margin:14px 0;color:#baf0d9}.part-panel p{font-size:12px;color:#d6decf;line-height:1.8;margin-bottom:20px}.part-panel button:last-child{font-size:11px;padding:8px 11px}.part-label{position:absolute;pointer-events:none;border-radius:4px;font-size:12px;padding:7px 11px;background:#d8f4dc;color:#163b2b;border:1px solid #fff;box-shadow:0 4px 20px #0c292c50;z-index:4;white-space:nowrap;transform:translate(-50%,-130%)}.place-panel{position:absolute;left:34px;bottom:97px;width:320px;text-shadow:0 1px 5px #102922;background:linear-gradient(90deg,#14382bd9,#163c2d66);padding:15px 20px;border-left:2px solid var(--gold);pointer-events:none}.place-panel h2{font:27px KaiTi,serif;margin:8px 0}.place-panel p{font-size:11px;line-height:1.8;color:#e5e5d6;margin:0}.bottom{position:absolute;bottom:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:23px 32px;background:linear-gradient(0deg,#102b26d9,transparent);font-size:10px;color:#e0e3d3;pointer-events:none}.bottom>*{pointer-events:auto}.control-hint{display:flex;align-items:center;gap:8px}.key{font:10px monospace;border:1px solid #e4e4cc60;padding:5px 7px;border-radius:3px}.divider{padding:0 5px;color:#c0b385}.footer-links{display:flex;gap:18px;align-items:center}.footer-links button{font-size:10px;padding:5px 9px}.footer-links a{border-bottom:1px solid #c7c9b26b}.footer-links span{font-size:9px;color:#abb6a7}.loader{position:fixed;inset:0;z-index:20;background:#142523;display:flex;flex-direction:column;gap:18px;align-items:center;justify-content:center}.loader strong{font:29px KaiTi,serif;letter-spacing:.18em}.loader small{font-size:12px;color:#bcc6af}.loader-spinner{border:1px solid #637366;border-top-color:#ebdcb0;border-radius:50%;width:36px;height:36px;animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error{position:absolute;top:30%;left:50%;transform:translateX(-50%);max-width:90vw;width:460px;padding:30px;z-index:25}.error p{font-size:14px;line-height:1.8}.error a{display:block;margin-top:25px;color:var(--gold)}dialog{color:#e9eadb;background:#152924;border:1px solid #6c78604f;box-shadow:0 40px 160px #000a;border-radius:14px;padding:24px;max-height:90dvh}dialog::backdrop{background:#091b20c9;backdrop-filter:blur(6px)}.dialog-header{display:flex;align-items:center;justify-content:space-between}.dialog-header h2{font:28px KaiTi,serif;margin:5px 0 10px}.photo-dialog{width:min(1100px,94vw);overflow-y:auto}.photo-tabs{display:flex;gap:7px;overflow-x:auto;margin:15px 0}.photo-tabs button{white-space:nowrap;font-size:11px;padding:8px 12px}.photo-tabs .active{background:var(--gold);color:#243729}.photo-stage{background:#0b1917;display:grid;place-items:center;min-height:150px}.photo-stage img{display:block;max-width:100%;width:auto;max-height:61dvh;object-fit:contain}#photo-credit{font-size:10px;line-height:1.8;color:#cfcead}#photo-credit a{text-decoration:underline}.photo-note{font-size:10px;line-height:1.6;color:#c8cbb9}.help-dialog{width:min(530px,94vw)}.help-dialog ul{padding:0 0 0 18px;font-size:13px;line-height:1.9}.help-dialog li{margin:12px 0}.help-dialog p{font-size:11px;color:#bbc4b1;line-height:1.8}.joystick{position:absolute;bottom:79px;left:24px;z-index:6;width:116px;text-align:center;touch-action:none;user-select:none}.stick-ring{position:relative;width:110px;height:110px;border:1px solid #ecedde77;border-radius:50%;background:#1d382c42;backdrop-filter:blur(3px)}.stick-ring:before,.stick-ring:after{content:"";position:absolute;background:#f1edd537}.stick-ring:before{width:62px;height:1px;top:54px;left:23px}.stick-ring:after{height:62px;width:1px;top:23px;left:54px}.stick-knob{position:absolute;left:34px;top:34px;width:40px;height:40px;border:1px solid #eee3c3c9;background:#e8dab380;border-radius:50%}.joystick span{font-size:10px;display:block;margin-top:7px;text-shadow:0 1px 4px #142e29}.touch-look{position:absolute;right:28px;bottom:128px;font-size:10px;color:#ffffebbd;pointer-events:none;text-shadow:0 2px 5px #142e29}
@media(max-width:850px){.topbar{height:89px;padding:12px 17px;gap:7px}.brand{gap:9px}.seal{font-size:24px}.eyebrow{font-size:8px}h1{font-size:25px}h1 span{display:none}.topbar nav{gap:4px}.topbar nav button{font-size:10px;padding:8px 9px}.back{width:24px}.welcome{left:7vw;top:27%;width:340px}.welcome h2{font-size:51px}.bottom{padding:19px 20px}.control-hint{font-size:9px;gap:4px}.divider{padding:0 2px}.footer-links{gap:9px}.part-panel{top:98px;right:17px;width:250px}.location{left:20px;top:96px}.place-panel{left:20px;width:290px}.map-panel{top:96px;bottom:62px;left:16px}}
@media(max-width:580px){.topbar{align-items:flex-start;height:118px}.topbar nav{position:absolute;left:18px;right:18px;top:72px;margin:0;justify-content:space-between}.topbar nav button{font-size:10px;padding:8px 10px}.brand{margin-left:3px}.seal{padding:4px 6px}.eyebrow{font-size:8px}h1{margin-top:2px}.welcome{top:26%;left:7vw;width:86vw;max-width:380px}.welcome h2{font-size:44px;line-height:1.2;margin:19px 0}.welcome p{font-size:12px}.welcome .truth{font-size:9px}.welcome-kicker{font-size:10px}.start-actions{margin-top:22px}.start-actions button{font-size:12px;padding:12px 16px}.primary span{margin-left:10px}.bottom{align-items:flex-end;min-height:54px;padding:14px 17px}.control-hint{display:none}.footer-links{width:100%;justify-content:space-between;font-size:9px}.location{top:132px;left:18px;font-size:10px;padding:7px 12px}.place-panel{left:auto;right:17px;bottom:68px;width:calc(100vw - 185px);padding:10px 11px}.place-panel h2{font-size:22px;margin:5px 0}.place-panel p{display:none}.place-panel small{font-size:8px}.part-panel{top:178px;right:17px;width:calc(100vw - 34px);max-width:290px;padding:17px}.part-panel h2{font-size:26px;margin:9px 0}.part-panel p{font-size:11px;margin:9px 0}.part-panel button:last-child{padding:6px 9px;font-size:10px}.part-panel small{font-size:9px}.map-panel{left:12px;right:12px;width:auto;top:128px;bottom:62px}.map-body canvas{width:128px}.map-panel .panel-heading{padding:15px 17px 5px}.map-panel h2{font-size:21px}.map-note{margin:8px 20px 12px}.photo-dialog{padding:15px}.dialog-header h2{font-size:23px}.photo-stage img{max-height:48dvh}.photo-note,#photo-credit{font-size:9px}.photo-tabs button{font-size:10px}.touch-look{bottom:136px;right:22px;font-size:9px}}
@media(pointer:coarse){.control-hint{display:none}.place-panel{left:auto;right:20px;bottom:85px}.joystick:not([hidden]){display:block}.touch-look:not([hidden]){display:block}}
@media(max-height:540px){.welcome{top:25%;left:6vw}.welcome h2{font-size:34px;margin:12px 0}.welcome p{font-size:10px}.welcome .truth{margin-top:12px}.start-actions{margin-top:14px}.start-actions button{padding:9px 12px}.joystick{bottom:58px;width:85px}.stick-ring{transform:scale(.75);transform-origin:left bottom;margin-top:-27px;margin-right:-27px}.joystick span{display:none}.place-panel p{display:none}.place-panel{bottom:68px}.map-panel{bottom:52px}.part-panel{top:110px}.photo-stage img{max-height:43dvh}.topbar{height:78px}}
/* Codex维护：2026-09-05。保持欢迎文案完整换行。 */ .welcome{width:min(560px,46vw)} .welcome h2{font-size:clamp(40px,4.1vw,62px)} @media(max-width:580px){.welcome{width:86vw}.welcome h2{font-size:43px}}
