:root{--ink: #f4ead8;--muted: #c9b99f;--panel: rgba(22, 14, 10, .78);--line: rgba(217, 164, 65, .35);--red: #a8231a;--red-hi: #c4321f;--gold: #d9a441;--font: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--serif: "STKaiti", "KaiTi", "Kaiti SC", "Noto Serif SC", "Songti SC", serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:#120c0a;color:var(--ink);font-family:var(--font)}html,body{overscroll-behavior:none;-webkit-text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}input,textarea{user-select:text;-webkit-user-select:text}:root{--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--sal: env(safe-area-inset-left, 0px);--sar: env(safe-area-inset-right, 0px)}button,input{font:inherit;color:inherit}.stage{position:fixed;top:0;right:0;bottom:0;left:0}.stage canvas{display:block;touch-action:none}button{background:#1e140ed1;border:1px solid var(--line);border-radius:8px;padding:8px 14px;cursor:pointer;transition:background .15s,border-color .15s,transform .1s}button:hover{border-color:var(--gold);background:#342014eb}button:active{transform:translateY(1px)}button.primary{background:linear-gradient(#bd2f1f,#8e1a12);border-color:#e0a64a;color:#fff6e0;font-weight:600}button.primary:hover{background:linear-gradient(#cf3a26,#9b1d14)}button.large{font-size:18px;padding:12px 34px;letter-spacing:.2em;font-family:var(--serif)}button.link{background:none;border:none;color:var(--muted);padding:4px 0;font-size:12px;text-decoration:underline}kbd{display:inline-block;min-width:22px;padding:1px 6px;margin-right:4px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;font:12px/18px var(--font);color:var(--ink);background:#00000059;text-align:center}.muted{color:var(--muted)}.small{font-size:12px}.brand{position:fixed;top:16px;left:16px;display:flex;align-items:center;gap:12px;pointer-events:none;text-shadow:0 1px 6px rgba(0,0,0,.6)}.brand h1{margin:0;font:600 24px/1.1 var(--serif);letter-spacing:.25em}.brand p{margin:2px 0 0;font-size:12px;color:var(--muted);letter-spacing:.1em}.seal{width:42px;height:42px;display:grid;place-items:center;background:var(--red);color:#fbe3a1;font:600 15px/1 var(--serif);border-radius:6px;writing-mode:vertical-rl;letter-spacing:2px;box-shadow:0 2px 10px #0006}.brand.big{position:static}.brand.big h1{font-size:40px}.brand.big .seal{width:64px;height:64px;font-size:22px}.loading{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:22px;overflow-y:auto;-webkit-overflow-scrolling:touch;background:radial-gradient(circle at 50% 40%,#3a1a10,#120c0a 70%);padding:16px;text-align:center}.loading>:first-child{margin-top:auto;padding-top:var(--sat)}.loading>:last-child{margin-bottom:auto;padding-bottom:var(--sab)}.bar{width:min(360px,80vw);height:4px;background:#ffffff1f;border-radius:2px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--red-hi),var(--gold));transition:width .3s}.err{color:#ffb4a0}.note{width:min(520px,100%);text-align:left;background:#00000047;border:1px solid rgba(214,168,67,.25);border-radius:12px;padding:16px 20px;animation:noteIn 1.2s ease}.note h3{margin:0 0 10px;font:600 17px var(--serif);color:#fbe3a1;letter-spacing:.06em}.note p{margin:0 0 8px;font-size:14px;line-height:1.85;color:#e8dccb;text-wrap:pretty}.note.full{background:none;border:0;padding:0;animation:none}@keyframes noteIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (max-width: 520px){.loading{gap:18px;padding:20px 18px}.brand.big h1{font-size:30px}.brand.big .seal{width:52px;height:52px;font-size:18px}.note{padding:14px 16px}.note h3{font-size:16px}.note p{font-size:14px;line-height:1.8}}.toolbar{position:fixed;top:16px;right:16px;display:flex;flex-direction:column;gap:8px}.toolbar button{display:flex;align-items:center;gap:8px;padding:8px 12px;min-width:92px}.toolbar button.on{border-color:var(--gold);color:#fbe3a1}.toolbar .q{width:18px;text-align:center;font-weight:700;color:var(--gold)}.info{position:fixed;left:16px;bottom:16px;width:min(340px,calc(100vw - 32px));background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.info h3{margin:0 0 6px;font:600 20px var(--serif);color:#fbe3a1}.info p{margin:0 0 12px;font-size:13px;line-height:1.6;color:var(--muted)}.info .x{position:absolute;top:8px;right:8px;background:none;border:none;font-size:20px;padding:2px 8px}.enter{position:fixed;left:50%;bottom:28px;transform:translate(-50%);text-align:center}.hint{margin:10px 0 0;font-size:12px;color:var(--muted);text-shadow:0 1px 4px #000;white-space:nowrap}.crosshair{position:fixed;left:50%;top:50%;width:0;height:0;pointer-events:none}.crosshair i{position:absolute;background:#ffffffe6;box-shadow:0 0 0 1px #0000008c}.crosshair i:nth-child(1),.crosshair i:nth-child(2){width:7px;height:2px;top:-1px}.crosshair i:nth-child(1){left:-11px}.crosshair i:nth-child(2){left:4px}.crosshair i:nth-child(3),.crosshair i:nth-child(4){width:2px;height:7px;left:-1px}.crosshair i:nth-child(3){top:-11px}.crosshair i:nth-child(4){top:4px}.crosshair.active i{background:#f3c55a}.area{position:fixed;top:18px;left:50%;transform:translate(-50%);font:600 15px var(--serif);letter-spacing:.2em;padding:6px 18px;background:#00000059;border-radius:20px;text-shadow:0 1px 3px #000;pointer-events:none;white-space:nowrap}.topright{position:fixed;top:calc(14px + var(--sat));right:calc(16px + var(--sar));display:flex;gap:8px}.topright .off{display:none}.topright button{padding:8px 10px;display:flex;align-items:center;justify-content:center;white-space:nowrap}.prompt{position:fixed;left:50%;top:calc(50% + 48px);transform:translate(-50%);padding:7px 16px;border-radius:6px;background:#0000008c;border:1px solid var(--line);font-size:15px;pointer-events:none;white-space:nowrap}.tooltip{position:fixed;left:50%;top:calc(50% - 64px);transform:translate(-50%);padding:6px 14px;border-radius:6px;background:#78140abf;font:15px var(--serif);pointer-events:none;white-space:nowrap}.kneel{position:fixed;left:50%;bottom:74px;transform:translate(-50%);font-size:13px;color:var(--muted);background:#0006;padding:5px 12px;border-radius:12px;pointer-events:none}.keys{position:fixed;left:16px;bottom:16px;display:flex;flex-wrap:wrap;gap:6px 14px;max-width:520px;font-size:12px;color:var(--muted);text-shadow:0 1px 3px #000;pointer-events:none}.ritual{position:fixed;right:16px;top:70px;width:190px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:13px}.ritual h4{margin:0 0 8px;font:600 16px var(--serif);color:#fbe3a1;letter-spacing:.15em}.ritual .st{display:flex;align-items:center;gap:8px;padding:4px 0;color:var(--muted)}.ritual .st b{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;border:1px solid var(--line)}.ritual .st.cur{color:var(--ink)}.ritual .st.cur b{border-color:var(--gold);color:var(--gold)}.ritual .st.done b{background:var(--red);border-color:var(--red);color:#fff}.ritual em{margin-left:auto;font-style:normal;color:var(--gold)}.mini{display:inline-block;width:48px;height:4px;background:#ffffff26;border-radius:2px;overflow:hidden}.mini.wide{width:200px;margin:6px auto 0;display:block}.mini i{display:block;height:100%;background:var(--gold)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0805048c;display:grid;place-items:center;padding:16px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.card{width:min(520px,100%);background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 24px;box-shadow:0 20px 60px #00000080;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px - var(--sat) - var(--sab));overflow:auto;overscroll-behavior:contain}.card.center{text-align:center}.card h2{margin:0 0 6px;font:600 24px var(--serif);letter-spacing:.15em;color:#fbe3a1}.card p{margin:0 0 14px;font-size:13px;line-height:1.6}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0;font-size:13px;text-align:left}.row{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:10px;margin-top:14px}.offers{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.offer{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 8px}.offer .glyph{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font:600 22px var(--serif);background:radial-gradient(#c4321f,#7e1209);color:#fbe3a1;border:1px solid var(--gold)}.offer small{color:var(--muted);font-size:11px;line-height:1.4}label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}input{display:block;width:100%;margin-top:4px;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:#00000059;font:18px var(--serif);outline:none}input:focus{border-color:var(--gold)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chips button{padding:4px 10px;font-size:13px;border-radius:14px}.chips button.on{border-color:var(--gold);color:#fbe3a1;background:#a8231a80}.fortune{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.fortune .fhint{position:absolute;top:18px;left:50%;transform:translate(-50%);text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 18px;width:min(420px,calc(100vw - 32px));font-size:13px;color:var(--muted);pointer-events:auto}.fortune .fhint b{display:block;font:600 17px var(--serif);color:#fbe3a1;margin-bottom:4px}.fortune .fhint button{margin-top:10px}.fortune .bottom{position:absolute;left:0;right:0;bottom:calc(22px + var(--sab));pointer-events:auto}.fortune .fhint{top:calc(18px + var(--sat))}button:disabled{opacity:.6}.toast{position:fixed;top:64px;left:50%;transform:translate(-50%,-8px);opacity:0;background:#6e140ce0;border:1px solid var(--gold);color:#fff3dc;padding:9px 18px;border-radius:8px;font-size:14px;transition:opacity .3s,transform .3s;pointer-events:none;max-width:calc(100vw - 32px);text-align:center}.toast.on{opacity:1;transform:translate(-50%)}.fade{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#000;opacity:0;pointer-events:none;transition:opacity .45s}.fade.on{opacity:1}.touch{position:fixed;top:0;right:0;bottom:0;left:0;touch-action:none;z-index:1}.topright,.ritual,.area,.prompt,.tooltip,.kneel,.toast,.overlay,.fortune{z-index:5}.joy.on{opacity:1}.power{position:fixed;left:50%;bottom:calc(96px + var(--sab));transform:translate(-50%);z-index:5;pointer-events:none;text-align:center;font-size:13px;color:#fbe3a1;text-shadow:0 1px 3px #000}.power .track{position:relative;width:min(300px,70vw);height:12px;margin-top:6px;border-radius:6px;background:#00000073;border:1px solid var(--line);overflow:hidden}.power .sweet{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,#c9902e,#f3c55a,#c9902e);opacity:.85}.power .needle{position:absolute;top:-2px;bottom:-2px;width:4px;margin-left:-2px;background:#fff;box-shadow:0 0 6px #fff}@media (max-width: 640px){.power{bottom:calc(250px + var(--sab))}}.joy{position:absolute;left:calc(36px + var(--sal));bottom:calc(56px + var(--sab));width:120px;height:120px;border-radius:50%;border:2px solid rgba(255,255,255,.35);background:#00000038;opacity:.55;pointer-events:none;transition:opacity .2s}.joy div{position:absolute;left:35px;top:35px;width:50px;height:50px;border-radius:50%;background:#fff0d28c;box-shadow:0 2px 8px #00000059}.tbtns{position:absolute;right:calc(14px + var(--sar));bottom:calc(18px + var(--sab));width:200px;height:200px;pointer-events:none}.tbtns button{position:absolute;width:58px;height:58px;padding:0;border-radius:50%;font:600 16px var(--serif);background:#1e140e9e;border:1.5px solid rgba(217,164,65,.45);box-shadow:0 2px 10px #00000059;pointer-events:auto;touch-action:none}.tbtns button:active{transform:scale(.92);background:#781e12bf}.tbtns .tb-act{right:0;bottom:0;width:80px;height:80px;font-size:18px}.tbtns .tb-bow{right:94px;bottom:4px}.tbtns .tb-jump{right:6px;bottom:94px}.tbtns .tb-run{right:76px;bottom:76px;width:52px;height:52px;font-size:14px}.tbtns .tb-hold{right:150px;bottom:70px;width:64px;height:64px}.tbtns .ready{border-color:var(--gold);color:#fbe3a1;background:#962014b8;animation:pulse 1.4s ease-in-out infinite}.tbtns .on{border-color:var(--gold);color:#fbe3a1;background:#a8231a8c}@keyframes pulse{0%,to{box-shadow:0 0 #f3c55a8c}50%{box-shadow:0 0 0 10px #f3c55a00}}@media (max-width: 640px),(max-height: 500px){.topright{gap:6px;top:calc(10px + var(--sat));right:calc(10px + var(--sar))}.topright button{padding:7px 9px;font-size:13px;min-width:38px}.topright .lbl{display:none}.topright .off{display:inline;font-size:11px;margin-left:2px;color:var(--muted)}.area{top:calc(58px + var(--sat));font-size:13px;padding:4px 14px;letter-spacing:.12em}.brand{top:calc(12px + var(--sat));left:calc(12px + var(--sal))}.ritual{top:calc(92px + var(--sat));right:auto;left:calc(10px + var(--sal));width:148px;padding:8px 10px;font-size:12px}.ritual h4{font-size:14px;margin-bottom:4px}.ritual .st{padding:2px 0;gap:6px}.ritual .st b{width:17px;height:17px;font-size:10px}.prompt{top:auto;bottom:calc(230px + var(--sab));white-space:normal;max-width:calc(100vw - 32px);text-align:center;font-size:14px}.tooltip{white-space:normal;max-width:calc(100vw - 32px);text-align:center}.kneel{bottom:calc(205px + var(--sab));white-space:nowrap;font-size:12px}.toast{top:calc(100px + var(--sat));font-size:13px}.enter{bottom:calc(24px + var(--sab));width:calc(100vw - 32px)}.card{padding:18px 16px}.card h2{font-size:21px}.fortune .bottom{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}}@media (max-height: 500px){.tbtns{transform:scale(.85);transform-origin:bottom right}.prompt{bottom:auto;top:calc(50% + 40px)}.kneel{bottom:calc(14px + var(--sab))}}
