:root{--brand-50: #EDFBF3;--brand-100: #C6F0D6;--brand-200: #9DE5B8;--brand-300: #6EDB97;--brand-400: #3DD074;--brand-500: #07C160;--brand-600: #06AD56;--brand-700: #05964A;--brand-800: #04803E;--brand-900: #036A32;--primary: var(--brand-500);--primary-dark: var(--brand-600);--primary-light: var(--brand-50);--accent-500: #0EA5E9;--accent-600: #0284C7;--secondary: #06B6D4;--success: #10B981;--success-light: #D1FAE5;--success-dark: #065F46;--warning: #F59E0B;--warning-light: #FEF3C7;--warning-dark: #92400E;--danger: #EF4444;--danger-light: #FEE2E2;--danger-dark: #991B1B;--info: #06B6D4;--info-light: #CFFAFE;--info-dark: #155E75;--gray-50: #F9FAFB;--gray-100: #F3F4F6;--gray-200: #E5E7EB;--gray-300: #D1D5DB;--gray-400: #9CA3AF;--gray-500: #6B7280;--gray-600: #4B5563;--gray-700: #374151;--gray-800: #1F2937;--gray-900: #111827;--text-primary: var(--gray-900);--text-secondary: var(--gray-500);--text-muted: var(--gray-400);--text-inverse: #FFFFFF;--bg-page: var(--gray-50);--bg-card: #FFFFFF;--bg-sidebar: #F7F7F7;--bg-sidebar-active: var(--brand-50);--bg-sidebar-hover: var(--gray-100);--bg-hover: var(--gray-50);--bg-selected: var(--brand-50);--bg-tooltip: var(--gray-800);--border: var(--gray-200);--border-light: #F1F5F9;--border-focus: var(--brand-400);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-xs: 0 1px 2px rgba(0,0,0,.05);--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 16px rgba(0,0,0,.08);--shadow-lg: 0 8px 32px rgba(0,0,0,.12);--shadow-xl: 0 16px 48px rgba(0,0,0,.16);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 30px;--sidebar-width: 240px;--sidebar-collapsed-width: 60px;--topbar-height: 64px;--transition-fast: all .15s ease;--transition: all .2s ease;--transition-slow: all .3s ease;--ease-out-expo: cubic-bezier(.16, 1, .3, 1)}[data-theme=dark]{--brand-50: #052E16;--brand-100: #0A3D1F;--brand-200: #0F5228;--brand-300: #166B34;--brand-400: #1D8741;--brand-500: #07C160;--brand-600: #3DD074;--brand-700: #6EDB97;--brand-800: #9DE5B8;--brand-900: #C6F0D6;--primary: var(--brand-500);--primary-dark: var(--brand-400);--primary-light: var(--brand-50);--success-light: #064E3B;--warning-light: #78350F;--danger-light: #7F1D1D;--info-light: #164E63;--text-primary: #F1F5F9;--text-secondary: #94A3B8;--text-muted: #64748B;--text-inverse: #0F172A;--bg-page: #0F172A;--bg-card: #1E293B;--bg-sidebar: #1E1E1E;--bg-sidebar-active: rgba(7,193,96,.15);--bg-sidebar-hover: #2A2A2A;--bg-hover: #334155;--bg-selected: var(--brand-50);--bg-tooltip: #475569;--border: #334155;--border-light: #1E293B;--border-focus: var(--brand-400);--shadow-xs: 0 1px 2px rgba(0,0,0,.3);--shadow-sm: 0 1px 3px rgba(0,0,0,.4);--shadow-md: 0 4px 16px rgba(0,0,0,.4);--shadow-lg: 0 8px 32px rgba(0,0,0,.5);--shadow-xl: 0 16px 48px rgba(0,0,0,.6)}[data-theme=dark] body{background:var(--bg-page);color:var(--text-primary)}[data-theme=dark] .form-control,[data-theme=dark] .search-input,[data-theme=dark] .filter-select{background:#1e293b;border-color:#334155;color:#f1f5f9}[data-theme=dark] .form-control:focus,[data-theme=dark] .search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #07c16026}[data-theme=dark] .form-control::placeholder{color:#64748b}[data-theme=dark] .input-prefix,[data-theme=dark] .input-suffix{background:#334155;border-color:#475569;color:#94a3b8}[data-theme=dark] .form-floating-label{color:#64748b}[data-theme=dark] .form-control:focus~.form-floating-label{color:var(--primary)}[data-theme=dark] .modal{background:#1e293b;color:#f1f5f9}[data-theme=dark] .modal-header{border-bottom-color:#334155}[data-theme=dark] .modal-footer{background:#1a2536;border-top-color:#334155}[data-theme=dark] .modal-close:hover{background:#334155}[data-theme=dark] tbody td{border-bottom-color:#334155}[data-theme=dark] tbody tr:nth-child(2n) td{background:#1a2536}[data-theme=dark] tbody tr:hover td{background:var(--brand-50)!important}[data-theme=dark] tbody tr.row-selected td{background:var(--brand-100)!important}[data-theme=dark] .badge-success{background:#064e3b;color:#34d399}[data-theme=dark] .badge-warning{background:#78350f;color:#fbbf24}[data-theme=dark] .badge-danger{background:#7f1d1d;color:#f87171}[data-theme=dark] .badge-info{background:#164e63;color:#22d3ee}[data-theme=dark] .badge-secondary{background:#334155;color:#94a3b8}[data-theme=dark] .badge-primary{background:var(--brand-50);color:var(--brand-600)}[data-theme=dark] .stat-icon.blue{background:var(--brand-50);color:var(--brand-500)}[data-theme=dark] .stat-icon.green{background:#064e3b;color:#34d399}[data-theme=dark] .stat-icon.amber{background:#78350f;color:#fbbf24}[data-theme=dark] .stat-icon.red{background:#7f1d1d;color:#f87171}[data-theme=dark] .stat-icon.purple{background:#1e1b4b;color:var(--secondary)}[data-theme=dark] .stat-icon.cyan{background:#164e63;color:#22d3ee}[data-theme=dark] .progress-bar-bg,[data-theme=dark] .topbar-btn:hover{background:#334155}[data-theme=dark] .nav-item.active{background:#07c16026;color:var(--brand-500)}[data-theme=dark] .btn-outline{border-color:#475569;color:#94a3b8}[data-theme=dark] .btn-outline:hover{background:var(--brand-50);color:var(--brand-600)}[data-theme=dark] .btn-logout{border-color:#475569;color:#94a3b8}[data-theme=dark] .btn-logout:hover{background:#ef444433;border-color:#ef4444;color:#f87171}[data-theme=dark] .user-avatar{background:#334155;color:#94a3b8}[data-theme=dark] .sidebar-logo{border-bottom-color:#334155}[data-theme=dark] .logo-img{box-shadow:0 0 0 1.5px #07c16066,0 0 8px #07c16026}[data-theme=dark] .logo-text{color:#f1f5f9}[data-theme=dark] .modal-overlay{background:#000000b3}[data-theme=dark] .modal-detail .detail-section{border-bottom-color:#334155}[data-theme=dark] .toast{background:#334155;color:#f1f5f9;box-shadow:0 8px 24px #0006}[data-theme=dark] thead th{background:#1e293b;color:#94a3b8}[data-theme=dark] .printer-card{background:var(--bg-card)}[data-theme=dark] .printer-card:hover{border-color:var(--primary)}[data-theme=dark] .printer-stat-item{background:#1a2536}[data-theme=dark] .timeline-dot{border-color:#1e293b}[data-theme=dark] .bill-card{background:var(--bg-card)}[data-theme=dark] .bill-card-header{background:#1a2536;border-bottom-color:#334155}[data-theme=dark] .bill-line,[data-theme=dark] .rate-item,[data-theme=dark] .activity-item,[data-theme=dark] .detail-item{border-bottom-color:#334155}[data-theme=dark] .detail-item:nth-child(odd){border-right-color:#334155}[data-theme=dark] .volume-input-group .vol-label,[data-theme=dark] .volume-input-group .vol-unit{background:#1a2536;border-color:#475569}[data-theme=dark] .fee-breakdown{background:#1a2536;border-color:#334155}[data-theme=dark] .fee-row.total{border-top-color:var(--primary)}[data-theme=dark] .tab-group{background:#334155}[data-theme=dark] .tab-btn.active{background:#1e293b}[data-theme=dark] .quick-action-btn{background:var(--bg-card)}[data-theme=dark] .alert-banner.warning{border-color:#78350f;color:#fbbf24}[data-theme=dark] .alert-banner.info{border-color:#164e63;color:#22d3ee}[data-theme=dark] .alert-banner.danger{border-color:#7f1d1d;color:#f87171}[data-theme=dark] .contract-list-item{background:var(--bg-card)}[data-theme=dark] .contract-list-item:hover{border-color:var(--primary)}[data-theme=dark] .contract-id-badge{background:#334155;color:#94a3b8}[data-theme=dark] th.sortable:hover{background:#1a2536}[data-theme=dark] .data-table thead th{background:#1e293b;border-bottom-color:#334155}[data-theme=dark] .pagination-info select{background:#1e293b;border-color:#334155;color:#f1f5f9}[data-theme=dark] .pagination-btns button{background:#1e293b;border-color:#334155;color:#94a3b8}[data-theme=dark] .pagination-btns button:hover:not(:disabled){border-color:var(--primary);background:var(--brand-50)}[data-theme=dark] .pagination-jump input{background:#1e293b;border-color:#475569;color:#f1f5f9}[data-theme=dark] .batch-bar{background:#1a2536;border-color:#334155}[data-theme=dark] .billing-due-header{background:#1a2536;border-bottom-color:#334155}[data-theme=dark] .billing-card-empty{border-color:#475569}[data-theme=dark] .credit-badge.credit-A{background:#064e3b;color:#34d399}[data-theme=dark] .credit-badge.credit-C{background:#7f1d1d;color:#f87171}[data-theme=dark] .credit-badge.credit-L{background:#374151;color:#9ca3af}.credit-badge.credit-L{background:#f3f4f6;color:#9ca3af}[data-theme=dark] .bg-blue-light,[data-theme=dark] .bg-green-light,[data-theme=dark] .bg-indigo-light{background:#1a2536}[data-theme=dark] .filter-chip{background:#1e293b;border-color:#475569;color:#94a3b8}[data-theme=dark] .filter-chip:hover{border-color:var(--primary)}[data-theme=dark] .filter-chip.active{background:var(--brand-50)}[data-theme=dark] .billing-detail-item,[data-theme=dark] .billing-row-even{background:#1a2536}[data-theme=dark] .billing-row-odd{background:#1e293b}[data-theme=dark] .billing-customer-name{color:#34d399}[data-theme=dark] .billing-contract-no{color:#e2e8f0}[data-theme=dark] .billing-month{color:#34d399}[data-theme=dark] .code-tag{background:#334155;color:#94a3b8}[data-theme=dark] .page-container::-webkit-scrollbar-thumb,[data-theme=dark] .table-wrapper::-webkit-scrollbar-thumb,[data-theme=dark] .modal-body::-webkit-scrollbar-thumb{background:#475569}[data-theme=dark] .page-container::-webkit-scrollbar-thumb:hover,[data-theme=dark] .table-wrapper::-webkit-scrollbar-thumb:hover,[data-theme=dark] .modal-body::-webkit-scrollbar-thumb:hover{background:#64748b}[data-theme=dark] .page-container,[data-theme=dark] .table-wrapper,[data-theme=dark] .modal-body{scrollbar-color:#475569 transparent}[data-theme=dark] .tab-btn:hover{background:#1e293b}[data-theme=dark] .tab-btn.active{background:#0f172a}[data-theme=dark] .tab-btn.active:after{background:var(--brand-500)}[data-theme=dark] .tab-btn .tab-close:hover{background:#ef444440;color:#f87171}[data-theme=dark] .breadcrumb-sep{color:#475569}[data-theme=dark] .export-btn-sm{background:#1e293b;border-color:var(--primary);color:var(--primary)}[data-theme=dark] .export-btn-sm:hover{background:var(--brand-50)}[data-theme=dark] .expand-btn{background:#1e293b;border-color:var(--primary);color:var(--primary)}[data-theme=dark] .expand-btn:hover{background:var(--brand-50)}[data-theme=dark] .stat-sub{color:#64748b}[data-theme=dark] .attach-zone{background:#1a2536;border-color:#475569}[data-theme=dark] .attach-zone.dragover{background:#1e293b;border-color:var(--primary)}[data-theme=dark] .attach-item{background:#1a2536;border-color:#334155}[data-theme=dark] .form-label-sm{color:#94a3b8}[data-theme=dark] .form-input-sm{background:#1e293b;border-color:#475569;color:#f1f5f9}[data-theme=dark] .form-input-sm:focus{box-shadow:0 0 0 2px #07c16026}[data-theme=dark] .bg-readonly{background:#1e293b}[data-theme=dark] .searchable-dropdown,[data-theme=dark] .dropdown-menu{background:#1e293b;border-color:#475569;box-shadow:0 4px 12px #0006}[data-theme=dark] .dropdown-item{color:#e2e8f0}[data-theme=dark] .dropdown-item.danger:hover{background:#ef444426}[data-theme=dark] .dropdown-item.success:hover{background:#10b98126}[data-theme=dark] .dropdown-divider{background:#334155}[data-theme=dark] .badge-red{background:#7f1d1d;color:#fca5a5;border-color:#991b1b}[data-theme=dark] .badge-orange{background:#78350f;color:#fdba74;border-color:#92400e}[data-theme=dark] .badge-green{background:#064e3b;color:#86efac;border-color:#065f46}[data-theme=dark] .badge-purple{background:#064e3b;color:#34d399;border-color:#065f46}[data-theme=dark] .badge-gray{background:#334155;color:#94a3b8;border-color:#475569}[data-theme=dark] .contract-info-label{color:#64748b}[data-theme=dark] .contract-sub-table th{color:#94a3b8}[data-theme=dark] .contract-sub-table td{border-bottom-color:#334155}[data-theme=dark] .search-clear-btn{color:#475569}[data-theme=dark] .search-clear-btn:hover{color:#64748b}[data-theme=dark] .bill-row-id{background:#334155;color:#94a3b8}[data-theme=dark] .filter-panel{background:#1a2536}[data-theme=dark] .filter-input,[data-theme=dark] .filter-select-input{background:#1e293b;border-color:#475569;color:#f1f5f9}[data-theme=dark] .card-toolbar-divider{background:#334155}[data-theme=dark] .billing-empty-icon{opacity:.6}[data-theme=dark] .border-green{border-color:#065f46}[data-theme=dark] .border-red{border-color:#7f1d1d}[data-theme=dark] .border-gray{border-color:#334155}[data-theme=dark] .bg-red-50{background:#ef44441f}[data-theme=dark] .bg-green-50{background:#10b9811f}[data-theme=dark] .bg-amber-50{background:#fbbf241f}[data-theme=dark] .bg-blue-50{background:#07c1601f}[data-theme=dark] .bg-purple-50{background:#a855f71f}[data-theme=dark] .bg-gray-50{background:#1a2536}[data-theme=dark] .bg-gray-100{background:#1e293b}[data-theme=dark] .bg-sky-50{background:#07c1601f}[data-theme=dark] .bg-slate-50{background:#1a2536}[data-theme=dark] .border-sky-200,[data-theme=dark] .border-slate-200{border-color:#334155}[data-theme=dark] .border-green-300{border-color:#065f46}[data-theme=dark] .border-blue-200{border-color:#334155}[data-theme=dark] .text-slate-600{color:#64748b}[data-theme=dark] .text-slate-500,[data-theme=dark] .text-slate-400{color:#94a3b8}[data-theme=dark] .text-blue-700,[data-theme=dark] .text-blue-800{color:#34d399}[data-theme=dark] .contract-item{background:var(--bg-card)}[data-theme=dark] .progress-label{color:#94a3b8}[data-theme=dark] .table-section-header{background:#1a2536}[data-theme=dark] .shadow-sm{box-shadow:0 1px 2px #0003}[data-theme=dark] .shadow{box-shadow:0 1px 3px #0000004d}[data-theme=dark] .shadow-md{box-shadow:0 4px 6px #0000004d}[data-theme=dark] .shadow-lg{box-shadow:0 10px 15px #0000004d}[data-theme=dark] .chart-container .chart-backdrop{fill:transparent}[data-theme=dark] .bg-secondary{background:#1a2536}:root{--radius: var(--radius-md);--radius-lg: var(--radius-lg);--radius-xl: var(--radius-xl);--shadow: var(--shadow-md);--transition: var(--transition)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg-page);color:var(--text-primary);display:flex;min-height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);min-height:100vh;background:var(--bg-sidebar);display:flex;flex-direction:column;flex-shrink:0;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:transform .3s ease;border-right:1px solid var(--border)}.sidebar-logo{display:flex;align-items:center;gap:12px;padding:20px 18px 18px;border-bottom:1px solid var(--border);position:relative;overflow:hidden}.sidebar-logo:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--primary),var(--secondary));opacity:0}.logo-text{font-size:14px;font-weight:700;color:var(--text-primary);letter-spacing:.3px;line-height:1.3}.logo-img{width:34px;height:34px;object-fit:contain;border-radius:8px;flex-shrink:0;box-shadow:0 0 0 1.5px #07c1604d,0 2px 6px #07c1601a}.sidebar-section-label{padding:20px 20px 6px;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;-webkit-user-select:none;user-select:none}.sidebar-nav{padding:8px 0;flex:1;overflow-y:auto}.sidebar-user{position:relative;border-top:1px solid var(--border);padding:10px 12px;background:var(--bg-sidebar)}.sidebar-user-btn{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;background:transparent;border:none;border-radius:10px;cursor:pointer;color:var(--text-primary);transition:var(--transition);font-family:inherit}.sidebar-user-btn:hover{background:var(--bg-sidebar-hover)}.sidebar-user-btn .user-avatar{width:36px;height:36px;background:var(--gray-200);color:var(--text-secondary);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0}[data-theme=dark] .sidebar-user-btn .user-avatar{background:#94a3b833;color:#e2e8f0}.sidebar-user-meta{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;flex:1;min-width:0}.sidebar-user-meta .user-name{font-size:13.5px;font-weight:600;color:var(--text-primary);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-meta .user-role{font-size:11px;color:var(--text-muted)}.user-chevron{width:16px;height:16px;opacity:.5;color:var(--text-secondary);transition:transform .2s ease;flex-shrink:0}.sidebar-user.open .user-chevron{transform:rotate(180deg)}.sidebar-user-menu{position:absolute;bottom:calc(100% - 4px);left:12px;right:12px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:6px;box-shadow:0 12px 30px #0000002e;z-index:200;display:none}.sidebar-user.open .sidebar-user-menu{display:block}.sidebar-user-menu .menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:none;background:transparent;border-radius:8px;font-size:13px;color:var(--text-secondary);cursor:pointer;text-decoration:none;transition:var(--transition);font-family:inherit}.sidebar-user-menu .menu-item:hover{background:var(--bg-sidebar-hover);color:var(--text-primary)}.sidebar-user-menu .menu-item svg{width:16px;height:16px;opacity:.7;flex-shrink:0}.sidebar-user-menu .menu-item.danger{color:#f87171}.sidebar-user-menu .menu-item.danger:hover{background:#ef44441f;color:#ef4444}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 18px;margin:2px 8px;color:var(--text-secondary);text-decoration:none;font-size:13.5px;font-weight:500;transition:var(--transition);border-radius:8px;position:relative;overflow:hidden}.nav-item:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%) scaleY(0);width:3px;height:18px;background:var(--primary);border-radius:0 3px 3px 0;transition:transform .2s cubic-bezier(.4,0,.2,1)}.nav-item:hover{background:var(--bg-sidebar-hover);color:var(--text-primary);transform:translate(1px)}.nav-item.active{background:var(--bg-sidebar-active);color:var(--brand-600);font-weight:600}.nav-item.active:before{transform:translateY(-50%) scaleY(1)}.nav-item.active .nav-icon{color:var(--primary)}.nav-item-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.nav-item-toggle:hover{background:var(--bg-sidebar-hover);color:var(--text-primary)}.nav-item-toggle.expanded{background:var(--bg-sidebar-active);color:var(--brand-600);font-weight:600}.nav-item-toggle.expanded .nav-toggle-arrow{transform:rotate(180deg)}.nav-toggle-arrow{width:16px;height:16px;margin-left:auto;opacity:.35;color:var(--text-secondary);transition:transform .25s var(--ease-out-expo),opacity .2s;flex-shrink:0}.nav-item-toggle:hover .nav-toggle-arrow{opacity:.6}.nav-item-toggle.expanded .nav-toggle-arrow{opacity:.5;color:var(--brand-500)}.nav-submenu{max-height:0;overflow:hidden;transition:max-height .3s var(--ease-out-expo),opacity .25s ease;opacity:0}.nav-submenu.expanded{max-height:200px;opacity:1}.nav-sub-item{padding:8px 14px 8px 50px!important;font-size:12.5px!important;margin:0 8px!important;border-radius:6px!important;position:relative;color:var(--text-muted)!important;gap:10px!important}.nav-sub-item:before{display:none!important}.nav-sub-item:hover{background:var(--bg-sidebar-hover)!important;color:var(--text-primary)!important}.nav-sub-item.active{background:var(--bg-sidebar-active)!important;color:var(--brand-600)!important;font-weight:600!important}.sub-icon{width:14px;height:14px;flex-shrink:0;opacity:.45;color:var(--text-muted);transition:opacity .2s,color .2s;display:flex;align-items:center;justify-content:center}.sub-icon svg{width:100%;height:100%}.nav-sub-item:hover .sub-icon{opacity:.7;color:var(--text-secondary)}.nav-sub-item.active .sub-icon{opacity:.8;color:var(--brand-500)}[data-theme=dark] .nav-item-toggle.expanded{background:#07c1601f;color:var(--brand-500)}[data-theme=dark] .nav-sub-item.active{background:#07c1601f!important}.nav-icon{width:18px;height:18px;flex-shrink:0;opacity:.7;transition:opacity .2s}.nav-item:hover .nav-icon,.nav-item.active .nav-icon{opacity:1}.main-content{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-height:100vh;overflow:hidden}.topbar{height:var(--topbar-height);background:var(--bg-card);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:16px;position:sticky;top:0;z-index:50}.menu-toggle{display:none;background:none;border:none;cursor:pointer;color:var(--text-secondary);padding:4px;border-radius:6px}.topbar-title{font-size:16px;font-weight:600;color:var(--text-primary);flex:1}.topbar-actions{display:flex;align-items:center;gap:16px}.current-date{font-size:13px;color:var(--text-secondary)}.topbar-btn{width:34px;height:34px;background:transparent;border:none;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:var(--transition-fast)}.topbar-btn:hover{background:var(--gray-100);color:var(--text-primary)}.topbar-user{display:flex;align-items:center;gap:8px}.user-name{font-size:13px;font-weight:500;color:var(--text-primary)}.user-avatar{width:36px;height:36px;background:var(--gray-200);color:var(--text-secondary);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;cursor:pointer}.btn-logout{width:32px;height:32px;background:transparent;border:1px solid var(--border);border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:var(--transition)}.btn-logout:hover{background:#ef444433;border-color:#ef4444;color:#f87171}.tab-bar{height:40px;background:var(--bg-card);border-bottom:1px solid var(--border);display:flex;align-items:stretch;overflow:hidden;position:sticky;top:var(--topbar-height);z-index:40;flex-shrink:0}.tab-bar-inner{display:flex;align-items:stretch;overflow-x:auto;overflow-y:hidden;flex:1;scrollbar-width:none}.tab-bar-inner::-webkit-scrollbar{display:none}.tab-btn{display:flex;align-items:center;gap:6px;padding:0 14px;font-size:13px;color:var(--text-secondary);background:transparent;border:none;border-right:1px solid var(--border);cursor:pointer;white-space:nowrap;position:relative;transition:color .15s,background .15s;-webkit-user-select:none;user-select:none}.tab-btn:hover{color:var(--text-primary);background:var(--gray-50)}.tab-btn.active{color:var(--primary);background:var(--bg-body)}.tab-btn.active:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2.5px;background:var(--primary);border-radius:2px 2px 0 0}.tab-btn .tab-close{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;font-size:12px;line-height:1;color:var(--text-muted);opacity:0;transition:opacity .15s,background .15s,color .15s;margin-left:2px;flex-shrink:0}.tab-btn:hover .tab-close,.tab-btn.active .tab-close{opacity:1}.tab-btn .tab-close:hover{background:#ef444426;color:#ef4444}.tab-btn .tab-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);opacity:0;flex-shrink:0}.tab-btn .tab-icon{width:15px;height:15px;flex-shrink:0;opacity:.6}.tab-pane{display:none;flex:1;overflow-y:auto;animation:tabFadeIn .25s ease}.tab-pane.active{display:block}@keyframes tabFadeIn{0%{opacity:0}to{opacity:1}}.page-container-legacy,.page-container{flex:1;overflow-y:auto;padding:24px;animation:pageIn .3s ease}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.page-title{font-size:20px;font-weight:700;color:var(--text-primary)}.page-subtitle{font-size:13px;color:var(--text-secondary);margin-top:2px}.card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.card-header{padding:18px 20px 0;display:flex;align-items:center;justify-content:space-between}.card-title{font-size:15px;font-weight:600;color:var(--text-primary)}.card-body{padding:16px 20px 20px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-bottom:24px}.stats-grid-5{grid-template-columns:repeat(5,1fr)}.stats-grid-6{grid-template-columns:repeat(6,1fr)}.stats-grid-7{grid-template-columns:repeat(7,1fr)}.stat-card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:20px;display:flex;align-items:flex-start;gap:16px;transition:var(--transition)}.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg{width:24px;height:24px}.stat-icon.blue{background:var(--primary-light);color:var(--primary)}.stat-icon.green{background:var(--success-light);color:var(--success)}.stat-icon.amber{background:var(--warning-light);color:var(--warning)}.stat-icon.red{background:var(--danger-light);color:var(--danger)}.stat-icon.purple{background:#f3e8ff;color:var(--secondary)}.stat-icon.cyan{background:var(--info-light);color:var(--info)}.stat-info{flex:1;min-width:0}.stat-label{font-size:12.5px;color:var(--text-secondary);margin-bottom:4px}.stat-value{font-size:24px;font-weight:700;color:var(--text-primary);line-height:1;margin-bottom:6px}.stat-trend{font-size:12px;display:flex;align-items:center;gap:4px}.stat-trend.up{color:var(--success)}.stat-trend.down{color:var(--danger)}.table-wrapper{overflow-x:auto;border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{background:#f8fafc;padding:12px 16px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:12px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap;transition:background .15s}tbody td{padding:13px 16px;border-bottom:1px solid #F1F5F9;color:var(--text-primary);vertical-align:middle;transition:background .15s,color .15s}tbody tr:last-child td{border-bottom:none}tbody tr:nth-child(2n) td{background:var(--gray-50)}tbody tr:hover td{background:var(--brand-50)!important;color:var(--brand-900)}tbody tr.row-selected td{background:var(--brand-100)!important;box-shadow:inset 3px 0 0 var(--primary)}tbody tr.row-clickable{cursor:pointer}tbody tr.row-clickable:hover td{background:var(--brand-50)!important}tr .row-action-group{display:flex;gap:4px;opacity:0;transition:opacity .15s}tr:hover .row-action-group{opacity:1}.table-wrapper.sticky-header{max-height:480px;overflow-y:auto}.table-wrapper.sticky-header thead th{position:sticky;top:0;z-index:10;box-shadow:0 1px 0 var(--border)}.table-empty-cell{text-align:center;padding:48px 24px!important;color:var(--text-muted);font-size:14px;background:transparent!important}.table-empty-cell svg{width:48px;height:48px;margin:0 auto 12px;opacity:.3;display:block}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500;white-space:nowrap}.badge-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.badge-success{background:var(--success-light);color:#065f46}.badge-warning{background:var(--warning-light);color:#92400e}.badge-danger{background:var(--danger-light);color:#991b1b}.badge-info{background:var(--info-light);color:#155e75}.badge-secondary{background:#f1f5f9;color:#475569}.badge-primary{background:var(--brand-50);color:var(--primary-dark)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);font-size:13.5px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:var(--transition);text-decoration:none;white-space:nowrap}.btn svg{width:16px;height:16px}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.btn-success{background:var(--success);color:#fff;border-color:var(--success)}.btn-success:hover{background:#059669}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-outline{background:transparent;color:var(--text-secondary);border-color:var(--border)}.btn-outline:hover{background:var(--brand-50);color:var(--primary-dark)}.btn-sm{padding:5px 11px;font-size:12.5px}.btn-xs{padding:3px 8px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.form-group{margin-bottom:16px;position:relative}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-primary);margin-bottom:6px;transition:color .15s}.form-label .required{color:var(--danger);margin-left:2px}.form-control{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;color:var(--text-primary);background:#fff;transition:border-color .2s,box-shadow .2s,background .15s;outline:none;font-family:inherit}.form-control::placeholder{color:var(--text-muted)}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px #07c1601f;background:#fff}.form-group:focus-within .form-label{color:var(--primary-dark)}.form-control.is-valid{border-color:var(--success);box-shadow:0 0 0 2px #10b9811a}.form-control.is-invalid{border-color:var(--danger);box-shadow:0 0 0 2px #ef44441a;animation:formShake .3s ease}.form-feedback{font-size:12px;margin-top:4px;display:flex;align-items:center;gap:4px}.form-feedback.valid{color:var(--success)}.form-feedback.invalid{color:var(--danger)}.form-feedback svg{width:14px;height:14px;flex-shrink:0}@keyframes formShake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}.form-floating{position:relative;margin-bottom:16px}.form-floating .form-control{padding:18px 12px 6px}.form-floating .form-floating-label{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:13.5px;color:var(--text-muted);pointer-events:none;transition:all .15s ease;background:transparent;padding:0 2px}.form-floating .form-control:focus~.form-floating-label,.form-floating .form-control:not(:placeholder-shown)~.form-floating-label{top:6px;transform:translateY(0);font-size:11px;color:var(--primary);font-weight:500}.input-group{display:flex;align-items:stretch}.input-group .form-control{border-radius:0;flex:1}.input-group .form-control:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.input-group .form-control:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.input-prefix,.input-suffix{display:flex;align-items:center;padding:0 12px;background:var(--gray-50);border:1px solid var(--border);font-size:13px;color:var(--text-secondary);white-space:nowrap}.input-prefix{border-radius:var(--radius-sm) 0 0 var(--radius-sm);border-right:none}.input-suffix{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:none}.input-prefix+.form-control{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.search-input.has-value{padding-right:32px}select.form-control{cursor:pointer}textarea.form-control{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-hint{font-size:12px;color:var(--text-muted);margin-top:4px;display:flex;align-items:center;gap:4px}.form-hint svg{width:13px;height:13px;flex-shrink:0}.form-section{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border-light)}.form-section:last-child{border-bottom:none;margin-bottom:0}.form-section-heading{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:12px;display:flex;align-items:center;gap:6px}.form-section-heading svg{width:16px;height:16px;color:var(--primary)}select.form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239CA3AF' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}.date-input-group{display:flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;transition:border-color .2s,box-shadow .2s;overflow:hidden}.date-input-group:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #07c1601f}.date-input-group input{border:none!important;outline:none!important;box-shadow:none!important;text-align:center;padding:9px 2px;font-size:13.5px;font-family:var(--font-mono);color:var(--text-primary);background:transparent;min-width:0;flex:1}.date-input-group .date-year{flex:0 0 46px}.date-input-group .date-month,.date-input-group .date-day{flex:0 0 32px}.date-input-group input::placeholder{color:var(--text-muted);font-size:11px}.date-input-group input:focus{background:var(--brand-50);border-radius:2px}.date-sep{color:var(--text-muted);font-size:14px;-webkit-user-select:none;user-select:none;flex-shrink:0;line-height:1}[data-theme=dark] .date-input-group{background:#1e293b;border-color:#334155}[data-theme=dark] .date-input-group input{color:#f1f5f9}[data-theme=dark] .date-input-group input:focus{background:var(--brand-50)}[data-theme=dark] .date-sep{color:#64748b}.form-check{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer;color:var(--text-primary)}.form-check input[type=checkbox],.form-check input[type=radio]{accent-color:var(--primary);width:16px;height:16px;cursor:pointer}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search-box{position:relative;flex:1;min-width:200px;max-width:320px}.search-box svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-muted)}.search-input{width:100%;padding:8px 28px 8px 34px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;outline:none;background:#fff;transition:var(--transition)}.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #07c1601f}.filter-select{padding:8px 32px 8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;background:#fff;cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239CA3AF' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;font-family:inherit}.filter-select:focus{border-color:var(--primary)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:999;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:backdrop-filter .2s}.modal-overlay.show{display:flex}.modal-overlay.show .modal{animation:modalIn .25s cubic-bezier(.4,0,.2,1)}.modal{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);width:90%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-lg{max-width:720px}.modal-sm{max-width:420px}.modal-xl{max-width:900px}.modal-fullscreen{max-width:96vw;max-height:96vh}.modal-header{padding:20px 24px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);flex-shrink:0}.modal-header-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-right:12px;flex-shrink:0}.modal-header-icon svg{width:20px;height:20px}.modal-header-icon.primary{background:var(--brand-50);color:var(--primary)}.modal-header-icon.success{background:var(--success-light);color:var(--success)}.modal-header-icon.danger{background:var(--danger-light);color:var(--danger)}.modal-header-icon.warning{background:var(--warning-light);color:var(--warning)}.modal-title-wrap{flex:1;min-width:0}.modal-title{font-size:16px;font-weight:600;line-height:1.3}.modal-subtitle{font-size:12.5px;color:var(--text-muted);margin-top:2px}.modal-close{width:32px;height:32px;background:none;border:none;border-radius:8px;cursor:pointer;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:var(--transition-fast);flex-shrink:0;margin-left:12px}.modal-close:hover{background:var(--gray-100);color:var(--text-primary)}.modal-close svg{width:18px;height:18px}.modal-body{padding:20px 24px;overflow-y:auto;flex:1;min-height:0}.modal-footer{padding:16px 24px 20px;display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--border);flex-shrink:0;background:var(--gray-50)}.modal-footer .btn{min-width:80px}.modal-confirm .modal-body{text-align:center;padding:32px 24px}.modal-confirm .confirm-icon{width:56px;height:56px;margin:0 auto 16px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28px}.modal-confirm .confirm-icon.warning{background:var(--warning-light);color:var(--warning)}.modal-confirm .confirm-icon.danger{background:var(--danger-light);color:var(--danger)}.modal-confirm .confirm-icon.success{background:var(--success-light);color:var(--success)}.modal-confirm .confirm-title{font-size:17px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.modal-confirm .confirm-desc{font-size:13.5px;color:var(--text-secondary);max-width:360px;margin:0 auto;line-height:1.5}.modal-form .modal-body{padding:24px}.modal-form .form-group{margin-bottom:18px}.modal-form .form-group:last-child{margin-bottom:0}.modal-detail .modal-body{padding:0}.modal-detail .detail-section{padding:16px 24px;border-bottom:1px solid var(--border-light)}.modal-detail .detail-section:last-child{border-bottom:none}.modal-detail .detail-section-title{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}.modal-gradient-header{padding:24px;background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);color:#fff;margin:-0;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.modal-gradient-header .modal-title{color:#fff}.modal-gradient-header .modal-subtitle{color:#fffc}@keyframes modalIn{0%{opacity:0;transform:scale(.96) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-overlay.closing .modal{animation:modalOut .2s ease forwards}@keyframes modalOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.96) translateY(-8px)}}.toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px}.toast{display:flex;align-items:center;gap:10px;padding:12px 18px;background:#fff;border-radius:10px;box-shadow:0 8px 24px #00000026;border-left:4px solid var(--primary);font-size:13.5px;min-width:240px;animation:toastIn .25s ease}.toast.success{border-color:var(--success)}.toast.warning{border-color:var(--warning)}.toast.error{border-color:var(--danger)}.toast-icon{font-size:18px}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state svg{width:64px;height:64px;margin:0 auto 16px;opacity:.35}.empty-state-title{font-size:16px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.empty-state-text{font-size:13.5px}.mt-16{margin-top:16px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.flex{display:flex}.items-center{align-items:center}.divider{height:1px;background:var(--border);margin:16px 0}.action-btns{display:flex;gap:6px;flex-wrap:wrap}.progress-bar-bg{height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.progress-bar{height:100%;border-radius:3px;transition:width .4s ease}.progress-bar.primary{background:var(--primary)}.progress-bar.success{background:var(--success)}.progress-bar.warning{background:var(--warning)}@media(max-width:768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.menu-toggle{display:block}.stats-grid{grid-template-columns:1fr 1fr}.form-row,.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr 1fr}}@media(max-width:480px){.stats-grid,.grid-3{grid-template-columns:1fr}.page-container,.tab-pane{padding:16px}}.printer-card{background:#fff;border-radius:var(--radius-lg);border:1px solid var(--border);padding:18px 20px;transition:var(--transition);cursor:pointer}.printer-card:hover{box-shadow:var(--shadow);border-color:#9de5b8;transform:translateY(-2px)}.printer-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}.printer-model{font-size:14.5px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.printer-id{font-size:12px;color:var(--text-muted);font-family:monospace}.printer-card-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.printer-stat-item{background:#f8fafc;border-radius:8px;padding:8px 10px}.printer-stat-label{font-size:11px;color:var(--text-muted);margin-bottom:2px}.printer-stat-value{font-size:13.5px;font-weight:600;color:var(--text-primary)}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:var(--border)}.timeline-item{position:relative;padding-bottom:20px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-20px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--primary);border:2px solid white;box-shadow:0 0 0 2px var(--primary)}.timeline-dot.success{background:var(--success);box-shadow:0 0 0 2px var(--success)}.timeline-dot.warning{background:var(--warning);box-shadow:0 0 0 2px var(--warning)}.timeline-dot.muted{background:var(--text-muted);box-shadow:0 0 0 2px var(--text-muted)}.timeline-time{font-size:12px;color:var(--text-muted);margin-bottom:2px}.timeline-text{font-size:13.5px;color:var(--text-primary)}.bill-card{background:#fff;border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden;transition:var(--transition)}.bill-card:hover{box-shadow:var(--shadow)}.bill-card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,#eff6ff,#f0fdf4);border-bottom:1px solid var(--border)}.bill-amount{font-size:26px;font-weight:700;color:var(--primary-dark)}.bill-amount .currency{font-size:16px;font-weight:500;vertical-align:super;margin-right:2px}.bill-card-body{padding:16px 20px}.bill-line{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:13.5px;border-bottom:1px dashed #F1F5F9}.bill-line:last-child{border-bottom:none}.bill-line-label{color:var(--text-secondary)}.bill-line-value{font-weight:500;color:var(--text-primary)}.bill-total{display:flex;justify-content:space-between;align-items:center;padding-top:12px;margin-top:8px;border-top:2px solid var(--border);font-size:15px;font-weight:700}.customer-avatar-circle{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0}.rate-card{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.rate-card-header{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;padding:14px 18px;font-weight:600;font-size:14px}.rate-card-body{padding:14px 18px}.rate-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #F1F5F9;font-size:13.5px}.rate-item:last-child{border-bottom:none}.rate-label{color:var(--text-secondary)}.rate-value{font-weight:600;color:var(--text-primary)}.activity-list{list-style:none}.activity-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid #F8FAFC}.activity-item:last-child{border-bottom:none}.activity-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.activity-info{flex:1;min-width:0}.activity-title{font-size:13.5px;color:var(--text-primary);font-weight:500;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-time{font-size:12px;color:var(--text-muted)}.activity-amount{font-size:13.5px;font-weight:600;color:var(--text-primary);white-space:nowrap}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}.detail-item{padding:12px 16px;border-bottom:1px solid #F1F5F9}.detail-item:nth-child(odd){border-right:1px solid #F1F5F9}.detail-label{font-size:12px;color:var(--text-muted);margin-bottom:4px;font-weight:500;text-transform:uppercase;letter-spacing:.4px}.detail-value{font-size:14px;color:var(--text-primary);font-weight:500}.detail-grid-gap-lg{gap:12px 24px}.billing-type-selector{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.billing-type-option{border:2px solid var(--border);border-radius:var(--radius);padding:14px 16px;cursor:pointer;transition:var(--transition)}.billing-type-option:hover,.billing-type-option.selected{border-color:var(--primary);background:var(--primary-light)}.billing-type-option input[type=radio]{display:none}.billing-type-icon{font-size:24px;margin-bottom:6px}.billing-type-name{font-weight:600;font-size:13.5px;color:var(--text-primary)}.billing-type-desc{font-size:12px;color:var(--text-secondary);margin-top:2px}.volume-input-group{display:flex;align-items:center;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.volume-input-group .vol-label{padding:8px 12px;background:#f8fafc;color:var(--text-secondary);font-size:13px;border-right:1px solid var(--border);white-space:nowrap}.volume-input-group input{flex:1;padding:8px 12px;border:none;outline:none;font-size:13.5px;font-family:inherit}.volume-input-group .vol-unit{padding:8px 12px;background:#f8fafc;color:var(--text-muted);font-size:12px;border-left:1px solid var(--border)}.fee-breakdown{background:#fafbff;border:1px solid #DBEAFE;border-radius:var(--radius);padding:16px}.fee-breakdown-title{font-size:13px;font-weight:600;color:var(--primary-dark);margin-bottom:12px;display:flex;align-items:center;gap:6px}.fee-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:13px}.fee-row .fee-name{color:var(--text-secondary)}.fee-row .fee-amount{font-weight:600;color:var(--text-primary)}.fee-row.total{margin-top:8px;padding-top:10px;border-top:1px solid #9DE5B8;font-size:15px}.fee-row.total .fee-name{color:var(--text-primary);font-weight:700}.fee-row.total .fee-amount{color:var(--primary-dark);font-size:18px}.tab-group{display:flex;background:#f1f5f9;border-radius:8px;padding:3px;gap:2px}.tab-btn{padding:6px 14px;border-radius:6px;border:none;background:transparent;cursor:pointer;font-size:13px;font-weight:500;color:var(--text-secondary);transition:var(--transition);font-family:inherit}.tab-btn.active{background:#fff;color:var(--primary);box-shadow:var(--shadow-sm)}.quick-actions{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.quick-action-btn{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 12px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:var(--transition);text-decoration:none;color:var(--text-secondary);font-size:12.5px;font-weight:500;text-align:center}.quick-action-btn:hover{border-color:var(--primary);background:var(--primary-light);color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.quick-action-icon{width:40px;height:40px;border-radius:10px;background:var(--brand-50);display:flex;align-items:center;justify-content:center;color:var(--primary);transition:var(--transition)}.quick-action-btn:hover .quick-action-icon{background:var(--primary);color:#fff}.quick-action-icon svg{width:22px;height:22px}.alert-banner{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:var(--radius);border:1px solid;margin-bottom:12px;font-size:13.5px}.alert-banner.warning{background:var(--warning-light);border-color:#fde68a;color:#92400e}.alert-banner.info{background:var(--info-light);border-color:#a5f3fc;color:#155e75}.alert-banner.danger{background:var(--danger-light);border-color:#fecaca;color:#991b1b}.contract-list-item{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 20px;display:flex;align-items:center;gap:16px;transition:var(--transition);margin-bottom:10px}.contract-list-item:hover{border-color:#9de5b8;box-shadow:var(--shadow-sm)}.contract-id-badge{font-family:monospace;font-size:13px;background:#f1f5f9;padding:4px 10px;border-radius:6px;color:var(--text-secondary);font-weight:600}.table-wrapper.sticky-header thead th{position:sticky;top:0;z-index:10}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{background:#eef2f6;color:var(--text-primary)}th.sortable:after{content:"";display:inline-block;width:12px;height:12px;margin-left:4px;vertical-align:middle;opacity:.3;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 9L2 4h8z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 9L2 4h8z'/%3E%3C/svg%3E") center/contain no-repeat;transition:opacity .15s}th.sortable:hover:after{opacity:.6}th.sortable.asc:after{opacity:.8;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 3l4 5H2z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 3l4 5H2z'/%3E%3C/svg%3E") center/contain no-repeat}th.sortable.desc:after{opacity:.8}td .checkbox-cell,th .checkbox-cell{width:18px;height:18px;cursor:pointer;accent-color:var(--primary)}tr.selected td{background:var(--brand-50)!important}.row-actions{display:flex;gap:4px;opacity:0;transition:opacity .15s}tr:hover .row-actions{opacity:1}.row-actions .btn{padding:3px 8px;font-size:12px}.pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 0 4px;font-size:13px;color:var(--text-secondary);flex-wrap:wrap;gap:12px}.pagination-info{display:flex;align-items:center;gap:8px}.pagination-info select{padding:4px 24px 4px 8px;border:1px solid var(--border);border-radius:6px;font-size:12.5px;background:#fff;cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%239CA3AF' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;transition:border-color .15s}.pagination-info select:focus{border-color:var(--primary)}.pagination-btns{display:flex;gap:4px}.pagination-btns button{min-width:32px;height:32px;border:1px solid var(--border);background:#fff;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text-secondary);transition:var(--transition-fast);display:flex;align-items:center;justify-content:center}.pagination-btns button:hover:not(:disabled){border-color:var(--brand-300);color:var(--primary);background:var(--brand-50);transform:translateY(-1px);box-shadow:var(--shadow-xs)}.pagination-btns button.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600;box-shadow:0 2px 6px #07c1604d}.pagination-btns button:disabled{opacity:.4;cursor:not-allowed}.pagination-jump{display:flex;align-items:center;gap:4px;font-size:12.5px;color:var(--text-muted)}.pagination-jump input{width:48px;height:28px;text-align:center;border:1px solid var(--border);border-radius:4px;font-size:12.5px;outline:none;transition:border-color .15s}.pagination-jump input:focus{border-color:var(--primary)}.batch-bar{display:none;align-items:center;gap:12px;padding:10px 16px;background:var(--brand-50);border:1px solid var(--brand-200);border-radius:var(--radius-sm);margin-bottom:12px;font-size:13px;color:var(--primary-dark);animation:slideDown .2s ease}.batch-bar.show{display:flex}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.batch-bar .btn-sm{flex-shrink:0}.d-flex{display:flex}.d-grid{display:grid}.ai-center{align-items:center}.jc-between{justify-content:space-between}.flex-1{flex:1;min-width:0}.gap-4{gap:4px}.gap-6{gap:6px}.gap-8{gap:8px}.gap-10{gap:10px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.mb-12{margin-bottom:12px}.mb-24{margin-bottom:24px}.mt-2{margin-top:2px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mr-6{margin-right:6px}.text-center{text-align:center}.text-sm{font-size:12px}.text-base{font-size:13px}.text-lg{font-size:14px}.text-xl{font-size:18px}.text-2xl{font-size:22px}.font-mono{font-family:var(--font-mono)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.row-line{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border-light)}.row-line:last-child{border-bottom:none}.row-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.row-content{flex:1;min-width:0}.row-title{font-size:13px;color:var(--text-primary);font-weight:500;margin-bottom:2px}.row-time{font-size:11.5px;color:var(--text-muted)}.row-amount{font-size:13px;font-weight:600;color:var(--success);white-space:nowrap}.row-amount.danger{color:var(--danger)}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}@media(max-width:768px){.dashboard-grid{grid-template-columns:1fr}}.billing-due-header{background:linear-gradient(135deg,#edfbf3,#9de5b8);border-bottom:1px solid #9DE5B8;cursor:pointer}.billing-card{margin-bottom:20px;border:2px solid var(--primary)}.billing-card-empty{margin-bottom:20px;border:1px dashed #93C5FD}.billing-empty-icon{font-size:28px}.billing-empty-text{margin-top:8px;font-size:13px;color:var(--text-muted)}.alert-icon{font-size:20px;flex-shrink:0}.trend-badge{font-size:11px;font-weight:600;margin-left:6px}.trend-up{color:var(--danger)}.trend-down{color:var(--success)}.occupancy-rate-label{font-weight:600;font-size:13px;margin-bottom:12px}.occupancy-rate-row{display:flex;align-items:center;gap:16px}.occupancy-rate-bar{flex:1}.occupancy-rate-stats{display:flex;justify-content:space-between;margin-top:6px;font-size:12px;color:var(--text-muted)}.empty-text{text-align:center;color:var(--text-muted);padding:20px}.card{transition:box-shadow .2s ease,transform .2s ease}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.credit-badge{border-radius:8px;padding:4px 12px;font-size:13px;font-weight:700}.credit-badge.credit-A{background:#d1fae5;color:#059669}.credit-badge.credit-B{background:#fef3c7;color:#d97706}.credit-badge.credit-C{background:#fee2e2;color:#dc2626}.customer-stats-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px}.customer-stat-item{text-align:center;border-radius:8px;padding:10px 6px}.customer-stat-value{font-size:18px;font-weight:700}.customer-stat-value.text-primary{color:var(--primary)}.customer-stat-value.text-success{color:var(--success)}.customer-stat-label{font-size:11px;color:var(--text-muted);margin-top:2px}.bg-blue-light{background:#eff6ff}.bg-green-light{background:#f0fdf4}.bg-indigo-light{background:#eef2ff}.customer-address{font-size:12px;color:var(--text-muted)}.customer-addr-line{display:flex;align-items:center;gap:4px;margin-bottom:4px}.customer-name{font-weight:700;font-size:14.5px;margin-bottom:3px;cursor:pointer}.customer-name:hover{color:var(--primary)}.customer-contact{font-size:12.5px;color:var(--text-secondary)}.customer-device-tags{margin-top:10px;display:flex;gap:6px;flex-wrap:wrap}.device-tag{background:var(--primary-light);color:var(--primary-dark);border-radius:6px;padding:3px 10px;font-size:11.5px;font-weight:500}.customer-actions{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-light);display:flex;gap:8px}.customer-card{transition:box-shadow .2s ease,transform .2s ease}.customer-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.card-top-row{display:flex;align-items:flex-start;gap:14px;margin-bottom:14px}.card-customer-info{flex:1;min-width:0}.customer-card-name{font-weight:700;font-size:14.5px;margin-bottom:3px;cursor:pointer}.customer-card-name:hover{color:var(--primary)}.customer-card-contact{font-size:12.5px;color:var(--text-secondary)}.card-action-row{margin-top:12px;display:flex;gap:8px}.btn-card-action{flex:1}.btn-card-action-danger{flex:1;color:var(--danger);border-color:var(--danger)}.ml-auto{margin-left:auto}.ml-6{margin-left:6px}.ml-10{margin-left:10px}.mb-0{margin-bottom:0}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.stats-grid-4{grid-template-columns:repeat(4,1fr);margin-bottom:20px}.stats-grid-5{grid-template-columns:repeat(5,1fr);margin-bottom:20px}.export-btn-sm{background:#fff;border:1px solid var(--primary);color:var(--primary-dark);border-radius:6px;padding:4px 12px;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;transition:var(--transition-fast)}.export-btn-sm:hover{background:var(--brand-50)}.expand-btn{background:none;border:1px solid var(--primary);color:var(--primary-dark);border-radius:6px;padding:5px 18px;font-size:13px;cursor:pointer;transition:var(--transition-fast)}.expand-btn:hover{background:var(--brand-50)}.text-xs{font-size:10px}.billing-row-even{background:#f0f9ff}.billing-row-odd{background:#e0f2fe}.billing-customer-name{font-weight:600;color:#166b34}.billing-contract-no{font-size:13px;color:#374151;font-weight:500}.billing-device-info{font-size:13px;line-height:1.6}.billing-month{font-weight:600;color:#1d8741}.billing-period{color:var(--text-secondary)}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table thead th{background:#f8fafc;padding:10px 14px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:12px;border-bottom:2px solid var(--border);white-space:nowrap;transition:background .15s}.data-table tbody td{padding:11px 14px;border-bottom:1px solid var(--border-light);color:var(--text-primary);vertical-align:middle;font-size:13px;transition:background .15s}.data-table tbody tr:nth-child(2n) td{background:var(--gray-50)}.data-table tbody tr:hover td{background:var(--brand-50)!important}.data-table tbody tr.row-selected td{background:var(--brand-100)!important;box-shadow:inset 3px 0 0 var(--primary)}.data-table tbody tr:last-child td{border-bottom:none}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{background:var(--brand-50);color:var(--primary-dark)}.data-table th.sortable .sort-icon{margin-left:4px;opacity:.3;transition:opacity .15s}.data-table th.sortable:hover .sort-icon{opacity:.7}.data-table th.sortable.asc .sort-icon,.data-table th.sortable.desc .sort-icon{opacity:1;color:var(--primary)}.stat-sub{font-size:11.5px;color:var(--text-muted);margin-top:2px}.chart-bar{transition:height .6s var(--ease-out-expo)}.big-number{font-size:36px;font-weight:800;line-height:1;background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.toolbar-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 20px;margin-bottom:16px}.filter-chips{display:flex;gap:8px;flex-wrap:wrap}.filter-chip{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border:1px solid var(--border);border-radius:20px;font-size:12.5px;color:var(--text-secondary);background:#fff;cursor:pointer;transition:var(--transition-fast)}.filter-chip:hover{border-color:var(--brand-300);color:var(--primary)}.filter-chip.active{background:var(--brand-50);border-color:var(--primary);color:var(--primary);font-weight:500}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.contract-list-item .contract-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-muted)}.contract-list-item .contract-meta span{display:flex;align-items:center;gap:4px}.bill-amount-large{font-size:28px;font-weight:700;color:var(--primary-dark);letter-spacing:-1px}.bill-amount-large .currency{font-size:16px;font-weight:500;vertical-align:super;margin-right:2px}.billing-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.billing-detail-item{background:#f8fafc;border-radius:8px;padding:10px 14px}.billing-detail-label{font-size:11px;color:var(--text-muted);margin-bottom:2px;text-transform:uppercase;letter-spacing:.3px}.billing-detail-value{font-size:15px;font-weight:600;color:var(--text-primary)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.status-dot.active,.status-dot.paid,.status-dot.available{background:var(--success)}.status-dot.pending,.status-dot.unpaid{background:var(--warning)}.status-dot.inactive,.status-dot.overdue,.status-dot.maintenance{background:var(--danger)}.status-dot.rented,.status-dot.renting{background:var(--primary)}.flma-th{padding:7px 10px;text-align:center;font-weight:600;font-size:12px;white-space:nowrap;border:1px solid rgba(255,255,255,.3)}.flma-td{padding:6px 10px;border:1px solid var(--border);text-align:center;font-size:12px;vertical-align:middle}.form-section-title{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--border)}.form-control-sm{padding:4px 6px!important;font-size:12px!important;height:30px!important;min-width:60px}.flma-sheet .form-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.page-container::-webkit-scrollbar,.table-wrapper::-webkit-scrollbar,.modal-body::-webkit-scrollbar{width:6px;height:6px}.page-container::-webkit-scrollbar-track,.table-wrapper::-webkit-scrollbar-track,.modal-body::-webkit-scrollbar-track{background:transparent}.page-container::-webkit-scrollbar-thumb,.table-wrapper::-webkit-scrollbar-thumb,.modal-body::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.page-container::-webkit-scrollbar-thumb:hover,.table-wrapper::-webkit-scrollbar-thumb:hover,.modal-body::-webkit-scrollbar-thumb:hover{background:#a0a0a0}.page-container,.table-wrapper,.modal-body{scrollbar-width:thin;scrollbar-color:#c1c1c1 transparent}html,body{height:100%;margin:0;overflow:hidden}.main-content{display:flex;flex-direction:column;height:100%;min-height:0}.topbar{flex-shrink:0}.page-container{flex:1;overflow-y:auto;min-height:0}.breadcrumb{display:flex;align-items:center;gap:6px;padding:8px 0;margin-bottom:4px;font-size:12.5px;color:var(--text-muted)}.breadcrumb a{color:var(--text-secondary);text-decoration:none;transition:color .15s}.breadcrumb a:hover{color:var(--primary)}.breadcrumb-sep{color:#d1d5db}.breadcrumb-current{color:var(--text-primary);font-weight:500}.pos-relative{position:relative}.pos-absolute{position:absolute}.w-full{width:100%}.w-30{width:30px}.h-full{height:100%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.flex-col{flex-direction:column}.inline-flex{display:inline-flex}.flex-wrap{flex-wrap:wrap}.grid-cols-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-cols-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.grid-cols-auto-fill-200{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px 24px}.m-0{margin:0}.pt-0{padding-top:0}.p-0{padding:0}.p-4{padding:4px}.p-8{padding:8px}.p-12{padding:12px}.p-16{padding:16px}.p-20{padding:20px}.px-4{padding-left:4px;padding-right:4px}.px-6{padding-left:6px;padding-right:6px}.px-8{padding-left:8px;padding-right:8px}.px-10{padding-left:10px;padding-right:10px}.px-12{padding-left:12px;padding-right:12px}.px-14{padding-left:14px;padding-right:14px}.px-16{padding-left:16px;padding-right:16px}.py-4{padding-top:4px;padding-bottom:4px}.py-10{padding-top:10px;padding-bottom:10px}.py-12{padding-top:12px;padding-bottom:12px}.py-16{padding-top:16px;padding-bottom:16px}.pl-12{padding-left:12px}.pr-12{padding-right:12px}.text-primary{color:var(--text-primary)}.text-primary-color{color:var(--primary)}.text-primary-dark{color:var(--primary-dark)}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-white{color:#fff}.text-11{font-size:11px}.text-12{font-size:12px}.text-13{font-size:13px}.text-14{font-size:14px}.text-15{font-size:15px}.text-16{font-size:16px}.text-18{font-size:18px}.text-20{font-size:20px}.text-24{font-size:24px}.text-32{font-size:32px}.text-40{font-size:40px}.text-nowrap{white-space:nowrap}.text-underline{text-decoration:underline}.line-h-1{line-height:1}.bg-white{background:#fff}.bg-card{background:var(--bg-card)}.bg-page{background:var(--bg-page)}.bg-hover{background:var(--bg-hover)}.bg-selected{background:var(--bg-selected)}.bg-transparent{background:transparent}.bg-red-50{background:#fef2f2}.bg-green-50{background:#f0fdf4}.bg-amber-50{background:#fffbeb}.bg-blue-50{background:#eff6ff}.bg-purple-50{background:#faf5ff}.bg-gray-50{background:#f9fafb}.bg-gray-100{background:#f3f4f6}.bg-green-600{background:#16a34a}.border{border:1px solid var(--border)}.border-0{border:none}.border-b{border-bottom:1px solid var(--border)}.border-t{border-top:1px solid var(--border)}.border-l-4-red{border-left:4px solid #ef4444}.border-l-4-orange{border-left:4px solid #f97316}.border-l-4-green{border-left:4px solid #10b981}.border-l-4-blue{border-left:4px solid #07C160}.rounded-4{border-radius:4px}.rounded-6{border-radius:6px}.rounded-8{border-radius:8px}.rounded-10{border-radius:10px}.rounded-12{border-radius:12px}.rounded-20{border-radius:20px}.rounded-full{border-radius:9999px}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.user-select-none{-webkit-user-select:none;user-select:none}.pointer-events-none{pointer-events:none}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.shadow-sm{box-shadow:0 1px 2px #0000000d}.shadow{box-shadow:0 1px 3px #0000001a}.shadow-md{box-shadow:0 4px 6px #0000001a}.shadow-lg{box-shadow:0 10px 15px #0000001a}.font-mono{font-family:monospace}.font-normal{font-weight:400}.col-span-2{grid-column:1 / -1}.border-green{border-color:#bbf7d0}.border-red{border-color:#fecaca}.border-gray{border-color:#e5e7eb}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.max-w-200{max-width:200px}.attach-zone{border:2px dashed #d1d5db;border-radius:8px;padding:24px 16px;text-align:center;cursor:pointer;transition:all .2s ease;background:#fafafa}.attach-zone:hover{border-color:var(--primary);background:var(--primary-light)}.attach-zone.dragover{border-color:var(--primary);background:#eff6ff}.attach-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;font-size:12.5px}.device-config-card{margin-bottom:16px;padding:12px;border:1px solid var(--border);border-radius:6px}.form-label-sm{display:block;margin-bottom:2px;font-size:12px;color:#6b7280}.form-input-sm{width:100%;padding:4px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s}.form-input-sm:focus{border-color:var(--primary);box-shadow:0 0 0 2px #3b82f626}.icon-14{width:14px;height:14px;flex-shrink:0}.icon-16{width:16px;height:16px;flex-shrink:0}.icon-36{width:36px;height:36px;flex-shrink:0}.opacity-50{opacity:.5}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.d-none{display:none}.td-none{text-decoration:none}.m-auto{margin:0 auto}.max-h-200{max-height:200px}.mt-20{margin-top:20px}.border-dashed{border-style:dashed}.min-w-120{min-width:120px}.min-w-130{min-width:130px}.bg-readonly{background:#f8fafc}.icon-12{width:12px;height:12px;flex-shrink:0}.text-left{text-align:left}.text-right{text-align:right}.v-middle{vertical-align:middle}.h-34{height:34px}.grid-full{grid-column:1 / -1}.searchable-dropdown{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d1d5db;border-top:none;border-radius:0 0 8px 8px;max-height:220px;overflow-y:auto;box-shadow:0 4px 12px #0000001f;z-index:999}.transition{transition:all .15s ease}.transition-fast{transition:all .1s ease}.badge-red{background:#fef2f2;color:#ef4444;border:1px solid #fca5a5}.badge-orange{background:#fff7ed;color:#f97316;border:1px solid #fdba74}.badge-green{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.badge-purple{background:#edfbf3;color:#1d8741;border:1px solid #3DD074}.badge-gray{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db}.dropdown-menu{display:none;position:absolute;right:0;top:100%;margin-top:4px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px #0000001f;z-index:999;min-width:130px;padding:4px 0}.dropdown-menu.show{display:block}.dropdown-item{padding:7px 14px;cursor:pointer;font-size:13px;color:#374151}.dropdown-item:hover{background:#f3f4f6}.dropdown-item.danger{color:#dc2626}.dropdown-item.danger:hover{background:#fef2f2}.dropdown-item.success{color:#059669}.dropdown-item.success:hover{background:#f0fdf4}.dropdown-divider{height:1px;background:#f3f4f6;margin:4px 0}.code-tag{font-size:11.5px;background:#f1f5f9;padding:2px 7px;border-radius:4px;font-family:monospace}.gradient-header{background:linear-gradient(135deg,#166b34,#06b6d4);border-radius:var(--radius-lg);padding:20px;color:#fff;margin-bottom:16px}.search-clear-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);cursor:pointer;color:#9ca3af;font-size:16px;line-height:1}.search-clear-btn:hover{color:#6b7280}.action-menu-wrap{position:relative}.contract-item{border:1px solid var(--border);border-radius:10px;padding:16px 20px;margin-bottom:12px;background:#fff}.contract-item.expiring-30{border-left:4px solid #ef4444}.contract-item.expiring-60{border-left:4px solid #f97316}.contract-info-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.contract-info-main{flex:1;min-width:0}.contract-info-header{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:8px}.contract-info-title{font-weight:700;font-size:15px}.contract-info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px 24px;font-size:13px;color:var(--text-muted)}.contract-info-label{color:#9ca3af}.contract-info-value{color:var(--text-primary);font-weight:500}.contract-info-actions{display:flex;gap:8px;flex-shrink:0}.bill-row-checkbox{margin:0}.bill-row-id{font-size:11.5px;background:#f1f5f9;padding:2px 7px;border-radius:4px}.bill-row-customer{font-weight:500}.bill-row-period{color:var(--text-secondary);white-space:nowrap}.bill-row-total{font-weight:700;color:var(--primary-dark)}.bill-row-due{font-size:12.5px;color:var(--text-secondary)}.filter-panel{padding:12px 16px;background:var(--bg-secondary, #F8FAFC);border-bottom:1px solid var(--border, #E2E8F0)}.filter-panel-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.filter-field{flex:1;min-width:140px}.filter-field-label{font-size:12px;color:var(--text-secondary, #64748B);display:block;margin-bottom:4px}.filter-input,.filter-select-input{width:100%;padding:6px 10px;border:1px solid var(--border, #E2E8F0);border-radius:6px;font-size:13px;background:var(--bg-card, #fff);color:var(--text-primary, #1E293B)}.card-toolbar{display:flex;align-items:center;gap:12px;flex:1}.card-toolbar-divider{width:1px;height:20px;background:var(--border, #E2E8F0)}.bill-actions{display:flex;gap:4px;align-items:center;position:relative}.table-empty-row td{text-align:center;padding:40px;color:var(--text-muted)}.detail-gradient-header{background:linear-gradient(135deg,#166b34,#06b6d4);border-radius:var(--radius-lg);padding:20px;color:#fff;margin-bottom:16px}.detail-bill-id{font-size:12px;opacity:.8;margin-bottom:4px}.detail-bill-amount{font-size:32px;font-weight:800;margin-bottom:4px}.detail-bill-meta{font-size:13px;opacity:.9}.detail-bill-status-badge{display:inline-block;background:#fff3;padding:4px 12px;border-radius:20px;font-size:12px;margin-top:10px}.fee-row-indent{padding-left:12px}.fee-row-muted{color:var(--text-muted)}.detail-value-mono{font-family:monospace}.note-text{font-size:13px;color:var(--text-secondary)}.print-cell{font-size:11px;font-family:Microsoft YaHei,SimSun,sans-serif;padding:5px 6px}.print-cell-sm{padding:4px 6px}.print-bold{font-weight:700}.print-center{text-align:center}.print-right{text-align:right}.print-left{text-align:left}.print-title-row td{font-size:15px;font-weight:700;text-align:left;padding:8px 0 4px}.print-company-name{font-size:15px}.print-sheet-name{font-size:19px;margin:4px 0 2px;letter-spacing:2px}.print-date-row{font-size:10px;color:#555}.print-date-left{float:left}.print-date-right{float:right}.print-info-label{font-weight:700;text-align:left}.print-info-value{text-align:left}.print-spec-header{font-weight:700;text-align:left}.print-device-model,.print-device-excess{font-weight:700}.print-total-label{font-weight:700;text-align:left}.print-total-value{font-weight:700;text-align:right}.print-note{font-weight:700;text-align:left}.print-formula,.print-bank-info{text-align:left}.contract-sub-table{width:100%;border-collapse:collapse;margin-top:4px}.contract-sub-table th{padding:4px 8px;text-align:left;font-weight:500;font-size:12px;color:#6b7280}.contract-sub-table th.right{text-align:right}.contract-sub-table td{padding:2px 8px;font-size:12px;border-bottom:1px solid #e5e7eb}.contract-sub-table td.right{text-align:right}.fs-10{font-size:10px}.fs-11{font-size:11px}.fs-12{font-size:12px}.fs-13{font-size:13px}.fs-14{font-size:14px}.fs-15{font-size:15px}.fs-19{font-size:19px}.fs-40{font-size:40px}.mt-6{margin-top:6px}.mt-10{margin-top:10px}.mt-12{margin-top:12px}.mb-4{margin-bottom:4px}.mb-6{margin-bottom:6px}.mb-8{margin-bottom:8px}.mb-10{margin-bottom:10px}.p-6{padding:6px}.p-10{padding:10px}.p-14{padding:14px}.py-6{padding-top:6px;padding-bottom:6px}.py-8{padding-top:8px;padding-bottom:8px}.px-3{padding-left:3px;padding-right:3px}.grid-cols-2-gap-0{display:grid;grid-template-columns:1fr 1fr;gap:0}.grid-cols-2-gap-12{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid-cols-3-gap-6{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.gap-0{gap:0}.pr-30{padding-right:30px}.ws-nowrap{white-space:nowrap}.overflow-y-auto{overflow-y:auto}.resize-v{resize:vertical}.input-xs{font-size:12px;padding:4px 6px}.text-red-500{color:#ef4444}.text-sky-700{color:#0369a1}.text-sky-600{color:#0284c7}.text-slate-600{color:#475569}.text-slate-500{color:#64748b}.text-slate-400{color:#94a3b8}.text-blue-700{color:#166b34}.text-blue-800{color:#036a32}.text-green-700{color:#166534}.bg-sky-50{background:#f0f9ff}.bg-slate-50{background:#f8fafc}.border-sky-200{border-color:#bae6fd}.border-slate-200{border-color:#e2e8f0}.border-green-300{border-color:#86efac}.border-blue-200{border-color:#9de5b8}.right-10{right:10px}.top-32{top:32px}.w-16{width:16px}.h-16{height:16px}.z-9999{z-index:9999}.left-0{left:0}.right-0{right:0}.top-full{top:100%}.list-none{list-style:none}.border-t-2{border-top-width:2px}.my-8{margin-top:8px;margin-bottom:8px}.border-b-slate-100{border-bottom:1px solid #f1f5f9}.grid-cols-2-gap-x-16{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.edit-device-card+.edit-device-card{margin-top:12px}.w-13{width:13px}.h-13{height:13px}.align-sub-1{vertical-align:-1px}.align-sub-2{vertical-align:-2px}.chart-container{display:flex;align-items:stretch;gap:4px}.chart-y-axis{display:flex;flex-direction:column-reverse;justify-content:space-between;padding:0 6px 0 0;font-size:11px;color:var(--text-muted);height:200px}.chart-y-tick{height:50px;display:flex;align-items:center}.chart-plot{flex:1;position:relative;height:200px;display:flex;align-items:flex-end;gap:20px;padding:0 12px;border-left:1px solid var(--border);border-bottom:1px solid var(--border)}.chart-bar-group{flex:1;display:flex;flex-direction:column;align-items:center}.chart-bar-stack{width:100%;max-width:56px;height:200px;position:relative;display:flex;flex-direction:column-reverse}.chart-bar-base{width:100%;background:var(--primary)}.chart-bar-print{width:100%;background:#3b82f6;border-radius:4px 4px 0 0}.chart-bar-value{margin-top:6px;font-size:13px;font-weight:700;color:var(--primary-dark)}.chart-bar-label{font-size:12px;color:var(--text-muted);margin-top:2px}.chart-empty{text-align:center;color:var(--text-muted);padding:40px 0;width:100%}.bar-tooltip{opacity:0;position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#1f2937;color:#fff;padding:10px 14px;border-radius:8px;font-size:12px;white-space:nowrap;margin-bottom:8px;transition:opacity .2s;z-index:10;pointer-events:none;line-height:1.8}.tooltip-title{font-weight:600;margin-bottom:2px}.tooltip-primary{color:#07c160}.tooltip-print{color:#3b82f6}.tooltip-gray{color:#9ca3af;font-size:11px}.chart-legend{display:flex;gap:20px;justify-content:center;margin-top:12px;font-size:12px;color:var(--text-secondary)}.legend-item{display:flex;align-items:center;gap:4px}.legend-swatch{display:inline-block;width:12px;height:12px;border-radius:2px}.status-chart{display:flex;align-items:center;gap:24px}.fs-13-5{font-size:13.5px}.pl-34{padding-left:34px}.mx-6{margin-left:6px;margin-right:6px}.text-border{color:var(--border)}.text-amber-500{color:#f59e0b}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.donut-empty{background:#f1f5f9}.btn-icon-16 svg{width:16px;height:16px}[data-theme=dark] .printer-card,[data-theme=dark] .contract-card,[data-theme=dark] .billing-card,[data-theme=dark] .customer-card,[data-theme=dark] .flma-card{background:#1e293b}[data-theme=dark] .printer-stat-item{background:#334155}[data-theme=dark] .printer-card:hover{border-color:var(--brand-200)}[data-theme=dark] .billing-due-header{background:linear-gradient(135deg,#063b38,#0a514c)}[data-theme=dark] .billing-row-even{background:#1e293b}[data-theme=dark] .billing-row-odd{background:#0f172a}[data-theme=dark] .billing-customer-name{color:var(--brand-600)}[data-theme=dark] .billing-month{color:var(--brand-500)}[data-theme=dark] .fee-row.total{border-top-color:#475569}[data-theme=dark] .bg-white{background:#1e293b}[data-theme=dark] .bg-readonly{background:#334155}[data-theme=dark] .bg-blue-light{background:#1e293b}[data-theme=dark] .bg-green-light{background:#064e3b}[data-theme=dark] .bg-sky-50{background:#0f172a}[data-theme=dark] .bg-slate-50{background:#1e293b}[data-theme=dark] .bg-green-50{background:#064e3b}[data-theme=dark] .bg-amber-50{background:#78350f}[data-theme=dark] .bg-blue-50{background:#172554}[data-theme=dark] .bg-gray-50{background:#1e293b}[data-theme=dark] .badge-orange{background:#78350f;color:#fb923c;border-color:#92400e}[data-theme=dark] .badge-green{background:#064e3b;color:#34d399;border-color:#065f46}[data-theme=dark] .detail-gradient-header,[data-theme=dark] .gradient-header{background:linear-gradient(135deg,#166b34,#06b6d4)}[data-theme=dark] .credit-badge.credit-B{background:#78350f;color:#fbbf24}[data-theme=dark] .dropdown-menu{background:#1e293b;border-color:#334155;box-shadow:0 8px 24px #00000080}[data-theme=dark] .dropdown-item{color:#cbd5e1}[data-theme=dark] .dropdown-item:hover{background:#334155}[data-theme=dark] .dropdown-item.success:hover{background:#064e3b}[data-theme=dark] .expand-btn{background:#334155;color:#94a3b8;border-color:#475569}[data-theme=dark] .donut-empty{background:#334155}[data-theme=dark] .border-l-4-blue{border-left-color:var(--brand-500)}[data-theme=dark] .tooltip-print{color:#60a5fa}[data-theme=dark] .tooltip-primary{color:#07c160}[data-theme=dark] .tooltip-gray{color:#64748b}[data-theme=dark] .text-blue-700{color:var(--brand-500)}[data-theme=dark] .text-blue-800{color:var(--brand-600)}[data-theme=dark] .border-blue-200{border-color:#1e293b}[data-theme=dark] .border-sky-200{border-color:#164e63}[data-theme=dark] input[type=number]::-webkit-inner-spin-button,[data-theme=dark] input[type=number]::-webkit-outer-spin-button{opacity:1;filter:invert(1)}[data-theme=dark] select option{background:#1e293b;color:#f1f5f9}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.action-btns{display:flex;gap:6px;flex-wrap:nowrap}.btn-sm{padding:4px 10px;font-size:12px;line-height:1.4}.btn-success{background:var(--primary, #10B981);color:#fff;border:1px solid var(--primary, #10B981)}.btn-danger{background:#ef4444;color:#fff;border:1px solid #EF4444}.btn-danger:hover{background:#dc2626}.pagination{display:flex;align-items:center;justify-content:center;padding:16px 0 8px}.star-btn{cursor:pointer;font-size:24px;color:#d1d5db;transition:color .2s}.star-btn.active,.star-btn:hover{color:#f59e0b!important}.stat-icon.red{background:#fef2f2;color:#ef4444}[data-theme=dark] .stat-icon.red{background:#ef444426;color:#fca5a5}.sub-card,.sub-admin-card{padding:22px;margin-bottom:20px}.sub-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.sub-card-title{font-size:17px;font-weight:700}.sub-card-sub{font-size:13px;color:var(--text-secondary, #6B7280);margin-top:4px}.sub-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 24px}.sub-meta-item{display:flex;justify-content:space-between;border-bottom:1px dashed var(--border, #E5E7EB);padding-bottom:8px;font-size:14px}.sub-meta-item span{color:var(--text-secondary, #6B7280)}.sub-meta-item b{font-weight:600}.sub-badge{display:inline-block;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap}.badge-trial{background:#fef3c7;color:#92400e}.badge-active{background:#d1fae5;color:#065f46}.badge-suspended{background:#fee2e2;color:#991b1b}.sub-info-box{padding:14px 16px;border-radius:10px;font-size:14px;line-height:1.6;margin-top:6px}.sub-info-trial{background:#fffbeb;border:1px solid #FDE68A;color:#92400e}.sub-info-active{background:#ecfdf5;border:1px solid #A7F3D0;color:#065f46}.sub-suspended-box{background:#fef2f2;border:1px solid #FCA5A5;border-radius:10px;padding:16px;margin-top:6px}.sub-suspended-title{font-weight:700;color:#991b1b;margin-bottom:6px}.sub-suspended-text{font-size:14px;color:#7f1d1d;line-height:1.6;margin-bottom:12px}.sub-admin-hint{font-size:13px;color:var(--text-secondary, #6B7280);margin:8px 0 14px}.sub-admin-table-wrap{overflow-x:auto}.sub-table{width:100%;border-collapse:collapse;font-size:14px}.sub-table th,.sub-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border, #E5E7EB);white-space:nowrap}.sub-table th{background:var(--bg-hover, #F8FAFC);font-weight:600;color:var(--text-secondary, #6B7280)}.sub-table tbody tr:hover{background:var(--bg-hover, #F8FAFC)}.btn-sm{padding:6px 14px;font-size:13px}.sub-guard-banner{display:flex;align-items:center;gap:14px;background:#fef2f2;border:1px solid #FCA5A5;color:#991b1b;padding:14px 18px;border-radius:10px;margin-bottom:18px}.sub-guard-icon{font-size:22px;line-height:1}.sub-guard-text{flex:1;min-width:0}.sub-guard-title{font-weight:700;font-size:15px}.sub-guard-sub{font-size:13px;margin-top:2px;opacity:.9}.sub-guard-btn{flex-shrink:0}[data-theme=dark] .sub-guard-banner{background:#991b1b2e;border-color:#7f1d1d;color:#fca5a5}[data-theme=dark] .sub-info-trial{background:#92400e2e;border-color:#78350f;color:#fcd34d}[data-theme=dark] .sub-info-active{background:#065f462e;border-color:#065f46;color:#6ee7b7}[data-theme=dark] .sub-suspended-box{background:#991b1b2e;border-color:#7f1d1d;color:#fca5a5}.pay-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1200}.pay-modal{background:#fff;border-radius:12px;width:320px;max-width:92vw;padding:22px 20px 18px;box-shadow:0 12px 44px #00000040;text-align:center}.pay-modal-head{display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:600;color:#1f2937;margin-bottom:12px}.pay-modal-close{border:none;background:transparent;font-size:24px;line-height:1;cursor:pointer;color:#9ca3af;padding:0 4px}.pay-modal-close:hover{color:#4b5563}.pay-modal-amount{font-size:26px;font-weight:700;color:#111827;margin-bottom:14px}.pay-modal-qr{display:flex;justify-content:center;padding:12px;background:#f9fafb;border-radius:8px;margin-bottom:12px}.pay-modal-qr canvas{width:220px;height:220px;display:block}.pay-modal-tip{font-size:13px;color:#6b7280;margin-bottom:8px}.pay-modal-count{font-size:12px;color:#9ca3af;margin-bottom:6px;min-height:16px}.pay-modal-err{font-size:13px;color:#dc2626;min-height:18px;line-height:1.5}.bill-table tbody td{padding:9px 12px;line-height:1.45}.bill-table tbody td .font-medium{font-weight:500}.bill-table .code-tag{font-size:12px}.due-cell{display:inline-flex;align-items:center;gap:6px;line-height:1.3;flex-wrap:nowrap}.overdue-badge{display:inline-block;margin:0;padding:1px 7px;font-size:11px;font-weight:600;line-height:1.5;border-radius:10px;color:#fff;background:#dc2626;white-space:nowrap}.overdue-badge:before{content:"⚠ ";font-weight:700}.bar-chart-container{display:flex;align-items:flex-end;gap:8px;height:160px;padding:0 4px;position:relative}.bar-chart-container:before{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--border)}.bar-group{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px}.bar{width:100%;max-width:40px;border-radius:5px 5px 0 0;transition:height .5s ease;cursor:pointer;position:relative;min-height:4px}.bar.primary{background:linear-gradient(180deg,#3dd074,#07c160)}.bar.success{background:linear-gradient(180deg,#34d399,#10b981)}.bar.secondary{background:linear-gradient(180deg,#67e8f9,#06b6d4)}.bar:hover{opacity:.85}.bar-tooltip{position:absolute;top:-32px;left:50%;transform:translate(-50%);background:#1e293b;color:#fff;font-size:11px;padding:4px 8px;border-radius:5px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s}.bar:hover .bar-tooltip{opacity:1}.bar-label{font-size:11px;color:var(--text-muted);text-align:center;white-space:nowrap}.line-chart-svg{width:100%;height:120px;overflow:visible}.chart-grid line{stroke:#f1f5f9;stroke-width:1}.chart-line{fill:none;stroke:var(--primary);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart-area{fill:url(#areaGradient);opacity:.7}.chart-dot{fill:var(--primary);stroke:#fff;stroke-width:2;cursor:pointer;transition:r .15s}.chart-dot:hover{r:6}.donut-chart-container{position:relative;width:140px;height:140px;flex-shrink:0}.donut-chart-svg{transform:rotate(-90deg)}.donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.donut-center-value{font-size:22px;font-weight:700;color:var(--text-primary);line-height:1}.donut-center-label{font-size:11px;color:var(--text-muted);margin-top:2px}.chart-legend{display:flex;flex-direction:column;gap:8px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.legend-name{color:var(--text-secondary);flex:1}.legend-value{font-weight:600;color:var(--text-primary)}.legend-pct{font-size:12px;color:var(--text-muted)}.sparkline-container{display:flex;align-items:flex-end;gap:3px;height:32px}.sparkline-bar{flex:1;border-radius:2px 2px 0 0;min-width:4px;min-height:2px}.sparkline-bar.up{background:var(--success)}.sparkline-bar.down{background:#fca5a5}.sparkline-bar.neutral{background:#3dd074}.chart-y-labels{display:flex;flex-direction:column;justify-content:space-between;height:160px;align-items:flex-end;padding-right:8px;font-size:11px;color:var(--text-muted)}.gauge-chart{position:relative;display:inline-flex;align-items:center;justify-content:center}.gauge-svg{transform:rotate(-135deg)}.gauge-track{fill:none;stroke:#e5e7eb;stroke-width:8;stroke-linecap:round}.gauge-progress{fill:none;stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.gauge-center{position:absolute;text-align:center}.gauge-value{font-size:20px;font-weight:700;color:var(--text-primary)}.gauge-label{font-size:11px;color:var(--text-muted)}.heatmap-row{display:flex;align-items:center;gap:4px;margin-bottom:4px}.heatmap-label{width:32px;font-size:11px;color:var(--text-muted);text-align:right;flex-shrink:0}.heatmap-cell{width:20px;height:20px;border-radius:3px;cursor:pointer;transition:transform .1s}.heatmap-cell:hover{transform:scale(1.15)}.heatmap-0{background:#f1f5f9}.heatmap-1{background:#9de5b8}.heatmap-2{background:#3dd074}.heatmap-3{background:#07c160}.heatmap-4{background:#1d8741}[data-theme=dark] .chart-grid line{stroke:#334155}[data-theme=dark] .chart-dot{stroke:#1e293b}[data-theme=dark] .bar-tooltip{background:#475569}[data-theme=dark] .sparkline-bar.down{background:#ef4444}[data-theme=dark] .gauge-track{stroke:#334155}[data-theme=dark] .heatmap-0{background:#1e293b}[data-theme=dark] .heatmap-1{background:#052e16}[data-theme=dark] .heatmap-2{background:#073220}[data-theme=dark] .heatmap-3{background:#0f5c38}[data-theme=dark] .heatmap-4{background:#07c160}
