:root{color-scheme:dark;--ink:#372b23;--paper:#f5ecdf;--muted:#a79886;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-synthesis:none;background:#211a16;color:#f8efdf}
*{box-sizing:border-box}body{margin:0}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button,input,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #deb788;outline-offset:5px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:"Songti SC","STSong",serif;font-weight:400}h1{font-size:clamp(32px,5vw,52px);letter-spacing:.12em}h2{font-size:30px;line-height:1.4;letter-spacing:.04em}p{font-size:16px;line-height:1.8}#app{height:100dvh;overflow:hidden;position:relative}.gate{width:min(440px,100%);padding:56px 28px;margin:auto;position:relative;top:50%;transform:translateY(-50%)}.gate>p{color:#bfb1a0}.eyebrow{font-size:11px;letter-spacing:.2em}.gate form{margin-top:32px}.button,.icon-button{min-height:46px;padding:12px 22px;border:1px solid #c4aa854a;border-radius:30px;background:#30241ebd;color:inherit;font-size:15px;backdrop-filter:blur(14px)}.primary{background:#eed3ac;color:#33251a;border-color:transparent}.button:hover{filter:brightness(1.1)}.icon-button{padding:6px;min-width:46px;font-size:23px}.room-scene{position:absolute;inset:0;touch-action:none;overflow:hidden}.room-scene canvas{display:block;width:100%;height:100%}.room-controls{position:absolute;bottom:max(20px,env(safe-area-inset-bottom));left:24px;right:24px;display:flex;gap:8px;pointer-events:none}.room-controls>*{pointer-events:auto}.room-controls>.button{margin-left:auto}.hotspot{position:absolute;left:0;top:0;width:44px;height:44px;border:0;background:transparent;padding:0;z-index:2;color:#fff1d6}.hotspot::before{content:"";position:absolute;inset:18px;border-radius:50%;background:#fff3d6;box-shadow:0 0 12px 5px #f7d29b35;transition:box-shadow .25s}.hotspot:hover::before,.hotspot:focus-visible::before{box-shadow:0 0 14px 7px #f7d29b70}.envelope{width:118px;padding-top:28px;font-family:"STKaiti","KaiTi",serif;font-size:14px;text-shadow:0 1px 5px #000}.envelope::before{inset:10px auto auto 53px;width:12px;height:9px;border:1px solid #fff2db;border-radius:2px}.wall-hit::before{opacity:.55}.window-hit::before{background:transparent;border:1px solid #fce2b9;width:9px;height:15px;inset:14px 17px;border-radius:1px}.connection{position:absolute;left:24px;top:max(18px,env(safe-area-inset-top));font-size:12px;color:#e8ddc8b0;pointer-events:none}.preview-label{position:absolute;top:16px;right:24px;font-size:11px;color:#e8ddc899;pointer-events:none}.panel{color-scheme:light;color:var(--ink);width:min(520px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:0;border:1px solid #e9d7ba55;border-radius:20px;background:var(--paper);box-shadow:0 28px 100px #100b0770;overscroll-behavior:contain;animation:arrive .26s ease-out}.panel::backdrop{background:#120d0865}.panel-content{padding:32px}.gift-panel{margin-right:max(32px,calc((100vw - 1400px)/2));width:min(430px,40vw);background:linear-gradient(125deg,#2f261ce6,#2f261cb0);color:#f8efdf;backdrop-filter:blur(12px);border-color:#f6e5c82b}.gift-panel::backdrop{background:#110e0510}.gift-panel h2{font-size:32px}.tagline{color:#d4b998}.estimate{display:flex;align-items:baseline;gap:14px;border-bottom:1px solid #ad99814d;padding-bottom:18px}.estimate small{font-size:13px;opacity:.65}.estimate span{font-size:28px;font-family:Georgia,serif}.spec,.caption{font-size:14px;line-height:1.7;opacity:.7}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.reference-image{width:100%;height:160px;object-fit:cover;object-position:50% 45%;border-radius:8px;margin:4px 0 16px}.reference-link{color:inherit;text-underline-offset:5px;font-size:14px}.gift-panel .reference-image{display:none}.keyboard-return{position:absolute;left:16px;top:12px;opacity:0;pointer-events:none}.keyboard-return:focus{opacity:1;pointer-events:auto}.letter-panel{background:linear-gradient(115deg,#fcf6ec,#ece0cf)}.letter-panel h2{font-family:"STKaiti","KaiTi",serif}.handwritten,.signature,.note{font-family:"STKaiti","KaiTi","Kaiti SC",cursive,serif}.handwritten{font-size:23px;line-height:2;white-space:pre-wrap;overflow-wrap:anywhere;min-height:180px}.signature{text-align:right;font-size:20px;margin:32px 0}.text-button{display:block;border:0;background:none;color:inherit;text-decoration:underline;text-underline-offset:4px;padding:16px 0;font-size:14px;min-height:44px}.panel label,.gate label{display:block;font-size:14px;line-height:1.6;margin:18px 0 8px}.panel input:not([type=checkbox]),.panel textarea,.gate input{display:block;margin-top:7px;width:100%;border:1px solid #b29c7b55;border-radius:9px;padding:13px;background:#fff8ee99;color:var(--ink);font-size:16px;line-height:1.7}.panel textarea{resize:vertical;min-height:150px;font-family:"STKaiti","KaiTi",serif;font-size:20px}.check{display:flex!important;align-items:flex-start;gap:10px}.check input{margin-top:5px;min-width:18px;min-height:18px;accent-color:#7f6347}.error{font-size:14px;color:#b44835;white-space:pre-wrap}.wall-panel,.wishlist-panel{width:min(880px,calc(100% - 32px));background:#f2e8d8}.notes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:22px;margin-bottom:26px}.note{border:0;background:#fff8e8;color:#6b513b;text-align:left;padding:20px;box-shadow:0 5px 12px #61442c14;transform:rotate(-1deg);min-height:140px}.note:nth-child(3n){transform:rotate(1.5deg);background:#f2e1c3}.note p{font-size:19px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.note span{display:block;text-align:right;font-size:16px}.empty{padding:30px 0;color:#80694e}.gift-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 16px}.gift-tile{color:inherit;border:0;text-align:left;padding:0;background:transparent}.gift-tile img,.gift-placeholder{width:100%;height:150px;object-fit:cover;object-position:50% 46%;border-radius:10px;background:#e6d7c2}.gift-placeholder{display:flex;align-items:center;justify-content:center;padding:20px;color:#9b8267;font-family:"Songti SC",serif}.gift-tile h3{font-size:16px;margin:12px 0 6px;line-height:1.5;font-weight:400}.gift-tile p{font-size:14px;color:#876d53}#notice{position:fixed;bottom:100px;left:50%;transform:translate(-50%,12px);padding:12px 20px;max-width:90%;border-radius:12px;background:#241b14ec;color:#fff0d7;box-shadow:0 6px 26px #100b0733;font-size:14px;line-height:1.7;pointer-events:none;opacity:0;transition:opacity .2s,transform .2s;z-index:30}#notice.visible{opacity:1;transform:translate(-50%,0)}@keyframes arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:600px){.room-controls{left:14px;right:14px;gap:4px}.room-controls>.button{padding:12px 16px;font-size:14px}.gift-panel{width:calc(100% - 32px);margin:auto 16px 90px;max-height:48dvh}.gift-panel .panel-content{padding:22px}.gift-panel h2{font-size:26px}.gift-panel p{font-size:15px}.gift-panel .actions{margin-top:16px}.gift-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}.gift-tile img,.gift-placeholder{height:140px}.panel-content{padding:26px 22px}.panel h2{font-size:26px}.notes-grid{grid-template-columns:1fr}.connection{left:18px}.preview-label{right:16px;max-width:170px;text-align:right}.handwritten{font-size:21px}}@media(prefers-reduced-motion:reduce){*,*::before{animation:none!important;transition:none!important}}
.room-note{position:absolute;top:0;left:0;z-index:3;border:0;border-radius:1px;background:#f5e6c9;color:#70543b;font-family:"STKaiti","KaiTi",serif;overflow:hidden;line-height:1.3;padding:2px;box-shadow:1px 2px 3px #2d1a1238;text-align:left}
.panel:not(.gift-panel) .button:not(.primary){background:#e5d6bd;color:#3f2d1e;backdrop-filter:none}
@media(max-width:600px){.gift-panel-top{margin:70px 16px auto}}
