*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5f2ed;--bg-warm:#ece6dc;--text:#2c2825;--text-light:#9a938b;--accent:#c4956b;--accent-light:#e8d5bc;--accent-glow:#c4956b59;--glass-bg:#ffffffb8;--glass-border:#ffffff80;--glass-blur:blur(20px);--shadow-soft:0 4px 24px #0000000a;--shadow-lift:0 8px 32px #00000014;--serif:"Noto Serif SC", "Playfair Display", serif;--sans:"Noto Sans SC", "DM Sans", sans-serif;--ease-out:cubic-bezier(.19, 1, .22, 1);--ease-bounce:cubic-bezier(.175, .885, .32, 1.275)}html,body{width:100%;height:100%;font-family:var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden}#app{width:100%;height:100%;position:relative;overflow:hidden}#app:before{content:"";pointer-events:none;z-index:999;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");position:fixed;inset:0}.page{opacity:0;transition:opacity .6s var(--ease-out), transform .6s var(--ease-out);pointer-events:none;flex-direction:column;display:flex;position:absolute;inset:0;overflow-y:auto;transform:translateY(8px)}.page.active{opacity:1;pointer-events:all;transform:translateY(0)}.landing{text-align:center;background:radial-gradient(at 30% 20%,#e8d5bc66 0%,#0000 60%),radial-gradient(at 70% 80%,#c4956b26 0%,#0000 50%),linear-gradient(170deg,#f8f4ef 0%,#ede6db 50%,#e5ddd2 100%);justify-content:center;align-items:center;padding:2rem}.landing h1{font-family:var(--serif);letter-spacing:.18em;color:var(--text);animation:landingTitle 1s var(--ease-out) both;margin-bottom:.6rem;font-size:clamp(2.2rem,9vw,3.8rem);font-weight:700}@keyframes landingTitle{0%{opacity:0;transform:translateY(20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.landing .subtitle{color:var(--text-light);letter-spacing:.06em;animation:landingFade 1s var(--ease-out) .2s both;margin-bottom:3rem;font-size:clamp(.85rem,2.8vw,1rem);font-weight:300}@keyframes landingFade{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.landing .enter-btn{border:1.5px solid var(--accent);color:var(--accent);font-family:var(--serif);cursor:pointer;transition:all .4s var(--ease-out);letter-spacing:.12em;animation:landingFade 1s var(--ease-out) .4s both;background:0 0;border-radius:999px;padding:.9rem 2.8rem;font-size:1rem;text-decoration:none;display:inline-block;position:relative;overflow:hidden}.landing .enter-btn:before{content:"";background:var(--accent);transform-origin:0;transition:transform .4s var(--ease-out);z-index:-1;position:absolute;inset:0;transform:scaleX(0)}.landing .enter-btn:hover{color:#fff;border-color:var(--accent)}.landing .enter-btn:hover:before{transform:scaleX(1)}.landing .brand{color:var(--text-light);opacity:.5;letter-spacing:.1em;animation:landingFade 1s var(--ease-out) .6s both;margin-top:2.5rem;font-size:.75rem}.rooms-page{background:var(--bg);padding:1.5rem 1.5rem env(safe-area-inset-bottom);justify-content:center;align-items:center;gap:1rem;height:100%;overflow:hidden}.rooms-page h2{font-family:var(--serif);color:var(--text);letter-spacing:.12em;font-size:clamp(1.3rem,5vw,1.8rem);font-weight:400}.room-grid{flex-direction:column;flex:1;align-items:center;gap:.6rem;width:100%;max-width:340px;min-height:0;display:flex}.room-card{cursor:pointer;width:100%;transition:transform .5s var(--ease-out), box-shadow .5s var(--ease-out);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--shadow-soft);animation:cardIn .6s var(--ease-out) both;border-radius:24px;position:relative;overflow:hidden}.room-card:first-child{animation-delay:.1s}.room-card:nth-child(2){animation-delay:.2s}.room-card:nth-child(3){animation-delay:.3s}@keyframes cardIn{0%{opacity:0;transform:translateY(20px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.room-card:hover{box-shadow:var(--shadow-lift), 0 0 0 1px var(--accent-light);transform:translateY(-4px)scale(1.01)}.room-card:active{transition-duration:.12s;transform:scale(.97)}.room-card{flex:1;min-height:0;position:relative}.room-card img{object-fit:cover;width:100%;height:100%;display:block}.room-card .room-label{font-family:var(--serif);color:#fff;letter-spacing:.12em;text-shadow:0 1px 4px #0000004d;background:linear-gradient(#0000 0%,#00000059 100%);padding:2rem 1rem .7rem;font-size:1rem;position:absolute;bottom:0;left:0;right:0}@media (width>=500px){.room-grid{flex-direction:row;gap:1rem;max-width:700px}.room-card{flex:1;max-width:210px}.room-card img{aspect-ratio:9/12}}.scene-page{background:var(--bg);position:relative}.scene-header{z-index:20;-webkit-backdrop-filter:blur(8px);background:linear-gradient(#f5f2edf2 0%,#f5f2ed00 100%);align-items:center;padding:.8rem 1rem;display:flex;position:absolute;top:0;left:0;right:0}.scene-back{color:var(--text-light);cursor:pointer;margin-right:.8rem;font-size:1.4rem;line-height:1;text-decoration:none;transition:color .3s}.scene-back:hover{color:var(--text)}.scene-guide{color:var(--text-light);transition:opacity .4s var(--ease-out);font-size:clamp(.78rem,2.5vw,.9rem);font-weight:300}.scene-progress{color:var(--accent);white-space:nowrap;letter-spacing:.05em;margin-left:auto;font-size:.75rem;font-weight:500}.scene-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;position:relative;overflow-y:auto}.scene-canvas{aspect-ratio:941/1672;cursor:pointer;width:100%;max-width:500px;margin:0 auto;position:relative}.scene-canvas .bg{width:100%;display:block}.scene-canvas .item-layer{filter:grayscale()brightness(.85);width:100%;height:100%;transition:filter .7s var(--ease-out);pointer-events:none;position:absolute;inset:0}.scene-canvas .item-layer.awake{filter:none;animation:awaken .7s var(--ease-out)}@keyframes awaken{0%{filter:brightness(1.3)saturate(1.2);transform:scale(1.03)}60%{filter:brightness(1.1)}to{filter:none;transform:scale(1)}}.scene-canvas .item-layer.awake.just-awoke{filter:drop-shadow(0 0 16px var(--accent-glow))}.dialogue-overlay{z-index:30;max-height:45vh;transition:transform .5s var(--ease-out);flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.dialogue-overlay.visible{transform:translateY(0)}.dialogue-content{--mask-top:transparent;--mask-bottom:transparent;-webkit-mask-image:linear-gradient(to bottom, var(--mask-top) 0%, black 12%, black 85%, var(--mask-bottom) 100%);-webkit-mask-image:linear-gradient(to bottom, var(--mask-top) 0%, black 12%, black 85%, var(--mask-bottom) 100%);mask-image:linear-gradient(to bottom, var(--mask-top) 0%, black 12%, black 85%, var(--mask-bottom) 100%);flex:1;padding:1rem 1rem .5rem;overflow-y:auto}.dialogue-bubble{background:var(--glass-bg);max-width:380px;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);animation:bubbleIn .45s var(--ease-out) both;border-radius:16px;margin:0 auto .5rem;padding:.75rem 1rem;box-shadow:0 2px 12px #00000008}.dialogue-bubble .speaker{color:var(--accent);letter-spacing:.04em;text-transform:uppercase;margin-bottom:.15rem;font-size:.7rem;font-weight:500}.dialogue-bubble .text{color:var(--text);font-size:.88rem;line-height:1.6}@keyframes bubbleIn{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.loading-text{animation:1.2s infinite loadingDots}@keyframes loadingDots{0%,20%{opacity:.3}50%{opacity:1}80%,to{opacity:.3}}.dialogue-overlay .close-btn{margin:.3rem auto calc(.6rem + env(safe-area-inset-bottom));background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);color:var(--text-light);cursor:pointer;letter-spacing:.06em;transition:all .3s var(--ease-out);border:1px solid #c4956b4d;border-radius:999px;flex-shrink:0;padding:.45rem 1.6rem;font-size:.75rem;display:block}.dialogue-overlay .close-btn:hover{border-color:var(--accent);color:var(--accent)}.celebration{z-index:50;-webkit-backdrop-filter:blur(12px);opacity:0;pointer-events:none;transition:opacity .6s var(--ease-out);background:#f5f2edeb;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.celebration.visible{opacity:1;pointer-events:all}.celebration h3{font-family:var(--serif);color:var(--accent);animation:celebPop .7s var(--ease-bounce);margin-bottom:.5rem;font-size:1.5rem}.celebration p{color:var(--text-light);margin-bottom:1.5rem;font-size:.9rem}.celebration .next-btn{border:1.5px solid var(--accent);color:var(--accent);font-family:var(--serif);cursor:pointer;transition:all .4s var(--ease-out);letter-spacing:.08em;background:0 0;border-radius:999px;padding:.7rem 2.2rem}.celebration .next-btn:hover{background:var(--accent);color:#fff}@keyframes celebPop{0%{opacity:0;transform:scale(.5)}60%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.finale-page{text-align:center;background:radial-gradient(at 50% 30%,#c4956b14 0%,#0000 60%),linear-gradient(170deg,#2c2825 0%,#211e1b 50%,#181614 100%);justify-content:center;align-items:center;padding:2rem 1.5rem;overflow-y:auto}.finale-content{max-width:420px}.finale-icon{color:var(--accent);animation:celebPop .8s var(--ease-bounce);margin-bottom:1rem;font-size:2rem}.finale-title{font-family:var(--serif);color:#f0e8dc;letter-spacing:.15em;margin-bottom:.4rem;font-size:clamp(1.8rem,7vw,2.5rem);font-weight:700}.finale-subtitle{color:#a09890;letter-spacing:.03em;margin-bottom:2rem;font-size:.85rem}.finale-rooms{justify-content:center;gap:.8rem;margin-bottom:2rem;display:flex}.finale-room-badge{opacity:.35;transition:opacity .5s var(--ease-out);flex-direction:column;align-items:center;gap:.3rem;display:flex}.finale-room-badge.completed{opacity:1}.finale-room-badge img{object-fit:cover;border:2px solid #0000;border-radius:14px;width:68px;height:68px;transition:border-color .4s}.finale-room-badge.completed img{border-color:var(--accent);box-shadow:0 0 20px var(--accent-glow)}.finale-room-badge span{color:#a09890;letter-spacing:.05em;font-size:.7rem}.finale-room-badge.completed span{color:var(--accent-light)}.finale-message{margin-bottom:2rem}.finale-message p{color:#b8b0a8;font-size:.88rem;font-weight:300;line-height:1.9}.finale-highlight{font-family:var(--serif);letter-spacing:.1em;margin-top:1rem;color:var(--accent)!important;font-size:1.2rem!important;font-weight:400!important}.finale-brand{opacity:.65;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:2rem;display:flex}.finale-qwen{font-family:var(--serif);color:#f0e8dc;letter-spacing:.12em;font-size:1rem}.finale-tagline{color:#706860;letter-spacing:.08em;font-size:.7rem}.finale-actions{justify-content:center;gap:.8rem;display:flex}.finale-btn{border:1.5px solid var(--accent);background:var(--accent);color:#fff;font-family:var(--serif);cursor:pointer;transition:all .4s var(--ease-out);letter-spacing:.06em;border-radius:999px;padding:.65rem 1.8rem;font-size:.88rem}.finale-btn:hover{background:#d4a67a;border-color:#d4a67a}.finale-btn.outline{color:var(--accent-light);background:0 0}.finale-btn.outline:hover{background:#c4956b1f}.qwen-toast{z-index:60;color:#f0e8dc;letter-spacing:.06em;opacity:0;transition:opacity .4s var(--ease-out), transform .4s var(--ease-out);pointer-events:none;-webkit-backdrop-filter:blur(12px);white-space:nowrap;background:#2c2825d1;border:1px solid #c4956b33;border-radius:999px;padding:.45rem 1.3rem;font-size:.78rem;position:fixed;top:3.5rem;left:50%;transform:translate(-50%)translateY(-6px);box-shadow:0 4px 16px #0000001a}.qwen-toast.visible{opacity:1;transform:translate(-50%)translateY(0)}.qwen-toast .qwen-icon{color:var(--accent);margin-right:.3rem}@media (width>=768px){.scene-canvas{max-width:420px}}
