:root{--bg:#fff;--bg-soft:#eef4f0;--surface:#fff;--border:#e0e8e3;--border-strong:#d3dbd7;--text-primary:#1b2420;--text-secondary:#63726b;--text-muted:#9aa6a0;--accent:#4caf7d;--accent-dark:#2e8b5e;--accent-soft:#e7f6ec;--accent-softer:#f3faf5;--warning:#de9a32;--warning-soft:#fcf3e1;--danger:#dd5a50;--danger-soft:#fbeae8;--radius-lg:16px;--radius-md:12px;--radius-sm:8px;--font-display:"Manrope","Inter",sans-serif;--font-body:"Inter",sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg-soft);font-family:var(--font-body);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0}::selection{background:var(--accent-soft);color:var(--accent-dark)}a{color:inherit;text-decoration:none}.leaf{background:linear-gradient(135deg,var(--accent),var(--accent-dark));border-radius:0 50% 50%;flex:none;width:22px;height:22px;display:inline-block;position:relative;transform:rotate(45deg)}.leaf:after{content:"";background:#ffffff8c;border-radius:2px;width:2px;height:70%;position:absolute;top:12%;left:50%;transform:translate(-50%)}.leaf.sm{width:14px;height:14px}.btn{font-family:var(--font-body);cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:7px;font-weight:600;transition:background .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn svg{width:15px;height:15px}.btn-primary{background:var(--accent);color:#fff;padding:11px 16px;font-size:13.5px}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-secondary{border-color:var(--border-strong);color:var(--text-primary);background:#fff;padding:11px 16px;font-size:13.5px}.btn-secondary:hover:not(:disabled){background:var(--bg-soft)}.btn-ghost{color:var(--accent-dark);background:0 0;padding:8px 4px;font-size:13px}.btn-block{width:100%}.card{border:1px solid var(--border);border-radius:var(--radius-md);background:#fff;padding:18px;box-shadow:0 1px 2px #141e190a,0 8px 24px -16px #141e1926}.card-lg{border-radius:var(--radius-lg);padding:22px}.field{margin-bottom:16px}.field label{color:var(--text-secondary);margin-bottom:7px;font-size:12.5px;font-weight:600;display:block}.input{width:100%;font-family:var(--font-body);color:var(--text-primary);border:1px solid var(--border-strong);background:#fff;border-radius:10px;outline:none;padding:11px 13px;font-size:14px;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input::placeholder{color:var(--text-muted)}.input-code{letter-spacing:.4em;text-align:center;font-size:22px;font-weight:800;font-family:var(--font-display)}select.input{appearance:auto}.alert{border-radius:10px;margin-bottom:16px;padding:11px 14px;font-size:13px;line-height:1.5}.alert-danger{background:var(--danger-soft);color:#a03a31;border:1px solid #f1c9c4}.alert-success{background:var(--accent-soft);color:var(--accent-dark);border:1px solid #c3e9d2}.badge{border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-flex}.badge .dot{border-radius:50%;width:6px;height:6px}.badge-success{background:var(--accent-soft);color:var(--accent-dark)}.badge-success .dot{background:var(--accent)}.badge-warning{background:var(--warning-soft);color:#8a6113}.badge-warning .dot{background:var(--warning)}.badge-danger{background:var(--danger-soft);color:#a03a31}.badge-danger .dot{background:var(--danger)}.chip{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:99px;padding:7px 13px;font-size:12px;font-weight:600}.chip.active{background:var(--text-primary);border-color:var(--text-primary);color:#fff}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.login-shell{background:var(--bg-soft);justify-content:center;align-items:center;min-height:100%;padding:32px;display:flex}.login-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;width:100%;max-width:380px;padding:32px;box-shadow:0 1px 2px #141e190d,0 20px 44px -24px #141e1947}.login-brand{align-items:center;gap:10px;display:flex}.login-brand b{font-family:var(--font-display);font-size:18px;font-weight:800}.login-sub{color:var(--text-secondary);margin:6px 0 24px;font-size:12.5px}.login-info{background:var(--accent-softer);border:1px solid var(--accent-soft);color:var(--text-secondary);border-radius:10px;margin-bottom:18px;padding:12px 14px;font-size:12.5px;line-height:1.55}.login-info b{color:var(--accent-dark)}.login-foot{border-top:1px solid var(--border);color:var(--text-muted);text-align:center;margin-top:22px;padding-top:16px;font-size:11.5px}.app-shell{min-height:100vh;display:flex}.app-sidebar{background:var(--bg-soft);border-right:1px solid var(--border);flex-direction:column;flex:0 0 230px;width:230px;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0}.sidebar-brand{border-bottom:1px solid var(--border);align-items:center;gap:10px;margin-bottom:8px;padding:0 8px 20px;display:flex}.sidebar-brand b{font-family:var(--font-display);font-size:14.5px;font-weight:800;display:block}.sidebar-brand small{color:var(--text-muted);font-size:10.5px;font-weight:500;display:block}.app-sidebar nav{flex-direction:column;gap:2px;display:flex}.nav-item{color:var(--text-secondary);cursor:pointer;border-radius:10px;align-items:center;gap:11px;padding:10px 12px;font-size:13.5px;font-weight:600;text-decoration:none;display:flex}.nav-item svg{flex:none;width:17px;height:17px}.nav-item:hover{background:var(--accent-softer)}.nav-item.active{background:var(--accent-soft);color:var(--accent-dark)}.nav-item.disabled{color:var(--text-muted);cursor:default;font-weight:500}.nav-item.disabled:hover{background:0 0}.nav-item .soon{color:var(--text-muted);border:1px solid var(--border);background:#fff;border-radius:99px;margin-left:auto;padding:2px 6px;font-size:9.5px;font-weight:700}button.nav-item{text-align:left;background:0 0;border:none;width:100%;font-family:inherit}.sidebar-foot{border-top:1px solid var(--border);margin-top:auto;padding-top:14px}.user-card{align-items:center;gap:10px;padding:8px;display:flex}.avatar{background:var(--accent-dark);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:12px;font-weight:700;display:flex;overflow:hidden}.avatar.lg{width:46px;height:46px;font-size:14px}.avatar img{object-fit:cover;width:100%;height:100%}.user-card .name{font-size:12.5px;font-weight:700}.user-card .role{color:var(--text-muted);font-size:10.5px}.app-main{background:#fff;flex-direction:column;flex:1;min-width:0;display:flex}.app-topbar{border-bottom:1px solid var(--border);z-index:5;background:#fff;align-items:center;gap:14px;height:60px;padding:0 26px;display:flex;position:sticky;top:0}.app-topbar h3{font-family:var(--font-display);margin:0;font-size:16px;font-weight:800}.topbar-spacer{align-items:center;gap:10px;margin-left:auto;display:flex}.app-body{flex:1;padding:26px}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:2fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}.stat-icon{border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:12px;display:flex}.stat-icon svg{width:17px;height:17px}.stat-label{color:var(--text-muted);letter-spacing:.02em;margin-bottom:4px;font-size:11.5px;font-weight:600}.stat-value{font-family:var(--font-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:21px;font-weight:800}.stat-sub{color:var(--text-secondary);margin-top:4px;font-size:11px}.net-hero{background:linear-gradient(160deg,var(--accent-softer),#fff 65%);border:1px solid var(--border);text-align:center;border-radius:16px;padding:20px}.net-hero .lbl{color:var(--text-secondary);font-size:11.5px;font-weight:600}.net-hero .amt{font-family:var(--font-display);font-variant-numeric:tabular-nums;margin:6px 0 2px;font-size:30px;font-weight:800}.net-hero .date{color:var(--text-muted);font-size:11px}.kv-row{border-bottom:1px dashed var(--border);justify-content:space-between;align-items:center;padding:9px 0;font-size:12.5px;display:flex}.kv-row:last-child{border-bottom:none}.kv-row .k{color:var(--text-secondary)}.kv-row .v{font-variant-numeric:tabular-nums;font-weight:700}.kv-row.neg .v{color:var(--danger)}.kv-row.pos .v{color:var(--accent-dark)}.donut{background:conic-gradient(var(--accent) 0% var(--pct,70%),var(--bg-soft) var(--pct,70%) 100%);border:1px solid var(--border);border-radius:50%;flex:none;justify-content:center;align-items:center;width:118px;height:118px;display:flex}.donut-inner{background:#fff;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:84px;height:84px;display:flex}.donut-inner b{font-family:var(--font-display);font-size:20px;font-weight:800}.donut-inner span{color:var(--text-muted);font-size:9.5px;font-weight:600}.list-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:13px 0;display:flex}.list-row:last-child{border-bottom:none}.list-row .ic{background:var(--bg-soft);border:1px solid var(--border);width:34px;height:34px;color:var(--text-secondary);border-radius:9px;flex:none;justify-content:center;align-items:center;display:flex}.list-row .ic svg{width:15px;height:15px}.list-row .main{flex:1;min-width:0}.list-row .title{font-size:13px;font-weight:700}.list-row .meta{color:var(--text-muted);margin-top:2px;font-size:11.5px}.list-row .right{text-align:right;flex:none}hr.hair{border:none;border-top:1px solid var(--border);margin:16px 0}.center-state{min-height:60vh;color:var(--text-secondary);justify-content:center;align-items:center;font-size:14px;display:flex}.section-title{margin:22px 0 10px;font-size:13.5px;font-weight:800}.muted{color:var(--text-muted)}@media (width<=860px){.grid-3,.grid-2{grid-template-columns:1fr}.app-sidebar{display:none}}.ai-fab{bottom:20px}.ai-panel{bottom:86px}@media (width<=768px){.ai-fab{bottom:calc(55px + env(safe-area-inset-bottom,0px) + 28px);right:16px}.ai-panel{bottom:calc(55px + env(safe-area-inset-bottom,0px) + 88px);height:min(56vh,100vh - 230px);right:16px}}.spinner{box-sizing:border-box;border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toast-wrap{z-index:100;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;border-radius:12px;min-width:220px;max-width:360px;padding:12px 16px;font-size:13px;font-weight:600;animation:.25s toast-in;box-shadow:0 14px 30px -10px #141e1980}.toast-success{background:var(--accent-dark)}.toast-error{background:var(--danger)}.toast-info{background:var(--text-primary)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-pop{animation:.18s modal-pop}@keyframes modal-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.mobile-tabbar,.fab{display:none}@media (width<=860px){.mobile-tabbar{z-index:40;border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 20px -12px #141e1940}.mobile-tabbar a,.mobile-tabbar button{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px 0;font-family:inherit;font-size:10.5px;font-weight:600;text-decoration:none;display:flex}.mobile-tabbar a.active{color:var(--accent-dark)}.mobile-tabbar svg{width:20px;height:20px}.fab{right:18px;bottom:calc(84px + env(safe-area-inset-bottom,0px));z-index:45;background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:14px 20px;font-family:inherit;font-size:14px;font-weight:700;display:inline-flex;position:fixed;box-shadow:0 12px 26px -6px #141e1980}.fab:disabled{opacity:.6}.fab svg{width:20px;height:20px}.hide-on-mobile{display:none!important}.app-body{padding:16px 14px calc(74px + env(safe-area-inset-bottom,0px))}.app-topbar{padding:0 16px}.toast-wrap{right:12px;bottom:calc(76px + env(safe-area-inset-bottom,0px));left:12px}.toast{max-width:none}}html[data-theme=dark]{--bg:#10140f;--bg-soft:#171c15;--surface:#1b211a;--border:#2c3329;--border-strong:#3a4234;--text-primary:#e9eeea;--text-secondary:#a6b3ac;--text-muted:#6f7c75;--warning-soft:#33290f;--danger-soft:#331c19;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=dark] body{background:var(--bg-soft);color:var(--text-primary)}html[data-theme=dark] .card,html[data-theme=dark] .app-main,html[data-theme=dark] .login-card,html[data-theme=dark] .net-hero,html[data-theme=dark] .toast{background:var(--surface)}html[data-theme=dark] .app-topbar,html[data-theme=dark] .mobile-tabbar{background:var(--surface);border-color:var(--border)}html[data-theme=dark] .app-sidebar{background:var(--bg);border-color:var(--border)}html[data-theme=dark] .input,html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{background:var(--surface);color:var(--text-primary);border-color:var(--border)}html[data-theme=dark] .chip{background:var(--surface);color:var(--text-secondary);border-color:var(--border)}html[data-theme=dark] .list-row .ic,html[data-theme=dark] .icon-btn{background:var(--bg-soft);border-color:var(--border)}html[data-theme=dark] iframe{background:var(--surface)}html[data-theme=dark] .btn-secondary{background:var(--surface);color:var(--text-primary);border-color:var(--border-strong)}html[data-theme=dark] .btn-secondary:hover{background:var(--bg-soft)}html[data-theme=dark] .btn-ghost{color:var(--accent);background:0 0}.org{flex-direction:column;align-items:center;min-width:min-content;display:flex}.org-line{background:var(--border);width:2px;height:26px}.org-children{flex-wrap:nowrap;justify-content:center;display:flex}.org-child{padding:26px 12px 0;position:relative}.org-child:before{content:"";background:var(--border);width:2px;height:26px;position:absolute;top:0;left:50%}.org-child:after{content:"";background:var(--border);height:2px;position:absolute;top:0;left:0;right:0}.org-child:first-child:after{left:50%}.org-child:last-child:after{right:50%}.org-child:only-child:after{display:none}@media (width<=640px){.org-children{flex-flow:column wrap;align-items:center}.org-child:after{display:none}}
