/* Shared styles for the administration screens (Phân quyền · Danh mục · Quy trình · Nhật ký). */
.adm-tabs{display:flex;gap:2px;background:#eef2f7;border-radius:6px;padding:2px;margin:0 0 16px;width:max-content;max-width:100%;overflow:auto}.adm-tabs button{border:0;background:transparent;font-size:13px;padding:7px 14px;border-radius:4px;color:#516982;white-space:nowrap}.adm-tabs button.active{background:#fff;color:var(--nx-blue);box-shadow:0 1px 2px #16325322;font-weight:600}
.adm-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.adm-toolbar input,.adm-toolbar select{padding:8px 10px;border:1px solid var(--nx-border);border-radius:5px;font:inherit;min-height:36px;margin:0}.adm-toolbar .spacer{flex:1}
.adm-card{background:#fff;border:1px solid var(--nx-border);border-radius:8px;padding:18px 20px;margin-bottom:16px}.adm-card h2{font-size:16px;margin:0 0 4px}.adm-card>p{color:var(--nx-muted);font-size:13px;margin:0 0 14px;line-height:1.5}
.adm-table{width:100%;border-collapse:collapse;font-size:13px}.adm-table th{text-align:left;background:#f3f6fa;color:#405774;padding:10px 8px;font-weight:600}.adm-table td{padding:9px 8px;border-bottom:1px solid #e5edf5;vertical-align:top}.adm-table tr:hover td{background:#f8fbff}.adm-table .muted{color:var(--nx-muted)}.adm-table code{background:#eef2f7;padding:1px 6px;border-radius:4px;font-size:12px}
.adm-table select{padding:5px 8px;border:1px solid var(--nx-border);border-radius:4px;font:inherit;margin:0;min-height:30px}
.adm-empty{padding:28px;text-align:center;color:var(--nx-muted);font-size:13px}
.adm-badge{display:inline-block;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600;background:#e7eff7;color:#516982}.adm-badge.ok{background:#e0f4ec;color:#187c60}.adm-badge.warn{background:#fff2d9;color:#a66708}.adm-badge.bad{background:#fde8ea;color:#ae2d3d}.adm-badge.off{background:#eef2f7;color:#5b6d86}
.adm-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.adm-inline input{flex:1;min-width:160px}
.adm-help{font-size:12px;color:var(--nx-muted);line-height:1.6}.adm-help code{background:#eef2f7;padding:1px 5px;border-radius:3px}
.adm-test{margin-top:10px;padding:10px 12px;border-radius:6px;background:#f4f7fb;font-size:13px}.adm-test.ok{background:#e0f4ec;color:#187c60}.adm-test.bad{background:#fde8ea;color:#ae2d3d}
.adm-matrix td:first-child{font-weight:600}.adm-matrix .lvl-none{color:#ae2d3d}.adm-matrix .lvl-read{color:#516982}.adm-matrix .lvl-write{color:#187c60}.adm-matrix .lvl-manage{color:#1e5cb3}
.adm-pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px;font-size:13px;color:var(--nx-muted)}
.adm-diff{font-size:12px;color:#405774;white-space:pre-wrap;overflow-wrap:anywhere;max-width:520px}
.adm-actions{display:flex;gap:6px}.adm-actions button{font-size:12px;padding:5px 9px}
@media(max-width:650px){.adm-card{padding:14px 12px}.adm-table{font-size:12px}.adm-diff{max-width:60vw}}

/* Rules used by the admin modules */
.adm-card label:not(.adm-check){display:grid;gap:6px;font-size:12px;color:#516982}
.adm-card input:not([type=checkbox]),.adm-table input{width:100%;min-height:36px;padding:8px 10px;border:1px solid var(--nx-border);border-radius:5px;margin:0;font-size:13px}
.adm-card input[type=number]{width:110px}
.adm-check{display:flex;align-items:center;gap:8px;font-size:13px;color:#263340;cursor:pointer;margin:8px 0}
.adm-check input{width:16px;height:16px;min-height:0;padding:0;margin:0;accent-color:var(--nx-blue)}
.adm-card details{margin-top:12px}.adm-card details summary{cursor:pointer}
.adm-toolbar select,.adm-toolbar input{width:auto;flex:0 1 auto;display:inline-block;font-size:13px}
.adm-toolbar input[name=q]{flex:1 1 200px;min-width:160px}
.adm-toolbar select[name=actor]{max-width:220px}
.adm-table pre.adm-diff{margin:6px 0 0;background:#f4f7fb;padding:8px;border-radius:4px;max-height:320px;overflow:auto}
.rule-bad{display:inline-block;margin-left:4px;color:#ae2d3d;font-weight:700;cursor:help}

/* notifications */
#cde-notices.has-unread{position:relative}#cde-notices.has-unread::after{content:'';position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:#d26863}
@media(max-width:650px){#cde .ntf-row{padding:10px 12px}.ntf-day{padding:8px 12px 4px}.ntf-card .adm-pager{padding:10px 12px}}

/* workspace */
.adm-count{font-size:12px;color:var(--nx-muted)}
.adm-row-off td{color:#607592}.adm-row-off td .adm-badge.warn{opacity:.6}
.adm-guard{font-size:12px;align-self:center}
.adm-quota-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:12px}.adm-quota-grid label small{font-size:11px}.adm-card .adm-quota-grid input[type=number]{width:100%}
.adm-bar{position:relative;height:8px;border-radius:4px;background:#eef2f7;overflow:hidden;min-width:120px;margin-bottom:4px}.adm-bar-fill{display:block;height:100%;background:var(--nx-blue);border-radius:4px;transition:width .3s}.adm-bar.warn .adm-bar-fill{background:#e0a125}.adm-bar.bad .adm-bar-fill{background:#ae2d3d}
.adm-w0{width:0%}.adm-w5{width:5%}.adm-w10{width:10%}.adm-w15{width:15%}.adm-w20{width:20%}.adm-w25{width:25%}.adm-w30{width:30%}.adm-w35{width:35%}.adm-w40{width:40%}.adm-w45{width:45%}.adm-w50{width:50%}.adm-w55{width:55%}.adm-w60{width:60%}.adm-w65{width:65%}.adm-w70{width:70%}.adm-w75{width:75%}.adm-w80{width:80%}.adm-w85{width:85%}.adm-w90{width:90%}.adm-w95{width:95%}.adm-w100{width:100%}
.adm-copied{font-size:12px}.adm-copied:empty{display:none}

/* Khu vực ISO 19650 (admin-workflow.js): bảng thông tin thuần */
.adm-zone-guide td:first-child{white-space:nowrap}.adm-zone-guide code{margin-right:2px}

/* Quy trình phê duyệt bản vẽ (admin-workflow.js → renderReviewTemplates): bảng mẫu + trình soạn bước */
.adm-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}.adm-card-head>div{flex:1;min-width:220px}.adm-card-head .cde-button{white-space:nowrap}
.adm-review-table td{vertical-align:middle}.adm-review-table td:first-child b{font-size:14px}.adm-default{margin-left:6px;vertical-align:middle}
.adm-steps-cell{color:#405774;line-height:1.6}.adm-menu-cell{width:44px;text-align:right}
.adm-menu{position:relative;display:inline-block}.adm-menu summary{list-style:none;cursor:pointer;font-size:18px;line-height:1;padding:4px 10px;border-radius:5px;color:#516982}.adm-menu summary::-webkit-details-marker{display:none}.adm-menu summary:hover{background:#eef2f7}
.adm-menu[open] summary{background:#e7eff7}.adm-menu>div{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:170px;background:#fff;border:1px solid var(--nx-border);border-radius:8px;box-shadow:0 8px 24px #10305226;padding:4px;display:grid}
.adm-menu>div button{border:0;background:none;text-align:left;padding:8px 12px;border-radius:5px;font-size:13px;color:#263340;cursor:pointer}.adm-menu>div button:hover:not(:disabled){background:#eef4ff}.adm-menu>div button:disabled{color:#627693;cursor:default}.adm-menu>div button.danger{color:#ae2d3d}
.adm-review-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:10px}.adm-review-fields.three{grid-template-columns:repeat(3,1fr)}
.adm-card .adm-review-fields select{width:100%;min-height:36px;padding:8px 10px;border:1px solid var(--nx-border);border-radius:5px;margin:0;font:inherit;font-size:13px;background:#fff}
.adm-steps{display:grid;gap:10px;margin:12px 0 4px}
.adm-step{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:start;border:1px solid var(--nx-border);border-radius:10px;padding:12px 14px;background:#fbfcfe}
.adm-step-num{width:32px;height:32px;border-radius:50%;background:#e2ecfb;color:var(--nx-blue);font-weight:700;display:grid;place-items:center;font-size:14px}
.adm-step-body{display:grid;gap:8px;min-width:0}
.adm-card .adm-step input.adm-step-name{font-weight:600;font-size:14px;max-width:440px}
.adm-step-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.adm-step-row select{min-height:34px;padding:6px 10px;border:1px solid var(--nx-border);border-radius:6px;font:inherit;font-size:13px;background:#fff;margin:0;max-width:260px}
.adm-days{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#516982}.adm-card .adm-days input[type=number]{width:70px;min-height:34px;padding:6px 8px}
.adm-card .adm-check.adm-delegate{margin:0;font-size:13px}
.adm-step-tools{display:flex;gap:4px}.adm-step-tools button{border:1px solid var(--nx-border);background:#fff;border-radius:5px;width:30px;height:30px;padding:0;font-size:13px;color:#516982;cursor:pointer}.adm-step-tools button:hover:not(:disabled){background:#eef4ff;color:var(--nx-blue)}.adm-step-tools button:disabled{opacity:.6;cursor:default}
.adm-users{position:relative;max-width:100%}.adm-users summary{cursor:pointer;list-style:none;border:1px solid var(--nx-border);border-radius:6px;padding:7px 10px;font-size:13px;background:#fff;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adm-users summary::-webkit-details-marker{display:none}
.adm-users>div{position:absolute;z-index:15;top:calc(100% + 4px);left:0;min-width:260px;max-height:260px;overflow:auto;background:#fff;border:1px solid var(--nx-border);border-radius:8px;box-shadow:0 8px 24px #10305226;padding:6px 10px}
.adm-users .adm-check{margin:4px 0}.adm-users .adm-check small{margin-left:auto;font-size:11px;color:#607592}
.adm-editor-actions{margin-top:14px;gap:8px}.adm-editor-actions button{font-size:13px;padding:8px 14px}
@media(max-width:760px){.adm-review-fields,.adm-review-fields.three{grid-template-columns:1fr}.adm-step{grid-template-columns:30px minmax(0,1fr);padding:10px}.adm-step-tools{grid-column:1/-1;justify-content:flex-end}.adm-step-row select{max-width:100%;flex:1 1 140px}.adm-review-table td{padding:8px 4px}.adm-steps-cell{font-size:12px}}
.adm-card label.adm-days{display:inline-flex;flex-direction:row;align-items:center;gap:6px;font-size:13px;color:#516982}
.adm-step-row select{width:auto;flex:0 1 auto}
.adm-step-opts{display:grid;gap:4px;margin-top:8px}.adm-step-opts .adm-check{font-size:12.5px}.adm-step-body>.adm-help{margin:6px 0 0}

/* Trung tâm thông báo */
.ntf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.ntf-head .spacer{flex:1}.ntf-head .cde-button{text-decoration:none}
.ntf-tabs{display:inline-flex;background:#e9eef4;border-radius:8px;padding:3px}#cde .ntf-tabs button{border:0;background:none;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:600;color:#596e8b;display:inline-flex;align-items:center;gap:6px}#cde .ntf-tabs button.active{background:#fff;color:#0b4f9a;box-shadow:0 1px 2px rgba(16,32,48,.12)}
.ntf-count:empty{display:none}.ntf-count{font-size:10.5px;padding:1px 7px;border-radius:9px;background:#e8590c;color:#fff;font-weight:700}
.ntf-cats{display:inline-flex;gap:4px;flex-wrap:wrap}#cde .ntf-cats button{border:1px solid #d6e0ec;background:#fff;border-radius:999px;padding:5px 12px;font-size:12px;color:#485867}#cde .ntf-cats button.on{background:#0b4f9a;border-color:#0b4f9a;color:#fff}
.ntf-card{background:#fff;border:1px solid #dfe5ec;border-radius:8px;overflow:hidden}.ntf-group{border-bottom:1px solid #e5edf5}.ntf-group:last-of-type{border-bottom:0}
.ntf-day{position:sticky;top:0;z-index:1;margin:0;padding:8px 20px;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#67768d;background:#f8fafc;border-bottom:1px solid #eef2f7;display:flex;gap:8px;align-items:center}.ntf-day small{font-weight:600;color:#697583;letter-spacing:0}
.ntf-list{list-style:none;margin:0;padding:0}.ntf-item{border-top:1px solid #eef2f7;position:relative}.ntf-item:first-child{border-top:0}
.ntf-row{display:flex;gap:14px;align-items:flex-start;padding:13px 20px 13px 18px;cursor:pointer;border-left:3px solid transparent;font-size:13px;color:#263340}.ntf-row:hover{background:#f6f9fd}.ntf-row:focus-visible{outline:2px solid var(--nx-blue);outline-offset:-2px}
.ntf-item.is-unread .ntf-row{background:#f4f8ff}.ntf-item.is-unread .ntf-row:hover{background:#ecf3fe}.ntf-item.is-unread .ntf-text strong{font-weight:700;color:#0f1c2b}
.ntf-item.cat-work .ntf-row{border-left-color:#0665ed}.ntf-item.cat-drawings .ntf-row{border-left-color:#1b8a4c}.ntf-item.cat-manage .ntf-row{border-left-color:#b7791f}.ntf-item.cat-system .ntf-row{border-left-color:#6a49a0}.ntf-item:not(.is-unread) .ntf-row{border-left-color:transparent}
.ntf-icon{flex-shrink:0;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#eef2f7;font-size:16px}.ntf-item.cat-drawings .ntf-icon{background:#e3f6ea}.ntf-item.cat-manage .ntf-icon{background:#fff3d6}.ntf-item.cat-system .ntf-icon{background:#f0ebf9}.ntf-item.is-urgent .ntf-icon{background:#fdecea}
.ntf-text{flex:1;min-width:0;display:grid;gap:3px}.ntf-text strong{font-weight:600;overflow-wrap:anywhere;line-height:1.35}.ntf-body-text{color:#485867;font-size:12.5px;overflow-wrap:anywhere;line-height:1.4}
.ntf-text small{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:11.5px;color:#607592;margin-top:2px}.ntf-kind{padding:1px 8px;border-radius:10px;background:#eef2f7;color:#596e8b;font-weight:600}.ntf-item.cat-drawings .ntf-kind{background:#e3f6ea;color:#1b7a44}.ntf-item.cat-manage .ntf-kind{background:#fff3d6;color:#8a5a00}.ntf-item.cat-system .ntf-kind{background:#f0ebf9;color:#6a49a0}.ntf-item.is-urgent .ntf-kind{background:#fdecea;color:#b0392b}
.ntf-proj::before{content:'▪ ';color:#607791}.ntf-proj.sys{color:#6a49a0}
.ntf-side{display:flex;align-items:center;gap:10px;flex-shrink:0;align-self:center}#cde .ntf-mark{border:1px solid #cfd9e6;background:#fff;border-radius:6px;padding:4px 10px;font-size:11.5px;color:#0b4f9a;opacity:0;transition:.15s}.ntf-row:hover .ntf-mark,.ntf-mark:focus-visible{opacity:1}.ntf-dot{width:9px;height:9px;border-radius:50%;background:var(--nx-blue);box-shadow:0 0 0 3px #0665ed22}.ntf-go{color:#607791;font-size:20px;font-style:normal;line-height:1}
.ntf-pager{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid #e5edf5;font-size:12px;color:#67768d}.ntf-pager .spacer{flex:1}
.ntf-empty{text-align:center;padding:56px 20px;color:#687784}.ntf-empty span{font-size:34px;display:block;margin-bottom:8px}.ntf-empty h3{margin:0 0 6px;font-size:15px;color:#485867}.ntf-empty p{margin:0 auto;max-width:420px;font-size:12.5px}
.ntf-mutes{border:1px solid var(--nx-border);border-radius:6px;padding:4px 12px 8px;margin:12px 0}.ntf-mutes legend{font-size:12px;color:#516982;padding:0 4px}.ntf-mutes .adm-check{margin:6px 0}
@media(max-width:760px){.ntf-row{padding:12px 14px 12px 12px;gap:10px}.ntf-icon{width:28px;height:28px;font-size:14px}#cde .ntf-mark{opacity:1;padding:3px 8px}.ntf-go{display:none}.ntf-head .cde-button{flex:1}}

/* Tình trạng máy chủ */
.adm-health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:14px 0 6px}
.adm-health{border:1px solid #dde3ea;border-radius:10px;padding:12px 14px;background:#fbfcfe;display:flex;flex-direction:column;gap:2px;border-left-width:4px;border-left-color:#1b8a4c}
.adm-health.warn{border-left-color:#b7791f;background:#fffaf0}.adm-health.bad{border-left-color:#c2371f;background:#fff5f3}
.adm-health b{font-size:22px;line-height:1.1}.adm-health span{font-size:13px;color:#16202b}.adm-health small{font-size:12px;color:#657380}
.adm-health-list{margin:6px 0 14px;padding-left:18px;font-size:13.5px}.adm-health-list.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
.adm-card h3{margin:16px 0 4px;font-size:14px;color:#0b4f9a}

/* Sử dụng */
.ch{width:100%;height:auto;display:block;font-family:inherit}.ch-grid{stroke:#e3e8ee;stroke-width:1}.ch-tick{font-size:11px;fill:#657380}.ch-tick2{fill:#0b6bd6}.ch-bar{fill:#0b6bd6;opacity:.85}.ch-line{fill:none;stroke:#e8590c;stroke-width:2}.ch-dot{fill:#e8590c}.ch-label{font-size:12px;fill:#16202b}.ch-value{font-size:11px;fill:#657380}.ch-cell{fill:#0b6bd6}.ch-heat{height:auto}.ch-spark .ch-bar{opacity:.9}
.ch-h{height:auto}.usage-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width:900px){.usage-two{grid-template-columns:1fr}}
.usage-toolbar label{display:inline-flex;align-items:center;gap:6px;font-size:13px}.usage-toolbar input[type=date]{padding:5px 8px;border:1px solid #d6dee8;border-radius:6px;font:inherit}
.usage-note{margin:8px 0 12px;font-size:12.5px}.usage-kpi .adm-health small.up{color:#1b8a4c}.usage-kpi .adm-health small.down{color:#c2371f}.adm-health small.up{color:#1b8a4c}.adm-health small.down{color:#c2371f}
.usage-table th{cursor:pointer;white-space:nowrap;user-select:none}.usage-table th.desc::after{content:' ▼';font-size:9px}.usage-table th.asc::after{content:' ▲';font-size:9px}.usage-table td{vertical-align:top;font-size:13px}.usage-table tr.idle td{background:#fffaf0}.usage-table tr.never td{color:#657380}
.usage-flag{display:inline-block;padding:1px 7px;border-radius:999px;background:#eef2f6;font-size:11px;white-space:nowrap}.usage-flag.warn{background:#fff3d6;color:#8a5a00}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
.usage-funnel{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap;margin:10px 0}.usage-step{flex:1;min-width:150px;border:1px solid #dde3ea;border-radius:10px;padding:10px 12px;background:#fbfcfe;display:flex;flex-direction:column;gap:2px}.usage-step b{font-size:22px}.usage-step span{font-size:13px}.usage-step small{color:#657380;font-size:11.5px}.usage-arrow{align-self:center;color:#657788;font-size:22px}
.usage-stuck{font-size:13px;margin:6px 0}
dialog.usage-detail{border:0;height:auto;border-radius:12px;padding:20px 24px;width:min(900px,calc(100vw - 24px));max-width:none;box-sizing:border-box;max-height:90vh;overflow:auto;box-shadow:0 20px 50px rgba(0,0,0,.3);font-size:13px;color:#16202b}.usage-detail::backdrop{background:rgba(10,20,40,.45)}.usage-detail h2{margin:0;font-size:18px}.usage-detail h3{margin:16px 0 6px;font-size:14px;color:#0b4f9a}.usage-detail .usage-two{grid-template-columns:1fr}.usage-detail .ch-h{max-width:720px}
.usage-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
@media (max-width:760px){.usage-table{font-size:12px}.usage-toolbar{flex-wrap:wrap}}
.adm-table tr.warn td{background:#fffaf0}.adm-health .cde-text-button{margin-top:6px;align-self:flex-start;font-size:12px}

/* ---- Quản trị → Tổng quan (admin-overview.js) ---- */
.ov-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}.ov-head h2{margin:0;font-size:16px}.ov-head .spacer{flex:1}.ov-head .cde-button{padding:4px 10px}
.ov-seg{display:inline-flex;border:1px solid var(--nx-border);border-radius:7px;overflow:hidden;background:#fff}.ov-seg button{border:0;background:transparent;padding:5px 11px;font-size:12px;color:var(--nx-muted);cursor:pointer}.ov-seg button.active{background:#e8f0fd;color:#0b6bd6;font-weight:600}
.ov-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 0 14px}@media (max-width:1100px){.ov-stats{grid-template-columns:repeat(3,1fr)}}@media (max-width:640px){.ov-stats{grid-template-columns:repeat(2,1fr)}}
.ov-stat{text-align:left;border:1px solid var(--nx-border);border-left:4px solid #0b6bd6;border-radius:8px;padding:10px 12px;background:#fff;display:flex;flex-direction:column;gap:2px;cursor:pointer;font:inherit;color:inherit;min-width:0}.ov-stat:hover{box-shadow:0 2px 8px rgba(16,32,64,.08)}
.ov-stat b{font-size:22px;line-height:1.15}.ov-stat b i{font-style:normal;font-size:12px;font-weight:600;color:var(--nx-muted)}.ov-stat b i.up{color:#1b8a4c}.ov-stat b i.down{color:#c2371f}.ov-stat span{font-size:13px}.ov-stat small{font-size:11.5px;color:var(--nx-muted)}
.ov-stat.good{border-left-color:#1b8a4c}.ov-stat.warn{border-left-color:#b7791f}.ov-stat.bad{border-left-color:#c2371f}
.ov-grid{display:grid;gap:14px;margin:0 0 14px;align-items:start}.ov-grid-2{grid-template-columns:1.4fr 1fr}.ov-grid-2b{grid-template-columns:1fr 1fr}.ov-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:1100px){.ov-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:820px){.ov-grid-2,.ov-grid-2b,.ov-grid-3{grid-template-columns:1fr}}
.ov-card{margin:0;min-width:0}.ov-card h3{margin:0 0 2px;font-size:14px}.ov-card>p.muted{margin:0 0 10px;font-size:12px}.ov-card .ch{max-height:190px}
.ov-legend{display:flex;gap:8px 14px;flex-wrap:wrap;font-size:11.5px;color:var(--nx-muted);margin-top:8px;align-items:center}.ov-legend .push{margin-left:auto}.ov-legend .up{color:#1b8a4c}.ov-legend .down{color:#c2371f}.ov-legend button{border:0;background:transparent;font:inherit;color:inherit;padding:2px 4px;border-radius:4px;cursor:pointer}.ov-legend button.active{background:#e8f0fd;color:#0b6bd6}
.ov-sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px;background:currentColor}
.ov-bar,i.ov-bar{fill:#0b6bd6;color:#0b6bd6;opacity:.85}.ov-bar-weekend,i.ov-bar-weekend{fill:#c5d5ee;color:#c5d5ee}.ov-bar-today,i.ov-bar-today{fill:#0b6bd6;color:#0b6bd6}.ov-bar-warn,i.ov-bar-warn{fill:#c77d0a;color:#a56808}.ov-bar-bad,i.ov-bar-bad{fill:#c9352b;color:#c9352b}
.ov-area{fill:#0b6bd6;fill-opacity:.12}.ov-line{fill:none;stroke:#0b6bd6;stroke-width:2;stroke-linejoin:round}.ov-line-good{stroke:#1b8a4c}.ov-dot{fill:#0b6bd6;stroke:#fff;stroke-width:2}.ov-gap{fill:#c9352b;fill-opacity:.10}.ov-val{font-size:11px;font-weight:600;fill:#16202b}
i.ov-sw-good{background:#1b8a4c}i.ov-sw-gap{background:#f4d7d5}i.ov-heat1{background:#0b6bd6;opacity:.2}i.ov-heat2{background:#0b6bd6;opacity:.55}
.ov-z-wip,i.ov-z-wip{fill:#9db9ec;background:#9db9ec}.ov-z-shared,i.ov-z-shared{fill:#0b6bd6;background:#0b6bd6}.ov-z-published,i.ov-z-published{fill:#1b8a4c;background:#1b8a4c}.ov-z-archive,i.ov-z-archive{fill:#b8c2d0;background:#b8c2d0}svg rect.ov-dim{opacity:.25}#ov-zones svg rect{cursor:pointer}
.ov-alerts{margin:0;padding:0;list-style:none}.ov-alerts li{display:flex;gap:8px;padding:7px 0;border-bottom:1px solid #eef1f5;font-size:13px;align-items:flex-start}.ov-alerts li:last-child{border-bottom:0}.ov-alerts a{margin-left:auto;font-size:12px;white-space:nowrap;color:#0b6bd6}
[class^=ov-dot-]{width:8px;height:8px;border-radius:50%;flex:none;margin-top:6px;background:#8a95a6}.ov-dot-bad{background:#c9352b}.ov-dot-warn{background:#c77d0a}.ov-dot-good{background:#1b8a4c}
.ov-table th.r,.ov-table td.r,.ov-users th.r,.ov-users td.r{text-align:right}.ov-table th{cursor:pointer;white-space:nowrap}.ov-table th.sorted{color:#0b6bd6}.ov-table td{white-space:nowrap;vertical-align:middle}.ov-table td.ov-name{white-space:normal;font-weight:600}.ov-table tr[data-id]{cursor:pointer}.ov-table tr[data-id]:hover td{background:#f6f9fd}
.ov-act .ch-spark{display:inline-block;width:56px;height:16px;vertical-align:middle;margin-right:4px}
.ov-meter{display:inline-block;width:70px;height:6px;border-radius:3px;background:#eef1f5;overflow:hidden;vertical-align:middle;margin-right:6px}.ov-meter i{display:block;height:100%;background:#0b6bd6}.ov-meter i.warn{background:#c77d0a}.ov-meter i.bad{background:#c9352b}
.ov-w0{width:0%}.ov-w5{width:5%}.ov-w10{width:10%}.ov-w15{width:15%}.ov-w20{width:20%}.ov-w25{width:25%}.ov-w30{width:30%}.ov-w35{width:35%}.ov-w40{width:40%}.ov-w45{width:45%}.ov-w50{width:50%}.ov-w55{width:55%}.ov-w60{width:60%}.ov-w65{width:65%}.ov-w70{width:70%}.ov-w75{width:75%}.ov-w80{width:80%}.ov-w85{width:85%}.ov-w90{width:90%}.ov-w95{width:95%}.ov-w100{width:100%}
.ov-more{width:28px}.ov-more .cde-icon-btn{opacity:.35}.ov-table tr:hover .cde-icon-btn{opacity:1}
.ov-feed{margin:0;padding:0;list-style:none}.ov-feed li{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid #eef1f5;font-size:13px;align-items:flex-start}.ov-feed li:last-child{border-bottom:0}.ov-feed .ov-t{color:#69768a;font-size:11px;width:44px;flex:none;line-height:1.2;padding-top:2px}.ov-feed em{font-style:normal;color:var(--nx-muted)}
.ov-users td:first-child .cde-av{margin-right:4px}.ov-foot{margin:10px 0 0;font-size:12px}
/* Giao diện tối dùng bộ lọc đảo màu toàn trang (account-bar.css) — không đặt thêm nền tối riêng (sẽ bị đảo thành nền sáng, chữ không đọc được). */
.ov-table .cde-chip.bad{background:#fdeceb;color:#c9352b}.ov-table .cde-chip.warn{background:#fff4e0;color:#a16b1b}.ov-more .cde-icon-btn{border:0;background:transparent;font-size:16px;cursor:pointer;padding:2px 6px;border-radius:4px;color:inherit}.ov-more .cde-icon-btn:hover{background:#eef2f7}
.ov-feed .cde-av,.ov-users .cde-av{width:24px;height:24px;font-size:9.5px}
/* ---- Tổng quan: cập nhật thời gian thực & hiệu ứng thay đổi ---- */
.ov-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#1b8a4c;margin-right:6px;vertical-align:1px;box-shadow:0 0 0 0 rgba(27,138,76,.5)}.ov-pulse.beat{animation:ov-beat .7s ease-out}
@keyframes ov-beat{0%{box-shadow:0 0 0 0 rgba(27,138,76,.55)}100%{box-shadow:0 0 0 10px rgba(27,138,76,0)}}
.ov-offline{display:none;color:#c2371f}.ov-head.offline .ov-offline{display:inline}.ov-head.offline .ov-pulse{background:#9aa5b5;box-shadow:none;animation:none}
.ov-stat{position:relative;transition:box-shadow .3s,border-color .3s}.ov-stat.ov-flash{animation:ov-flash 3s ease-out}.ov-stat.ov-flash-bad{animation:ov-flash-bad 3s ease-out}
@keyframes ov-flash{0%{box-shadow:0 0 0 3px rgba(11,107,214,.55),0 4px 18px rgba(11,107,214,.25);background:#eef4ff}100%{box-shadow:0 0 0 0 rgba(11,107,214,0);background:#fff}}
@keyframes ov-flash-bad{0%,30%{box-shadow:0 0 0 3px rgba(201,53,43,.55);background:#fff1f0}15%{box-shadow:0 0 0 1px rgba(201,53,43,.2)}100%{box-shadow:0 0 0 0 rgba(201,53,43,0);background:#fff}}
.ov-delta{position:absolute;top:8px;right:10px;font-size:11px;font-weight:700;font-style:normal;padding:1px 6px;border-radius:10px;background:#e6f5ec;color:#1b8a4c;animation:ov-pop .4s ease-out}.ov-delta.down{background:#eef2f5;color:#5a6b80}.ov-delta.bad{background:#fdeceb;color:#c9352b}
@keyframes ov-pop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
.ov-card.ov-updated{animation:ov-glow 3s ease-out}@keyframes ov-glow{0%{box-shadow:0 0 0 2px rgba(11,107,214,.45)}100%{box-shadow:0 0 0 0 rgba(11,107,214,0)}}
.ov-card svg rect,.ov-card svg circle{transition:x .6s ease,y .6s ease,width .6s ease,height .6s ease,cx .6s ease,cy .6s ease,r .3s ease,fill-opacity .6s ease}
.ov-alerts li.ov-new,.ov-feed li.ov-new{animation:ov-slide .5s ease-out}.ov-alerts li.ov-new [class^=ov-dot-]{animation:ov-beat 1s ease-out 2}
@keyframes ov-slide{0%{transform:translateY(-12px);opacity:0;background:#eef4ff}100%{transform:none;opacity:1;background:transparent}}
.ov-feed li.ov-new .cde-av{animation:ov-pop .5s ease-out}
.ov-table tr.ov-row-changed{background:linear-gradient(90deg,rgba(11,107,214,.18),rgba(11,107,214,0) 60%) no-repeat;background-size:200% 100%;animation:ov-sweep 1.6s ease-out}@keyframes ov-sweep{0%{background-position:100% 0}100%{background-position:-100% 0}}
.ov-table td.ov-cell-changed{box-shadow:inset 0 -2px 0 #c9352b;transition:box-shadow 2s ease 4s}
.ov-toasts{position:fixed;top:72px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:900;pointer-events:none;max-width:340px}
.ov-toast{display:flex;gap:10px;align-items:flex-start;background:#16202b;color:#fff;border-radius:10px;padding:10px 12px;font-size:13px;box-shadow:0 10px 30px rgba(10,20,40,.35);animation:ov-toast-in .4s ease-out;transition:opacity .4s,transform .4s}.ov-toast em{font-style:normal;color:#b8c4d4;font-size:11.5px}.ov-toast.more{justify-content:center;color:#b8c4d4}.ov-toast.out{opacity:0;transform:translateX(20px)}.ov-toast .cde-av{width:26px;height:26px;font-size:10px}
@keyframes ov-toast-in{0%{transform:translateX(30px);opacity:0}100%{transform:none;opacity:1}}
.ov-still *,.ov-still *::before,.ov-still *::after{animation:none!important;transition:none!important}
@media (prefers-reduced-motion:reduce){.adm-body *{animation:none!important;transition:none!important}}
/* ---- Trình chiếu & liên kết màn hình ---- */
.ov-present summary{list-style:none;cursor:pointer;padding:4px 10px}.ov-present summary::-webkit-details-summary{display:none}.ov-present>div{right:0;left:auto;min-width:220px}
.ov-dialog{border:0;border-radius:12px;padding:0;width:min(760px,calc(100vw - 24px));max-width:none;box-shadow:0 20px 60px rgba(10,20,40,.3)}.ov-dialog::backdrop{background:rgba(10,20,40,.45)}
.ov-dialog-body{padding:18px 22px 20px;display:grid;gap:12px}.ov-dialog-head{display:flex;align-items:center;justify-content:space-between}.ov-dialog-head h3{margin:0;font-size:16px}.ov-dialog-body>p.muted{margin:0;font-size:13px}
.ov-fresh{border:1px solid #bfe3cb;background:#effaf2;border-radius:8px;padding:10px 12px;font-size:13px;display:grid;gap:6px}.ov-fresh-url{display:flex;gap:8px}.ov-fresh-url input{flex:1;font-family:ui-monospace,Menlo,monospace;font-size:12px}
.ov-new-display{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.ov-new-display label{display:grid;gap:4px;font-size:12px;color:var(--nx-muted)}.ov-new-display input{width:240px}.ov-new-display select{min-height:34px}
.ov-displays-table td{white-space:nowrap}.ov-displays-table td:first-child{white-space:normal;font-weight:600}
/* Quy trình ISO 3 bước (003) */
.adm-iso-steps{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:10px 0 12px;padding:0}
.adm-iso-steps li{position:relative;display:flex;flex-direction:column;gap:2px;min-width:150px;flex:1 1 150px;padding:10px 12px;border:1px solid var(--nx-border,#d5dde8);border-radius:10px;background:#f7f9fc}
.adm-iso-steps li:nth-child(1){border-top:3px solid #64748b}.adm-iso-steps li:nth-child(2){border-top:3px solid #2563eb}.adm-iso-steps li:nth-child(3){border-top:3px solid #16a34a}
.adm-iso-steps li.adm-iso-ar{border-top:3px dashed #94a3b8;background:#fff}
.adm-iso-steps b{font-size:13px}.adm-iso-steps small{font-size:12px;color:#64748b}
.adm-card[hidden]{display:none}
.adm-modules .adm-mod-col{text-align:center;width:150px}.adm-switch{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:12.5px}.adm-switch input{width:16px;height:16px}.adm-toolbar{margin:0 0 10px}.adm-toolbar input{max-width:320px;width:100%}
.adm-modules td{vertical-align:middle}.adm-modules label.adm-switch{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:6px;margin:0}.adm-modules label.adm-switch span{display:inline;font-weight:600;color:#64748b}.adm-modules label.adm-switch input:checked+span{color:#15803d}
.am-table .am-col{text-align:center;width:170px}.am-table td.am-cell{text-align:center}.am-table select{min-width:150px}
.am-lv{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600}.am-lv.am-edit{background:#dcfce7;color:#166534}.am-lv.am-view{background:#e0edff;color:#1d4ed8}.am-lv.am-none{background:#f1f5f9;color:#64748b}
td.am-none select{color:#64748b}td.am-view select{color:#1d4ed8}td.am-edit select{color:#166534}
/* Quản trị dự án: dải thẻ (public/cde.js › frame) */
.pa-tabs{display:flex;gap:2px;border-bottom:1px solid #dce5ef;margin:-4px 0 16px;overflow-x:auto;scrollbar-width:thin}
.pa-tabs button,.pa-tabs a{flex:none;border:0;background:none;padding:10px 14px;font:inherit;font-size:13.5px;color:#475569;border-bottom:3px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap}
.pa-tabs button:hover,.pa-tabs a:hover{color:#1e3c60;background:#f3f7fc}
.pa-tabs .on{color:#0665ed;border-bottom-color:#0665ed;font-weight:600}
.adm-kind{min-height:32px;padding:4px 8px;border:1px solid #c9d2df;border-radius:6px;font:inherit;font-size:13px;background:#fff;color:#1b2a41}.adm-muted{color:#5b6b80}
/* Quản trị không gian: khung riêng — thanh bên tối chỉ gồm mục quản trị (cde.js › frame khi current==='workspace'; admin-workspace.js vẽ mục) */
#cde.wsa-mode{background:#f4f6f9}
.wsa-side{position:absolute;top:56px;bottom:0;left:0;width:256px;background:#0b2340;color:#dbe5f1;padding:20px 14px 16px;display:flex;flex-direction:column;gap:18px;overflow-y:auto;border-top:1px solid #ffffff14;scrollbar-width:thin;scrollbar-color:#ffffff30 transparent}
.wsa-head{display:flex;flex-direction:column;gap:10px}
.wsa-kicker{padding:0 10px;font-size:11px;font-weight:700;letter-spacing:1.3px;text-transform:uppercase;color:#c9a86a}
.wsa-card{margin:0 2px;padding:11px 12px;border-radius:10px;background:#ffffff0f;border:1px solid #ffffff14;display:flex;flex-direction:column;gap:2px}.wsa-card b{font-size:14px;color:#fff}.wsa-card span{font-size:12px;color:#93a7c0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wsa-nav{display:flex;flex-direction:column;gap:14px}
.wsa-group{display:flex;flex-direction:column;gap:2px}
.wsa-group-title{padding:0 12px 5px;font-size:10.5px;font-weight:700;letter-spacing:1.1px;text-transform:uppercase;color:#6f86a3}
#cde .wsa-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;color:#b9c8da;font-size:13.5px;text-decoration:none;transition:background .12s,color .12s}
#cde .wsa-item span{flex:1;min-width:0}
#cde .wsa-item:hover{background:#ffffff0d;color:#fff}
#cde .wsa-item.on{background:#ffffff1a;color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #c9a86a}
.wsa-count{font-size:11.5px;font-weight:600;color:#8ea3bd;font-variant-numeric:tabular-nums}.wsa-item.on .wsa-count{color:#fff}
.wsa-count.hot{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#c9a86a;color:#0b2340!important;display:inline-grid;place-items:center;font-weight:700}
.wsa-foot{margin-top:auto;padding-top:14px;border-top:1px solid #ffffff14}
#cde .wsa-back{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 12px;border-radius:8px;border:1px solid #ffffff24;background:none;color:#dbe5f1;font-size:13px;font-weight:600}
#cde .wsa-back:hover{background:#ffffff0d;color:#fff}
#cde.wsa-mode .cde-main{left:256px;padding:26px 36px 40px}
#cde.wsa-mode .cde-breadcrumb{margin-bottom:10px}.wsa-crumb{font-weight:600;color:#33455c}
#cde.wsa-mode .cde-page-heading{align-items:flex-end;margin-bottom:22px}
#cde.wsa-mode .cde-page-heading h1{font-size:26px;letter-spacing:-.5px;color:#16263b}
#cde.wsa-mode .cde-page-heading p{font-size:13.5px;color:#5d6b7e}
#cde.wsa-mode .cde-heading-actions .cde-button{height:38px;border-radius:10px;padding:0 16px;font-size:13px;font-weight:600;text-decoration:none}
#cde.wsa-mode .cde-content{background:none;border:0;border-radius:0;overflow:visible}
#cde.wsa-mode .adm-body{display:flex;flex-direction:column;gap:18px}
/* Khối dùng chung */
.wsa-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.wsa-stat{background:#fff;border:1px solid #e4e9f0;border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}
.wsa-stat span{font-size:13px;color:#5d6b7e}.wsa-stat b{font-size:26px;letter-spacing:-.5px;color:#16263b;font-variant-numeric:tabular-nums;line-height:1.2}.wsa-stat small{font-size:12px;color:#7a8799}
.wsa-stat.warn{box-shadow:inset 3px 0 0 #e0a100}.wsa-stat.bad{box-shadow:inset 3px 0 0 #d92d20}
.wsa-panel{background:#fff;border:1px solid #e4e9f0;border-radius:12px}.wsa-panel>:first-child{border-radius:12px 12px 0 0}.wsa-panel>:last-child{border-radius:0 0 12px 12px}
.wsa-panel-head{padding:16px 18px 12px;border-bottom:1px solid #e4e9f0}.wsa-panel-head h2,.wsa-panel-bar h2{margin:0;font-size:15px;color:#16263b}.wsa-panel-head p{margin:4px 0 0;font-size:12.5px;color:#7a8799}
.wsa-panel-bar h2 small{margin-left:6px;font-size:12px;font-weight:600;color:#7a8799}
.wsa-panel-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #e4e9f0;flex-wrap:wrap}.wsa-panel-bar .spacer{flex:1}
.wsa-panel-foot{margin:0;padding:12px 16px;font-size:12px;color:#7a8799;border-top:1px solid #eef1f5}
.wsa-chips{display:flex;gap:6px;flex-wrap:wrap}
#cde .wsa-chip{border:1px solid #d5dde8;background:#fff;border-radius:999px;padding:5px 12px;font-size:12.5px;color:#33455c}
#cde .wsa-chip small{margin-left:3px;color:#7a8799;font-weight:600}
#cde .wsa-chip.on{background:#16263b;border-color:#16263b;color:#fff;font-weight:600}#cde .wsa-chip.on small{color:#c8d3e0}
.wsa-search{display:flex;align-items:center;gap:8px;border:1px solid #d5dde8;border-radius:10px;padding:0 12px;height:36px;width:280px;max-width:100%;color:#7a8799;background:#fff}
#cde .wsa-search input{border:0;outline:0;box-shadow:none;background:none;padding:0;height:auto;min-height:0;font-size:13px;width:100%}
.wsa-search:focus-within{border-color:#0665ed;box-shadow:0 0 0 3px #0665ed22}
#cde .wsa-table{border:0;margin:0;border-radius:0;font-size:13.5px}
#cde .wsa-table th{background:#f8fafc;font-size:12px;font-weight:600;color:#7a8799;padding:10px 16px;text-align:left;border-bottom:1px solid #e4e9f0;white-space:nowrap}
#cde .wsa-table td{padding:12px 16px;border-bottom:1px solid #eef1f5;vertical-align:middle;color:#16263b}
#cde .wsa-table tbody tr:last-child td{border-bottom:0}
#cde .wsa-table tbody tr:hover td{background:#f8fbff}
#cde .wsa-table .num{text-align:right;font-variant-numeric:tabular-nums}#cde .wsa-table .act{text-align:right}
#cde .wsa-table .act .adm-actions{justify-content:flex-end;flex-wrap:nowrap}
.wsa-person{display:flex;align-items:center;gap:12px;min-width:0}.wsa-person>span:last-child{display:flex;flex-direction:column;gap:1px;min-width:0}.wsa-person b{font-weight:600}.wsa-person small{font-size:12px;color:#7a8799}
.wsa-avatar{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e3edfd;color:#0653c4;font-size:12.5px;font-weight:700}.wsa-avatar.admin{background:#0b2340;color:#fff}
.wsa-role{display:inline-block;padding:3px 10px;border-radius:999px;background:#eef1f5;color:#33455c;font-size:12px;font-weight:600;white-space:nowrap}.wsa-role.admin{background:#0b2340;color:#fff}
.wsa-dot{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;white-space:nowrap}.wsa-dot::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.wsa-dot.ok{color:#1f7a4d}.wsa-dot.warn{color:#9a6a00}.wsa-dot.bad{color:#b42318}
.wsa-more{position:relative;display:inline-block}.wsa-more>summary{list-style:none;min-width:34px}.wsa-more>summary::-webkit-details-marker{display:none}
.wsa-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:230px;background:#fff;border:1px solid #d5dde8;border-radius:10px;box-shadow:0 12px 32px #0b234026;padding:6px;display:flex;flex-direction:column;text-align:left}
#cde .wsa-menu button{border:0;background:none;text-align:left;padding:9px 10px;border-radius:6px;font-size:13px;color:#16263b}#cde .wsa-menu button:hover{background:#f1f5fa}#cde .wsa-menu button.danger{color:#b42318}
.wsa-bar{display:block;height:6px;border-radius:3px;background:#eef1f5;overflow:hidden;min-width:60px}.wsa-bar i{display:block;height:100%;width:0;border-radius:3px;background:#0665ed}.wsa-bar.gold i{background:#b08d57}
.wsa-funnel{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#fff;border:1px solid #e4e9f0;border-radius:12px;overflow:hidden}
.wsa-step{padding:16px 18px;display:flex;flex-direction:column;gap:4px;border-left:1px solid #eef1f5}.wsa-step:first-child{border-left:0}
.wsa-step-no{font-size:11px;font-weight:700;color:#0665ed;letter-spacing:.6px}.wsa-step-label{font-size:13px;color:#5d6b7e}.wsa-step b{font-size:26px;letter-spacing:-.5px;line-height:1.2;color:#16263b;font-variant-numeric:tabular-nums}.wsa-step small{font-size:12px;color:#7a8799;margin-bottom:6px}
.wsa-step:nth-child(1) .wsa-bar i{background:#9dbff5}.wsa-step:nth-child(2) .wsa-bar i{background:#6fa0f2}.wsa-step:nth-child(4) .wsa-bar i{background:#0653c4}.wsa-step:nth-child(5) .wsa-bar i{background:#b08d57}
.wsa-mod{display:flex;align-items:center;gap:10px}.wsa-code{flex:none;display:inline-grid;place-items:center;min-width:34px;height:24px;padding:0 6px;border-radius:6px;background:#eaf2ff;color:#0653c4;font-size:12px;font-weight:700}
#cde .wsa-table th.wsa-rate,#cde .wsa-table td.wsa-rate{width:180px}.wsa-rate-cell{display:flex;align-items:center;gap:10px}.wsa-rate-cell .wsa-bar{flex:1}.wsa-rate-cell small{width:38px;text-align:right;color:#33455c;font-variant-numeric:tabular-nums}
.wsa-prog{display:flex;flex-direction:column;gap:5px;min-width:150px}.wsa-prog .wsa-bar{max-width:180px}
#cde .wsa-cert{font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#8a6a2f}
html[data-theme=dark] .wsa-side{filter:invert(1) hue-rotate(180deg) saturate(1.14)}
@media(max-width:1100px){.wsa-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.wsa-funnel{grid-template-columns:repeat(3,minmax(0,1fr))}.wsa-step:nth-child(4){border-left:0}.wsa-step:nth-child(n+4){border-top:1px solid #eef1f5}}
@media(max-width:900px){.wsa-side{top:56px;bottom:auto;height:auto;width:auto;right:0;flex-direction:row;align-items:center;gap:8px;padding:8px 10px;overflow-x:auto;overflow-y:hidden;z-index:3}.wsa-head,.wsa-group-title,.wsa-foot{display:none}.wsa-nav,.wsa-group{flex-direction:row;gap:4px}#cde .wsa-item{white-space:nowrap;padding:7px 11px}#cde.wsa-mode .cde-main{left:0;top:106px;padding:18px 16px 30px}#cde .wsa-table{display:block;overflow-x:auto}.wsa-search{width:100%}}
@media(max-width:650px){#cde.wsa-mode .cde-main{bottom:0}.wsa-stats{grid-template-columns:1fr 1fr;gap:10px}.wsa-funnel{grid-template-columns:1fr 1fr}.wsa-step{border-left:0;border-top:1px solid #eef1f5}.wsa-step:first-child,.wsa-step:nth-child(2){border-top:0}}
#cde.wsa-mode .ov-head h2{display:none}
/* Học viên: thẻ con, hồ sơ học viên (admin-learners.js) */
.wsa-subtabs{display:flex;gap:4px;border-bottom:1px solid #dce3ec;margin-bottom:2px;overflow-x:auto;scrollbar-width:thin}
#cde .wsa-subtabs button{flex:none;border:0;background:none;padding:10px 14px;font-size:14px;color:#5d6b7e;border-bottom:3px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
#cde .wsa-subtabs button:hover{color:#16263b}
#cde .wsa-subtabs button.on{color:#0653c4;border-bottom-color:#0665ed;font-weight:600}
.wsa-subtabs small:empty{display:none}.wsa-subtabs small{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#eef1f5;color:#5d6b7e;font-size:11.5px;font-weight:600;display:inline-grid;place-items:center}
#cde .wsa-subtabs button.on small{background:#eaf2ff;color:#0653c4}
.wsa-sub{display:flex;flex-direction:column;gap:18px}
.wsa-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.wsa-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.wsa-head-row h2{display:flex;align-items:center;gap:8px}
.wsa-mini{list-style:none;margin:0;padding:4px 0}
#cde .wsa-mini button{width:100%;display:flex;align-items:center;gap:12px;padding:10px 18px;border:0;background:none;text-align:left;color:#16263b}
#cde .wsa-mini button:hover{background:#f8fbff}
.wsa-mini button>span:nth-child(2){flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}.wsa-mini small{font-size:12px;color:#7a8799}
#cde .wsa-click tbody tr{cursor:pointer}
#cde .wsa-click tbody tr:focus-visible td{background:#eaf2ff}
.wsa-strong{font-weight:600}
.wsa-cert-n{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:#f6efe2;color:#8a6a2f;font-weight:700;font-size:12.5px}
#cde .wsa-linkish{border:0;background:none;padding:0;color:#0653c4;text-align:left}#cde .wsa-linkish:hover{text-decoration:underline}
.wsa-dot.gold{color:#8a6a2f}.wsa-dot.blue{color:#0653c4}.wsa-dot.off{color:#7a8799}
.wsa-bar.soft i{background:#9dbff5}.wsa-bar.ok i{background:#22a06b}
.wsa-stats-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wsa-profile{display:flex;flex-direction:column;gap:14px;padding-bottom:20px}
.wsa-profile-head{display:flex;align-items:center;gap:14px}.wsa-profile-head div{display:flex;flex-direction:column;gap:2px;min-width:0}.wsa-profile-head b{font-size:17px;color:#16263b}.wsa-profile-head span{color:#5d6b7e;font-size:13px;overflow-wrap:anywhere}
.wsa-avatar.lg{width:48px;height:48px;font-size:18px}
.wsa-tags{display:flex;flex-wrap:wrap;gap:6px 14px}
.wsa-mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.wsa-mini-stats div{background:#f4f6f9;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column}.wsa-mini-stats b{font-size:20px;color:#16263b}.wsa-mini-stats span{font-size:12px;color:#5d6b7e}
.wsa-profile h3{margin:6px 0 0;font-size:11.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#7a8799}
.wsa-dl{margin:0;display:flex;flex-direction:column;border:1px solid #e4e9f0;border-radius:10px}.wsa-dl div{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:9px 12px;border-top:1px solid #eef1f5;font-size:13px}.wsa-dl div:first-child{border-top:0}.wsa-dl dt{color:#7a8799}.wsa-dl dd{margin:0;color:#16263b}
.wsa-courses{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid #e4e9f0;border-radius:10px}
.wsa-courses li{display:flex;gap:12px;padding:11px 12px;border-top:1px solid #eef1f5}.wsa-courses li:first-child{border-top:0}.wsa-courses li.off{opacity:.62}
.wsa-courses li>div{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.wsa-course-t{font-size:13px;font-weight:600;color:#16263b}
.wsa-prog-line{display:flex;align-items:center;gap:10px}.wsa-prog-line .wsa-bar{flex:1}.wsa-prog-line small{font-size:12px;color:#33455c;font-variant-numeric:tabular-nums}
.wsa-profile-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wsa-danger{border:1px solid #f3d0cc;border-radius:10px;padding:10px 12px;background:#fffafa}
.wsa-danger summary{cursor:pointer;color:#b42318;font-weight:600;font-size:13px}
.wsa-danger p{font-size:12.5px;color:#5d6b7e;margin:8px 0}.wsa-danger label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#33455c;margin-bottom:10px}
#cde .cde-button.danger{color:#fff;background:#b42318;border-color:#b42318}
@media(max-width:1100px){.wsa-two{grid-template-columns:1fr}}
.adm-inline-check{display:flex;align-items:center;gap:8px;font-size:13px;color:#33455c;margin:4px 0 10px}.adm-link{width:100%;box-sizing:border-box;font:12px ui-monospace,Menlo,monospace;padding:8px 10px;border:1px solid #d5dde8;border-radius:8px;margin:6px 0 10px;background:#f8fafc}
.adm-mods{border:0;padding:0;margin:4px 0 10px;display:flex;flex-wrap:wrap;gap:4px 14px}.adm-mods legend{font-size:12px;font-weight:600;color:#5d6b7e;margin-bottom:4px;padding:0}
#cde .cde-form label.adm-inline-check{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:8px;font-weight:500}#cde .cde-form label.adm-inline-check input{width:auto!important;min-height:0!important;height:auto!important;margin:0}
.wsa-maillog{list-style:none;margin:0;padding:0;border:1px solid #e4e9f0;border-radius:10px}.wsa-maillog li{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border-top:1px solid #eef1f5;font-size:13px}.wsa-maillog li:first-child{border-top:0}.wsa-maillog li>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}.wsa-maillog small{color:#7a8799;overflow-wrap:anywhere}.wsa-note-sm{font-size:12.5px;margin:0}
.adm-bad{color:#b42318}.adm-card .wsa-chips{margin:0 0 12px}
.wsa-legal-add{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 16px}
.wsa-legal-add input[type=url]{flex:1 1 360px;min-width:0;height:36px;border:1px solid var(--line,#d8dee6);border-radius:8px;padding:0 12px;background:transparent;color:inherit}
/* IP truy cập */
.wsa-ip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:0;background:none;padding:2px 0;text-align:left;cursor:pointer;color:inherit;font:inherit}
.wsa-ip>span{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.wsa-ip code,.wsa-iplist code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px}
.wsa-ip small{font-size:12px;color:var(--muted,#6b7a90)}.wsa-ip small b{color:#b42318}
.wsa-ip:hover code{text-decoration:underline}
.wsa-net{font-style:normal;font-size:11px;font-weight:700;color:#0753bc;background:#eaf2ff;border-radius:999px;padding:1px 8px}
.wsa-strange{font-style:normal;font-size:11px;font-weight:700;color:#b42318;background:#fdecea;border-radius:999px;padding:1px 8px}
.wsa-dot.live::before{box-shadow:0 0 0 3px #12b76a33}
.wsa-net-add{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.wsa-net-add input:not([type=checkbox]){flex:1 1 200px;min-width:0;height:36px;border:1px solid var(--line,#d8dee6);border-radius:8px;padding:0 12px;background:transparent;color:inherit}
.wsa-net-add.inline{margin:6px 0 12px;padding:10px;border:1px dashed var(--line,#d8dee6);border-radius:10px}
.wsa-iplist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.wsa-iplist li{border:1px solid var(--line,#e3e8ef);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.wsa-iplist li.strange{border-color:#f4c7c3;background:#fff8f7}
.wsa-iplist li>div:first-child{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wsa-iplist small{color:var(--muted,#6b7a90);font-size:12px}
.wsa-ipact{display:flex;gap:6px;flex-wrap:wrap}.wsa-ipact .cde-button{min-height:30px;font-size:12.5px}
:root[data-theme=dark] .wsa-iplist li.strange{background:#3a1d1a;border-color:#6b2c26}
:root[data-theme=dark] .wsa-net{background:#132a4a;color:#7fb2ff}:root[data-theme=dark] .wsa-strange{background:#3a1d1a;color:#ff9b8f}
.wsa-panel .adm-hint{padding:0 18px;margin:2px 0 12px;font-size:13px;line-height:1.55;color:var(--muted,#6b7a90)}
.wsa-nets .wsa-net-add,.wsa-panel>.wsa-legal-add{padding:0 18px 16px}
.wsa-net-add .adm-inline-check{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:13px}
.wsa-net-add .adm-inline-check input{width:16px;height:16px;margin:0}
.wsa-profile .adm-hint{font-size:12.5px;line-height:1.55;color:var(--muted,#6b7a90);margin-top:14px}
/* Người dùng › thẻ con */
.wsa-subtabs small.bad{background:#fdecea;color:#b42318}
.wsa-usub{margin-top:14px}
.wsa-linkbtn{border:0;background:none;padding:0;text-align:left;cursor:pointer;color:inherit;font:inherit}
.wsa-linkbtn:hover b{color:#0653c4;text-decoration:underline}
.wsa-ipc{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.wsa-ipc code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px}
.wsa-row-strange td{background:#fff8f7}
:root[data-theme=dark] .wsa-row-strange td{background:#2a1716}
.wsa-mini-stats.wide{grid-template-columns:repeat(4,minmax(0,1fr));padding:0 18px 12px}
.wsa-projchips{display:flex;flex-wrap:wrap;gap:6px}
.wsa-projchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line,#dce3ec);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--muted,#5d6b7e)}
.wsa-projchip b{font-weight:600;color:var(--ink,#16263b)}
.wsa-projchip.owner{border-color:#0665ed55}.wsa-projchip.manager{border-color:#12b76a55}
:root[data-theme=dark] .wsa-projchip b{color:#e3e9f1}
/* Học viên › Kiểm tra */
.wsa-exgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;padding:0 18px 18px}
.wsa-excard{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-align:left;border:1px solid var(--line,#dce3ec);border-radius:14px;padding:16px;background:transparent;color:inherit;cursor:pointer;font:inherit}
.wsa-excard:hover{border-color:#0665ed}
.wsa-excard b{font-size:14px;line-height:1.4}.wsa-excard small{font-size:12px;color:var(--muted,#6b7a90)}
.wsa-exbar{width:100%}
.wsa-qlist{list-style:none;margin:0;padding:0 18px 18px;display:flex;flex-direction:column;gap:12px}
.wsa-q{border:1px solid var(--line,#dce3ec);border-radius:14px;padding:16px}
.wsa-q.retired{opacity:.6}
.wsa-qh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.wsa-qh b{font-family:ui-monospace,Menlo,monospace;font-size:12px}
.wsa-qstem{font-size:15px;font-weight:600;line-height:1.5;margin:0 0 8px}
.wsa-qopts{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}
.wsa-qopts li{display:flex;gap:8px;padding:6px 10px;border-radius:8px;font-size:13.5px;line-height:1.45}
.wsa-qopts li b{flex:none;width:18px}
.wsa-qopts li.right{background:#e7f5ee;color:#0f5f3a;font-weight:600}
:root[data-theme=dark] .wsa-qopts li.right{background:#12301f;color:#7fe0ae}
.wsa-qwhy{font-size:13px;color:var(--muted,#5d6b7e);line-height:1.55;margin:0 0 6px}
.wsa-qmeta{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;margin-bottom:10px}
.wsa-qact{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.wsa-qedit{display:flex;flex-direction:column;gap:10px}
.wsa-qedit label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600}
.wsa-qedit textarea,.wsa-qedit input:not([type=radio]){border:1px solid var(--line,#d8dee6);border-radius:8px;padding:8px 10px;font:inherit;font-size:14px;background:transparent;color:inherit}
.wsa-qedit .wsa-qopt{flex-direction:row;align-items:center;gap:8px}.wsa-qedit .wsa-qopt input[name^=o]{flex:1}

/* Quản trị › Học viên › Nội dung & biên soạn, Góp ý học viên */
.wsa-bad{color:#b42318}
.wsa-invite{padding:14px 18px 18px;border-top:1px solid #e4e9f0;display:flex;flex-direction:column;gap:10px}.wsa-invite h3{margin:0;font-size:14px}
.wsa-invite label,.wsa-rep-form label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:#445366}
.wsa-inv-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.wsa-inv-mods{display:flex;flex-wrap:wrap;gap:6px 16px}.wsa-inv-mods label{flex-direction:row;align-items:center;font-weight:400}
.wsa-cgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:14px 18px 18px}.wsa-cgrid h3{margin:0 0 8px;font-size:14px}
.wsa-ver{padding:8px 0;border-top:1px solid #eef1f5;font-size:13px}.wsa-ver ul{margin:6px 0 0;padding-left:18px}
.wsa-act,.wsa-toc{margin:0;padding-left:18px;font-size:13px;max-height:420px;overflow:auto}.wsa-act li{margin-bottom:6px}.wsa-toc ol{padding-left:16px;margin:2px 0 8px}
.wsa-reply{color:#0653c4}.wsa-rep-form{display:grid;grid-template-columns:200px minmax(0,1fr);gap:10px;align-items:start}.wsa-rep-form .adm-actions{grid-column:1/-1}
@media(max-width:900px){.wsa-cgrid,.wsa-inv-row,.wsa-rep-form{grid-template-columns:1fr}}
