[hidden]{display:none!important}
.ls-grid{display:grid;grid-template-columns:290px minmax(0,1fr);gap:22px;align-items:start}
.ls-side{position:sticky;top:84px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:12px;max-height:calc(100vh - 100px);overflow:auto}
.ls-side-h{padding:4px 6px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}.ls-side-h a{font-weight:600;text-decoration:none}
.ls-side-h small{color:var(--muted);font-size:12.5px}
.ls-prog{height:8px;background:#EFE6DA;border-radius:99px;overflow:hidden;margin:8px 0 4px}.ls-prog div{height:100%;background:linear-gradient(90deg,#2e7d32,#66bb6a);border-radius:99px;transition:width .4s}
.ls-ch{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--brand);margin:12px 6px 4px}
.ls-it{display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px;align-items:center;padding:7px 8px;border-radius:12px;color:var(--ink);text-decoration:none;font-size:14px;line-height:1.3}
.ls-it small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.ls-it:hover{background:#FBF4EC}
.ls-it.on{background:var(--brand);color:#fff}.ls-it.on small{color:rgba(255,255,255,.8)}
.ls-no{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#F3EADF;font-weight:700;font-size:13px;color:var(--brand);flex:none}
.ls-it.on .ls-no{background:#fff}.ls-it.done .ls-no{background:#2e7d32;color:#fff}
.ls-hero{background:linear-gradient(135deg,#fff,#FBF1E6);border:1px solid var(--line);border-radius:24px;padding:clamp(18px,3.5vw,32px);margin-bottom:16px}
.ls-hero h1{font-size:clamp(26px,3.8vw,38px);margin:8px 0;color:var(--brand)}.ls-hero .lead{color:var(--muted);font-size:16.5px;margin:0 0 12px}
.ls-toc{display:flex;flex-wrap:wrap;gap:6px}.ls-toc a{font-size:13.5px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 11px;text-decoration:none;color:var(--ink)}
.ls-toc a:hover{border-color:var(--brand);color:var(--brand)}
.ls-box{background:#fff;border:1px solid var(--line);border-radius:20px;padding:clamp(16px,3vw,26px);margin-bottom:16px;scroll-margin-top:84px}
.ls-box h2{font-size:22px;margin:0 0 12px}.ls-box h3{font-size:18px;margin:22px 0 8px;color:var(--brand)}
.ls-box p,.ls-box li{line-height:1.65}.ls-box code{background:#FFF3D6;border-radius:5px;padding:1px 5px;font-size:.92em}
.ls-goals li::marker{content:'✔  ';color:#2e7d32}.ls-parts li{margin:4px 0}
.ls-fig{margin:0 0 18px;text-align:center}.ls-svg{overflow-x:auto;border:1px solid var(--line);border-radius:14px;padding:8px;background:#fff}.ls-svg svg{min-width:560px;height:auto}
.ls-fig figcaption{font-size:14px;color:var(--muted);margin-top:6px;font-style:italic}
.tbl{width:100%;border-collapse:collapse;font-size:14.5px;margin:8px 0 12px}.tbl th,.tbl td{border:1px solid #E6DCCF;padding:7px 9px;text-align:left;vertical-align:top}.tbl th{background:#F7EFE5}
.tw{overflow-x:auto}
.steps{counter-reset:s;list-style:none;padding:0;margin:8px 0 12px}.steps>li{counter-increment:s;position:relative;padding:8px 0 8px 44px;border-left:2px dashed #E6DCCF;margin-left:14px}
.steps>li::before{content:counter(s);position:absolute;left:-15px;top:6px;width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.steps>li:last-child{border-left-color:transparent}
.note{border-radius:12px;padding:10px 14px;margin:12px 0;background:#E8F1FB;border-left:4px solid #1565c0;font-size:14.5px}
.note.warn{background:#FFF4E5;border-left-color:#ef6c00}.note.ok{background:#EAF6EC;border-left-color:#2e7d32}
pre.mini{background:#1e2430;color:#e8eef7;border-radius:10px;padding:10px 12px;overflow:auto;font-size:13.5px;line-height:1.5}
.cc{display:inline-block;width:12px;height:12px;border-radius:3px;margin:0 3px -1px 4px}
.code-box{border:1px solid #2b3240;border-radius:14px;overflow:hidden;margin:12px 0 16px}
.code-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#2b3240;color:#dfe6f2;padding:8px 10px 8px 14px;font-size:14px;font-weight:600;flex-wrap:wrap}
pre.code{margin:0;background:#1e2430;color:#e8eef7;padding:14px;overflow:auto;max-height:520px;font:13.5px/1.55 ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',monospace;tab-size:2}
.ls-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ls-more summary{cursor:pointer;color:var(--brand);font-weight:600;margin-top:8px}
.ls-vid{position:relative;padding-top:56.25%;border-radius:14px;overflow:hidden;background:#000;margin-bottom:12px}.ls-vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.ls-ex li{margin:6px 0}
.qz-q{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:0 0 12px}.qz-q legend{padding:0 6px;font-size:15.5px}
.qz-q label{display:block;padding:7px 10px;border-radius:10px;cursor:pointer;margin:3px 0}.qz-q label:hover{background:#FBF4EC}
.qz-q label.right{background:#EAF6EC;color:#1b5e20;font-weight:600}.qz-q label.wrong{background:#FDECEA;color:#b71c1c;text-decoration:line-through}
.qz-ex{font-size:14px;color:#33691e;background:#F4F9EE;border-radius:8px;padding:6px 10px;margin:6px 0 0}
.ls-done{display:flex;flex-direction:column;gap:14px;align-items:center;margin:20px 0}.ls-nav{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.cs-dash{display:grid;grid-template-columns:repeat(3,1fr) 1.6fr;gap:12px;margin:14px 0 18px}
.cs-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px 16px}.cs-card b{font-size:28px;font-family:Lora,serif;color:var(--brand);display:block}
.cs-card span{color:var(--muted);font-size:13.5px}.cs-next{display:flex;flex-direction:column;gap:8px;justify-content:center}
.item.cs-done{border-color:#A5D6A7;background:#F6FBF6}
.cs-road{max-width:900px}.cs-ch{font-size:17px;color:var(--brand);margin:20px 0 8px}
.cs-list{display:grid;gap:8px}.cs-li{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 14px;text-decoration:none;color:var(--ink)}
.cs-li:hover{border-color:var(--brand)}.cs-li small{display:block;color:var(--muted);font-size:13px;margin-top:2px}.cs-li em{font-style:normal;font-size:12.5px;color:var(--brand);font-weight:600}
.ab-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:14px;padding:12px 0;border-bottom:1px solid var(--line);scroll-margin-top:90px}.ab-row textarea{width:100%}
.ab-th{display:flex;gap:6px;margin-top:6px}.ab-th img{width:110px;border-radius:8px}
.ab-tbl td,.ab-tbl th{text-align:center;white-space:nowrap}.ab-tbl td:first-child{text-align:left}.ab-ok{background:#EAF6EC;color:#2e7d32;font-weight:700}.ab-tbl small{display:block;font-size:11px;color:var(--muted);font-weight:400}
.tabs a{display:inline-block}
@media (max-width:900px){.ls-grid{grid-template-columns:1fr}.ls-side{position:static;max-height:none;display:flex;overflow-x:auto;gap:6px;padding:8px}
 .ls-side-h,.ls-ch{display:none}.ls-it{flex:none;width:210px;border:1px solid var(--line)}
 .cs-dash{grid-template-columns:1fr 1fr}.cs-next{grid-column:1/-1}.ab-row{grid-template-columns:1fr}}
@media print{.ls-side,.nav,.foot,.zalo-fab,.ls-done,.ls-toc{display:none!important}.ls-grid{display:block}}
.ls-box ol.steps{display:block!important;grid-template-columns:none!important;gap:0}
.ls-box ol.steps>li{background:none!important;border:0;border-left:2px dashed #E6DCCF;border-radius:0;box-shadow:none!important;padding:8px 0 8px 44px;min-height:0}
.ls-box ol.steps>li:last-child{border-left-color:transparent}
.ls-box pre.code code,.ls-box pre.mini code{background:none!important;padding:0;border-radius:0;color:inherit;font:inherit}