:root{--ink:#23303a;--ink-2:#5b6a74;--cream:#fbf6ec;--paper:#fffaf1;--sea:#cfe3ee;--sea-2:#9cc4e4;--gold:#e8b45c;--coral:#ef8f78;--shadow:0 18px 50px -18px #23303a73;--font:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Noto Sans SC", system-ui, sans-serif;--serif:"Songti SC", "STSong", "Noto Serif SC", Georgia, serif;--plum:#3e3546;--teal:#2f5d62;--mono:ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, "Courier New", monospace}:root.paper-ui{--ink:#3a2e28;--ink-2:#7a6a5e;--paper:#fbf6ee}*{box-sizing:border-box}html,body{background:var(--sea);height:100%;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}#world{touch-action:none;outline:none;width:100%;height:100%;display:block;position:fixed;inset:0}@media (any-pointer:fine){#world{cursor:grab}#world.grabbing{cursor:grabbing}}body.touch{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}body.touch input,body.touch textarea{-webkit-user-select:text;user-select:text}button{touch-action:manipulation}#ui{pointer-events:none;z-index:2;position:fixed;inset:0}#ui>*{pointer-events:none}.prompt{box-shadow:var(--shadow);color:var(--ink);opacity:0;white-space:nowrap;background:#fffaf1eb;border-radius:999px;align-items:center;gap:8px;padding:7px 14px 7px 7px;font-size:14px;transition:opacity .25s;display:flex;position:fixed;top:0;left:0}.prompt.show{opacity:1;cursor:pointer;pointer-events:auto!important}.prompt-key{background:var(--ink);min-width:26px;height:26px;color:var(--paper);border-radius:999px;place-items:center;padding:0 6px;font-size:12px;font-weight:600;display:grid}.subtitle{left:50%;bottom:calc(42px + env(safe-area-inset-bottom));color:#fff;opacity:0;text-align:center;background:#1c2228c7;border-radius:18px;width:max-content;max-width:min(760px,100vw - 28px);padding:14px 50px 16px;transition:opacity .35s,transform .35s,bottom .3s;position:fixed;transform:translate(-50%,12px)}.subtitle.show{opacity:1;transform:translate(-50%)}body:not(.touch) .subtitle.show{cursor:pointer;pointer-events:auto!important}.sub-who{letter-spacing:.18em;color:var(--gold);margin-bottom:6px;font-size:12px}.sub-text{text-wrap:pretty;line-break:strict;word-break:normal;overflow-wrap:anywhere;font-size:18px;line-height:1.6}.sub-off{color:#0000}.sub-next{color:#fff;cursor:pointer;opacity:0;pointer-events:none;background:#ffffff24;border:0;border-radius:50%;place-items:center;width:32px;height:32px;margin-top:-16px;padding:0 0 2px 2px;font:500 21px/1 system-ui,sans-serif;transition:opacity .3s,background .2s;display:grid;position:absolute;top:50%;right:9px}.sub-next:before{content:"";position:absolute;inset:-8px}.subtitle.show .sub-next{opacity:.9;pointer-events:auto}.sub-next:active{background:#ffffff52}body.touch .subtitle{bottom:calc(244px + env(safe-area-inset-bottom));text-align:left;border-radius:16px;width:calc(100vw - 24px);max-width:640px;padding:12px 52px 13px 16px}body.touch .sub-text{font-size:16px;line-height:1.65}body.touch.talking .subtitle{bottom:calc(150px + env(safe-area-inset-bottom))}@media (orientation:landscape) and (height<=540px){body.touch .subtitle{bottom:calc(12px + env(safe-area-inset-bottom));width:min(54vw,600px);padding:10px 50px 11px 16px}body.touch .sub-text{font-size:15px;line-height:1.55}body.touch.talking .subtitle{bottom:auto;top:calc(58px + env(safe-area-inset-top))}body.touch .act{max-width:min(36vw,300px);bottom:calc(40px + env(safe-area-inset-bottom))}body.touch .joystick{left:calc(96px + env(safe-area-inset-left));top:calc(100% - 104px - env(safe-area-inset-bottom));width:136px;height:136px;margin:-68px 0 0 -68px}body.touch .coach-joy{left:calc(96px + env(safe-area-inset-left));top:calc(100% - 104px - env(safe-area-inset-bottom))}}.toast{left:50%;top:calc(22px + env(safe-area-inset-top));width:max-content;max-width:calc(100vw - 32px);box-shadow:var(--shadow);text-align:center;line-break:strict;opacity:0;background:#fffaf1f0;border-radius:22px;padding:10px 18px;font-size:14px;line-height:1.5;transition:opacity .3s,transform .3s;position:fixed;transform:translate(-50%,-10px)}body.touch .toast{top:calc(64px + env(safe-area-inset-top))}.toast.show{opacity:1;transform:translate(-50%)}.hint{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));color:#23303ab3;letter-spacing:.08em;white-space:nowrap;font-size:12px;transition:opacity 1s;position:fixed;transform:translate(-50%)}body.touch .hint{bottom:auto;top:calc(62px + env(safe-area-inset-top));white-space:normal;text-align:center;color:#fff;letter-spacing:.04em;background:#1c22288c;border-radius:999px;width:max-content;max-width:calc(100vw - 32px);padding:7px 14px}.hint.gone{opacity:0}.strip{left:calc(18px + env(safe-area-inset-left));top:calc(16px + env(safe-area-inset-top));box-shadow:var(--shadow);background:#1c1815c7;border-radius:10px;gap:5px;padding:7px 9px;display:flex;position:fixed}.strip[hidden]{display:none}.exit{left:calc(18px + env(safe-area-inset-left));top:calc(62px + env(safe-area-inset-top));color:#ffffffeb;height:32px;font:inherit;letter-spacing:.04em;box-shadow:var(--shadow);cursor:pointer;background:#1c1815b8;border:0;border-radius:999px;align-items:center;gap:6px;padding:0 13px 0 10px;font-size:12.5px;transition:opacity .4s,background .2s;display:flex;position:fixed;pointer-events:auto!important}.exit:hover{background:#1c1815e0}.exit svg{flex:none;width:15px;height:15px}.strip[hidden]~.exit{top:calc(16px + env(safe-area-inset-top))}body.in-scene .exit,body.gating .exit{opacity:0;pointer-events:none!important}.strip,.corner{transition:opacity .6s}body.in-scene .strip{opacity:0}body.in-scene .corner{opacity:.35}body.in-scene .corner:hover,body.in-scene .corner:focus-within{opacity:1}body.touch .strip{gap:3px;padding:6px 8px}body.touch .strip i{border-top-width:2px;border-bottom-width:2px;width:11px;height:17px}@media (width<=430px){body.touch .strip-label{display:none}}.strip i{background:#ffffff1f;border-top:3px dotted #ffffff4d;border-bottom:3px dotted #ffffff4d;border-radius:2px;width:16px;height:22px;transition:background .5s}.strip i.on{background:linear-gradient(160deg,#f6d58b,#e9a85b)}.strip-label{color:#fffc;letter-spacing:.1em;align-self:center;margin-left:6px;font-size:11px}.talk{left:50%;bottom:calc(22px + env(safe-area-inset-bottom));opacity:0;width:min(640px,94vw);transition:opacity .3s,transform .3s;position:fixed;transform:translate(-50%,20px);pointer-events:none!important}.talk.show{opacity:1;transform:translate(-50%);pointer-events:auto!important}.talk.show *{pointer-events:auto}.talk-chips{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:10px;display:flex}.talk-chip{color:var(--ink);font:inherit;box-shadow:var(--shadow);cursor:pointer;background:#fffaf1e6;border:0;border-radius:999px;padding:7px 14px;font-size:13px}.talk-chip:hover{background:#fff}.talk-bar{box-shadow:var(--shadow);background:#fffaf1f5;border-radius:999px;gap:8px;padding:8px;display:flex}.talk-input{font:inherit;color:var(--ink);background:0 0;border:0;outline:0;flex:1;min-width:0;padding:0 14px;font-size:16px}.talk-send{background:var(--ink);color:var(--paper);font:inherit;cursor:pointer;border:0;border-radius:999px;padding:0 20px;font-weight:600}.talk-x{color:var(--ink-2);cursor:pointer;background:0 0;border:0;width:36px;font-size:22px}.talk.busy .talk-send{opacity:.4}body.talking .subtitle{bottom:calc(150px + env(safe-area-inset-bottom))}body.touch .talk{bottom:calc(14px + env(safe-area-inset-bottom) + var(--kb,0px))}body.touch .talk-chips{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;justify-content:flex-start;padding:2px 2px 6px;overflow-x:auto}body.touch .talk-chips::-webkit-scrollbar{display:none}body.touch .talk-chip{flex:none;padding:9px 14px;font-size:14px}body.touch .talk-bar{padding:6px}body.touch .talk-send{padding:0 18px}.gift{opacity:0;z-index:5;background:#120e0c9e;place-items:center;padding:16px;transition:opacity .5s;display:grid;position:fixed;inset:0;pointer-events:none!important}.gift.show{opacity:1;pointer-events:auto!important}.gift.show *{pointer-events:auto}.gift-card{color:#2b2420;outline-offset:-12px;background:#f6efe2;border-radius:6px;outline:3px solid #2b2420;width:min(460px,92vw);max-height:94vh;padding:22px 24px 16px;transition:transform .7s cubic-bezier(.2,.8,.2,1);position:relative;overflow:auto;transform:translateY(18px)rotate(-1.2deg);box-shadow:0 30px 80px -20px #000000b3}.gift.show .gift-card{transform:none}.gift-stamp{text-align:center;letter-spacing:.32em;color:#5b4d42;margin:8px 0 12px;font-family:Georgia,serif;font-size:12px}.gift-film{background:#14110f;border-radius:3px;padding:10px}.gift-film img{aspect-ratio:1;object-fit:cover;border-radius:2px;width:100%;display:block}.gift-meta{text-align:center;padding:14px 6px 4px}.gift-title{font-family:var(--serif);font-size:24px;font-weight:700}.gift-trick{color:#5b4d42;margin-top:6px;font-size:13px;line-height:1.6}.gift-note{margin-top:12px;font-family:Kaiti SC,STKaiti,KaiTi,Georgia,serif;font-size:17px;font-style:italic;line-height:1.7}.gift-sign{color:#5b4d42;margin-top:8px;font-family:Georgia,serif;font-style:italic}.gift-actions{justify-content:center;gap:10px;margin-top:14px;display:flex}.gift-actions button{font:inherit;cursor:pointer;border:0;border-radius:999px;padding:10px 20px;font-weight:600}.gift-save{color:#f6efe2;background:#2b2420}.gift-close{color:#2b2420;background:0 0;outline:1.5px solid #2b2420}.gift-foot{text-align:center;color:#8a7b6e;margin-top:12px;font-size:10px;line-height:1.5}.gating .subtitle{display:none!important}.gate{z-index:6;opacity:0;transition:opacity .45s;position:fixed;inset:0;pointer-events:auto!important}.gate.in{opacity:1}.gate *{pointer-events:auto}@keyframes gate-rise{0%{opacity:0;filter:blur(8px);transform:translateY(18px)}to{opacity:1;filter:none;transform:none}}@keyframes gate-fade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes breathe{0%,to{box-shadow:0 14px 40px -14px #0a1e3c8c,0 0 #ffffff8c}50%{box-shadow:0 14px 40px -14px #0a1e3c8c,0 0 0 10px #fff0}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.14)}to{opacity:0;transform:scale(.2)}}.gate.title{background:linear-gradient(#0e284e6b 0%,#0e284e1f 30%,#0e284e00 42% 60%,#0e284e61 100%)}.gt{text-align:center;color:#fff;height:100%;padding:calc(9vh + env(safe-area-inset-top)) 20px calc(6vh + env(safe-area-inset-bottom));flex-direction:column;justify-content:space-between;align-items:center;display:flex}.gt-kicker{letter-spacing:.62em;text-indent:.62em;opacity:0;text-shadow:0 2px 12px #0a1e3c73;font-size:12px;animation:.9s .2s forwards gate-fade}.gt-name{font-family:"PlazaSerif", var(--serif);letter-spacing:.16em;text-indent:.16em;white-space:nowrap;text-shadow:0 8px 34px #081c3c6b,0 1px #fff6;margin:14px 0 0;font-size:clamp(54px,13vw,112px);font-weight:800;line-height:1.05}.gt-name span{opacity:0;animation:1.1s cubic-bezier(.2,.7,.2,1) forwards gate-rise;animation-delay:calc(.35s + var(--i) * .13s);display:inline-block}.gt-tag{opacity:0;text-shadow:0 1px 2px #081c3c8c,0 2px 16px #081c3c8c;max-width:34em;margin:18px auto 0;font-size:15px;line-height:1.95;animation:1s 1.15s forwards gate-fade}.gt-bottom{opacity:0;flex-direction:column;align-items:center;gap:16px;animation:.9s 1.6s forwards gate-fade;display:flex}.gt-start{color:var(--ink);font:inherit;letter-spacing:.22em;text-indent:.22em;cursor:pointer;background:#fffffff2;border:0;border-radius:999px;padding:17px 48px;font-size:17px;font-weight:600;transition:transform .2s;animation:2.8s ease-in-out 2.4s infinite breathe}.gt-start:active{transform:scale(.96)}.gt-lang{background:#ffffff3d;border-radius:999px;padding:3px;display:flex;box-shadow:inset 0 0 0 1px #ffffff73}.gt-lang button{color:#fff;font:inherit;letter-spacing:.08em;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:7px 16px;font-size:13px}.gt-lang button.on{color:var(--ink);background:#fff;font-weight:600}.gt-fine{opacity:.78;text-shadow:0 1px 8px #081c3c80;max-width:26em;font-size:11px;line-height:1.6}.pp-unseen{background:#c8473a0f;border-left:3px solid #c8473a;border-radius:4px 10px 10px 4px;margin-top:12px;padding:10px 12px}.pp-unseen-t{font-family:var(--serif);color:#3b2a22;margin-top:4px;font-size:14.5px;line-height:1.7}.gate.passport{padding:calc(56px + env(safe-area-inset-top)) 14px calc(16px + env(safe-area-inset-bottom));overscroll-behavior:contain;background:#0e16208f;place-items:start center;display:grid;overflow:auto}.gp{flex-direction:column;gap:12px;width:min(440px,100%);margin:auto 0;display:flex}.gp-say{color:var(--ink);opacity:0;background:#fffbf5eb;border-radius:18px 18px 18px 6px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:15px;line-height:1.65;animation:.6s .15s forwards gate-fade;display:flex;box-shadow:0 16px 40px -20px #0009}.gp-say img{object-fit:cover;border-radius:50%;flex:none;width:34px;height:34px}.pp{color:#2b2420;opacity:0;background:radial-gradient(120% 60% at 100% 0,#1f4f5a1a,#0000 60%),repeating-linear-gradient(135deg,#785a3209 0 2px,#0000 2px 7px),linear-gradient(160deg,#fcf6ea 0%,#f2e5cc 100%);border-radius:18px;padding:18px 18px 14px;transition:transform .85s cubic-bezier(.2,.8,.2,1) .2s,opacity .6s .2s;position:relative;overflow:clip;transform:translateY(46px)rotate(-1.6deg)scale(.96);box-shadow:0 34px 80px -26px #000000bf,inset 0 0 0 1px #785a3238}.gate.in .pp,.sheet.show .pp{opacity:1;transform:none}.pp:before{content:"";pointer-events:none;border:1px solid #1f4f5a38;border-radius:13px;position:absolute;inset:7px}.pp-head{border-bottom:1px dashed #1f4f5a4d;justify-content:space-between;align-items:baseline;padding-bottom:10px;display:flex}.pp-head b{font-family:"PlazaSerif", var(--serif);letter-spacing:.28em;color:#1f4f5a;font-size:21px;font-weight:800}.pp-head span{letter-spacing:.38em;color:#9a7a48;font-size:9.5px}.pp-main{grid-template-columns:96px 1fr;align-items:start;gap:16px;margin-top:14px;display:grid}.pp-photo{position:relative}.pp-photo img{object-fit:cover;border:3px solid #fff;border-radius:10px;width:96px;height:120px;display:block;box-shadow:0 10px 22px -12px #0000008c}.pp-stamp{color:#c8473a;width:76px;height:76px;font-family:"PlazaSerif", var(--serif);letter-spacing:.08em;text-align:center;mix-blend-mode:multiply;opacity:0;background:#fcf6ea40;border:3px double #c8473a;border-radius:50%;place-items:center;font-size:12px;font-style:normal;font-weight:800;line-height:1.35;display:grid;position:absolute;bottom:-14px;right:-18px;transform:rotate(-14deg)scale(2.3)}.pp.stamped .pp-stamp,.sheet.show .pp-stamp{animation:.42s cubic-bezier(.3,1.4,.5,1) forwards stamp}@keyframes stamp{0%{opacity:0;transform:rotate(-14deg)scale(2.3)}70%{opacity:.95;transform:rotate(-14deg)scale(.92)}to{opacity:.9;transform:rotate(-14deg)scale(1)}}.pp-k{letter-spacing:.32em;color:#9a7a48;font-size:9.5px}.pp-who{color:#6b5c4e;margin-top:3px;font-size:13px}.pp-title{font-family:var(--serif);color:#241d18;margin:8px 0 6px;font-size:21px;font-weight:700;line-height:1.35}.pp-line{color:#4b3f36;font-size:13.5px;line-height:1.75}.pp-keys{flex-wrap:wrap;gap:8px;margin:16px 0 2px;display:flex}.pp-keys b{color:#1f4f5a;letter-spacing:.18em;opacity:0;animation:.5s forwards gate-fade;animation-delay:calc(1.25s + var(--i) * .14s);border:1.5px solid #1f4f5a;border-radius:999px;padding:5px 13px;font-size:13px;font-weight:600}.pp-first{background:#1f4f5a14;border-radius:14px;align-items:center;gap:12px;margin-top:14px;padding:12px;display:flex}.pp-first img{object-fit:cover;border-radius:50%;flex:none;width:52px;height:52px;box-shadow:0 0 0 2px #fff}.pp-life{font-family:"PlazaSerif", var(--serif);color:#1f4f5a;margin-top:2px;font-size:17px;font-weight:700}.pp-why{color:#4b3f36;margin-top:3px;font-size:13px;line-height:1.6}.pp-visas{align-items:center;gap:8px;margin-top:12px;display:flex}.pp-visas span{letter-spacing:.3em;color:#9a7a48;margin-right:2px;font-size:9.5px}.pp-visa{filter:grayscale();opacity:.45;border:1.5px dashed #1f4f5a59;border-radius:50%;place-items:center;width:30px;height:30px;font-size:15px;font-style:normal;display:grid}.pp-visa.on{filter:none;opacity:1;background:#c8473a0f;border:1.5px solid #c8473a}.pp-actions{z-index:2;background:linear-gradient(#f2e5cc00 0,#f2e5ccf7 22px);border-radius:0 0 18px 18px;flex-direction:column;gap:8px;margin:16px -18px -14px;padding:14px 18px;display:flex;position:sticky;bottom:0}.pp-go{color:#fff;font:inherit;letter-spacing:.08em;cursor:pointer;background:#1f4f5a;border:0;border-radius:999px;padding:14px 20px;font-size:15.5px;font-weight:600;box-shadow:0 14px 28px -14px #1f4f5ae6}.pp-direct{color:#1f4f5a;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:11px 20px;font-size:14px;box-shadow:inset 0 0 0 1.5px #1f4f5a80}.pp-no{letter-spacing:.22em;color:#a48c6a;text-align:right;font-variant-numeric:tabular-nums;margin-top:12px;font-size:10px}.passport-sheet .passport-wrap{width:min(440px,100%)}.stamps{cursor:pointer;pointer-events:auto!important}@media (width<=480px){.gs{border-radius:24px;padding:16px 14px 14px}.gs-line{font-size:16.5px}.bubble{padding:10px 15px;font-size:14.5px}.gt-tag{font-size:14px}}@media (prefers-reduced-motion:reduce){.gt-name span,.gt-kicker,.gt-tag,.gt-bottom,.gx-pick,.gx-card,.pp-keys b,.gp-say{opacity:1!important;animation:none!important}}.lifecard{left:50%;bottom:calc(26px + env(safe-area-inset-bottom));width:min(420px,92vw);box-shadow:var(--shadow);opacity:0;background:#fffaf1f0;border-radius:20px;align-items:center;gap:14px;padding:14px 16px;transition:opacity .3s,transform .3s;display:flex;position:fixed;transform:translate(-50%,20px);pointer-events:none!important}.lifecard.show{opacity:1;transform:translate(-50%);pointer-events:auto!important}.lifecard.show *{pointer-events:auto}.lifecard img{object-fit:cover;background:#eee;border-radius:16px;flex:none;width:72px;height:72px}.lifecard-name{font-family:var(--serif);font-size:18px;font-weight:700}.lifecard-meta{color:var(--ink-2);letter-spacing:.05em;margin:2px 0 6px;font-size:12px}.lifecard-hook{font-size:13px;line-height:1.6}.lifecard-go{background:var(--ink);color:var(--paper);font:inherit;cursor:pointer;border:0;border-radius:999px;margin-top:8px;padding:8px 16px;font-size:13px;font-weight:600}.lifecard-go[disabled]{cursor:default;background:#23303a40}.corner{right:calc(16px + env(safe-area-inset-right));top:calc(16px + env(safe-area-inset-top));z-index:8;gap:8px;display:flex;position:fixed}.corner button{pointer-events:auto;min-width:36px;height:36px;color:var(--ink);font:inherit;box-shadow:var(--shadow);cursor:pointer;background:#fffaf1e6;border:0;border-radius:999px;place-items:center;padding:0 12px;font-size:13px;display:grid}.corner #btn-view{width:36px;padding:0}body.touch .corner button{min-width:40px;height:40px}body.touch .corner #btn-view{width:40px}.iris{z-index:20;pointer-events:none;opacity:0;--r:3000px;--x:50%;--y:50%;-webkit-mask:radial-gradient(circle at var(--x) var(--y), transparent var(--r), #000 calc(var(--r) + 1px));-webkit-mask:radial-gradient(circle at var(--x) var(--y), transparent var(--r), #000 calc(var(--r) + 1px));mask:radial-gradient(circle at var(--x) var(--y), transparent var(--r), #000 calc(var(--r) + 1px));background:#0b0908;position:fixed;inset:0}.iris.on{opacity:1}.lifecard{z-index:3;width:min(460px,94vw)}body.touch .lifecard{bottom:auto;top:calc(62px + env(safe-area-inset-top));gap:12px;padding:12px 14px;transform:translate(-50%,-14px)}body.touch .lifecard.show{transform:translate(-50%)}body.touch .lifecard img{border-radius:14px;width:60px;height:60px}body.touch .lifecard-hook{font-size:12.5px;line-height:1.55}body.touch .lifecard-go{margin-top:6px;padding:7px 14px}body.touch #ui:has(.lifecard.show) .hint{opacity:0}body.touch #ui:has(.lifecard.show) .toast{top:calc(178px + env(safe-area-inset-top))}.lifecard-body{min-width:0}.lifecard.soon img{filter:grayscale(.35)}.lifecard.soon .lifecard-go{color:var(--ink-2);background:#23303a2e}.stamps{left:calc(18px + env(safe-area-inset-left));top:calc(16px + env(safe-area-inset-top));box-shadow:var(--shadow);background:#fffaf1e0;border-radius:999px;align-items:center;gap:6px;padding:6px 10px 6px 12px;transition:opacity .4s;display:flex;position:fixed}.stamps.away{opacity:0;pointer-events:none!important}.stamps-label{letter-spacing:.16em;color:var(--ink-2);margin-right:4px;font-size:11px}.stamps i{filter:grayscale();opacity:.45;background:#23303a0f;border:1.5px dashed #23303a40;border-radius:50%;place-items:center;width:28px;height:28px;font-size:15px;font-style:normal;display:grid}.stamps i.on{filter:none;opacity:1;background:#fff4df;border:1.5px solid #c9853e}@media (width<=430px){.corner{right:calc(12px + env(safe-area-inset-right));gap:6px}body.touch .corner button{min-width:36px;height:36px;padding:0 10px}body.touch .corner #btn-view,body.touch .corner #btn-atlas,body.touch .corner #btn-mute{width:36px;padding:0}.stamps{left:calc(12px + env(safe-area-inset-left));gap:5px;padding:5px 8px 5px 10px}.stamps-label{letter-spacing:.1em;margin-right:3px;font-size:10px}.stamps i{width:26px;height:26px;font-size:14px}}@media (width<=370px){.stamps-label{display:none}}.bubble-say{max-width:260px;box-shadow:var(--shadow);color:var(--ink);opacity:0;background:#fffaf1f2;border-radius:16px 16px 16px 4px;padding:9px 14px;font-size:14px;line-height:1.5;transition:opacity .4s;position:fixed;top:0;left:0}.bubble-say.show{opacity:1}.sheet{opacity:0;z-index:5;background:#1c181473;place-items:center;padding:16px;transition:opacity .35s;display:grid;position:fixed;inset:0;pointer-events:none!important}.sheet.show{opacity:1;pointer-events:auto!important}.sheet.show *{pointer-events:auto}.sheet-card{background:var(--paper);border-radius:24px;width:min(720px,94vw);max-height:88vh;padding:26px 26px 22px;transition:transform .45s cubic-bezier(.2,.8,.2,1);position:relative;overflow:auto;transform:translateY(14px);box-shadow:0 30px 80px -30px #0009}.sheet.show .sheet-card{transform:none}.sheet-x{color:var(--ink-2);cursor:pointer;background:0 0;border:0;font-size:26px;position:absolute;top:10px;right:14px}.sheet-kicker{letter-spacing:.32em;color:#9a7a55;font-size:11px}.sheet h3{font-family:var(--serif);margin:8px 0 10px;font-size:24px;font-weight:600;line-height:1.45}.sheet p{color:var(--ink-2);margin:0 0 14px;line-height:1.7}.sheet-empty{text-align:center;padding:30px 0 10px}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin-top:8px;display:grid}.gallery-item{text-align:left;cursor:pointer;font:inherit;color:var(--ink);background:#f3ead9;border:0;border-radius:10px;padding:8px 8px 10px;transition:transform .2s;box-shadow:0 10px 24px -16px #00000080}.gallery-item:hover{transform:translateY(-3px)rotate(-.6deg)}.gallery-item img{aspect-ratio:4/3;object-fit:cover;background:#d8c7a6;border-radius:4px;width:100%;display:block}.gallery-item b{font-family:var(--serif);margin-top:8px;font-size:15px;line-height:1.35;display:block}.gallery-item span{color:var(--ink-2);margin-top:3px;font-size:12px;display:block}.note .sheet-card{text-align:center;width:min(520px,94vw)}.note textarea{resize:none;width:100%;font:inherit;color:var(--ink);background:#fff;border:0;border-radius:16px;outline:0;padding:14px 16px;font-size:16px;line-height:1.6;box-shadow:inset 0 0 0 1px #23303a1a}.sheet-go{background:var(--ink);color:var(--paper);font:inherit;cursor:pointer;border:0;border-radius:999px;margin-top:14px;padding:12px 30px;font-size:15px;font-weight:600}.note.busy .sheet-go{opacity:.45}.joystick{left:calc(94px + env(safe-area-inset-left));top:calc(100% - 150px - env(safe-area-inset-bottom));opacity:.72;background:radial-gradient(circle,#ffffff1a 0 40%,#ffffff42 100%);border:2px solid #ffffffbf;border-radius:50%;width:152px;height:152px;margin:-76px 0 0 -76px;transition:opacity .25s,border-color .2s,background .2s;position:fixed;box-shadow:0 10px 30px -14px #141c228c,inset 0 0 0 1px #23303a1f}.joystick.off{opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s .25s}.joystick.active{opacity:1;transition:opacity .12s}.joystick.run{background:radial-gradient(circle,#ffd27a1f 0 40%,#ffd27a57 100%);border-color:#ffd27a}.joystick i{background:#fffcf5f2;border-radius:50%;width:66px;height:66px;margin:-33px 0 0 -33px;transition:transform .18s cubic-bezier(.2,.8,.2,1);position:absolute;top:50%;left:50%;box-shadow:0 6px 16px -6px #141c228c}.joystick.active i{transition:none}.joystick b{letter-spacing:.12em;color:#fff;text-shadow:0 1px 6px #0000008c;white-space:nowrap;font-size:11px;font-weight:500;transition:opacity .3s;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.joystick.active b,.joystick.used b{opacity:0}.act{right:calc(16px + env(safe-area-inset-right));bottom:calc(118px + env(safe-area-inset-bottom));max-width:min(100vw - 210px,300px);color:var(--ink);font:inherit;opacity:0;pointer-events:none;background:#fffaf1f5;border:0;border-radius:999px;align-items:center;gap:10px;padding:6px 6px 6px 18px;font-size:15px;font-weight:600;transition:opacity .22s,transform .25s cubic-bezier(.2,.8,.2,1);display:none;position:fixed;transform:translateY(10px)scale(.96);box-shadow:0 16px 40px -14px #141c2299}body.touch .act{display:flex}.act.show{opacity:1;transform:none;pointer-events:auto!important}.joystick.off~.act{opacity:0;transform:translateY(10px)scale(.96);pointer-events:none!important}.act:active{transform:scale(.96)}.act-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.act-kicker{letter-spacing:.08em;opacity:.66;font-size:11px;font-weight:500;line-height:1.25;display:block}body.touch .act-label{white-space:normal;word-break:keep-all;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25;display:-webkit-box}.act-dot{background:var(--ink);border-radius:50%;flex:none;width:50px;height:50px;position:relative}.act-dot:before{content:"";background:var(--gold);border-radius:50%;animation:1.6s ease-out infinite act-pulse;position:absolute;inset:15px;box-shadow:0 0 #e8b45c99}.act.go{background:#fffaf1e6;font-weight:500}.act.go .act-dot{background:#1f4f5a}.act.go .act-dot:before{box-shadow:none;background:0 0;border-top:3px solid #fff;border-right:3px solid #fff;border-radius:2px;animation:1.4s ease-in-out infinite act-nudge;inset:17px 19px 17px 15px;transform:rotate(45deg)}@keyframes act-nudge{0%,to{translate:0}50%{translate:3px}}@keyframes act-pulse{0%{box-shadow:0 0 #e8b45ca6}to{box-shadow:0 0 0 14px #e8b45c00}}body.touch .prompt .prompt-key{display:none}body.touch .prompt{padding:6px 12px;font-size:13px}.ripple{pointer-events:none;border:2px solid #ffffffe6;border-radius:50%;width:54px;height:54px;margin:-27px 0 0 -27px;animation:.7s ease-out forwards ripple;position:fixed;box-shadow:0 0 12px #ffffff80}@keyframes ripple{0%{opacity:1;transform:scale(.3)}to{opacity:0;transform:scale(1.3)}}.coach{z-index:4;pointer-events:none;opacity:0;background:radial-gradient(120% 80% at 50% 70%,#14181e0d,#14181e6b);transition:opacity .45s;position:fixed;inset:0}.coach.show{opacity:1}.coach span{color:#fff;text-align:center;text-shadow:0 2px 10px #0009;font-size:14px;line-height:1.5;display:block}.coach-joy{left:calc(94px + env(safe-area-inset-left));top:calc(100% - 150px - env(safe-area-inset-bottom));position:absolute}.coach-joy:before{content:"";border:2px dashed #ffffffd9;border-radius:50%;width:168px;height:168px;animation:1.6s ease-in-out infinite coach-breathe;position:absolute;top:-84px;left:-84px}.coach-look{right:calc(36px + env(safe-area-inset-right));width:130px;position:absolute;top:40%}.coach-look i{background:linear-gradient(90deg,#fff0,#fff);border-radius:2px;width:92px;height:4px;margin:0 auto 12px;animation:1.5s ease-in-out infinite coach-swipe;display:block}.coach-tap{width:170px;position:absolute;top:24%;left:50%;transform:translate(-50%)}.coach-tap i{background:#ffffffe6;border-radius:50%;width:26px;height:26px;margin:0 auto 10px;animation:1.4s ease-out infinite coach-tap;display:block;box-shadow:0 0 #ffffffb3}.coach-pinch{left:50%;top:calc(62px + env(safe-area-inset-top));width:max-content;max-width:calc(100vw - 40px);position:absolute;transform:translate(-50%)}.coach-pinch span{text-shadow:none;background:#1c22288c;border-radius:999px;padding:6px 12px;font-size:12px}@keyframes coach-breathe{0%,to{opacity:.7;transform:scale(.94)}50%{opacity:1;transform:scale(1.04)}}@keyframes coach-swipe{0%{opacity:0;transform:translate(28px)}30%{opacity:1}to{opacity:0;transform:translate(-28px)}}@keyframes coach-tap{0%{box-shadow:0 0 #ffffffb3}to{box-shadow:0 0 0 22px #fff0}}.framein{z-index:15;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.framein-wall{background:radial-gradient(120% 90% at 50% 45%,#3a2e25 0%,#1d1713 60%,#0e0b09 100%);transition:opacity 1.4s;position:absolute;inset:0}.framein.scroll .framein-wall{background:radial-gradient(120% 90% at 50% 45%,#efe6d2 0%,#d9ccb0 70%,#c4b493 100%)}.framein-art{opacity:0;flex-direction:column;align-items:center;gap:16px;margin:0;transition:opacity 1s,transform 2.2s cubic-bezier(.2,.7,.2,1);display:flex;position:relative;transform:scale(.96)}.framein.in .framein-art{opacity:1;transform:none}.framein-frame{background:linear-gradient(135deg,#7a5a24 0%,#e6c271 22%,#9b7633 45%,#f2d88f 62%,#8e6a2b 82%,#d4ad5c 100%);padding:20px;position:relative;box-shadow:inset 0 0 0 2px #fff0c859,inset 0 0 0 9px #5a401859,0 40px 90px -20px #000c}.framein-frame img{width:auto;height:min(64vh,50vw);display:block;box-shadow:inset 0 0 0 1px #0000004d,0 0 0 3px #3b2a14}@media (orientation:portrait){.framein-frame{padding:14px}.framein-frame img{object-fit:contain;width:calc(100vw - 72px);height:auto;max-height:60vh}}.framein figcaption{font-family:Georgia, var(--serif);letter-spacing:.08em;color:#fff0dcbf;text-align:center;font-size:13px;line-height:1.6}.framein.scroll figcaption{color:#5b4a36;position:absolute;top:calc(100% + 16px);left:0;right:0}.framein.scroll .framein-frame{background:#e8dcc0;padding:18px 46px;box-shadow:inset 0 0 0 6px #b99b6a,inset 0 0 0 8px #e8dcc0,0 30px 70px -24px #3c281499}.framein.scroll .framein-frame:before,.framein.scroll .framein-frame:after{content:"";background:linear-gradient(90deg,#4a2f1a,#8a5a34 45%,#3a2414);border-radius:9px;width:18px;position:absolute;top:-10px;bottom:-10px;box-shadow:0 8px 20px #00000059}.framein.scroll .framein-frame:before{left:-9px}.framein.scroll .framein-frame:after{right:-9px}.framein.scroll .framein-frame img{clip-path:inset(0 50%);height:min(52vh,40vw);box-shadow:none;transition:clip-path 1.9s cubic-bezier(.45,0,.2,1) .3s}@media (orientation:portrait){.framein.scroll .framein-frame{padding:14px 26px}.framein.scroll .framein-frame img{object-fit:cover;width:min(100vw - 96px,77vh);height:43.32vh;max-height:none}}.framein.scroll.in .framein-frame img{clip-path:inset(0)}.framein.open .framein-wall{opacity:0}.framein.open .framein-frame{box-shadow:none;background:0 0;transition:background 1.2s,box-shadow 1.2s}.framein.open .framein-frame:before,.framein.open .framein-frame:after{opacity:0;transition:opacity .8s}.framein.open figcaption{opacity:0;transition:opacity .6s}.framein.through .framein-art{opacity:0;transition:opacity 1.2s,transform 1.4s cubic-bezier(.5,0,.75,0);transform:scale(1.35)}.gift-letter .gift-card{background:#f3e9d2;outline-color:#6b4a2a}.gift-portrait{background:#6b4a2a;border-radius:2px;width:74%;margin:0 auto;padding:9px;box-shadow:0 16px 34px -18px #000000b3}.gift-portrait img{aspect-ratio:3/4;object-fit:cover;background:#2b2420;width:100%;display:block}.gift-letter .gift-letter{background-image:repeating-linear-gradient(#0000 0 29px,#3c5a8c29 29px 30px);margin:8px 6px 0;padding:12px 14px 8px}.gift-letter .gift-note{color:#22304a;text-align:left;white-space:pre-wrap;margin:0;font-family:Kaiti SC,STKaiti,KaiTi,Georgia,serif;font-size:17px;font-style:normal;line-height:30px}.gift-letter .gift-sign{text-align:right;color:#22304a;font-size:20px}.gift-letter .gift-trick{font-family:Kaiti SC,STKaiti,KaiTi,Georgia,serif;font-style:italic}.gift-prescription .gift-card{background:#efe4cc;border-radius:3px;outline-color:#5a3d22;width:min(520px,94vw)}.gift-scroll{background:#d9c8a4;width:62%;margin:0 auto;padding:10px 10px 16px;box-shadow:inset 0 0 0 3px #3a2a1c,0 16px 30px -18px #3c2814cc}.gift-scroll img{aspect-ratio:3/4;object-fit:cover;background:#cdbb93;width:100%;display:block}.gift-rx{font-family:"Kaiti SC", "STKaiti", "KaiTi", var(--serif);color:#3b2f27;text-align:left;background:#f6eedb;border:1.5px solid #5a3c1e73;margin-top:14px;padding:14px 16px 10px}.rx-head{border-bottom:1px solid #5a3c1e59;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;padding-bottom:8px;display:flex}.rx-title{font-family:var(--serif);color:#2b2420;font-size:22px;font-weight:700}.rx-seal{color:#f6eedb;width:40px;height:40px;font-family:var(--serif);writing-mode:vertical-rl;letter-spacing:.05em;background:#b8352c;border-radius:3px;flex:none;place-items:center;font-size:15px;font-weight:700;line-height:1.05;display:grid;transform:rotate(-4deg)}.rx-line{margin:4px 0;font-size:15px;line-height:1.75}.rx-line:empty{display:none}.rx-line b{font-family:var(--serif);color:#6b2a20;margin-right:8px;font-weight:700}.rx-herbs{border-top:1px dashed #5a3c1e59;border-bottom:1px dashed #5a3c1e59;margin:8px 0;padding:8px 0;list-style:none}.rx-herbs li{grid-template-columns:auto auto 1fr;align-items:baseline;gap:4px 10px;padding:5px 0;display:grid}.rx-name{font-family:var(--serif);color:#2b2420;font-size:18px;font-weight:700}.rx-dose{font-family:var(--serif);color:#b8352c;font-size:14px;font-weight:700}.rx-why{color:#5a4a3c;grid-column:1/-1;font-size:14px;line-height:1.6}.rx-date{text-align:right;color:#6b5a48;margin-top:8px;font-size:13px}.rx-fine{font-family:var(--font);color:#8a7b6e;text-align:center;margin-top:6px;font-size:11px}.pulse{z-index:3;pointer-events:none;opacity:0;transition:opacity .8s;position:fixed;inset:0}.pulse.show{opacity:1}.pulse-glow{opacity:.35;background:radial-gradient(120% 90% at 50% 55%,#0000 55%,#961e1447 100%);transition:opacity .5s ease-out;position:absolute;inset:0}.pulse.beat .pulse-glow{opacity:1;transition:opacity 60ms}.pulse-wrist{background:#f6eedbe6;border-radius:999px;gap:26px;padding:12px 26px;display:flex;position:absolute;bottom:150px;left:50%;transform:translate(-50%);box-shadow:0 14px 40px -16px #3c1e0a99}.pulse-wrist span{flex-direction:column;align-items:center;gap:6px;display:flex}.pulse-wrist i{background:#b8352c;border-radius:50%;width:16px;height:16px;transition:transform .4s ease-out,box-shadow .4s ease-out;box-shadow:0 0 #b8352c80}.pulse.beat .pulse-wrist i{transition:transform 60ms,box-shadow 60ms;transform:scale(1.45);box-shadow:0 0 0 10px #b8352c00}.pulse-wrist span:nth-child(2) i{transition-delay:40ms}.pulse-wrist span:nth-child(3) i{transition-delay:80ms}.pulse-wrist b{font-family:"Kaiti SC", "STKaiti", "KaiTi", var(--serif);color:#5a3d22;font-size:15px;font-weight:700}.paper-card{max-width:min(92vw,440px);color:var(--ink);background:#fbf6eef0;border:1px solid #e6d8c4;border-radius:16px;padding:14px 18px;box-shadow:0 6px 20px #3e354629}.paper-card.dark{color:#fbf6ee;background:#2a2433d1;border-color:#fbf6ee1f}.paper-pill{border-radius:999px}:root.paper-ui .subtitle{max-width:min(440px,92vw);color:var(--ink);background:#fbf6eef0;border:1px solid #e6d8c4;border-radius:16px;box-shadow:0 6px 20px #3e354629}:root.paper-ui .sub-who{color:var(--accent,var(--teal));letter-spacing:.06em;font-weight:600}:root.paper-ui .sub-next{color:var(--ink);background:#3a2e2814}:root.paper-ui .sub-next:active{background:#3a2e282e}:root.paper-ui body.touch .subtitle{width:min(92vw,640px);max-width:92vw}:root.paper-ui.paper-dark .subtitle{color:#fbf6ee;background:#2a2433d1;border-color:#fbf6ee1f}:root.paper-ui.paper-dark .sub-next{color:#fbf6ee;background:#fbf6ee24}
