:root,:root[data-theme=light]{color-scheme:light;--ink: rgba(0, 0, 0, .9);--ink-2: rgba(0, 0, 0, .6);--ink-3: rgba(0, 0, 0, .45);--disabled: rgba(0, 0, 0, .3);--bg: #f9fbfc;--card: #ffffff;--soft: #f5f5f5;--modal: #ffffff;--selected-surface: #ffffff;--line: rgba(0, 0, 0, .13);--hover: rgba(0, 0, 0, .03);--selected: rgba(0, 0, 0, .05);--mask: rgba(0, 0, 0, .4);--toast-bg: #2b2b2b;--white: #ffffff;--blue: #1783ff;--blue-mid: #357af6;--chart-navy: #0f2d55;--chart-mid: #a0d2fb;--blue-light: #e2f1fe;--blue-soft: #ebf2fe;--blue-soft-2: #d7e5fd;--blue-medium: #93b7f9;--blue-deep: #0f4c9e;--kimi-card-light: #e2f1fe;--kimi-card-soft: #ebf2fe;--kimi-card-medium: #93b7f9;--primary-hover: rgba(37, 37, 37, 1);--danger: rgba(0, 0, 0, .9)}:root[data-theme=dark]{color-scheme:dark;--ink: rgba(255, 255, 255, .84);--ink-2: rgba(255, 255, 255, .56);--ink-3: rgba(255, 255, 255, .42);--disabled: rgba(255, 255, 255, .26);--bg: #161717;--card: #121212;--soft: #1f1f1f;--modal: #292929;--selected-surface: #4d4d4d;--line: rgba(255, 255, 255, .12);--hover: rgba(255, 255, 255, .05);--selected: rgba(255, 255, 255, .1);--mask: rgba(0, 0, 0, .6);--toast-bg: #404040;--white: #ffffff;--blue: #1a88ff;--blue-mid: #357af6;--chart-navy: #0f2d55;--chart-mid: #a0d2fb;--blue-light: #e2f1fe;--blue-soft: #1a2a4a;--blue-soft-2: #1c3560;--blue-medium: #2358a5;--blue-deep: #4a91f8;--kimi-card-light: #1a2a4a;--kimi-card-soft: #1a2a4a;--kimi-card-medium: #2358a5;--primary-hover: rgba(255, 255, 255, .848);--danger: rgba(255, 255, 255, .84)}:root{--font: "PingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--type-caption: 400 12px/18px var(--font);--type-body: 400 14px/20px var(--font);--type-control: 500 14px/20px var(--font);--type-input: 400 16px/24px var(--font);--type-section: 500 16px/24px var(--font);--type-title: 600 20px/30px var(--font);--type-number: 600 20px/30px var(--font);--weight-regular: 400;--weight-medium: 500;--weight-strong: 600;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-xl: 16px;--line-2: var(--line);--on-blue: var(--ink);--on-blue-dim: var(--ink-2);--fast: .2s;--mid: .25s;--ease-out: cubic-bezier(.23,1,.32,1);--sidebar-width: 224px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%}h1,h2,h3,p{margin:0}ul,ol{list-style:none;margin:0;padding:0}button,input,select,textarea{color:inherit}button{border:0;background:none;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent;transition:background .2s ease,color .2s ease}button:disabled{cursor:not-allowed;opacity:.45}input,select,textarea{border:0;background:none;min-width:0;max-width:100%}input:focus,select:focus,textarea:focus{outline:1px solid var(--ink);outline-offset:0}img{display:block;max-width:100%}svg{flex-shrink:0}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}::selection{background:var(--blue-soft-2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.anum{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.appshell{min-height:100dvh;background:var(--bg)}.skip-link{position:absolute;left:-999px;top:0;background:var(--card);padding:10px 16px;z-index:60;border-radius:var(--radius-sm)}.skip-link:focus{left:8px;top:8px}.appbody{min-height:100dvh;display:flex;flex-direction:column}.workspace{flex:1;display:flex;flex-direction:column;min-width:0}.appmain{flex:1;overflow-y:auto;outline:none}.page-content{max-width:920px;margin:0 auto;padding:16px 16px calc(96px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.page-heading .head-actions{display:flex;gap:8px;align-items:center}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:10px 16px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar .brand-mini{display:flex;align-items:center;gap:8px;color:var(--ink-2)}.topbar .spacer{flex:1}.topbar-user{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:var(--soft);border:1px solid var(--line);cursor:pointer;min-height:36px}.topbar-user:hover{background:var(--hover)}.avatar-dot{width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;flex-shrink:0}.sidebar{display:none}@media (min-width: 1024px){.appbody{flex-direction:row}.sidebar{display:flex;flex-direction:column;gap:4px;width:var(--sidebar-width);flex-shrink:0;padding:20px 12px;border-right:1px solid var(--line);position:sticky;top:0;height:100dvh}.workspace{min-height:100dvh}.page-content{padding:24px 28px 64px}}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:6px 10px 18px;color:var(--ink)}.sidebar-brand .brand-mark{width:34px;height:34px;border-radius:10px;background:var(--blue);color:#fff;display:grid;place-items:center}.sidebar-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);color:var(--ink-2);width:100%;text-align:left;min-height:44px}.sidebar-item:hover{background:var(--hover);color:var(--ink)}.sidebar-item.is-active{background:var(--blue-soft);color:var(--blue-deep)}:root[data-theme=dark] .sidebar-item.is-active{color:var(--blue-deep)}.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;gap:4px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--card) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line)}@media (min-width: 1024px){.tabbar{display:none}}.tabbar-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:var(--radius-sm);color:var(--ink-3);min-height:48px;justify-content:center}.tabbar-btn.is-active{color:var(--blue)}.tabbar-btn:active{background:var(--hover)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-xl);padding:16px}.card-pad-lg{padding:20px}.statgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media (min-width: 720px){.statgrid{grid-template-columns:repeat(4,1fr)}}.statcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:6px;min-width:0}.statcard .statcap{color:var(--ink-3);display:flex;align-items:center;gap:6px}.statcard strong{color:var(--ink);overflow-wrap:anywhere}.statcard.is-accent{background:var(--blue-soft);border-color:transparent}.statcard .gain-pos{color:#0d8a4d}.statcard .gain-neg{color:#c93b3b}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}.panel-heading .filters{display:flex;gap:6px;flex-wrap:wrap}.primarybtn,.ghostbtn,.dangerbtn,.minibtn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:var(--radius-md);min-height:44px;padding:10px 16px;cursor:pointer;transition:background var(--fast) var(--ease-out),color var(--fast),opacity var(--fast)}.primarybtn{background:var(--ink);color:var(--bg)}.primarybtn:hover:not(:disabled){background:var(--primary-hover)}.ghostbtn{background:var(--soft);color:var(--ink);border:1px solid var(--line)}.ghostbtn:hover:not(:disabled){background:var(--hover)}.dangerbtn{background:#c93b3b;color:#fff}.dangerbtn:hover:not(:disabled){background:#b32f2f}.minibtn{min-height:34px;padding:6px 12px;background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink)}.minibtn:hover:not(:disabled){background:var(--hover)}.minibtn.is-danger{color:#c93b3b}.iconbtn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-sm);color:var(--ink-2);cursor:pointer}.iconbtn:hover{background:var(--hover);color:var(--ink)}.chipbtn{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:6px 12px;border-radius:999px;background:var(--soft);border:1px solid var(--line);color:var(--ink-2);cursor:pointer}.chipbtn.is-on{background:var(--blue-soft);border-color:transparent;color:var(--blue-deep)}.chipbtn:hover{background:var(--hover)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;background:var(--soft);color:var(--ink-2);white-space:nowrap}.badge.is-open{background:#fff4db;color:#8a6100}.badge.is-closed{background:#e2f5e9;color:#0d7a43}.badge.is-infra,.badge.is-owner{background:var(--blue-soft);color:var(--blue-deep)}.badge.is-off{background:#f6dcdc;color:#a02c2c}:root[data-theme=dark] .badge.is-open{background:#3a2f14;color:#e0b95c}:root[data-theme=dark] .badge.is-closed{background:#123324;color:#5fce95}:root[data-theme=dark] .badge.is-off{background:#3a1d1d;color:#e08a8a}.invlist{display:flex;flex-direction:column;gap:10px}.invrow{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;display:flex;flex-direction:column;gap:10px}.invrow-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.invrow-title{display:flex;flex-direction:column;gap:6px;min-width:0}.invrow-title h3{overflow-wrap:anywhere}.invrow-badges{display:flex;gap:6px;flex-wrap:wrap}.invrow-amount{text-align:right;flex-shrink:0}.invrow-amount .anum{display:block}.invrow-meta{display:flex;gap:14px;flex-wrap:wrap;color:var(--ink-3)}.invrow-meta span{display:inline-flex;align-items:center;gap:5px}.invrow-note{color:var(--ink-2);background:var(--soft);border-radius:var(--radius-sm);padding:8px 10px;overflow-wrap:anywhere}.invrow-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:10px}.gain-pos{color:#0d8a4d}.gain-neg{color:#c93b3b}.boardgrid{display:grid;grid-template-columns:1fr;gap:12px}@media (min-width: 720px){.boardgrid{grid-template-columns:repeat(2,1fr)}}.boardcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-xl);padding:16px;display:flex;flex-direction:column;gap:10px;cursor:pointer;text-align:left;transition:border-color var(--fast),transform var(--fast) var(--ease-out)}.boardcard:hover{border-color:var(--blue-medium)}.boardcard:active{transform:scale(.99)}.boardcard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.boardcard-stats{display:flex;gap:16px;flex-wrap:wrap;color:var(--ink-2)}.boardcard-stats b{color:var(--ink)}.memberchips{display:flex;gap:6px;flex-wrap:wrap}.memberchip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:var(--soft);border:1px solid var(--line);min-height:32px}.memberchip .avatar-dot{width:20px;height:20px}.memberchip.is-inactive{opacity:.55}.memberchip button{display:inline-grid;place-items:center;color:var(--ink-3);min-width:24px;min-height:24px;border-radius:50%}.memberchip button:hover{color:#c93b3b;background:var(--hover)}.board-head{display:flex;flex-direction:column;gap:12px}.board-head-row{display:flex;align-items:flex-start;gap:10px}.board-head-row .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.board-tabs{display:flex;gap:6px}.postlist{display:flex;flex-direction:column;gap:10px}.postcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;display:flex;flex-direction:column;gap:10px}.postcard-by{display:flex;align-items:center;gap:8px;color:var(--ink-2);flex-wrap:wrap}.eventlist{display:flex;flex-direction:column}.eventrow{display:flex;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line);align-items:flex-start}.eventrow:last-child{border-bottom:0}.eventrow .avatar-dot{width:28px;height:28px;margin-top:2px}.eventrow-body{min-width:0;display:flex;flex-direction:column;gap:3px}.eventrow-note{color:var(--ink-2);background:var(--soft);border-radius:var(--radius-sm);padding:6px 10px;margin-top:4px;overflow-wrap:anywhere}.eventrow-time{color:var(--ink-3)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{color:var(--ink-2)}.field input,.field select,.field textarea{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px;width:100%;min-height:46px}.field textarea{min-height:84px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--blue);outline-offset:0;border-color:transparent}.field .hint{color:var(--ink-3)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kindgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kindcell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;border-radius:var(--radius-md);background:var(--soft);border:1.5px solid var(--line);cursor:pointer;min-height:64px;justify-content:center;color:var(--ink-2)}.kindcell.is-on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-deep)}.checklist{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.checkrow{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);background:var(--soft);border:1.5px solid var(--line);cursor:pointer;min-height:48px}.checkrow.is-on{border-color:var(--blue);background:var(--blue-soft)}.checkrow .grow{flex:1;min-width:0}.checkrow .box{width:22px;height:22px;border-radius:6px;border:1.5px solid var(--ink-3);display:grid;place-items:center;color:transparent;flex-shrink:0}.checkrow.is-on .box{background:var(--blue);border-color:var(--blue);color:#fff}.formerr{background:#f6dcdc;color:#a02c2c;border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:12px}:root[data-theme=dark] .formerr{background:#3a1d1d;color:#e08a8a}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}.sheetmask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--mask);display:flex;align-items:flex-end;justify-content:center}@media (min-width: 720px){.sheetmask{align-items:center;padding:24px}}.modalsheet{background:var(--modal);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:520px;max-height:92dvh;overflow-y:auto;padding:18px 18px calc(18px + env(safe-area-inset-bottom));outline:none;animation:sheet-in .22s var(--ease-out)}@media (min-width: 720px){.modalsheet{border-radius:var(--radius-xl);padding:22px}}@keyframes sheet-in{0%{transform:translateY(24px) scale(.98);opacity:0}to{transform:none;opacity:1}}.sheethead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.sheethead-title{color:var(--ink)}.loginwrap{min-height:100dvh;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}.logincard{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-xl);padding:28px 24px;display:flex;flex-direction:column;gap:6px}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:10px}.login-brand .brand-mark{width:40px;height:40px;border-radius:12px;background:var(--blue);color:#fff;display:grid;place-items:center}.login-sub{color:var(--ink-2);margin-bottom:18px}.login-hint{margin-top:16px;color:var(--ink-3);background:var(--soft);border-radius:var(--radius-sm);padding:10px 12px}.login-hint code{background:var(--selected);border-radius:4px;padding:1px 6px}.usertable{display:flex;flex-direction:column;gap:8px}.userrow{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:12px 14px;flex-wrap:wrap}.userrow .grow{flex:1;min-width:140px;display:flex;flex-direction:column;gap:3px}.userrow .who{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.userrow-actions{display:flex;gap:6px;flex-wrap:wrap}.blank{text-align:center;padding:48px 20px;color:var(--ink-3);display:flex;flex-direction:column;align-items:center;gap:12px}.blank .blank-icon{width:64px;height:64px;border-radius:20px;background:var(--soft);display:grid;place-items:center;color:var(--ink-3)}.errorbox{text-align:center;padding:48px 20px;display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--ink-2)}.loading-state{display:flex;flex-direction:column;gap:12px;padding:20px 0;align-items:center;color:var(--ink-3)}.skeleton{border-radius:var(--radius-lg);background:linear-gradient(100deg,var(--soft) 40%,var(--hover) 50%,var(--soft) 60%);background-size:200% 100%;animation:shimmer 1.4s infinite;width:100%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-summary{height:96px}.skeleton-list{height:220px}.toaststack{position:fixed;left:50%;transform:translate(-50%);bottom:calc(84px + env(safe-area-inset-bottom));z-index:70;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(92vw,420px)}@media (min-width: 1024px){.toaststack{bottom:28px}}.toast{background:var(--toast-bg);color:#fff;border-radius:var(--radius-md);padding:11px 16px;animation:toast-in .22s var(--ease-out);max-width:100%}@keyframes toast-in{0%{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}.subtle{color:var(--ink-3)}.divider{height:1px;background:var(--line);margin:4px 0}.grow{flex:1;min-width:0}body{font:var(--type-body)}button,input,select,textarea{font:inherit}small{font:var(--type-caption)}strong,b{font-weight:var(--weight-medium)}h1,.sidebar-brand,.login-brand strong{font:var(--type-title)}.statcard strong,.invrow-amount .anum,.boardcard-stats b{font:var(--type-number)}h2,.sheethead-title,.invrow-title h3,.boardcard-name,.panel-heading h2,.userrow .who strong,.postcard-invest-title{font:var(--type-section)}h3,.primarybtn,.ghostbtn,.dangerbtn,.minibtn,.chipbtn,.sidebar-item,.topbar-user,.checkrow,.kindcell,.memberchip{font:var(--type-control)}.field label,.boardcard,.invrow-note,.eventrow-note,.postcard{font:var(--type-body)}.subtle,.statcard .statcap,.invrow-meta,.eventrow-time,.boardcard-sub,.badge,.field .hint,.blank p,.login-hint,.tabbar-btn,.list-meta,.userrow .usermeta,.breadcrumb{font:var(--type-caption)}input,select,textarea{font:var(--type-input)}
