:root{--navy: #1F3864;--navy-2: #16294a;--blue: #2E75B6;--blue-light: #4A90D9;--blue-50: #EAF2FB;--bg: #F4F6FA;--card: #FFFFFF;--border: #E3E8EF;--text: #1F2A37;--muted: #6B7280;--green: #1F9254;--green-bg: #E4F4EA;--amber: #B7791F;--amber-bg: #FBEFD6;--red: #C0392B;--red-bg: #FBE7E4;--purple: #6B46C1;--purple-bg: #EEE9FB;--shadow: 0 1px 3px rgba(16,40,80,.08), 0 1px 2px rgba(16,40,80,.04);--shadow-md: 0 4px 16px rgba(16,40,80,.12), 0 1px 4px rgba(16,40,80,.06);--shadow-lg: 0 8px 32px rgba(16,40,80,.16), 0 2px 8px rgba(16,40,80,.08);--shadow-blue: 0 4px 14px rgba(46,117,182,.35);--radius: 12px;--sidebar-w: 244px;--t: .18s ease;--tf: .1s ease;--ts: .32s ease;--primary: #2E75B6;--success: #1F9254;--text-muted: #6B7280;--bg-hover: #EAF2FB;--danger: #C0392B}@keyframes fadeInUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes pulseDot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}@keyframes bellShake{0%,to{transform:rotate(0)}20%{transform:rotate(-12deg)}40%{transform:rotate(10deg)}60%{transform:rotate(-7deg)}80%{transform:rotate(5deg)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--blue);text-decoration:none;transition:color var(--tf)}a:hover{color:var(--blue-light)}svg{display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#c5cfe0;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9fb1cf}.content>*{animation:fadeInUp .32s ease backwards}.content>*:nth-child(2){animation-delay:.05s}.content>*:nth-child(3){animation-delay:.1s}.content>*:nth-child(4){animation-delay:.15s}.content>*:nth-child(5){animation-delay:.2s}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-brand{background:linear-gradient(150deg,var(--navy),var(--navy-2) 60%,#0d1b30);color:#fff;padding:64px 56px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.login-brand:after{content:"";position:absolute;right:-120px;bottom:-120px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(74,144,217,.35),transparent 70%)}.login-brand:before{content:"";position:absolute;top:-60px;left:-60px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.05),transparent 70%)}.login-brand .brand-logo{width:80px;height:80px;object-fit:contain;margin-bottom:24px;filter:drop-shadow(0 2px 8px rgba(0,0,0,.25));transition:transform var(--t)}.login-brand .brand-logo:hover{transform:scale(1.08)}.login-brand h1{font-size:32px;line-height:1.2;font-weight:700;margin-bottom:16px;max-width:460px}.login-brand p{color:#b9c6dc;font-size:15px;max-width:420px}.login-brand ul{list-style:none;margin-top:34px;display:flex;flex-direction:column;gap:13px}.login-brand li{display:flex;gap:12px;align-items:center;color:#dbe4f2;font-size:14px;animation:fadeInUp .4s ease both}.login-brand li:nth-child(1){animation-delay:.1s}.login-brand li:nth-child(2){animation-delay:.2s}.login-brand li:nth-child(3){animation-delay:.3s}.login-brand li:nth-child(4){animation-delay:.4s}.login-brand li svg{stroke:var(--blue-light);flex:0 0 auto}.login-form-side{display:flex;align-items:center;justify-content:center;padding:40px}.login-card{width:100%;max-width:380px;animation:scaleIn .35s ease}.login-card h2{font-size:24px;margin-bottom:6px}.login-card .sub{color:var(--muted);margin-bottom:26px}.err{background:var(--red-bg);color:var(--red);padding:10px 13px;border-radius:9px;font-size:13px;margin-bottom:16px;border:1px solid #f3c9c3;animation:fadeInUp .2s ease;display:flex;align-items:center;gap:8px}.login-hint{margin-top:20px;font-size:12.5px;color:var(--muted);background:var(--blue-50);border:1px solid #d6e5f7;border-radius:9px;padding:11px 13px}.field{margin-bottom:18px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:7px;color:#374151;transition:color var(--tf)}.field:focus-within label{color:var(--blue)}.field input,.field select{width:100%;padding:11px 13px;border:1.5px solid var(--border);border-radius:9px;font-size:14px;background:#fff;color:var(--text);transition:border-color var(--t),box-shadow var(--t),background var(--t)}.field input:hover:not(:focus),.field select:hover:not(:focus){border-color:#b8c8e0}.field input:focus,.field select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3.5px #2e75b626;background:#fafcff}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:9px;border:1.5px solid transparent;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--t),box-shadow var(--t),transform var(--tf),border-color var(--t),color var(--t),filter var(--t);background:linear-gradient(135deg,var(--blue),var(--blue-light));color:#fff;box-shadow:0 2px 6px #2e75b640}.btn svg{transition:transform var(--tf);flex:0 0 auto}.btn:hover:not(:disabled){background:linear-gradient(135deg,#2667a3,#3a87cf);box-shadow:0 4px 14px #2e75b666;transform:translateY(-1px);color:#fff}.btn:hover:not(:disabled) svg{transform:scale(1.12)}.btn:active:not(:disabled){transform:translateY(0) scale(.98);box-shadow:0 1px 4px #2e75b638}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:none}.btn-primary{background:linear-gradient(135deg,var(--blue),var(--blue-light));color:#fff;box-shadow:0 2px 6px #2e75b640}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#2667a3,#3a87cf);box-shadow:0 4px 14px #2e75b666}.btn-block{width:100%}.btn-ghost{background:#fff;border-color:var(--border);color:var(--text);box-shadow:0 1px 3px #1028500f}.btn-ghost:hover:not(:disabled){background:var(--blue-50);border-color:var(--blue-light);color:var(--blue);box-shadow:0 2px 8px #2e75b624}.btn-danger{background:linear-gradient(135deg,#c0392b,#e74c3c);color:#fff;border-color:transparent;box-shadow:0 2px 6px #c0392b3d}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,#a93226,#c0392b);box-shadow:0 4px 14px #c0392b61}.btn-success{background:linear-gradient(135deg,var(--green),#27ae60);color:#fff;box-shadow:0 2px 6px #1f92543d}.btn-success:hover:not(:disabled){box-shadow:0 4px 14px #1f925461}.btn-sm{padding:7px 13px;font-size:13px;border-radius:8px}.btn.loading:after{content:"";width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.app{min-height:100vh}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:linear-gradient(185deg,#1a3361,#16294a 55%,#0f1e38);color:#cdd8ea;display:flex;flex-direction:column;z-index:40;box-shadow:2px 0 20px #00000024;transition:transform var(--ts)}.sidebar-backdrop{display:none;position:fixed;inset:0;background:#10285073;z-index:35;animation:fadeIn .2s ease}.sidebar .brand{display:flex;align-items:center;gap:11px;padding:18px 20px;color:#fff;font-weight:700;font-size:15px;border-bottom:1px solid rgba(255,255,255,.08);transition:background var(--t)}.sidebar .brand:hover{background:#ffffff0a}.sidebar .brand-logo{width:36px;height:36px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 1px 4px rgba(0,0,0,.3));transition:transform var(--t)}.sidebar .brand:hover .brand-logo{transform:scale(1.1)}.sidebar .brand small{display:block;font-weight:400;font-size:11px;color:#8ea3c4}.nav{flex:1;overflow-y:auto;padding:12px 10px 24px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.1) transparent}.nav::-webkit-scrollbar{width:4px}.nav::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.nav-group{margin-top:16px}.nav-group:first-child{margin-top:6px}.nav-group h6{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:#5a7199;padding:0 10px 7px;font-weight:700}.nav a{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;color:#c4d0e4;font-size:13.5px;font-weight:500;margin-bottom:2px;cursor:pointer;transition:background var(--t),color var(--t),padding-left var(--t);position:relative;overflow:hidden}.nav a svg{width:18px;height:18px;stroke:#9fb1cf;flex:0 0 auto;transition:stroke var(--t),transform var(--tf)}.nav a:hover{background:#ffffff17;color:#fff;padding-left:15px}.nav a:hover svg{stroke:#fff;transform:scale(1.18)}.nav a.active{background:linear-gradient(135deg,var(--blue),#3a8fd9);color:#fff;box-shadow:0 3px 12px #2e75b66b}.nav a.active svg{stroke:#fff}.nav a.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:58%;background:#ffffffbf;border-radius:0 2px 2px 0}.main{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;height:62px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 26px;box-shadow:0 1px 8px #1028500f}.topbar .search{flex:1;max-width:420px;position:relative}.topbar .search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);stroke:var(--muted);width:17px;height:17px;transition:stroke var(--t)}.topbar .search input{width:100%;padding:9px 12px 9px 38px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);font-size:13.5px;transition:border-color var(--t),background var(--t),box-shadow var(--t)}.topbar .search input:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px #2e75b61f}.topbar .search:focus-within svg{stroke:var(--blue)}.topbar .spacer{flex:1}.icon-btn.menu-btn{display:none}.icon-btn{position:relative;width:38px;height:38px;border-radius:9px;border:1.5px solid var(--border);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color var(--t),background var(--t),box-shadow var(--t),transform var(--tf)}.icon-btn:hover{border-color:var(--blue-light);background:var(--blue-50);box-shadow:0 2px 8px #2e75b626;transform:translateY(-1px)}.icon-btn:active{transform:translateY(0) scale(.94)}.icon-btn svg{stroke:var(--navy);width:19px;height:19px;transition:stroke var(--t),transform var(--t)}.icon-btn:hover svg{stroke:var(--blue);transform:scale(1.12)}.icon-btn .dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;background:#e25555;border:2px solid #fff;animation:pulseDot 1.8s ease infinite}.avatar{width:38px;height:38px;border-radius:50%;cursor:pointer;background:linear-gradient(135deg,var(--blue),var(--blue-light));color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;box-shadow:0 2px 8px #2e75b647;transition:transform var(--t),box-shadow var(--t)}.avatar:hover{transform:scale(1.1);box-shadow:0 3px 12px #2e75b66b}.user-chip{display:flex;align-items:center;gap:10px}.user-chip .who b{font-size:13.5px}.user-chip .who span{font-size:11.5px;color:var(--muted);display:block}.content{padding:26px;flex:1}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:12px}.page-head h1{font-size:22px;color:var(--navy);font-weight:700;letter-spacing:-.01em}.page-head .crumb{font-size:12.5px;color:var(--muted);margin-bottom:3px}.page-actions{display:flex;gap:10px;align-items:center}.grid{display:grid;gap:18px}.kpi-grid{grid-template-columns:repeat(4,1fr)}.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;transition:box-shadow var(--t),transform var(--t),border-color var(--t);cursor:default}.kpi:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:#d0dae8}.kpi .kpi-icon{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;transition:transform var(--t)}.kpi:hover .kpi-icon{transform:scale(1.1) rotate(-4deg)}.kpi .kpi-icon svg{width:21px;height:21px}.kpi .kpi-label{font-size:12.5px;color:var(--muted);font-weight:500}.kpi .kpi-value{font-size:25px;font-weight:700;color:var(--navy);letter-spacing:-.02em}.kpi .kpi-foot{font-size:12px;display:flex;align-items:center;gap:5px}.tint-blue{background:var(--blue-50)}.tint-blue svg{stroke:var(--blue)}.tint-green{background:var(--green-bg)}.tint-green svg{stroke:var(--green)}.tint-amber{background:var(--amber-bg)}.tint-amber svg{stroke:var(--amber)}.tint-red{background:var(--red-bg)}.tint-red svg{stroke:var(--red)}.tint-purple{background:var(--purple-bg)}.tint-purple svg{stroke:var(--purple)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:box-shadow var(--t),border-color var(--t)}.card.hoverable:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);border-color:#d0dae8}.card-head,.card-header{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--border)}.card-head h3,.card-header h3{font-size:15px;color:var(--navy);font-weight:700}.card-head .link,.card-header .link{font-size:12.5px;font-weight:600;transition:color var(--tf)}.card-body{padding:18px}.cols-2{grid-template-columns:1.6fr 1fr}.cols-2b{grid-template-columns:1fr 1fr}.toolbar{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}.toolbar .search-mini{position:relative;flex:1;min-width:180px;max-width:300px}.toolbar .search-mini svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);stroke:var(--muted);width:16px;height:16px}.toolbar .search-mini input{width:100%;padding:8px 10px 8px 34px;border:1.5px solid var(--border);border-radius:8px;background:var(--bg);font-size:13px;transition:border-color var(--t),box-shadow var(--t),background var(--t)}.toolbar .search-mini input:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px #2e75b61a}.toolbar select,.toolbar input[type=date],.toolbar input[type=datetime-local]{padding:8px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;background:#fff;transition:border-color var(--t),box-shadow var(--t)}.toolbar select:focus,.toolbar input[type=date]:focus,.toolbar input[type=datetime-local]:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #2e75b61a}.table-wrap{overflow-x:auto}table.data,table.data-table{width:100%;border-collapse:collapse;font-size:13px}table.data th,table.data-table th{text-align:left;padding:11px 16px;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:#fafbfd;border-bottom:1px solid var(--border);font-weight:700;white-space:nowrap}table.data td,table.data-table td{padding:12px 16px;border-bottom:1px solid #EEF1F6;white-space:nowrap;transition:background var(--tf)}table.data tr:last-child td,table.data-table tr:last-child td{border-bottom:none}table.data tbody tr,table.data-table tbody tr{transition:background var(--tf)}table.data tbody tr:hover,table.data-table tbody tr:hover{background:var(--blue-50)}table.data td.num,table.data th.num,table.data-table td.num,table.data-table th.num{text-align:right;font-variant-numeric:tabular-nums}.t-strong{font-weight:600;color:var(--navy)}.t-sub{color:var(--muted);font-size:12px}.row-link{cursor:pointer}.row-link:hover td{background:var(--blue-50)!important}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:600;white-space:nowrap;transition:transform var(--tf),box-shadow var(--tf)}.pill:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.pill:hover{transform:scale(1.04)}.pill.gray,.pill-gray{background:#eef1f6;color:#5b6577}.pill.blue,.pill-blue{background:var(--blue-50);color:var(--blue)}.pill.green,.pill-green{background:var(--green-bg);color:var(--green)}.pill.amber,.pill-amber{background:var(--amber-bg);color:var(--amber)}.pill.red,.pill-red{background:var(--red-bg);color:var(--red)}.pill.purple,.pill-purple{background:var(--purple-bg);color:var(--purple)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:700}.badge-success{background:var(--green-bg);color:var(--green)}.badge-danger{background:var(--red-bg);color:var(--red)}.badge-blue{background:var(--blue-50);color:var(--blue)}.badge-amber{background:var(--amber-bg);color:var(--amber)}.progress{height:8px;background:#eaeef4;border-radius:6px;overflow:hidden;min-width:90px}.progress>span{display:block;height:100%;border-radius:6px;background:var(--blue);transition:width .5s cubic-bezier(.4,0,.2,1)}.progress.ok>span{background:var(--green)}.progress.warn>span{background:var(--amber)}.progress.bad>span{background:var(--red)}.progress-track{height:8px;background:#eaeef4;border-radius:6px;overflow:hidden}.progress-fill{height:100%;border-radius:6px;background:var(--blue);transition:width .5s cubic-bezier(.4,0,.2,1)}.bar-blue{background:var(--blue)!important}.bar-green{background:var(--green)!important}.bar-amber{background:var(--amber)!important}.bar-red{background:var(--red)!important}.bar-purple{background:var(--purple)!important}.bar-gray{background:#94a3b8!important}.mini-bar{height:6px;background:#eaeef4;border-radius:4px;overflow:hidden}.mini-bar-fill,.mini-fill{height:100%;border-radius:4px;background:var(--blue);transition:width .5s cubic-bezier(.4,0,.2,1)}.bar-green.mini-bar-fill,.bar-green.mini-fill{background:var(--green)}.bar-amber.mini-bar-fill,.bar-amber.mini-fill{background:var(--amber)}.bar-red.mini-bar-fill,.bar-red.mini-fill{background:var(--red)}.ach-green{background:var(--green)!important}.ach-amber{background:var(--amber)!important}.ach-red{background:var(--red)!important}.t-danger{color:var(--red)}.t-success{color:var(--green)}.t-amber{color:var(--amber)}.up{color:var(--green);display:inline-flex;align-items:center;gap:4px}.down{color:var(--red);display:inline-flex;align-items:center;gap:4px}.tab-bar{display:flex;border-bottom:2px solid var(--border);margin-bottom:0}.tab-bar button{padding:10px 20px;border:none;background:none;cursor:pointer;font-size:14px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-2px;font-weight:500;position:relative;transition:color var(--t),border-color var(--t)}.tab-bar button:after{content:"";position:absolute;bottom:-2px;left:50%;right:50%;height:2px;background:var(--blue);border-radius:2px;transition:left var(--ts),right var(--ts)}.tab-bar button.active{color:var(--blue);font-weight:600}.tab-bar button.active:after{left:0;right:0}.tab-bar button:hover:not(.active){color:var(--navy)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group{display:flex;flex-direction:column;gap:5px}.form-label{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;transition:color var(--tf)}.form-group:focus-within .form-label{color:var(--blue)}.form-control,.form-group input:not([type=checkbox]):not([type=radio]),.form-group select,.form-group textarea{padding:9px 12px;border:1.5px solid var(--border);border-radius:9px;font-size:13.5px;background:#fff;color:var(--text);transition:border-color var(--t),box-shadow var(--t),background var(--t)}.form-group input:not([type=checkbox]):not([type=radio]):hover:not(:focus),.form-group select:hover:not(:focus),.form-group textarea:hover:not(:focus){border-color:#b8c8e0}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3.5px #2e75b621;background:#fafcff}.form-group select{cursor:pointer}.form-group textarea{resize:vertical;min-height:72px}.form-group input[type=checkbox],.form-group input[type=radio]{cursor:pointer}.modal-backdrop{position:fixed;inset:0;background:#1028507a;z-index:100;display:flex;align-items:center;justify-content:center;animation:fadeIn .18s ease}.modal-box{background:#fff;border-radius:var(--radius);width:420px;max-width:95vw;box-shadow:var(--shadow-lg);overflow:hidden;animation:scaleIn .22s ease}.modal-box .modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border)}.modal-box .modal-head h3{font-size:16px;font-weight:700;color:var(--navy)}.modal-box .modal-body{padding:18px}.modal-box .modal-foot{padding:14px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;background:#fafbfd}.btn-close{width:28px;height:28px;border-radius:6px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);transition:background var(--t),color var(--t),transform var(--tf)}.btn-close:hover{background:var(--red-bg);color:var(--red);transform:rotate(90deg)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}.dot-blue{background:var(--blue)}.dot-green{background:var(--green)}.dot-amber{background:var(--amber)}.dot-purple{background:var(--purple)}.dot-red{background:var(--red)}.dot-gray{background:#94a3b8}.meeting-row{display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border);transition:background var(--tf)}.meeting-row:hover{background:var(--blue-50)}.meeting-row:last-child{border-bottom:none}.meeting-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.rank-badge{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}.rank-1{background:#fef3c7;color:#92400e}.rank-2{background:#f1f5f9;color:#475569}.rank-3{background:#fff3e0;color:#b45309}.rank-other{background:#eef1f6;color:var(--muted)}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:2px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);align-items:center}.legend span{display:flex;align-items:center;gap:5px}.pct-success{color:var(--green)}.pct-amber{color:var(--amber)}.pct-danger{color:var(--red)}.empty{padding:48px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:12px}.empty svg{opacity:.35}.loading{padding:32px;text-align:center;color:var(--muted);font-size:13px;display:flex;align-items:center;justify-content:center;gap:10px}.loading:before{content:"";width:18px;height:18px;flex-shrink:0;border:2px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}.demo-flag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--amber);background:var(--amber-bg);padding:3px 9px;border-radius:20px}.muted-note{font-size:12px;color:var(--muted);line-height:1.6}.section-title{font-size:13px;font-weight:700;color:var(--navy);margin:4px 0 12px;text-transform:uppercase;letter-spacing:.04em}.link{color:var(--blue);font-weight:600;cursor:pointer;font-size:12.5px;transition:color var(--tf)}.link:hover{color:var(--blue-light);text-decoration:underline}.skeleton{background:linear-gradient(90deg,#f0f2f5 25%,#e6e9ef,#f0f2f5 75%);background-size:400px 100%;animation:shimmer 1.4s ease infinite;border-radius:6px;min-height:16px}.icon-action{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;cursor:pointer;color:var(--muted);transition:background var(--t),color var(--t),transform var(--tf)}.icon-action:hover{background:var(--blue-50);color:var(--blue);transform:scale(1.12)}.icon-action.danger:hover{background:var(--red-bg);color:var(--red)}.icon-action.success:hover{background:var(--green-bg);color:var(--green)}.bar-chart{display:flex;gap:10px;align-items:flex-end;padding:18px 0;height:180px}.bar-col{display:flex;flex-direction:column;align-items:center;flex:1;gap:4px}.bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end}.bar-fill{width:80%;border-radius:4px 4px 0 0;transition:height .5s cubic-bezier(.4,0,.2,1);min-height:4px}.bar-col:hover .bar-fill{filter:brightness(1.1)}.bar-label{font-size:11px;color:var(--muted);text-align:center}.bar-val{font-size:11px;font-weight:700;color:var(--navy);text-align:center}.kv{display:grid;grid-template-columns:160px 1fr;gap:8px 14px;font-size:13.5px}.kv dt{color:var(--muted);display:flex;align-items:center}.kv dd{font-weight:600;color:var(--text);display:flex;align-items:center;gap:4px}.report-download-btn{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border:1.5px solid var(--border);border-radius:9px;background:#fff;font-size:13px;font-weight:500;color:var(--navy);cursor:pointer;transition:background var(--t),border-color var(--t),transform var(--tf),box-shadow var(--t)}.report-download-btn:hover{background:var(--blue-50);border-color:var(--blue-light);transform:translateY(-1px);box-shadow:0 2px 8px #2e75b61f}.report-download-btn:active{transform:translateY(0)}.notif-panel{animation:slideDown .2s ease}.split-280{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:start}@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.cols-2,.cols-2b,.form-grid{grid-template-columns:1fr}}@media(max-width:900px){.split-280{grid-template-columns:1fr}}@media(max-width:720px){.login-wrap{grid-template-columns:1fr}.login-brand{display:none}.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:4px 0 32px #00000059}.sidebar.open~.sidebar-backdrop,.sidebar-backdrop.show{display:block}.main{margin-left:0}.icon-btn.menu-btn{display:flex}.topbar{padding:0 14px;gap:10px}.topbar .search{max-width:none}.user-chip .who{display:none}.content{padding:16px}.page-head h1{font-size:19px}.modal-box{width:95vw}.kv{grid-template-columns:120px 1fr}}@media(max-width:560px){.kpi-grid{grid-template-columns:1fr}.page-actions{width:100%;flex-wrap:wrap}.toolbar{padding:12px 14px}.toolbar .search-mini{max-width:none}}@media print{body.printing-invoice .sidebar,body.printing-invoice .topbar{display:none!important}body.printing-invoice .main{margin-left:0!important}body.printing-invoice .page-head,body.printing-invoice .kpi-grid,body.printing-invoice .card,body.printing-invoice .toolbar,body.printing-invoice .no-print{display:none!important}body.printing-invoice .inv-modal-backdrop{position:static!important;background:none!important;padding:0!important}body.printing-invoice .inv-modal{max-height:none!important;box-shadow:none!important;width:100%!important;border-radius:0!important}@page{margin:1.5cm}}
