@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&family=DM+Mono:wght@400;500&display=swap");:root{--green:#4a8fd4;--green-dark:#2d6aad;--green-light:#e8f0f9;--green-mid:#b8d4f0;--red:#ff5252;--white:#ffffff;--gray-50:#f8fafb;--gray-100:#f0f4f2;--gray-200:#dde6e1;--gray-300:#b8ccc3;--gray-400:#8aa898;--gray-600:#4a6558;--gray-700:#2d4037;--gray-900:#111f18;--sidebar-w:240px;--radius:10px;--shadow-sm:0 1px 3px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 12px rgba(0,0,0,0.08);--shadow-lg:0 8px 30px rgba(0,0,0,0.12);--font:"DM Sans",sans-serif;--mono:"DM Mono",monospace;--bg-body:var(--gray-50);--bg-sidebar:var(--white);--bg-card:var(--white);--bg-input:var(--gray-50);--border:var(--gray-200);--text:var(--gray-700);--text-dim:var(--gray-400);--text-strong:var(--gray-900);--divider:var(--gray-200);--row-odd:#f4f8fc;--row-even:#e8f0f8;--row-hover:#dceaf6;--row-sep:#cddaea;--thead-bg:#dde6ee;--thead-color:#4a6a88}html.dark{--bg-body:#0a0f1a;--bg-sidebar:#0d1525;--bg-card:#111c2e;--bg-input:#0a0f1a;--border:rgba(74,143,212,0.15);--text:#b8cfe8;--text-dim:#5a7aaa;--text-strong:#e8f0f9;--divider:rgba(74,143,212,0.12);--gray-50:#0a0f1a;--gray-100:#111c2e;--gray-200:rgba(74,143,212,0.15);--gray-300:rgba(74,143,212,0.25);--gray-400:#5a7aaa;--gray-600:#7a9ac0;--gray-700:#b8cfe8;--gray-900:#e8f0f9;--white:#111c2e;--green-light:rgba(74,143,212,0.1);--green-mid:rgba(74,143,212,0.2);--shadow-sm:0 1px 3px rgba(0,0,0,0.4);--shadow-md:0 4px 12px rgba(0,0,0,0.5);--shadow-lg:0 8px 30px rgba(0,0,0,0.6);--row-odd:#081018;--row-even:#0b1628;--row-hover:rgba(74,143,212,0.18);--row-sep:rgba(74,143,212,0.14);--thead-bg:#0a0f1a;--thead-color:#4a8fd4}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg-body);color:var(--text);font-size:14px;transition:background .3s,color .3s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}.card{background:var(--bg-card);border-radius:14px;border:1px solid var(--border);padding:28px;box-shadow:var(--shadow-sm)}.card,.card-title{margin-bottom:20px}.card-title{font-size:15px;font-weight:700;color:var(--text-strong);display:flex;align-items:center;justify-content:space-between}.badge{font-size:11px;font-weight:600;background:var(--green-light);color:var(--green-dark);padding:3px 10px;border-radius:20px;border:1px solid var(--green-mid)}.page-title{font-size:24px;font-weight:700;color:var(--text-strong);letter-spacing:-.5px}.page-subtitle{font-size:13px;color:var(--gray-400);margin-top:4px}.divider{border:none;border-top:1px solid var(--border);margin:24px 0}.hidden{display:none!important}.text-center{text-align:center}.text-dim{color:var(--text-dim)}.text-strong{color:var(--text-strong)}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:12px;font-weight:500;color:var(--gray-600);margin-bottom:6px}.form-group input{width:100%;padding:9px 12px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-family:var(--font);font-size:13px;color:var(--gray-700);background:var(--bg-input);outline:none;transition:border-color .2s,box-shadow .2s}.form-group input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(74,143,212,.12);background:var(--bg-card)}.select-wrapper{position:relative}.select-wrapper select,select.form-ctrl{width:100%;padding:10px 38px 10px 14px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-family:var(--font);font-size:13px;color:var(--gray-700);background:var(--bg-card);-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer;transition:border-color .2s,box-shadow .2s}.select-wrapper select:focus,select.form-ctrl:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(74,143,212,.12)}.select-wrapper:after{content:"";position:absolute;right:14px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--gray-400);pointer-events:none}.btn-primary{width:100%;padding:10px 16px;background:var(--green);color:#fff;border:none;border-radius:var(--radius);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:background .2s,transform .1s,box-shadow .2s;box-shadow:0 2px 8px rgba(74,143,212,.3)}.btn-primary:hover{background:var(--green-dark);box-shadow:0 4px 14px rgba(74,143,212,.4)}.btn-primary:active{transform:scale(.98)}.btn-secondary{width:100%;padding:9px 16px;background:transparent;color:var(--gray-600);border:1.5px solid var(--gray-200);border-radius:var(--radius);font-family:var(--font);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}.btn-secondary:hover{border-color:var(--green);color:var(--green);background:var(--green-light)}.error-msg{font-size:12px;color:#e05050;margin-top:10px;padding:8px 10px;background:#fef2f2;border-radius:6px;border-left:3px solid #e05050;display:none}html.dark .error-msg{background:rgba(255,82,82,.1)}.error-msg.visible{display:block}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.modal-overlay.visible{opacity:1;visibility:visible}.modal{border:1px solid var(--border);border-radius:16px;padding:28px;min-width:360px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.app-sidebar,.modal{background:var(--bg-card)}.app-sidebar{width:240px;min-height:100vh;border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:50;transition:transform .3s ease}body.sidebar-collapsed .app-sidebar{width:60px}body.sidebar-collapsed .sidebar-logo{flex-direction:column;align-items:center;justify-content:center;padding:12px 0;gap:6px}body.sidebar-collapsed .sidebar-logo span{display:none}body.sidebar-collapsed .sidebar-toggle{margin-left:0}body.sidebar-collapsed .nav-label{display:none}body.sidebar-collapsed .nav-item{justify-content:center;padding:10px 0;border-radius:0}body.sidebar-collapsed .nav-item .nav-badge,body.sidebar-collapsed .nav-item .nav-text,body.sidebar-collapsed .sidebar-search{display:none}body.sidebar-collapsed .sidebar-footer{padding:10px 0;align-items:center;flex-direction:column;gap:8px}body.sidebar-collapsed .user-actions,body.sidebar-collapsed .user-info{display:none}body.sidebar-collapsed .sidebar-footer-top{justify-content:center}body.sidebar-collapsed .header-toggle-btn{display:flex}.sidebar-logo{padding:20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}.sidebar-logo img{max-width:120px;height:42px;border-radius:10px;object-fit:contain}.sidebar-logo span{font-size:16px;font-weight:700;color:var(--text-strong)}.sidebar-toggle{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--text-dim);padding:4px;transition:color .15s}.sidebar-toggle:hover{color:var(--text)}.sidebar-search{margin:16px 16px 8px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:8px 12px;display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:12px;cursor:text}.nav-label{font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:16px 20px 6px;opacity:.7}.nav-item,.nav-label{color:var(--text-dim)}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 16px;margin:2px 8px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;transition:all .15s;text-decoration:none;border:1px solid transparent}.nav-item:hover{background:var(--bg-input);color:var(--text);text-decoration:none}.nav-item.active{background:rgba(74,143,212,.12);color:var(--green);border-color:rgba(74,143,212,.2)}.nav-item .nav-icon,.nav-item svg{width:18px;height:18px;flex-shrink:0}.nav-item .nav-badge{margin-left:auto;font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;background:rgba(74,143,212,.15);color:var(--green)}.sidebar-footer{margin-top:auto;padding:12px;border-top:1px solid var(--border)}.user-card{background:var(--bg-input);border:1px solid var(--border);border-radius:10px;padding:12px}.user-card-top{gap:10px;margin-bottom:10px}.user-avatar,.user-card-top{display:flex;align-items:center}.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--green);justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0}.user-info-text{flex:1 1;min-width:0}.user-info-name{font-size:13px;font-weight:600;color:var(--text-strong)}.user-info-brand,.user-info-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info-brand{font-size:10px;color:var(--text-dim)}.user-card-actions{display:flex;gap:4px;flex-wrap:wrap}.user-action-btn{flex:1 1;min-width:0;display:flex;align-items:center;justify-content:center;gap:4px;padding:6px 8px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-size:10px;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .15s;white-space:nowrap}.user-action-btn:hover{border-color:var(--green);color:var(--green)}.user-action-btn.logout{color:#ff5252;border-color:rgba(255,82,82,.3)}.user-action-btn.logout:hover{background:rgba(255,82,82,.08);border-color:#ff5252}.app-layout,.app-main{display:flex;min-height:100vh}.app-main{margin-left:240px;flex:1 1;height:100vh;min-width:0;overflow:hidden;flex-direction:column;transition:margin-left .3s ease}body.sidebar-collapsed .app-main{margin-left:60px}.app-filter-bar{display:flex;align-items:center;gap:6px;flex-shrink:0;height:50px;padding:0 16px;background:var(--bg-card);border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden}.app-filter-bar::-webkit-scrollbar{height:0}.afb-group{display:flex;align-items:center;gap:5px;flex-shrink:0}.afb-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);white-space:nowrap}.afb-group input[type=date],.afb-group select{height:30px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input);color:var(--text);font-family:var(--font);font-size:12.5px;outline:none;transition:border-color .15s;cursor:pointer}.afb-group input[type=date]:focus,.afb-group select:focus{border-color:var(--green)}.afb-group select{padding:0 24px 0 8px;min-width:130px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a7aaa' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 5px center;background-size:12px}.afb-group input[type=date]{padding:0 6px;min-width:128px;color-scheme:dark}html:not(.dark) .afb-group input[type=date]{color-scheme:light}.afb-divider{width:1px;height:20px;background:var(--border);flex-shrink:0;margin:0 2px}.afb-presets{display:flex;gap:3px;flex-shrink:0}.afb-preset{height:26px;padding:0 9px;border-radius:5px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-family:var(--font);font-size:11.5px;font-weight:500;cursor:pointer;transition:all .12s;white-space:nowrap}.afb-preset:hover{border-color:var(--green);color:var(--green);background:var(--green-light)}.afb-preset.active{background:var(--green);color:#fff;border-color:var(--green)}.afb-lang{display:flex;gap:2px;flex-shrink:0}.afb-lang-btn{height:26px;padding:0 9px;border-radius:5px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-family:var(--font);font-size:11px;font-weight:700;letter-spacing:.5px;cursor:pointer;transition:all .12s}.afb-lang-btn:hover{border-color:var(--text-dim);color:var(--text)}.afb-lang-btn.active{border-color:var(--green);color:var(--green);background:var(--green-light)}.app-module-area{flex:1 1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.page-header{padding:18px 28px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--bg-card);position:-webkit-sticky;position:sticky;top:0;z-index:10;flex-shrink:0}.page-header h1{font-size:18px;font-weight:700;color:var(--text-strong)}.header-toggle-btn{display:none;background:none;border:1px solid var(--border);border-radius:8px;padding:6px 8px;cursor:pointer;color:var(--text-dim)}.module-panel{flex:1 1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-body)}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:40px 36px 32px;width:380px;max-width:90vw;box-shadow:var(--shadow-lg);text-align:center}.login-card .login-logo{width:64px;height:64px;border-radius:14px;object-fit:cover;margin-bottom:16px}.login-card h1{font-size:22px;font-weight:700;color:var(--text-strong);margin-bottom:4px}.login-card .login-subtitle{font-size:13px;color:var(--text-dim);margin-bottom:28px}.login-field{text-align:left;margin-bottom:16px}.login-field label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);margin-bottom:6px}.login-field input{width:100%;padding:10px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;font-family:var(--font);transition:border-color .15s}.login-field input:focus{outline:none;border-color:var(--green)}.login-field .pwd-wrap{position:relative}.login-field .pwd-wrap input{padding-right:40px}.login-field .pwd-wrap .btn-eye{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-dim);padding:2px}.login-btn{width:100%;padding:12px 20px;margin-top:8px;background:var(--green);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font);display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .2s}.login-btn:hover{opacity:.9}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-error{margin-top:14px;padding:10px 14px;border-radius:8px;background:rgba(255,82,82,.1);color:#ff5252;border:1px solid rgba(255,82,82,.2);font-size:13px;display:none}.login-error.visible{display:block}