:root{--navy:#071124;--navy2:#0a1830;--slate:#101f39;--slate2:#152844;--line:#263a59;--text:#e8f1fb;--muted:#8fa7c3;--amber:#f4b740;--amber2:#d9951c;--cyan:#5dc8d6;--green:#4fd1a1;--red:#fb7185;--blue:#68a7ff;--shadow:0 18px 55px rgba(0,0,0,.28)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--navy);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:16px}button,select,input,textarea{font:inherit}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:#08152b;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:30}.brand{height:78px;display:flex;align-items:center;gap:11px;padding:0 16px;border-bottom:1px solid var(--line)}.brand-mark{width:40px;height:40px;border:1px solid #7b5c1f;background:linear-gradient(145deg,#25334b,#111d32);border-radius:11px;display:grid;place-items:center;color:var(--amber);font-weight:800;font-size:13px}.brand strong{display:block;font-size:15px}.brand span{display:block;color:var(--muted);font-size:11px;margin-top:3px}.close-nav{display:none;margin-left:auto;background:none;border:0;color:white;font-size:27px}nav{padding:14px 10px;overflow:auto;flex:1}.nav-group{margin:4px 0}.nav-parent,.nav-item{width:100%;border:0;background:transparent;color:#aebfd4;display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:8px;text-align:left;cursor:pointer;font-size:14px}.nav-parent{color:#d8e4f2;font-weight:650}.nav-parent .chev{margin-left:auto;color:#7189a7}.nav-icon{width:19px;text-align:center;color:#8ea8c8}.nav-children{display:grid;gap:2px;margin-left:21px;border-left:1px solid #29415f;padding-left:7px}.nav-item{padding:8px 9px;font-size:13px}.nav-item.active{background:linear-gradient(90deg,rgba(244,183,64,.2),rgba(244,183,64,.04));color:#ffd376;border-left:2px solid var(--amber)}.sidebar-foot{margin:10px;padding:12px;background:#0d2038;border:1px solid #23405d;border-radius:10px;display:flex;align-items:center;gap:10px}.sidebar-foot strong,.sidebar-foot small{display:block}.sidebar-foot strong{font-size:12px}.sidebar-foot small{font-size:11px;color:var(--muted);margin-top:2px}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(79,209,161,.12);display:inline-block}.main{margin-left:248px;min-height:100vh;background:radial-gradient(circle at 85% -20%,rgba(42,77,121,.32),transparent 38%),var(--navy)}.mobile-bar{display:none}.workspace{padding:18px 20px 36px}.context-row{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px}.eyebrow{font-size:11px;color:var(--amber);letter-spacing:.14em;font-weight:800}.page-title h1{font-size:26px;line-height:1.2;margin:4px 0 0;letter-spacing:-.03em}.context-controls{display:flex;align-items:flex-end;gap:8px}.context-controls label{font-size:11px;color:var(--muted)}select,input,textarea{color:var(--text);background:#0c1b32;border:1px solid #29405e;border-radius:8px;padding:9px 11px;outline:none}select:focus,input:focus,textarea:focus{border-color:var(--amber)}.context-controls select{display:block;margin-top:4px;min-width:165px}.icon-btn,.btn{border:1px solid #314765;background:#122541;color:var(--text);border-radius:8px;padding:9px 13px;cursor:pointer}.btn.primary{background:var(--amber);border-color:var(--amber);color:#1a160c;font-weight:800}.btn:hover,.icon-btn:hover{filter:brightness(1.12)}.grid{display:grid;gap:12px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px}.kpi{background:linear-gradient(145deg,#122440,#0e1c34);border:1px solid var(--line);border-radius:12px;padding:15px;position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;right:-18px;top:-18px;width:58px;height:58px;border-radius:50%;background:rgba(244,183,64,.07)}.kpi .label{font-size:12px;color:var(--muted)}.kpi .value{font-size:27px;font-weight:800;margin:7px 0 3px}.kpi .delta{font-size:11px;color:#8fa7c3}.kpi .delta.good{color:var(--green)}.kpi .delta.warn{color:var(--amber)}.dashboard-grid{grid-template-columns:1.45fr 1fr}.card{background:rgba(15,31,56,.9);border:1px solid var(--line);border-radius:12px;overflow:hidden}.card-head{display:flex;justify-content:space-between;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}.card-head h2{font-size:14px;margin:0}.card-head span{font-size:11px;color:var(--muted)}.card-body{padding:15px}.chart{height:230px;display:flex;align-items:flex-end;gap:8px;border-bottom:1px solid #30425e;padding-top:20px;position:relative}.chart:before,.chart:after{content:"";position:absolute;left:0;right:0;border-top:1px dashed #263a55}.chart:before{top:35%}.chart:after{top:65%}.bar-col{height:100%;flex:1;display:flex;align-items:flex-end;gap:2px;position:relative;z-index:1}.bar{flex:1;border-radius:4px 4px 0 0;min-height:3px}.bar.in{background:var(--amber)}.bar.out{background:#375c82}.bar-col label{position:absolute;bottom:-21px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--muted)}.chart-legend{display:flex;gap:16px;font-size:11px;color:var(--muted);margin-top:28px}.legend-dot{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:5px}.attention-list{display:grid}.attention{display:flex;gap:11px;padding:12px 15px;border-bottom:1px solid #203451;cursor:pointer}.attention:last-child{border-bottom:0}.attention:hover{background:#142945}.attention .signal{width:9px;height:9px;border-radius:50%;margin-top:5px}.attention strong{display:block;font-size:13px}.attention p{margin:3px 0 0;color:var(--muted);font-size:11px}.attention time{margin-left:auto;font-size:10px;color:var(--muted);white-space:nowrap}.split-bottom{grid-template-columns:1fr 1fr;margin-top:12px}.donut-wrap{display:flex;align-items:center;justify-content:space-around;min-height:190px}.donut{width:135px;height:135px;border-radius:50%;background:conic-gradient(var(--amber) 0 42%,var(--cyan) 42% 65%,var(--blue) 65% 82%,#60738e 82%);display:grid;place-items:center}.donut:after{content:"2.846\A lượt";white-space:pre;text-align:center;display:grid;place-items:center;width:83px;height:83px;border-radius:50%;background:var(--slate);font-size:12px;font-weight:750}.donut-legend{display:grid;gap:10px;font-size:12px;color:#bac9da}.status-bars{display:grid;gap:14px}.status-row{display:grid;grid-template-columns:115px 1fr 42px;align-items:center;gap:10px;font-size:12px}.track{height:7px;background:#263854;border-radius:8px;overflow:hidden}.fill{height:100%;border-radius:8px}.toolbar{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px}.toolbar-left,.toolbar-right{display:flex;gap:8px;align-items:center}.search{min-width:270px}.filter-chip{border:1px solid #304967;background:#10223d;color:#b8c8db;padding:8px 11px;border-radius:8px;cursor:pointer}.filter-chip.active{border-color:#8d6b2c;color:#ffd376;background:#2b261d}.table-wrap{background:rgba(15,31,56,.9);border:1px solid var(--line);border-radius:12px;overflow:auto}table{width:100%;border-collapse:collapse;min-width:920px}th{font-size:11px;text-align:left;color:#8fa7c3;background:#0d1c33;padding:11px 12px;border-bottom:1px solid var(--line);font-weight:700}td{padding:12px;border-bottom:1px solid #1e3451;font-size:12px;color:#cfdaea}tbody tr{cursor:pointer}tbody tr:hover{background:#142846}tbody tr:last-child td{border-bottom:0}.person-cell{display:flex;align-items:center;gap:9px}.avatar{width:31px;height:31px;border-radius:9px;background:linear-gradient(135deg,#365778,#172943);display:grid;place-items:center;font-weight:800;font-size:10px;color:#ddebfa}.sub{display:block;color:#7892b1;font-size:10px;margin-top:3px}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:10px;border:1px solid}.badge.ok{color:#70e5b7;border-color:#296c58;background:#133b33}.badge.warn{color:#ffd06d;border-color:#6d5729;background:#342d1d}.badge.bad{color:#ff9aaa;border-color:#6c3340;background:#3a1e29}.badge.info{color:#9dc7ff;border-color:#345d8d;background:#172f50}.table-foot{display:flex;justify-content:space-between;padding:11px 13px;color:var(--muted);font-size:11px}.pagination button{border:0;background:transparent;color:var(--muted);padding:3px 7px}.pagination button.active{background:var(--amber);color:#18130a;border-radius:5px}.empty{padding:70px 20px;text-align:center;color:var(--muted)}.empty .empty-icon{font-size:34px;opacity:.55}.drawer{position:fixed;right:0;top:0;bottom:0;width:min(520px,100%);background:#0c1b31;border-left:1px solid #38506d;box-shadow:var(--shadow);z-index:60;transform:translateX(104%);transition:.25s ease;overflow:auto}.drawer.open{transform:none}.drawer-top{position:sticky;top:0;background:#0c1b31;padding:17px 19px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;z-index:2}.drawer-top h2{font-size:18px;margin:3px 0}.drawer-close{background:none;border:0;color:white;font-size:25px;cursor:pointer}.detail-section{padding:16px 19px;border-bottom:1px solid #243954}.detail-section h3{margin:0 0 12px;font-size:12px;color:var(--amber);text-transform:uppercase;letter-spacing:.08em}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.detail-item label{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.detail-item div{font-size:12px}.timeline{display:grid;gap:13px}.timeline-item{border-left:2px solid #3d5978;padding-left:11px}.timeline-item strong{display:block;font-size:12px}.timeline-item span{font-size:10px;color:var(--muted)}.file{display:flex;justify-content:space-between;align-items:center;background:#112541;border:1px solid #2a4565;border-radius:8px;padding:10px;font-size:11px}.drawer-actions{display:flex;gap:8px;padding:17px 19px}.modal-wrap{position:fixed;inset:0;background:rgba(2,7,17,.72);z-index:70;display:none;place-items:center;padding:18px}.modal-wrap.open{display:grid}.modal{width:min(560px,100%);background:#0e2039;border:1px solid #3b526f;border-radius:14px;box-shadow:var(--shadow)}.modal-head,.modal-foot{padding:15px 18px;display:flex;align-items:center;justify-content:space-between}.modal-head{border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:18px}.modal-body{padding:18px;display:grid;grid-template-columns:1fr 1fr;gap:13px}.field label{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.field input,.field select,.field textarea{width:100%}.field.full{grid-column:1/-1}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px}.toast{position:fixed;right:22px;bottom:22px;background:#15382f;border:1px solid #377b67;color:#b9f6dd;border-radius:10px;padding:12px 16px;box-shadow:var(--shadow);z-index:100;transform:translateY(100px);opacity:0;transition:.25s}.toast.show{transform:none;opacity:1}.loading{min-height:360px;display:grid;place-items:center}.spinner{width:38px;height:38px;border:3px solid #253c5a;border-top-color:var(--amber);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.split-bottom{grid-template-columns:1fr}.sidebar{width:220px}.main{margin-left:220px}}@media(max-width:760px){.sidebar{transform:translateX(-102%);transition:.25s}.sidebar.open{transform:none}.close-nav{display:block}.main{margin-left:0}.mobile-bar{height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid var(--line);background:#08152b}.mobile-bar button{background:none;border:0;color:#fff;font-size:22px}.workspace{padding:14px 11px 28px}.context-row{align-items:flex-start;flex-direction:column}.context-controls{width:100%;overflow:auto}.context-controls label{min-width:145px}.context-controls select{min-width:145px}.kpis{grid-template-columns:1fr 1fr}.kpi{padding:12px}.kpi .value{font-size:22px}.toolbar{align-items:stretch;flex-direction:column}.toolbar-left,.toolbar-right{overflow:auto}.search{min-width:220px;flex:1}.nav-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.56);z-index:25}.nav-backdrop.open{display:block}.modal-body{grid-template-columns:1fr}.field.full{grid-column:auto}.detail-grid{grid-template-columns:1fr}.page-title h1{font-size:23px}}@media(max-width:430px){.kpis{grid-template-columns:1fr}.context-controls label:nth-child(2){display:none}.chart{height:190px}.donut-wrap{flex-direction:column;gap:18px}.status-row{grid-template-columns:95px 1fr 36px}}
