:root{--bg:#8cc97a;--ink:#23331f;--card:#fffdf7;--accent:#e8892b;--muted:#6b7a66;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;color:var(--ink);-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;overflow:hidden}#stage,#stage canvas{touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;top:0;bottom:0;left:0;right:0}#loading{background:var(--bg);z-index:30;place-items:center;transition:opacity .3s;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}#loading.done{opacity:0;pointer-events:none}.loading-box{text-align:center}.loading-title{margin:0 0 4px;font-size:20px;font-weight:700}.loading-sub{color:var(--muted);margin:0;font-size:14px}.panel{padding:16px;padding-bottom:max(16px, env(safe-area-inset-bottom));z-index:20;background:#141e1240;place-items:end center;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.panel[hidden]{display:none}.panel-card{background:var(--card);border-radius:18px;width:min(420px,100%);padding:20px 20px 24px;animation:.22s ease-out rise;position:relative;box-shadow:0 10px 30px #0003}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}.panel-close{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;font-size:28px;line-height:1;position:absolute;top:8px;right:8px}.panel-img{object-fit:contain;width:96px;height:96px;margin:0 auto 8px;display:block}.panel-cat{color:var(--accent);text-align:center;margin:0;font-size:13px;font-weight:700}.panel-title{text-align:center;margin:2px 0 8px;font-size:22px}.panel-desc{margin:0 0 12px;line-height:1.6}.panel-extra{gap:10px;display:grid}.stamp-note{text-align:center;color:var(--muted);margin:0;font-size:14px}.stamp-note.got{color:#2f7a35;font-weight:700}.btn{border:2px solid var(--ink);background:var(--card);min-height:44px;color:var(--ink);cursor:pointer;border-radius:22px;justify-content:center;align-items:center;padding:0 18px;font:700 15px/1 inherit;text-decoration:none;display:inline-flex}.btn-ticket{background:var(--accent);border-color:var(--accent);color:#fff}.btn-ticket[aria-disabled=true]{opacity:.75}.hud-ui{visibility:hidden}body.playing .hud-ui{visibility:visible}.topbar{right:12px;top:max(12px, env(safe-area-inset-top));z-index:12;flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:calc(100vw - 150px);display:flex;position:fixed}.topbar .menu-btn{padding:0 14px;position:static}.badge{color:var(--accent);margin-left:4px;font-size:13px}.pulse{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{box-shadow:0 0 0 6px #e8892b59}}.ticket-fab{right:12px;bottom:calc(max(6px, env(safe-area-inset-bottom)) + 22px);z-index:11;position:fixed}.ticket-fab .btn{box-shadow:0 4px 14px #00000038}.sheet{z-index:21;background:#141e1259;place-items:center;padding:16px;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.sheet-card{background:var(--card);border-radius:18px;width:min(440px,100%);max-height:calc(100dvh - 32px);padding:20px;animation:.22s ease-out rise;position:relative;overflow:auto;box-shadow:0 10px 30px #0003}.sheet-title{text-align:center;margin:4px 0 8px;font-size:20px}.sheet-sub{text-align:center;color:var(--muted);margin:8px 0;font-size:14px;line-height:1.6}.sheet-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px;display:flex}.progress{background:#ece5d6;border-radius:5px;height:10px;overflow:hidden}.progress i{background:var(--accent);height:100%;transition:width .4s;display:block}.stamp-grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}.stamp-grid button{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:2px dashed #d6ccb8;border-radius:12px;padding:8px 4px;font:12px/1.3 inherit}.stamp-grid img{object-fit:contain;filter:grayscale();opacity:.35;width:48px;height:48px;margin:0 auto 4px;display:block}.stamp-grid .got button{border:2px solid var(--accent);color:var(--ink);background:#fff4e6;font-weight:700}.stamp-grid .got img{filter:none;opacity:1}.complete-seal{border:6px double var(--accent);width:120px;height:120px;color:var(--accent);border-radius:50%;place-items:center;margin:8px auto;font-size:44px;font-weight:800;display:grid;transform:rotate(-8deg)}.flip{perspective:1000px;height:380px;position:relative}.flip-back,.flip-front{-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:16px;transition:transform .6s;position:absolute;top:0;bottom:0;left:0;right:0}.flip-back{color:#fff;cursor:pointer;background:repeating-linear-gradient(45deg,#e8892b 0 14px,#f0a04f 14px 28px);border:0;font:800 22px/1 inherit}.flip-back span{background:#00000040;border-radius:12px;padding:10px 16px}.flip-front{text-align:center;background:#fff4e6;padding:16px;overflow:auto;transform:rotateY(180deg)}.flip.flipped .flip-back{transform:rotateY(-180deg)}.flip.flipped .flip-front{transform:rotateY(0)}.flip-front img{object-fit:contain;width:150px;height:150px}.flip-front h3{margin:4px 0;font-size:24px}.fortune{margin:6px 0;font-weight:700;line-height:1.5}.fact{color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.6}.toast{left:50%;top:calc(max(12px, env(safe-area-inset-top)) + 206px);z-index:25;color:#fff;opacity:0;pointer-events:none;background:#23331feb;border-radius:20px;max-width:calc(100vw - 32px);padding:10px 16px;font-size:14px;transition:opacity .2s,transform .2s;position:fixed;transform:translate(-50%,-12px)}.toast.show{opacity:1;transform:translate(-50%)}.joystick{left:max(20px, env(safe-area-inset-left));bottom:calc(max(20px, env(safe-area-inset-bottom)) + 16px);z-index:11;touch-action:none;background:#fffdf759;border:2px solid #fffdf7b3;border-radius:50%;width:120px;height:120px;position:fixed}.joystick-float{pointer-events:none;bottom:auto}.joystick-knob{pointer-events:none;background:#fffdf7e6;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%;box-shadow:0 2px 8px #00000040}.jump-btn{right:max(20px, env(safe-area-inset-right));bottom:calc(max(20px, env(safe-area-inset-bottom)) + 76px);z-index:11;width:72px;height:72px;color:var(--ink);touch-action:none;background:#fffdf7d9;border:0;border-radius:50%;font:800 20px/1 inherit;position:fixed;box-shadow:0 4px 14px #00000038}.jump-btn:active{transform:scale(.94)}@media (max-width:380px){.topbar .menu-btn{padding:0 10px;font-size:14px}}.hud{z-index:10;color:#fff;white-space:pre;pointer-events:none;background:#0009;border-radius:8px;padding:6px 8px;font:12px/1.45 ui-monospace,Menlo,Consolas,monospace;position:fixed;top:250px;left:8px}.menu-btn{right:12px;top:max(12px, env(safe-area-inset-top));z-index:12;background:var(--card);min-width:64px;height:44px;color:var(--ink);cursor:pointer;border:0;border-radius:22px;padding:0 16px;font:700 15px/1 inherit;position:fixed;box-shadow:0 4px 14px #0000002e}.menu{right:12px;top:calc(max(12px, env(safe-area-inset-top)) + 52px);z-index:12;background:var(--card);border-radius:14px;width:min(260px,100vw - 24px);max-height:min(70vh,520px);padding:8px;position:fixed;overflow:auto;box-shadow:0 10px 30px #0003}.menu-head{justify-content:space-between;align-items:center;padding:4px 8px;display:flex}.menu-close{width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:24px}.menu ul{margin:0;padding:0;list-style:none}.menu li button{width:100%;min-height:40px;color:var(--ink);text-align:left;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 10px}.menu li button:hover{background:#f1ece0}.menu li button:focus-visible{background:#f1ece0}.credit{right:8px;bottom:max(6px, env(safe-area-inset-bottom));z-index:5;color:#23331fb3;pointer-events:none;margin:0;font-size:10px;position:fixed}.fallback{background:var(--card);z-index:40;padding:16px;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.fallback img{max-width:100%;height:auto}.start{z-index:30;-webkit-backdrop-filter:blur(3px);background:#8cc97a8c;place-items:center;padding:16px;transition:opacity .35s;display:grid;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.start.done{opacity:0;pointer-events:none}.start-card{background:var(--card);text-align:center;border-radius:22px;width:min(420px,100%);padding:24px 22px;box-shadow:0 14px 40px #00000040}.start-kicker{color:var(--accent);letter-spacing:.08em;margin:0;font-size:15px;font-weight:700}.start-title{margin:2px 0 8px;font-size:36px;line-height:1.2}.start-lead{margin:0 0 14px;line-height:1.6}.start-how{text-align:left;background:#f3efe3;border-radius:14px;margin:0 0 14px;padding:12px 14px;font-size:14px;line-height:1.55;list-style:none}.start-how li{grid-template-columns:4.2em 1fr;display:grid}.start-how li+li{margin-top:6px}.start-how b{color:#2f6b3a}.start-pick{color:var(--muted);margin:0 0 6px;font-size:13px}.start-colors{justify-content:center;gap:10px;margin-bottom:16px;display:flex}.swatch{cursor:pointer;border:3px solid #fff;border-radius:50%;width:40px;height:40px;padding:0;box-shadow:0 0 0 2px #d6ccb8}.swatch[aria-checked=true]{box-shadow:0 0 0 3px var(--ink)}.start-row{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:14px;display:flex}.start-row select,.start-row input{min-width:0;min-height:42px;color:var(--ink);font:inherit;background:#fff;border:2px solid #d6ccb8;border-radius:10px;flex:110px;padding:0 10px;font-size:16px}.start-row .btn{min-height:42px}.start-btn{width:100%;min-height:52px;font-size:18px}.emotes{right:max(20px, env(safe-area-inset-right));bottom:calc(max(20px, env(safe-area-inset-bottom)) + 164px);z-index:11;flex-direction:column;gap:8px;display:flex;position:fixed}.emote-btn{min-height:42px;color:var(--ink);cursor:pointer;background:#fffdf7eb;border:0;border-radius:21px;padding:0 14px;font:700 14px/1 inherit;box-shadow:0 3px 10px #00000026}body.acard-open .emotes{display:none}.start-btn:disabled{opacity:.6;cursor:default}.topleft{left:12px;top:max(12px, env(safe-area-inset-top));z-index:12;pointer-events:none;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100vw - 24px);display:flex;position:fixed}.topleft>*,#map-host>*{pointer-events:auto}.minimap-cvs{border-radius:10px}.minimap{cursor:pointer;background:#fffdf7eb;border:0;border-radius:14px;margin-bottom:6px;padding:4px;line-height:0;position:relative;box-shadow:0 4px 14px #0000002e}.minimap-tag{background:var(--ink);color:#fff;border-radius:10px;padding:3px 9px;font:700 11px/1 inherit;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)}.next-chip{background:var(--accent);color:#fff;text-align:left;cursor:pointer;border:0;border-radius:18px;align-items:center;gap:8px;max-width:100%;min-height:36px;margin-top:6px;padding:6px 12px;font:700 13px/1.3 inherit;display:flex;box-shadow:0 4px 14px #0003}.next-chip[hidden]{display:none}.next-go{color:var(--accent);white-space:nowrap;background:#fff;border-radius:12px;flex:none;padding:5px 10px;font-size:13px}.next-chip.auto .next-go{background:var(--ink);color:#fff}.feed-chip{color:var(--ink);background:#fffdf7eb;border-radius:14px;margin:6px 0 0;padding:5px 11px;font-size:13px;font-weight:700;display:inline-block;box-shadow:0 3px 10px #00000026}.feed-chip:before{content:"";background:#f5b82e;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block;transform:rotate(45deg)}.weather-chip{color:var(--ink);cursor:pointer;background:#fffdf7eb;border:0;border-radius:14px;margin:6px 0 0;padding:5px 11px;font:700 13px/1.4 inherit;display:block;box-shadow:0 3px 10px #00000026}.weather-chip[aria-pressed=false]{color:var(--muted)}.mp-chip{width:-moz-fit-content;width:fit-content;color:var(--ink);background:#fffdf7eb;border-radius:14px;margin:6px 0 0;padding:5px 11px;font:700 13px/1.4 inherit;box-shadow:0 3px 10px #00000026}.feed-chip.empty{color:#b3261e}.feed-chip.bump{animation:.35s ease-out feed-bump}@keyframes feed-bump{40%{transform:scale(1.18)}}.interact{left:50%;bottom:calc(max(20px, env(safe-area-inset-bottom)) + 150px);z-index:11;color:#fff;cursor:pointer;background:#2f7a35;border:3px solid #fff;border-radius:26px;min-height:48px;padding:0 22px;font:800 16px/1 inherit;animation:1.2s ease-in-out infinite bob;position:fixed;transform:translate(-50%);box-shadow:0 6px 18px #00000047}@keyframes bob{50%{transform:translate(-50%,-5px)}}@media (pointer:fine){.interact{bottom:90px}.interact:after{content:"（E）";opacity:.8;font-weight:400}}.acard{left:50%;bottom:max(10px, env(safe-area-inset-bottom));z-index:19;background:var(--card);border-radius:18px;width:min(440px,100vw - 20px);max-height:46dvh;padding:14px 16px 12px;animation:.22s ease-out rise-c;position:fixed;overflow:auto;transform:translate(-50%);box-shadow:0 10px 30px #00000047}@keyframes rise-c{0%{opacity:0;transform:translate(-50%,24px)}}@media (min-width:720px){.acard{width:360px;max-height:calc(100dvh - 120px);animation-name:rise;bottom:16px;left:auto;right:16px;transform:none}}.acard-head{align-items:center;gap:12px;padding-right:36px;display:flex}.acard-img{object-fit:contain;background:#f3efe3;border-radius:14px;flex:none;width:72px;height:72px}.acard-cls{color:var(--accent);margin:0;font-size:12px;font-weight:700}.acard-name,.dex-name{margin:0;font-size:22px;line-height:1.25}.acard-name.friend:after,.dex-name.friend:after{content:"好朋友";color:#fff;vertical-align:middle;background:#ff5a7a;border-radius:10px;margin-left:8px;padding:2px 8px;font-size:12px}.acard-en{color:var(--muted);margin:0;font-size:12px}.acard-intro{margin:10px 0 8px;line-height:1.55}.acard-facts{gap:6px;margin:0 0 10px;padding:0;font-size:14px;line-height:1.5;list-style:none;display:grid}.acard-facts li{background:#eef6e6;border-radius:10px;padding:7px 10px}.acard-facts li.locked{color:var(--muted);background:#f1ece0;padding:4px 10px;font-size:12px}@media (max-width:719px){.acard{max-height:44dvh;padding:12px 14px 10px}.acard-img{width:56px;height:56px}.acard-name{font-size:20px}.acard-intro{margin:8px 0 6px;font-size:14px}.acard-facts{font-size:13px}.acard-en{display:none}}.acard-actions{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.btn-act{color:#fff;background:#2f7a35;border-color:#2f7a35;padding:0 6px;font-size:14px}.btn-act.done{background:var(--card);color:#2f7a35}.btn-act.done:before{content:"✓ "}.acard-meta{color:var(--muted);text-align:center;margin:8px 0 0;font-size:12px}.acard-live{color:#b25a12;margin-top:4px;font-weight:600}body.acard-open .joystick,body.acard-open .jump-btn,body.acard-open .ticket-fab,body.acard-open .interact{display:none}@media (max-width:719px){body.acard-open .credit{display:none}}.residents{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.residents-title{width:100%;color:var(--muted);margin:0;font-size:13px;font-weight:700}.resident{min-height:44px;color:var(--ink);cursor:pointer;background:#eef6e6;border:2px solid #cfe1c2;border-radius:22px;align-items:center;gap:6px;padding:4px 12px 4px 4px;font:700 14px/1 inherit;display:inline-flex}.resident img{object-fit:contain;background:#fff;border-radius:50%;width:34px;height:34px}.resident.unknown img{filter:brightness(0);opacity:.3}.dex-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}.dex-grid button{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:2px dashed #d6ccb8;border-radius:12px;padding:8px 4px;font:12px/1.3 inherit}.dex-grid img{object-fit:contain;filter:brightness(0);opacity:.22;width:60px;height:60px;margin:0 auto 4px;display:block}.dex-grid .got button{color:var(--ink);background:#eef6e6;border:2px solid #9cc98a;font-weight:700}.dex-grid .got img{filter:none;opacity:1}.dex-grid .friend button{background:#fff0f3;border-color:#ff5a7a}.dex-big{object-fit:contain;width:150px;height:150px;margin:6px auto;display:block}.dex-big.unknown{filter:brightness(0);opacity:.22}.sheet-dex .dex-name,.sheet-dex .acard-en{text-align:center}.dex-tags{flex-wrap:wrap;justify-content:center;gap:6px;margin:10px 0;font-size:13px;display:flex}.dex-tags span{background:#f1ece0;border-radius:12px;padding:4px 10px}.dex-tags b{color:var(--accent);margin-right:6px}.dex-prog{flex-wrap:wrap;justify-content:center;gap:6px;margin:0;font-size:13px;display:flex}.dex-prog span{color:var(--muted);border:1.5px dashed #d6ccb8;border-radius:12px;padding:4px 10px}.dex-prog span.done{color:#2f7a35;border:1.5px solid #2f7a35;font-weight:700}.dex-prog span.done:before{content:"✓ "}.btn-small{border-width:1.5px;min-height:36px;padding:0 12px;font-size:13px}.btn:disabled{opacity:.55;cursor:default}.quiz-q{text-align:center;margin:6px 0 12px;font-size:18px;font-weight:700;line-height:1.5}.quiz-opts{gap:8px;display:grid}.quiz-opt{text-align:left;justify-content:flex-start;width:100%;min-height:48px;padding:10px 16px;line-height:1.4}.quiz-opt.right{color:#fff;opacity:1;background:#2f7a35;border-color:#2f7a35}.quiz-opt.wrong{color:#fff;opacity:1;background:#d9483b;border-color:#d9483b}.quiz-explain{background:#eef6e6;border-radius:10px;margin:12px 0 0;padding:10px 12px;font-size:14px;line-height:1.55}.photo-preview{object-fit:contain;border-radius:10px;width:100%;max-height:56dvh;display:block;box-shadow:0 2px 10px #00000026}.map-cvs{cursor:pointer;touch-action:manipulation;background:#e6f1dc;border-radius:12px;margin:0 auto;display:block}.map-list{counter-reset:stop;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.map-list li{counter-increment:stop}.map-list button{width:100%;min-height:40px;color:var(--ink);text-align:left;cursor:pointer;background:#f3efe3;border:0;border-radius:10px;align-items:center;gap:8px;padding:4px 8px;font:14px/1.2 inherit;display:flex}.map-list button:before{content:counter(stop);border:2px solid var(--accent);background:#fff;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:grid}.map-list .got button:before{color:#fff;background:#3f8f4f;border-color:#2c6a39}.map-list .next button{background:#fff0dc;font-weight:700}.map-list .next button:before{background:var(--accent);color:#fff}@media (max-width:420px){.topbar .menu-btn{min-width:0;padding:0 11px;font-size:14px}.topbar{gap:6px}}
