:root{--ink-950:#0b0f17;--ink-900:#0f172a;--ink-800:#1e293b;--ink-700:#334155;--cream:#f8fafc;--surface:#fff;--surface-muted:#f1f5f9;--border:#e2e8f0;--border-strong:#cbd5e1;--text:#0f172a;--text-muted:#64748b;--text-faint:#94a3b8;--accent:#4f46e5;--accent-strong:#4338ca;--accent-soft:#eef2ff;--success:#16a34a;--success-soft:#dcfce7;--warning:#d97706;--warning-soft:#fef3c7;--danger:#dc2626;--danger-soft:#fee2e2;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 4px 16px #0f172a14;--shadow-lg:0 12px 32px #0f172a24;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-base:.22s;--duration-slow:.42s;color:var(--text);background:var(--cream);-webkit-font-smoothing:antialiased;font-family:Manrope,system-ui,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.55}*{box-sizing:border-box}body{min-height:100vh;margin:0}h1,h2,h3{letter-spacing:-.01em;color:var(--ink-900);margin:0;font-family:Manrope,system-ui,sans-serif;font-weight:700}h1{font-size:1.6rem}h2{font-size:1.05rem}p{margin:0}a{color:inherit}::selection{background:var(--accent-soft)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.page-header-text h1{margin-bottom:4px}.subtitle{color:var(--text-muted);font-size:.92rem}.layout{min-height:100vh;display:flex}.sidebar{background:var(--ink-950);width:250px;color:var(--cream);flex-direction:column;flex-shrink:0;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{letter-spacing:-.02em;color:#fff;align-items:center;gap:10px;margin-bottom:28px;padding:0 8px;font-size:1.1rem;font-weight:800;display:flex}.brand-mark{background:linear-gradient(155deg, var(--accent), #818cf8);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:1.05rem;display:flex}.sidebar nav{flex-direction:column;flex:1;gap:22px;display:flex}.nav-group-label{text-transform:uppercase;letter-spacing:.08em;color:#faf8f461;margin-bottom:6px;padding:0 10px;font-size:.68rem;font-weight:700}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-group-block{border-top:1px solid #ffffff14;margin-top:6px;padding-top:14px}.nav-group-block:first-of-type{border-top:none;margin-top:0;padding-top:0}.nav-link{color:#faf8f4c7;border-radius:var(--radius-sm);transition:background var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out), transform var(--duration-fast) var(--ease-out);align-items:center;gap:10px;padding:8px 10px;font-size:.9rem;font-weight:500;text-decoration:none;display:flex}.nav-link svg{opacity:.85;transition:opacity var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-spring);flex-shrink:0}.nav-link:hover{color:#fff;background:#ffffff0f;transform:translate(2px)}.nav-link:hover svg{transform:scale(1.08)}.nav-link.active{background:var(--accent);color:#fff}.nav-link.active svg{opacity:1}.user-box{border-top:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:8px;margin-top:14px;padding-top:14px;display:flex}.user-identity{align-items:center;gap:10px;min-width:0;display:flex}.avatar{background:var(--accent-soft);width:34px;height:34px;color:var(--accent-strong);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.user-identity-text{min-width:0}.user-identity-text strong{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;display:block;overflow:hidden}.role-tag{color:#faf8f48c;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem}.icon-button{border-radius:var(--radius-sm);color:#faf8f4cc;cursor:pointer;width:34px;height:34px;transition:background var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out), transform var(--duration-fast) var(--ease-out);background:0 0;border:1px solid #ffffff24;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:active{transform:scale(.92)}.icon-button:hover{color:#fff;background:#ffffff14}.content{flex:1;min-width:0;max-width:1100px;padding:36px 44px 60px}.login-page{background:radial-gradient(circle at 20% 20%, var(--ink-800) 0%, var(--ink-950) 60%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:340px;box-shadow:var(--shadow-lg);flex-direction:column;gap:6px;padding:36px 32px;display:flex}.login-brand-mark{background:linear-gradient(155deg, var(--accent), #818cf8);border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;margin-bottom:14px;font-size:1.4rem;display:flex}.login-card h1{margin-bottom:2px}.login-card .subtitle{margin-bottom:22px}.login-card form{flex-direction:column;display:flex}label{color:var(--text-muted);flex-direction:column;gap:5px;margin-bottom:14px;font-size:.82rem;font-weight:600;display:flex}.form-row{flex-wrap:wrap;gap:14px;display:flex}.form-row label{flex:1;min-width:160px}.checkbox-row{flex-direction:row;align-items:center;gap:8px}input,select,textarea{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);transition:border-color var(--duration-base) var(--ease-out), box-shadow var(--duration-base) var(--ease-out);padding:9px 12px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}textarea{resize:vertical;min-height:60px;font-family:inherit}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}input[type=checkbox].switch{appearance:none;background:var(--border-strong);cursor:pointer;width:38px;min-width:38px;height:22px;transition:background-color var(--duration-base) var(--ease-out);border-radius:999px;margin:0;position:relative}input[type=checkbox].switch:before{content:"";width:18px;height:18px;transition:transform var(--duration-base) var(--ease-spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0f172a40}input[type=checkbox].switch:checked{background:var(--accent)}input[type=checkbox].switch:checked:before{transform:translate(16px)}input[type=checkbox].switch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:none}button{font:inherit;background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-base) var(--ease-out), transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-base) var(--ease-out);border:none;align-items:center;gap:6px;padding:10px 18px;font-size:.88rem;font-weight:600;display:inline-flex}button:hover{background:var(--accent-strong)}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:default}button:disabled:hover{background:var(--accent)}.btn-secondary{background:var(--surface-muted);color:var(--ink-900)}.btn-secondary:hover{background:var(--border)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}.login-card button{justify-content:center;margin-top:6px;padding:11px 18px}.user-box button{color:#faf8f4d9;background:0 0;border:1px solid #ffffff29;padding:7px 12px;font-size:.8rem}.user-box button:hover{background:#ffffff14}.data-table button,.upload-inline{background:var(--surface-muted);color:var(--ink-900);border:1px solid #0000;padding:6px 12px;font-size:.8rem;font-weight:600}.data-table button:hover{background:var(--border)}.data-table button.btn-danger{background:var(--danger-soft);color:var(--danger)}.data-table button.btn-danger:hover{background:var(--danger);color:#fff}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:22px;padding:22px 24px}.card-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.card>h2:first-child,.card-header h2{margin-bottom:16px}.card-header h2{margin-bottom:0}.collapsible{padding:0}.collapsible-header{border-radius:var(--radius-md);cursor:pointer;text-align:left;width:100%;color:var(--text);font:inherit;transition:background var(--duration-base) var(--ease-out);background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;margin:0;padding:22px 24px;display:flex}.collapsible-header:hover{background:var(--surface-muted)}.collapsible-header:active{transform:none}.collapsible-title{color:var(--ink-900);align-items:center;gap:8px;font-family:Manrope,system-ui,sans-serif;font-size:1.05rem;font-weight:700;display:flex}.collapsible-header-right{flex-shrink:0;align-items:center;gap:12px;display:flex}.collapsible-summary{color:var(--text-muted);white-space:nowrap;font-size:.82rem;font-weight:500}.collapsible-chevron{color:var(--text-muted);transition:transform var(--duration-base) var(--ease-out);flex-shrink:0}.collapsible-chevron.open{transform:rotate(180deg)}.collapsible-body{padding:0 24px 22px}.table-wrapper{overscroll-behavior-inline:contain;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);width:100%;max-width:100%;overflow-x:auto}.table-wrapper .data-table{min-width:980px}.supplier-table-wrapper .supplier-table{min-width:1260px}.supplier-table input:not(.switch),.supplier-table select{max-width:100%}.supplier-term-input{width:92px}.supplier-table .supplier-actions{z-index:1;background:var(--surface);position:sticky;right:0;box-shadow:-10px 0 14px -14px #0f172a73}.supplier-table tbody tr:hover .supplier-actions{background:var(--surface-muted)}.invoice-table-wrapper .data-table{min-width:1080px}.data-table{border-collapse:collapse;width:100%;margin-top:4px}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:11px 12px;font-size:.87rem}.data-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.74rem;font-weight:600}.data-table tbody tr{transition:background var(--duration-base) var(--ease-out)}.data-table tbody tr:hover{background:var(--surface-muted)}.data-table tbody tr:last-child td{border-bottom:none}.expense-chart-card{padding-bottom:18px}.expense-chart-header{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:8px;display:flex}.expense-chart-header h2{margin-bottom:3px}.expense-chart-total{color:var(--ink-900);white-space:nowrap;font-size:1.05rem;font-weight:800}.expense-chart-viewport{width:100%}.expense-chart{width:100%;height:auto;min-height:250px;display:block;overflow:visible}.expense-chart-grid{stroke:var(--border);stroke-width:1px;vector-effect:non-scaling-stroke}.expense-chart-axis-label{fill:var(--text-muted);font-size:11px}.expense-chart-area{fill:var(--accent-soft);opacity:.75}.expense-chart-line{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.expense-chart-point{fill:var(--surface);stroke:var(--accent);stroke-width:3px;vector-effect:non-scaling-stroke;pointer-events:none}.expense-chart-hit-area{fill:#0000;cursor:pointer}.expense-chart-hit-area:focus{stroke:var(--accent);stroke-width:2px;outline:none}.expense-chart-tooltip rect{fill:var(--ink-900);filter:drop-shadow(0 4px 8px #0f172a33)}.expense-chart-tooltip text{fill:#fff}.expense-chart-tooltip-period{font-size:11px;font-weight:600}.expense-chart-tooltip-value{font-size:13px;font-weight:800}.expense-chart-data{color:var(--text-muted);margin-top:4px;font-size:.82rem}.expense-chart-data summary{cursor:pointer;width:fit-content;font-weight:600}.expense-chart-data .table-wrapper{margin-top:10px}.expense-chart-data .data-table{min-width:480px}.muted{color:var(--text-muted);font-size:.8rem}.badge{border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.muted{background:var(--surface-muted);color:var(--text-muted)}.badge.accent{background:var(--accent-soft);color:var(--accent-strong)}.progress-track{background:var(--surface-muted);border-radius:999px;width:100%;height:6px;margin-top:4px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width var(--duration-slow) var(--ease-out);border-radius:999px}.progress-fill.complete{background:var(--success)}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:24px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);color:inherit;transition:transform var(--duration-base) var(--ease-out), box-shadow var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out);flex-direction:column;gap:10px;padding:18px 20px;text-decoration:none;display:flex}a.stat-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-3px)}a.stat-card:active{transition-duration:var(--duration-fast);transform:translateY(-1px)}.stat-card-icon{background:var(--accent-soft);width:36px;height:36px;color:var(--accent-strong);transition:transform var(--duration-base) var(--ease-spring);border-radius:10px;justify-content:center;align-items:center;display:flex}a.stat-card:hover .stat-card-icon{transform:scale(1.08)rotate(-4deg)}.stat-card-icon.attention{background:var(--warning-soft);color:var(--warning)}.stat-card-value{color:var(--ink-900);letter-spacing:-.02em;font-size:1.7rem;font-weight:800}.stat-card-label{color:var(--text-muted);font-size:.82rem;font-weight:500}.quick-links-group{margin-bottom:20px}.quick-links-group-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:10px;font-size:.78rem;font-weight:700}.quick-links{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:24px;display:grid}.quick-link{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--ink-900);transition:border-color var(--duration-base) var(--ease-out), background var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-out);align-items:center;gap:10px;padding:14px 16px;font-size:.87rem;font-weight:600;text-decoration:none;display:flex}.quick-link:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-2px)}.quick-link:active{transition-duration:var(--duration-fast);transform:translateY(0)}.quick-link svg{color:var(--accent-strong);transition:transform var(--duration-base) var(--ease-spring);flex-shrink:0}.quick-link:hover svg{transform:scale(1.1)}.notification-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.notification-list li{border-left:3px solid var(--accent);background:var(--surface-muted);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px}.notification-list li.read{border-left-color:var(--border-strong);opacity:.65}.notification-list li p{margin:3px 0 0;font-size:.87rem}.timestamp{color:var(--text-muted);font-size:.75rem}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:36px 20px;display:flex}.empty-state svg{color:var(--text-faint);margin-bottom:4px}.empty-state-title{color:var(--text);font-size:.92rem;font-weight:600}.empty-state-hint{max-width:320px;font-size:.82rem}.loading-row{color:var(--text-muted);align-items:center;gap:10px;padding:8px 0;font-size:.87rem;display:flex}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:999px;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-text{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius-sm);margin-bottom:18px;padding:10px 14px;font-size:.87rem}.page-loading{min-height:100vh;color:var(--text-muted);justify-content:center;align-items:center;gap:10px;display:flex}@media (prefers-reduced-motion:no-preference){@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.card,.stat-card,.quick-link{animation:rise-in var(--duration-slow) var(--ease-out) both}.content .card:nth-of-type(2){animation-delay:60ms}.content .card:nth-of-type(3){animation-delay:.12s}.content .card:nth-of-type(n+4){animation-delay:.18s}.stat-grid>:nth-child(2){animation-delay:40ms}.stat-grid>:nth-child(3){animation-delay:80ms}.stat-grid>:nth-child(n+4){animation-delay:.12s}.quick-links>:nth-child(2){animation-delay:30ms}.quick-links>:nth-child(3){animation-delay:60ms}.quick-links>:nth-child(n+4){animation-delay:90ms}}@media (width<=860px){.layout{flex-direction:column}.sidebar{flex-direction:row;align-items:center;gap:10px;width:100%;height:auto;padding:10px 12px;position:static}.brand{flex-shrink:0;margin-bottom:0;font-size:0}.brand-mark{font-size:1.05rem}.sidebar nav{flex-direction:row;flex:1;gap:4px;min-width:0;overflow-x:auto}.nav-group{flex-direction:row}.nav-link{white-space:nowrap}.nav-group-label{display:none}.nav-group-block{border-top:none;border-left:1px solid #ffffff24;align-items:center;margin-top:0;margin-left:4px;padding-top:0;padding-left:8px;display:flex}.nav-group-block:first-of-type{border-left:none;margin-left:0;padding-left:0}.user-box{border-top:none;flex-shrink:0;margin-top:0;padding-top:0}.user-identity-text{display:none}.content{padding:24px 20px 40px}.expense-chart-header{flex-direction:column;gap:6px}.expense-chart{min-height:210px}}
