*{box-sizing:border-box}body{margin:0;background:#171b15;color:#f5eedc;font:14px system-ui,"PingFang SC","Microsoft YaHei",sans-serif}main{height:100vh;height:100dvh;position:relative;overflow:hidden;background:radial-gradient(ellipse at 46% 42%,#536553,#25362e 50%,#181f19 100%)}canvas,.shade{position:absolute;inset:0;width:100%;height:100%}.shade{pointer-events:none;background:linear-gradient(180deg,#101610d9 0%,transparent 24%,transparent 78%,#121810dd 100%)}header,.intro,aside,.bottom,#message{position:absolute}header{left:0;right:0;top:0;height:82px;border-bottom:1px solid #e5d2a32a;display:flex;align-items:center;justify-content:space-between;padding:0 34px}.brand{display:flex;align-items:center;gap:12px}.seal{display:grid;place-items:center;background:#a4513b;border:1px solid #d1956a;border-radius:5px;width:40px;height:40px;font:24px Georgia,serif}.brand strong,.brand small{display:block}.brand strong{letter-spacing:.22em;font-size:17px}.brand small{font-size:10px;color:#d1bc97;margin-top:3px}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #ddc38d55;background:#1e291feb;border-radius:8px;padding:9px 12px;touch-action:manipulation}button:hover,button:focus-visible{border-color:#efd29a;background:#3a4633}button:disabled{opacity:.6;cursor:default}#coins{color:#f2d49b}.intro{left:34px;top:111px;pointer-events:none}.kicker{font-size:11px;letter-spacing:.2em;color:#e6c891}.kicker i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#e3af65;margin-right:5px}h1,h2{font-family:"Songti SC",SimSun,Georgia,serif;margin:8px 0;font-weight:500;letter-spacing:.11em}h1{font-size:clamp(29px,4.6vw,62px);text-shadow:0 3px 16px #151b14}p{margin:8px 0;color:#ded3b9;line-height:1.7}aside{right:30px;top:110px;width:226px;background:#19251de8;border:1px solid #d8bc8155;border-radius:13px;padding:12px;box-shadow:0 12px 38px #131b1840}.aside-title{display:flex;justify-content:space-between;align-items:center;letter-spacing:.12em;color:#e8d4ab;padding-left:5px}.aside-title button{padding:1px 8px}.place{display:flex;width:100%;align-items:center;text-align:left;gap:11px;margin-top:8px;padding:9px 10px;background:#2a3829}.place.selected{background:#4a422b;border-color:#b58d52}.place span:first-child{display:grid;place-items:center;width:28px;height:28px;color:#f3d193;background:#181d16;border-radius:6px}.place small{display:block;color:#c5bda5;font-size:10px;margin-top:2px}.bottom{bottom:max(21px,env(safe-area-inset-bottom));left:30px;right:30px;display:flex;align-items:end;justify-content:space-between;pointer-events:none}.bottom>*{pointer-events:auto}kbd{border:1px solid #b3ad8a66;border-radius:4px;padding:4px;color:#e8d3a5;margin-right:3px}.keys{color:#e6ddc7}.camera{display:flex;gap:5px}#action{position:absolute;left:50%;transform:translateX(-50%);background:#e7c58b;color:#211d12;border-color:#ffe3aa;font-weight:650;min-width:122px}#action:disabled{background:#263326;color:#d8d0b6;border-color:#9f9573}.pad{display:none}#message{bottom:80px;left:50%;transform:translateX(-50%);background:#1e291fed;border-radius:8px;max-width:90%;text-align:center;padding:8px 12px;pointer-events:none}#message:empty{display:none}dialog{width:min(92vw,380px);color:inherit;background:#253125;border:1px solid #cba86f;border-radius:16px;padding:28px;box-shadow:0 20px 65px #121710}dialog::backdrop{background:#101810a6}.close{position:absolute;right:12px;top:12px;padding:4px 9px}#amounts{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}#amounts button{color:#f2d49b}
@media(max-width:720px){header{height:59px;padding:0 14px}.seal{height:33px;width:33px}.intro{top:73px;left:15px}.intro p{display:none}aside{top:72px;right:12px;width:145px;padding:7px}.aside-title{font-size:12px}.place{padding:5px;gap:6px;font-size:11px;margin-top:5px}.place small{font-size:9px}.place span:first-child{width:20px;height:23px}.bottom{left:12px;right:12px}#message{bottom:135px}.camera button{padding:7px}}@media(pointer:coarse),(max-width:720px){.keys{display:none}.pad{display:grid;grid-template-columns:repeat(3,37px);grid-template-rows:repeat(2,37px);gap:3px;touch-action:none}.pad button{padding:0;touch-action:none}.pad button:first-child{grid-column:2}.pad button:nth-child(2){grid-column:1;grid-row:2}.pad button:nth-child(3){grid-column:2;grid-row:2}.pad button:last-child{grid-column:3;grid-row:2}#action{bottom:12px}}
.labels{position:absolute;inset:0;pointer-events:none}.world-label{position:absolute;left:0;top:0;pointer-events:auto;padding:5px 10px;border-radius:4px;background:#242c20ed;border:1px solid #d9b57899;color:#f6d8a0;font-size:12px;white-space:nowrap;box-shadow:0 3px 12px #24291e50}.world-label:after{content:"";position:absolute;left:calc(50% - 3px);bottom:-4px;width:6px;height:6px;transform:rotate(45deg);background:#242c20;border-right:1px solid #d9b57899;border-bottom:1px solid #d9b57899}@media(max-width:720px){.world-label{font-size:10px;padding:3px 7px}#action{font-size:12px;min-width:93px;padding:8px}}
#offeringMoment{position:absolute;z-index:4;inset:0;display:grid;place-content:center;justify-items:center;pointer-events:none;text-align:center;isolation:isolate;background:radial-gradient(ellipse at center,#14190ed6 0%,#191d0d96 35%,transparent 72%);animation:offering-arrive .6s ease-out both,offering-fade .55s 4.24s ease-in both}
#offeringMoment[hidden]{display:none}
.offering-copy{position:relative;max-width:90vw;color:#ffebbc;text-shadow:0 2px 18px #271707,0 0 28px #c88a3c7d}
.offering-kicker{font-size:11px;letter-spacing:.29em;color:#f8d492;margin:8px 0 13px}
.offering-copy h2{font-size:clamp(20px,4vw,33px);margin:0}
#offeringTotal{font:clamp(64px,13vw,110px)/1 Georgia,serif;letter-spacing:-.04em;font-variant-numeric:lining-nums tabular-nums;color:#fff2c3;text-shadow:0 0 34px #ecad48a6}
#offeringGain{display:inline-block;margin-top:12px;padding:5px 13px;border:1px solid #cda56c9c;background:#3c2d19c9;border-radius:30px;letter-spacing:.09em;color:#ffdea1}
#offeringWish{margin-top:15px;color:#f1dfb9}
.offering-lotus{position:relative;width:clamp(85px,18vw,140px);overflow:visible;filter:drop-shadow(0 0 16px #ffbd54a0);animation:lotus-open 1s cubic-bezier(.16,.82,.36,1) both}
.offering-lotus path{transform-origin:70px 73px;animation:lotus-open 1.2s .14s cubic-bezier(.16,.82,.36,1) both}
.offering-rays{position:absolute;z-index:-1;align-self:center;justify-self:center;width:min(125vw,710px);aspect-ratio:1;background:repeating-conic-gradient(from 14deg,#ffc76133 0deg,transparent 12deg,transparent 25deg);mask-image:radial-gradient(circle,#000,transparent 67%);animation:offering-rays 5s linear both}
#offeringSparks{position:absolute;top:47%;left:50%}
#offeringSparks i{position:absolute;width:var(--size);aspect-ratio:1;background:#ffe8aa;border-radius:50%;box-shadow:0 0 10px 2px #efb655;animation:offering-spark 2.25s var(--delay) ease-out both}
#dismissOffering{position:absolute;pointer-events:auto;top:max(86px,11vh);right:clamp(14px,4vw,45px);border-color:#dab36a80;background:#241e12df;padding:3px 12px;font-size:22px}
#offeringGlow{position:absolute;z-index:3;width:160px;height:210px;pointer-events:none;transform:translate(-50%,-73%);background:radial-gradient(ellipse,#fff7be 1%,#f9c26ca0 17%,#df943b43 44%,transparent 69%);opacity:0;mix-blend-mode:screen}
#offeringGlow.lit{animation:box-glow 3s ease-out both}
@keyframes offering-arrive{from{opacity:0}to{opacity:1}}
@keyframes offering-fade{to{opacity:0}}
@keyframes lotus-open{from{opacity:0;transform:scale(.38,.24)}to{opacity:1;transform:scale(1)}}
@keyframes offering-rays{from{transform:rotate(-10deg) scale(.72)}to{transform:rotate(19deg) scale(1.14)}}
@keyframes offering-spark{0%{opacity:0;transform:scale(.2)}18%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.55)}}
@keyframes box-glow{0%{opacity:0;scale:.5}18%{opacity:1;scale:1.12}100%{opacity:0;scale:1.45}}
@media(prefers-reduced-motion:reduce){#offeringMoment,.offering-lotus,.offering-lotus path,.offering-rays{animation:none}#offeringSparks,#offeringGlow{display:none}}
.merit-ledger{display:flex;gap:7px}.merit-ledger button{display:grid;gap:3px;min-width:76px;text-align:center;padding:6px 10px;background:#202b23ed;color:#e1d6bd;font-size:11px}.merit-ledger strong{font:20px/1 Georgia,serif;font-variant-numeric:tabular-nums}.merit-ledger #woodLedger{color:#c8dec4;border-color:#a5bf7e60}.merit-ledger #giftLedger{color:#ffe5ae;border-color:#d7a456;background:linear-gradient(150deg,#644425,#352a19);box-shadow:inset 0 0 13px #dda04b29}
#offeringMoment{animation-delay:0s,5.03s}
.offering-copy{padding:16px clamp(19px,6vw,58px) 13px;border:1px solid #d7a25da1;outline:1px solid #d7a25d44;outline-offset:5px;border-radius:6px;background:radial-gradient(ellipse at 50% 17%,#684922ef,#2a2419f6 70%);box-shadow:0 0 56px #e4ab493f,inset 0 0 30px #e5b05822}
.offering-kicker{margin-top:1px}.offering-lotus{z-index:1;margin-bottom:10px}#offeringLifetime{margin-top:9px;color:#f3d39d;font-size:12px}#offeringWish{margin-bottom:2px}
@media(max-width:500px){.merit-ledger{gap:4px}.merit-ledger button{min-width:0;padding:5px 6px;font-size:10px}.merit-ledger strong{font-size:17px}}
main:has(#blessing:not([hidden])){background:radial-gradient(ellipse at 50% 48%,#513917,#221c12 43%,#111710 78%)}
main:has(#blessing:not([hidden])) :is(.intro,aside,.labels,.bottom,#message,header){visibility:hidden}
#blessing{position:absolute;inset:0;z-index:6;display:grid;justify-items:center;grid-template-rows:1fr auto;overflow:hidden;text-align:center;background:radial-gradient(ellipse at center,transparent 30%,#100e09a0 91%)}
#blessing[hidden]{display:none}
.blessing-heading{position:relative;z-index:1;padding:clamp(28px,6vh,64px) 15px 0;pointer-events:none;color:#fff0c0;text-shadow:0 0 28px #de9f4f}
.blessing-heading>div{color:#f3c685;letter-spacing:.38em;font-size:11px}.blessing-heading h2{font-size:clamp(33px,7vw,66px);margin:6px 0}.blessing-heading p{color:#f4dcb1;margin-top:4px}
#blessingLight{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}
#blessingRays line{stroke:#ffe1a0;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 5px #fbc267) drop-shadow(0 0 12px #ffbe44)}
#blessingSeal{fill:#ffda7240;stroke:#ffe5ad;stroke-width:1.5;stroke-dasharray:3 4;filter:drop-shadow(0 0 9px #ffc659)}
#closeBlessing{z-index:2;align-self:end;margin:0 0 max(24px,env(safe-area-inset-bottom));background:#3b2a16;color:#ffe5b0;border:1px solid #d7a35e;padding:10px 22px}
#dialog.lot-dialog{border-color:#d3a766;background:radial-gradient(ellipse at 50% 0%,#51402b,#262b20 68%)}
.lot-dialog #dialogText{color:#f9e2af;font-size:16px}
.lot-dialog #amounts{align-items:center}.lot-meaning{flex:1 0 100%;margin:0 0 4px}
.lot-cup{margin:4px auto 5px;display:grid;place-items:center;width:54px;height:64px;border:3px double #d8a966;border-radius:6px 6px 13px 13px;background:#7a3f2c;color:#ffe0a2;font:25px Georgia,serif;transform-origin:center bottom;animation:lot-shake .19s ease-in-out 5 alternate}
@keyframes lot-shake{from{transform:rotate(-14deg)}to{transform:rotate(14deg)}}
@media(prefers-reduced-motion:reduce){.lot-cup{animation:none}}

#woodMoment,#bagReward{position:absolute;z-index:3;pointer-events:none;width:0;height:0;color:#ffe8aa}
#woodMoment[hidden],#bagReward[hidden]{display:none}
.wood-ring{position:absolute;left:-70px;top:-30px;width:140px;height:60px;border:2px solid #ffdd8f;border-radius:50%;box-shadow:0 0 12px #ffc66b,inset 0 0 10px #e6a94a;animation:wood-ripple .95s ease-out both}
.wood-ring:nth-child(2){animation-delay:.10s}.wood-ring:nth-child(3){animation-delay:.20s}
.wood-sparks{position:absolute;width:5px;height:5px;border-radius:50%;background:#fff5c4;box-shadow:-36px -13px #edbd67,-22px -39px #ffe6a8,15px -33px #fbcc75,38px -12px #ffe6a8,27px -51px #e9c37e,-6px -63px #ffdd96;animation:wood-sparks 1.15s ease-out both}
.wood-reward{position:absolute;display:grid;gap:2px;text-align:center;white-space:nowrap;padding:6px 13px 7px;border:1px solid #d7aa5f99;border-radius:8px;background:linear-gradient(#4f3822ee,#282619ef);box-shadow:0 0 23px #ffc45e49;text-shadow:0 0 8px #eda75d66;animation:wood-reward 1.8s ease-out both}
.wood-reward strong{font-size:15px}.wood-reward span{font-size:11px;color:#eed3a4}
@keyframes wood-ripple{0%{opacity:0;transform:scale(.2)}15%{opacity:1}100%{opacity:0;transform:scale(1.3)}}
@keyframes wood-sparks{0%{opacity:0;transform:scale(.35)}25%{opacity:1}100%{opacity:0;transform:translateY(-48px) scale(1.2)}}
@keyframes wood-reward{0%{opacity:0;transform:translate(-50%,-80%)}15%,72%{opacity:1}100%{opacity:0;transform:translate(-50%,-215%)}}
@media(prefers-reduced-motion:reduce){.wood-ring,.wood-sparks{display:none}.wood-reward{animation:none;transform:translate(-50%,-155%)}}
#plaqueLedger{color:#ffe2a1;border-color:#b98a51}
#amounts progress{width:100%;accent-color:#d5a257}
.plaque-form{display:grid;width:100%;justify-items:center;gap:12px}
.plaque-name{display:grid;gap:14px;width:min(100%,225px);text-align:center;padding:22px 16px 18px;border:4px double #be9151;border-radius:36px 36px 8px 8px;background:linear-gradient(#664029,#432b20);color:#ffe3a5;letter-spacing:.2em}
.plaque-name input{width:100%;padding:8px;color:#fff0c4;background:#322419;border:1px solid #ad8256;border-radius:4px;text-align:center}
@media(max-width:375px){.merit-ledger button{padding-inline:3px}.merit-ledger strong{font-size:14px}header .brand small{display:none}}
.plaque-display{width:min(100%,225px);margin:0 auto;padding:20px 10px;text-align:center;color:#ffe6a6;border:3px double #c99c5e;border-radius:24px 24px 5px 5px;background:#573521;font:600 22px "Songti SC",serif;overflow-wrap:anywhere}
.rank-tabs{display:flex;gap:6px;width:100%}.rank-tabs button{flex:1}.rank-tabs [aria-pressed=true]{background:#694725;border-color:#d9ae6a;color:#ffe8af}
.rank-results{width:100%;color:#f2ddae}.rank-results ol{margin:0;padding-left:26px}.rank-results li{padding:7px 0;border-bottom:1px solid #e6c47836}.rank-results strong{float:right}
#rankLedger{color:#ffe2a1;border-color:#b98a51}
@media(max-width:490px){.merit-ledger{gap:3px}.merit-ledger button{padding-inline:3px}.merit-ledger strong{font-size:14px}header .brand small{display:none}}
#playerSetup{border-color:#d2a96d;background:radial-gradient(ellipse at 50% 0%,#513c28,#262b20 72%)}
#playerSetup form{display:grid;gap:10px;margin-top:18px}#playerSetup label{color:#e9cd9b}
#playerName{width:100%;padding:10px;border:1px solid #b99056;border-radius:6px;background:#231d15;color:#ffedc3;font-size:16px}
#playerForm button{background:#694725;border-color:#d9ae6a;color:#ffe8af}
#playerGreeting{color:#ffe5ae;font-size:13px}
.avatar-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 7px;padding:0;border:0;min-width:0}.avatar-options legend{padding:0;margin-bottom:7px;color:#ead09d}.avatar-options label{display:flex;align-items:center;gap:8px;padding:11px 9px;border:1px solid #b68d5266;border-radius:7px;background:#222a26;cursor:pointer}.avatar-options label+label{background:#392b2d}.avatar-options label:has(:checked){border-color:#edc389;box-shadow:inset 0 0 0 1px #edc389}.avatar-options input{margin:0;accent-color:#d3ab6d}.avatar-options strong,.avatar-options small{display:block}.avatar-options small{color:#d0b78f;white-space:nowrap}
.rank-player{display:inline-grid;gap:3px;vertical-align:top;max-width:70%;overflow-wrap:anywhere}.rank-player small{color:#d4bd93}
