@font-face{font-family:LXGW WenKai;src:url(/fonts/wenkai.woff2)format("woff2");font-display:swap}:root{--ink:#14282f;--ink-2:#1d3a44;--cream:#f3ecdc;--cream-2:#d9d2c0;--gold:#d8b676;--seal:#a8372b;--lotus:#e9b5b0;--kai:"LXGW WenKai", "STKaiti", "Kaiti SC", "Songti SC", "Noto Serif CJK SC", Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Microsoft YaHei", "Segoe UI", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{background:#dfe9ea;height:100%;margin:0;overflow:hidden}body{font-family:var(--sans);color:var(--cream);-webkit-font-smoothing:antialiased;overscroll-behavior:none}canvas{touch-action:none;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default}input,textarea{font:inherit}.intro{text-align:center;background:radial-gradient(at 50% 46%,#0c1c2480,#0c1c241f 46%,#0c1c2400 72%);flex-direction:column;justify-content:center;align-items:center;gap:30px;padding:24px;animation:1.6s both fade;display:flex;position:fixed;inset:0}.intro-mark{align-items:flex-start;gap:14px;display:flex}.intro h1{font-family:var(--kai);letter-spacing:.08em;text-shadow:0 6px 50px #08141c8c;margin:0;padding-left:.08em;font-size:clamp(84px,17vw,168px);font-weight:400;line-height:1}.seal{writing-mode:vertical-rl;font-family:var(--kai);background:var(--seal);color:#f8eeda;letter-spacing:.2em;border-radius:5px;margin-top:12px;padding:10px 5px;font-size:clamp(15px,2.2vw,21px);box-shadow:0 4px 20px #00000040}html:lang(en) .seal,.en .seal{writing-mode:horizontal-tb}.verse{font-family:var(--kai);letter-spacing:.34em;text-shadow:0 2px 22px #08141cbf;font-size:clamp(18px,2.7vw,25px);line-height:2}.verse p{margin:0;padding-left:.34em}.tagline{letter-spacing:.24em;opacity:.82;text-shadow:0 1px 14px #08141ce6;margin:0;font-size:13px}.enter{font-family:var(--kai);letter-spacing:.5em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#10222a57;border:1px solid #f3ecdcbf;border-radius:999px;padding:15px 44px 15px 54px;font-size:21px;transition:all .4s}.enter:not(:disabled):hover{background:var(--cream);color:var(--ink);letter-spacing:.62em}.enter:disabled{opacity:.6;letter-spacing:.3em;font-size:15px}.intro-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#10222a80;border:1px solid #d8b67666;border-radius:18px;max-width:520px;padding:26px 30px}.intro-card .lead{letter-spacing:.1em;opacity:.9;margin:0;font-size:15px}.intro-card .lead b{color:var(--gold);font-weight:600}.intro-card .wish{font-family:var(--kai);margin:16px 0;font-size:clamp(22px,3.6vw,30px);line-height:1.55}.hud{pointer-events:none;animation:1.2s both fade;position:fixed;inset:0}.hud>*{pointer-events:auto}.top-left{left:max(18px, env(safe-area-inset-left));top:max(16px, env(safe-area-inset-top));text-shadow:0 1px 12px #08141cb3;align-items:center;gap:11px;display:flex;position:absolute}.top-left img{border-radius:8px;width:36px;height:36px;box-shadow:0 3px 14px #00000040}.top-left b{font-family:var(--kai);letter-spacing:.12em;font-size:19px;font-weight:400;display:block}.top-left small{opacity:.85;letter-spacing:.1em;font-size:11px;display:block}.link{color:var(--gold);text-underline-offset:4px;font-size:13px;-webkit-text-decoration:underline #d8b67680;text-decoration:underline #d8b67680}.top-right{right:max(16px, env(safe-area-inset-right));top:max(16px, env(safe-area-inset-top));align-items:center;gap:8px;display:flex;position:absolute}.kp{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-variant-numeric:tabular-nums;background:#10222a75;border:1px solid #f3ecdc29;border-radius:999px;align-items:baseline;gap:8px;padding:8px 15px;display:flex}.kp span{letter-spacing:.2em;opacity:.7;font-size:11px}.kp b{color:var(--gold);font-size:16px;font-weight:600}.kp small{opacity:.7;font-size:11px}.icon{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:38px;height:38px;font-size:13px;font-family:var(--kai);background:#10222a75;border:1px solid #f3ecdc29;border-radius:50%;transition:background .2s}.icon:hover{background:#10222abf}.prompt{font-family:var(--kai);letter-spacing:.16em;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);white-space:nowrap;-webkit-user-select:none;user-select:none;background:#10222a99;border:1px solid #d8b67699;border-radius:999px;align-items:center;gap:12px;padding:12px 26px 12px 14px;font-size:19px;animation:.35s both rise;display:flex;position:absolute;bottom:max(15vh,96px);left:50%;transform:translate(-50%);box-shadow:0 8px 40px #00000040}.prompt:active{transform:translate(-50%)scale(.96)}.prompt kbd{font-family:var(--sans);background:var(--gold);width:28px;height:28px;color:var(--ink);letter-spacing:0;border-radius:50%;place-items:center;font-size:13px;font-weight:700;display:grid}@media (pointer:coarse){.prompt{padding-left:26px;bottom:max(22vh,150px)}}.hint{letter-spacing:.2em;opacity:.85;text-shadow:0 1px 10px #08141ce6;white-space:nowrap;font-size:12px;animation:1s both fade;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.bow{right:max(20px, env(safe-area-inset-right));bottom:max(28px, env(safe-area-inset-bottom));width:58px;height:58px;font-family:var(--kai);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);-webkit-user-select:none;user-select:none;background:#10222a75;border:1px solid #f3ecdc33;border-radius:50%;font-size:15px;position:absolute}.bow:active{background:var(--gold);color:var(--ink)}.toast{max-width:min(88vw,560px);font-family:var(--kai);letter-spacing:.08em;text-align:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#10222ab8;border:1px solid #f3ecdc24;border-radius:16px;padding:13px 24px;font-size:17px;line-height:1.7;animation:.4s both rise;position:absolute;top:84px;left:50%;transform:translate(-50%)}.lampcard{text-align:center;width:min(86vw,380px);color:var(--ink);pointer-events:none;background:#f3ecdcf0;border-radius:16px;padding:14px 20px;animation:.3s both rise;position:absolute;bottom:max(24vh,170px);left:50%;transform:translate(-50%);box-shadow:0 10px 50px #0000004d}.lampcard small{letter-spacing:.12em;color:#8a6b34;font-size:12px}.lampcard p{font-family:var(--kai);margin:6px 0 0;font-size:18px;line-height:1.5}.lampcard .outcome{color:var(--seal);font-size:14px}.prompt+.lampcard{bottom:max(26vh,200px)}.lampcard:has(+.prompt){bottom:max(26vh,200px)}.floaters{width:0;height:0;position:absolute;top:44%;left:50%}.floaters span{left:calc(var(--dx) * 70px);white-space:nowrap;font-family:var(--kai);color:#ffe2a6;text-shadow:0 2px 16px #3c1e00b3;pointer-events:none;font-size:26px;animation:.9s ease-out both floatup;position:absolute;transform:translate(-50%)}.nametag{font-family:var(--kai);color:#fff;white-space:nowrap;pointer-events:none;background:#10222a80;border-radius:999px;padding:2px 10px;font-size:15px}.joy{left:max(26px, env(safe-area-inset-left));bottom:max(30px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);touch-action:none;background:#10222a47;border:1px solid #f3ecdc40;border-radius:50%;width:124px;height:124px;position:absolute}.joy i{background:#f3ecdcd1;border-radius:50%;width:52px;height:52px;margin:-26px;position:absolute;top:50%;left:50%;box-shadow:0 4px 16px #00000040}.paradox{text-align:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:5;background:#0c1a20e6;border:1px solid #d8b67666;border-radius:22px;width:min(88vw,460px);padding:34px 30px 28px;animation:1.4s both fade;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.paradox p{opacity:.75;letter-spacing:.08em;margin:0;font-size:14px}.paradox .q{font-family:var(--kai);opacity:1;margin:16px 0 26px;font-size:24px;line-height:1.6}.paradox div{justify-content:center;gap:10px;display:flex}.panel{-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:linear-gradient(#102128ed,#0d1b21f5);border-left:1px solid #d8b67642;flex-direction:column;width:min(430px,100vw);animation:.45s cubic-bezier(.2,.8,.2,1) both slide;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-30px 0 80px #0000004d}.panel header{justify-content:space-between;align-items:flex-start;padding:26px 26px 16px;display:flex}.panel h2{font-family:var(--kai);letter-spacing:.14em;margin:0;font-size:31px;font-weight:400}.panel header small{letter-spacing:.26em;color:var(--gold);font-size:12px}.panel h3{font-family:var(--kai);letter-spacing:.2em;color:var(--gold);align-items:center;gap:12px;margin:30px 0 12px;font-size:17px;font-weight:400;display:flex}.panel h3:after{content:"";background:linear-gradient(90deg,#d8b67666,#0000);flex:1;height:1px}.x{letter-spacing:.2em;opacity:.85;border:1px solid #f3ecdc38;border-radius:999px;padding:8px 14px;font-size:13px}.x:hover{background:#f3ecdc1a}.scroll{padding:4px 26px calc(34px + env(safe-area-inset-bottom));overscroll-behavior:contain;flex:1;overflow-y:auto}.scroll::-webkit-scrollbar{width:0}.lead{font-family:var(--kai);margin:6px 0 8px;font-size:20px;line-height:1.6}.sub{opacity:.68;margin:0 0 16px;font-size:13px;line-height:1.75}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.primary,.ghost{letter-spacing:.12em;border-radius:12px;padding:11px 20px;font-size:15px;transition:all .2s}.primary{background:var(--gold);color:var(--ink);font-weight:600}.primary:not(:disabled):hover{background:#ebcb8e}.primary:disabled,.ghost:disabled{opacity:.38}.ghost{border:1px solid #f3ecdc4d}.ghost:not(:disabled):hover{background:#f3ecdc14}.big{width:100%;font-family:var(--kai);letter-spacing:.3em;border-radius:14px;padding:15px;font-size:19px}.form{flex-direction:column;gap:10px;display:flex}.form textarea,.form input,.share input,.outcome input{width:100%;color:var(--cream);resize:none;background:#f3ecdc0f;border:1px solid #f3ecdc33;border-radius:12px;outline:none;padding:13px 15px;font-size:16px;line-height:1.6;transition:border .2s}.form textarea{font-family:var(--kai);font-size:19px}.form textarea:focus,.form input:focus,.outcome input:focus{border-color:var(--gold)}::placeholder{color:#f3ecdc61}.chips{flex-wrap:wrap;gap:7px;display:flex}.chips button{opacity:.86;border:1px solid #f3ecdc38;border-radius:999px;padding:6px 13px;font-size:13px;transition:all .2s}.chips button:hover,.chips button.on{border-color:var(--gold);color:var(--gold);opacity:1}.lit{text-align:center;background:radial-gradient(at 50% 0,#d8b67642,#d8b6760d 70%);border:1px solid #d8b6765c;border-radius:16px;margin-bottom:16px;padding:20px 22px;animation:.6s both rise}.lit h3{color:var(--cream);letter-spacing:.1em;justify-content:center;margin:0 0 6px;font-size:23px}.lit h3:after{display:none}.lit p{opacity:.8;margin:0;font-size:14px;line-height:1.7}.lit .recip{font-family:var(--kai);opacity:1;margin:18px 0 12px;font-size:19px}.stage{color:var(--lotus);letter-spacing:.06em;margin:-4px 0 12px;font-size:13px}.wishes{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.wish,.focus{background:#f3ecdc0e;border:1px solid #f3ecdc1a;border-radius:14px;padding:16px 18px}.wish.open{border-color:#d8b6766b}.wish .text,.focus .text{font-family:var(--kai);margin:0 0 6px;font-size:20px;line-height:1.55}.focus{background:#d8b67614;border-color:#d8b6764d;margin-bottom:16px}.focus .text{margin:8px 0 10px;font-size:24px}.wish small,.focus small{opacity:.65;letter-spacing:.06em;font-size:12px}.focus>small:first-child{color:var(--gold);opacity:1;letter-spacing:.2em}.news{color:var(--lotus);margin:0 0 10px;font-size:14px}.news b{border:1px solid;border-radius:999px;margin-right:8px;padding:1px 8px;font-size:11px;font-weight:400}.blessings{flex-direction:column;gap:6px;margin:10px 0 4px;padding:0;list-style:none;display:flex}.blessings li{align-items:baseline;gap:10px;font-size:14px;display:flex}.blessings b{color:var(--lotus);white-space:nowrap;font-weight:500}.blessings b:before{content:"";vertical-align:middle;background:#ffcf8a;border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block;box-shadow:0 0 8px #ffb04a}.blessings span{opacity:.85;font-family:var(--kai);font-size:16px}.share{flex-direction:column;gap:8px;margin-top:12px;display:flex}.share input{opacity:.8;padding:10px 12px;font-size:13px}.outcome{margin-top:14px;display:block}.outcome span{letter-spacing:.16em;opacity:.65;margin-bottom:6px;font-size:12px;display:block}.outcome input{padding:10px 12px;font-size:15px}.outcome .ghost{white-space:nowrap;padding:10px 14px;font-size:13px}.readout{text-align:center;background:radial-gradient(at 50% 0,#d8b67633,#d8b67608 75%);border:1px solid #d8b67647;border-radius:16px;padding:22px 14px 18px}.readout small{letter-spacing:.34em;color:var(--gold);font-size:11px;display:block}.readout b{letter-spacing:.02em;font-variant-numeric:tabular-nums;margin:6px 0 2px;font-size:clamp(34px,9vw,46px);font-weight:300;display:block}.readout span{opacity:.7;letter-spacing:.2em;font-size:12px}.readout i{opacity:.45;letter-spacing:.1em;margin-top:10px;font-size:11px;font-style:normal;display:block}.stats{grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 16px;display:grid}.stats div{text-align:center;background:#f3ecdc0d;border-radius:12px;padding:11px 6px}.stats small{opacity:.6;letter-spacing:.1em;font-size:11px;display:block}.stats b{font-variant-numeric:tabular-nums;font-size:16px;font-weight:600}.upgrade{border-top:1px solid #f3ecdc17;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.upgrade>div small{letter-spacing:.24em;color:var(--gold);font-size:11px;display:block}.upgrade>div b{font-family:var(--kai);margin-right:10px;font-size:19px;font-weight:400}.upgrade>div span{opacity:.65;font-size:12px}.maxed{opacity:.5;letter-spacing:.2em;font-size:12px}.buy{border:1px solid #d8b6768c;border-radius:11px;flex-direction:column;align-items:flex-end;gap:1px;min-width:122px;padding:8px 13px;transition:all .15s;display:flex}.buy b{font-family:var(--kai);font-size:15px;font-weight:400}.buy span{opacity:.7;font-size:11px}.buy em{color:var(--gold);font-variant-numeric:tabular-nums;font-size:14px;font-style:normal;font-weight:600}.buy:not(:disabled):hover{background:var(--gold);color:var(--ink)}.buy:not(:disabled):hover em{color:var(--ink)}.buy:not(:disabled):active{transform:scale(.96)}.buy:disabled{opacity:.36;border-color:#f3ecdc33}.works{margin:0;padding:0;list-style:none}.works li{border-top:1px solid #f3ecdc17;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;display:flex}.works li b{font-family:var(--kai);font-size:18px;font-weight:400}.works li b i{font-style:normal;font-family:var(--sans);color:var(--gold);vertical-align:2px;background:#d8b67633;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:11px}.works li small{opacity:.58;margin-top:2px;font-size:12px;display:block}.panel.sutra{color:#2a2520;background:linear-gradient(#f1e8d2,#e8dcc0);border-left-color:#78603c4d}.panel.sutra header small{color:var(--seal)}.panel.sutra .x{border-color:#2a25204d}.panel.sutra .link{color:var(--seal);text-decoration-color:#a8372b66}.phrase{font-family:var(--kai);letter-spacing:.22em;text-align:center;color:#2a252057;min-height:1.5em;margin:4px 0 16px;font-size:25px}.phrase .past{color:#2a2520}.phrase .now{color:var(--seal)}.paper{aspect-ratio:1;background:#f8f1df;border-radius:6px;width:100%;transition:transform .6s,opacity .6s;position:relative;box-shadow:inset 0 1px #fff,0 12px 40px #5a462838}.paper canvas{touch-action:none;cursor:crosshair;border-radius:6px;width:100%;height:100%}.paper.settling{opacity:.25;transform:scale(.94)translateY(-10px)}.panel.sutra .row{margin-top:14px}.panel.sutra small{letter-spacing:.12em;opacity:.7;font-size:12px}.panel.sutra .sub{opacity:.6;margin-top:14px}.panel.sutra .lit{background:#a8372b0f;border-color:#a8372b40}.panel.sutra .lit p{font-family:var(--kai);opacity:1;margin-bottom:16px;font-size:19px}.panel.sutra .ghost{border-color:#2a252059}@media (max-width:640px){.panel{border-top:1px solid #d8b6764d;border-left:0;border-radius:22px 22px 0 0;width:100vw;max-height:82vh;animation-name:slideup;top:auto;left:0}.panel header{padding:20px 20px 12px}.panel h2{font-size:26px}.scroll{padding:4px 20px calc(26px + env(safe-area-inset-bottom))}.kp span{display:none}.top-left b{font-size:16px}.panel.sutra{max-height:92vh}.hint{bottom:170px}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;margin-bottom:-10px}to{opacity:1;margin-bottom:0}}@keyframes slide{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}@keyframes slideup{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}@keyframes floatup{0%{opacity:0;transform:translate(-50%,10px)scale(.8)}18%{opacity:1;transform:translate(-50%,-8px)scale(1.08)}to{opacity:0;transform:translate(-50%,-90px)scale(1)}}.has-panel .top-right,.has-panel .bow{display:none}@media (min-width:641px){.has-panel .toast{left:calc(50% - 215px)}}
