*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#d9d9ce;color:#2d3734;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #bf8c4b;outline-offset:4px}#stage{position:fixed;inset:0;touch-action:none}#stage canvas{display:block;width:100%;height:100%}.room-top{position:fixed;z-index:5;inset:20px 24px auto;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.room-top a,.room-top button{pointer-events:auto;text-decoration:none;color:#34413a}.room-brand{font:600 14px/1.2 system-ui;background:#f8f7f0df;padding:12px 15px;border:1px solid #fff8;border-radius:5px}.room-tools{display:flex;gap:8px}.room-tools button,.room-tools a{min-width:44px;min-height:44px;padding:10px 13px;background:#f8f7f0da;border:1px solid #fff9;border-radius:5px;font-size:14px}.room-title{position:fixed;top:88px;left:32px;z-index:3;pointer-events:none}.room-title small{font:11px/1.5 system-ui;color:#59685d}.room-title h1{font:400 29px/1.4 "Songti SC",Georgia,serif;margin:8px 0;color:#2f4138}.room-title p{font-size:14px;line-height:1.7;margin:0;color:#5a665d}.room-dock{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:5;display:flex;gap:16px;align-items:center;padding:8px 10px;background:#f6f4ebc9;border:1px solid #fff9;border-radius:6px;backdrop-filter:blur(14px);max-width:calc(100% - 24px)}.room-dock button{min-height:44px;padding:9px 16px;background:#315e4d;color:#fff;border:0;border-radius:4px;white-space:nowrap;font-size:14px}.room-dock small{font-size:12px;white-space:nowrap;color:#526358}.room-stick{position:relative;width:56px;height:56px;border-radius:50%;background:#dce6deba;border:1px solid #a6b7aa;touch-action:none;flex:none}.room-stick span{position:absolute;left:15px;top:15px;width:24px;height:24px;border-radius:50%;background:#587c66;pointer-events:none}.room-hint{position:fixed;bottom:105px;left:50%;transform:translateX(-50%);z-index:4;padding:8px 15px;border-radius:4px;background:#faf8f0d9;font-size:13px;white-space:nowrap;transition:opacity .6s;pointer-events:none}.room-hint.faded{opacity:0}.letter-dialog{border:0;padding:0;margin:auto;width:min(1000px,calc(100vw - 32px));max-height:90dvh;overflow:auto;background:#faf8f0;border-radius:6px;color:#344139;box-shadow:0 20px 100px #18291e40}.letter-dialog::backdrop{background:#1a2d24ad;backdrop-filter:blur(5px)}.letter-layout{display:grid;grid-template-columns:1fr 1fr;min-height:460px}.letter-photo{display:flex;align-items:center;padding:24px;background:#e6e6db}.letter-photo img{width:100%;height:100%;max-height:72dvh;object-fit:contain}.letter-copy{padding:52px 40px 36px}.letter-copy small{font-size:12px;color:#8b6f50}.letter-copy h2{font:400 28px/1.45 "Songti SC",Georgia,serif;margin:18px 0 24px}.letter-copy p{font:16px/2 system-ui;white-space:pre-line}.letter-copy .signature{text-align:right;font-family:"Songti SC",serif;font-size:20px;margin-top:28px}.dialog-close{position:sticky;float:right;top:12px;right:12px;margin:12px 12px -56px 0;z-index:2;width:44px;height:44px;border:1px solid #a7b6a6;background:#faf9f0f5;color:#34513e;border-radius:50%;font-size:26px}.wish-copy{padding:55px 38px 40px;text-align:center;max-width:650px;margin:auto}.wish-copy h2{font:400 34px/1.5 "Songti SC",Georgia,serif}.wish-copy p{font-size:16px;line-height:1.9}.wish-copy textarea{display:block;width:100%;min-height:100px;background:#fffdf5;border:1px solid #bac7b9;border-radius:4px;padding:15px;font:16px/1.8 system-ui;color:#344139;resize:vertical;margin:22px 0}.wish-copy button{min-height:48px;background:#345d4b;color:white;border:0;padding:12px 25px;border-radius:4px}.wish-copy small{display:block;margin-top:12px;color:#7b8477;font-size:12px}.room-loading{position:fixed;inset:0;z-index:20;background:#e9e9df;display:grid;place-content:center;text-align:center;gap:14px;transition:opacity .5s}.room-loading h1{font:400 32px/1.5 "Songti SC",serif;margin:0}.room-loading p{font-size:14px;color:#6f776c}.room-loading[hidden]{display:none}.room-error{position:fixed;inset:0;z-index:30;background:#f5f3e9;padding:15vh 24px;text-align:center}.room-error button{padding:12px 24px;font-size:16px}.room-toast{position:fixed;top:80px;left:50%;transform:translateX(-50%);z-index:10;background:#304d3deb;color:white;padding:12px 18px;font-size:14px;border-radius:4px;max-width:90%;text-align:center;pointer-events:none}.room-toast[hidden]{display:none}@media(max-width:700px){.room-top{inset:12px}.room-title{top:74px;left:20px}.room-title h1{font-size:25px}.room-title p{font-size:13px;max-width:210px}.room-title small{font-size:10px}.room-dock{bottom:calc(10px + env(safe-area-inset-bottom));gap:10px;padding:6px 8px}.room-dock button{padding:9px 12px;font-size:13px}.room-dock small{display:none}.room-hint{bottom:100px;font-size:12px}.letter-layout{display:block}.letter-photo{padding:16px}.letter-photo img{max-height:43dvh;min-height:180px}.letter-copy{padding:22px 25px 30px}.letter-copy h2{font-size:25px;margin:12px 0 18px}.letter-copy p{font-size:16px;line-height:1.9}.letter-dialog{width:calc(100vw - 20px);max-height:92dvh}.wish-copy{padding:45px 24px 28px}.wish-copy h2{font-size:28px}}
.room-dock button,.wish-copy button{background:#315484}.room-stick{background:#e0e7f0bb;border-color:#a6b6ce}.room-stick span{background:#5576a4}.room-title h1{color:#273e5e}.room-title small,.room-title p{color:#536276}.letter-dialog{background:#fafafa}.letter-photo{background:#e7ebf0}.letter-dialog::backdrop{background:#1b293aab}.room-toast{background:#315484ed}
.room-top~.room-title p{background:#f6f8fbe8;display:inline-block;padding:3px 7px;border-radius:3px}.room-dock button{background:#315484!important}.room-stick span{background:#5576a4!important}
body .room-dock button,body .wish-copy button{background:#785563!important}body .room-stick span{background:#8f6e79!important}body .room-stick{background:#e9dadcba;border-color:#bda7ac}body .room-title h1{color:#614550}body .room-title small,body .room-title p{color:#75606a}body .letter-dialog{background:#fcf6ef}body .letter-photo{background:#e8dcd3}body .letter-dialog::backdrop{background:#392831a6}body .room-toast{background:#785563ed}
.room-title{padding:12px 16px;background:#fcf6efdc;border-left:2px solid #b18a76;max-width:calc(100vw - 40px)}.room-title h1{font-size:25px;margin:4px 0}.room-title p{background:none!important;padding:0!important}.room-dock{background:#fcf6efe6}.room-tools{flex-wrap:wrap;justify-content:flex-end}.room-hint{max-width:calc(100vw - 24px);white-space:normal;text-align:center}@media(max-width:700px){.room-brand{padding:10px;font-size:12px}.room-tools{gap:5px}.room-tools button,.room-tools a{font-size:12px;padding:8px;min-height:40px}.room-title{top:72px;left:12px;padding:8px 11px}.room-title h1{font-size:21px}.room-title p{font-size:12px}.room-dock{gap:8px}.room-dock button{padding:9px 10px}.room-hint{font-size:11px;bottom:96px}}
