:root{--navy:#123252;--blue:#176fa8;--cyan:#21a6b8;--paper:#fff;--bg:#edf3f7;--ink:#182431;--muted:#647586;--line:#d5e0e7;--soft:#f6f9fb;--ok:#157a64;--shadow:0 16px 45px rgba(24,52,76,.10)}
*{box-sizing:border-box}html{font-size:16px}[hidden]{display:none!important}body{margin:0;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:linear-gradient(135deg,#e9f1f6 0%,#f7fafc 45%,#e7f1f5 100%);min-height:100vh}
.topbar{height:72px;background:var(--navy);color:#fff;display:flex;align-items:center;padding:0 clamp(18px,4vw,58px);gap:14px;box-shadow:0 3px 16px #12325233}.topbar strong{display:block;letter-spacing:.08em;font-size:1rem}.topbar span{display:block;color:#b9d4e4;font-size:.78rem;margin-top:3px}.brand-mark{width:40px;height:40px;border:1px solid #77c9d9;border-radius:11px;display:grid;place-items:center;font:700 1.4rem Georgia;background:linear-gradient(145deg,#1e85ac,#19496d)}.icon-btn{margin-left:auto;border:1px solid #ffffff33;background:#ffffff12;color:white;width:38px;height:38px;border-radius:10px;cursor:pointer;font-size:1.2rem}
.workspace{display:grid;grid-template-columns:minmax(380px,46%) minmax(460px,54%);gap:18px;max-width:1500px;margin:auto;padding:20px}.panel{background:var(--paper);border:1px solid #dfe8ed;border-radius:18px;box-shadow:var(--shadow);overflow:hidden}.form-panel{padding:22px 24px}.result-panel{min-height:calc(100vh - 112px);position:relative}.panel-head,.source-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.panel-head>div,.source-title>div{display:flex;align-items:center;gap:10px}.panel-head h1,.panel-head h2,.source-title h2{font-size:1.18rem;margin:0;color:var(--navy)}.step{background:var(--navy);color:#fff;border-radius:7px;padding:5px 7px;font-size:.68rem;font-weight:800;letter-spacing:.06em}.text-btn{border:0;background:none;color:var(--blue);font-weight:650;cursor:pointer}.head-actions{display:flex;align-items:center;gap:14px}.text-btn.muted{color:var(--muted);font-weight:600;font-size:.82rem}.text-btn.muted:hover{color:#a12e36}.grid{display:grid;gap:12px}.grid.two{grid-template-columns:1fr 1fr}label{display:block;font-size:.84rem;font-weight:650;color:#2b455c;margin-bottom:12px}input,select,textarea{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:9px;background:#fbfdfe;color:var(--ink);padding:11px 12px;font:inherit;outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #176fa81a;background:#fff}textarea{resize:vertical}.source-block{border-top:1px solid var(--line);margin-top:8px;padding-top:18px}.source-title{margin-bottom:10px}.badge{font-size:.72rem;color:var(--muted);background:var(--soft);padding:5px 8px;border-radius:99px}.drop-zone{border:1.5px dashed #8fb7c9;background:#f4fafc;min-height:108px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;text-align:center;padding:15px;color:var(--navy)}.drop-zone:hover,.drop-zone.drag{background:#eaf7fa;border-color:var(--cyan)}.drop-zone small{font-weight:400;color:var(--muted);margin-top:5px}.upload-icon{font-size:1.45rem;color:var(--cyan)}.file-list{display:grid;gap:6px;margin:8px 0}.file-chip{display:flex;align-items:center;gap:8px;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:.78rem}.file-chip b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-chip span{color:var(--muted);margin-left:auto}.file-chip button{border:0;background:none;color:#a12e36;cursor:pointer;font-size:1rem}.ai-settings{border:1px solid var(--line);border-radius:11px;margin:8px 0 14px;background:#fafcfd}.ai-settings summary{cursor:pointer;padding:12px 14px;font-weight:750;color:var(--navy)}.ai-settings summary span{font-weight:400;color:var(--muted);font-size:.8rem}.settings-body{border-top:1px solid var(--line);padding:14px}.key-steps{margin:0 0 14px;padding-left:20px;font-size:.83rem;color:#2b455c;line-height:1.6}.key-steps li{margin-bottom:4px}.key-steps a{color:var(--blue);font-weight:650}.advanced-settings{border:1px solid var(--line);border-radius:9px;margin-top:6px;background:#fff}.advanced-settings summary{cursor:pointer;padding:9px 12px;font-weight:650;color:var(--navy);font-size:.86rem}.advanced-settings summary span{font-weight:400;color:var(--muted);font-size:.76rem;margin-left:5px}.advanced-settings label{padding:0 12px 12px;margin-bottom:0}.password-row{display:flex;gap:7px}.password-row input{margin:6px 0 0}.mini-btn{margin-top:6px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:0 12px;cursor:pointer}.privacy{font-size:.75rem;color:var(--muted);line-height:1.45;margin:4px 0}.settings-body a{font-size:.78rem;color:var(--blue)}.check{display:flex;align-items:center;gap:9px;font-weight:500}.check input{width:17px;height:17px;margin:0;accent-color:var(--blue)}.primary{width:100%;border:0;background:linear-gradient(110deg,var(--navy),var(--blue));color:white;border-radius:11px;padding:14px;font-size:1rem;font-weight:750;cursor:pointer;box-shadow:0 9px 22px #176fa833;transition:.2s}.primary:hover{transform:translateY(-1px);box-shadow:0 12px 26px #176fa844}.primary:disabled{opacity:.6;cursor:wait;transform:none}
.sticky{position:sticky;top:0;background:#fff;padding:20px 22px 14px;margin:0;border-bottom:1px solid var(--line);z-index:3}.actions{display:flex;gap:7px}.secondary{border:1px solid var(--line);background:white;color:var(--navy);padding:8px 10px;border-radius:8px;font-weight:650;cursor:pointer}.secondary.accent{background:var(--blue);color:white;border-color:var(--blue)}.empty-state,.progress-box{min-height:calc(100vh - 190px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:34px;color:var(--muted)}.empty-state h3,.progress-box h3{color:var(--navy);margin:18px 0 6px}.empty-state p{max-width:440px;line-height:1.55}.paper-stack{position:relative;width:92px;height:102px}.paper-stack i{position:absolute;inset:0;border:1px solid #9eb8c7;background:#fff;border-radius:6px;box-shadow:0 7px 18px #173f5b1a}.paper-stack i:nth-child(1){transform:rotate(-7deg)}.paper-stack i:nth-child(2){transform:rotate(6deg)}.paper-stack i:nth-child(3){transform:none;background:linear-gradient(#fff 20%,#dce9ef 21%,#fff 22%,#fff 36%,#dce9ef 37%,#fff 38%,#fff 52%,#dce9ef 53%,#fff 54%)}.promise-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px;text-align:left;font-size:.82rem;color:var(--ok)}.spinner{width:42px;height:42px;border:4px solid #d7e8ef;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}.progress-track{width:min(360px,80%);height:7px;background:#e2ebef;border-radius:9px;overflow:hidden;margin-top:14px}.progress-track span{display:block;width:8%;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));transition:width .6s}@keyframes spin{to{transform:rotate(360deg)}}
.document{padding:30px clamp(22px,4vw,52px) 70px;max-width:900px;margin:auto;font-family:"Times New Roman",serif;font-size:1rem;line-height:1.48}.document h1{text-align:center;color:#0f527a;font-size:1.35rem}.document h2{color:#0e668e;font-size:1.17rem;border-bottom:1px solid #bcd4df;padding-bottom:4px;margin-top:1.5rem}.document h3{font-size:1.05rem;color:#183d58}.document table{border-collapse:collapse;width:100%;font-size:.9rem;margin:12px 0}.document th,.document td{border:1px solid #8299a8;padding:7px;vertical-align:top}.document th{background:#164f75;color:white}.document blockquote{border-left:4px solid var(--cyan);background:#edf7f9;padding:10px 14px;margin-left:0}.document code{background:#eef3f6;padding:1px 4px;border-radius:4px}.toast{position:fixed;right:20px;bottom:20px;background:var(--navy);color:#fff;padding:11px 16px;border-radius:9px;box-shadow:var(--shadow);opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}
body.dark{--paper:#142534;--bg:#0c1923;--ink:#e6eef3;--muted:#9cb0bf;--line:#314858;--soft:#1b3040;background:#0d1a24}.dark .panel,.dark .sticky{background:var(--paper)}.dark input,.dark select,.dark textarea,.dark .ai-settings,.dark .mini-btn,.dark .advanced-settings{background:#10202c;color:var(--ink)}.dark .drop-zone{background:#142d3c}.dark .document h1,.dark .document h2,.dark .document h3,.dark label{color:#cfe9f4}.dark .key-steps{color:#c7dbe6}
@media(max-width:980px){.workspace{grid-template-columns:1fr;padding:12px}.result-panel{min-height:620px}.topbar{height:64px}.form-panel{padding:18px}.sticky{position:static}}
@media(max-width:560px){.grid.two{grid-template-columns:1fr}.actions{display:grid!important;grid-template-columns:1fr 1fr}.panel-head{align-items:flex-start}.promise-grid{grid-template-columns:1fr}.document{padding:24px 15px}.topbar span{display:none}}
@media print{body{background:#fff}.topbar,.form-panel,.result-panel>.panel-head,.toast{display:none!important}.workspace{display:block;padding:0}.result-panel{border:0;box-shadow:none}.document{display:block!important;max-width:none;padding:0;color:#000}.document h1,.document h2,.document h3{color:#000}.document table{page-break-inside:auto}.document tr{page-break-inside:avoid}}
.model-row{display:flex;gap:7px;align-items:stretch}.model-row select{min-width:0}.model-row .mini-btn{white-space:nowrap;height:43px}.model-status{display:block;margin-top:5px;color:var(--muted);font-weight:400;line-height:1.35}.model-status.ok{color:var(--ok)}.model-status.error{color:#a12e36}
.privacy-confirm{align-items:flex-start;background:#fff8e8;border:1px solid #ead49b;border-radius:9px;padding:10px;margin-top:8px}.privacy-warning{color:#7a5514}.validation-report{margin:18px clamp(22px,4vw,52px) 0;padding:13px 15px;border-radius:10px;border:1px solid}.validation-report.ok{background:#edf8f4;border-color:#92ccb9;color:#11634f}.validation-report.warn{background:#fff8e8;border-color:#e1c675;color:#74500d}.validation-report.block{background:#fff0f1;border-color:#dd9ca2;color:#8c2530}.validation-report strong{display:block;margin-bottom:5px}.validation-report ul{margin:5px 0;padding-left:20px}.draft-notice{margin:0 clamp(22px,4vw,52px) 35px;padding:11px 14px;border-left:4px solid #d19a25;background:#fff8e8;color:#684c12;font-size:.88rem}.secondary:disabled{opacity:.45;cursor:not-allowed}
.professional-options{padding:12px;margin:4px 0 14px;border:1px solid var(--line);border-radius:11px;background:var(--soft)}.professional-options label{margin-bottom:0}.competency-approval{margin:12px 0 2px;padding:10px;background:#fff;border:1px solid currentColor;border-radius:8px;color:inherit}.validation-report p{margin:7px 0}
.document.editing{outline:3px solid #21a6b866;outline-offset:-8px;background:#fffef4}.document.editing:focus{outline-color:#21a6b8}.history-dialog{width:min(1050px,92vw);max-height:88vh;border:0;border-radius:16px;padding:24px;box-shadow:0 24px 80px #10283f55}.history-dialog::backdrop{background:#0e223477}.history-dialog h2{margin-top:0;color:var(--navy)}.dialog-close{float:right;border:0;background:#edf3f7;border-radius:50%;width:34px;height:34px;font-size:1.3rem;cursor:pointer}.version-item{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:11px;border-bottom:1px solid var(--line)}.version-item label{margin:0}.version-item small{color:var(--muted)}.version-item button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 10px;cursor:pointer}.compare-view{margin-top:18px}.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.compare-grid section{min-width:0;border:1px solid var(--line);border-radius:9px;padding:10px}.compare-grid pre{white-space:pre-wrap;max-height:50vh;overflow:auto;font:12px/1.45 Consolas,monospace}.actions{flex-wrap:wrap}.dark .history-dialog{background:#142534;color:#e6eef3}.dark .history-dialog h2{color:#cfe9f4}@media(max-width:700px){.compare-grid{grid-template-columns:1fr}.version-item{grid-template-columns:1fr}.history-dialog{padding:15px}}
.lesson-flow{table-layout:fixed!important;width:100%;font-size:.84rem}.lesson-flow.layout-3 th:nth-child(1),.lesson-flow.layout-3 td:nth-child(1){width:40%}.lesson-flow.layout-3 th:nth-child(2),.lesson-flow.layout-3 td:nth-child(2){width:44%}.lesson-flow.layout-3 th:nth-child(3),.lesson-flow.layout-3 td:nth-child(3){width:16%}.lesson-flow.layout-5{min-width:850px}.lesson-flow.layout-5 th:nth-child(1),.lesson-flow.layout-5 td:nth-child(1){width:23%}.lesson-flow.layout-5 th:nth-child(2),.lesson-flow.layout-5 td:nth-child(2){width:20%}.lesson-flow.layout-5 th:nth-child(3),.lesson-flow.layout-5 td:nth-child(3){width:23%}.lesson-flow.layout-5 th:nth-child(4),.lesson-flow.layout-5 td:nth-child(4){width:20%}.lesson-flow.layout-5 th:nth-child(5),.lesson-flow.layout-5 td:nth-child(5){width:14%}.lesson-flow td{line-height:1.45;overflow-wrap:anywhere}.lesson-flow .flow-step{display:block;margin-bottom:7px;color:var(--navy)}.flow-duration{display:inline-block;margin-left:5px;padding:2px 6px;border-radius:99px;background:#e7f3f8;color:#125b7c;font:700 .72rem Inter,sans-serif}.source-tag{display:block;margin-top:7px;padding:5px 6px;background:#f4f0df;border-left:3px solid #c59b2c;color:#665019}.lesson-flow ul{margin:4px 0;padding-left:18px}.lesson-flow li{margin:3px 0}.lesson-flow mjx-container{font-size:90%}.flow-wrap{width:100%;overflow-x:auto}.document hr{border:0;border-top:1px solid var(--line);margin:18px 0}@media(max-width:680px){.lesson-flow{min-width:720px}}
/* Khi in/"Save as PDF": overflow-x:auto trên mjx-container (dòng dưới) chỉ có ý nghĩa với thanh
 * cuộn trên MÀN HÌNH. Khi in tĩnh, phần bị cuộn ra ngoài tầm nhìn bị CẮT CỤT (mất nội dung) hoặc
 * chồng đè lên cột bên cạnh tuỳ trình duyệt — thay vì cuộn, cho phép hiển thị tràn khối để không
 * mất công thức (chấp nhận đè nhẹ vào khoảng trắng còn hơn cắt mất một phần đẳng thức).*/
@media print{.document mjx-container{overflow-x:visible!important;max-width:none!important}.lesson-flow{font-size:.8rem}.lesson-flow mjx-container{font-size:82%}}
.mathviz{margin:18px 0;padding:14px;border:1px solid #a9c8d8;border-radius:10px;background:#fbfdff;font-family:Inter,"Segoe UI",sans-serif}.mathviz-title{text-align:center;font-weight:750;color:var(--navy);margin-bottom:10px}.mathviz svg{display:block;width:100%;height:auto}.plot-bg{fill:#fff;stroke:#b7c9d4}.grid-line{stroke:#dfe9ee;stroke-width:1}.axis{stroke:#263d4c;stroke-width:1.7}.plot-path{fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.asymptote{fill:none;stroke:#c4473a;stroke-width:1.8;stroke-dasharray:8 6}.asymptote-label{font:italic 12px Arial,sans-serif;fill:#a9342a}.mathviz-legend{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-top:7px}.mathviz-legend span:before{content:"";display:inline-block;width:16px;height:3px;background:var(--c);vertical-align:middle;margin-right:6px}.mathviz-scroll{overflow-x:auto}.variation-table{min-width:520px;text-align:center}.variation-table th{background:#164f75!important;color:#fff}.variation-table td{height:58px;font-family:"Cambria Math","Times New Roman",serif;font-size:1.18rem;background:#fff;color:#142534}.variation-cell{min-width:78px}.mathviz-error{color:#a12e36;text-align:center}.document mjx-container{max-width:100%;overflow-x:auto;overflow-y:hidden;padding:2px 0}.dark .mathviz{background:#10202c}.dark .plot-bg,.dark .variation-table td{fill:#fff;background:#fff;color:#142534}
.vt-scroll{min-width:600px}.vt-scroll svg{width:100%;height:auto;display:block}.vt-frame{fill:none;stroke:#171717;stroke-width:1.2}.vt-grid{stroke:#171717;stroke-width:1}.vt-path{fill:none;stroke:#171717;stroke-width:1.7;stroke-linecap:round}.vt-arrow{fill:#171717}.vt-discontinuity{stroke:#171717;stroke-width:1.2}.vt-label{width:100%;height:100%;display:flex;align-items:center;font-family:"Cambria Math","Times New Roman",serif;font-size:15px;color:#142534}.dark .vt-frame,.dark .vt-grid,.dark .vt-discontinuity{stroke:#cfe3ee}.dark .vt-path{stroke:#eaf3f8}.dark .vt-arrow{fill:#eaf3f8}.dark .vt-label{color:#eaf3f8}

/* b19 — nhãn hệ trục Oxy trên đồ thị (mũi tên + chữ O, x, y) */
.mathviz .axis-name{font:italic 600 15px/1 "Times New Roman",Georgia,serif;fill:#123252}
