:root{--canvas:#FAF8F3;--card:#FFFDF9;--sub:#F3EEE5;--strong:#EAE2D4;--line:#E8E1D6;--ink:#1F1D1A;--body:#3D3A35;--muted:#7A756C;--faint:#A39E94;--accent:#C96F4A;--accent-press:#A8573A;--accent-soft:#F6E7DE;--warn:#B5762B;--warn-bg:#F7EBD6;--ok:#5E7F6E;--ok-bg:#E5EEE7;--off:#A39E94;--off-bg:#F0ECE5;--err:#B4473A;--err-bg:#F7E1DC;--serif:"Songti SC","Noto Serif SC","Source Han Serif SC","STSong",Georgia,serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;--ease:cubic-bezier(.2,.8,.2,1);--shadow-hover:0 1px 2px rgba(31,29,26,.04),0 8px 24px rgba(31,29,26,.06);--shadow-pop:0 24px 64px rgba(31,29,26,.14)}*{box-sizing:border-box}html,body{margin:0}body{background:var(--canvas);color:var(--body);font:15px/22px var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.serif{font-family:var(--serif);letter-spacing:-.2px}.hidden{display:none!important}.login{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;background:#f7f2ea}.blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.75;will-change:transform}.b1{width:56vmax;height:56vmax;background:#e8d5b0;left:-14vmax;top:-18vmax;animation:drift1 26s var(--ease) infinite alternate}.b2{width:48vmax;height:48vmax;background:#ebcfd2;right:-16vmax;top:6vmax;animation:drift2 30s var(--ease) infinite alternate}.b3{width:44vmax;height:44vmax;background:#c9d3de;left:18vmax;bottom:-22vmax;animation:drift3 24s var(--ease) infinite alternate}.b4{width:30vmax;height:30vmax;background:#f1ddc4;right:14vmax;bottom:-6vmax;animation:drift1 34s var(--ease) infinite alternate-reverse}@keyframes drift1{to{transform:translate(12vmax,10vmax) scale(1.12)}}@keyframes drift2{to{transform:translate(-14vmax,8vmax) scale(.9)}}@keyframes drift3{to{transform:translate(8vmax,-12vmax) scale(1.08)}}.grain{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.login-card{position:relative;width:min(380px,calc(100vw - 40px));padding:40px 36px 32px;border-radius:24px;background:#fffdf99e;backdrop-filter:blur(24px) saturate(1.2);-webkit-backdrop-filter:blur(24px) saturate(1.2);border:1px solid rgba(255,255,255,.7);box-shadow:var(--shadow-pop);text-align:center;animation:rise .6s var(--ease)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.mark{width:36px;height:36px;margin:0 auto 18px;display:grid;place-items:center;border-radius:11px;background:var(--accent);color:#fff;font-size:18px}.login-card h1{margin:0;font:400 30px/40px var(--serif);color:var(--ink);letter-spacing:-.4px}.login-card p.sub{margin:6px 0 28px;color:var(--muted);font-size:14px}.field{position:relative;margin-bottom:12px;text-align:left}.input{width:100%;height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:#fffdf9d9;outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c96f4a26}.eye{position:absolute;right:8px;top:6px;height:32px;width:32px;border:0;background:none;color:var(--faint);border-radius:8px}.btn{height:40px;padding:0 18px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-weight:500;font-size:14px;transition:background .15s,transform .1s}.btn:hover{background:var(--sub)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#bf6642}.btn.primary:active{background:var(--accent-press)}.btn.ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn.ghost:hover{background:var(--sub);color:var(--ink)}.btn.sm{height:32px;padding:0 12px;font-size:13px}.btn.block{width:100%;height:44px;margin-top:8px}.login-err{min-height:20px;margin-top:12px;color:var(--err);font-size:13px}.shake{animation:shake .4s}@keyframes shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.login-foot{margin-top:20px;font-size:12px;color:var(--faint)}.topbar{position:sticky;top:0;z-index:20;height:60px;display:flex;align-items:center;gap:12px;padding:0 max(24px,calc((100vw - 1200px)/2));background:#faf8f3d1;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid transparent;transition:border-color .2s}.topbar.scrolled{border-bottom-color:var(--line)}.brand{display:flex;align-items:center;gap:10px;font:500 17px var(--serif);color:var(--ink)}.brand .mark{width:28px;height:28px;margin:0;border-radius:9px;font-size:14px}.spacer{flex:1}main{max-width:1200px;margin:0 auto;padding:12px 24px 80px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:16px 0 20px}.page-head h1{margin:0;font:400 28px/36px var(--serif);color:var(--ink);letter-spacing:-.3px}.page-head .date{color:var(--muted);font-size:13px}.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:6px;border-radius:14px;background:var(--card);border:1px solid var(--line)}.search{flex:1 1 260px;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:10px;background:var(--sub)}.search input{flex:1;border:0;background:none;outline:none;min-width:0}.search svg,.datefield svg{flex:none;color:var(--faint)}.datefield{display:flex;align-items:center;gap:6px;height:40px;padding:0 10px;border-radius:10px;background:var(--sub)}.datefield input{border:0;background:none;outline:none;width:118px;color:var(--body)}.datefield span{color:var(--faint)}.seg{display:inline-flex;padding:3px;border-radius:10px;background:var(--sub)}.seg button{height:34px;padding:0 12px;border:0;border-radius:8px;background:none;color:var(--muted);font-size:13px;font-weight:500;transition:background .15s,color .15s}.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #1f1d1a14}.quick{display:flex;gap:6px;margin:10px 2px 0;flex-wrap:wrap}.chip{height:28px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:12px;transition:all .15s}.chip:hover{color:var(--ink);background:var(--card)}.chip.on{background:var(--strong);border-color:var(--strong);color:var(--ink)}.summary{display:flex;gap:28px;margin:22px 2px 18px;overflow-x:auto;scrollbar-width:none}.stat{flex:none}.stat .n{font-size:22px;line-height:28px;font-weight:500;color:var(--ink)}.stat .l{font-size:12px;color:var(--muted)}.stat.accent .n{color:var(--accent)}.stat.warn{cursor:pointer}.stat.warn .n,.stat.warn:hover .l{color:var(--warn)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}.mall{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;transition:box-shadow .24s var(--ease),transform .24s var(--ease);animation:rise .4s var(--ease) both}.mall:hover{box-shadow:var(--shadow-hover)}.mall-head{display:flex;align-items:flex-start;gap:12px;padding:20px 20px 14px}.mall-head h2{margin:0;font:500 20px/28px var(--serif);color:var(--ink);letter-spacing:-.2px}.mall-head .meta{margin-top:2px;color:var(--muted);font-size:13px}.mall-head .meta b{font-weight:500;color:var(--accent)}.iconbtn{width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:8px;background:none;color:var(--faint);transition:background .15s,color .15s}.iconbtn:hover{background:var(--sub);color:var(--ink)}.menu{position:absolute;right:0;top:36px;z-index:5;min-width:168px;padding:6px;border-radius:12px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-pop);animation:pop .16s var(--ease)}@keyframes pop{0%{opacity:0;transform:translateY(-4px) scale(.98)}}.menu button{display:block;width:100%;height:34px;padding:0 10px;border:0;border-radius:8px;background:none;text-align:left;font-size:13px}.menu button:hover{background:var(--sub)}.menu button.danger{color:var(--err)}.menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}.acct{border-top:1px solid var(--line)}.acct-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 20px;border:0;background:none;text-align:left;transition:background .15s}.acct-row:hover{background:#fbf8f2}.avatar{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--sub);color:var(--muted);font-size:13px;font-weight:500}.acct-main{flex:1;min-width:0}.acct-id{color:var(--ink);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acct-id .alias{color:var(--muted);font-weight:400;margin-left:6px}.acct-sub{display:flex;gap:10px;margin-top:2px;color:var(--muted);font-size:12px}.points{flex:none;text-align:right}.points .v{font-size:20px;line-height:24px;font-weight:500;color:var(--accent);border-radius:6px;padding:0 4px;cursor:text}.points .v:hover{background:var(--accent-soft)}.points input{width:96px;height:30px;text-align:right;border:1px solid var(--accent);border-radius:8px;padding:0 8px;outline:none;box-shadow:0 0 0 3px #c96f4a26;font-size:16px;font-weight:500;color:var(--accent)}.points .u{font-size:11px;color:var(--faint)}.chev{flex:none;color:var(--faint);transition:transform .24s var(--ease)}.acct.open .chev{transform:rotate(90deg)}.acct-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .24s var(--ease)}.acct.open .acct-body{grid-template-rows:1fr}.acct-body>div{overflow:hidden}.acct-inner{margin:0 20px 14px 66px;border-radius:12px;background:var(--sub);padding:4px 14px}.tabs{display:flex;align-items:center;gap:6px;padding:12px 20px;border-top:1px solid var(--line);background:#fcfaf6}.tab{height:30px;padding:0 12px;border-radius:999px;border:0;background:none;color:var(--muted);font-size:13px;font-weight:500;transition:all .15s}.tab:hover{color:var(--ink);background:var(--sub)}.tab.on{background:var(--strong);color:var(--ink)}.tab .c{margin-left:4px;color:var(--faint);font-weight:400}.pool{padding:0 20px 8px;background:#fcfaf6;animation:fade .24s var(--ease)}@keyframes fade{0%{opacity:0}}.ben{display:flex;gap:12px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer}.ben:first-child{border-top:0}.ben-main{flex:1;min-width:0}.ben-title{color:var(--ink);font-weight:500}.ben-title .face{color:var(--muted);font-weight:400;margin-left:6px}.ben-title .qty{color:var(--faint);font-weight:400;margin-left:6px;font-size:13px}.ben-rule{margin-top:2px;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ben-rule a{color:var(--accent);text-decoration:none}.ben-rule a:hover{text-decoration:underline}.ben-side{flex:none;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.ben-date{font-size:12px;color:var(--faint)}.cost{font-size:13px;color:var(--body);font-weight:500}.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:500;white-space:nowrap}.tag.warn{color:var(--warn);background:var(--warn-bg)}.tag.ok{color:var(--ok);background:var(--ok-bg)}.tag.off{color:var(--off);background:var(--off-bg)}.tag.accent{color:var(--accent);background:var(--accent-soft)}.ben.dead .ben-title{color:var(--faint);text-decoration:line-through}.dead-toggle{display:block;width:100%;padding:10px 0;border:0;border-top:1px solid var(--line);background:none;text-align:left;color:var(--faint);font-size:12px}.dead-toggle:hover{color:var(--muted)}.empty-mini{padding:14px 0;color:var(--faint);font-size:13px}mark{background:#f5ddb8;color:inherit;border-radius:3px;padding:0 1px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#3c30242e;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fade .24s var(--ease)}.drawer{position:fixed;z-index:41;top:12px;right:12px;bottom:12px;width:min(440px,calc(100vw - 24px));display:flex;flex-direction:column;border-radius:20px;background:var(--card);box-shadow:var(--shadow-pop);animation:slide .32s var(--ease)}@keyframes slide{0%{transform:translate(24px);opacity:0}}.drawer-head{display:flex;align-items:center;padding:20px 20px 8px 24px}.drawer-head h3{flex:1;margin:0;font:400 22px/30px var(--serif);color:var(--ink)}.drawer-body{flex:1;overflow:auto;padding:8px 24px 24px}.drawer-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--line)}.f{margin-top:16px}.f label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--body)}.f .hint{margin-top:4px;font-size:12px;color:var(--faint)}.f .err{margin-top:4px;font-size:12px;color:var(--err)}.f .input,.f select,.f textarea{width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card);outline:none;transition:border-color .15s,box-shadow .15s}.f select{height:40px;padding:0 12px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23A39E94' stroke-width='1.6'%3E%3Cpath d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E") no-repeat right 12px center}.f textarea{min-height:88px;padding:10px 12px;resize:vertical}.f .input{height:40px}.f .input:focus,.f select:focus,.f textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c96f4a26}.f .input.bad{border-color:var(--err)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.switch{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--sub);font-size:14px}.tog{position:relative;width:42px;height:26px;border:0;border-radius:999px;background:#dcd4c7;transition:background .2s}.tog:after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000026;transition:transform .2s var(--ease)}.tog.on{background:var(--ok)}.tog.on:after{transform:translate(16px)}.upload{display:flex;align-items:center;justify-content:center;gap:8px;height:72px;border:1px dashed #D8CFC1;border-radius:12px;color:var(--faint);font-size:13px;cursor:pointer}.upload:hover{border-color:var(--accent);color:var(--accent)}.dialog{position:fixed;z-index:41;left:50%;top:50%;width:min(460px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;transform:translate(-50%,-50%);border-radius:20px;background:var(--card);box-shadow:var(--shadow-pop);padding:24px;animation:dlg .32s var(--ease)}@keyframes dlg{0%{opacity:0;transform:translate(-50%,-48%) scale(.98)}}.dialog h3{margin:0 0 4px;font:400 22px/30px var(--serif);color:var(--ink)}.dialog .lead{color:var(--muted);font-size:13px;margin-bottom:16px}.kv{display:grid;grid-template-columns:84px 1fr;gap:10px 12px;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0;color:var(--body)}.shot{margin-top:6px;height:120px;border-radius:12px;background:linear-gradient(135deg,#f3eee5,#eae2d4);display:grid;place-items:center;color:var(--faint);font-size:12px}.dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.btn.danger{background:var(--err);border-color:var(--err);color:#fff}.btn.danger:hover{background:#a03e33}.warnbox{padding:12px 14px;border-radius:12px;background:var(--err-bg);color:#8c3a2f;font-size:13px}.toast{position:fixed;z-index:60;left:50%;bottom:28px;transform:translate(-50%);padding:10px 16px;border-radius:999px;background:#2b2824;color:#faf8f3;font-size:13px;box-shadow:var(--shadow-pop);animation:toast .3s var(--ease)}@keyframes toast{0%{opacity:0;transform:translate(-50%,8px)}}.empty{max-width:420px;margin:12vh auto;text-align:center}.empty .ill{width:72px;height:72px;margin:0 auto 20px;border-radius:22px;background:var(--accent-soft);display:grid;place-items:center;color:var(--accent)}.empty h2{margin:0;font:400 26px/34px var(--serif);color:var(--ink)}.empty p{color:var(--muted);margin:8px 0 24px}.noresult{grid-column:1/-1;padding:56px 0;text-align:center;color:var(--muted)}@media(max-width:1023px){.grid{grid-template-columns:1fr}}@media(max-width:639px){main{padding:8px 16px 80px}.topbar{padding:0 16px}.page-head h1{font-size:24px}.filters{gap:6px}.datefield{flex:1 1 100%}.datefield input{width:auto;flex:1}.seg,.seg button{flex:1}.acct-inner{margin-left:20px}.drawer{top:0;right:0;bottom:0;left:0;width:100%;border-radius:0}.row2{grid-template-columns:1fr}.topbar .btn .lbl{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.blob{animation:none!important}}.loading{padding:64px 0;text-align:center;color:var(--faint)}.btn[disabled]{opacity:.55;cursor:default}.shot img{max-width:100%;max-height:220px;border-radius:12px;display:block}.shot.has{height:auto;background:none}.upload img{max-height:60px;border-radius:8px}.err-banner{margin:12px 0;padding:10px 14px;border-radius:12px;background:var(--err-bg);color:#8c3a2f;font-size:13px}
