:root{--font-serif: "Noto Serif SC", "Songti SC", "STSong", "SimSun", "Noto Serif CJK SC", serif;--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", "Segoe UI", sans-serif;--font-num: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;--r-sm: 8px;--r: 14px;--r-lg: 22px;--ease: cubic-bezier(.2, .8, .2, 1)}[data-theme=paper]{--bg: #f4eee3;--bg2: #ede4d5;--surface: #fffcf6;--surface2: #faf5ec;--line: #e6dccb;--line2: #d9ccb6;--ink: #231d18;--ink2: #5b5047;--muted: #968a7d;--red: #c23a2b;--red-soft: #f7e2dc;--red-ink: #9e2a1e;--teal: #2d5e61;--teal-soft: #dce9e7;--gold: #b07f2e;--gold-soft: #f3e7cf;--shadow: 0 1px 0 rgba(60, 40, 20, .04), 0 8px 24px -12px rgba(80, 50, 20, .18);--shadow-lg: 0 30px 80px -20px rgba(70, 40, 15, .35);--grain: .5}[data-theme=ink]{--bg: #14110e;--bg2: #1b1713;--surface: #1f1a16;--surface2: #26201b;--line: #332b24;--line2: #40362d;--ink: #f2e9db;--ink2: #c9bca9;--muted: #8c7f70;--red: #e35a45;--red-soft: #3a1f1a;--red-ink: #f08a76;--teal: #6fb3ae;--teal-soft: #1b2e2d;--gold: #d9ae5f;--gold-soft: #33291a;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 10px 30px -14px rgba(0, 0, 0, .7);--shadow-lg: 0 30px 80px -20px rgba(0, 0, 0, .8);--grain: .25}*{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}html,body{height:100%}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;transition:background .4s var(--ease),color .4s var(--ease)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:var(--grain);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 type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .35 0 0 0 0 .2 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.serif{font-family:var(--font-serif)}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.muted{color:var(--muted)}.c-in{color:var(--red)}.c-out{color:var(--teal)}svg.i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}::selection{background:var(--red);color:#fff}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line2);border-radius:10px;border:3px solid var(--bg)}.seal{display:grid;place-items:center;background:var(--red);color:#fff6ea;font-family:var(--font-serif);font-weight:900;border-radius:10px;position:relative;box-shadow:inset 0 0 0 2px #fff0dc59,inset 0 0 0 4px var(--red)}.seal:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.25),transparent 50%);mix-blend-mode:overlay}.login-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;grid-template-columns:1.15fr 1fr;background:var(--bg)}.login-art{position:relative;overflow:hidden;background:#1c1714;color:#f4e9d8;display:flex;flex-direction:column;justify-content:space-between;padding:48px 56px}.login-art .big{position:absolute;right:-6vw;bottom:-9vw;font-family:var(--font-serif);font-weight:900;font-size:46vw;line-height:.8;color:transparent;-webkit-text-stroke:1px rgba(227,90,69,.35);-webkit-user-select:none;user-select:none;animation:drift 18s ease-in-out infinite alternate}@keyframes drift{to{transform:translate(-2vw,-1vw) rotate(-2deg)}}.login-art .glow{position:absolute;width:60vw;height:60vw;left:-20vw;top:-25vw;background:radial-gradient(circle,rgba(194,58,43,.45),transparent 60%);filter:blur(10px)}.login-art .brand{display:flex;align-items:center;gap:14px;position:relative}.login-art .brand .seal{width:44px;height:44px;font-size:22px}.login-art .brand b{font-family:var(--font-serif);font-size:20px;letter-spacing:.2em}.login-art .verse{position:relative;max-width:440px}.login-art .verse h1{font-family:var(--font-serif);font-weight:900;font-size:56px;line-height:1.15;letter-spacing:.04em}.login-art .verse h1 em{font-style:normal;color:#e35a45}.login-art .verse p{margin-top:18px;color:#b8a894;font-size:15px;line-height:1.9}.login-form-side{display:grid;place-items:center;padding:40px;position:relative}.login-form{width:min(380px,100%)}.login-form h2{font-family:var(--font-serif);font-size:30px;font-weight:900;letter-spacing:.06em}.login-form .sub{color:var(--muted);margin:6px 0 34px}.field{position:relative;margin-bottom:16px}.field label{display:block;font-size:12px;color:var(--ink2);margin-bottom:6px;font-weight:600;letter-spacing:.04em}.input{width:100%;height:44px;padding:0 14px;border:1.5px solid var(--line);background:var(--surface);border-radius:12px;outline:none;transition:border .2s,box-shadow .2s,background .2s}.input:focus{border-color:var(--red);box-shadow:0 0 0 4px color-mix(in srgb,var(--red) 14%,transparent)}textarea.input{height:auto;min-height:84px;padding:10px 14px;resize:vertical;line-height:1.6}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23968A7D' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}.input.err{border-color:var(--red);animation:shake .35s}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.input:disabled{background:var(--bg2);color:var(--muted);cursor:not-allowed}.pw-toggle{position:absolute;right:10px;bottom:10px;color:var(--muted);padding:2px}.hint{font-size:12px;color:var(--muted);margin-top:18px;padding:12px 14px;border:1px dashed var(--line2);border-radius:12px;display:flex;gap:10px;align-items:center}.hint code{font-family:var(--font-num);color:var(--ink);background:var(--bg2);padding:1px 6px;border-radius:5px}.counter{font-size:11.5px;color:var(--muted);text-align:right;margin-top:4px;font-family:var(--font-num)}.btn{height:38px;padding:0 16px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:13.5px;border:1.5px solid var(--line);background:var(--surface);transition:transform .15s var(--ease),background .2s,border-color .2s,box-shadow .2s;white-space:nowrap}.btn:hover{border-color:var(--line2);background:var(--surface2)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--red);border-color:var(--red);color:#fff6ee;box-shadow:0 6px 16px -8px var(--red)}.btn.primary:hover{filter:brightness(1.06)}.btn.dark{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--bg2)}.btn.danger{color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,var(--line))}.btn.danger.solid{background:var(--red-ink);color:#fff;border-color:var(--red-ink)}.btn.lg{height:48px;font-size:15px;border-radius:14px;width:100%}.btn.sm{height:30px;padding:0 10px;font-size:12.5px;border-radius:9px}.btn.icon{width:38px;padding:0}.btn:disabled{opacity:.45;pointer-events:none}.kbd{font-family:var(--font-num);font-size:11px;padding:1px 6px;border-radius:6px;border:1px solid var(--line2);color:var(--muted);background:var(--surface2)}.app-shell{position:relative;z-index:1;display:grid;grid-template-columns:264px 1fr;min-height:100vh}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:20px 14px;border-right:1px solid var(--line);background:color-mix(in srgb,var(--bg) 70%,var(--surface))}.logo{display:flex;align-items:center;gap:12px;padding:4px 8px 22px}.logo .seal{width:38px;height:38px;font-size:19px}.logo b{font-family:var(--font-serif);font-size:18px;letter-spacing:.18em;display:block;line-height:1.1}.logo small{font-size:11px;color:var(--muted);letter-spacing:.08em}.nav-item{display:flex;align-items:center;gap:11px;height:40px;padding:0 12px;border-radius:11px;color:var(--ink2);font-weight:500;position:relative;transition:background .2s,color .2s;width:100%;text-align:left}.nav-item:hover{background:var(--bg2);color:var(--ink)}.nav-item.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font-weight:700}.nav-item.on:before{content:"";position:absolute;left:-14px;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--red)}.nav-item .badge{margin-left:auto;font-size:11px;color:var(--muted);font-family:var(--font-num)}.side-sec{display:flex;align-items:center;justify-content:space-between;padding:20px 12px 8px;font-size:11px;letter-spacing:.16em;color:var(--muted);font-weight:700}.side-sec button{color:var(--muted);display:grid;place-items:center;width:22px;height:22px;border-radius:6px}.side-sec button:hover{background:var(--bg2);color:var(--red)}.book-list{flex:1;overflow:auto;margin:0 -4px;padding:0 4px}.book-link{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:11px;width:100%;text-align:left;transition:background .2s}.book-link:hover{background:var(--bg2)}.book-link.on{background:var(--surface);box-shadow:var(--shadow)}.book-link .bi{width:30px;height:30px;font-size:15px;border-radius:9px}.book-link .t{min-width:0;flex:1}.book-link .t b{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-link .t small{font-size:11px;color:var(--muted)}.book-link .star{color:var(--gold);font-size:12px}.bi{display:grid;place-items:center;flex:none;background:var(--bg2);border:1px solid var(--line);border-radius:10px;font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",var(--font-sans);line-height:1}.bi.gift{background:var(--red-soft);border-color:color-mix(in srgb,var(--red) 20%,transparent)}.me{margin-top:12px;padding:10px;border-radius:14px;border:1px solid var(--line);background:var(--surface);display:flex;align-items:center;gap:10px;position:relative}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;color:#fff;flex:none;font-family:var(--font-serif)}.me .t{flex:1;min-width:0}.me .t b{display:block;font-size:13px}.me .t small{font-size:11px;color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main-area{min-width:0;display:flex;flex-direction:column}.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 32px;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid transparent;transition:border-color .2s}.top.scrolled{border-color:var(--line)}.crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);min-width:0}.crumb b{color:var(--ink);font-weight:700;white-space:nowrap}.search-trigger{margin-left:auto;display:flex;align-items:center;gap:10px;height:38px;padding:0 10px 0 12px;border:1.5px solid var(--line);border-radius:11px;background:var(--surface);color:var(--muted);min-width:240px;transition:border-color .2s}.search-trigger:hover{border-color:var(--line2)}.search-trigger span:not(.kbd){flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-btn{display:none}.view{padding:8px 32px 60px;max-width:1440px;width:100%;margin:0 auto;animation:rise .45s var(--ease)}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}.card-h{display:flex;align-items:center;gap:12px;padding:18px 22px 0}.card-h h3{font-family:var(--font-serif);font-size:17px;font-weight:700;letter-spacing:.04em}.card-h .r{margin-left:auto;display:flex;gap:8px;align-items:center}.card-b{padding:18px 22px 22px}.page-h{display:flex;align-items:flex-end;gap:16px;margin:18px 0 22px;flex-wrap:wrap}.page-h h1{font-family:var(--font-serif);font-weight:900;font-size:32px;letter-spacing:.04em;line-height:1.2}.page-h p{color:var(--muted);margin-top:4px}.page-h .r{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap}.grid{display:grid;gap:18px}.chip{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:7px;font-size:11.5px;font-weight:600;background:var(--bg2);color:var(--ink2);white-space:nowrap}.chip.red{background:var(--red-soft);color:var(--red-ink)}.chip.teal{background:var(--teal-soft);color:var(--teal)}.chip.gold{background:var(--gold-soft);color:var(--gold)}.chip.line{background:transparent;border:1px solid var(--line2)}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.hero{display:grid;grid-template-columns:1.35fr 1fr;gap:18px;margin-bottom:18px}.hero-main{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:28px 30px;background:linear-gradient(135deg,#2a201a,#1a1512);color:#f4e9d8;box-shadow:var(--shadow-lg);min-height:250px;display:flex;flex-direction:column}[data-theme=ink] .hero-main{background:linear-gradient(135deg,#3a1c16,#1e1714);border:1px solid var(--line)}.hero-main .pattern{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.13;background-image:radial-gradient(circle at 0 0,transparent 18px,#e35a45 19px,transparent 20px),radial-gradient(circle at 40px 40px,transparent 18px,#e35a45 19px,transparent 20px);background-size:40px 40px;-webkit-mask-image:linear-gradient(100deg,transparent 35%,#000);mask-image:linear-gradient(100deg,transparent 35%,#000)}.hero-main .lbl{font-size:12px;letter-spacing:.2em;color:#b8a894;display:flex;align-items:center;gap:8px;position:relative}.hero-main .amt{position:relative;font-family:var(--font-num);font-size:54px;font-weight:700;margin:10px 0 2px;letter-spacing:-.03em;line-height:1.1}.hero-main .amt small{font-size:24px;opacity:.6;margin-right:6px}.hero-main .cn{position:relative;font-family:var(--font-serif);color:#c9b79f;font-size:13px;letter-spacing:.12em}.hero-main .split{position:relative;margin-top:auto;display:grid;grid-template-columns:1fr 1fr;gap:14px;padding-top:22px}.hero-main .split>div{padding:14px 16px;border-radius:14px;background:#fff5e60f;border:1px solid rgba(255,245,230,.08)}.hero-main .split span{font-size:12px;color:#b8a894;display:flex;align-items:center;gap:6px}.hero-main .split b{display:block;font-family:var(--font-num);font-size:22px;margin-top:4px}.mini-stats{display:grid;grid-template-columns:1fr 1fr;gap:18px}.stat{padding:18px 20px;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}.stat .k{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;letter-spacing:.06em}.stat .v{font-family:var(--font-num);font-size:26px;font-weight:700;white-space:nowrap}.stat .d{font-size:12px;color:var(--muted)}.stat .glyph{position:absolute;right:-6px;bottom:-22px;font-family:var(--font-serif);font-weight:900;font-size:86px;color:var(--bg2);line-height:1;pointer-events:none}.stat>*:not(.glyph){position:relative}.chart-wrap{position:relative}.chart-wrap svg{display:block;width:100%;overflow:visible}.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--bg);font-size:12px;padding:8px 10px;border-radius:10px;white-space:nowrap;transform:translate(-50%,-110%);opacity:0;transition:opacity .15s;z-index:3;box-shadow:var(--shadow)}.tip b{font-family:var(--font-num)}.legend{display:flex;gap:14px;font-size:12px;color:var(--ink2)}.legend span{display:flex;align-items:center;gap:6px}.seg{display:inline-flex;padding:3px;border-radius:11px;background:var(--bg2);gap:2px}.seg button{height:28px;padding:0 12px;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--muted);transition:all .2s}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.donut-row{display:flex;align-items:center;gap:22px}.donut-legend{flex:1;display:flex;flex-direction:column;gap:9px;min-width:0}.donut-legend div{display:flex;align-items:center;gap:8px;font-size:13px}.donut-legend div span:nth-child(2){flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.donut-legend .num{font-size:12px;color:var(--muted)}.books{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}.bcard{position:relative;padding:20px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s;overflow:hidden;display:flex;flex-direction:column;min-height:206px}.bcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--line2)}.bcard.gift:before{content:"";position:absolute;right:-40px;top:-40px;width:130px;height:130px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--red) 18%,transparent),transparent 70%)}.bcard .top{display:flex;align-items:flex-start;gap:12px}.bcard .bi{width:46px;height:46px;font-size:22px;border-radius:14px}.bcard h4{font-family:var(--font-serif);font-size:17px;font-weight:700;line-height:1.3;margin-bottom:5px}.bcard .desc{color:var(--muted);font-size:12.5px;margin:12px 0 0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.bcard .bal{margin-top:auto;padding-top:16px;display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.bcard .bal .v{font-family:var(--font-num);font-size:24px;font-weight:700;line-height:1}.bcard .bal small{display:block;font-size:11px;color:var(--muted);margin-bottom:6px;letter-spacing:.08em}.bcard .io{text-align:right;font-family:var(--font-num);font-size:12px;line-height:1.7}.bcard .bar{height:4px;border-radius:4px;background:var(--teal-soft);margin-top:14px;overflow:hidden;display:flex}.bcard .bar i{display:block;background:var(--red);border-radius:4px}.bcard .acts{position:absolute;top:14px;right:14px;display:flex;gap:4px;opacity:0;transition:opacity .2s}.bcard:hover .acts{opacity:1}.bcard .acts button{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:var(--muted);background:var(--surface2);border:1px solid var(--line)}.bcard .acts button:hover{color:var(--red)}.bcard.add{border-style:dashed;border-width:1.5px;background:transparent;box-shadow:none;align-items:center;justify-content:center;color:var(--muted);gap:10px}.bcard.add:hover{color:var(--red);border-color:var(--red)}.bcard.add .plus{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;border:1.5px dashed currentColor}.tl{display:flex;flex-direction:column}.tl-day{font-size:11.5px;letter-spacing:.12em;color:var(--muted);font-weight:700;padding:14px 0 6px}.tl-item{display:flex;align-items:center;gap:12px;padding:10px;margin:0 -10px;border-radius:12px;transition:background .15s;cursor:pointer}.tl-item:hover{background:var(--surface2)}.tl-ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-size:18px;flex:none;background:var(--bg2);font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",var(--font-sans);line-height:1}.tl-ic.in{background:var(--red-soft)}.tl-ic.out{background:var(--teal-soft)}.tl-t{flex:1;min-width:0}.tl-t b{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl-t small{color:var(--muted);font-size:12px}.tl-a{font-family:var(--font-num);font-weight:700;font-size:15px;text-align:right}.bk-head{display:flex;align-items:center;gap:18px;margin:18px 0;flex-wrap:wrap}.bk-head .bi{width:64px;height:64px;font-size:32px;border-radius:20px}.bk-head h1{font-family:var(--font-serif);font-weight:900;font-size:30px;letter-spacing:.03em;line-height:1.2}.bk-head .meta{display:flex;gap:8px;margin-top:6px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:12.5px}.bk-head .r{margin-left:auto;display:flex;gap:10px}.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);margin-bottom:20px;position:relative}.tabs button{white-space:nowrap;flex-shrink:0;height:42px;padding:0 16px;font-weight:600;color:var(--muted);position:relative;display:flex;align-items:center;gap:8px;transition:color .2s}.tabs button:hover,.tabs button.on{color:var(--ink)}.tabs button.on:after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2.5px;border-radius:3px;background:var(--red)}.tabs .cnt{font-family:var(--font-num);font-size:11px;padding:0 6px;border-radius:6px;background:var(--bg2);color:var(--muted)}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpi{padding:16px 18px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}.kpi span{font-size:12px;color:var(--muted)}.kpi b{display:block;font-family:var(--font-num);font-size:21px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:16px 18px;border-bottom:1px solid var(--line)}.filters .input{height:36px;border-radius:10px;width:auto}.search-in{position:relative;flex:1;min-width:200px}.search-in svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted)}.search-in .input{padding-left:38px;width:100%}.fchips{display:flex;gap:6px}.fchip{height:36px;padding:0 12px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);font-size:13px;font-weight:600;color:var(--ink2);transition:all .2s}.fchip.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse}th{font-size:11.5px;letter-spacing:.08em;color:var(--muted);font-weight:700;text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface2)}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--ink)}td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr{transition:background .15s}tbody tr:hover{background:var(--surface2)}tbody tr:last-child td{border-bottom:0}td.amt{font-family:var(--font-num);font-weight:700;text-align:right;white-space:nowrap}th.amt{text-align:right}.row-acts{display:flex;gap:2px;justify-content:flex-end;opacity:.35;transition:opacity .2s}tr:hover .row-acts{opacity:1}.row-acts button{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--ink2)}.row-acts button:hover{background:var(--bg2);color:var(--red)}.party{display:flex;align-items:center;gap:10px}.party .avatar{width:28px;height:28px;font-size:12px}.tfoot{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px;flex-wrap:wrap}.pager{margin-left:auto;display:flex;gap:4px;align-items:center}.pager button{min-width:30px;height:30px;border-radius:8px;font-family:var(--font-num);font-size:12.5px;color:var(--ink2)}.pager button:hover{background:var(--bg2)}.pager button.on{background:var(--ink);color:var(--bg)}.pager button:disabled{opacity:.3;pointer-events:none}.empty{padding:56px 20px;text-align:center;color:var(--muted)}.empty .g{font-family:var(--font-serif);font-size:54px;font-weight:900;color:var(--line2);line-height:1;margin-bottom:12px}.empty b{display:block;color:var(--ink2);margin-bottom:4px;font-size:15px}.switch{width:38px;height:22px;border-radius:22px;background:var(--line2);position:relative;transition:background .25s;flex:none}.switch:after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .25s var(--ease)}.switch.on{background:var(--red)}.switch.on:after{transform:translate(16px)}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}.cat-grid .cat *{white-space:nowrap}.cat{display:flex;align-items:center;gap:12px;padding:14px;border-radius:16px;border:1px solid var(--line);background:var(--surface);transition:all .2s;position:relative}.cat:hover{border-color:var(--line2);box-shadow:var(--shadow)}.cat.off{opacity:.5}.cat .ic{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-size:20px;background:var(--bg2);font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",var(--font-sans);line-height:1}.cat .t{flex:1;min-width:0}.cat .t b{display:block}.cat .t small{color:var(--muted);font-size:12px}.cat .ord{display:flex;flex-direction:column;gap:2px}.cat .ord button{width:22px;height:18px;border-radius:5px;display:grid;place-items:center;color:var(--muted)}.cat .ord button:hover{background:var(--bg2);color:var(--ink)}.cat .ord svg{width:14px;height:14px}.cat .more{display:flex;gap:2px}.cat .more button{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--muted)}.cat .more button:hover{background:var(--bg2);color:var(--red)}.cat .more svg{width:15px;height:15px}.members{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.mcard{padding:18px;border-radius:18px;border:1px solid var(--line);background:var(--surface);display:flex;gap:14px;align-items:center}.mcard .avatar{width:46px;height:46px;font-size:17px}.mcard .t{flex:1;min-width:0}.mcard .t b{display:flex;align-items:center;gap:6px}.mcard .t small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.mcard select{height:32px;border-radius:9px;font-size:12.5px;width:96px}.set-grid{display:grid;grid-template-columns:1fr 340px;gap:18px;align-items:start}.icon-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:8px}.icon-pick button{aspect-ratio:1;border-radius:12px;border:1.5px solid var(--line);background:var(--surface2);font-size:20px;transition:all .15s;display:grid;place-items:center}.icon-pick button:hover{transform:translateY(-2px);border-color:var(--line2)}.icon-pick button.on{border-color:var(--red);background:var(--red-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--red) 15%,transparent)}.danger-zone{border:1.5px solid color-mix(in srgb,var(--red) 40%,var(--line));background:linear-gradient(180deg,color-mix(in srgb,var(--red) 5%,var(--surface)),var(--surface))}.preview-card{position:sticky;top:90px}.people-layout{display:grid;grid-template-columns:1fr;gap:18px}.pbar{display:flex;height:6px;border-radius:6px;overflow:hidden;background:var(--bg2);width:120px}.pbar i{display:block}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#19120c6b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;transition:opacity .25s;display:flex}.overlay.show{opacity:1}.modal{margin:auto;width:min(480px,calc(100% - 32px));max-height:calc(100vh - 48px);overflow:auto;background:var(--surface);border-radius:24px;box-shadow:var(--shadow-lg);border:1px solid var(--line);transform:translateY(16px) scale(.98);transition:transform .3s var(--ease)}.overlay.show .modal{transform:none}.modal-h{display:flex;align-items:center;gap:12px;padding:22px 24px 6px}.modal-h h3{font-family:var(--font-serif);font-size:20px;font-weight:900;letter-spacing:.04em}.modal-h p{font-size:12.5px;color:var(--muted)}.modal-h .x{margin-left:auto;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--muted)}.modal-h .x:hover{background:var(--bg2);color:var(--ink)}.modal-b{padding:16px 24px}.modal-f{display:flex;justify-content:flex-end;gap:10px;padding:8px 24px 22px}.drawer{margin-left:auto;width:min(520px,100%);height:100%;background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;transform:translate(40px);transition:transform .35s var(--ease);border-left:1px solid var(--line)}.overlay.show .drawer{transform:none}.drawer .modal-b{flex:1;overflow:auto}.drawer .modal-f{border-top:1px solid var(--line);padding-top:16px;align-items:center}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dir-toggle{display:grid;grid-template-columns:1fr 1fr;padding:4px;background:var(--bg2);border-radius:14px;margin-bottom:18px;position:relative}.dir-toggle button{height:42px;border-radius:11px;font-weight:700;font-size:14px;color:var(--muted);position:relative;z-index:1;transition:color .25s;display:flex;align-items:center;justify-content:center;gap:8px}.dir-toggle .pill{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:11px;background:var(--red);transition:transform .35s var(--ease),background .35s;box-shadow:0 6px 14px -6px var(--red)}.dir-toggle.out .pill{transform:translate(100%);background:var(--teal);box-shadow:0 6px 14px -6px var(--teal)}.dir-toggle button.on{color:#fff}.amount-box{border-radius:20px;padding:18px 20px;border:1.5px solid var(--line);background:var(--surface2);margin-bottom:12px;transition:border-color .2s}.amount-box:focus-within{border-color:var(--red)}.dir-out .amount-box:focus-within{border-color:var(--teal)}.amount-box .row{display:flex;align-items:baseline;gap:8px}.amount-box .cur{font-family:var(--font-num);font-size:26px;color:var(--muted)}.amount-box input{flex:1;border:0;outline:0;background:transparent;font-family:var(--font-num);font-size:42px;font-weight:700;width:100%;letter-spacing:-.03em;color:var(--red)}.dir-out .amount-box input{color:var(--teal)}.amount-box .cn{font-family:var(--font-serif);font-size:13px;color:var(--muted);letter-spacing:.1em;min-height:20px}.quick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.quick button{height:30px;padding:0 12px;border-radius:9px;border:1px solid var(--line);font-family:var(--font-num);font-size:12.5px;background:var(--surface);transition:all .15s}.quick button:hover{border-color:var(--red);color:var(--red)}.cat-chips{display:flex;flex-wrap:wrap;gap:8px}.cat-chips button{height:36px;padding:0 12px 0 8px;border-radius:11px;border:1.5px solid var(--line);background:var(--surface);display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;transition:all .15s}.cat-chips button span{font-size:16px}.cat-chips button.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.pay-chips{display:flex;gap:6px;flex-wrap:wrap}.pay-chips button{height:34px;padding:0 12px;border-radius:10px;border:1.5px solid var(--line);font-size:13px;font-weight:600;background:var(--surface)}.pay-chips button.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2);cursor:pointer;-webkit-user-select:none;user-select:none}.invite{position:relative;border-radius:20px;padding:28px 24px 22px;text-align:center;background:linear-gradient(160deg,#b8331f,#8e2116);color:#fcebd6;overflow:hidden}.invite:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid rgba(252,235,214,.35);border-radius:14px;pointer-events:none}.invite .fu{position:absolute;right:-20px;top:-30px;font-family:var(--font-serif);font-size:140px;font-weight:900;color:#ffdcb414;line-height:1}.invite small{letter-spacing:.3em;font-size:11px;opacity:.75}.invite .code{font-family:var(--font-num);font-size:34px;font-weight:700;letter-spacing:.22em;margin:12px 0 10px;color:#ffe7b8}.invite .meta{display:flex;justify-content:center;gap:16px;font-size:12px;opacity:.85;flex-wrap:wrap}.palette{margin:12vh auto auto;width:min(620px,calc(100% - 32px));background:var(--surface);border-radius:20px;box-shadow:var(--shadow-lg);border:1px solid var(--line);overflow:hidden;transform:translateY(-8px) scale(.98);transition:transform .25s var(--ease)}.overlay.show .palette{transform:none}.palette .pin{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}.palette .pin input{flex:1;border:0;outline:0;background:transparent;font-size:16px}.palette .list{max-height:52vh;overflow:auto;padding:8px}.palette .grp{font-size:11px;letter-spacing:.14em;color:var(--muted);font-weight:700;padding:10px 10px 4px}.palette .it{display:flex;align-items:center;gap:12px;padding:10px;border-radius:11px;cursor:pointer}.palette .it .ico{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--bg2);font-size:15px;flex:none}.palette .it.on{background:var(--bg2)}.palette .it.on .ico{background:var(--surface)}.palette .it small{margin-left:auto;color:var(--muted);font-size:12px}.palette .foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.toasts{position:fixed;left:50%;top:22px;transform:translate(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:10px 16px 10px 12px;border-radius:14px;background:var(--ink);color:var(--bg);box-shadow:var(--shadow-lg);font-weight:600;font-size:13.5px;animation:tin .35s var(--ease)}.toast .ok{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--red);color:#fff}.toast .ok svg{width:13px;height:13px;stroke-width:3}.toast.out{animation:tout .3s var(--ease) forwards}@keyframes tin{0%{opacity:0;transform:translateY(-10px) scale(.96)}}@keyframes tout{to{opacity:0;transform:translateY(-8px)}}.fab{display:none}@media (max-width: 1100px){.hero,.set-grid{grid-template-columns:1fr}.preview-card{position:static}.kpis{grid-template-columns:repeat(2,1fr)}.kpi b{font-size:17px}.dash2{grid-template-columns:1fr!important}}@media (max-width: 860px){.stat .v{font-size:20px}.login-wrap{grid-template-columns:1fr}.login-art{display:none}.app-shell{grid-template-columns:1fr}.side{position:fixed;left:0;top:0;z-index:50;width:280px;transform:translate(-100%);transition:transform .3s var(--ease);background:var(--bg);box-shadow:var(--shadow-lg)}body.side-open .side{transform:none}.menu-btn{display:inline-flex}.top{padding:12px 16px}.search-trigger{min-width:0}.search-trigger span,.search-trigger .kbd{display:none}.view{padding:4px 16px 90px}.page-h h1{font-size:26px}.hero-main .amt{font-size:40px}.hide-m{display:none!important}.fab{display:grid;position:fixed;right:20px;bottom:20px;z-index:30;width:58px;height:58px;border-radius:50%;background:var(--red);color:#fff;place-items:center;box-shadow:0 12px 30px -8px var(--red)}}html,body,#app{height:100%;margin:0}
