:root{--bg:#151219;--panel:#211c29;--panel-2:#1a1621;--line:#2a3040;--line-strong:#3a4256;--text:#f0edf2;--muted:#9a93a6;--cool:#7f8aa3;--gold:#c5a675;--gold-soft:#c5a67524;--gold-line:#c5a67573;--up:#c5a675;--down:#c48a8f;--sound:#8fa7c9;--light:#e3d7b0;--scent:#c9a3ad;--warmth:#e2a27c;--sealed:#9c8fbf;--serif:"Noto Serif TC", "Source Han Serif TC", "Songti TC", "PMingLiU", "MingLiU", serif;--sans:"Noto Sans TC", "Source Han Sans TC", "PingFang TC", "Microsoft JhengHei", "Heiti TC", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-text-size-adjust:100%;margin:0;font-size:15px;line-height:1.7}body{background:radial-gradient(1200px 500px at 50% -200px, #2a30408c, transparent 70%), linear-gradient(#2a30402e 1px, transparent 1px) 0 0 / 100% 32px, var(--bg);min-height:100vh}button{font:inherit;color:inherit}code{font-family:var(--sans);color:var(--gold);border:1px solid var(--gold-line);padding:0 6px}.kicker{letter-spacing:.42em;color:var(--cool);text-transform:uppercase;white-space:nowrap;font-size:10px}.muted{color:var(--muted)}.small{font-size:13px}.up{color:var(--up)}.down{color:var(--down)}.frame{background:var(--panel);border:1px solid var(--line);position:relative}.frame:before,.frame:after{content:"";pointer-events:none;width:12px;height:12px;position:absolute}.frame:before{border-top:1px solid var(--gold-line);border-left:1px solid var(--gold-line);top:-1px;left:-1px}.frame:after{border-right:1px solid var(--gold-line);border-bottom:1px solid var(--gold-line);bottom:-1px;right:-1px}.btn{border:1px solid var(--line-strong);cursor:pointer;letter-spacing:.12em;min-height:46px;color:var(--text);background:0 0;justify-content:center;align-items:center;gap:10px;padding:10px 18px;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:wait}.btn-gold{border-color:var(--gold);color:var(--gold);background:var(--gold-soft)}.btn-gold:hover:not(:disabled){background:#c5a6753d}.btn-line:hover:not(:disabled){border-color:var(--cool)}.btn-disabled{color:var(--muted);cursor:help;border-style:dashed}.btn-text{color:var(--muted);border:0;width:100%}.btn-wide{letter-spacing:.4em;width:100%;font-family:var(--serif);font-size:16px}.btn-small{letter-spacing:.04em;min-height:40px;padding:6px 12px;font-size:14px}.btn:focus-visible,.slot:focus-visible,.tabs button:focus-visible{outline:1px solid var(--gold);outline-offset:2px}.delta{font-variant-numeric:tabular-nums;letter-spacing:0;font-weight:600}.loading{min-height:100vh;color:var(--muted);letter-spacing:.4em;font-family:var(--serif);place-items:center;display:grid}.gate{flex-direction:column;align-items:center;max-width:520px;min-height:100vh;margin:0 auto;padding:24px 16px 40px;display:flex}.storefront{width:100%;max-width:420px;height:auto}.mist{animation:14s ease-in-out infinite alternate drift}.mist-near{animation-duration:10s;animation-direction:alternate-reverse}@keyframes drift{0%{transform:translate(-10px)}to{transform:translate(12px)}}.door-light{animation:5s ease-in-out infinite flicker}@keyframes flicker{0%,to{opacity:.85}45%{opacity:.6}50%{opacity:.95}}@media (prefers-reduced-motion:reduce){.mist,.door-light,.dial-hand{transition:none;animation:none}}.gate-card{text-align:center;width:100%;margin-top:-8px;padding:24px 20px}.gate-title{font-family:var(--serif);letter-spacing:.3em;color:var(--gold);margin:8px 0 12px;font-size:22px;font-weight:600}.gate-card p{color:#cfc9d6;margin:0 0 18px}.gate-card .btn{margin-bottom:18px}.gate-hint{border-top:1px solid var(--line);padding-top:14px;font-size:13px;color:var(--muted)!important;margin:0!important}.app{max-width:1040px;padding:0 16px calc(32px + env(safe-area-inset-bottom));margin:0 auto}.top{z-index:20;background:linear-gradient(var(--bg) 80%, #15121900);align-items:center;gap:12px;padding:12px 0 10px;display:flex;position:sticky;top:0}.brand{flex-direction:column;margin-right:auto;line-height:1.2;display:flex}.brand-name{font-family:var(--serif);letter-spacing:.32em;color:var(--gold);font-size:22px}.purse{border:1px solid var(--gold-line);background:var(--gold-soft);color:var(--gold);white-space:nowrap;align-items:center;gap:6px;padding:4px 12px;display:flex}.purse b{font-variant-numeric:tabular-nums;font-size:19px}.purse span{letter-spacing:.2em;font-size:12px}.coin{flex:none;display:block}.me{border:1px solid var(--line-strong);cursor:pointer;background:0 0;flex:none;width:40px;height:40px;padding:4px}.me img,.me-fallback{background:var(--panel);width:30px;height:30px;color:var(--gold);font-family:var(--serif);place-items:center;display:grid}.menu{z-index:30;width:200px;padding:14px;position:absolute;top:58px;right:0}.menu-name{overflow-wrap:anywhere;font-weight:600}.menu-sub{color:var(--muted);margin-bottom:12px;font-size:12px}.menu .btn{width:100%}.nightbar{border:1px solid var(--line);background:var(--panel-2);align-items:center;gap:12px;padding:10px 12px;display:flex}.dial-hand{transition:transform .6s}.nightbar-text{flex:1;min-width:0}.nightbar-text .kicker{text-overflow:ellipsis;letter-spacing:.3em;overflow:hidden}.night-title{font-family:var(--serif);letter-spacing:.12em;font-size:17px}.night-phase{color:var(--muted);font-size:13px}.quotas{text-align:right;white-space:nowrap;flex-direction:column;gap:4px;font-size:12px;display:flex}.quotas span{border:1px solid var(--line);padding:1px 8px}.quotas .on{color:var(--gold);border-color:var(--gold-line)}.quotas .off{color:var(--muted);text-decoration:line-through}.weekgoal{border:1px solid var(--line);background:var(--panel-2);margin-top:8px;padding:8px 12px 10px}.weekgoal-row{align-items:center;gap:12px;display:flex}.weekgoal-coins{font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:flex}.weekgoal-coins b{font-size:17px}.weekgoal-book{border:1px solid var(--line);margin-left:auto;padding:0 8px;font-size:13px}.weekgoal-book.up{border-color:var(--gold-line)}.bar{background:var(--line);height:4px;margin:8px 0 6px;overflow:hidden}.bar i{background:var(--cool);height:100%;transition:width .5s;display:block}.bar i.ok{background:var(--gold)}.weekgoal-hint{color:var(--muted);font-size:12px}.tabs{border:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin:12px 0;display:grid}.tabs button{border:0;border-right:1px solid var(--line);letter-spacing:.15em;min-height:44px;color:var(--muted);cursor:pointer;background:0 0}.tabs button:last-child{border-right:0}.tabs .active{color:var(--gold);background:var(--gold-soft)}main{gap:12px;display:grid}@media (width>=880px){main:has(.counter){grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start}main:has(.counter)>.panel:nth-child(3){grid-area:1/2/span 2}}.panel{padding:14px 14px 16px}.panel-head{border-bottom:1px solid var(--line);align-items:baseline;gap:10px;margin-bottom:10px;padding-bottom:8px;display:flex}.panel-title{font-family:var(--serif);letter-spacing:.3em;font-size:16px}.panel-side{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}.preview{color:#d8d2df;margin:0 0 12px}.guests{grid-template-columns:repeat(3,1fr);gap:6px;margin:0;padding:0;list-style:none;display:grid}.guest{border:1px solid var(--line);flex-direction:column;align-items:center;min-width:0;padding:6px 4px;font-size:12px;display:flex}.guest-no{font-family:var(--serif);color:var(--cool)}.guest-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:13px;overflow:hidden}.guest-state{color:var(--muted);min-height:1.4em}.guest-upcoming .guest-name{color:var(--muted)}.guest-current{border-color:var(--gold);background:var(--gold-soft)}.guest-current .guest-state{color:var(--gold)}.guest-dismissed{opacity:.6}.counter-body{gap:12px;display:grid}.last-line{border-left:2px solid var(--line-strong);color:var(--muted);margin:0 0 12px;padding:8px 10px;font-size:14px}.last-line .who{color:var(--text);margin-right:4px}.guest-card{gap:10px;display:grid}.guest-head{align-items:center;gap:12px;display:flex}.guest-seal{border:1px solid var(--gold);width:42px;height:42px;color:var(--gold);font-family:var(--serif);flex:none;place-items:center;font-size:20px;display:grid}.guest-title{font-family:var(--serif);letter-spacing:.2em;font-size:18px}.tag-gold{color:var(--gold);border:1px solid var(--gold-line);margin-top:2px;padding:0 8px;font-size:12px;display:inline-block}.guest-line{font-family:var(--serif);color:#e2dce8;margin:0;line-height:1.9}.request{border:1px solid var(--line);background:var(--panel-2);grid-template-columns:1fr auto;gap:2px 12px;padding:10px 12px;display:grid}.request .kicker{grid-column:1/-1}.request-text{min-width:0}.request-price{color:var(--gold);white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:4px;display:flex}.offer{display:flex}.deal-list{gap:8px;display:grid}.deal-btn{text-align:left;letter-spacing:.04em;justify-content:space-between}.closing-sum{font-family:var(--serif);letter-spacing:.12em;align-items:baseline;gap:12px;display:flex}.closing-sum b{font-size:22px;font-family:var(--sans);letter-spacing:0}.entries{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.entries li{border-bottom:1px solid var(--line);grid-template-columns:4.6em minmax(0,1fr) auto auto;align-items:baseline;gap:8px;padding:8px 0;font-size:14px;display:grid}.entries .op{color:var(--cool);letter-spacing:.1em;font-size:12px}.entries .what{overflow-wrap:anywhere}.entries .bal{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;min-width:2.5em}.recycle{flex-wrap:wrap;gap:8px;display:flex}.recycle .small{width:100%}.shelf{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.slot{border:1px solid var(--line-strong);background:var(--panel-2);cursor:pointer;justify-content:center;min-height:152px;padding:10px 6px;display:flex}.slot:hover{border-color:var(--cool)}.slot-known{border-color:var(--gold-line)}.slot-vacant{border-style:dashed;border-color:var(--line);color:var(--muted);letter-spacing:.3em;cursor:default;place-items:center;font-size:13px;display:grid}.item{text-align:center;flex-direction:column;align-items:center;gap:6px;width:100%;min-width:0;display:flex}.item-compact{text-align:left;flex-flow:wrap;gap:4px 10px}.item-name{font-family:var(--serif);letter-spacing:.06em;font-size:14px}.glyph{color:var(--text);place-items:center;display:grid}.glyph.type-sound{color:var(--sound)}.glyph.type-light{color:var(--light)}.glyph.type-scent{color:var(--scent)}.glyph.type-warmth{color:var(--warmth)}.chip{border:1px solid var(--line);overflow-wrap:anywhere;align-items:center;gap:4px;max-width:100%;padding:2px 6px;font-size:11.5px;line-height:1.4;display:inline-flex}.chip-sealed{color:var(--sealed);border-color:#9c8fbf80}.chip-known{color:var(--gold);border-color:var(--gold-line)}.chip-known.type-sound svg{color:var(--sound)}.chip-known.type-light svg{color:var(--light)}.chip-known.type-scent svg{color:var(--scent)}.chip-known.type-warmth svg{color:var(--warmth)}.chip-rare{color:#f3d9a0;border-color:var(--gold);background:#c5a6752e;box-shadow:0 0 10px #e9c88e40}.slot-rare{border-color:var(--gold);box-shadow:inset 0 0 18px #e9c88e1f}.chip-empty{color:var(--muted)}.shelf-hint{margin:10px 0 0}.sheet-backdrop{z-index:50;background:#0a080eb8;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:520px;max-height:88vh;padding:18px 16px calc(16px + env(safe-area-inset-bottom));border-bottom:0;animation:.18s ease-out rise;overflow:auto}@media (width>=640px){.sheet-backdrop{align-items:center;padding:16px}.sheet{border-bottom:1px solid var(--line)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}.sheet-head{align-items:center;gap:14px;margin-bottom:14px;display:flex}.sheet-title{font-family:var(--serif);letter-spacing:.1em;margin:2px 0 6px;font-size:19px}.sheet-actions{gap:8px;margin-bottom:8px;display:grid}.detail{border:1px solid var(--line);background:var(--panel-2);margin:8px 0 12px;padding:10px 12px}.detail p{margin:0}.transfer{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin:8px 0;display:grid}.transfer-side{border:1px solid var(--line);gap:4px;padding:8px;display:grid}.transfer-arrow{color:var(--gold);font-size:20px}.confirm-figures{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;display:grid}.confirm-figures>div{border:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:6px;padding:8px 10px;display:flex}.confirm-figures b{font-variant-numeric:tabular-nums}.sheet-buttons{grid-template-columns:1fr 1.4fr;gap:8px;display:grid}.ending{z-index:60;background:#0a080ee6;place-items:center;padding:16px;display:grid;position:fixed;inset:0;overflow:auto}.ending-card{text-align:center;width:100%;max-width:460px;padding:28px 22px}.ending-title{font-family:var(--serif);color:var(--gold);letter-spacing:.4em;margin:10px 0 18px;font-size:26px;font-weight:600}.ending-card p{font-family:var(--serif);color:#e2dce8;margin:0 0 10px}.ending-list{color:var(--gold);flex-wrap:wrap;justify-content:center;gap:6px 12px;margin:18px 0;padding:0;list-style:none;display:flex}.ending-balance{justify-content:center;align-items:center;gap:8px;margin-bottom:20px;display:flex}.ending-balance b{color:var(--gold);font-size:26px}.ending-failed{border-color:#c48a8f80}.ending-failed .ending-title{color:var(--down)}.result-grid{grid-template-columns:1fr 1fr;gap:8px;margin:16px 0 10px;display:grid}.result-grid>div{border:1px solid var(--line);gap:2px;padding:8px;display:grid}.result-grid b{font-variant-numeric:tabular-nums;font-size:20px}.result-grid .ok b{color:var(--gold)}.result-grid .ng b{color:var(--down)}.missing{font-size:14px;color:var(--down)!important;font-family:var(--sans)!important}.next-week{border:1px solid var(--gold-line);background:var(--gold-soft);margin:14px 0;padding:10px}.next-week p{font-family:var(--sans)!important;margin:4px 0 0!important}.next-week b{color:var(--gold)}.my-record{border:1px solid var(--gold-line);background:var(--gold-soft);gap:2px;margin:10px 0;padding:10px 12px;display:grid}.ranking{border-top:1px solid var(--line);margin:8px 0 0;padding:0;list-style:none}.ranking li{border-bottom:1px solid var(--line);grid-template-columns:2em 28px minmax(0,1fr) auto 3em;align-items:center;gap:10px;padding:8px 4px;display:grid}.ranking li.is-me{background:var(--gold-soft)}.ranking .rank{font-family:var(--serif);color:var(--gold);text-align:center}.ranking img,.ranking .avatar-fallback{border:1px solid var(--line);width:28px;height:28px;color:var(--gold);font-family:var(--serif);place-items:center;display:grid}.ranking .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ranking .weeks{color:var(--cool);white-space:nowrap;font-size:13px}.ranking .bal{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.book{gap:10px;margin:12px 0 0;padding:0;list-style:none;display:grid}.commission{border:1px solid var(--line);background:var(--panel-2);gap:4px;padding:12px;display:grid}.commission.done{border-color:var(--gold-line)}.commission-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.commission-title{font-family:var(--serif);letter-spacing:.1em;font-size:17px}.stamp{font-family:var(--serif);color:var(--gold);border:1px solid var(--gold);letter-spacing:.2em;padding:0 8px;transform:rotate(-4deg)}.commission-row{grid-template-columns:3.6em 1fr;align-items:baseline;gap:8px;display:grid}.commission-row span:last-child{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.commission-hint{color:var(--cool);margin-top:4px;font-size:13px}.night-chips{gap:6px;margin-bottom:8px;padding-bottom:8px;display:flex;overflow-x:auto}.night-chips button{border:1px solid var(--line);min-height:36px;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;flex:none;padding:4px 12px}.night-chips .active{color:var(--gold);border-color:var(--gold-line);background:var(--gold-soft)}.toasts{z-index:70;pointer-events:none;gap:6px;width:min(92vw,420px);display:grid;position:fixed;top:64px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--line-strong);background:#1b1722;padding:10px 14px;font-size:14px;animation:.2s ease-out rise}.toast-gold{border-color:var(--gold);color:var(--gold)}.toast-warn{border-color:var(--down)}@media (width<=380px){.brand .kicker,.purse span{display:none}.slot{min-height:140px}.item-name{font-size:13px}}
