:root{--text:#5f5868;--text-h:#08060d;--bg:#fff;--bg-soft:#f6f5f1;--border:#e3e2e6;--accent:#8a2be2;--accent-fg:#fff;--accent-bg:#8a2be21a;--accent-border:#8a2be280;--success:#15803d;--warning:#a35a00;--danger:#c0262b;--danger-fg:#fff;--info:#1d4ed8;--shadow:#00000014 0 10px 15px -3px, #0000000a 0 4px 6px -2px;--radius:10px;--sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);font:15px/1.5 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#a4a8b3;--text-h:#f3f4f6;--bg:#16171d;--bg-soft:#1e1f27;--border:#2e303a;--accent:#c084fc;--accent-fg:#1e0a33;--accent-bg:#c084fc26;--accent-border:#c084fc80;--success:#4ade80;--warning:#fbbf24;--danger:#f87171;--danger-fg:#1c0a0a;--info:#60a5fa;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{width:100%;overflow-x:hidden}body{background:var(--bg);color:var(--text);width:100%;min-height:100svh;margin:0;overflow-x:hidden}#root{width:100%;min-height:100svh;overflow-x:hidden}h1,h2,h3{color:var(--text-h);letter-spacing:-.01em;margin:0;font-weight:600}p{margin:0}a{color:var(--accent)}code{font-family:var(--mono);background:var(--bg-soft);color:var(--text-h);border-radius:4px;padding:2px 6px;font-size:.9em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.skip-link{z-index:200;background:var(--accent);color:var(--accent-fg);border-radius:8px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:top .15s;position:absolute;top:-48px;left:12px}.skip-link:focus{top:12px}.btn{min-height:38px;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);cursor:pointer;white-space:nowrap;touch-action:manipulation;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-size:14px;font-weight:500;transition:background .15s,border-color .15s,filter .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--bg-soft)}.btn:active{filter:brightness(.95);transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn-primary:hover{background:var(--accent);filter:brightness(.93)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--danger-fg)}.btn-danger:hover{background:var(--danger);filter:brightness(.93)}.btn-sm{border-radius:7px;min-height:32px;padding:4px 10px;font-size:13px}.btn-icon{border-radius:8px;width:34px;min-width:34px;height:34px;padding:0}.btn .icon{flex:none}.icon{vertical-align:middle;width:18px;height:18px;display:inline-block}.input,.select{font:inherit;border:1px solid var(--border);background:var(--bg);min-height:38px;color:var(--text-h);appearance:none;border-radius:8px;width:100%;max-width:100%;padding:7px 11px;font-size:14px;transition:border-color .15s,box-shadow .15s}.select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:32px}.input::placeholder{color:var(--text);opacity:.7}.input:focus,.select:focus{border-color:var(--accent-border);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.input:disabled,.select:disabled{background:var(--bg-soft);cursor:not-allowed;opacity:.7}.field{text-align:left;flex-direction:column;gap:6px;width:100%;margin-bottom:14px;display:flex}.field>label{color:var(--text-h);font-size:13px;font-weight:500}.field .hint{color:var(--text);font-size:12px;line-height:1.45}.check{color:var(--text-h);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:14px;display:inline-flex}.check input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer;margin:0}.form-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0 14px;width:100%;display:grid}.input.is-invalid,.select.is-invalid{border-color:var(--danger);box-shadow:0 0 0 1px color-mix(in srgb, var(--danger) 35%, transparent)}.field-error{color:var(--danger);margin-top:2px;font-size:12.5px}.login-wrap{min-height:100svh;padding:max(16px, env(safe-area-inset-top,16px)) max(16px, env(safe-area-inset-right,16px)) max(16px, env(safe-area-inset-bottom,16px)) max(16px, env(safe-area-inset-left,16px));background:radial-gradient(60% 55% at 18% 12%, var(--accent-bg), transparent 70%), radial-gradient(50% 50% at 88% 88%, var(--accent-bg), transparent 70%), var(--bg-soft);place-items:center;display:grid;position:relative;overflow:hidden}.login-card{z-index:1;border:1px solid var(--border);width:384px;max-width:100%;box-shadow:var(--shadow);background:var(--bg);text-align:left;border-radius:18px;padding:34px 30px 28px;position:relative}.login-brand{align-items:center;gap:10px;margin-bottom:20px;display:flex}.login-logo,.brand-logo{color:#fff;width:40px;height:40px;box-shadow:0 4px 12px var(--accent-bg);background:linear-gradient(140deg,#a855f7,#6d28d9);border-radius:11px;flex:none;place-items:center;display:grid}.login-brand-name{color:var(--text-h);font-size:17px;font-weight:600}.login-card h1{color:var(--text-h);margin:0 0 6px;font-size:24px}.login-card .sub{margin:0 0 24px;font-size:13.5px;line-height:1.45}.login-submit{width:100%;min-height:42px;margin-top:8px;font-size:15px}.login-foot{text-align:center;margin-top:18px;font-size:12.5px}.shell{grid-template-columns:240px minmax(0,1fr);width:100%;min-height:100svh;display:grid}.mobile-header,.sidebar-backdrop,.sidebar-header{display:none}.sidebar{border-right:1px solid var(--border);background:var(--bg);z-index:30;flex-direction:column;gap:3px;height:100svh;padding:18px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{color:var(--text-h);align-items:center;gap:10px;padding:4px 8px 16px;font-size:16px;font-weight:600;display:flex}.sidebar .brand-logo{border-radius:9px;width:32px;height:32px}.sidebar nav{flex-direction:column;gap:3px;display:flex}.nav-item{min-height:40px;color:var(--text);font:inherit;cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item .icon{opacity:.85;flex:none}.nav-item:hover{background:var(--bg-soft);color:var(--text-h)}.nav-item.active{background:var(--accent-bg);color:var(--accent);font-weight:600}.nav-item.active .icon{opacity:1}.sidebar .spacer{flex:1}.sidebar .who{color:var(--text);border-top:1px solid var(--border);margin-top:8px;padding:10px 12px 6px;font-size:12.5px;overflow:hidden}.sidebar .who strong{color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.main{width:100%;min-width:0;max-width:1400px;padding:28px 32px 48px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;margin-bottom:22px;display:flex}.page-head h1{font-size:26px;line-height:1.2}.page-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.grid{gap:16px;width:100%;display:grid}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));margin-bottom:22px}.breakdown-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.card{border:1px solid var(--border);background:var(--bg);border-radius:12px;min-width:0;padding:18px;box-shadow:0 1px 3px #00000005}.stat .label{color:var(--text);margin-bottom:8px;font-size:13px}.stat .value{color:var(--text-h);font-variant-numeric:tabular-nums;font-size:30px;font-weight:600;line-height:1.1}.stat .delta{color:var(--accent);margin-top:6px;font-size:12.5px;line-height:1.35}.card h3{color:var(--text-h);margin:0 0 14px;font-size:15px}.chart-card{margin-bottom:22px}.chart-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.chart-meta{font-size:13px}.chart-container{width:100%;height:220px;min-height:180px}.list{flex-direction:column;gap:10px;display:flex}.list-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.breakdown-key{color:var(--text-h);overflow-wrap:anywhere;font-size:13.5px}.table-wrap{border:1px solid var(--border);-webkit-overflow-scrolling:touch;background:var(--bg);border-radius:12px;width:100%;max-width:100%;position:relative;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:580px;font-size:14px}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid var(--border);padding:11px 14px}th{text-transform:uppercase;letter-spacing:.4px;color:var(--text);background:var(--bg-soft);white-space:nowrap;font-size:12px;font-weight:600}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--bg-soft)}td.num{font-variant-numeric:tabular-nums}td.actions{white-space:nowrap;text-align:right}td.actions .btn+.btn{margin-left:6px}.cell-title{color:var(--text-h);font-weight:500;line-height:1.35}.cell-sub{color:var(--text);font-size:13px;line-height:1.35}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.badge{background:var(--bg-soft);color:var(--text-h);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 9px;font-size:12px;font-weight:500;line-height:1.4;display:inline-flex}.badge.green{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-color:#0000}.badge.red{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);border-color:#0000}.badge.amber{background:color-mix(in srgb, var(--warning) 16%, transparent);color:var(--warning);border-color:#0000}.badge.blue{background:color-mix(in srgb, var(--info) 14%, transparent);color:var(--info);border-color:#0000}.badge.violet{background:var(--accent-bg);color:var(--accent);border-color:#0000}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;width:100%;margin-bottom:16px;display:flex}.toolbar .input,.toolbar .select{width:auto;min-width:160px}.toolbar .search-input{flex:240px}.pager{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-top:16px;font-size:14px;display:flex}.muted{color:var(--text);font-size:14px}.text-h{color:var(--text-h)}.text-danger{color:var(--danger)}.error-box{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 30%, transparent);border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:14px}.center-state{text-align:center;color:var(--text);border:1px dashed var(--border);border-radius:12px;width:100%;padding:56px 16px}.center-state.plain{border:none;padding:32px 16px}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(4px);background:#00000080;place-items:center;padding:24px;animation:.15s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{-webkit-overflow-scrolling:touch;background:var(--bg);border:1px solid var(--border);width:480px;max-width:100%;max-height:calc(100svh - 48px);box-shadow:var(--shadow);border-radius:14px;outline:none;padding:22px 24px 24px;animation:.18s ease-out pop-in;overflow-y:auto}.modal.wide{width:620px}.modal-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.modal h2{overflow-wrap:anywhere;font-size:18px;line-height:1.3}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:14px;display:flex}.modal h3{margin:20px 0 10px;font-size:14px}.kv{grid-template-columns:130px 1fr;gap:8px 14px;margin:0;font-size:14px;display:grid}.kv dt{color:var(--text)}.kv dd{color:var(--text-h);overflow-wrap:anywhere;margin:0}.timeline{flex-direction:column;gap:10px;display:flex}.timeline-row{align-items:flex-start;gap:10px;font-size:13px;display:flex}.timeline-row .badge{flex:none}.prose{white-space:pre-wrap;color:var(--text-h);overflow-wrap:anywhere;font-size:14px;line-height:1.6}.toast-wrap{bottom:max(20px, env(safe-area-inset-bottom,20px));right:max(20px, env(safe-area-inset-right,20px));z-index:150;flex-direction:column-reverse;gap:10px;max-width:min(380px,100vw - 40px);display:flex;position:fixed}.toast{border:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow);color:var(--text-h);border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;animation:.18s ease-out toast-in;display:flex}.toast-body{flex-direction:column;flex:1;gap:10px;display:flex}.toast-msg{overflow-wrap:anywhere;line-height:1.4}.toast-actions{justify-content:flex-end;gap:8px;display:flex}.toast-close{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;margin:-4px -4px 0 0;padding:4px;display:grid}.toast-close:hover{color:var(--text-h);background:var(--bg-soft)}.toast-error{border-left:3px solid var(--danger)}.toast-success{border-left:3px solid var(--success)}.toast-info{border-left:3px solid var(--accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (width<=820px){.shell{grid-template-columns:1fr;min-height:100svh}.mobile-header{z-index:50;padding:max(10px, env(safe-area-inset-top,10px)) max(14px, env(safe-area-inset-right,14px)) 10px max(14px, env(safe-area-inset-left,14px));background:var(--bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.mobile-toggle{border:1px solid var(--border);background:var(--bg);width:38px;height:38px;color:var(--text-h);cursor:pointer;border-radius:8px;place-items:center;padding:0;display:grid}.mobile-toggle:hover{background:var(--bg-soft)}.mobile-header .brand{color:var(--text-h);align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.mobile-header .brand-logo{border-radius:8px;width:28px;height:28px}.mobile-current-page{color:var(--accent);background:var(--accent-bg);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;align-items:center;gap:5px;max-width:120px;padding:3px 8px;font-size:12px;font-weight:500;display:inline-flex;overflow:hidden}.sidebar-backdrop{z-index:90;-webkit-backdrop-filter:blur(4px);background:#00000080;animation:.2s ease-out fade-in;display:block;position:fixed;inset:0}.sidebar-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:8px;padding:4px 6px 14px;display:flex}.sidebar-header .brand{padding:0}.mobile-close-btn{border:1px solid var(--border);background:var(--bg);width:36px;height:36px;color:var(--text-h);cursor:pointer;border-radius:8px;place-items:center;padding:0;display:grid}.mobile-close-btn:hover{background:var(--bg-soft)}.sidebar{z-index:100;width:280px;max-width:85vw;height:100svh;padding:max(16px, env(safe-area-inset-top,16px)) 14px max(16px, env(safe-area-inset-bottom,16px)) max(14px, env(safe-area-inset-left,14px));border-right:1px solid var(--border);border-bottom:none;transition:transform .25s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;transform:translate(-100%);box-shadow:0 0 25px #00000040}.sidebar.open{transform:translate(0)}.sidebar nav{flex-direction:column;gap:3px;overflow-y:auto}.sidebar .spacer,.sidebar .who{display:block}.sidebar .brand-name{display:inline}.main{padding:18px max(14px, env(safe-area-inset-right,14px)) max(36px, env(safe-area-inset-bottom,36px)) max(14px, env(safe-area-inset-left,14px))}.page-head h1{font-size:22px}}@media (width<=640px){.page-head{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:16px}.page-head h1{font-size:21px}.page-actions{justify-content:space-between;width:100%}.page-actions .btn{flex:1;min-height:38px}.toolbar{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:14px}.toolbar .input,.toolbar .select,.toolbar .btn{min-height:38px;width:100%!important;min-width:0!important}.toolbar .search-input{flex:none;width:100%}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px}.stat{padding:14px 12px}.stat .label{margin-bottom:4px;font-size:12px}.stat .value{font-size:22px}.stat .delta{font-size:11.5px}.chart-card{margin-bottom:18px;padding:14px 12px}.chart-header{flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:12px}.chart-container{height:190px}.breakdown-grid{grid-template-columns:1fr;gap:12px}.breakdown-card{padding:14px 12px}.table-wrap{border-radius:10px}table{font-size:13px}th,td{padding:9px 11px}th{font-size:11px}td.actions .btn{min-height:28px;padding:3px 8px;font-size:12px}td.actions .btn+.btn{margin-left:4px}.pager{justify-content:space-between;gap:8px;width:100%;margin-top:14px}.pager .btn{min-height:36px;padding:6px 12px}.modal-backdrop{align-items:flex-end;padding:0}.modal{width:100%;max-width:100%;max-height:calc(90svh - env(safe-area-inset-top,0px));padding:20px 16px max(24px, env(safe-area-inset-bottom,24px));border-bottom:none;border-radius:18px 18px 0 0;animation:.22s cubic-bezier(.16,1,.3,1) slide-up}.modal.wide{width:100%}.modal-head{margin-bottom:14px}.modal-head h2{font-size:17px}.modal-actions{flex-direction:column-reverse;gap:8px;width:100%;margin-top:18px}.modal-actions .btn{width:100%;min-height:40px}.form-row{grid-template-columns:1fr;gap:0}.kv{grid-template-columns:100px 1fr;gap:8px 10px;font-size:13.5px}.toast-wrap{left:12px;right:12px;bottom:max(12px, env(safe-area-inset-bottom,12px));max-width:none}.toast{padding:10px 12px;font-size:13.5px}.login-card{border-radius:14px;padding:24px 18px 20px}.login-card h1{font-size:21px}}@media (width<=380px){.stat-grid{grid-template-columns:1fr;gap:8px}.kv{grid-template-columns:1fr;gap:2px 0;margin-bottom:6px}.kv dt{opacity:.8;font-size:12px}.kv dd{margin-bottom:8px}.mobile-current-page{display:none}.page-head h1{font-size:19px}}
