.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-content{flex:1}.user-chip:hover .logout-btn{display:block!important}.nav-dropdown{position:relative;display:inline-block}.nav-dropdown-menu{display:none;position:absolute;top:100%;left:0;background:#fff;border:1px solid #e5e7eb;border-radius:6px;box-shadow:0 6px 20px #00000014;min-width:max-content;width:max-content;z-index:100;overflow:hidden;margin-top:4px}.nav-dropdown-menu a{display:block;padding:10px 18px;color:#1f2937;text-decoration:none;border-radius:0;white-space:nowrap;font-size:13px}.nav-dropdown-menu a:hover{background:#f3f4f6}.nav-dropdown-menu a.active{background:#fef3c7;color:#b45309}.nav-dropdown:hover .nav-dropdown-menu,.nav-dropdown.open .nav-dropdown-menu{display:block}.nav-dropdown-toggle{color:#374151;padding:8px 12px;border-radius:6px;text-decoration:none;font-size:14px;font-weight:500;transition:.2s;line-height:1.3;cursor:pointer;display:inline-flex;align-items:center;gap:4px;border:none;background:transparent;font-family:inherit;white-space:nowrap}.nav-dropdown-toggle:hover{background:#fef2f2;color:#dc2626}.nav-dropdown-toggle.active{color:#dc2626;text-decoration:underline;text-underline-offset:6px;font-weight:600}.nav-dropdown-toggle .caret{font-size:10px;margin-left:2px;opacity:.7}.user-chip{margin-left:auto;flex-shrink:0;cursor:pointer}.user-info{text-align:right;line-height:1.3}.user-name{font-weight:600;font-size:13px;color:#1f2937}.user-role{color:#6b7280;font-size:11px}.legacy-page-wrapper{flex:1;display:flex;flex-direction:column}.legacy-iframe{flex:1;width:100%;min-height:calc(100vh - 65px);border:none;background:#fafafa}@media (max-width: 1280px){.nav-dropdown-toggle{padding:8px 10px;font-size:13.5px}}@media (max-width: 768px){.nav-dropdown-menu{position:fixed!important;top:60px!important;left:10px!important;right:10px!important;width:auto!important;min-width:0!important;max-height:60vh;overflow-y:auto;box-shadow:0 12px 32px #0000002e!important}}.filter-input,.filter-select{padding:8px 14px;border:1.5px solid #d1d5db;border-radius:8px;font-size:13px;font-family:inherit;background:#fff;color:#1f2937;transition:border-color .2s}.filter-input:focus,.filter-select:focus{border-color:#dc2626;outline:none;box-shadow:0 0 0 3px #dc26261a}.filter-input{min-width:200px;flex:1;max-width:320px}.filter-select{min-width:140px;cursor:pointer}.btn-refresh{padding:8px 14px;border:1.5px solid #d1d5db;border-radius:8px;background:#fff;font-size:13px;font-family:inherit;cursor:pointer;color:#374151;transition:.2s}.btn-refresh:hover{background:#f3f4f6;border-color:#9ca3af}.tab-view,.tab-view-active{padding:6px 12px;font-size:12px;font-weight:600;color:#6b7280;cursor:pointer;border:none;background:none;font-family:inherit}.tab-view-active{background:#dc2626!important;color:#fff!important}.btn-create{margin-left:10px;padding:7px 18px;background:linear-gradient(135deg,#dc2626,#991b1b);color:#fff;border:0;border-radius:8px;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;box-shadow:0 2px 6px #dc26264d;display:inline-flex;align-items:center;gap:6px;transition:.2s}.btn-create:hover{transform:translateY(-1px);box-shadow:0 4px 12px #dc262666}.tbl-summary-bar{padding:8px 14px;border-bottom:1px solid #e5e7eb;background:#f9fafb;font-size:11px;color:#6b7280;display:flex;justify-content:space-between;align-items:center}.tr-clickable{cursor:pointer;transition:background .15s}.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.th-sortable:hover{background:#eff6ff!important;color:#2563eb}.cell-text{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-cell{color:#2563eb;font-weight:600}.text-red{color:#dc2626}.loading-state,.error-state,.empty-state{padding:60px 20px;text-align:center;color:#9ca3af}.loading-state{font-size:16px}.error-state{color:#dc2626;font-size:14px}.empty-state .empty-icon{font-size:48px;margin-bottom:12px}.empty-state .empty-text{font-size:16px;font-weight:600;color:#374151;margin-bottom:4px}.empty-state .empty-hint{font-size:13px;color:#9ca3af}.page-title-sub{font-size:13px;font-weight:400;color:#9ca3af}.dash-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.dash-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px 16px;box-shadow:0 2px 8px #0000000f}.dash-card .lbl{font-size:11px;color:#6b7280;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.dash-card .val{font-size:24px;font-weight:800;margin-top:4px;line-height:1.1}.dash-card .sub{font-size:11px;margin-top:4px;color:#6b7280}.dash-card.alert{border-color:#fca5a5;background:#fef2f2}.dash-card.warn{border-color:#fcd34d;background:#fffbeb}.dash-card.success{border-color:#86efac;background:#f0fdf4}.dash-card.info{border-color:#93c5fd;background:#eff6ff}.dash-2col{display:grid;grid-template-columns:1fr 380px;gap:14px;margin-bottom:14px}.dash-3col{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}.dash-section-title{font-size:14px;font-weight:700;margin-bottom:10px}.alert-row{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fef2f2;border-left:3px solid #ef4444;border-radius:4px;margin-bottom:6px;font-size:13px}.alert-row.warn{background:#fffbeb;border-left-color:#f59e0b}.alert-row.info{background:#eff6ff;border-left-color:#3b82f6}.top-list .row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px dashed #e5e7eb}.top-list .row:last-child{border-bottom:0}.top-list .num{color:#6b7280;font-size:11px;width:18px;text-align:right;flex-shrink:0;margin-right:8px;font-weight:600}.top-list .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-list .amt{font-weight:700;color:#1e40af}.chart-wrap{height:280px;position:relative}.summary-rows{font-size:13px;line-height:1.9}.summary-row{display:flex;justify-content:space-between}.summary-label{color:#6b7280}.summary-row-divider{border-top:1px dashed #e5e7eb;margin:6px 0}.text-green{color:#059669}.text-muted{font-size:11px;color:#6b7280}.top-list{font-size:13px}.top-list-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px dashed #e5e7eb;text-decoration:none;color:#1f2937;transition:.15s}.top-list-row:last-child{border-bottom:0}.top-list-row:hover{background:#fef2f2;padding-left:4px;padding-right:4px;border-radius:4px}.top-list-num{color:#9ca3af;font-size:11px;width:18px;text-align:right;flex-shrink:0;margin-right:8px;font-weight:600}.top-list-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.top-list-date{font-size:11px;color:#9ca3af;margin:0 8px;flex-shrink:0}.top-list-amt{font-weight:700;color:#1e40af;flex-shrink:0}.dash-actions{display:flex;gap:10px;flex-wrap:wrap}.dash-action-btn{padding:10px 20px;background:#fff;border:1.5px solid #d1d5db;border-radius:8px;font-size:13px;font-weight:600;font-family:inherit;text-decoration:none;color:#374151;transition:.2s;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.dash-action-btn:hover{border-color:#dc2626;color:#dc2626;transform:translateY(-1px);box-shadow:0 4px 14px #00000014}@media (max-width: 768px){.dash-grid{grid-template-columns:repeat(2,1fr)}.dash-2col{grid-template-columns:1fr}}@media (max-width: 480px){.dash-grid{grid-template-columns:1fr}}.alert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.alert-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px 18px;display:flex;align-items:center;gap:14px;cursor:pointer;transition:all .15s}.alert-card:hover{box-shadow:0 4px 14px #00000014;transform:translateY(-1px)}.alert-card.urgent{border-left:5px solid #dc2626;background:linear-gradient(135deg,#fef2f2,#fff)}.alert-card.warn{border-left:5px solid #f59e0b;background:linear-gradient(135deg,#fefce8,#fff)}.alert-card.info{border-left:5px solid #3b82f6;background:linear-gradient(135deg,#eff6ff,#fff)}.alert-icon{font-size:32px}.alert-info{flex:1;min-width:0}.alert-info .num{font-size:28px;font-weight:800;line-height:1.1}.alert-info .lbl{font-size:12px;color:#6b7280;margin-top:2px}.alert-card.urgent .alert-info .num{color:#dc2626}.alert-card.warn .alert-info .num{color:#d97706}.alert-card.info .alert-info .num{color:#1e40af}.qa-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px 18px;margin-bottom:18px}.qa-card h3{margin:0 0 10px;font-size:14px;font-weight:700;color:#374151;display:flex;align-items:center;gap:8px}.qa-btn{width:100%;padding:10px;background:#1e40af;color:#fff;border:0;border-radius:6px;font-weight:600;cursor:pointer;font-family:inherit;font-size:13px;transition:.15s}.qa-btn:hover{background:#1e3a8a}.section{background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:18px;overflow:hidden}.section-hdr{padding:12px 18px;background:#f9fafb;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.section-hdr h2{margin:0;font-size:15px;font-weight:700;color:#374151;display:flex;align-items:center;gap:8px}.count{background:#dc2626;color:#fff;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:700;margin-left:8px}.count.warn{background:#f59e0b}.count.info{background:#3b82f6}.empty{padding:24px 18px;text-align:center;color:#9ca3af;font-size:13px}.doc-row{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid #f3f4f6;cursor:pointer;transition:background .12s}.doc-row:hover{background:#fef3c7}.doc-row:last-child{border-bottom:none}.doc-badge{background:#fee2e2;color:#dc2626;padding:5px 10px;border-radius:6px;font-weight:700;font-size:11px;text-align:center;min-width:80px;flex-shrink:0}.doc-badge.future{background:#dbeafe;color:#1e40af}.doc-badge.overdue{background:#dc2626;color:#fff}.doc-info-col{flex:1;min-width:0}.doc-no-link{font-size:12px;color:#1e40af;font-weight:700}.doc-vendor{font-size:13px;font-weight:600;color:#374151;margin-top:2px}.doc-amount{font-weight:700;color:#dc2626;font-variant-numeric:tabular-nums;font-size:14px;text-align:right;flex-shrink:0}@media (max-width: 768px){.alert-grid{grid-template-columns:1fr 1fr;gap:10px}}@media (max-width: 480px){.alert-grid{grid-template-columns:1fr;gap:8px}.section-hdr{padding:10px 12px;flex-direction:column;align-items:flex-start;gap:4px}.section-hdr h2{font-size:14px}}
