:root{--paper:#f3ecdc;--ink:#3b3226;--ink-brown:#6b4423;--felt-green:#62a416;--label:#fffaf0;--label-shadow:#3c1e0a73;--font:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{overscroll-behavior:none;background:var(--paper);height:100%;color:var(--ink);font-family:var(--font);-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}#app{position:fixed;inset:0}#game-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}img{-webkit-user-drag:none;pointer-events:none}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent;cursor:pointer;font-family:inherit}.hud-top{height:calc(var(--safe-top) + 146px);pointer-events:none;position:absolute;top:0;left:0;right:0}.hud-top:before{content:"";height:calc(var(--safe-top) + 2px);background:var(--felt-green);position:absolute;top:0;left:0;right:0}.ui-header{left:0;right:0;top:var(--safe-top);border-style:solid;border-width:47.5px 114.5px 48px 115px;border-image:url(/ui/header.png) 95 229 96 230 fill/47.5px 114.5px 48px 115px round stretch;height:96px;position:absolute}.ui-back{left:10px;top:calc(var(--safe-top) + 12px);pointer-events:auto;background:url(/ui/back-btn.png) 50%/100% 100% no-repeat;border:0;place-items:center;width:56px;height:58px;padding:0 0 4px;display:grid;position:absolute}.ui-back img{width:28px;height:auto}.ui-plaque{left:50%;top:calc(var(--safe-top) + 14px);letter-spacing:.12em;min-width:176px;height:52px;color:var(--ink-brown);white-space:nowrap;border-style:solid;border-width:0;border-image:url(/ui/plaque.png) 50 85 50 62 fill/25px 42.5px 25px 31px round stretch;place-items:center;margin:0;padding:0 34px 3px;font-size:22px;font-weight:800;display:grid;position:absolute;transform:translate(-50%)}.hud-pills{left:0;right:0;top:calc(var(--safe-top) + 100px);justify-content:center;gap:14px;display:flex;position:absolute}.ui-pill{border-style:solid;border-width:0;border-image:url(/ui/pill-green.png) 0 46 fill/0 23px round stretch;align-items:center;gap:6px;min-width:118px;height:35px;padding:0 16px 3px 10px;display:flex}.ui-pill--yellow{border-image-source:url(/ui/pill-yellow.png)}.ui-pill img{object-fit:contain;width:24px;height:24px}.ui-pill strong{text-align:center;color:var(--ink-brown);font-variant-numeric:tabular-nums;flex:1;font-size:17px;font-weight:800}.ui-frame{pointer-events:none;filter:drop-shadow(0 3px 2px #6e502840);border-style:solid;border-width:32px;border-image:url(/ui/frame.png) 64/32px round;position:absolute}.hud-bottom{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 18px);justify-content:center;gap:18px;display:flex;position:absolute}.ui-btn{width:80px;height:80px;color:var(--label);letter-spacing:.04em;white-space:nowrap;text-shadow:0 1px 0 var(--label-shadow);background:0 0;border-style:solid;border-width:0;border-image:url(/ui/btn-blue.png) 44 fill/22px round;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:6px 4px 12px;font-size:13px;font-weight:800;transition:transform 60ms ease-out,filter 60ms ease-out;display:flex;position:relative}.ui-btn--yellow{border-image-source:url(/ui/btn-yellow.png)}.ui-btn--red{border-image-source:url(/ui/btn-red.png)}.ui-btn img{object-fit:contain;width:auto;max-width:44px;height:34px;filter:drop-shadow(0 1px 0 var(--label-shadow))}.ui-btn:active,.ui-btn.is-pressed{filter:brightness(.86)saturate(1.1);transform:translateY(3px)}.ui-back:active,.ui-back.is-pressed{filter:brightness(.88);transform:translateY(2px)scale(.95)}.ui-btn:focus-visible,.ui-back:focus-visible{outline:3px dashed var(--ink-brown);outline-offset:3px}.ui-result{left:50%;bottom:calc(var(--safe-bottom) + 26px);width:min(460px,100% - 16px);height:52px;color:var(--ink-brown);border-style:solid;border-width:0;border-image:url(/ui/plaque.png) 50 85 50 62 fill/25px 42.5px 25px 31px round stretch;align-items:center;gap:8px;padding:0 26px 3px 24px;animation:.32s cubic-bezier(.34,1.56,.64,1) both result-in;display:flex;position:absolute;transform:translate(-50%)}.ui-result[hidden]{display:none}@keyframes result-in{0%{opacity:0;transform:translate(-50%)translateY(18px)}}.result-stats{white-space:nowrap;flex:1;justify-content:space-around;align-items:center;gap:6px;min-width:0;font-size:14px;font-weight:700;display:flex}.result-stat{align-items:center;gap:3px;display:inline-flex}.result-stat img{object-fit:contain;width:20px;height:20px}.result-stat b{font-variant-numeric:tabular-nums;font-size:16px;font-weight:800}.result-cat b{text-align:center;min-width:1.1em;transition:color .2s;display:inline-block}.result-cat.is-found b{color:#d9822b;animation:.42s cubic-bezier(.34,1.56,.64,1) cat-pop}@keyframes cat-pop{0%{transform:scale(.4)}60%{transform:scale(1.5)}to{transform:scale(1)}}.ui-btn--wide{flex:none;width:auto;height:44px;padding:0 14px 6px;font-size:14px}#board-frame,.hud-pills,.hud-bottom{transition:opacity .38s ease-out,visibility linear}#app.is-popup #board-frame,#app.is-popup .hud-pills,#app.is-popup .hud-bottom{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .38s ease-out,visibility 0s linear .38s}#safe-probe{visibility:hidden;pointer-events:none;width:0;height:0;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);position:absolute;overflow:hidden}:root{--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}#app:not([data-page=play]):not([data-page=popup]) #board-frame,#app:not([data-page=play]):not([data-page=popup]) .hud-pills,#app:not([data-page=play]):not([data-page=popup]) .hud-bottom,#app[data-page=home] #btn-back,#app[data-page=ending] #btn-back,#app.is-daily-done .hud-bottom,.ui-result.is-daily .result-cat{display:none}.ui-result.is-daily .result-record{left:34%}#app:not([data-page=map]):not([data-page=card]) .map-footer,#app:not([data-page=map]):not([data-page=card]) .map-labels{display:none}#app[data-page=ending] .hud-top{opacity:0;transition:opacity .6s}.hud-top{transition:opacity .4s}.map-labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.map-teaser{box-sizing:border-box;white-space:normal;text-align:center;text-wrap:balance;width:max-content;max-width:118px;min-height:30px;color:var(--ink-brown);filter:drop-shadow(0 2px 2px #3c1e0a40);will-change:transform;border-style:solid;border-width:0;border-image:url(/ui/plaque.png) 50 85 50 62 fill/14px 23.8px 14px 17.4px round stretch;justify-content:center;align-items:center;padding:6px 15px 7px 14px;font-size:12px;font-weight:700;line-height:1.3;animation:.5s ease-out both teaser-in;display:flex;position:absolute;top:0;left:0}@keyframes teaser-in{0%{opacity:0}}.map-teaser-leader{transform-origin:0;background:#fff8e8eb;border-radius:1px;height:2px;animation:.5s ease-out both teaser-in;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #6e461e59}.map-footer{left:0;right:0;bottom:calc(var(--safe-bottom) + 16px);pointer-events:none;justify-content:center;display:flex;position:absolute}.map-footer .ui-pill{min-width:150px;padding:0 18px 3px 12px}.map-lit-label{color:var(--ink-brown);font-size:14px;font-weight:700}.card-layer{padding:calc(var(--safe-top) + 24px) calc(var(--safe-right) + 14px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 14px);background:#281c0e52;justify-content:center;align-items:center;animation:.2s ease-out both fade-in;display:flex;position:absolute;inset:0}.card-layer[hidden]{display:none}@keyframes fade-in{0%{opacity:0}}.ui-card{width:min(360px,100%);max-height:100%;color:var(--ink);border-style:solid;border-width:0;border-image:url(/ui/card.png) 48 fill/24px round;flex-direction:column;align-items:center;gap:12px;padding:30px 28px 26px;animation:.28s cubic-bezier(.34,1.4,.64,1) both card-in;display:flex;position:relative;overflow:auto}@keyframes card-in{0%{opacity:0;transform:translateY(16px)scale(.96)}}.ui-card-close{background:0 0;border:0;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:10px;right:10px}.ui-card-close img{object-fit:contain;width:30px;height:30px}.ui-card-close:active{transform:scale(.9)}.card-title{letter-spacing:.08em;color:var(--ink-brown);text-align:center;margin:4px 44px 0;font-size:22px;font-weight:800}.card-text{text-align:center;color:var(--ink);margin:0;font-size:15px;line-height:1.6}.card-text.is-teaser{color:#7a6a52;font-style:italic}.card-size{justify-content:center;align-items:center;gap:10px;display:flex}.card-size-chip{cursor:default;justify-content:center;align-items:center;width:72px;display:inline-flex}.card-size-count{color:#8d7b62;font-size:14px}.card-size-pips{gap:4px;display:inline-flex}.card-size-pips i{background:#e3d3b6;border-radius:50%;width:9px;height:9px;box-shadow:inset 0 1px 1px #50321440}.card-size-pips i.is-on{background:#e8962a}.ui-chip{width:66px;height:44px;color:var(--ink-brown);font-variant-numeric:tabular-nums;background:0 0;border-style:solid;border-width:0;border-image:url(/ui/chip.png) 18 32 20 fill/9px 16px 10px round stretch;place-items:center;padding:0 0 3px;font-size:15px;font-weight:800;transition:transform 60ms ease-out,filter 60ms ease-out;display:grid}.ui-chip.is-on{color:var(--label);text-shadow:0 1px 0 var(--label-shadow);border-image:url(/ui/btn-yellow.png) 44 fill/14px round}.ui-chip.is-locked{filter:grayscale(.7)opacity(.6);cursor:default}.ui-chip .chip-lock{object-fit:contain;width:20px;height:20px}.ui-chip:not(.is-locked):active{filter:brightness(.9);transform:translateY(2px)}.card-best{min-height:22px;color:var(--ink-brown);align-items:center;gap:4px;margin:0;font-size:14px;display:flex}.card-best .best-label{margin-right:6px;font-weight:700}.card-best .best-icon{object-fit:contain;width:18px;height:18px}.card-best b{font-variant-numeric:tabular-nums;font-size:16px}.card-best .best-moves{margin-left:8px}.card-best .best-none{color:#8d7b62}.card-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:2px;display:flex}.card-actions .ui-btn--wide{flex-direction:row;gap:6px;min-width:112px;height:48px;padding:0 16px 7px;font-size:15px}.card-actions .ui-btn--wide img{height:24px}.card-actions .ui-btn:disabled{filter:grayscale(.4)opacity(.7);cursor:progress}.card-cat{color:#8d7b62;margin:0;font-size:13px}.card-cat.is-found{color:#d9822b}.ui-confirm{width:min(320px,100%)}.confirm-text{color:var(--ink-brown);text-align:center;margin:8px 0 4px;font-size:16px;font-weight:700}.confirm-layer{z-index:5}.result-stat.is-record b{color:#d9822b}.result-record{color:var(--label);letter-spacing:.1em;background:#e2574c;border-radius:999px;padding:2px 10px 3px;font-size:12px;font-weight:800;animation:.42s cubic-bezier(.34,1.56,.64,1) .2s both cat-pop;position:absolute;top:-14px;left:50%;transform:translate(-50%)rotate(-3deg);box-shadow:0 2px #5a1e1459}.result-record[hidden],.ui-result.is-view .result-stat:not(.result-cat){display:none}.ui-result.is-view{width:min(300px,100% - 16px)}.ending-layer{left:0;right:0;top:calc(var(--safe-top) + 18px);justify-content:center;padding:0 14px;display:flex;position:absolute}.ending-layer[hidden]{display:none}.ending-card{width:min(380px,100%);padding:24px 26px 20px}.ending-text{text-align:center;color:var(--ink-brown);margin:0;font-size:17px;font-weight:700;line-height:1.7}.onboard{pointer-events:none;z-index:4;position:absolute;inset:0}.onboard[hidden]{display:none}.onboard[data-stage=tools]{pointer-events:auto;background:#1e140873}.onboard-hand{filter:drop-shadow(0 3px 3px #28140066);width:56px;height:auto;margin:-6px 0 0 -10px;animation:2.2s ease-in-out infinite hand-drag;position:absolute;top:0;left:0}.onboard-hand[hidden]{display:none}@keyframes hand-drag{0%{transform:translate(var(--fx), var(--fy)) scale(1.15);opacity:0}12%{transform:translate(var(--fx), var(--fy)) scale(1.15);opacity:1}24%{transform:translate(var(--fx), var(--fy)) scale(.95);opacity:1}70%{transform:translate(var(--tx), var(--ty)) scale(.95);opacity:1}82%{transform:translate(var(--tx), var(--ty)) scale(1.15);opacity:1}to{transform:translate(var(--tx), var(--ty)) scale(1.15);opacity:0}}.onboard-caption{left:50%;top:calc(var(--safe-top) + 152px);max-width:calc(100% - 24px);color:var(--label);text-align:center;white-space:nowrap;background:#3b2a14db;border-radius:12px;margin:0;padding:8px 16px 9px;font-size:15px;font-weight:700;animation:.22s both fade-in;position:absolute;transform:translate(-50%)}.onboard-caption[hidden]{display:none}.onboard[data-stage=merge] .onboard-caption{background:#d9822bf2}.onboard-ring{border-radius:22px;animation:1.1s ease-in-out infinite ring-pulse;position:absolute;box-shadow:0 0 0 4px #ffd66b,0 0 18px 6px #ffc850b3}@keyframes ring-pulse{50%{box-shadow:0 0 0 6px #ffd66b,0 0 26px 10px #ffc850d9}}.onboard-tip{background:var(--paper);color:var(--ink-brown);white-space:nowrap;border-radius:10px;margin:0;padding:7px 12px 8px;font-size:14px;font-weight:700;position:absolute;transform:translate(-50%,-100%);box-shadow:0 3px #5a3c144d}.onboard-dismiss{text-align:center;color:var(--label);opacity:.85;margin:0;font-size:15px;font-weight:700;position:absolute;top:45%;left:0;right:0}.toast{left:50%;top:calc(var(--safe-top) + 108px);z-index:6;max-width:calc(100% - 24px);color:var(--label);text-align:center;background:#3b2a14e6;border-radius:10px;padding:8px 14px 9px;font-size:14px;font-weight:700;animation:.22s both fade-in;position:absolute;transform:translate(-50%)}.toast[hidden]{display:none}.fatal{text-align:center;background:var(--paper);z-index:10;justify-content:center;align-items:center;padding:24px;font-size:18px;display:flex;position:fixed;inset:0}.pages{-webkit-overflow-scrolling:touch;background:var(--paper);padding:calc(var(--safe-top) + 108px) calc(var(--safe-right) + 14px) calc(var(--safe-bottom) + 20px) calc(var(--safe-left) + 14px);position:absolute;inset:0;overflow:hidden auto}.pages[hidden]{display:none}.page{flex-direction:column;align-items:center;gap:14px;min-height:100%;animation:.2s ease-out both fade-in;display:flex}.page .ui-card{animation:.26s cubic-bezier(.34,1.4,.64,1) both card-in}.page button.ui-card{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0}.page-btn.ui-btn--wide{flex-direction:row;gap:10px;width:min(300px,100%);height:58px;padding:0 18px 8px}.page-btn .page-btn-icon{height:26px}.page-btn-text{flex-direction:column;align-items:center;min-width:0;line-height:1.15;display:flex}.page-btn-label{letter-spacing:.14em;font-size:18px}.page-btn-sub{letter-spacing:.02em;opacity:.95;text-overflow:ellipsis;max-width:240px;font-size:12px;font-weight:700;overflow:hidden}.home-hero{aspect-ratio:1;width:min(270px,70vw,100dvh - 520px);min-width:150px;margin:0;position:relative}.home-cover{object-fit:cover;border-radius:4px;width:calc(100% - 28px);height:calc(100% - 28px);position:absolute;inset:14px}.home-hero:after{content:"";pointer-events:none;filter:drop-shadow(0 3px 2px #6e502840);border-style:solid;border-width:32px;border-image:url(/ui/frame.png) 64/32px round;position:absolute;inset:0}.home-hero-caption{z-index:1;white-space:nowrap;letter-spacing:.1em;height:34px;color:var(--ink-brown);border-style:solid;border-width:0;border-image:url(/ui/plaque.png) 50 85 50 62 fill/17px 28.9px 17px 21px round stretch;place-items:center;padding:0 22px 3px;font-size:14px;font-weight:800;display:grid;position:absolute;bottom:-14px;left:50%;transform:translate(-50%)}.home-buttons{flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:18px;display:flex}.home-row{gap:12px;width:min(300px,100%);display:flex}.home-row .page-btn.ui-btn--wide{flex:1;width:auto;height:52px}.home-row .page-btn-label{font-size:16px}.city-list{flex-direction:column;align-items:center;gap:14px;width:100%;display:flex}.city-card.ui-card{flex-direction:row;align-items:center;gap:14px;min-height:120px;padding:18px 20px 18px 18px}.city-thumb{border-radius:10px;flex:none;width:92px;height:92px;position:relative;overflow:hidden;box-shadow:0 0 0 3px #e9dcc1,0 2px 4px #5032144d}.city-cover{object-fit:cover;width:100%;height:100%}.city-lock{object-fit:contain;filter:drop-shadow(0 2px 2px #00000059);width:40px;height:40px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.city-card.is-locked .city-cover{filter:grayscale()brightness(.75)blur(1.5px)}.city-body{flex-direction:column;gap:4px;min-width:0;display:flex}.city-title{letter-spacing:.08em;color:var(--ink-brown);margin:0;font-size:20px;font-weight:800}.city-sub{color:#7a6a52;margin:0;font-size:13px;line-height:1.4}.city-progress{color:#d9822b;margin:2px 0 0;font-size:14px;font-weight:800}.city-need{color:#8d7b62;margin:2px 0 0;font-size:13px;font-weight:800}.city-card.is-locked .city-title{color:#8d7b62}.city-card:not(.is-locked):active{filter:brightness(.96);transform:translateY(2px)}.city-card.is-shake{animation:.38s ease-out shake}@keyframes shake{20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(2px)}}.daily-card.ui-card{gap:6px;padding:22px 24px}.daily-date{letter-spacing:.08em;color:#8d7b62;margin:0;font-size:14px;font-weight:800}.daily-pic{aspect-ratio:1;border-radius:10px;width:min(168px,50vw);margin:4px 0 2px;overflow:hidden;box-shadow:0 0 0 3px #e9dcc1,0 3px 6px #5032144d}.daily-img{object-fit:cover;width:100%;height:100%}.daily-title{letter-spacing:.08em;color:var(--ink-brown);margin:4px 0 0;font-size:20px;font-weight:800}.daily-theme{color:#8d7b62;margin:0;font-size:13px}.daily-status{color:#8d7b62;margin:4px 0 2px;font-size:15px}.daily-status.is-done{color:var(--ink-brown)}.daily-status b{color:#d9822b;font-variant-numeric:tabular-nums;font-size:17px}.daily-card .page-btn.ui-btn--wide{width:200px;height:54px}.daily-cal.ui-card{gap:10px;padding:18px 20px 20px}.daily-streak{color:var(--ink-brown);margin:0;font-size:15px;font-weight:800}.cal-grid{grid-template-columns:repeat(7,34px);gap:5px;display:grid}.cal-head{text-align:center;color:#8d7b62;font-size:12px;font-weight:700}.cal-cell{color:#8d7b62;font-variant-numeric:tabular-nums;background:#efe4cc;border-radius:8px;place-items:center;height:30px;font-size:13px;font-weight:700;display:grid}.cal-cell.is-done{color:var(--label);text-shadow:0 1px 0 var(--label-shadow);background:#f2a93b;box-shadow:0 2px #c97e1f}.cal-cell.is-today{outline:2px dashed var(--ink-brown);outline-offset:1px}.cal-cell.is-future{opacity:.4}.album-tabs{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.album-tab.ui-chip{letter-spacing:.06em;width:auto;min-width:96px;height:44px;padding:0 14px 3px;font-size:15px}.album-stats{color:var(--ink-brown);margin:0;font-size:15px}.album-stats b{color:#d9822b;font-variant-numeric:tabular-nums;font-size:17px}.album-grid{grid-template-columns:1fr 1fr;gap:8px;width:min(380px,100%);display:grid}.album-cell{text-align:left;min-width:0;min-height:84px;font:inherit;color:inherit;background:0 0;border-style:solid;border-width:0;border-image:url(/ui/card.png) 48 fill/16px round;align-items:center;gap:8px;padding:10px;display:flex}.album-cell:disabled{cursor:default}.album-cell.is-completed:active{filter:brightness(.96);transform:translateY(2px)}.album-thumb{background:#efe4cc;border-radius:8px;flex:none;place-items:center;width:60px;height:60px;display:grid;position:relative;overflow:hidden}.album-img{object-fit:cover;width:100%;height:100%}.album-sil{object-fit:cover;filter:grayscale()blur(1.2px)brightness(.62)contrast(1.25);opacity:.85;width:100%;height:100%;position:absolute;inset:0;transform:scale(1.04)}.album-lock{object-fit:contain;opacity:.75;width:30px;height:30px}.album-text{flex-direction:column;gap:2px;min-width:0;display:flex}.album-title{color:var(--ink-brown);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:800;overflow:hidden}.album-cat{color:#8d7b62;font-size:12px;font-weight:700}.album-cat.is-found{color:#d9822b}.album-teaser{color:#7a6a52;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:12px;font-style:italic;line-height:1.35;display:-webkit-box;overflow:hidden}.album-cell.is-locked .album-title{color:#a8987e}.settings-card.ui-card,.stats-card.ui-card{align-items:stretch;gap:4px;padding:18px 22px}.set-row{justify-content:space-between;align-items:center;gap:12px;min-height:56px;display:flex}.set-row+.set-row{border-top:2px dashed #8d7b6259}.set-label{flex-direction:column;gap:2px;min-width:0;display:flex}.set-label b{color:var(--ink-brown);font-size:16px}.set-note{color:#8d7b62;font-size:12px}.set-toggle.ui-chip{flex:none;width:72px;height:44px}.set-toggle:not(.is-on){color:#8d7b62}.set-reset.ui-btn--wide{flex:none;min-width:80px;height:44px}.stats-title{letter-spacing:.1em;color:var(--ink-brown);text-align:center;margin:0 0 4px;font-size:17px;font-weight:800}.stats-list{grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:14px;display:grid}.stats-list dt{color:#8d7b62}.stats-list dd{text-align:right;color:var(--ink-brown);font-variant-numeric:tabular-nums;margin:0;font-weight:800}.stats-best{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:10px;font-size:14px}.stats-best th{color:#8d7b62;text-align:center;padding:2px 0 4px;font-size:12px;font-weight:700}.stats-best td{text-align:center;color:var(--ink-brown);border-top:1px dashed #8d7b6259;padding:4px 0;font-weight:700}.set-version{color:#a8987e;margin:0;font-size:12px}.view-story{left:calc(var(--safe-left) + 14px);right:calc(var(--safe-right) + 14px);top:calc(var(--safe-top) + 98px);text-align:center;max-height:50px;color:var(--ink-brown);-webkit-line-clamp:3;pointer-events:none;-webkit-box-orient:vertical;margin:0;font-size:13px;font-weight:700;line-height:1.3;animation:.4s .3s both fade-in;display:-webkit-box;position:absolute;overflow:hidden}.view-story[hidden],#app:not([data-page=viewPopup]) .view-story{display:none}.stars{vertical-align:middle;align-items:center;gap:1px;line-height:0;display:inline-flex}.stars i{width:18px;height:18px;display:inline-block}.stars svg{width:100%;height:100%;overflow:visible}.stars path{fill:#e8dcc3;stroke:#c9b58f;stroke-width:1.6px}.stars i.is-on path{fill:#f4b73f;stroke:#9a5d1c;stroke-width:1.6px}.result-stars i{width:21px;height:21px;animation:.42s cubic-bezier(.34,1.56,.64,1) both star-in;animation-delay:calc(.26s + var(--i) * .15s)}.result-stars i.is-on svg{animation:.9s ease-out both star-glow;animation-delay:calc(.56s + var(--i) * .15s)}.result-stars[hidden]{display:none}@keyframes star-in{0%{opacity:0;transform:scale(.2)rotate(-40deg)}70%{opacity:1;transform:scale(1.3)rotate(6deg)}to{transform:scale(1)rotate(0)}}@keyframes star-glow{0%{filter:drop-shadow(0 0 #ffc85000)}30%{filter:drop-shadow(0 0 5px #ffc850f2)}to{filter:drop-shadow(0 0 #ffc85000)}}.card-stars{margin-right:6px}.card-stars i{width:19px;height:19px}.album-stars-row i{width:14px;height:14px}.daily-stars{margin-left:8px}.card-mod{letter-spacing:.06em;color:#a14f1c;white-space:nowrap;vertical-align:middle;background:#fff6e2;border-radius:999px;align-items:center;gap:3px;height:24px;padding:0 8px 0 5px;font-size:13px;font-weight:800;display:inline-flex;box-shadow:inset 0 0 0 1.5px #c99a5b,0 1px #5a3c1440}.daily-date .card-mod{letter-spacing:.04em;margin-left:8px}.card-mod-icon{background:50%/contain no-repeat;width:16px;height:16px}.card-mod.is-rotate .card-mod-icon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.4 9.6A5 5 0 1 0 5 4.1' fill='none' stroke='%23c2571f' stroke-width='2.2' stroke-linecap='round'/%3E%3Cpath d='M2.6 1.9l3.6 1.3-2.4 3z' fill='%23c2571f'/%3E%3C/svg%3E")}.card-mod.is-flip .card-mod-icon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='5.5' y='1.8' width='8.6' height='8.6' rx='1.4' fill='%23d6c19a' stroke='%239a7a4a' stroke-width='1.3'/%3E%3Crect x='1.9' y='5.6' width='8.6' height='8.6' rx='1.4' fill='%23fff8ea' stroke='%23a14f1c' stroke-width='1.3'/%3E%3C/svg%3E")}.onboard[data-stage=intro]{pointer-events:auto;overflow:hidden}.onboard[data-stage=intro]:has(.intro-ring[hidden]){background:#1e140880}.onboard-intro{position:absolute;inset:0}.onboard-intro[hidden],.intro-ring[hidden]{display:none}.intro-ring{pointer-events:none;border-radius:8px;animation:1.1s ease-in-out infinite intro-pulse;position:absolute;box-shadow:0 0 0 3px #ffd66b,0 0 14px 5px #ffc850cc,0 0 0 9999px #1e140880}@keyframes intro-pulse{50%{box-shadow:0 0 0 5px #ffd66b,0 0 22px 9px #ffc850e6,0 0 0 9999px #1e140880}}.intro-card{left:50%;top:calc(var(--safe-top) + 100px);text-align:center;gap:2px;width:min(360px,100% - 24px);padding:12px 18px 10px;animation:.22s both fade-in;position:absolute;transform:translate(-50%)}.intro-card.is-bottom{top:auto;bottom:calc(var(--safe-bottom) + 18px)}.intro-title{letter-spacing:.14em;color:#a14f1c;margin:0;font-size:12px;font-weight:800}.intro-text{color:var(--ink-brown);margin:0;font-size:17px;font-weight:800;line-height:1.4}.intro-note{color:#7a6a52;margin:2px 0 0;font-size:12.5px;line-height:1.45}.intro-dismiss{color:#a8987e;letter-spacing:.08em;margin:4px 0 0;font-size:11px;font-weight:700}.city-thumb.is-portrait{width:64px;height:96px}.daily-pic.is-portrait{aspect-ratio:2/3;width:min(128px,40vw)}.album-grid.is-portrait .album-thumb{width:48px;height:72px}.album-chapter{letter-spacing:.2em;color:#8d6fb0;text-align:center;grid-column:1/-1;margin:10px 0 0;font-size:15px;font-weight:800}.album-chapter:first-child{margin-top:0}.album-chapter:before,.album-chapter:after{content:"✦";color:#c8a6e0;margin:0 8px;font-size:11px}.card-chapter{letter-spacing:.24em;color:#8d6fb0;text-align:center;margin:2px 44px -6px;font-size:13px;font-weight:800}.map-teaser.map-chapter{white-space:nowrap;letter-spacing:.16em;color:#fff7e6;background:#3a2e78b8;border:1.5px solid #f6d696d9;border-radius:15px;max-width:none;font-weight:800;box-shadow:0 2px 6px #140a3c59}.album-tabs{flex-wrap:nowrap;gap:6px}.album-tab.ui-chip{letter-spacing:.02em;white-space:nowrap;flex:0 auto;min-width:0;padding:0 10px 3px;font-size:14px}:root{--night:#23265c;--night-deep:#171a42;--gold:#ecc66e;--gold-hi:#fff0c2;--gold-dim:#ecc66e52}.home-hero{width:min(270px,70vw,100dvh - 570px)}.home-tarot{width:min(300px,100%);height:76px;color:var(--gold-hi);text-align:left;font:inherit;background:radial-gradient(circle at 78% 22%, #fff0c2e6 0 1px, transparent 1.6px), radial-gradient(circle at 62% 74%, #fff0c2b3 0 1px, transparent 1.6px), radial-gradient(circle at 92% 70%, #fff0c2cc 0 1px, transparent 1.6px), radial-gradient(circle at 48% 18%, #fff0c299 0 .8px, transparent 1.4px), radial-gradient(ellipse at 30% 0%, #3d3a8a 0%, transparent 70%), linear-gradient(160deg, #2c2f72 0%, var(--night-deep) 100%);box-shadow:inset 0 0 0 1.5px var(--gold), inset 0 0 0 4px #171a42e6, inset 0 0 0 5px #ecc66e73, 0 4px 0 #11132f, 0 6px 10px #14103c4d;border:0;border-radius:16px;align-items:center;gap:12px;padding:0 14px 0 12px;display:flex;position:relative;overflow:hidden}.home-tarot:active{box-shadow:inset 0 0 0 1.5px var(--gold), inset 0 0 0 4px #171a42e6, inset 0 0 0 5px #ecc66e73, 0 2px 0 #11132f;transform:translateY(2px)}.home-tarot-card{width:38px;height:57px;box-shadow:0 0 0 1.5px var(--gold), 0 3px 6px #0006;border-radius:4px;flex:none;overflow:hidden;transform:rotate(-6deg)}.home-tarot-img{object-fit:cover;width:100%;height:100%}.home-tarot-text{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.home-tarot-title{letter-spacing:.22em;color:var(--gold-hi);text-shadow:0 0 10px #ecc66e8c;font-size:19px;font-weight:800}.home-tarot-sub{color:#fff0c2d1;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.home-tarot-moon{width:34px;height:34px;color:var(--gold);filter:drop-shadow(0 0 6px #ecc66e99);flex:none}.home-tarot-glyph{width:100%;height:100%}.result-rune b{text-align:center;min-width:1.1em;transition:color .2s;display:inline-block}.result-rune.is-found b{color:#c9962e}.result-rune[hidden]{display:none}.result-rune.is-pop b{text-shadow:0 0 8px #f6c25be6;animation:.52s cubic-bezier(.34,1.56,.64,1) rune-pop}@keyframes rune-pop{0%{transform:scale(.4)}60%{transform:scale(1.5)}to{transform:scale(1)}}.ui-result.is-view .result-rune:not([hidden]){display:inline-flex}.ui-result.is-view.has-rune{width:min(340px,100% - 16px)}.ui-result.has-rune:not(.is-view):not(.is-daily){height:76px;padding-bottom:4px}.ui-result.has-rune:not(.is-view):not(.is-daily) .result-stats{grid-template-columns:repeat(3,auto);justify-content:space-evenly;align-items:center;gap:3px 10px;display:grid}.ui-result.has-rune:not(.is-view):not(.is-daily) .result-cat{grid-area:2/1;justify-self:center}.ui-result.has-rune:not(.is-view):not(.is-daily) .result-rune{grid-area:2/2/auto/4;justify-self:center}.rune-fly{z-index:7;pointer-events:none;color:#c98a1e;filter:drop-shadow(0 0 4px #ffecaa)drop-shadow(0 0 10px #f6c25be6);background:radial-gradient(circle,#ffe296bf 0%,#f6c25b59 45%,#0000 70%);border-radius:50%;width:64px;height:64px;position:absolute;top:0;left:0}.rune-fly-icon{width:100%;height:100%;padding:10px}.map-teaser.map-chapter.is-locked{white-space:pre-line;letter-spacing:.1em;color:#fff7e6c7;background:#1e1c46d6;border-color:#f6d6968c;padding:5px 14px 6px;line-height:1.45}.map-teaser.map-chapter.is-locked:first-line{color:#fff7e6}.map-dials{pointer-events:none;position:absolute;inset:0;overflow:hidden}#app:not([data-page=map]) .map-dials{display:none}.map-dial{pointer-events:auto;width:52px;height:52px;color:var(--gold-hi);box-shadow:0 0 0 1.5px var(--gold), 0 0 16px 4px #f6c25b8c;will-change:transform;background:radial-gradient(circle,#33357a 0%,#1b1d4a 70%);border:0;border-radius:50%;padding:5px;animation:1.8s ease-in-out infinite dial-glow;position:absolute;top:0;left:0}.map-dial-icon{width:100%;height:100%;animation:12s linear infinite dial-turn}.map-dial.is-solved{box-shadow:0 0 0 1.5px var(--gold), 0 0 8px 1px #f6c25b59;color:var(--gold);animation:none}.map-dial.is-solved .map-dial-icon{animation:none}@keyframes dial-glow{50%{box-shadow:0 0 0 2px var(--gold-hi), 0 0 26px 9px #f6c25bbf}}@keyframes dial-turn{to{transform:rotate(360deg)}}.pages[data-view=dial]{background:radial-gradient(circle at 15% 22%, #fff0c2b3 0 1px, transparent 1.6px), radial-gradient(circle at 82% 30%, #fff0c299 0 1px, transparent 1.6px), radial-gradient(circle at 70% 88%, #fff0c280 0 1px, transparent 1.6px), radial-gradient(circle at 30% 62%, #fff0c273 0 .8px, transparent 1.4px), radial-gradient(ellipse at 50% 40%, #2e3178 0%, var(--night-deep) 75%);padding-top:calc(var(--safe-top) + 104px);padding-bottom:calc(var(--safe-bottom) + 12px)}.page--dial{gap:0}.dial-page{width:min(380px,100%);color:var(--gold-hi);flex-direction:column;align-items:center;gap:10px;display:flex;position:relative}.dial-poem{width:100%;box-shadow:inset 0 0 0 1px var(--gold-dim);text-align:center;background:#1012349e;border-radius:14px;padding:10px 16px 11px}.dial-chapter{letter-spacing:.24em;color:var(--gold);margin:0 0 4px;font-size:12px;font-weight:800}.dial-chapter:before,.dial-chapter:after{content:"✦";color:#ecc66eb3;margin:0 7px;font-size:9px}.dial-lines{flex-direction:column;gap:1px;display:flex}.dial-line{color:#f6ecd4;letter-spacing:.02em;margin:0;font-size:13.5px;font-weight:600;line-height:1.6}.dial-line:first-child{color:#f6ecd4d1}.dial-wheel{aspect-ratio:1;flex:none;width:min(258px,66vw);margin:2px 0 0;position:relative}.dial-disk{box-shadow:0 0 0 2px var(--gold), 0 0 0 6px #15173de6, 0 0 0 7px var(--gold-dim), 0 0 28px 6px #786edc40;background:radial-gradient(circle,#2c2f74 0%,#1d1f50 62%,#15173d 100%);border-radius:50%;position:absolute;inset:0}.dial-ring{pointer-events:none;border-radius:50%;position:absolute}.dial-ring--outer{border:1px dashed #ecc66e73;inset:7%}.dial-ring--inner{border:1px solid #ecc66e80;inset:30%}.dial-spoke{transform-origin:0;background:linear-gradient(90deg,#ecc66e8c,#ecc66e1a);width:34%;height:1px;position:absolute;top:50%;left:50%}.dial-hub{width:26%;height:26%;color:var(--gold);box-shadow:0 0 0 1.5px var(--gold), 0 0 12px #ecc66e66;background:radial-gradient(circle,#3a3c88,#222459);border-radius:50%;padding:4%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.dial-hub-icon{width:100%;height:100%}.dial-slot{aspect-ratio:1;width:24%;color:var(--gold-hi);background:radial-gradient(circle,#121438f2,#24265cf2);border:0;border-radius:50%;padding:0;transition:box-shadow .16s,transform .16s;position:absolute;transform:translate(-50%,-50%);box-shadow:inset 0 0 0 1.5px #ecc66e8c,0 0 0 3px #15173de6}.dial-slot-num{min-width:20px;height:18px;color:var(--night-deep);background:var(--gold);border-radius:9px;place-items:center;padding:0 4px;font-size:11px;font-weight:800;display:grid;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.dial-slot-icon{width:100%;height:100%;padding:21%;display:block}.dial-slot.is-filled{box-shadow:inset 0 0 0 2px var(--gold), 0 0 0 3px #15173de6, 0 0 14px 2px #f6c25b73}.dial-slot.is-selected,.dial-slot.is-over{box-shadow:inset 0 0 0 2px var(--gold-hi), 0 0 0 3px #15173de6, 0 0 18px 5px #fff0c299;transform:translate(-50%,-50%)scale(1.08)}.dial-slot.is-hint{box-shadow:inset 0 0 0 2px #9fd3ff,0 0 0 3px #15173de6,0 0 14px 3px #9fd3ff80}.dial-slot.is-hint .dial-slot-num{background:#9fd3ff}.dial-slot.is-ghost .dial-slot-icon{opacity:.35}.dial-slot.is-pop .dial-slot-icon{animation:.38s cubic-bezier(.34,1.56,.64,1) rune-pop}.dial-wheel.is-shake{animation:.52s ease-out dial-shake}@keyframes dial-shake{15%{transform:rotate(-5deg)}35%{transform:rotate(4deg)}55%{transform:rotate(-2.5deg)}75%{transform:rotate(1.2deg)}}.dial-wheel.is-solved{animation:1.7s cubic-bezier(.45,0,.2,1) both dial-spin}.dial-wheel.is-done{animation:none}.dial-wheel.is-solved .dial-disk{box-shadow:0 0 0 2px var(--gold-hi), 0 0 0 6px #15173de6, 0 0 0 7px var(--gold), 0 0 40px 14px #f6c25b99;transition:box-shadow .9s}.dial-wheel.is-solved .dial-slot{box-shadow:inset 0 0 0 2px var(--gold-hi), 0 0 18px 5px #f6c25bb3}.dial-wheel.is-solved .dial-hub{color:var(--gold-hi);box-shadow:0 0 0 1.5px var(--gold-hi), 0 0 22px 6px #f6c25bcc}@keyframes dial-spin{0%{transform:rotate(0)}70%{transform:rotate(380deg)}to{transform:rotate(360deg)}}.dial-status{color:#fff0c2d9;text-align:center;min-height:20px;margin:4px 0 0;font-size:13px;font-weight:700}.dial-tray{grid-template-columns:repeat(4,1fr);gap:6px;width:100%;display:grid}.dial-rune{min-width:0;height:66px;color:var(--gold);font:inherit;box-shadow:inset 0 0 0 1px var(--gold-dim);touch-action:none;background:#101234b3;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:4px 2px 5px;display:flex;position:relative}.dial-rune-icon{flex:none;width:34px;height:34px}.dial-rune-name{color:#f6ecd4;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;font-weight:700;overflow:hidden}.dial-rune:not(.is-missing):active{transform:translateY(1px)}.dial-rune.is-used{opacity:.32}.dial-rune.is-dragging{opacity:.5}.dial-rune.is-missing{color:#ecc66e47;background:#0c0d268c;box-shadow:inset 0 0 0 1px #ecc66e29}.dial-rune.is-missing .dial-rune-icon{filter:blur(1.2px);width:26px;height:26px}.dial-rune.is-missing .dial-rune-name{color:#f6ecd49e;font-size:10.5px}.dial-rune-lock{place-items:center;display:grid;position:relative}.dial-rune-lock:after{content:"";background:#7d7aa8;border-radius:2px;width:14px;height:11px;position:absolute;bottom:-2px;right:-8px;box-shadow:0 -5px 0 -2px #0000}.dial-rune-lock:before{content:"";border:2px solid #7d7aa8;border-bottom:0;border-radius:6px 6px 0 0;width:8px;height:8px;position:absolute;bottom:6px;right:-5px}.dial-rune-miss{color:#9fd3ffd9;white-space:nowrap;letter-spacing:-.02em;font-size:9.5px;font-weight:700}.dial-ghost{z-index:9;pointer-events:none;width:60px;height:60px;color:var(--gold-hi);box-shadow:0 0 0 2px var(--gold), 0 6px 14px #00000073;background:radial-gradient(circle,#3c3e8cf2,#1e2050f2);border-radius:50%;position:fixed;top:0;left:0}.dial-actions{justify-content:center;align-items:center;gap:10px;width:100%;margin-top:2px;display:flex}.dial-actions .ui-btn--wide{letter-spacing:.14em;width:190px;height:52px;padding:0 16px 7px;font-size:17px}.dial-actions .ui-btn:disabled{filter:grayscale(.55)brightness(.8)opacity(.75);cursor:default}.dial-hint.ui-btn{width:96px;height:52px;padding:0 10px 7px;font-size:16px;animation:.3s cubic-bezier(.34,1.4,.64,1) both card-in}.dial-hint[hidden]{display:none}.dial-book{z-index:3;background:#0a0b2099;justify-content:center;align-items:center;padding:0 18px;animation:.4s ease-out both fade-in;display:flex;position:fixed;inset:0}.dial-book.is-fresh{animation:.6s ease-out both fade-in}.dial-book-card{text-align:center;color:#4a3a2a;transform-origin:50%;background:radial-gradient(at 50% 0,#fffaf0 0%,#f4e8cf 70%,#ead9b5 100%);border-radius:6px;width:min(360px,100%);padding:22px 24px 18px;animation:.7s cubic-bezier(.2,.9,.3,1.1) both book-open;box-shadow:inset 0 0 0 1px #aa823c99,inset 0 0 0 6px #f6ecd6,inset 0 0 0 7px #be96468c,0 0 40px 10px #f6c25b59,0 10px 24px #00000073}.dial-book.is-fresh .dial-book-card{animation-delay:.12s}@keyframes book-open{0%{opacity:0;transform:perspective(700px)rotateY(-70deg)scale(.9)}}.dial-book-name{letter-spacing:.3em;color:#9a7434;margin:0;font-size:12px;font-weight:800}.dial-book-title{letter-spacing:.12em;color:#5a3f22;margin:6px 0 10px;font-size:18px;font-weight:800}.dial-book-title:after{content:"☾ ✦ ☽";letter-spacing:.4em;color:#c09a52;margin-top:6px;font-size:11px;font-weight:400;display:block}.dial-book-text{text-align:justify;color:#4a3a2a;margin:0 0 16px;font-size:15px;font-weight:600;line-height:1.85}.dial-book-ok.ui-btn--wide{letter-spacing:.12em;width:180px;height:50px;margin:0 auto;padding:0 16px 7px;font-size:16px}.album-runes-row,.album-book{flex-direction:column;align-items:center;gap:8px;width:min(380px,100%);display:flex}.rune-strip{background:linear-gradient(160deg, #2c2f72, var(--night-deep));width:100%;box-shadow:inset 0 0 0 1px var(--gold-dim);border-radius:12px;grid-template-columns:repeat(11,1fr);gap:4px;padding:8px;display:grid}.rune-chip{aspect-ratio:1;color:#ecc66e38;border-radius:50%;place-items:center;display:grid}.rune-chip.is-found{color:var(--gold-hi);filter:drop-shadow(0 0 3px #f6c25bb3)}.rune-chip-icon{width:100%;height:100%}.book-page{gap:6px;width:100%;padding:14px 18px;position:relative;overflow:hidden}.book-page-title{letter-spacing:.1em;color:#6b4a8a;text-align:center;margin:0;font-size:15px;font-weight:800}.book-page-text{color:var(--ink-brown);text-align:justify;margin:0;font-size:13.5px;line-height:1.75}.book-page.is-locked .book-page-text{filter:blur(4px);opacity:.6}.book-page.is-locked .book-page-title{color:#a8987e}.book-page-need{white-space:nowrap;letter-spacing:.08em;color:var(--gold-hi);box-shadow:0 0 0 1px var(--gold);background:#23265ce0;border-radius:999px;padding:6px 14px 7px;font-size:13px;font-weight:800;position:absolute;top:58%;left:50%;transform:translate(-50%,-50%)}.map-dial-cap{white-space:nowrap;letter-spacing:.2em;color:var(--gold-hi);box-shadow:0 0 0 1px var(--gold-dim);background:#171a42d9;border-radius:8px;padding:1px 8px 2px;font-size:11px;font-weight:800;position:absolute;top:calc(100% + 5px);left:50%;transform:translate(-50%)}.dial-rune.is-nudge{animation:.42s ease-out dial-shake}
