:root{font-family:"Microsoft YaHei","Noto Sans CJK SC",sans-serif;color:#173c72;background:#dff6ff}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(140deg,#d7f6ff,#bfe5ff 65%,#eaf7ff)}header{height:76px;background:#fff9;border-bottom:5px solid #2e8df1;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1280px)/2));box-shadow:0 4px 18px #3888c025}header .brand{font-size:25px;font-weight:900;color:#1264bd}nav{display:flex;gap:10px}nav a,.button{display:inline-block;border:3px solid #348af1;background:white;color:#1264bd;border-radius:18px;padding:10px 18px;font-size:17px;font-weight:800;text-decoration:none;cursor:pointer;box-shadow:0 4px 0 #b4d9ff}nav a:hover,.button:hover{transform:translateY(-2px);background:#ecf7ff}main{width:min(1280px,94vw);margin:24px auto}h1{font-size:clamp(30px,4vw,48px);margin:8px 0 12px;color:#1264bd}h2{font-size:27px}.lead{font-size:20px;margin:6px 0 20px}.panel{background:#fff;border:5px solid #2886ee;border-radius:32px;padding:24px;box-shadow:0 11px 0 #86c4f7,0 18px 35px #3385c035}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.tile{background:#f7fcff;border:3px solid #b0ddff;border-radius:23px;padding:18px;text-decoration:none;color:inherit;transition:.2s}.tile:hover{transform:translateY(-5px);border-color:#2789f3}.tile h2{margin:12px 0 6px}.tile p{font-size:17px;line-height:1.5}.tile .emoji{font-size:64px}.note{font-size:15px;color:#476989}.vr-viewport{position:relative;overflow:hidden;width:100%;height:min(66vh,690px);border:5px solid #348af1;border-radius:25px;background:#82c5f3;touch-action:none;cursor:grab}.vr-viewport:active{cursor:grabbing}.vr-world{position:absolute;height:100%;aspect-ratio:1792/1024;min-width:145%;left:0;top:0;background-image:url('../assets/vr_panorama.png');background-size:100% 100%;background-repeat:no-repeat}.hotspot{position:absolute;transform:translate(-50%,-50%);width:64px;height:64px;border:4px solid white;border-radius:50%;background:#ff9b16;color:#fff;font-size:29px;font-weight:900;box-shadow:0 0 0 8px #ffdc7ca0,0 8px 20px #002e6699;cursor:pointer;animation:pulse 2s infinite}.hotspot:hover{scale:1.12}.hotspot.seen{background:#30b66c;box-shadow:0 0 0 8px #a8efbe99,0 8px 20px #002e6699}@keyframes pulse{50%{box-shadow:0 0 0 15px #ffdc7c44,0 8px 20px #002e6699}}.vrbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin:10px 0}.count{font-size:19px;font-weight:800}.modal-back{position:fixed;inset:0;background:#081f4b9c;display:none;align-items:center;justify-content:center;z-index:10;padding:20px}.modal-back.open{display:flex}.modal{width:min(620px,96vw);background:#fff;border:7px solid #3b9cff;border-radius:31px;padding:25px;box-shadow:0 25px 80px #0007;animation:pop .4s both}@keyframes pop{from{opacity:0;transform:scale(.75) translateY(30px)}to{opacity:1;transform:scale(1)}}.modal h2{margin:0 0 12px}.mini-scene{height:225px;border-radius:20px;background:#e4f5ff;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;font-size:105px}.mini-scene .moving{animation:bob 1.3s ease-in-out infinite alternate;display:inline-block}@keyframes bob{to{transform:translateY(-16px) rotate(7deg)}}.mini-scene .float{position:absolute;right:12%;top:12%;font-size:60px;animation:float 1.7s ease-in-out infinite alternate}@keyframes float{to{transform:translateY(30px) scale(1.15)}}.modal p{font-size:23px;line-height:1.5;font-weight:700}.modal footer{display:flex;justify-content:flex-end}.progress{height:14px;background:#d9edff;border-radius:50px;overflow:hidden;margin:15px 0}.progress>span{display:block;height:100%;background:#ffad24;transition:width .3s}.choice{display:block;width:100%;text-align:left;background:#f1f9ff;border:3px solid #bedcff;border-radius:20px;padding:17px;margin:12px 0;font-size:21px;font-weight:700;cursor:pointer;color:#1b497d}.choice:hover{background:#e2f3ff;border-color:#3499ff}.choice.selected{border-color:#ff9b18;background:#fff4dc}.feedback{background:#e8f8ef;border:3px solid #85dba9;border-radius:20px;padding:18px;font-size:20px;font-weight:700;line-height:1.5;margin-top:18px}.card{background:white;border:3px solid #b7ddff;border-radius:20px;padding:18px}.chat{height:min(53vh,540px);overflow:auto;display:flex;flex-direction:column;gap:14px;padding:10px}.bubble{max-width:80%;padding:16px 19px;border-radius:23px;font-size:19px;line-height:1.6;white-space:pre-wrap}.bubble.bot{background:#ecf7ff;border:2px solid #baddff;align-self:flex-start}.bubble.user{background:#287fe4;color:white;align-self:flex-end}.composer{display:flex;gap:12px;margin-top:15px}.composer input{flex:1;border:3px solid #9ecefa;border-radius:15px;padding:15px;font-size:19px;min-width:0}.composer button{white-space:nowrap}.suggestions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.suggestions button{font-size:15px;border:2px solid #b1dbff;background:#f4fbff;border-radius:25px;padding:8px 12px;cursor:pointer;color:#2469ab}@media(max-width:750px){header{height:auto;padding:14px;flex-wrap:wrap;gap:12px}header .brand{font-size:20px}nav a{padding:6px 8px;font-size:14px}.grid{grid-template-columns:1fr}.vr-viewport{height:60vh}.hotspot{width:52px;height:52px;font-size:24px}.panel{padding:15px}.bubble{max-width:95%}}

.voice-button{background:#fff4dd;border-color:#f4a332;color:#80500a}.voice-button[aria-pressed="true"]{background:#ffe0d9;border-color:#e66d58;color:#893329}.voice-button:disabled{opacity:.55;cursor:not-allowed}.voice-status{min-height:1.5em;margin:9px 2px 0;color:#3b658c;font-size:15px}@media(max-width:750px){.composer{flex-wrap:wrap}.composer input{flex-basis:100%}.composer button{flex:1}}
.chat{height:clamp(220px,35vh,360px)}
.connection-status{display:inline-block;margin:0 0 16px;padding:9px 15px;border-radius:16px;background:#fff3d8;border:2px solid #f4cc7c;color:#825700;font-size:16px;font-weight:700}.bubble.error{background:#fff0ee;border-color:#edb6ad;color:#9b3d32}.composer button:disabled{opacity:.6;cursor:wait}
