/* Phông chữ có chân kèm theo máy chủ (góp ý 30/09 — lỗi tách dấu «Huyê`n»): phông hệ thống cũ trên Windows thiếu chữ tiếng Việt
   hai dấu (ề, ắ, ố…) nên trình duyệt tách dấu ra ngoài. Lora (SIL OFL 1.1, đủ tiếng Việt) luôn được dùng, không phụ thuộc máy người xem. */
@font-face{font-family:"Nexus Serif";src:url(/fonts/Lora-Variable.woff) format("woff");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Nexus Serif";src:url(/fonts/Lora-Italic-Variable.woff) format("woff");font-weight:400 700;font-style:italic;font-display:swap}
/* Học viện CDE Nexus (/hoc) — trang công khai cho người chưa có tài khoản. Không dùng style nội dòng (CSP). */
:root{
  --h-navy:#0b2340;--h-navy-2:#12325a;--h-blue:#0665ed;--h-blue-2:#0753bc;--h-blue-soft:#eaf2ff;--h-bg:#f7f8fa;--h-paper:#fff;--h-paper-2:#fbfcfd;
  --h-ink:#1f2d3d;--h-ink-2:#3d4b5c;--h-muted:#5b6b7f;--h-faint:#8795a8;--h-line:#e3e8ef;--h-line-2:#eef1f5;--h-sand:#e9b48c;--h-sand-ink:#a8683f;--h-sand-soft:#fbf1e8;
  --h-green:#127a4b;--h-green-soft:#e7f5ee;--h-amber:#8a5a00;--h-amber-soft:#fdf3e1;--h-red:#b42318;
  --h-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Be Vietnam Pro",Roboto,"Helvetica Neue",Arial,sans-serif;
  --h-serif:"Nexus Serif","Times New Roman",serif; /* phông hệ thống cũ (Iowan, Charter, Cambria…) thiếu chữ tiếng Việt hai dấu (Huyền → Huyê`n) */
  --h-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --h-shadow:0 20px 50px #0b234014;
}
:root[data-theme=dark]{
  --h-navy:#08182c;--h-navy-2:#0f2644;--h-blue:#5b9dff;--h-blue-2:#7fb2ff;--h-blue-soft:#132a4a;--h-bg:#0d1520;--h-paper:#131d2a;--h-paper-2:#172333;
  --h-ink:#e3e9f1;--h-ink-2:#c3cedb;--h-muted:#98a7b9;--h-faint:#7a899c;--h-line:#253447;--h-line-2:#1d2b3b;--h-sand-soft:#33261a;--h-sand-ink:#e9b48c;
  --h-green:#5fd29b;--h-green-soft:#12301f;--h-amber:#f0b44c;--h-amber-soft:#33260f;--h-shadow:0 20px 50px #0006;
}
*{box-sizing:border-box}
html,body{margin:0}
body.hoc-body{font-family:var(--h-sans);background:var(--h-bg);color:var(--h-ink);-webkit-font-smoothing:antialiased;line-height:1.5}
.hoc-body a{color:var(--h-blue);text-decoration:none}
.hoc-body a:hover{color:var(--h-blue-2)}
.hoc-body button,.hoc-body input,.hoc-body select,.hoc-body textarea{font:inherit;color:inherit}
.hoc-body button{cursor:pointer}
.hoc-body :focus-visible{outline:3px solid var(--h-blue);outline-offset:2px;border-radius:6px}
.hoc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hoc-loading{min-height:60vh;display:grid;place-items:center;color:var(--h-muted)}
.hoc-wrap{max-width:1200px;margin:0 auto;padding:0 24px}
.hoc-eyebrow{font-size:13px;font-weight:700;letter-spacing:1.4px;color:var(--h-blue);text-transform:uppercase}
.hoc-muted{color:var(--h-muted)}

/* ---- nút ---- */
.hoc-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 24px;border-radius:999px;border:1px solid transparent;font-weight:600;font-size:15px;white-space:nowrap;background:none}
.hoc-btn svg{width:16px;height:16px}
.hoc-btn.primary{background:var(--h-blue);color:#fff}
.hoc-btn.primary:hover{background:var(--h-blue-2);color:#fff}
.hoc-btn.ghost{border-color:var(--h-line);background:var(--h-paper);color:var(--h-ink)}
.hoc-btn.ghost:hover{border-color:var(--h-faint);color:var(--h-ink)}
.hoc-btn.light{background:#fff;color:#0b2340}
.hoc-btn.outline-light{border-color:#ffffff3d;color:#fff}
.hoc-btn.outline-light:hover{border-color:#ffffffa0;color:#fff}
.hoc-btn.block{width:100%}
.hoc-btn.square{border-radius:12px}
.hoc-btn:disabled{opacity:.6;cursor:wait}

/* ---- thanh trên ---- */
.hoc-top{position:sticky;top:0;z-index:20;height:68px;display:flex;align-items:center;gap:32px;padding:0 max(24px,calc((100vw - 1200px)/2));background:var(--h-navy);color:#fff;border-bottom:1px solid #ffffff14}
.hoc-top.light{background:var(--h-paper);color:var(--h-ink);border-bottom-color:var(--h-line)}
.hoc-brand{display:flex;align-items:center;gap:12px;color:inherit!important;font-weight:700;font-size:17px;letter-spacing:-.3px}
.hoc-brand img{width:30px;height:30px;border-radius:7px}
.hoc-brand small{font-size:13px;font-weight:500;opacity:.7;padding-left:12px;border-left:1px solid currentColor}
.hoc-nav{display:flex;gap:28px;font-size:14px;font-weight:500;flex:1}
.hoc-nav a{color:inherit!important;opacity:.82}
.hoc-nav a:hover{opacity:1}
.hoc-top-actions{display:flex;align-items:center;gap:18px;font-size:14px;font-weight:600}
.hoc-top-actions a.plain{color:inherit!important}
.hoc-top .hoc-btn{min-height:40px;padding:0 18px;font-size:14px}
.hoc-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--h-blue);color:#fff;font-size:13px;font-weight:700}
@media (max-width:900px){.hoc-nav{display:none}.hoc-top{gap:14px}.hoc-top-actions a.plain{display:none}}

/* ---- trang chủ ---- */
.hoc-hero{position:relative;overflow:hidden;background:var(--h-navy);color:#fff;padding:72px 0 110px}
.hoc-hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff0b 1px,transparent 1px),linear-gradient(90deg,#ffffff0b 1px,transparent 1px);background-size:40px 40px;pointer-events:none}
.hoc-hero .hoc-wrap{position:relative;display:grid;grid-template-columns:1fr 520px;gap:64px;align-items:center}
.hoc-hero-text{display:flex;flex-direction:column;gap:24px}
.hoc-pill{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;font-size:13px;color:#d6e0ec;border:1px solid #ffffff26;border-radius:999px;padding:6px 14px 6px 6px}
.hoc-pill b{font-size:11px;letter-spacing:.6px;color:#0b2340;background:var(--h-sand);border-radius:999px;padding:3px 10px}
.hoc-hero h1{margin:0;font-size:clamp(38px,5vw,62px);line-height:1.07;letter-spacing:-2px;font-weight:700}
.hoc-hero h1 em{font-family:var(--h-serif);font-weight:400;color:var(--h-sand);letter-spacing:-1px}
.hoc-hero p{margin:0;font-size:18px;line-height:1.7;color:#b9c7d8;max-width:600px}
.hoc-hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.hoc-hero-note{font-size:13px;color:#8ea3bc}
.hoc-shot{position:relative;height:440px}
.hoc-shot-main{position:absolute;left:24px;top:0;right:0;background:var(--h-paper);color:var(--h-ink);border-radius:16px;overflow:hidden;box-shadow:0 30px 80px #0006}
.hoc-shot-bar{height:3px;background:var(--h-line)}.hoc-shot-bar i{display:block;width:38%;height:3px;background:var(--h-blue)}
.hoc-shot-head{display:flex;gap:10px;padding:14px 22px;border-bottom:1px solid var(--h-line-2);font-size:12px;color:var(--h-muted)}
.hoc-shot-head b{color:var(--h-ink)}.hoc-shot-head span:last-child{margin-left:auto}
.hoc-shot-body{display:grid;grid-template-columns:1fr 140px;gap:20px;padding:24px 22px 28px}
.hoc-shot-body h4{margin:0 0 10px;font-family:var(--h-serif);font-size:22px;font-weight:600;line-height:1.25}
.hoc-shot-body p{margin:0 0 12px;font-family:var(--h-serif);font-size:14px;line-height:1.7;color:var(--h-ink-2)}
.hoc-shot-line{height:8px;border-radius:4px;background:var(--h-line-2);margin-top:10px}.hoc-shot-line.w8{width:80%}.hoc-shot-line.w9{width:92%}
.hoc-side-note{border-left:2px solid var(--h-blue);padding:2px 0 2px 10px;margin-bottom:12px;font-size:12px;line-height:1.45}
.hoc-side-note b{display:block;font-size:10px;letter-spacing:1px;color:var(--h-blue);margin-bottom:3px}
.hoc-side-note.grey{border-color:var(--h-line)}.hoc-side-note.grey b{color:var(--h-muted)}
.hoc-float{position:absolute;display:flex;gap:14px;align-items:center;width:250px;background:var(--h-paper);color:var(--h-ink);border-radius:14px;padding:16px 18px;box-shadow:0 20px 50px #0000004d}
.hoc-float b{display:block;font-size:13px}.hoc-float span{font-size:12px;color:var(--h-muted)}
.hoc-float.a{left:0;top:300px}.hoc-float.b{right:0;top:330px}
.hoc-float .medal{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:var(--h-sand-soft);color:var(--h-sand-ink);flex-shrink:0}
.hoc-ring{flex-shrink:0}
.hoc-ring .bg{stroke:var(--h-line)}.hoc-ring .fg{stroke:var(--h-green)}.hoc-ring .fg.blue{stroke:var(--h-blue)}
.hoc-stats{position:relative;margin:-48px auto 0;max-width:1200px;background:var(--h-paper);border:1px solid var(--h-line);border-radius:16px;display:grid;grid-template-columns:repeat(4,1fr);box-shadow:var(--h-shadow)}
.hoc-stats div{padding:24px 28px;border-right:1px solid var(--h-line-2)}.hoc-stats div:last-child{border-right:0}
.hoc-stats b{display:block;font-size:30px;letter-spacing:-1px;color:var(--h-ink)}
.hoc-stats span{font-size:14px;color:var(--h-muted)}
.hoc-sec{padding:88px 0 0}
.hoc-sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px;flex-wrap:wrap}
.hoc-sec-head>div{display:flex;flex-direction:column;gap:12px;max-width:760px}
.hoc-sec h2{margin:0;font-size:clamp(28px,3.4vw,40px);letter-spacing:-1.2px;line-height:1.15}
.hoc-sec-head p{margin:0;font-size:17px;line-height:1.7;color:var(--h-muted)}
.hoc-path{background:var(--h-paper);border:1px solid var(--h-line);border-radius:20px;padding:32px;display:grid;grid-template-columns:repeat(5,1fr);gap:14px 16px}
.hoc-path .ph{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:1.2px;color:var(--h-muted);text-transform:uppercase}
.hoc-path .ph::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--h-blue)}
.hoc-path .span2{grid-column:span 2}.hoc-path .rule{grid-column:1/-1;height:2px;background:var(--h-line);margin:2px 0 6px}
.hoc-path a.node{display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid var(--h-line);border-radius:12px;color:var(--h-ink);background:var(--h-bg)}
.hoc-path a.node:hover{border-color:var(--h-blue)}
.hoc-path a.node small{font-size:12px;font-weight:700;color:var(--h-blue)}
.hoc-path a.node span{font-size:15px;font-weight:600;line-height:1.35}
.hoc-path a.span{grid-column:1/-1;flex-direction:row;align-items:center;gap:18px;background:var(--h-navy);border-color:var(--h-navy);color:#fff}
.hoc-path a.span small{color:var(--h-sand)}
.hoc-path a.span svg{margin-left:auto}
@media (max-width:900px){.hoc-path{grid-template-columns:1fr}.hoc-path .span2{grid-column:auto}.hoc-path .ph,.hoc-path .rule{display:none}.hoc-path a.span{flex-direction:column;align-items:flex-start}}
.hoc-start{display:inline-flex;align-items:center;gap:14px;padding:14px 18px;border:1px solid var(--h-line);border-radius:14px;background:var(--h-paper);color:var(--h-ink)!important}
.hoc-start small{display:block;font-size:12px;font-weight:700;color:var(--h-sand-ink)}
.hoc-start b{font-size:15px}
.hoc-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media (max-width:1000px){.hoc-cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.hoc-cards{grid-template-columns:1fr}}
.hoc-card{display:flex;flex-direction:column;background:var(--h-paper);border:1px solid var(--h-line);border-radius:16px;overflow:hidden;color:var(--h-ink)!important;transition:transform .15s,box-shadow .15s}
.hoc-card:hover{transform:translateY(-2px);box-shadow:var(--h-shadow)}
.hoc-cover{position:relative;height:168px;background:var(--h-navy);overflow:hidden}
.hoc-cover svg{position:absolute;inset:0;width:100%;height:100%}
.hoc-cover .grid{stroke:#fff;stroke-opacity:.06}
.hoc-cover .art{fill:none;stroke:#8fb4e6;stroke-width:1.4}
.hoc-cover .art text{fill:#8fb4e6;stroke:none;font:700 11px var(--h-sans)}
.hoc-cover b{position:absolute;left:22px;top:20px;font-size:13px;color:#fff;letter-spacing:.4px}
.hoc-cover span{position:absolute;left:22px;bottom:18px;font-size:11px;font-weight:700;letter-spacing:1px;color:#0b2340;background:#cfe0f7;padding:4px 9px;border-radius:6px;text-transform:uppercase}
.hoc-cover span.sand{background:var(--h-sand)}
.hoc-card-body{padding:22px 24px;display:flex;flex-direction:column;gap:10px;flex:1}
.hoc-card-body h3{margin:0;font-size:19px;line-height:1.3;letter-spacing:-.3px}
.hoc-card-body p{margin:0;font-size:14px;line-height:1.6;color:var(--h-muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.hoc-card-body small{margin-top:auto;font-size:13px;color:var(--h-muted)}
.hoc-card-foot{display:flex;justify-content:space-between;padding:14px 24px;border-top:1px solid var(--h-line-2);font-size:13px;font-weight:600}
.hoc-card-foot .free{color:var(--h-green)}.hoc-card-foot .go{color:var(--h-blue)}
.hoc-bar{height:4px;background:var(--h-line-2)}.hoc-bar i{display:block;height:4px;background:var(--h-green)}
.hoc-check{background:var(--h-paper);border:1px solid var(--h-line);border-radius:20px;display:grid;grid-template-columns:1.3fr 1fr;overflow:hidden}
.hoc-check-q{padding:40px 44px;display:flex;flex-direction:column;gap:24px}
.hoc-check-q h2{margin:0;font-size:32px;letter-spacing:-1px;line-height:1.2}
.hoc-check-q fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.hoc-check-q legend{font-size:13px;font-weight:600;color:var(--h-muted);margin-bottom:10px;padding:0}
.hoc-chips{display:flex;gap:8px;flex-wrap:wrap}
.hoc-chip{min-height:44px;padding:0 16px;border-radius:10px;border:1.5px solid var(--h-line);background:var(--h-paper);font-size:14px;font-weight:500}
.hoc-chip[aria-pressed=true]{border-color:var(--h-blue);background:var(--h-blue-soft);color:var(--h-blue);font-weight:600}
.hoc-check-a{background:var(--h-navy);color:#fff;padding:40px;display:flex;flex-direction:column;gap:16px}
.hoc-check-a .lbl{font-size:12px;font-weight:700;letter-spacing:1.4px;color:#8ea3bc}
.hoc-verdict{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border-radius:12px;background:#ffffff0f;border:1px solid #ffffff1f}
.hoc-verdict span{font-size:13px;color:#b9c7d8}
.hoc-verdict b{font-size:19px}
.hoc-verdict b.must{color:#f2c28f}.hoc-verdict b.opt{color:#8fd9b4}
.hoc-check-a p{margin:0;font-size:13px;line-height:1.6;color:#8ea3bc}
.hoc-check-a .hoc-btn{margin-top:auto}
@media (max-width:900px){.hoc-check{grid-template-columns:1fr}.hoc-check-q,.hoc-check-a{padding:28px 22px}}
.hoc-how{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.hoc-how div{display:flex;flex-direction:column;gap:12px;padding-top:20px;border-top:2px solid var(--h-ink)}
.hoc-how i{font-family:var(--h-serif);font-style:normal;font-size:34px;color:var(--h-blue)}
.hoc-how b{font-size:18px}
.hoc-how span{font-size:14px;line-height:1.65;color:var(--h-muted)}
@media (max-width:900px){.hoc-how{grid-template-columns:1fr 1fr}}
.hoc-news{margin-top:88px;background:var(--h-navy);color:#fff;border-radius:24px;padding:52px 60px;display:grid;grid-template-columns:1fr 460px;gap:48px;align-items:center}
.hoc-news h2{margin:8px 0 12px;font-size:32px;letter-spacing:-1px;line-height:1.2}
.hoc-news p{margin:0;font-size:16px;line-height:1.7;color:#b9c7d8}
.hoc-news form{display:flex;flex-direction:column;gap:12px}
.hoc-news .row{display:flex;gap:8px;background:#fff;border-radius:999px;padding:6px}
.hoc-news input[type=email]{flex:1;border:0;outline:0;padding:0 16px;min-height:46px;background:transparent;color:#1f2d3d;font-size:15px;min-width:0}
.hoc-news label.hoc-consent{color:#b9c7d8}
.hoc-news .hoc-msg{color:#8fd9b4}
@media (max-width:900px){.hoc-news{grid-template-columns:1fr;padding:32px 24px}}
.hoc-foot{margin-top:88px;border-top:1px solid var(--h-line);padding:28px 0 40px;font-size:13px;color:var(--h-muted)}
.hoc-foot .hoc-wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
@media (max-width:1000px){.hoc-hero .hoc-wrap{grid-template-columns:1fr}.hoc-shot{display:none}.hoc-stats{grid-template-columns:1fr 1fr;margin:-40px 24px 0}.hoc-stats div:nth-child(2){border-right:0}}

/* ---- trang module ---- */
.hoc-mhero{background:var(--h-navy);color:#fff;padding:36px 0 56px}
.hoc-crumb{display:flex;gap:8px;font-size:13px;color:#8ea3bc;margin-bottom:24px;flex-wrap:wrap}
.hoc-crumb a{color:#b9c7d8!important}
.hoc-mhero-in{max-width:740px;display:flex;flex-direction:column;gap:18px}
.hoc-mhero .kick{font-size:13px;font-weight:700;letter-spacing:1.4px;color:var(--h-sand);text-transform:uppercase}
.hoc-mhero h1{margin:0;font-size:clamp(32px,4vw,46px);letter-spacing:-1.4px;line-height:1.12}
.hoc-mhero p{margin:0;font-size:18px;line-height:1.7;color:#b9c7d8}
.hoc-tags{display:flex;gap:8px;flex-wrap:wrap}
.hoc-tags span{font-size:13px;padding:6px 12px;border-radius:999px;background:#ffffff14;border:1px solid #ffffff24}
.hoc-mmeta{display:flex;gap:28px;flex-wrap:wrap;font-size:14px;color:#d6e0ec}
.hoc-mmeta b{color:#fff}
.hoc-mgrid{display:grid;grid-template-columns:1fr 370px;gap:48px;align-items:start}
.hoc-mmain{display:flex;flex-direction:column;gap:40px;padding:44px 0 80px;min-width:0}
.hoc-panel{background:var(--h-paper);border:1px solid var(--h-line);border-radius:16px}
.hoc-outcomes{padding:30px 34px}
.hoc-outcomes h2,.hoc-syl h2{margin:0 0 18px;font-size:24px;letter-spacing:-.5px}
.hoc-outcomes ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 30px}
.hoc-outcomes li{display:flex;gap:12px;font-size:15px;line-height:1.6}
.hoc-outcomes li svg{flex-shrink:0;margin-top:3px;color:var(--h-green)}
@media (max-width:760px){.hoc-outcomes ul{grid-template-columns:1fr}}
.hoc-syl-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}
.hoc-syl-head h2{margin:0}
.hoc-syl .hoc-panel{overflow:hidden}
.hoc-sgroup{border-bottom:1px solid var(--h-line-2)}.hoc-sgroup:last-child{border-bottom:0}
.hoc-sgroup>button{width:100%;display:flex;align-items:center;gap:16px;padding:18px 24px;border:0;background:none;text-align:left}
.hoc-sgroup>button:hover{background:var(--h-paper-2)}
.hoc-sgroup .code{width:48px;flex-shrink:0;font-size:13px;font-weight:700;color:var(--h-muted)}
.hoc-sgroup .code.b{color:var(--h-blue)}.hoc-sgroup .code.p{color:var(--h-sand-ink)}
.hoc-sgroup .name{flex:1;font-size:16px;font-weight:600}
.hoc-sgroup .cnt{font-size:13px;color:var(--h-muted)}
.hoc-sgroup .chev{transition:transform .15s;color:var(--h-muted)}
.hoc-sgroup.open .chev{transform:rotate(180deg)}
.hoc-sgroup.open{background:var(--h-paper-2)}
.hoc-slist{display:none;padding:0 24px 14px 88px}
.hoc-sgroup.open .hoc-slist{display:block}
.hoc-slist a{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:14px;color:var(--h-ink-2)!important}
.hoc-slist a:hover{color:var(--h-blue)!important}
.hoc-tag{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.hoc-tag.free{color:var(--h-green);background:var(--h-green-soft)}
.hoc-tag.done{color:var(--h-green)}
.hoc-lockic{color:var(--h-faint);flex-shrink:0}
.hoc-aside{position:sticky;top:88px;margin-top:-190px;background:var(--h-paper);border:1px solid var(--h-line);border-radius:18px;overflow:hidden;box-shadow:var(--h-shadow)}
.hoc-aside .hoc-cover{height:170px}
.hoc-aside-in{padding:24px 26px 28px;display:flex;flex-direction:column;gap:14px}
.hoc-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.hoc-price b{font-size:28px;letter-spacing:-.8px}
.hoc-price span{font-size:14px;color:var(--h-muted)}
.hoc-aside hr{border:0;border-top:1px solid var(--h-line-2);margin:4px 0;width:100%}
.hoc-aside h4{margin:0;font-size:12px;letter-spacing:1px;color:var(--h-muted);text-transform:uppercase}
.hoc-aside ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;font-size:14px}
.hoc-aside li{display:flex;gap:12px;align-items:center}
.hoc-aside li svg{flex-shrink:0;color:var(--h-ink)}
.hoc-aside .center{text-align:center;font-size:13px;color:var(--h-muted)}
@media (max-width:1000px){.hoc-mgrid{grid-template-columns:1fr}.hoc-aside{position:static;margin:24px 0 0}.hoc-slist{padding-left:24px}}

/* ---- trình đọc ---- */
.hoc-rtop{position:sticky;top:0;z-index:20;background:var(--h-paper);border-bottom:1px solid var(--h-line-2)}
.hoc-rtop .prog{height:3px;background:var(--h-line-2)}.hoc-rtop .prog i{display:block;height:3px;background:var(--h-blue);transition:width .3s}
.hoc-rtop-in{height:58px;display:flex;align-items:center;gap:16px;padding:0 20px}
.hoc-rtop-in .hoc-edit{min-height:36px;padding:0 14px;font-size:14px;white-space:nowrap}
.hoc-rtop .back{display:flex;align-items:center;gap:6px;color:var(--h-ink)!important;font-weight:600;font-size:14px;white-space:nowrap}
.hoc-rtop .sep{width:1px;height:22px;background:var(--h-line)}
.hoc-rtop .ttl{font-size:14px;color:var(--h-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.hoc-rtop .pos{margin-left:auto;font-size:13px;color:var(--h-muted);white-space:nowrap}
.hoc-rtop .pos b{color:var(--h-green)}
.hoc-rtop .hoc-btn{min-height:38px;padding:0 16px;font-size:14px}
.hoc-rtop .toc-btn{display:none}
.hoc-reader{display:grid;grid-template-columns:300px 1fr;min-height:calc(100vh - 61px)}
.hoc-outline{background:var(--h-bg);border-right:1px solid var(--h-line-2);padding:24px 16px;position:sticky;top:61px;height:calc(100vh - 61px);overflow:auto}
.hoc-outline .me{display:flex;gap:14px;align-items:center;padding:0 8px 16px}
.hoc-outline .me b{display:block;font-size:14px}.hoc-outline .me span{font-size:12px;color:var(--h-muted)}
.hoc-ol-sec>button{width:100%;display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border:0;background:none;border-radius:8px;text-align:left;font-size:13px;line-height:1.35;color:var(--h-ink)}
.hoc-ol-sec>button:hover{background:var(--h-paper)}
.hoc-ol-sec>button .c{width:34px;flex-shrink:0;font-weight:700;color:var(--h-faint)}
.hoc-ol-sec>button .n{flex:1}
.hoc-ol-sec.cur>button{color:var(--h-blue);font-weight:700}
.hoc-ol-sec.cur>button .c{color:var(--h-blue)}
.hoc-ol-list{display:none;padding:2px 0 8px 44px}
.hoc-ol-sec.open .hoc-ol-list{display:block}
.hoc-ol-list a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 10px;border-radius:6px;font-size:12.5px;line-height:1.4;color:var(--h-muted)!important}
.hoc-ol-list a:hover{background:var(--h-paper);color:var(--h-ink)!important}
.hoc-ol-list a.cur{background:var(--h-paper);color:var(--h-ink)!important;font-weight:600;box-shadow:inset 2px 0 0 var(--h-blue)}
.hoc-ol-list a.seen::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--h-green);flex-shrink:0}
.hoc-rmain{display:grid;grid-template-columns:minmax(0,720px) 250px;gap:52px;padding:52px 48px 0 72px;align-content:start}
.hoc-art-head{display:flex;flex-direction:column;gap:14px;margin-bottom:26px}
.hoc-art-head .k{font-size:12px;font-weight:700;letter-spacing:1.4px;color:var(--h-blue);text-transform:uppercase}
.hoc-art-head h1{margin:0;font-family:var(--h-serif);font-size:clamp(30px,3.4vw,42px);font-weight:600;letter-spacing:-.8px;line-height:1.15}
.hoc-art-head .from{font-size:13px;color:var(--h-muted)}
.hoc-margin{display:flex;flex-direction:column;gap:20px;padding-top:98px}
.hoc-mnote{border-left:2px solid var(--h-blue);padding:2px 0 2px 14px;font-size:13px;line-height:1.5;color:var(--h-ink-2)}
.hoc-mnote b{display:block;font-size:11px;letter-spacing:1.2px;color:var(--h-blue);text-transform:uppercase;margin-bottom:4px}
.hoc-mnote.alt{border-color:var(--h-sand)}.hoc-mnote.alt b{color:var(--h-sand-ink)}
.hoc-pager{display:flex;justify-content:space-between;gap:16px;padding:28px 0 64px;margin-top:36px;border-top:1px solid var(--h-line-2)}
.hoc-pager a{display:flex;flex-direction:column;gap:3px;max-width:48%;color:var(--h-ink)!important}
.hoc-pager a small{font-size:12px;color:var(--h-muted)}
.hoc-pager a b{font-size:15px;line-height:1.35}
.hoc-pager a.next{margin-left:auto;align-items:flex-end;text-align:right;padding:12px 20px;border-radius:14px;background:var(--h-blue);color:#fff!important}
.hoc-pager a.next small{color:#d4e4fd}
.hoc-pager a.next.locked{background:var(--h-navy)}
@media (max-width:1180px){.hoc-rmain{grid-template-columns:1fr;padding:40px 40px 0}.hoc-margin{padding-top:0;order:-1;flex-direction:row;flex-wrap:wrap;gap:12px}.hoc-margin .hoc-mnote{flex:1 1 260px}}
@media (max-width:860px){.hoc-reader{grid-template-columns:1fr}.hoc-outline{display:none;position:fixed;inset:61px 0 0 0;z-index:30;height:auto}.hoc-outline.show{display:block}.hoc-rtop .toc-btn{display:inline-flex}.hoc-rtop .ttl,.hoc-rtop .sep{display:none}.hoc-rmain{padding:28px 18px 0}}

/* ---- nội dung giáo trình (HTML từ scripts/training-import.py) ---- */
.hoc-art{font-family:var(--h-serif);font-size:18px;line-height:1.72;color:var(--h-ink)}
.hoc-art p{margin:0 0 16px}
.hoc-art .lead{font-size:20px;line-height:1.65;color:var(--h-ink-2);margin-bottom:22px}
.hoc-art h3{font-family:var(--h-sans);font-size:20px;letter-spacing:-.3px;margin:34px 0 12px}
.hoc-art h4{font-family:var(--h-sans)}
.hoc-art ul,.hoc-art ol{margin:0 0 18px;padding-left:24px}
.hoc-art li{margin-bottom:8px}
.hoc-art strong,.hoc-art b{font-weight:600}
.hoc-art a{text-decoration:none;font-weight:500}.hoc-art a:hover{text-decoration:underline;text-underline-offset:3px}
.hoc-art .box{border-radius:12px;padding:18px 22px;margin:24px 0;font-family:var(--h-sans);font-size:15.5px;line-height:1.6}
.hoc-art .box h4{margin:0 0 10px;font-size:12px;letter-spacing:1.3px;text-transform:uppercase}
.hoc-art .box ul,.hoc-art .box ol{margin-bottom:0}
.hoc-art .box p:last-child{margin-bottom:0}
.hoc-art .obj{background:var(--h-blue-soft)}.hoc-art .obj h4{color:var(--h-blue)}
.hoc-art .warn{background:var(--h-amber-soft)}.hoc-art .warn h4{color:var(--h-amber)}
.hoc-art .nexus{background:var(--h-paper-2);border:1px solid var(--h-line);position:relative;padding-left:62px}
.hoc-art .nexus::before{content:"";position:absolute;left:20px;top:18px;width:26px;height:26px;border-radius:7px;background:url(/bei-mark.png) center/cover}
.hoc-art .nexus h4{color:var(--h-navy)}
:root[data-theme=dark] .hoc-art .nexus h4{color:var(--h-blue)}
.hoc-art .sum{border:1px solid var(--h-line)}.hoc-art .sum h4{color:var(--h-muted)}
.hoc-art ul.check{list-style:none;padding-left:0}
.hoc-art ul.check li{position:relative;padding-left:30px}
.hoc-art ul.check li::before{content:"";position:absolute;left:2px;top:.4em;width:15px;height:15px;border:1.5px solid var(--h-blue);border-radius:4px}
.hoc-art .tw{overflow-x:auto;margin:20px 0 24px;border:1px solid var(--h-line);border-radius:12px;background:var(--h-paper)}
.hoc-art table{border-collapse:collapse;width:100%;font-family:var(--h-sans);font-size:14px;line-height:1.5}
.hoc-art caption{caption-side:top;text-align:left;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--h-muted);padding:12px 14px 4px}
.hoc-art th,.hoc-art td{padding:10px 14px;text-align:left;vertical-align:top;border-top:1px solid var(--h-line)}
.hoc-art thead th{background:var(--h-paper-2);font-weight:600;font-size:12.5px;color:var(--h-ink-2);border-top:0}
.hoc-art td.num,.hoc-art th.num{white-space:nowrap;font-variant-numeric:tabular-nums}
.hoc-art .wide table{min-width:720px}
.hoc-art figure{margin:24px 0}
.hoc-art .figwrap{overflow-x:auto}
.hoc-art figure svg{width:100%;height:auto;display:block;min-width:560px}
.hoc-art figcaption{font-family:var(--h-sans);font-size:13px;color:var(--h-muted);margin-top:8px}
.hoc-art .case{border:1px solid var(--h-line);border-radius:16px;padding:0;margin:8px 0 18px;background:var(--h-paper);font-size:18px}
.hoc-art .case>p{margin:0;padding:24px 26px 6px}
.hoc-art .quiz{padding-left:22px}
.hoc-art .quiz li{margin-bottom:14px}
.hoc-art .quiz .a{display:block;font-family:var(--h-sans);font-size:14px;color:var(--h-muted);margin-top:4px}
.hoc-art .src li{font-family:var(--h-sans);font-size:14px}
.hoc-art .hs-ink{color:var(--h-ink)}.hoc-art .hs-small{font-family:var(--h-sans);font-size:14px;color:var(--h-muted)}.hoc-art .hs-tiny{font-size:12px;color:var(--h-muted)}
.hoc-art svg .hs-f-ink{fill:var(--h-ink)}.hoc-art svg .hs-f-ink2{fill:var(--h-ink-2)}.hoc-art svg .hs-f-ink3{fill:var(--h-muted)}
.hoc-art svg .hs-f-paper{fill:var(--h-paper)}.hoc-art svg .hs-f-paper2{fill:var(--h-paper-2)}.hoc-art svg .hs-f-teal{fill:var(--h-blue)}.hoc-art svg .hs-f-tealsoft{fill:var(--h-blue-soft)}
.hoc-art svg .hs-s-ink3{stroke:var(--h-muted)}.hoc-art svg .hs-s-rule{stroke:var(--h-line)}.hoc-art svg .hs-s-teal{stroke:var(--h-blue)}

/* khoá đáp án */
.hoc-art .hoc-lock{display:block}
.hoc-art div.hoc-lock{margin:0 26px 22px;padding:16px 18px;border-radius:12px;background:var(--h-bg);font-family:var(--h-sans);font-size:14px}
.hoc-art div.hoc-lock.open{background:var(--h-green-soft);font-family:var(--h-serif);font-size:17px}
.hoc-art div.hoc-lock.open p:last-child{margin-bottom:0}
.hoc-art div.hoc-lock .lk{display:flex;gap:12px;align-items:center}
.hoc-art span.hoc-lock{color:var(--h-faint);font-style:italic}
.hoc-reveal{border:1.5px solid var(--h-line);border-radius:10px;background:var(--h-paper);padding:8px 14px;font-weight:600;font-size:14px;color:var(--h-blue)}
.hoc-think{display:flex;flex-direction:column;gap:8px;margin:0 26px 16px;font-family:var(--h-sans);font-size:13px;font-weight:600;color:var(--h-muted)}
.hoc-think textarea{border:1.5px solid var(--h-line);border-radius:12px;padding:12px 14px;font-size:15px;font-weight:400;color:var(--h-ink);background:var(--h-paper);resize:vertical;min-height:84px}

/* ---- cổng email / hồ sơ ---- */
.hoc-fade{position:relative;max-height:260px;overflow:hidden}
.hoc-fade::after{content:"";position:absolute;left:0;right:0;bottom:0;height:180px;background:linear-gradient(to bottom,transparent,var(--h-paper))}
.hoc-gate{border:1px solid var(--h-line);border-radius:20px;padding:34px 38px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--h-shadow);background:var(--h-paper);font-family:var(--h-sans);margin:8px 0 24px}
.hoc-gate .badge{align-self:flex-start;font-size:12px;font-weight:700;color:var(--h-green);background:var(--h-green-soft);padding:5px 10px;border-radius:999px}
.hoc-gate h2{margin:0;font-size:26px;letter-spacing:-.6px;line-height:1.25}
.hoc-gate>p{margin:0;font-size:16px;line-height:1.65;color:var(--h-muted)}
.hoc-gate .row{display:flex;gap:10px}
.hoc-input{flex:1;min-width:0;border:1.5px solid var(--h-line);border-radius:12px;padding:0 16px;min-height:52px;font-size:16px;background:var(--h-paper);color:var(--h-ink)}
.hoc-input:focus{border-color:var(--h-blue);outline:0}
select.hoc-input{padding:0 10px}
.hoc-consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.55;color:var(--h-ink-2)}
.hoc-consent input{width:18px;height:18px;margin:1px 0 0;flex-shrink:0;accent-color:var(--h-blue)}
.hoc-gate .perks{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding-top:16px;border-top:1px solid var(--h-line-2)}
.hoc-gate .perks b{display:block;font-size:14px}.hoc-gate .perks span{font-size:13px;color:var(--h-muted)}
.hoc-err{color:var(--h-red);font-size:14px;min-height:0}
.hoc-err:empty{display:none}
.hoc-msg{font-size:14px;color:var(--h-green)}
.hoc-msg:empty{display:none}
.hoc-form{display:flex;flex-direction:column;gap:14px}
.hoc-form label.f{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600}
.hoc-form .two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hoc-profile{border:1px solid var(--h-line);border-radius:18px;padding:26px 28px;background:var(--h-paper);box-shadow:var(--h-shadow);display:flex;flex-direction:column;gap:14px;font-family:var(--h-sans);margin:0 0 24px}
.hoc-profile .badge{align-self:flex-start;font-size:12px;font-weight:700;color:var(--h-blue);background:var(--h-blue-soft);padding:5px 10px;border-radius:999px}
.hoc-profile h3{margin:0;font-size:21px;letter-spacing:-.4px}
.hoc-profile p{margin:0;font-size:14px;color:var(--h-muted);line-height:1.6}
@media (max-width:640px){.hoc-gate{padding:24px 20px}.hoc-gate .row{flex-direction:column}.hoc-gate .perks{grid-template-columns:1fr}.hoc-form .two{grid-template-columns:1fr}}

/* ---- học tập của tôi / xác nhận ---- */
.hoc-page{max-width:1000px;margin:0 auto;padding:44px 24px 80px;display:flex;flex-direction:column;gap:24px}
.hoc-page h1{margin:0;font-size:32px;letter-spacing:-.8px}
.hoc-me{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start}
.hoc-me .hoc-panel{padding:24px}
.hoc-plist{display:flex;flex-direction:column}
.hoc-plist a{display:flex;align-items:center;gap:14px;padding:12px 8px;border-bottom:1px solid var(--h-line-2);color:var(--h-ink)!important}
.hoc-plist a:last-child{border-bottom:0}
.hoc-plist a b{display:block;font-size:14px}.hoc-plist a span{font-size:12px;color:var(--h-muted)}
.hoc-plist a .go{margin-left:auto;font-size:13px;font-weight:600;color:var(--h-blue)}
.hoc-kv{display:grid;grid-template-columns:120px 1fr;gap:8px 12px;font-size:14px;margin:12px 0}
.hoc-kv dt{color:var(--h-muted)}.hoc-kv dd{margin:0;font-weight:600}
.hoc-center{min-height:60vh;display:grid;place-items:center;text-align:center}
.hoc-center>div{max-width:480px;display:flex;flex-direction:column;gap:16px;align-items:center}
@media (max-width:800px){.hoc-me{grid-template-columns:1fr}}
.hoc-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--h-navy);color:#fff;padding:12px 18px;border-radius:12px;font-size:14px;z-index:50;box-shadow:var(--h-shadow)}
@media print{.hoc-top,.hoc-rtop,.hoc-outline,.hoc-pager{display:none}.hoc-reader{display:block}}
.hoc-avatar{color:#fff!important}
.hoc-me .hoc-panel h2{margin:0 0 12px;font-size:20px;letter-spacing:-.3px}
#me-side{display:flex;flex-direction:column;gap:16px}
#me-side .hoc-panel{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.hoc-plist a .go{white-space:nowrap}
:root[data-theme=dark] .hoc-btn.primary,:root[data-theme=dark] .hoc-pager a.next:not(.locked),:root[data-theme=dark] .hoc-avatar,:root[data-theme=dark] .hoc-rtop .hoc-avatar{color:#08182c!important}
:root[data-theme=dark] .hoc-pager a.next:not(.locked) small{color:#0b2340}
:root[data-theme=dark] .hoc-news .hoc-btn.primary{color:#08182c}

/* ---- chứng nhận song ngữ (khung 1600×1131, co giãn theo bề rộng: 1cqw = 16px ở khổ gốc) ---- */
.hoc-cert{container-type:inline-size;width:100%}
.hc{position:relative;aspect-ratio:1600/1131;background:#fbf8f1;color:#1b2a3d;overflow:hidden;font-family:var(--h-sans);box-shadow:0 30px 80px #0b234033;border-radius:4px}
.hc>svg.frame{position:absolute;inset:0;width:100%;height:100%}
.hc .serif{font-family:"Nexus Serif","Times New Roman",serif}
.hc-top{position:absolute;left:8.1%;right:8.1%;top:9.4%;display:flex;flex-direction:column;align-items:center;text-align:center}
.hc-logo{width:10.5cqw;height:auto}
.hc-tag{margin-top:.75cqw;font-size:.8cqw;font-weight:600;letter-spacing:.19cqw;color:#6b7686;text-transform:uppercase}
.hc-title{margin-top:1.5cqw;font-size:4cqw;font-weight:600;letter-spacing:.6cqw;line-height:1;color:#0b2340}
.hc-sub{margin-top:.75cqw;display:flex;align-items:center;gap:1.1cqw;font-size:1.05cqw;font-weight:600;letter-spacing:.38cqw;color:#9a7443}
.hc-sub i{width:5.6cqw;height:1px;background:#b08d57}
.hc-say{margin-top:1.5cqw;font-style:italic;font-size:1.5cqw;color:#4a5566}
.hc-say b{font-weight:400;color:#9aa3ae;margin:0 .45cqw}
.hc-name{margin-top:.3cqw;font-style:italic;font-weight:600;font-size:5.6cqw;line-height:1.1;color:#0b2340;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hc-name.sample{color:#8a93a0}
.hc-rule{width:38cqw;height:1px;background:#b08d57;margin-top:.2cqw}
.hc-org{margin-top:.6cqw;font-size:1cqw;color:#6b7686}
.hc-course{margin-top:.6cqw;font-size:2.35cqw;font-weight:700;line-height:1.2;color:#0b2340;max-width:70cqw}
.hc-course-vi{margin-top:.3cqw;font-size:1.75cqw;font-style:italic;font-weight:500;line-height:1.3;color:#33455c;max-width:70cqw}
.hc-facts{margin-top:1.1cqw;display:grid;grid-template-columns:repeat(3,1fr);width:65cqw;border-top:1px solid #d9ccb3;border-bottom:1px solid #d9ccb3}
.hc-facts>div{display:flex;flex-direction:column;gap:.25cqw;padding:.85cqw .6cqw;border-right:1px solid #e6dcc8}
.hc-facts>div:last-child{border-right:0}
.hc-facts small{font-size:.68cqw;font-weight:700;letter-spacing:.12cqw;color:#9a7443}
.hc-facts b{font-size:.93cqw;font-weight:600}
.hc-facts span{font-size:.8cqw;color:#6b7686}
.hc-sign{position:absolute;left:11.9%;bottom:12%;width:22.5%;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.25cqw}
.hc-sign .ln{width:18.75cqw;height:1px;background:#1b2a3d;margin-bottom:.4cqw}
.hc-sign b{font-size:1.05cqw}.hc-sign span{font-size:.8cqw;color:#4a5566}.hc-sign em{font-size:.8cqw;color:#6b7686}
.hc-seal{position:absolute;left:44.5%;bottom:9.2%;width:11%}
.hc-seal svg{width:100%;height:auto;display:block}
.hc-verify{position:absolute;right:11.9%;bottom:11.7%;display:flex;gap:1.1cqw;align-items:flex-end}
.hc-verify>div{display:flex;flex-direction:column;gap:.3cqw;text-align:right}
.hc-verify small{font-size:.68cqw;font-weight:700;letter-spacing:.12cqw;color:#9a7443}
.hc-verify b{font-size:.93cqw;letter-spacing:.06cqw}
.hc-verify span{font-size:.75cqw;color:#6b7686;max-width:17cqw;overflow-wrap:anywhere}
.hc-qr{width:6.75cqw;height:6.75cqw;background:#fff;border:1px solid #1b2a3d;padding:.35cqw;flex-shrink:0}
.hc-qr svg{width:100%;height:100%;display:block}
.hc-foot{position:absolute;left:0;right:0;bottom:8.5%;text-align:center;font-size:.68cqw;color:#8a93a0}
.hc-mark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-18deg);font-size:9cqw;font-weight:800;letter-spacing:1.5cqw;color:#0b234010;pointer-events:none;white-space:nowrap}
.hoc-cert-label{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:13px;color:var(--h-muted)}

/* chứng nhận trên trang chủ / module / học tập của tôi */
.hoc-certsec{display:grid;grid-template-columns:420px 1fr;gap:56px;align-items:center}
.hoc-certsec ul{list-style:none;margin:20px 0;padding:0;display:flex;flex-direction:column;gap:14px}
.hoc-certsec li{display:flex;gap:12px;font-size:16px;line-height:1.55}
.hoc-certsec li svg{flex-shrink:0;margin-top:3px;color:var(--h-green)}
.hoc-rule{border:1px solid var(--h-line);border-radius:14px;padding:16px 18px;background:var(--h-paper);font-size:14px;line-height:1.6;margin:0 0 20px}
.hoc-rule b{display:block;font-size:12px;letter-spacing:1.2px;color:var(--h-sand-ink);text-transform:uppercase;margin-bottom:4px}
.hoc-certsec .hoc-cert{transform:rotate(-1.2deg)}
@media (max-width:1000px){.hoc-certsec{grid-template-columns:1fr}.hoc-certsec .hoc-cert{transform:none}}
.hoc-aside .hoc-mini{border-top:1px solid var(--h-line-2);padding-top:14px;display:flex;flex-direction:column;gap:10px}
.hoc-aside .hoc-mini .hc{box-shadow:0 8px 20px #0b23401f}
.hoc-aside .hoc-mini p{margin:0;font-size:13px;color:var(--h-muted);line-height:1.55}
.hoc-certpage{max-width:1180px;margin:0 auto;padding:36px 24px 80px;display:flex;flex-direction:column;gap:22px}
.hoc-valid{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:14px;background:var(--h-green-soft);color:var(--h-green);font-weight:600;font-size:15px}
.hoc-certact{display:flex;gap:10px;flex-wrap:wrap}
.hoc-certact .hoc-btn{min-height:44px}
.hoc-plist .certbtn{white-space:nowrap}
@media print{
  @page{size:A4 landscape;margin:0}
  body.hoc-body{background:#fff}
  .hoc-certpage>*:not(.hoc-cert){display:none!important}
  .hoc-certpage{padding:0;max-width:none}
  .hc{box-shadow:none;border-radius:0;width:297mm;height:210mm;aspect-ratio:auto}
  .hoc-cert{width:297mm}
  .hoc-foot{display:none}
}
.hoc-plist .medal{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:var(--h-sand-soft);color:var(--h-sand-ink);flex-shrink:0}
.hoc-me .hoc-panel h2+.hoc-plist{margin-bottom:8px}
.hoc-me .hoc-plist+h2{margin-top:22px}

/* ---- Thư viện căn cứ pháp lý (/hoc/thu-vien) ---- */
.lv-hero{background:var(--h-paper);border-bottom:1px solid var(--h-line);padding:56px 0 36px}
.lv-hero h1{font-family:var(--h-serif);font-weight:600;font-size:40px;line-height:1.2;letter-spacing:-.5px;margin:10px 0 12px;color:var(--h-ink);max-width:820px}
.lv-hero p{max-width:760px;color:var(--h-ink-2);font-size:16px;line-height:1.65;margin:0 0 22px}
.lv-search{display:flex;gap:10px;max-width:820px}
.lv-search input{flex:1;min-width:0;height:56px;border:1px solid var(--h-line);border-radius:14px;padding:0 20px;font-size:17px;background:var(--h-paper-2);box-shadow:0 1px 2px #0b23400d}
.lv-search input:focus{outline:none;border-color:var(--h-blue);box-shadow:0 0 0 4px var(--h-blue-soft)}
.lv-search .hoc-btn{height:56px;border-radius:14px}
.lv-search.small{margin-top:18px}.lv-search.small input,.lv-search.small .hoc-btn{height:46px;font-size:15px}
.lv-examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;max-width:880px}
.lv-examples .hoc-chip{display:inline-flex;align-items:center;min-height:36px;font-size:13px;color:var(--h-ink-2)}
.lv-meta{display:block;margin-top:16px;font-size:13px;color:var(--h-muted)}
.lv-body{padding-top:36px;padding-bottom:64px}
.lv-group{margin-bottom:34px}
.lv-group h2,.lv-sec h2,.lv-side h2{font-size:13px;font-weight:700;letter-spacing:1.3px;text-transform:uppercase;color:var(--h-muted);margin:0 0 14px}
.lv-sec h2 small{font-weight:500;letter-spacing:0;text-transform:none;margin-left:8px;color:var(--h-faint)}
.lv-docs{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.lv-doc{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border:1px solid var(--h-line);border-radius:14px;background:var(--h-paper);color:var(--h-ink)!important;transition:border-color .15s,box-shadow .15s}
.lv-doc:hover{border-color:var(--h-blue);box-shadow:var(--h-shadow)}
.lv-doc b{font-size:15px}.lv-doc .t{font-size:13.5px;line-height:1.5;color:var(--h-ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lv-doc .m{font-size:12px;color:var(--h-green);font-weight:600}.lv-doc.wait .m{color:var(--h-amber)}
.lv-results{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:36px;align-items:start}
.lv-sec{margin-bottom:30px}
.lv-hit{display:block;padding:18px 20px;border:1px solid var(--h-line);border-radius:14px;background:var(--h-paper);margin-bottom:12px}
.lv-hit.direct{border-color:var(--h-blue);background:var(--h-blue-soft);color:var(--h-ink)!important}
.lv-hit.direct+.lv-used{margin:-4px 0 14px 4px}
.lv-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;color:var(--h-ink)!important}
.lv-head:hover b{color:var(--h-blue)}
.lv-ref{font-size:12.5px;font-weight:700;color:var(--h-blue);letter-spacing:.2px;white-space:nowrap}
.lv-hit b{font-size:16px;line-height:1.4}
.lv-tag{font-size:11px;font-weight:700;color:var(--h-green);background:var(--h-green-soft);border-radius:999px;padding:2px 8px}
.lv-snip{margin:10px 0 0;font-family:var(--h-serif);font-size:15.5px;line-height:1.7;color:var(--h-ink-2)}
.lv-snip mark,.lv-lesson mark{background:#fff1b8;color:inherit;border-radius:3px;padding:0 2px}
:root[data-theme=dark] .lv-snip mark,:root[data-theme=dark] .lv-lesson mark{background:#5a4a12}
.lv-used{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;font-size:12.5px}
.lv-used span{color:var(--h-muted);font-weight:600;margin-right:2px}
.lv-used a{border:1px solid var(--h-line);border-radius:999px;padding:3px 10px;background:var(--h-paper-2);color:var(--h-ink-2)!important;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lv-used a:hover{border-color:var(--h-blue);color:var(--h-blue)!important}
.lv-side{position:sticky;top:88px;display:flex;flex-direction:column;gap:10px}
.lv-lesson{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--h-line);border-radius:12px;background:var(--h-paper);color:var(--h-ink)!important}
.lv-lesson:hover{border-color:var(--h-blue)}
.lv-lesson small{font-size:11.5px;font-weight:700;color:var(--h-sand-ink);letter-spacing:.3px}
.lv-lesson b{font-size:14px;line-height:1.4}
.lv-lesson span{font-size:12.5px;line-height:1.5;color:var(--h-muted)}
.lv-note{padding:14px 18px;border-radius:12px;background:var(--h-amber-soft);color:var(--h-amber);font-size:14px;line-height:1.6;margin-bottom:22px}
.lv-empty{padding:48px 0;text-align:center}.lv-empty h2{font-size:22px;margin:0 0 8px}
.lv-crumb{display:flex;flex-wrap:wrap;gap:8px;font-size:13px;color:var(--h-muted);padding:22px 0 0}
.lv-docpage,.lv-artpage{padding-bottom:64px}
.lv-dochead{padding:18px 0 26px;border-bottom:1px solid var(--h-line);margin-bottom:22px}
.lv-dochead h1{font-family:var(--h-serif);font-weight:600;font-size:30px;line-height:1.3;margin:8px 0 12px;max-width:900px}
.lv-docmeta{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13.5px;color:var(--h-muted)}
.lv-tocs{columns:2 420px;column-gap:40px}
.lv-chap{break-after:avoid;font-size:13px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--h-navy-2);margin:22px 0 8px}
:root[data-theme=dark] .lv-chap{color:var(--h-ink-2)}
.lv-secn{break-after:avoid;font-size:12.5px;font-weight:600;color:var(--h-sand-ink);margin:12px 0 6px}
.lv-toc{display:flex;gap:10px;align-items:baseline;padding:7px 8px;border-radius:8px;color:var(--h-ink)!important;break-inside:avoid;font-size:14px;line-height:1.45}
.lv-toc:hover{background:var(--h-blue-soft)}
.lv-toc .n{flex:0 0 64px;font-weight:700;color:var(--h-blue);font-size:13px}
.lv-toc .t{flex:1}
.lv-toc .c{flex:none;font-size:11px;font-weight:700;color:var(--h-green);background:var(--h-green-soft);border-radius:999px;padding:1px 7px}
.lv-artgrid{display:grid;grid-template-columns:minmax(0,760px) 300px;gap:48px;padding-top:18px;align-items:start}
.lv-art h1{font-family:var(--h-serif);font-weight:600;font-size:30px;line-height:1.3;margin:8px 0 22px}
.lv-art h1 span{color:var(--h-blue)}
.lv-text{font-family:var(--h-serif);font-size:17px;line-height:1.75;color:var(--h-ink)}
.lv-text p{margin:0 0 10px}
.lv-text p.more{margin-top:-2px}
.lv-k,.lv-p{display:flex;gap:10px;border-radius:10px;padding:6px 10px;margin:0 -10px 6px;scroll-margin-top:96px}
.lv-k .kn,.lv-p .pn{flex:none;font-family:var(--h-sans);font-weight:700;font-size:14px;color:var(--h-blue);padding-top:3px;min-width:22px}
.lv-p{margin:4px 0 4px -10px}
.lv-k>div,.lv-p>div{flex:1;min-width:0}
.lv-k.hl,.lv-p.hl{background:#fff7d6;box-shadow:inset 3px 0 0 #e0b100}
:root[data-theme=dark] .lv-k.hl,:root[data-theme=dark] .lv-p.hl{background:#3a3212}
.lv-text a.cite{color:var(--h-blue);border-bottom:1px dotted currentColor}
.lv-pl p{margin:0 0 6px;font-size:15px}.lv-pl .row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:10px;border-bottom:1px solid var(--h-line-2);padding:6px 0;font-size:14px;font-family:var(--h-sans)}
.lv-pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:34px;border-top:1px solid var(--h-line);padding-top:20px}
.lv-pn a{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--h-line);border-radius:12px;color:var(--h-ink)!important}
.lv-pn a.next{text-align:right}.lv-pn a:hover{border-color:var(--h-blue)}
.lv-pn small{font-size:12px;color:var(--h-blue);font-weight:700}.lv-pn b{font-size:13.5px;line-height:1.4}
.lv-aside{position:sticky;top:88px;display:flex;flex-direction:column;gap:14px}
.lv-box{display:flex;flex-direction:column;gap:8px;padding:16px;border:1px solid var(--h-line);border-radius:14px;background:var(--h-paper);font-size:14px}
.lv-box>b{font-size:11.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--h-muted)}
.lv-box code{font-family:var(--h-mono);font-size:12.5px;background:var(--h-paper-2);border:1px solid var(--h-line-2);border-radius:8px;padding:8px 10px;line-height:1.5}
.lv-box .hoc-btn{min-height:38px;font-size:13.5px}
.lv-disc{font-size:12px;line-height:1.55;color:var(--h-faint);margin:0}
/* căn cứ trong bài học */
.hoc-art a.cite,.hoc-mnote a.cite{border-bottom:1px dotted currentColor}
.hoc-art a.cite:hover,.hoc-mnote a.cite:hover{background:var(--h-blue-soft);border-radius:3px}
.lv-drawer{position:fixed;top:0;right:0;bottom:0;z-index:60;width:min(460px,100vw);display:flex;flex-direction:column;background:var(--h-paper);border-left:1px solid var(--h-line);box-shadow:-24px 0 60px #0b234026}
.lv-dhead{display:flex;align-items:flex-start;gap:12px;padding:18px 20px;border-bottom:1px solid var(--h-line)}
.lv-dhead b{flex:1;font-size:16px;line-height:1.4}.lv-dhead small{display:block;font-size:12px;color:var(--h-blue);letter-spacing:.3px;margin-bottom:3px}
.lv-x{flex:none;width:36px;height:36px;border-radius:10px;border:1px solid var(--h-line);background:var(--h-paper)}
.lv-dbody{flex:1;overflow:auto;padding:16px 22px}
.lv-dbody .lv-text{font-size:15.5px}
.lv-dfoot{display:flex;align-items:center;gap:14px;padding:14px 20px;border-top:1px solid var(--h-line)}
.lv-dfoot .hoc-btn{min-height:42px}
@media (max-width:980px){.lv-results,.lv-artgrid{grid-template-columns:1fr}.lv-side,.lv-aside{position:static}.lv-hero h1{font-size:30px}}
@media (max-width:600px){.lv-search{flex-direction:column}.lv-hero{padding-top:36px}.lv-art h1,.lv-dochead h1{font-size:24px}.lv-text{font-size:16px}.lv-pn{grid-template-columns:1fr}}
.lv-hit,.lv-lesson,.lv-text,.lv-doc{overflow-wrap:anywhere}
@media (max-width:600px){.lv-ref{white-space:normal}.lv-hit{padding:14px}.lv-results{gap:20px}}
.lv-results>div{min-width:0}

/* ---- lộ trình module (trang chủ) ---- */
.hoc-road{background:var(--h-paper);border:1px solid var(--h-line);border-radius:24px;padding:34px 32px 32px;box-shadow:0 1px 2px #0b23400a}
.rm-phases{list-style:none;margin:0 0 22px;padding:0;display:grid;grid-template-columns:1fr 2fr 1fr 1fr;gap:16px;position:relative}
.rm-phases::before{content:"";position:absolute;left:14px;right:14px;top:14px;height:2px;background:linear-gradient(90deg,var(--h-blue),#6aa5ff 60%,var(--h-sand));opacity:.55}
.rm-phases li{position:relative;display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center}
.rm-dot{grid-row:span 2;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--h-paper);border:2px solid var(--h-blue);color:var(--h-blue);font-weight:800;font-size:13px;position:relative;z-index:1}
.rm-phases li:last-child .rm-dot{border-color:var(--h-sand);color:var(--h-sand-ink)}
.rm-phases b{font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--h-ink);padding-top:2px;background:var(--h-paper);justify-self:start;padding-right:8px;position:relative;z-index:1}
.rm-phases small{font-size:12.5px;color:var(--h-muted)}
.rm-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.rm-card{position:relative;display:flex;flex-direction:column;gap:12px;padding:18px 18px 16px;border:1px solid var(--h-line);border-radius:16px;background:var(--h-paper-2);color:var(--h-ink)!important;transition:transform .15s,border-color .15s,box-shadow .15s;min-height:236px}
.rm-card:hover{transform:translateY(-2px);border-color:var(--h-blue);box-shadow:var(--h-shadow)}
.rm-card.going{border-color:#9cc0ff}.rm-card.done{border-color:var(--h-green)}
.rm-no{display:flex;align-items:baseline;gap:8px}
.rm-no b{font-family:var(--h-serif);font-size:30px;line-height:1;font-weight:600;color:var(--h-blue);letter-spacing:-.5px}
.rm-no small{font-size:11px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--h-muted)}
.rm-ok{margin-left:auto;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--h-green-soft);color:var(--h-green)}
.rm-ok svg{width:14px;height:14px}
.rm-title{font-size:15.5px;font-weight:650;line-height:1.38;letter-spacing:-.1px}
.rm-steps{display:flex;flex-wrap:wrap;gap:5px}
.rm-steps i{font-style:normal;font-size:11.5px;font-weight:600;color:var(--h-ink-2);background:var(--h-paper);border:1px solid var(--h-line);border-radius:999px;padding:2px 8px}
.rm-meta{font-size:12.5px;color:var(--h-muted);margin-top:auto}
.rm-foot{display:flex;align-items:center;gap:10px;border-top:1px dashed var(--h-line);padding-top:12px;min-height:34px}
.rm-foot .hoc-bar{flex:1}
.rm-foot em{font-style:normal;font-size:12.5px;font-weight:700;color:var(--h-ink-2)}
.rm-foot em.go{display:inline-flex;align-items:center;gap:6px;color:var(--h-blue)}
.rm-foot em.go svg{width:14px;height:14px;transition:transform .15s}.rm-card:hover .rm-foot em.go svg{transform:translateX(3px)}
.rm-m6{margin-top:16px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;padding:20px 24px;border-radius:18px;background:linear-gradient(120deg,var(--h-navy),var(--h-navy-2));color:#fff!important;position:relative;overflow:hidden}
.rm-m6::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;border:28px solid #ffffff08}
.rm-no.light{flex-direction:column;gap:2px;padding-right:22px;border-right:1px solid #ffffff22}
.rm-no.light b{color:var(--h-sand);font-size:34px}.rm-no.light small{color:#c9d4e3}
.rm-m6-body{display:flex;flex-direction:column;gap:10px;min-width:0}
.rm-m6 .rm-title{font-size:17px;color:#fff}
.rm-rail{display:grid;grid-template-columns:repeat(5,1fr);position:relative;max-width:560px}
.rm-rail::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:linear-gradient(90deg,var(--h-sand),#ffffff40)}
.rm-rail i{position:relative;justify-self:center;font-style:normal;font-size:10.5px;font-weight:800;color:var(--h-navy);background:var(--h-sand);border-radius:999px;padding:1px 7px}
.rm-steps.light i{background:#ffffff12;border-color:#ffffff26;color:#dbe4f0}
.rm-steps.light i.iso{border-color:var(--h-sand);color:var(--h-sand)}
.rm-m6-go{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:14px;white-space:nowrap;background:#ffffff14;border:1px solid #ffffff2a;border-radius:999px;padding:10px 16px;position:relative;z-index:1}
.rm-m6:hover .rm-m6-go{background:#fff;color:var(--h-navy)}
@media (max-width:1100px){.rm-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.rm-phases{display:none}.rm-card{min-height:0}}
@media (max-width:700px){.hoc-road{padding:18px;border-radius:18px}.rm-grid{grid-template-columns:1fr}.rm-m6{grid-template-columns:1fr;gap:14px}.rm-no.light{flex-direction:row;border-right:0;padding-right:0}.rm-rail{display:none}}
.rm-phases li{align-items:start}
.rm-phases b{line-height:30px;padding-top:0}
.rm-phases small{grid-column:2;line-height:1.4}
@media (max-width:900px){.hoc-news{grid-template-columns:minmax(0,1fr);padding:28px 20px}.hoc-news h2{font-size:26px}}
.rm-phase{display:none;font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--h-sand-ink);margin-bottom:-6px}
@media (max-width:1100px){.rm-phase{display:block}}

/* ---- ôn tập ngắt quãng (/hoc/on-tap) ---- */
.rv-nav{display:inline-flex;align-items:center;gap:6px}
.rv-nav i{font-style:normal;min-width:20px;height:20px;border-radius:999px;background:var(--h-sand);color:var(--h-navy);font-size:11.5px;font-weight:800;display:grid;place-items:center;padding:0 6px}
.rv-banner{display:flex;align-items:center;gap:18px;padding:18px 22px;margin:0 0 22px;border-radius:16px;background:linear-gradient(120deg,var(--h-navy),var(--h-navy-2));color:#fff!important}
.rv-banner span{flex:1;display:flex;flex-direction:column;gap:4px}.rv-banner b{font-size:17px}.rv-banner small{color:#c9d4e3;font-size:13.5px;line-height:1.5}
.rv-banner em{font-style:normal;font-weight:700;display:inline-flex;align-items:center;gap:8px;background:var(--h-sand);color:var(--h-navy);border-radius:999px;padding:10px 18px;white-space:nowrap}
.rv-page{max-width:1200px}
.rv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:22px}
.rv-head h1{margin:6px 0 0}
.rv-stats{display:flex;gap:10px}
.rv-stats div{display:flex;flex-direction:column;align-items:center;min-width:104px;padding:12px 16px;border:1px solid var(--h-line);border-radius:14px;background:var(--h-paper)}
.rv-stats b{font-size:22px}.rv-stats span{font-size:12px;color:var(--h-muted)}
.rv-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:start}
.rv-card{background:var(--h-paper);border:1px solid var(--h-line);border-radius:20px;padding:26px 28px;box-shadow:var(--h-shadow)}
.rv-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px;color:var(--h-muted);margin-bottom:16px}
.rv-mod-chip{font-weight:700;color:var(--h-blue);background:var(--h-blue-soft);border-radius:999px;padding:2px 10px}
.rv-left{margin-left:auto}
.rv-front{font-size:18px;line-height:1.7}
.rv-front .lead{font-size:16px}
.rv-step{margin-top:20px;padding-top:16px;border-top:1px dashed var(--h-line)}
.rv-step p{margin:0 0 10px;font-weight:600;color:var(--h-ink-2)}
.rv-btns{display:flex;flex-wrap:wrap;gap:10px}
.rv-btns .hoc-btn{min-height:44px}
.rv-btns [aria-pressed=true]{border-color:var(--h-blue);background:var(--h-blue-soft);color:var(--h-blue)}
#rv-conf.picked .hoc-btn:not([aria-pressed=true]){opacity:.55}
.rv-btns .ok:hover{border-color:var(--h-green);color:var(--h-green)}.rv-btns .bad:hover{border-color:var(--h-red);color:var(--h-red)}.rv-btns .mid:hover{border-color:var(--h-amber);color:var(--h-amber)}
.rv-answer{margin-top:22px;padding:18px 20px;border-radius:14px;background:var(--h-green-soft);border:1px solid #bfe3cf}
:root[data-theme=dark] .rv-answer{border-color:#1f4a33}
.rv-answer h3{margin:0 0 8px;font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--h-green)}
.rv-answer .hoc-art{font-size:16px}
.rv-src{display:inline-block;margin-top:4px;font-size:14px;font-weight:600}
.rv-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:88px}
.rv-mod{display:grid;grid-template-columns:96px 1fr auto;align-items:center;gap:10px;font-size:13px;margin:8px 0}
.rv-risky a{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-top:1px solid var(--h-line-2);color:var(--h-ink)!important;font-size:13.5px;line-height:1.45}
.rv-risky small{color:var(--h-red);font-weight:700;font-size:11.5px}
.rv-how{margin:0;padding-left:18px;font-size:13.5px;line-height:1.6;color:var(--h-ink-2)}
.rv-end{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.rv-medal{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--h-green-soft);color:var(--h-green)}
.rv-endact{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:10px}
.rv-gate p{font-size:15px;line-height:1.6}
@media (max-width:980px){.rv-grid{grid-template-columns:1fr}.rv-side{position:static}.rv-card{padding:20px}.rv-banner{flex-direction:column;align-items:flex-start}}
@media (max-width:600px){.rv-stats div{min-width:0;flex:1;padding:10px}.rv-front{font-size:16.5px}}
.rv-side .hoc-panel,.rv-gate{background:var(--h-paper);border:1px solid var(--h-line);border-radius:16px;padding:18px 20px}
.rv-side .hoc-panel h2{font-size:12px;letter-spacing:1.2px;text-transform:uppercase;color:var(--h-muted);margin:0 0 10px}
.rv-side .hoc-panel p{font-size:13px;line-height:1.5;margin:0 0 6px}

/* ---- thanh trên cùng v2 (28/09) ---- */
.hoc-top{gap:22px;height:64px}
.ht-left{display:flex;align-items:center;gap:12px;flex:none}
.hoc-brand{font-size:16.5px}
.hoc-brand img{width:32px;height:32px;border-radius:50%;background:#fff;padding:1px}
.hoc-brand:hover{opacity:.85}
.ht-academy{color:inherit!important;font-size:14px;font-weight:600;opacity:.75;padding-left:12px;border-left:1px solid currentColor;line-height:18px}
.ht-academy:hover{opacity:1}
.hoc-nav{gap:4px;flex:1;min-width:0}
.hoc-nav a{padding:8px 11px;border-radius:8px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.hoc-nav a:hover{background:#ffffff14}
.hoc-top.light .hoc-nav a:hover{background:var(--h-line-2)}
.ht-count{font-style:normal;min-width:18px;height:18px;border-radius:999px;background:var(--h-sand);color:#0b2340;font-size:11px;font-weight:800;display:grid;place-items:center;padding:0 5px}
.ht-search{position:relative;display:flex;align-items:center;flex:0 1 240px;min-width:150px}
.ht-search svg{position:absolute;left:12px;opacity:.6;pointer-events:none}
.ht-search input{width:100%;height:38px;border-radius:999px;border:1px solid #ffffff2e;background:#ffffff12;color:inherit;padding:0 14px 0 34px;font-size:13.5px}
.ht-search input::placeholder{color:currentColor;opacity:.6}
.ht-search input:focus{outline:none;border-color:#ffffff80;background:#ffffff1f}
.hoc-top.light .ht-search input{border-color:var(--h-line);background:var(--h-bg)}
.hoc-top.light .ht-search input:focus{border-color:var(--h-blue);background:var(--h-paper);box-shadow:0 0 0 3px var(--h-blue-soft)}
.hoc-top-actions{gap:10px}
.ht-login{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border-radius:999px;border:1px solid #ffffff38;color:inherit!important;font-size:13.5px;font-weight:600;white-space:nowrap}
.ht-login:hover{background:#ffffff14}
.hoc-top.light .ht-login{border-color:var(--h-line)}.hoc-top.light .ht-login:hover{background:var(--h-bg);border-color:var(--h-faint)}
.ht-me{position:relative;display:flex;align-items:center;gap:10px;height:46px;padding:0 10px 0 5px;border-radius:999px;border:1px solid #ffffff2e;background:#ffffff0f;color:inherit;text-align:left}
.ht-me:hover,.ht-me[aria-expanded=true]{background:#ffffff1f}
.hoc-top.light .ht-me{border-color:var(--h-line);background:var(--h-paper)}
.hoc-top.light .ht-me:hover,.hoc-top.light .ht-me[aria-expanded=true]{border-color:var(--h-blue);box-shadow:0 0 0 3px var(--h-blue-soft)}
.ht-me .hoc-avatar{width:36px;height:36px}
.ht-me-t{display:flex;flex-direction:column;line-height:1.2}
.ht-me-t b{font-size:13.5px}.ht-me-t small{font-size:11.5px;opacity:.7;white-space:nowrap;max-width:150px;overflow:hidden;text-overflow:ellipsis}
.ht-me .chev{width:16px;height:16px;opacity:.6}
.ht-dot{position:absolute;top:-3px;left:28px;min-width:18px;height:18px;border-radius:999px;background:#e5484d;color:#fff;font-style:normal;font-size:10.5px;font-weight:800;display:grid;place-items:center;padding:0 4px;border:2px solid var(--h-navy)}
.hoc-top.light .ht-dot{border-color:var(--h-paper)}
@media (max-width:1380px){.ht-search{display:none}}
@media (max-width:1020px){.ht-login span{display:none}.ht-login{padding:0 11px}.hoc-nav a:nth-child(n+4){display:none}}
@media (max-width:900px){.ht-me-t,.ht-me .chev{display:none}.ht-me{padding:0 5px;height:44px}}
@media (max-width:520px){.ht-academy{display:none}}

/* ---- khung Học tập của tôi ---- */
.ht-hub{position:fixed;z-index:70;width:min(420px,calc(100vw - 24px));max-height:calc(100vh - 90px);overflow:auto;background:var(--h-paper);color:var(--h-ink);border:1px solid var(--h-line);border-radius:18px;box-shadow:0 24px 60px #0b234033;animation:hubIn .16s ease-out}
@keyframes hubIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.ht-hub{animation:none}}
.hub{display:flex;flex-direction:column;gap:14px;padding:18px}
.hub-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.hub-head small{font-size:12.5px;color:var(--h-muted)}
.hub-head b{display:block;font-size:16px;line-height:1.35;margin-top:2px;letter-spacing:-.2px}
.hub-kpi{display:flex;gap:12px;flex:none}
.hub-kpi span{display:flex;flex-direction:column;align-items:center;font-size:10.5px;color:var(--h-muted);text-transform:uppercase;letter-spacing:.6px}
.hub-kpi b{font-size:18px;color:var(--h-ink);letter-spacing:0;text-transform:none}
.hub-bar{height:6px;border-radius:999px;background:var(--h-line-2);overflow:hidden}.hub-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--h-blue),#5fb0ff)}
.hub-cont{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;align-items:center;padding:14px;border-radius:14px;background:linear-gradient(120deg,var(--h-navy),var(--h-navy-2));color:#fff!important}
.hub-cont .hoc-ring{grid-row:span 2}
.hub-cont-t{display:flex;flex-direction:column;gap:3px;min-width:0}
.hub-cont-t small{font-size:10.5px;font-weight:800;letter-spacing:1.2px;color:var(--h-sand)}
.hub-cont-t b{font-size:14.5px;line-height:1.35}
.hub-cont-t span{font-size:12.5px;color:#c9d4e3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.hub-cont em{grid-column:2;justify-self:start;font-style:normal;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;background:#fff;color:var(--h-navy);border-radius:999px;padding:6px 14px;margin-top:6px}
.hub-cont:hover em{background:var(--h-sand)}
.hub-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.hub-list a{display:flex;gap:12px;align-items:flex-start;padding:10px;border-radius:12px;color:var(--h-ink)!important}
.hub-list a:hover{background:var(--h-bg)}
.hub-list b{display:block;font-size:13.5px;line-height:1.35}.hub-list small{display:block;font-size:12.5px;color:var(--h-muted);line-height:1.45;margin-top:2px}
.hub-ic{flex:none;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--h-blue-soft);color:var(--h-blue)}
.hub-list .warn .hub-ic{background:var(--h-amber-soft);color:var(--h-amber)}
.hub-list .gold .hub-ic{background:#fdf1dc;color:#b7791f}
.hub-list .green .hub-ic{background:var(--h-green-soft);color:var(--h-green)}
.hub-list .done .hub-ic{background:var(--h-line-2);color:var(--h-muted)}
.hub-tease{display:flex;gap:12px;padding:14px;border-radius:14px;border:1px dashed #c9a86a;background:var(--h-sand-soft)}
.hub-q{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--h-sand);color:#0b2340}
.hub-tease small{font-size:10.5px;font-weight:800;letter-spacing:1.2px;color:var(--h-sand-ink)}
.hub-tease p{margin:4px 0 6px;font-family:var(--h-serif);font-size:15px;line-height:1.5;color:var(--h-ink)}
.hub-tease a{font-size:13px;font-weight:700}
.hub-foot{display:flex;flex-wrap:wrap;gap:4px 14px;border-top:1px solid var(--h-line);padding-top:12px;font-size:13px}
.hub-foot a,.hub-foot button{color:var(--h-ink-2)!important;border:0;background:none;padding:0;font-weight:600}
.hub-foot button{margin-left:auto;color:var(--h-muted)!important}
.hub.page{padding:22px;background:var(--h-paper);border:1px solid var(--h-line);border-radius:20px;margin-bottom:22px;display:grid;grid-template-columns:1.1fr 1fr;gap:16px 24px}
.hub.page .hub-head,.hub.page .hub-bar{grid-column:1/-1}
.hub.page .hub-head b{font-size:22px}
.hub.page .hub-tease{grid-column:1/-1}
@media (max-width:760px){.hub.page{grid-template-columns:1fr}}

/* ---- Thư viện v2 (28/09) ---- */
.lv-hero{position:relative;overflow:hidden;background:radial-gradient(1200px 400px at 85% -10%,#1d4f8f55,transparent 60%),linear-gradient(160deg,var(--h-navy) 0%,#0e2a4d 100%);color:#fff;border-bottom:0;padding:64px 0 44px}
.lv-hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(180deg,#000,transparent 90%);pointer-events:none}
.lv-hero-in{position:relative}
.lv-kicker{font-size:12px;font-weight:800;letter-spacing:1.8px;color:var(--h-sand)}
.lv-hero h1{font-family:var(--h-serif);font-weight:600;font-size:48px;line-height:1.12;letter-spacing:-1px;margin:14px 0 14px;color:#fff;max-width:760px}
.lv-hero h1 em{font-style:italic;color:#9cc4ff}
.lv-hero p{color:#c3cfdd;font-size:17px;max-width:680px;margin:0 0 28px}
.lv-hero .lv-search{position:relative;max-width:860px;background:#fff;border-radius:16px;padding:6px;box-shadow:0 18px 50px #00000040;gap:6px}
.lv-sicon{position:absolute;left:22px;top:50%;transform:translateY(-50%);color:#5b6b7f}
.lv-hero .lv-search input{height:56px;border:0;background:transparent;box-shadow:none;padding-left:48px;color:#1f2d3d;font-size:16.5px}
.lv-hero .lv-search input:focus{box-shadow:none}
.lv-hero .lv-search .hoc-btn{height:56px;padding:0 30px;font-size:15.5px}
.lv-hero .lv-examples{align-items:center;margin-top:16px;max-width:900px}
.lv-examples>span{font-size:13px;color:#9fb0c5;margin-right:4px}
.lv-pill{font-size:13px;padding:6px 12px;border-radius:999px;border:1px solid #ffffff2e;color:#dbe4f0!important;background:#ffffff0d}
.lv-pill:hover{background:#ffffff1f;border-color:#ffffff66}
.lv-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:40px;max-width:860px;border-top:1px solid #ffffff1f;padding-top:22px}
.lv-facts div{display:flex;flex-direction:column;gap:2px;padding-right:12px}
.lv-facts b{font-size:22px;letter-spacing:-.3px}.lv-facts span{font-size:13px;color:#9fb0c5}
.lv-meta{display:none}
.lv-home{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:32px;align-items:start}
.lv-ghead{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.lv-ghead h2{margin:0;font-family:var(--h-serif);font-size:24px;font-weight:600;letter-spacing:-.3px;text-transform:none;color:var(--h-ink)}
.lv-ghead span{font-size:13px;color:var(--h-muted)}
.lv-docs{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}
.lv-doc{padding:18px;border-radius:16px;gap:8px;box-shadow:0 1px 2px #0b23400a}
.lv-doc:hover{transform:translateY(-2px)}
.lv-dtop{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lv-dtop code{font-family:var(--h-mono);font-size:11.5px;color:var(--h-muted)}
.lv-tag{font-style:normal;font-size:11px;font-weight:800;letter-spacing:.4px;border-radius:6px;padding:2px 8px;text-transform:uppercase}
.lv-tag.luat{background:#fdecea;color:#b42318}.lv-tag.nd{background:var(--h-blue-soft);color:var(--h-blue)}.lv-tag.tt{background:var(--h-green-soft);color:var(--h-green)}.lv-tag.x{background:var(--h-line-2);color:var(--h-muted)}
.lv-doc b{font-size:16px}
.lv-doc .m{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--h-muted);font-weight:500;margin-top:auto;padding-top:8px;border-top:1px solid var(--h-line-2)}
.lv-doc .m .ok{color:var(--h-green);font-weight:700}.lv-doc .m .wait{color:var(--h-amber);font-weight:700}
.lv-tips{position:sticky;top:88px;background:var(--h-paper);border:1px solid var(--h-line);border-radius:16px;padding:20px}
.lv-tips h3{margin:0 0 10px;font-size:15px}
.lv-tips ol{margin:0 0 16px;padding-left:18px;display:flex;flex-direction:column;gap:10px;font-size:13.5px;line-height:1.55;color:var(--h-ink-2)}
.lv-tips b{color:var(--h-ink)}
@media (max-width:980px){.lv-home{grid-template-columns:1fr}.lv-tips{position:static}.lv-hero h1{font-size:36px}.lv-facts{grid-template-columns:repeat(2,1fr);gap:16px}}
@media (max-width:600px){.lv-hero{padding:40px 0 30px}.lv-hero h1{font-size:30px}.lv-hero .lv-search{flex-direction:row;flex-wrap:wrap}.lv-hero .lv-search input{height:50px;flex:1 1 100%}.lv-hero .lv-search .hoc-btn{height:46px;flex:1}.lv-sicon{top:31px}}
.hoc-nav{overflow:hidden}

/* ---- bài kiểm tra cuối module ---- */
.ex-page{max-width:880px}
.ex-card .ex-rules{font-size:13px;color:var(--h-muted);margin:0 0 8px}
.ex-card .ex-ok{display:flex;align-items:center;gap:6px;color:var(--h-green);font-weight:700;margin:0 0 10px}.ex-card .ex-ok svg{width:16px;height:16px}
.ex-card .ex-last{font-size:13px;margin:0 0 10px}
.ex-intro{background:var(--h-paper);border:1px solid var(--h-line);border-radius:20px;padding:32px;margin-top:14px}
.ex-intro h1{font-family:var(--h-serif);font-weight:600;font-size:32px;line-height:1.25;margin:8px 0 22px}
.ex-rules-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}
.ex-rules-grid div{border:1px solid var(--h-line);border-radius:14px;padding:14px;background:var(--h-paper-2);display:flex;flex-direction:column;gap:4px}
.ex-rules-grid b{font-size:26px;color:var(--h-blue);letter-spacing:-.5px}.ex-rules-grid span{font-size:13px;color:var(--h-muted);line-height:1.45}
.ex-tips{margin:0 0 22px;padding-left:18px;color:var(--h-ink-2);font-size:14.5px;line-height:1.7}
.ex-banner{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:14px;background:var(--h-amber-soft);color:var(--h-ink)}
.ex-banner.ok{background:var(--h-green-soft)}.ex-banner svg{width:22px;height:22px;flex:none}
.ex-banner div{flex:1;display:flex;flex-direction:column;gap:2px}.ex-banner span{font-size:14px;color:var(--h-ink-2)}
.ex-bar{position:sticky;top:64px;z-index:15;background:var(--h-paper);border-bottom:1px solid var(--h-line)}
.ex-bar-in{max-width:880px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;gap:18px}
.ex-bar-in b{font-size:15px}.ex-count{font-size:13.5px;color:var(--h-muted);flex:1}
.ex-time{font-family:var(--h-mono);font-size:20px;font-weight:700;padding:4px 12px;border-radius:10px;background:var(--h-blue-soft);color:var(--h-blue)}
.ex-time.warn{background:#fdecea;color:#b42318}
.ex-bar .hoc-btn{min-height:40px}
.ex-prog{height:3px;background:var(--h-line-2)}.ex-prog i{display:block;height:100%;width:0;background:var(--h-blue);transition:width .2s}
.ex-list{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:16px}
.ex-q{background:var(--h-paper);border:1px solid var(--h-line);border-radius:18px;padding:22px 24px;scroll-margin-top:140px}
.ex-qh{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.ex-qh span{font-size:12.5px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--h-muted)}
.ex-qh i{font-style:normal;font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 10px;background:var(--h-sand-soft);color:var(--h-sand-ink)}
.ex-qh i.good{background:var(--h-green-soft);color:var(--h-green)}.ex-qh i.bad{background:#fdecea;color:#b42318}
.ex-stem{font-family:var(--h-serif);font-size:18px;line-height:1.6;margin:0 0 14px}
.ex-opts{display:flex;flex-direction:column;gap:8px}
.ex-opt{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1.5px solid var(--h-line);border-radius:12px;cursor:pointer;font-size:15px;line-height:1.5;background:var(--h-paper)}
.ex-opt:hover{border-color:var(--h-faint)}
.ex-opt input{position:absolute;opacity:0;pointer-events:none}
.ex-l{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:1.5px solid var(--h-line);font-size:12.5px;font-weight:800;color:var(--h-muted)}
.ex-opt:has(input:checked){border-color:var(--h-blue);background:var(--h-blue-soft)}
.ex-opt:has(input:checked) .ex-l{background:var(--h-blue);border-color:var(--h-blue);color:#fff}
.ex-opt:has(input:focus-visible){outline:3px solid var(--h-blue);outline-offset:2px}
.ex-end{display:flex;justify-content:center;margin:26px 0 10px}
.ex-result{display:flex;align-items:center;gap:28px;background:var(--h-paper);border:1px solid var(--h-line);border-radius:22px;padding:30px;margin-top:14px}
.ex-result.ok{border-color:#9fdcbc;background:linear-gradient(135deg,var(--h-green-soft),var(--h-paper) 60%)}
.ex-result h1{font-family:var(--h-serif);font-weight:600;font-size:30px;margin:6px 0 6px}
.ex-score{font-size:15px;margin:0 0 6px}.ex-score b{font-size:22px}
.ex-acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.ex-rh{font-size:13px;letter-spacing:1.2px;text-transform:uppercase;color:var(--h-muted);margin:30px 0 0}
.review .ex-opt{cursor:default}
.review .ex-opt.right{border-color:var(--h-green);background:var(--h-green-soft)}.review .ex-opt.right .ex-l{background:var(--h-green);border-color:var(--h-green);color:#fff}
.review .ex-opt.wrong{border-color:#e5484d;background:#fdecea}.review .ex-opt.wrong .ex-l{background:#e5484d;border-color:#e5484d;color:#fff}
:root[data-theme=dark] .review .ex-opt.wrong{background:#3a1d1a}
.review .ex-opt em{margin-left:auto;font-style:normal;font-size:12px;font-weight:700;white-space:nowrap;color:var(--h-muted)}
.ex-why{margin-top:12px;padding:12px 14px;border-radius:12px;background:var(--h-bg);font-size:14.5px;line-height:1.6}
.ex-why p{margin:0 0 6px}.ex-src{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13.5px;color:var(--h-muted)}
.ex-src a{font-weight:600}
@media (max-width:700px){.ex-rules-grid{grid-template-columns:1fr 1fr}.ex-result{flex-direction:column;text-align:center;align-items:center}.ex-acts{justify-content:center}.ex-intro{padding:20px}.ex-q{padding:16px}.ex-bar-in{gap:10px;padding:8px 14px}.ex-bar-in b{display:none}}

/* ---- tra luật trên trang chủ + điện thoại (28/09) ---- */
.hero-find{margin:26px 0 14px;max-width:600px;padding:16px;border-radius:18px;background:#ffffff10;border:1px solid #ffffff24;backdrop-filter:blur(4px)}
.hf-label{display:block;font-size:13px;color:#c3cfdd;margin-bottom:10px}.hf-label b{color:#fff;font-size:14px}
.hf-box{position:relative;display:flex;gap:6px;background:#fff;border-radius:14px;padding:5px}
.hf-box svg{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:#5b6b7f}
.hf-box input{flex:1;min-width:0;height:46px;border:0;outline:0;background:transparent;padding-left:40px;font-size:15.5px;color:#1f2d3d}
.hf-box .hoc-btn{min-height:46px;height:46px;padding:0 22px;border-radius:11px}
.hf-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.hf-chips a{font-size:12.5px;padding:5px 11px;border-radius:999px;border:1px solid #ffffff2e;color:#dbe4f0!important;background:#ffffff0a}
.hf-chips a:hover{background:#ffffff1f}
.ht-find{display:none;align-items:center;gap:7px;height:38px;padding:0 13px;border-radius:999px;background:var(--h-sand);color:#0b2340!important;font-size:13.5px;font-weight:700;white-space:nowrap}
@media (max-width:1380px){.ht-find{display:inline-flex}}
.hoc-mnav{display:none}
@media (max-width:760px){
  .hoc-mnav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(4,1fr);background:var(--h-paper);border-top:1px solid var(--h-line);padding:6px 6px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -8px 24px #0b234014}
  .hoc-mnav a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:600;color:var(--h-muted)!important;padding:4px 0;border-radius:12px}
  .hoc-mnav a.on{color:var(--h-blue)!important}
  .hoc-mnav .mi{position:relative;display:grid;place-items:center;width:44px;height:30px;border-radius:999px}
  .hoc-mnav a.on .mi{background:var(--h-blue-soft)}
  .hoc-mnav a.find .mi{width:52px;height:34px;background:var(--h-navy);color:#fff;margin-top:-2px}
  .hoc-mnav a.find.on .mi{background:var(--h-blue)}
  .hoc-mnav .mi i{position:absolute;top:-4px;right:2px;min-width:17px;height:17px;border-radius:999px;background:#e5484d;color:#fff;font-style:normal;font-size:10px;font-weight:800;display:grid;place-items:center;padding:0 4px}
  body.hoc-body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}
  .ht-find span{display:none}.ht-find{padding:0 11px}
  .hoc-top-actions>.hoc-btn{display:none}
  .hero-find{padding:12px;margin-top:22px}
  .hf-box .hoc-btn{padding:0 16px}
  .lv-tips{display:none}
}
@media (max-width:760px){
  .hoc-hero-text{display:flex;flex-direction:column}
  .hoc-hero-text>.hoc-pill{order:0;align-self:flex-start}.hoc-hero-text>h1{order:1}.hoc-hero-text>.hero-find{order:2;margin:4px 0 18px}.hoc-hero-text>p{order:3}.hoc-hero-text>.hoc-hero-cta{order:4}.hoc-hero-text>.hoc-hero-note{order:5}
  .hoc-hero h1{font-size:34px}
  .hf-chips a:last-child{background:var(--h-sand);color:#0b2340!important;border-color:var(--h-sand);font-weight:700}
}
@media (max-width:600px){
  .lv-hero p{display:none}
  .lv-hero h1{margin-bottom:18px}
  .lv-hero .lv-examples{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-24px;padding-right:24px}
  .lv-hero .lv-examples::-webkit-scrollbar{display:none}
  .lv-pill{white-space:nowrap;flex:none}.lv-examples>span{flex:none}
  .lv-facts{margin-top:24px}
}
/* ---------- Tạo hồ sơ học viên: hỏi–đáp từng câu ---------- */
body.hoc-noscroll{overflow:hidden}
.hoc-ob{position:fixed;inset:0;z-index:100;display:grid;grid-template-columns:minmax(320px,420px) 1fr;background:var(--h-paper);color:var(--h-ink);font-family:var(--h-sans)}
.ob-side{background:var(--h-navy);color:#e8eef6;padding:28px 32px;display:flex;flex-direction:column;gap:26px;overflow:auto}
.ob-brand{display:flex;align-items:center;gap:8px;color:#fff!important;font-size:15px}.ob-brand b{font-weight:700}.ob-brand img{border-radius:50%}
.ob-hello h2{margin:0 0 6px;font-size:24px;font-weight:700;color:#fff;letter-spacing:-.01em}.ob-hello p{margin:0;color:#b9c6d8;font-size:14.5px;line-height:1.55}
.ob-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.ob-steps li{display:grid;grid-template-columns:28px 1fr;column-gap:12px;align-items:center;padding:7px 0;color:#8ea0b8;font-size:14px;font-weight:600}
.ob-steps li>span{grid-row:span 2;width:26px;height:26px;border-radius:50%;border:1.5px solid #3a5579;display:grid;place-items:center;font-size:12px}
.ob-steps li>span svg{width:14px;height:14px}
.ob-steps li small{grid-column:2;font-weight:400;color:#8ea0b8;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ob-steps li.done{color:#dfe7f1}.ob-steps li.done>span{background:#1f9d62;border-color:#1f9d62;color:#fff}
.ob-steps li.now{color:#fff}.ob-steps li.now>span{border-color:var(--h-sand);color:var(--h-sand);box-shadow:0 0 0 4px #e9b48c26}
.ob-cert{margin:0;margin-top:auto}.ob-cert figcaption{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#8ea0b8;margin-bottom:8px;font-weight:700}
.ob-cert-in{background:#fffdf8;color:#1f2d3d;border-radius:10px;padding:16px 18px;border:1px solid #e9dcc5;box-shadow:0 12px 30px #0005;position:relative}
.ob-cert-in::before{content:"";position:absolute;inset:5px;border:1px solid #e9b48c80;border-radius:7px;pointer-events:none}
.ob-cert-top{display:flex;flex-direction:column;gap:1px}.ob-cert-top span{font-size:11px;font-weight:800;letter-spacing:.12em;color:#a8683f}.ob-cert-top i{font-family:var(--h-serif);font-size:12px;color:#8a7a66}
.ob-cert-who{display:flex;align-items:center;gap:12px;margin:14px 0 12px}
.ob-ini{flex:none;width:40px;height:40px;border-radius:50%;background:#0b2340;color:#e9b48c;display:grid;place-items:center;font-weight:700;font-size:14px}
.ob-cert-who b{display:block;font-family:var(--h-serif);font-size:19px;line-height:1.25;color:#0b2340;word-break:break-word}
.ob-cert-who small{display:block;font-size:12.5px;color:#5b6b7f;margin-top:2px}
.ob-cert-who .ph{color:#b3bcc8!important;font-style:italic}
.ob-cert-foot{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:#8a7a66;border-top:1px dashed #e3d6bf;padding-top:8px}
.ob-trust{display:flex;gap:8px;align-items:flex-start;margin:0;font-size:12.5px;color:#8ea0b8}.ob-trust svg{flex:none;margin-top:2px}
.ob-main{position:relative;display:flex;align-items:center;justify-content:center;padding:56px 32px 32px;overflow:auto;background:var(--h-paper)}
.ob-bar{position:absolute;left:0;right:0;top:0;height:4px;background:var(--h-line-2)}.ob-bar i{display:block;height:100%;background:var(--h-blue);border-radius:0 4px 4px 0;transition:width .35s ease}
.hoc-ob .ob-close{position:absolute;top:16px;right:18px;border:0;background:transparent;color:var(--h-muted);font:600 14px var(--h-sans);cursor:pointer;padding:8px 10px;border-radius:8px}.hoc-ob .ob-close:hover{background:var(--h-bg);color:var(--h-ink)}
.ob-card{width:100%;max-width:600px}
.ob-card.in-r{animation:ob-r .28s ease}.ob-card.in-l{animation:ob-l .28s ease}
@keyframes ob-r{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}@keyframes ob-l{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.ob-card.in-r,.ob-card.in-l{animation:none}.ob-bar i{transition:none}}
.ob-k{margin:0 0 10px;font-size:13px;font-weight:700;color:var(--h-blue);letter-spacing:.02em}
.ob-card h1{margin:0 0 10px;font-size:30px;line-height:1.2;letter-spacing:-.02em;font-weight:700;color:var(--h-ink)}
.ob-hint{margin:0 0 26px;color:var(--h-muted);font-size:15.5px;line-height:1.55}
.hoc-ob .ob-input{width:100%;height:60px;border:1.5px solid var(--h-line);border-radius:12px;padding:0 18px;font:500 20px var(--h-sans);color:var(--h-ink);background:var(--h-paper);transition:border-color .15s,box-shadow .15s}
.hoc-ob .ob-input::placeholder{color:var(--h-faint);font-weight:400}
.hoc-ob .ob-input:focus{outline:0;border-color:var(--h-blue);box-shadow:0 0 0 4px color-mix(in srgb,var(--h-blue) 18%,transparent)}
.ob-opts{display:flex;flex-direction:column;gap:10px}.ob-opts.grid{display:grid;grid-template-columns:1fr 1fr}
.ob-opt{position:relative;display:flex;align-items:center;gap:14px;min-height:64px;padding:12px 16px;border:1.5px solid var(--h-line);border-radius:12px;cursor:pointer;background:var(--h-paper);transition:border-color .15s,background .15s,box-shadow .15s}
.ob-opt:hover{border-color:color-mix(in srgb,var(--h-blue) 45%,var(--h-line));background:var(--h-paper-2)}
.ob-opt input{position:absolute;opacity:0;pointer-events:none}
.ob-opt kbd{flex:none;width:26px;height:26px;border-radius:7px;border:1px solid var(--h-line);display:grid;place-items:center;font:600 12px var(--h-sans);color:var(--h-muted);background:var(--h-bg)}
.ob-opt span{flex:1;min-width:0;display:flex;flex-direction:column}.ob-opt b{font-size:15.5px;font-weight:600}.ob-opt small{color:var(--h-muted);font-size:13px;margin-top:2px}
.ob-opt em{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--h-line);display:grid;place-items:center;color:transparent}.ob-opt em svg{width:13px;height:13px}
.ob-opt.on{border-color:var(--h-blue);background:var(--h-blue-soft);box-shadow:0 0 0 1px var(--h-blue) inset}
.ob-opt.on kbd{background:var(--h-blue);border-color:var(--h-blue);color:#fff}.ob-opt.on em{background:var(--h-blue);border-color:var(--h-blue);color:#fff}
.ob-opt:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--h-blue) 40%,transparent);outline-offset:2px}
.ob-err{min-height:22px;margin:10px 0 0;color:var(--h-red);font-size:14px}
.ob-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}
.hoc-ob .ob-back{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--h-muted);font:600 15px var(--h-sans);cursor:pointer;padding:10px 8px;border-radius:8px}.hoc-ob .ob-back:hover{color:var(--h-ink);background:var(--h-bg)}
.ob-tip{color:var(--h-faint);font-size:12.5px}.ob-tip kbd{font:600 11px var(--h-sans);border:1px solid var(--h-line);border-radius:5px;padding:1px 5px;background:var(--h-bg);color:var(--h-muted)}
.hoc-ob .ob-next{display:inline-flex;align-items:center;gap:8px;height:50px;padding:0 22px;border:0;border-radius:12px;background:var(--h-blue);color:#fff;font:700 16px var(--h-sans);cursor:pointer;transition:background .15s,transform .1s}
.hoc-ob .ob-next:hover{background:var(--h-blue-2)}.hoc-ob .ob-next:active{transform:translateY(1px)}.hoc-ob .ob-next:disabled{background:var(--h-line);color:var(--h-faint);cursor:not-allowed}
.hoc-ob .ob-next.busy{opacity:.7;pointer-events:none}
:root[data-theme=dark] .hoc-ob .ob-next:not(:disabled){color:#08182c}
.ob-done{text-align:left}.ob-tick{width:56px;height:56px;border-radius:50%;background:var(--h-green-soft);color:var(--h-green);display:grid;place-items:center;margin-bottom:18px}.ob-tick svg{width:28px;height:28px}
.ob-perks{list-style:none;margin:0 0 26px;padding:0;display:flex;flex-direction:column;gap:10px}.ob-perks li{display:flex;gap:10px;align-items:flex-start;font-size:15px}.ob-perks svg{flex:none;color:var(--h-green);margin-top:2px}
.ob-cta h3{margin-top:6px}.ob-cta .hoc-btn svg{margin-left:4px;vertical-align:-3px}
@media(max-width:900px){
  .hoc-ob{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .ob-side{padding:14px 16px;gap:0;flex-direction:row;align-items:center;justify-content:space-between}
  .ob-hello,.ob-steps,.ob-cert,.ob-trust{display:none}
  .ob-main{align-items:flex-start;padding:40px 16px calc(96px + env(safe-area-inset-bottom))}
  .hoc-ob .ob-close{top:10px;right:8px}
  .ob-card h1{font-size:24px}.ob-hint{font-size:15px;margin-bottom:20px}
  .ob-opts.grid{grid-template-columns:1fr}.ob-opt{min-height:58px}.ob-opt kbd{display:none}.ob-tip{display:none}
  .ob-nav{position:fixed;left:0;right:0;bottom:0;margin:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--h-paper);border-top:1px solid var(--h-line)}
  .hoc-ob .ob-next{flex:1;justify-content:center}
  .hoc-ob .ob-input{font-size:18px;height:56px}
}

/* ---- học viên báo lỗi / góp ý nội dung ---- */
.hoc-report-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:28px 0 8px;padding-top:18px;border-top:1px dashed var(--h-line);font-size:13.5px}
.hoc-report-btn,.hoc-pick{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--h-line);background:var(--h-paper);color:var(--h-ink-2);border-radius:999px;padding:8px 14px;font-size:13.5px;font-weight:600}
.hoc-report-btn:hover{border-color:var(--h-sand-ink);color:var(--h-sand-ink)}
.hoc-pick{position:absolute;z-index:40;background:var(--h-navy);color:#fff;border-color:var(--h-navy);box-shadow:var(--h-shadow)}
.hoc-rep{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px;background:#0b234073;font-family:var(--h-sans)}
.rep-card{position:relative;width:100%;max-width:580px;max-height:calc(100vh - 32px);overflow:auto;background:var(--h-paper);color:var(--h-ink);border-radius:18px;padding:26px 26px 20px;box-shadow:var(--h-shadow)}
.rep-card h2{margin:10px 0 4px;font-family:var(--h-serif);font-weight:600;font-size:24px}
.rep-card .badge{font-size:12px;font-weight:700;letter-spacing:1px;color:var(--h-sand-ink);text-transform:uppercase}
.rep-x{position:absolute;right:14px;top:10px;border:0;background:none;font-size:26px;line-height:1;color:var(--h-muted)}
.rep-quote{display:flex;gap:8px;align-items:flex-start;margin:10px 0;padding:8px 12px;border-left:3px solid var(--h-sand);background:var(--h-sand-soft);font-family:var(--h-serif);font-style:italic;font-size:14.5px}
.rep-quote span{flex:1}.rep-unq{border:0;background:none;color:var(--h-muted);font-size:18px;line-height:1}
.rep-kinds{border:0;padding:0;margin:12px 0;display:flex;flex-wrap:wrap;gap:8px}
.rep-kinds legend{font-size:13px;font-weight:700;margin-bottom:8px;color:var(--h-ink-2)}
.rep-kinds label{display:inline-flex}.rep-kinds input{position:absolute;opacity:0}
.rep-kinds span{padding:7px 12px;border:1px solid var(--h-line);border-radius:999px;font-size:13.5px;cursor:pointer;background:var(--h-paper)}
.rep-kinds input:checked+span{background:var(--h-blue-soft);border-color:var(--h-blue);color:var(--h-blue);font-weight:600}
.rep-kinds input:focus-visible+span{outline:3px solid var(--h-blue);outline-offset:2px}
.rep-f{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--h-ink-2);margin:10px 0}
.rep-f textarea,.rep-f input{font-weight:400;font-size:15px;padding:10px 12px;border:1px solid var(--h-line);border-radius:10px;background:var(--h-paper);color:var(--h-ink)}
.rep-note{font-size:13px}.rep-acts{display:flex;gap:10px;justify-content:flex-end;margin-top:6px}
.hoc-myrep article{border-top:1px solid var(--h-line-2);padding:10px 0;font-size:14px}
.hoc-myrep header{display:flex;justify-content:space-between;gap:8px;font-weight:600}
.hoc-myrep header i{font-style:normal;font-size:12px;padding:2px 8px;border-radius:999px;background:var(--h-line-2);white-space:nowrap}
.hoc-myrep .st-fixed{background:var(--h-green-soft);color:var(--h-green)}.hoc-myrep .st-accepted{background:var(--h-blue-soft);color:var(--h-blue)}
.hoc-myrep p{margin:6px 0}.rep-ans{background:var(--h-paper-2);border-left:3px solid var(--h-blue);padding:6px 10px;font-size:13.5px}.rep-ans b{display:block;font-size:12px;color:var(--h-blue)}
