.palm-stage{position:relative;isolation:isolate;overflow:hidden;min-height:400px;height:clamp(480px,70vh,960px);background:#102d31;border-radius:24px;box-shadow:inset 0 0 65px #071f2350;color:#fff4dc;--stage-ink:#fff4dc;--stage-moon:#e6bd76;}
.palm-stage__canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab;user-select:none;}
.palm-stage__canvas:active{cursor:grabbing;}
.palm-stage__canvas image{pointer-events:none;}
.palm-stage__line-ink{stroke:var(--mark);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:0;pointer-events:none;filter:drop-shadow(0 0 2px #102d31);transition:opacity .35s ease;}
.palm-stage__line-hit{stroke:transparent;stroke-width:22;cursor:pointer;pointer-events:stroke;}
.palm-stage__line.is-revealed .palm-stage__line-ink,.palm-stage__line .is-tracing{opacity:.78}.palm-stage__line.is-revealed:hover .palm-stage__line-ink,.palm-stage__line.is-revealed:focus-visible .palm-stage__line-ink,.palm-stage__line.is-revealed.is-selected .palm-stage__line-ink,.palm-stage__line .is-tracing{opacity:1;stroke-width:5;filter:drop-shadow(0 0 5px var(--mark));}
.palm-stage__line .is-tracing{opacity:1;stroke-width:5;}
.palm-stage__mount-shape{stroke:var(--mark);stroke-width:1.5;stroke-dasharray:4 5;fill:var(--mark);fill-opacity:0;stroke-opacity:0;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill-opacity .35s ease,stroke-opacity .35s ease;}
.palm-stage__mount.is-revealed .palm-stage__mount-shape{fill-opacity:.055;stroke-opacity:.55}.palm-stage__mount.is-revealed:hover .palm-stage__mount-shape,.palm-stage__mount.is-revealed:focus-visible .palm-stage__mount-shape,.palm-stage__mount.is-revealed.is-selected .palm-stage__mount-shape{stroke-opacity:1;stroke-width:3;stroke-dasharray:none;fill-opacity:.18;}
.palm-stage__line:focus-visible,.palm-stage__mount:focus-visible{outline:none;}
.palm-stage__paw{filter:drop-shadow(0 3px 3px #102d3188);}
.palm-stage__status{position:absolute;left:18px;right:18px;bottom:72px;margin:auto;width:fit-content;max-width:calc(100% - 36px);padding:9px 16px;border-radius:14px;background:#173a3ee8;color:#fff4dc;font-size:13px;line-height:1.5;text-align:center;pointer-events:none;box-shadow:0 2px 10px #071f2333;}
.palm-stage__controls{position:absolute;right:16px;bottom:15px;display:flex;gap:6px;}
.palm-stage__controls button{display:grid;place-items:center;border:1px solid #e6bd7660;border-radius:50%;width:44px;height:44px;min-width:44px;min-height:44px;background:#173a3eed;color:#fff4dc;font-family:inherit;font-size:18px;font-weight:600;line-height:1;cursor:pointer;padding:0;}
.palm-stage__controls button:last-child{font-size:12px;width:46px;border-radius:18px;}
.palm-stage__controls button:hover{background:#315651;}
.palm-stage__controls button:focus-visible{outline:3px solid #e6bd76;outline-offset:3px;}
.palm-stage__hint{position:absolute;left:18px;bottom:25px;color:#fff4dcb8;font-size:11px;pointer-events:none;}
.palm-stage[data-state=empty] .palm-stage__controls,.palm-stage[data-state=empty] .palm-stage__hint,.palm-stage[data-state=loading] .palm-stage__hint{display:none;}
@media(max-width:600px){.palm-stage{min-height:340px;height:70svh;max-height:780px;border-radius:20px;}.palm-stage__hint{font-size:10px;left:12px;max-width:140px;bottom:22px;}.palm-stage__status{font-size:12px;left:10px;right:10px;max-width:calc(100% - 20px);}.palm-stage__controls{right:12px;}}
@media(prefers-reduced-motion:reduce){.palm-stage *{animation:none!important;transition:none!important;}.palm-stage__pulse,.palm-stage__footprint{display:none!important}}

.palm-stage__scan{stroke:#e6bd76;stroke-width:3;filter:drop-shadow(0 0 9px #fff1b9);opacity:.9;}
.palm-stage__layer{pointer-events:none;}
.palm-stage__outline-path{stroke:#ffe4a3;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 8px #f7c968) drop-shadow(0 0 18px #9fe0c3);}
.palm-stage__guide{filter:drop-shadow(0 8px 8px #061e2380);}
.palm-stage[data-layer=depth] .palm-stage__status{background:#102d31f2;}
.palm-stage__footprint{fill:#f4d48a;opacity:0;filter:drop-shadow(0 0 5px #ffe7a7);animation:quest-footprint 1.3s ease-out forwards;}
.palm-stage__pulse{fill:none;stroke:#ffe39a;stroke-width:5;filter:drop-shadow(0 0 8px #f5c55b);animation:quest-pulse 1.05s cubic-bezier(.16,.84,.3,1) forwards;}
.palm-stage__pulse--search{stroke:#bce9c9;stroke-width:3}.palm-stage__pulse--arrival{stroke:#fff0b7}.palm-stage__pulse--reward{stroke:#ffd15c;stroke-width:7}
.palm-stage__summon-rays{stroke:#f8d47f;stroke-width:2.4;stroke-linecap:round;opacity:.72;filter:drop-shadow(0 0 5px #dca8ff) drop-shadow(0 0 11px #f4c85d);stroke-dasharray:12 9;animation:mount-summon-rays 1.5s ease-out forwards}
@keyframes mount-summon-rays{0%{opacity:0;stroke-dashoffset:90}24%{opacity:.9}72%{opacity:.68;stroke-dashoffset:0}100%{opacity:0;stroke-dashoffset:-24}}
.palm-stage__mount-shape.is-charting{fill-opacity:.075;stroke-opacity:1;stroke-width:3;stroke-dasharray:none;filter:drop-shadow(0 0 6px var(--mark));}
.palm-stage[data-view=clean] .palm-stage__line-ink,.palm-stage[data-view=clean] .palm-stage__mount-shape{opacity:0;stroke-opacity:0;fill-opacity:0}
.palm-stage[data-view=line] .palm-stage__mounts,.palm-stage[data-view=mount] .palm-stage__lines{opacity:.5}
.palm-stage[data-view=line] .palm-stage__line:not(.is-selected),.palm-stage[data-view=mount] .palm-stage__mount:not(.is-selected){opacity:.52}
.palm-stage[data-view=line] .palm-stage__line.is-selected .palm-stage__line-ink{opacity:1;stroke-width:5.5;filter:drop-shadow(0 0 4px #fff6cf) drop-shadow(0 0 11px var(--mark))}.palm-stage[data-view=mount] .palm-stage__mount.is-selected .palm-stage__mount-shape{stroke-opacity:1;fill-opacity:.19;stroke-width:4;stroke-dasharray:none;filter:drop-shadow(0 0 4px #fff6cf) drop-shadow(0 0 10px var(--mark))}
.palm-stage__line.is-awakening .palm-stage__line-ink{animation:line-awaken .72s ease-out 2}.palm-stage__mount.is-awakening .palm-stage__mount-shape{animation:mount-awaken .72s ease-out 2}
.palm-stage__target-marker ellipse{display:none}
.palm-stage__target-marker text{fill:#fff0bd;stroke:#102d31;stroke-width:4;paint-order:stroke fill;font:700 15px/1.2 "STSong",serif;letter-spacing:1px;filter:drop-shadow(0 2px 3px #071f2388)}
.palm-stage__clue{position:absolute;z-index:5;width:min(290px,calc(100% - 24px));padding:15px 17px;border:2px solid #f2d28a;border-radius:15px;background:linear-gradient(145deg,#fff1c9f5,#dfbd75f2);color:#163937;box-shadow:0 14px 35px #001c2380,0 0 0 5px #ffe6a52b;pointer-events:none;transform-origin:20% 85%;animation:quest-clue .55s cubic-bezier(.18,1.35,.36,1) both;}
.palm-stage__clue span{display:block;font-size:10px;font-weight:800;letter-spacing:1px;color:#6d5524}.palm-stage__clue strong{display:block;margin:7px 0 8px;font:700 16px/1.4 "SimSun",serif}.palm-stage__clue small{display:block;margin-top:5px;font-size:11px;line-height:1.55;color:#39574d}.palm-stage__clue small[data-role=meaning]{padding-top:7px;border-top:1px solid #7e6b3f42;color:#22473f}
.palm-stage[data-state^=quest] .palm-stage__status{bottom:auto;left:18px;right:auto;top:18px;margin:0;background:#153a35e8;border:1px solid #e8cc815c;text-align:left;font-weight:700;letter-spacing:.04em;}
@keyframes quest-footprint{0%{opacity:0;transform:scale(.45)}18%{opacity:.95;transform:scale(1.12)}100%{opacity:0;transform:scale(.78)}}
@keyframes quest-pulse{0%{r:8;opacity:0}18%{opacity:1}100%{r:70;opacity:0;stroke-width:1}}
@keyframes quest-clue{0%{opacity:0;transform:translateY(18px) scale(.72) rotate(-2deg)}70%{opacity:1;transform:translateY(-4px) scale(1.04) rotate(1deg)}100%{opacity:1;transform:none}}
@keyframes line-awaken{0%{stroke-width:3;opacity:.45;filter:drop-shadow(0 0 0 transparent)}38%{stroke-width:7;opacity:1;filter:drop-shadow(0 0 7px #fff6cf) drop-shadow(0 0 18px var(--mark))}100%{stroke-width:5.5;opacity:1}}
@keyframes mount-awaken{0%{stroke-opacity:.45;fill-opacity:.06}38%{stroke-opacity:1;fill-opacity:.3;filter:drop-shadow(0 0 7px #fff6cf) drop-shadow(0 0 18px var(--mark))}100%{stroke-opacity:1;fill-opacity:.19}}
@media(max-width:600px){.palm-stage__clue{width:210px;padding:11px 13px}.palm-stage__clue strong{font-size:15px}.palm-stage[data-state^=quest] .palm-stage__status{top:10px;left:10px;max-width:62%;}}
