:root{font-family:Cambria,Georgia,serif;color:#19334f;background:#f2f6fb;--blue:#145b9f;--dark:#063c73;--line:#d4e1ef;--muted:#637b91;--white:#fff}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:9px;padding:10px 16px;font-weight:bold}button:disabled{opacity:.55;cursor:wait}.primary{background:var(--blue);color:#fff}.primary:hover:not(:disabled){background:#0a487f}.ghost{background:#e8f1fb;color:var(--dark)}.danger{background:#a52b3d;color:#fff}.outline{background:white;color:var(--blue);border:1px solid #aac5de}.wide{width:100%}.hidden{display:none!important}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 0%,#d5e9ff,transparent 40%),#f1f6fb}.auth-card{background:#fff;border:1px solid var(--line);box-shadow:0 18px 60px #163d6815;border-radius:20px;padding:34px;width:min(460px,100%);text-align:center}.logo{height:88px;width:88px;object-fit:contain}.overline{font-size:13px;letter-spacing:1px;color:var(--blue);font-weight:bold}.auth-card h1{font-size:25px;color:var(--dark);margin:12px 0}.auth-card p{margin:6px 0 24px}.auth-card form{text-align:left}.auth-card label{display:block;margin:15px 0;font-weight:bold}input,select,textarea{width:100%;border:1px solid #bfd0e2;border-radius:8px;padding:10px 12px;background:#fff;color:#20374f;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #a7cdf4}.password{display:flex;position:relative}.password input{padding-right:45px}.eye{position:absolute;right:3px;top:3px;background:transparent;color:var(--dark);padding:7px 10px}.subtle,.muted{color:var(--muted)}.small{font-size:13px}.topbar{background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 24px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px;color:var(--dark)}.brand small{display:block;font-size:12px;color:#53708b}.mini-logo{height:48px;width:48px;object-fit:contain}.top-actions{display:flex;align-items:center;gap:14px}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 74px)}.sidebar{background:#0d4b82;padding:18px 12px;display:flex;flex-direction:column;gap:8px}.sidebar button{background:transparent;color:#e9f3ff;text-align:left}.sidebar button.active,.sidebar button:hover{background:#ffffff24}.main{padding:26px;min-width:0;max-width:1500px;width:100%;margin:auto}.page-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:20px}.page-head h2{margin:0;color:var(--dark);font-size:26px}.page-head p{margin:5px 0;color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:18px;box-shadow:0 5px 18px #163d6809}.panel h3{margin:0 0 14px;color:var(--dark)}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:6px}.field label{font-weight:bold;color:#2a4d70}.stat{padding:18px;background:#edf5fd;border-radius:12px}.stat b{display:block;font-size:26px;color:var(--dark)}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:15px}th,td{border-bottom:1px solid #e0e9f2;padding:11px;text-align:left;vertical-align:middle}th{background:#eff5fc;color:var(--dark);white-space:nowrap}td.num,th.num{text-align:right}tr:hover td{background:#f8fbff}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.actions button{padding:8px 12px}.badge{display:inline-block;border-radius:20px;padding:4px 9px;background:#e7f2ff;color:#13558f;font-size:12px}.badge.warn{background:#fff0d5;color:#8b5300}.badge.ok{background:#e4f7e8;color:#136e33}.score-total{font-size:30px;color:var(--blue);font-weight:bold}.form-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:18px}.checkbox{width:auto;margin-right:8px}.busy{position:fixed;inset:0;background:#062a4e77;z-index:50;display:flex;align-items:center;justify-content:center;gap:12px;color:white;font-weight:bold}.spinner{height:26px;width:26px;border:4px solid #ffffff77;border-top-color:white;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#toast{position:fixed;right:18px;bottom:18px;z-index:60;max-width:min(440px,calc(100% - 36px))}#toast>div{background:#123d64;color:white;padding:14px 18px;border-radius:12px;box-shadow:0 10px 25px #0002;margin-top:8px}#toast .error{background:#a1273a}.help{padding:12px;background:#f3f8ff;border-left:3px solid var(--blue);color:#47647e;margin:12px 0}.empty{padding:25px;text-align:center;color:var(--muted)}.compact{width:100px}.section-actions{display:flex;gap:8px;flex-wrap:wrap}.report{font-size:14px}.status-line{color:#43637e;font-size:14px}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;overflow-x:auto;white-space:nowrap;padding:10px}.sidebar button{flex:none}.main{padding:16px}.grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.topbar{padding:10px}.brand strong{font-size:13px}.brand small{font-size:10px}.top-actions{gap:5px}.top-actions #whoami{display:none}.grid,.grid.two{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}.form-footer{align-items:stretch;flex-direction:column}.auth-card{padding:23px}.main{padding:10px}.panel{padding:14px}}

/* V2.4: form chỉnh sửa dễ nhận biết khi mở từ bảng dài */
#editor{scroll-margin-top:100px;border:2px solid #8ebbe7;box-shadow:0 10px 28px #163d681a}.editor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.editor-heading h3{margin:0}
