:root{--bg: #2b2130;--rail: #3b2a40;--ink: #fff7ec;--ink-soft: #e2cfe0;--accent: #f2b5c4;--accent-ink: #4a2333;--panel: #fff8ef;--panel-ink: #3d2b3a;--panel-soft: #7a6474;--ok: #3f9a6b;--bad: #c2475a;--sal: env(safe-area-inset-left, 0px);--sar: env(safe-area-inset-right, 0px);--sab: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);overflow:hidden;font-family:ui-rounded,Nunito,Segoe UI,system-ui,sans-serif;-webkit-tap-highlight-color:transparent;touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer}#app{display:flex;height:100dvh;height:100svh;width:100vw}#rail{flex:0 0 auto;width:calc(56px + var(--sal));padding:6px 4px calc(6px + var(--sab)) calc(4px + var(--sal));background:var(--rail);display:flex;flex-direction:column;justify-content:center;gap:6px}.tab{width:48px;height:48px;border:0;border-radius:14px;background:transparent;color:var(--ink-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.tab .ico{font-size:18px;line-height:1}.tab .lbl{font-size:10px}.tab.active{background:var(--accent);color:var(--accent-ink)}.tab:focus-visible,.pill:focus-visible,.chip:focus-visible,.act:focus-visible{outline:2px solid #fff;outline-offset:2px}#main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}#topbar{flex:0 0 34px;display:flex;align-items:center;gap:10px;padding:0 8px;font-size:13px}#home-title{display:flex;align-items:baseline;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}#home-name{font-weight:700}.lvl{color:var(--ink-soft);font-size:12px}#resources{display:flex;gap:10px;margin-left:auto;white-space:nowrap}.res{color:var(--ink-soft)}.res b{color:var(--ink)}#top-actions{display:flex;gap:6px}.pill{height:30px;min-width:44px;padding:0 12px;border-radius:15px;border:1px solid #ffffff40;background:#ffffff14}.pill.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}.pill.icon{padding:0;width:44px}#stage-wrap{position:relative;flex:1 1 auto;min-height:0}#stage{position:absolute;top:0;right:0;bottom:0;left:0}#stage canvas{display:block}#tab-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);text-align:center;padding:16px}#tab-placeholder[hidden]{display:none}.ph-title{font-size:18px;font-weight:700;margin:0 0 6px}.ph-body{color:var(--ink-soft);margin:0;max-width:420px;font-size:14px}#toast{position:absolute;left:50%;bottom:10px;transform:translate(-50%);background:#000000b0;color:#fff;padding:6px 12px;border-radius:12px;font-size:13px;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap}#toast.show{opacity:1}#panel{flex:0 0 auto;width:calc(204px + var(--sar));padding:10px calc(10px + var(--sar)) calc(10px + var(--sab)) 10px;background:var(--panel);color:var(--panel-ink);overflow-y:auto;touch-action:pan-y}#panel[hidden]{display:none}#panel h2{font-size:15px;margin:0 0 2px}#panel .sub{font-size:12px;color:var(--panel-soft);margin:0 0 8px}#panel h3{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--panel-soft);margin:10px 0 4px}.tray{display:grid;grid-template-columns:1fr 1fr;gap:6px}.chip{min-height:44px;border-radius:12px;border:1px solid #3d2b3a22;background:#fff;text-align:left;padding:4px 8px;font-size:12px;line-height:1.2;color:var(--panel-ink);display:flex;flex-direction:column;justify-content:center}.chip .n{color:var(--panel-soft);font-size:11px}.chip.empty{opacity:.45}.tags{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 8px}.tag{font-size:11px;background:#f2b5c455;color:var(--accent-ink);border-radius:8px;padding:2px 6px}.status{font-size:12px;margin:6px 0 8px;font-weight:700}.status.ok{color:var(--ok)}.status.bad{color:var(--bad)}.acts{display:grid;grid-template-columns:1fr 1fr;gap:6px}.act{min-height:44px;border-radius:12px;border:1px solid #3d2b3a33;background:#fff;color:var(--panel-ink);font-weight:700;font-size:13px}.act.primary{background:#4a2333;color:#fff;border-color:#4a2333;grid-column:1 / -1}.act.wide{grid-column:1 / -1}.hint{font-size:12px;color:var(--panel-soft);margin:8px 0 0}#rotate{display:none}@media(orientation:portrait){#rotate{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:var(--bg);align-items:center;justify-content:center;text-align:center;padding:24px}#app{visibility:hidden}}.rotate-card p{color:var(--ink);font-size:16px;max-width:240px;margin:16px auto 0}.rotate-phone{width:44px;height:76px;margin:0 auto;border:3px solid var(--ink);border-radius:10px;animation:turn 2.4s ease-in-out infinite}@keyframes turn{0%,30%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}@media(prefers-reduced-motion:reduce){.rotate-phone{animation:none;transform:rotate(-90deg)}#toast{transition:none}}.tab{position:relative}.badge{position:absolute;top:4px;right:4px;width:10px;height:10px;border-radius:5px;background:#ffd27a;box-shadow:0 0 0 2px var(--rail)}.badge[hidden]{display:none}.hearts{display:inline-flex;align-items:center;gap:4px;color:var(--ink-soft);font-size:11px}.hearts-bar{width:46px;height:6px;border-radius:3px;background:#ffffff26;overflow:hidden;display:inline-block}#hearts-fill{display:block;height:100%;width:0;background:#f2b5c4;transition:width .4s}button.res{background:transparent;border:0;padding:4px 2px;min-height:30px;display:inline-flex;align-items:center;gap:3px;color:var(--ink-soft);font-size:13px}.res-ico img,.ico-img{width:16px;height:16px;object-fit:contain;vertical-align:-3px}#page{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg);overflow-y:auto;touch-action:pan-y;padding:8px 10px calc(10px + var(--sab))}#page[hidden]{display:none}.page-h{display:flex;align-items:center;gap:8px;margin:0 0 8px}.page-h h2{font-size:16px;margin:0}.page-h .grow{flex:1}.muted{color:var(--ink-soft);font-size:12px}.card{background:var(--panel);color:var(--panel-ink);border-radius:14px;padding:10px 12px;margin-bottom:8px}.card h3{margin:0 0 2px;font-size:14px;text-transform:none;letter-spacing:0;color:var(--panel-ink)}.card p{margin:0;font-size:12px;color:var(--panel-soft)}.row{display:flex;align-items:center;gap:10px}.row .grow{flex:1;min-width:0}.rewards{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.reward{font-size:11px;background:#f6e9d9;color:var(--panel-ink);border-radius:8px;padding:2px 6px;white-space:nowrap}.btn{min-height:40px;min-width:76px;padding:0 14px;border-radius:12px;border:1px solid #3d2b3a33;background:#fff;color:var(--panel-ink);font-weight:700;font-size:13px}.btn.primary{background:#4a2333;border-color:#4a2333;color:#fff}.btn.light{background:#ffffff1a;color:var(--ink);border-color:#ffffff40}.btn:disabled{opacity:.45}.task.claimed{opacity:.55}.task.locked p,.task.locked h3{color:#9b8a96}.req{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.req span{font-size:11px;border-radius:8px;padding:2px 6px;background:#f6e9d9}.req span.ok{background:#d8f0e2;color:#24613f}.req span.no{background:#fbe0e4;color:#8a2b3a}.filters{display:flex;gap:4px}.filter{min-height:32px;padding:0 10px;border-radius:16px;border:1px solid #ffffff40;background:transparent;color:var(--ink-soft);font-size:12px}.filter.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}.progress{height:8px;border-radius:4px;background:#fff2;overflow:hidden}.progress>span{display:block;height:100%;background:#ffd27a}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.ncard{border:0;border-radius:14px;padding:6px 6px 8px;background:var(--panel);color:var(--panel-ink);display:flex;flex-direction:column;align-items:center;gap:2px;min-height:44px}.ncard img{width:100%;aspect-ratio:1;object-fit:contain;border-radius:10px;background:#f3e4ec}.ncard.missing{background:#3b2a40;color:var(--ink-soft)}.ncard.missing img{background:#2b2130}.ncard .nm{font-size:12px;font-weight:700}.rar{font-size:10px;border-radius:8px;padding:1px 6px;font-weight:700}.rar.Common{background:#ecdccb;color:#6b4e3a}.rar.Rare{background:#d9d4f6;color:#3c3489}.rar.Epic{background:#f3d0e4;color:#72243e}.rar.Secret{background:#fbefc6;color:#633806}.cabinet{margin-top:8px;font-size:12px;color:var(--ink-soft)}.detail{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:12px}.detail .art{background:var(--panel);border-radius:16px;display:flex;align-items:center;justify-content:center;padding:8px;align-self:start}.detail .art img{width:100%;max-height:240px;object-fit:contain}.detail .info{min-width:0}.detail h2{margin:0;font-size:18px}.detail .tagline{margin:2px 0 6px;color:var(--ink-soft);font-size:13px}.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;font-size:12px;margin:6px 0}.kv dt{color:var(--ink-soft)}.kv dd{margin:0}.bond{display:inline-flex;gap:2px;color:#f2b5c4}.bond .off{color:#ffffff30}.story{font-size:12px;color:var(--ink-soft);line-height:1.45;margin:6px 0 8px}.actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.parcel-wrap{display:grid;grid-template-columns:minmax(110px,34%) 1fr;gap:12px;align-items:start}.parcel-art{background:var(--panel);border-radius:16px;aspect-ratio:1;display:flex;align-items:center;justify-content:center}.parcel-art img{width:90%;height:90%;object-fit:contain}.parcel-box{width:56%;aspect-ratio:1;border-radius:12px;background:#b98a5e;position:relative;box-shadow:inset 0 -8px #00000018}.parcel-box:before{content:"";position:absolute;left:44%;top:0;bottom:0;width:12%;background:#a99ad6}.parcel-box:after{content:"★";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff2b8;font-size:24px}.odds{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}.odds td{padding:3px 0;border-bottom:1px solid #3d2b3a14}.odds td:last-child{text-align:right;font-variant-numeric:tabular-nums}.log{margin-top:6px;font-size:12px;color:var(--ink-soft)}#reveal{position:absolute;top:0;right:0;bottom:0;left:0;background:#1a1220e6;display:flex;align-items:center;justify-content:center;z-index:5;padding:12px}#reveal[hidden]{display:none}.reveal-card{background:var(--panel);color:var(--panel-ink);border-radius:18px;padding:12px 16px;width:min(420px,92%);display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:center;animation:pop .45s ease-out}.reveal-card img{width:120px;height:120px;object-fit:contain;border-radius:12px;background:#f3e4ec}.reveal-card h2{margin:0 0 4px;font-size:18px}.reveal-card p{margin:2px 0;font-size:12px;color:var(--panel-soft)}.reveal-parcel{width:120px;height:120px;animation:shake .9s ease-in-out;display:flex;align-items:center;justify-content:center}.reveal-parcel .parcel-box{width:100%}.reveal-parcel img{width:100%;height:100%;object-fit:contain}@keyframes shake{0%,to{transform:rotate(0)}15%{transform:rotate(-8deg) scale(1.03)}30%{transform:rotate(8deg) scale(1.06)}45%{transform:rotate(-10deg) scale(1.08)}60%{transform:rotate(10deg) scale(1.1)}80%{transform:rotate(0) scale(1.18)}}@keyframes pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.reveal-card,.reveal-parcel{animation:none}#hearts-fill{transition:none}}.furn-thumb{width:120px;height:120px;border-radius:12px;background:#f6e9d9;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;font-size:13px;padding:8px}.cost{font-size:11px;color:var(--panel-soft)}.chip.locked{opacity:.45}.mini{display:flex;align-items:center;gap:8px;margin:2px 0 8px}.mini img{width:48px;height:48px;border-radius:10px;background:#f3e4ec;object-fit:contain}#panel .bond .off,.card .bond .off{color:#3d2b3a26}.tab-img{width:28px;height:28px;object-fit:contain;display:block}.tab .ico:has(.tab-img){line-height:0}.tab.active .tab-img{transform:scale(1.08)}body.ui-art #panel{background:transparent;border-style:solid;border-width:0;border-image:var(--ui-panel) 64 fill / 18px / 0 round}body.ui-art .card,body.ui-art .reveal-card{background:transparent;border-radius:0;border-style:solid;border-width:0;border-image:var(--ui-panel) 64 fill / 16px / 0 round}body.ui-art .btn:not(.light),body.ui-art .act{background:transparent;border-radius:0;border-style:solid;border-width:0;border-image:var(--ui-button) 48 fill / 12px / 0 round}body.ui-art .btn.primary,body.ui-art .act.primary{border-image:var(--ui-button-primary) 48 fill / 12px / 0 round;color:#fff}body.ui-art .btn:disabled{opacity:.5;filter:grayscale(.4)}.reveal-parcel.opened{animation:burst .55s ease-out}@keyframes burst{0%{transform:scale(1.18)}50%{transform:scale(1.32)}to{transform:scale(1.25)}}.card .muted{color:var(--panel-soft)}
