@font-face{font-family:Fredoka SemiBold;src:url(./fredoka-semibold-D85FD4u1.woff2)format("woff2");font-display:swap}:root{--paper:#f7ecd2;--paper-2:#ead2a0;--paper-bright:#fdf6e4;--paper-sunk:#eadcba;--wood:#8a5a33;--wood-2:#6b4423;--wood-dark:#503920;--gold:#ffc53d;--gold-line:#d9b370e6;--accent:#b8860b;--ink:#5b4028;--ink-soft:#5b4028b8;--cream:#fff6e3;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0 0 0 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");--frame-w:2px;--frame:var(--frame-w) solid var(--wood);--frame-inner:inset 0 0 0 2px var(--gold-line);--lift:inset 0 1px 0 #fff9, 0 3px 0 #6b44234d, 0 8px 14px #6b442324;--sunk:inset 0 2px 6px #6b442338;--r-card:14px;--r-btn:12px;--r-pill:999px;--pad:14px;--gap:10px;--bar-surface:url(./leather-texture-Bc1XmzrB.webp)}#ui-root :focus-visible{outline:3px solid var(--gold);outline-offset:2px}.ui-card{border:var(--frame);border-radius:var(--r-card);box-shadow:var(--frame-inner);background:var(--grain), var(--paper);padding:var(--pad);text-align:left}.ui-row{border:var(--frame);border-radius:var(--r-card);box-shadow:var(--frame-inner);background:var(--grain), var(--paper-bright);text-align:left;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:15px;display:flex}.ui-row__label{align-items:center;gap:10px;min-width:0;display:flex}.ui-row__icon{object-fit:contain;flex:none;width:26px;height:26px}.ui-row__value{color:var(--accent);white-space:nowrap;flex:none}.ui-heading{letter-spacing:2px;text-transform:uppercase;color:var(--wood-2);align-items:center;gap:12px;margin:0 0 12px;font-size:13px;font-weight:400;display:flex}.ui-heading:before,.ui-heading:after{content:"";background:linear-gradient(90deg, transparent, var(--gold-line));border-radius:1px;flex:1 1 0;height:2px}.ui-heading:after{background:linear-gradient(90deg, var(--gold-line), transparent)}.ui-btn{border:var(--frame);border-radius:var(--r-btn);width:100%;min-height:52px;box-shadow:var(--frame-inner), var(--lift);background:var(--grain), linear-gradient(#ffffff8c, #fff0 45%), linear-gradient(var(--paper), var(--paper-2));color:var(--ink);font:inherit;letter-spacing:1px;text-transform:uppercase;cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:12px 18px;font-size:14px;transition:transform 90ms,box-shadow 90ms;display:inline-flex}.ui-btn--gold{background:var(--grain), linear-gradient(#ffffff80, #fff0 42%), linear-gradient(#ffd76a, #e9a83a);color:#4a3218;border-color:#a06b2a}.ui-btn:active{box-shadow:var(--frame-inner), var(--sunk);transform:translateY(3px)}.ui-btn:disabled{opacity:.55;box-shadow:var(--frame-inner);cursor:default}.ui-toggle{border:var(--frame);border-radius:var(--r-pill);min-width:64px;box-shadow:var(--frame-inner);background:linear-gradient(var(--paper), var(--paper-2));color:var(--ink-soft);font:inherit;letter-spacing:.5px;text-transform:uppercase;cursor:pointer;padding:7px 14px;font-size:13px}.ui-toggle[aria-pressed=true]{color:#4a3218;background:linear-gradient(#ffd76a,#e9a83a)}.ui-toggle:active{transform:translateY(1px)}.ui-pill{border:var(--frame);border-radius:var(--r-pill);box-shadow:var(--frame-inner);background:linear-gradient(var(--paper), var(--paper-2));color:var(--ink);align-items:center;gap:6px;padding:5px 12px;font-size:14px;display:inline-flex}.ui-bar{background:linear-gradient(#fff6e31a, #0000 40%), linear-gradient(#0000 55%, #1e120647), var(--bar-surface) repeat center / 300px, linear-gradient(var(--wood-2), var(--wood-dark));color:var(--cream)}.ui-bar--top{border-bottom:3px solid var(--gold)}.ui-bar--bottom{border-top:3px solid var(--gold)}.page{top:0;left:0;right:0;bottom:var(--tabbar-h);z-index:20;pointer-events:auto;background:radial-gradient(120% 60% at 50% 0%, #ffffff73, transparent 70%), var(--paper);color:var(--ink);flex-direction:column;animation:.2s page-in;display:flex;position:fixed}@keyframes page-in{0%{opacity:0;transform:translateY(10px)}}@media (prefers-reduced-motion:reduce){.page,.codex__sheet{animation:none}}.page__header{min-height:60px;padding:calc(8px + env(safe-area-inset-top)) 62px 8px;flex:none;justify-content:center;align-items:center;display:flex;position:relative}.page__title{letter-spacing:.6px;text-shadow:0 2px #00000040;margin:0;font-size:20px;font-weight:400}.page__back{top:env(safe-area-inset-top);width:62px;color:var(--cream);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:30px;line-height:1;position:absolute;bottom:0;left:0}.page__back:active{transform:scale(.9)}.page__close{top:calc(env(safe-area-inset-top) + 50%);cursor:pointer;background:50%/contain no-repeat;border:0;width:38px;height:38px;padding:0;position:absolute;right:12px;transform:translateY(-50%)}.page__close:active{transform:translateY(-50%)scale(.92)}.page__body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;padding:20px 18px calc(28px + env(safe-area-inset-bottom));text-align:center;flex:auto;overflow-y:auto}.page__footer{border-top:2px solid var(--gold-line);background:var(--grain), var(--paper-bright);text-align:center;flex-direction:column;flex:none;gap:6px;padding:10px 18px 14px;display:flex;box-shadow:0 -8px 16px #6b44231f}.page__section{gap:var(--gap);flex-direction:column;max-width:420px;margin:0 auto 22px;display:flex}.page__icon{filter:drop-shadow(0 4px 6px #6b442340);width:74px;height:74px;margin:2px auto 10px;display:block}.page__lead{max-width:30ch;color:var(--ink-soft);margin:0 auto 18px;font-size:15px;line-height:1.45}.page__note{max-width:34ch;color:var(--ink-soft);margin:0 auto;font-size:13px;line-height:1.5}.page__btn{max-width:var(--btn-max);margin:0 auto}.page__grid{gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(136px,1fr));max-width:420px;margin:0 auto;display:grid}.page__grid .ui-btn{letter-spacing:.5px;min-height:46px;padding:10px 8px;font-size:12px}.page__debug{border-top:2px dashed #a0522d66;max-width:420px;margin:26px auto 0;padding-top:16px}.page__readout{color:var(--ink-soft);white-space:pre-line;margin:14px 0 0;font-size:12px;line-height:1.6}#ui-root:has(.tabbar[data-gone=true]) .page{bottom:0}.pass__hero{filter:drop-shadow(0 6px 10px #3c261240);width:min(78%,340px);margin:0 auto 4px;display:block}.pass__headline{color:var(--wood-2);margin:0 0 16px;font-size:22px;font-weight:400}.pass__active{border:var(--frame);border-radius:var(--r-pill);width:fit-content;box-shadow:var(--frame-inner);color:#1f7a33;background:linear-gradient(#e8f5e0,#cde8c2);margin:4px auto 0;padding:10px 22px;font-size:15px}.codex__section{max-width:460px;margin:0 auto 26px}.codex__grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));display:grid}.codex__progress{border:1px solid var(--gold-line);border-radius:var(--r-pill);background:var(--paper-sunk);width:min(60%,240px);height:5px;margin:-8px auto 22px;overflow:hidden}.codex__progress b{background:linear-gradient(90deg, #e9a83a, var(--gold));height:100%;display:block}.codex__cell{border:var(--frame);border-radius:var(--r-card);background:var(--paper-sunk);box-shadow:var(--sunk);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:6px;padding:12px 6px 8px;display:flex;position:relative}.codex__cell--empty:before{content:"";pointer-events:none;border:1px dashed #8a5a3366;border-radius:9px;position:absolute;inset:5px}.codex__cell--owned{background:var(--grain), var(--paper-bright);box-shadow:var(--frame-inner), 0 3px 0 #6b442340}.codex__cell:active{transform:scale(.97)}.codex__art{object-fit:contain}.codex__cell--owned .codex__art{transform:rotate(var(--tilt,0deg));filter:drop-shadow(0 3px 3px #3c26124d)}.codex__art--hidden{opacity:.3;background:#6b5232;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.codex__name{color:#9a8668;overflow-wrap:anywhere;font-size:11px;line-height:1.25}.codex__sheet{z-index:2;background:#2415058c;justify-content:center;align-items:center;padding:20px;animation:.16s page-in;display:flex;position:absolute;inset:0}.codex__detail{text-align:center;width:min(92%,340px);box-shadow:var(--frame-inner), 0 12px 28px #140c0673;flex-direction:column;align-items:center;gap:10px;padding:24px 20px;display:flex}.codex__detail .codex__art{filter:drop-shadow(0 6px 8px #3c261259)}.codex__detail-name{margin:0;font-size:20px;font-weight:400}.codex__rarity{border-radius:var(--r-pill);color:#fff;letter-spacing:1px;text-transform:uppercase;text-shadow:0 1px #00000040;padding:5px 16px;font-size:12px;box-shadow:inset 0 1px #ffffff73}.codex__detail-where{color:var(--ink-soft);margin:2px 0 0;font-size:14px;line-height:1.45}.picker__grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));max-width:460px;margin:0 auto;display:grid}.picker__photo{border:2px solid var(--gold-line);object-fit:cover;border-radius:10px;width:84px;height:84px;display:block}.picker__note{color:var(--ink-soft);font-size:10px}.picker__room{width:100%;font:inherit;cursor:pointer}.picker__room:active{transform:scale(.99)}.picker__room-art{border:2px solid var(--gold-line);object-fit:cover;border-radius:8px;width:52px;height:52px}.empty{flex-direction:column;align-items:center;gap:6px;max-width:300px;margin:12vh auto 0;display:flex}.empty__art{object-fit:contain;filter:drop-shadow(0 5px 7px #3c261240);width:128px;height:128px;margin-bottom:6px}.empty__title{color:var(--wood-2);margin:0;font-size:19px;font-weight:400}.empty__hint{color:var(--ink-soft);margin:0 0 14px;font-size:14px;line-height:1.5}.currency__balance{margin:0 auto 14px;font-size:17px}.promo__card{width:100%;font:inherit;text-align:left;cursor:pointer;gap:12px;padding:10px;display:flex}.promo__card:active{transform:scale(.99)}.promo__hero{border:2px solid var(--gold-line);object-fit:cover;border-radius:10px;flex:none;width:84px;height:84px}.promo__body{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.promo__title{align-items:center;gap:8px;font-size:16px;display:flex}.promo__tag{border-radius:var(--r-pill);color:var(--ink-soft);letter-spacing:.6px;text-transform:uppercase;background:#6b44231f;padding:2px 8px;font-size:10px}.promo__author{color:var(--ink-soft);font-size:12px}.promo__tagline{color:var(--ink-soft);margin-top:2px;font-size:13px;line-height:1.35}.promo__play{color:var(--accent);letter-spacing:.5px;text-transform:uppercase;margin-top:6px;font-size:13px}.passport__goal{gap:10px}.passport__body{flex-direction:column;flex:auto;gap:3px;min-width:0;display:flex}.passport__title{font-size:15px;line-height:1.25}.passport__hint{color:var(--ink-soft);font-size:12px;line-height:1.35}.passport__bar{border:1px solid var(--gold-line);border-radius:var(--r-pill);background:var(--paper-sunk);height:14px;box-shadow:var(--sunk);margin-top:3px;display:block;position:relative;overflow:hidden}.passport__bar b{background:linear-gradient(90deg, #e9a83a, var(--gold));height:100%;transition:width .22s;display:block}.passport__bar i{letter-spacing:.5px;color:var(--ink);place-items:center;font-size:10px;font-style:normal;display:grid;position:absolute;inset:0}.passport__claim{letter-spacing:.5px;width:auto;min-width:84px;min-height:42px;margin:0;padding:8px 12px;font-size:13px}.passport__stamp{color:#6b442399;letter-spacing:1.5px;text-transform:uppercase;border:2px solid #6b442373;border-radius:8px;flex:none;padding:6px 12px;font-size:11px;transform:rotate(-6deg)}.passport__goal[data-locked=true]{opacity:.7}.passport__goal[data-claimed=true]{background:var(--grain), var(--paper)}.passport__note{letter-spacing:.4px;text-transform:uppercase;color:var(--ink-soft);margin:2px 0 0;font-size:11px}.charm__bar{gap:8px}.charm__slots{gap:var(--gap);justify-content:center;display:flex}.charm__slot{border:var(--frame);border-radius:var(--r-card);background:var(--paper-sunk);width:78px;height:78px;box-shadow:var(--sunk);cursor:pointer;place-items:center;padding:6px;display:grid}.charm__slot[data-filled=true]{background:var(--grain), var(--paper-bright);box-shadow:var(--frame-inner), 0 3px 0 #6b442340}.charm__slot:disabled{cursor:default}.charm__art{object-fit:contain;filter:drop-shadow(0 2px 3px #3c26124d);width:100%;height:100%}.charm__empty{color:#8a5a3373;font-size:26px;line-height:1}.codex__charm-effect{border-radius:var(--r-card);color:var(--accent);background:#ffc53d2e;margin:2px 0 0;padding:8px 12px;font-size:13px;line-height:1.35}#ui-root,#ui-root *,#ui-root :before,#ui-root :after{box-sizing:border-box}#ui-root{--tabbar-h:calc(74px + env(safe-area-inset-bottom));--btn-max:300px;z-index:10;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex:none;font-family:Fredoka SemiBold,system-ui,sans-serif}.tabbar{z-index:30;height:var(--tabbar-h);padding-bottom:env(safe-area-inset-bottom);pointer-events:auto;align-items:stretch;display:flex;position:relative;overflow:visible;box-shadow:0 -6px 18px #00000047}.tabbar[data-inert=true]{pointer-events:none;filter:brightness(.5);transition:filter .2s}.tabbar[data-inert=true] .tabbar__tab{opacity:.55}.tabbar[data-gone=true]{display:none}.tabbar__tab{color:#f0dcb4d9;font:inherit;letter-spacing:.4px;text-transform:uppercase;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;margin:0;padding:6px 0 4px;font-size:11px;transition:color .14s,opacity .2s;display:flex}.tabbar__icon{object-fit:contain;opacity:.6;width:30px;height:30px;transition:transform .16s,filter .16s,opacity .16s}.tabbar__tab[aria-selected=true]{color:var(--cream)}.tabbar__tab[aria-selected=true] .tabbar__icon{opacity:1;filter:drop-shadow(0 0 6px #ffc53db3);transform:translateY(-2px)scale(1.12)}.tabbar__tab:active .tabbar__icon{transform:scale(.94)}.tabbar__tab:after{content:"";background:0 0;border-radius:2px;width:26px;height:3px;transition:background .16s}.tabbar__tab[aria-selected=true]:after{background:var(--gold)}.tabbar__pass{color:var(--gold)}.tabbar__pass .tabbar__icon{opacity:.95}@media (prefers-reduced-motion:no-preference){.tabbar__pass[data-active=false]:not([aria-selected=true]) .tabbar__icon{animation:3.2s ease-in-out infinite pass-glow}}@keyframes pass-glow{0%,to{filter:drop-shadow(0 0 2px #ffc53d40)}50%{filter:drop-shadow(0 0 8px #ffc53dbf)}}.tabbar__pass[data-active=true]{color:#f0dcb4f2}.tabbar__pass[aria-selected=true]:after{background:var(--gold)}.tabbar__check{border-radius:var(--r-pill);width:16px;height:16px;box-shadow:0 0 0 2px var(--wood-dark);color:#fff;background:#4c9c5c;font-size:11px;line-height:16px;position:absolute;transform:translate(16px,-14px)}.tabbar__action{width:96px;color:var(--cream);font:inherit;letter-spacing:.4px;text-transform:uppercase;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:none;align-items:center;gap:3px;margin:0;padding:0;font-size:11px;display:flex;position:relative}.tabbar__disc{border-radius:var(--r-pill);place-items:center;width:64px;height:64px;margin-top:-22px;transition:transform .12s;display:grid;position:relative;box-shadow:0 4px 10px #140c0673}.tabbar__disc-icon{object-fit:contain;width:100%;height:100%}.tabbar__action[data-done=true] .tabbar__disc{background:radial-gradient(circle at 50% 32%, #fff6e32e, transparent 60%), linear-gradient(#6b4423, var(--wood-dark));border:3px solid #d9b37099}.tabbar__action[data-done=true] .tabbar__disc-icon{opacity:.9;width:34px;height:34px}@media (prefers-reduced-motion:no-preference){.tabbar__action[data-done=false] .tabbar__disc{animation:2.4s ease-in-out infinite action-breathe}}@keyframes action-breathe{50%{transform:scale(1.06)}}.tabbar__action:active .tabbar__disc{transform:scale(.94)}.tabbar__action[data-done=true] .tabbar__action-label{color:var(--gold)}.tabbar__action-label{white-space:nowrap}.tabbar__charm{border-radius:var(--r-pill);background:radial-gradient(circle, #fff3c4, var(--gold));color:#6b4423;place-items:center;width:22px;height:22px;font-size:12px;line-height:1;display:grid;position:absolute;top:-2px;right:-2px;box-shadow:0 0 8px #ffc53dcc}.tabbar__dot{border-radius:var(--r-pill);width:9px;height:9px;box-shadow:0 0 0 2px var(--wood-dark);background:#ff5c4d;position:absolute;transform:translate(16px,-14px)}
