/* portal.css – giao diện trang chủ kiểu VietJack (header, thanh môn + mega menu, tab, thẻ dịch vụ, danh mục, hỏi đáp) */
:root{
  --brand:#1a73e8; --brand-dark:#0f4fb0; --accent:#ff7a00; --on-brand:#ffffff;
  --bg:#f5f7fb; --card:#ffffff; --text:#1f2937; --muted:#5b6574; --line:#e5e7eb;
  --soft:#eef4ff; --ok:#16794c; --ok-soft:#e3f5ec; --warn-soft:#fff3e6;
  --on:#0a5db5; --on-s:#d7eafe; --off:#76530c; --off-s:#f8ebc8;
  --radius:10px; --gap:16px; --shadow:0 4px 14px rgba(26,115,232,.12);
  --chn:#C4432E; --eng:#1D63C8; --ssa:#0B7F8C; --enp:#5246C4; --ecr:#A55F00;
  --ui:"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  color-scheme:dark; --brand:#4da3f5; --brand-dark:#2a74c4; --accent:#ffa24d; --on-brand:#06213d;
  --bg:#0c1522; --card:#121f31; --text:#e4eefb; --muted:#9db3cc; --line:#223650; --soft:#14283f; --ok:#5ccb92; --ok-soft:#0e3223; --warn-soft:#38290f;
  --on:#8cc4fa; --on-s:#10304f; --off:#e9cb7e; --off-s:#3a2f10; --shadow:0 4px 14px rgba(0,0,0,.4);
  --chn:#ff8a74; --eng:#7db0ff; --ssa:#4fd0db; --enp:#a59bff; --ecr:#f5b64f;}}
:root[data-theme="dark"]{
  color-scheme:dark; --brand:#4da3f5; --brand-dark:#2a74c4; --accent:#ffa24d; --on-brand:#06213d;
  --bg:#0c1522; --card:#121f31; --text:#e4eefb; --muted:#9db3cc; --line:#223650; --soft:#14283f; --ok:#5ccb92; --ok-soft:#0e3223; --warn-soft:#38290f;
  --on:#8cc4fa; --on-s:#10304f; --off:#e9cb7e; --off-s:#3a2f10; --shadow:0 4px 14px rgba(0,0,0,.4);
  --chn:#ff8a74; --eng:#7db0ff; --ssa:#4fd0db; --enp:#a59bff; --ecr:#f5b64f;}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:128px}
body{font-family:var(--ui);background:var(--bg);color:var(--text);line-height:1.55;font-size:15px}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font-family:inherit;color:inherit}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.container{max-width:1200px;margin:0 auto;padding:0 var(--gap)}
.skip{position:absolute;left:-999px;top:0;background:var(--brand);color:#fff;padding:8px 14px;z-index:100}
.skip:focus{left:8px;top:8px}
.muted{color:var(--muted)} .small{font-size:12.5px}
.c-chn{--c:var(--chn)} .c-eng{--c:var(--eng)} .c-ssa{--c:var(--ssa)} .c-enp{--c:var(--enp)} .c-ecr{--c:var(--ecr)}

/* ===== Header ===== */
.topbar{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:60}
.topbar .container{display:flex;align-items:center;gap:var(--gap);height:60px}
.logo{font-weight:800;font-size:21px;color:var(--brand);letter-spacing:-.4px;white-space:nowrap;line-height:1.1}
.logo span{color:var(--accent)} .logo small{display:block;font-size:10.5px;font-weight:600;color:var(--muted);letter-spacing:0}
.search{flex:1;max-width:460px;position:relative}
.search input{width:100%;padding:9px 14px 9px 38px;border:1px solid var(--line);border-radius:999px;font:inherit;font-size:14px;background:var(--bg);color:var(--text)}
.search input:focus{outline:2px solid var(--brand);background:var(--card)}
.search::before{content:"🔍";position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:13px;pointer-events:none}
.sugg{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 14px 34px rgba(0,0,0,.16);max-height:70vh;overflow:auto;z-index:70;padding:6px}
.sugg[hidden]{display:none}
.sugg h6{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 10px 4px}
.sugg a{display:flex;gap:8px;align-items:baseline;padding:7px 10px;border-radius:8px;font-size:13.5px}
.sugg a:hover,.sugg a.act{background:var(--soft)}
.sugg a .cd{font-weight:700;color:var(--c,var(--brand));font-size:12px;white-space:nowrap}
.sugg a .tx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sugg .all{display:block;text-align:center;font-weight:600;color:var(--brand);padding:9px}
.sugg .none{padding:12px;color:var(--muted);font-size:13.5px}
mark{background:#ffe58a;color:#1f2937;border-radius:3px;padding:0 1px}
.top-links{display:flex;gap:4px;margin-left:auto;align-items:center}
.top-links a,.top-links button{padding:8px 11px;border-radius:8px;font-size:14px;font-weight:600;background:none;border:0;cursor:pointer}
.top-links a:hover,.top-links button:hover{background:var(--bg)}
.btn{display:inline-block;padding:8px 16px;border-radius:8px;background:var(--brand);color:#fff;font-weight:600;font-size:14px;border:0;cursor:pointer;font-family:inherit}
.btn:hover{background:var(--brand-dark)}
.btn.sm{padding:5px 11px;font-size:12.5px;border-radius:7px}
.btn.sec{background:var(--soft);color:var(--brand)} .btn.sec:hover{background:var(--brand);color:#fff}
.btn.ghost{background:none;border:1px solid var(--line);color:var(--text)} .btn.ghost:hover{border-color:var(--brand);color:var(--brand);background:none}
.burger{display:none;background:none;border:0;font-size:24px;cursor:pointer;margin-left:auto}

/* ===== Thanh môn + mega menu ===== */
.gradebar{background:var(--brand);position:relative;z-index:55}
.gradebar .container{position:relative}
.grades{display:flex;flex-wrap:wrap}
.grades>li>button{background:none;border:0;color:#fff;font:600 14px var(--ui);padding:12px 14px;cursor:pointer;white-space:nowrap}
.grades>li:hover>button,.grades>li.open>button{background:var(--brand-dark)}
.grades>li>button small{font-weight:500;opacity:.85;margin-left:4px}
.mega{display:none;position:absolute;left:var(--gap);right:var(--gap);top:100%;background:var(--card);border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);box-shadow:0 12px 30px rgba(0,0,0,.18);padding:18px 20px;max-height:72vh;overflow:auto}
.grades>li:hover>.mega,.grades>li.open>.mega{display:block}
.mega-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px 26px}
.mega h4{font-size:13.5px;color:var(--c,var(--brand));margin-bottom:5px}
.mega .ml{display:flex;gap:6px;align-items:baseline;font-size:13px;padding:2px 0}
.mega .ml a:first-child{flex:1;min-width:0}
.mega .ml a:hover{color:var(--brand);text-decoration:underline}
.mega .ml .mq{font-size:11.5px;color:var(--muted);white-space:nowrap}
.mega-foot{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);display:flex;flex-wrap:wrap;gap:8px}
.pill{font-size:13px;padding:6px 12px;border-radius:999px;background:var(--bg);font-weight:600;border:1px solid transparent;display:inline-block}
.pill:hover{background:var(--brand);color:#fff}
.pill.vip{background:var(--warn-soft);color:var(--accent)} .pill.vip:hover{background:var(--accent);color:#fff}

/* ===== Tab điều hướng trong trang ===== */
.tabs{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:60px;z-index:50}
.tabs .container{display:flex;gap:4px;overflow-x:auto;padding-top:6px;padding-bottom:6px;scrollbar-width:none}
.tabs a{padding:8px 14px;border-radius:8px;font-size:14px;font-weight:600;white-space:nowrap;color:var(--muted)}
.tabs a:hover,.tabs a.active{background:var(--soft);color:var(--brand)}

/* ===== Banner buổi học tới ===== */
.promo{margin:var(--gap) 0;background:linear-gradient(90deg,var(--warn-soft),var(--soft));border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;font-size:14px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.promo b{color:var(--accent)} .promo .btn{margin-left:auto}

/* ===== Hero ===== */
.hero{background:var(--card);border-radius:var(--radius);padding:28px 22px;margin-bottom:var(--gap);border:1px solid var(--line);text-align:center}
.hero h1{font-size:clamp(22px,4vw,33px);line-height:1.25;margin-bottom:8px}
.hero>p{color:var(--muted);margin:0 auto 16px;max-width:760px}
.hero .search{max-width:620px;margin:0 auto 16px}
.hero .search input{padding:13px 16px 13px 42px;font-size:15.5px}
.hero .search::before{left:16px;font-size:15px}
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chips a{padding:8px 16px;border-radius:999px;border:1px solid var(--line);font-weight:600;font-size:14px;background:var(--card)}
.chips a:hover{border-color:var(--c,var(--brand));color:var(--c,var(--brand))}
.chips a b{color:var(--c,var(--brand))}
.stats{display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:center;margin-top:18px}
.stats div{text-align:center} .stats b{display:block;font-size:22px;color:var(--brand);line-height:1.2} .stats span{font-size:12.5px;color:var(--muted)}
.resume{margin-top:14px;font-size:13.5px}
.resume a{color:var(--brand);font-weight:600}

/* ===== Dịch vụ (thẻ chế độ ôn) ===== */
.services{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap);margin-bottom:var(--gap)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.svc:hover{border-color:var(--brand);box-shadow:var(--shadow)}
.svc .ico{font-size:26px;margin-bottom:6px}
.svc h3{font-size:16px;margin-bottom:2px} .svc p{font-size:13px;color:var(--muted);margin-bottom:8px}
.svc .links{display:flex;flex-wrap:wrap;gap:6px}
.svc .links a{font-size:12px;font-weight:700;padding:3px 9px;border-radius:6px;background:var(--bg);color:var(--c)}
.svc .links a:hover{background:var(--c);color:#fff}

/* ===== Tiêu đề mục ===== */
.section-title{font-size:20px;margin:28px 0 4px}
.section-sub{color:var(--muted);font-size:14px;margin-bottom:12px}

/* ===== Thời khoá biểu ===== */
.tkb-head{display:grid;grid-template-columns:1fr auto;gap:var(--gap);align-items:stretch}
.clock{background:var(--brand);color:#fff;border-radius:var(--radius);padding:14px 22px;text-align:center;min-width:190px}
.clock .t{font-size:34px;font-weight:800;letter-spacing:1px;line-height:1.1;font-variant-numeric:tabular-nums}
.clock .d{font-size:13px;opacity:.92}
.mode{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.mode.on{background:var(--on-s);color:var(--on)} .mode.off{background:var(--off-s);color:var(--off)}
.trow{display:grid;grid-template-columns:130px 1fr auto auto;gap:10px 14px;align-items:center;padding:10px 0;border-bottom:1px dashed var(--line)}
.trow:last-child{border-bottom:0}
.trow .tm{font-weight:700;font-variant-numeric:tabular-nums} .trow .tm small{display:block;font-weight:500;color:var(--muted);font-size:12px}
.trow .nm b{color:var(--c);margin-right:6px}
.trow .st{font-size:12.5px;font-weight:600;color:var(--muted)} .trow.live .st{color:var(--ok)} .trow.done{opacity:.6}
.today-empty{color:var(--muted)}
.wk-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0 8px}
.wk-bar .lbl{font-weight:700;margin:0 6px}
.legend{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;font-size:13px;color:var(--muted);margin-bottom:10px}
.tt-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
table.tt{border-collapse:collapse;width:100%;min-width:760px}
.tt th,.tt td{border:1px solid var(--line);padding:6px;vertical-align:top;text-align:left}
.tt th{background:var(--soft);font-size:13px;text-align:center}
.tt th small{display:block;font-weight:500;color:var(--muted)}
.tt th.slot{width:96px} .tt th.now{background:var(--brand);color:#fff} .tt th.now small{color:#fff;opacity:.9}
.tt td.today{background:color-mix(in srgb,var(--brand) 6%,transparent)}
.cell{display:block;border-left:4px solid var(--c);background:var(--card);border-radius:6px;padding:6px 8px;box-shadow:0 1px 3px rgba(0,0,0,.08);font-size:12.5px;height:100%}
.cell:hover{box-shadow:var(--shadow);transform:translateY(-1px)}
.cell b{color:var(--c);font-size:14px;margin-right:4px}
.cell small{display:block;color:var(--muted);margin:2px 0 4px;line-height:1.3}
.cell .mode{font-size:10.5px}
.tt-hint{display:none;text-align:center;color:var(--muted);font-size:12px;margin-top:6px}
.empty-cell{color:var(--muted);text-align:center;display:block}

/* ===== Thẻ môn + danh mục ===== */
.subj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--gap)}
.subj{border-top:4px solid var(--c);display:flex;flex-direction:column;gap:10px}
.subj .hd{display:flex;align-items:center;gap:10px}
.subj .code{font-weight:800;color:var(--c);font-size:15px}
.subj .gl{margin-left:auto;font-size:26px;font-weight:800;color:var(--c);opacity:.85}
.subj h3{font-size:16.5px;line-height:1.3} .subj p{font-size:13px;color:var(--muted)}
.daypill{font-size:12px;background:var(--bg);border-radius:999px;padding:2px 10px;color:var(--muted);display:inline-block}
.row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.bar{height:7px;border-radius:99px;background:var(--line);overflow:hidden} .bar i{display:block;height:100%;background:var(--c);width:0}
.subj .acts{margin-top:auto}
.acc{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;overflow:hidden;border-left:4px solid var(--c)}
.acc>button{width:100%;text-align:left;background:none;border:0;padding:14px 18px;font:700 16px var(--ui);cursor:pointer;display:flex;gap:10px;align-items:center}
.acc>button .cd{color:var(--c)} .acc>button .sp{flex:1}
.acc>button .meta{font-weight:500;font-size:12.5px;color:var(--muted)}
.acc>button::after{content:"▾";transition:transform .2s;color:var(--muted)}
.acc.open>button::after{transform:rotate(180deg)}
.acc>.body{display:none;padding:0 18px 16px}
.acc.open>.body{display:block}
.qlinks{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
details.grp{border-top:1px solid var(--line);padding:8px 0}
details.grp>summary{cursor:pointer;font-weight:700;font-size:14px;padding:4px 0;list-style:none;display:flex;gap:8px;align-items:center}
details.grp>summary::before{content:"▸";color:var(--muted)} details.grp[open]>summary::before{content:"▾"}
details.grp>summary .meta{margin-left:auto;font-weight:500;font-size:12px;color:var(--muted)}
.les{display:grid;grid-template-columns:78px 1fr auto;gap:4px 10px;align-items:center;padding:7px 4px;border-bottom:1px solid var(--line);font-size:13.5px}
.les:last-child{border-bottom:0} .les:hover{background:var(--soft)}
.les .no{font-weight:700;color:var(--c);font-size:12.5px}
.les .ti small{display:block;color:var(--muted);font-size:12px}
.les .ac{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.les .ac .a{font-size:12px;font-weight:700;padding:3px 9px;border-radius:6px;background:var(--bg);white-space:nowrap}
.les .ac .a:hover{background:var(--c);color:#fff}
.les .ac .a.tn{background:var(--soft);color:var(--brand)} .les .ac .a.tn:hover{background:var(--brand);color:#fff}
.les .pr{grid-column:2/4;height:4px;border-radius:9px;background:var(--line);overflow:hidden} .les .pr i{display:block;height:100%;background:var(--ok)}
.star{background:none;border:0;cursor:pointer;font-size:16px;line-height:1;color:var(--muted);padding:2px 4px;border-radius:5px}
.star[aria-pressed="true"]{color:#f5a300} .star:hover{background:var(--bg)}
.types{display:flex;flex-wrap:wrap;gap:6px}
.types a{font-size:12.5px;padding:4px 10px;border-radius:999px;background:var(--bg);border:1px solid var(--line)}
.types a:hover{border-color:var(--brand);color:var(--brand)} .types a i{font-style:normal;color:var(--muted);margin-left:4px}

/* ===== Kết quả tìm kiếm ===== */
#ketqua .res{display:flex;gap:10px;align-items:baseline;padding:8px 4px;border-bottom:1px solid var(--line);font-size:14px}
#ketqua .res .cd{font-weight:700;color:var(--c);font-size:12.5px;min-width:64px}
#ketqua .res .tx{flex:1;min-width:0}
#ketqua .res .tag{font-size:11px;background:var(--bg);border-radius:999px;padding:1px 8px;color:var(--muted);white-space:nowrap}

/* ===== Hỏi đáp / Đã lưu ===== */
.two{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}
.form{display:grid;gap:10px}
.form label{font-size:13px;font-weight:600;display:grid;gap:4px}
.form input,.form select,.form textarea{font:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);width:100%}
.form textarea{resize:vertical;min-height:84px}
.form .r2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.qa{padding:14px 0;border-bottom:1px solid var(--line)} .qa:last-child{border-bottom:0}
.qa .who{font-size:12.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.qa .who .tag{background:var(--bg);border-radius:999px;padding:1px 9px;font-weight:700;color:var(--c,var(--muted))}
.qa p{margin:5px 0;white-space:pre-wrap;word-break:break-word}
.qa .ans{margin:8px 0 0 14px;padding-left:12px;border-left:3px solid var(--line);font-size:14px}
.qa .acts{display:flex;gap:6px;margin-top:6px}
.qa form{margin-top:8px}
.list-item{display:flex;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.list-item:last-child{border-bottom:0}
.list-item a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .list-item a:hover{color:var(--brand)}
.list-item .cd{font-weight:700;color:var(--c,var(--brand));font-size:12px;min-width:58px}
.empty{color:var(--muted);font-size:14px;padding:6px 0}
.note{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;font-size:14px;margin-top:20px}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:#111827;color:#fff;padding:9px 16px;border-radius:999px;font-size:13.5px;z-index:90;opacity:0;pointer-events:none;transition:opacity .2s}
.toast.show{opacity:1}

/* ===== Footer ===== */
footer{background:#111827;color:#cbd5e1;margin-top:40px;padding:32px 0;font-size:14px}
footer .cols{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:24px}
footer h5{color:#fff;margin-bottom:8px} footer a{display:block;padding:2px 0} footer a:hover{color:#fff}
.copy{margin-top:20px;padding-top:16px;border-top:1px solid #374151;font-size:13px;color:#94a3b8}

/* ===== Thanh song ngữ (Việt / Anh / Song ngữ) =====
   Mỗi chữ có hai bản <span class="vi"> và <span class="en">; html[data-lang] chọn bản hiện ra (lang.js đặt thuộc tính này).
   Chế độ "bi": bản Anh nằm dòng dưới, nhỏ và nhạt; ở chỗ chật (nút, nhãn) gộp thành một dòng "Việt / Anh". */
.langbar{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:999px;background:var(--bg);border:1px solid var(--line);flex:none}
.langbar svg{width:15px;height:15px;margin:0 3px 0 8px;color:var(--muted);flex:none}
.langbar button{border:0;background:none;cursor:pointer;font:700 12.5px var(--ui);padding:5px 11px;border-radius:999px;color:var(--muted);letter-spacing:.02em;white-space:nowrap}
.langbar button:hover{color:var(--text)}
.langbar button[aria-pressed="true"]{background:var(--brand);color:var(--on-brand)}
.langbar button:focus-visible{outline-offset:1px}

.en{display:none}
html[data-lang="en"] .vi{display:none}
html[data-lang="en"] .en{display:inline}
html[data-lang="bi"] .en{display:block;margin-top:1px;font-size:.84em;font-weight:500;color:var(--muted);line-height:1.4}
html[data-lang="bi"]{scroll-padding-top:150px}
/* chỗ chật: một dòng "Việt / Anh" */
html[data-lang="bi"] :is(.btn,.pill,.chips a,.daypill,.tag,.svc .links a,.les .ac .a,.types a,.mq,.cell small,.stats span,.mode) .en{display:inline;margin:0;font-size:inherit;font-weight:inherit;color:inherit;opacity:.78}
html[data-lang="bi"] :is(.btn,.pill,.chips a,.daypill,.tag,.svc .links a,.les .ac .a,.types a,.mq,.cell small,.stats span,.mode) .en::before{content:" / "}
html[data-lang="bi"] .en.in{display:inline;margin:0;font-size:inherit;font-weight:inherit;color:inherit;opacity:.78}
html[data-lang="bi"] .en.in::before{content:" / "}
/* thanh môn, logo: chỉ giữ tiếng Việt khi song ngữ để không tràn hàng */
html[data-lang="bi"] :is(.grades>li>button,.logo) .en{display:none}
html[data-lang="bi"] .top-links a,html[data-lang="bi"] .tabs a{text-align:center;line-height:1.25}
html[data-lang="bi"] .top-links a .en,html[data-lang="bi"] .tabs a .en{font-size:.78em;margin-top:0}
html[data-lang="bi"] .hero h1 .en{font-weight:600}
html[data-lang="bi"] .hero>p .en{margin-top:4px}
html[data-lang="bi"] .section-title .en{font-weight:600}
html[data-lang="bi"] .clock .en{color:inherit;opacity:.85}
html[data-lang="bi"] footer .en{color:inherit;opacity:.7}
html[data-lang="bi"] .acc>button .en{font-weight:500}
html[data-lang="bi"] .tt th .en{font-size:.78em}
html[data-lang="bi"] .tt th.now .en{color:inherit;opacity:.9}
html[data-lang="bi"] .trow .tm small .en{display:none}
.trow .tm{white-space:nowrap}.trow .tm small{white-space:normal}
html[data-lang="bi"] table.tt{table-layout:fixed;min-width:920px}
html[data-lang="bi"] .tt th.slot{width:90px}
html[data-lang="bi"] .toast .en{display:inline;color:inherit;font-size:inherit}
/* danh sách bài: tên Anh luôn là dòng phụ khi đang ở Việt hoặc song ngữ (giữ nguyên giao diện cũ) */
html:not([data-lang="en"]) .les .ti .en{display:block;margin-top:1px;font-size:12px;font-weight:400;color:var(--muted)}
.mega h4 .en{font-weight:600}

/* ===== Responsive ===== */
@media (max-width:980px){.services{grid-template-columns:repeat(2,1fr)}.two{grid-template-columns:1fr}footer .cols{grid-template-columns:1fr 1fr}}
@media (max-width:860px){
  .top-links{display:none} .burger{display:block;margin-left:0} .langbar{margin-left:auto} .search{max-width:none}
  .topbar .search{display:none} .topbar.show-search .search{display:block}
  .grades{display:none;flex-direction:column} .grades.show{display:flex}
  .mega{position:static;box-shadow:none;border:0;border-top:1px solid var(--line);padding:12px;max-height:60vh}
  .grades>li:hover>.mega{display:none} .grades>li.open>.mega{display:block}
  .grades>li>button{width:100%;text-align:left}
  .tkb-head{grid-template-columns:1fr} .clock{min-width:0}
  .trow{grid-template-columns:1fr auto} .trow .st{grid-column:1/-1}
  .tt-hint{display:block}
  .les{grid-template-columns:1fr} .les .pr{grid-column:1} .les .ac{justify-content:flex-start}
  .subj-grid{grid-template-columns:1fr}
}
@media (max-width:560px){.topbar .container{gap:10px}.langbar svg{display:none}.langbar button{padding:5px 8px}.services{grid-template-columns:1fr}footer .cols{grid-template-columns:1fr}.form .r2{grid-template-columns:1fr}.hero{padding:20px 14px}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{.topbar,.gradebar,.tabs,footer,.promo{display:none}}

/* ==========================================================================
   OCEAN LUXE cho trang chủ (19/10/2026): cùng bảng màu navy + vàng champagne với các trang môn.
   Nằm cuối file nên ghi đè các quy tắc kiểu cũ ở trên; màu lấy từ token bên dưới.
   ========================================================================== */
:root{
  --display:"Playfair Display","Be Vietnam Pro",Georgia,"Times New Roman",serif;
  --gold:#C8A24A; --hero-gold:#EBD79B; --navy:#06264A; --sky:#59B7F2; --aqua:#16A6C9;
  --bg:#EAF4FD; --card:#FFFFFF; --text:#0B2542; --muted:#4A6582; --line:#C9DDF0; --soft:#DCEBFC;
  --brand:#0B66C6; --brand-dark:#084A92; --accent:#C8A24A; --warn-soft:#F6EBC9;
  --shadow:0 10px 30px rgba(8,52,102,.10); --shadow-lg:0 24px 60px rgba(6,38,74,.28);
  --wave:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 62C150 22 300 102 450 62S750 22 900 62s200 40 300-10V120H0Z' fill='%23ffffff' fill-opacity='.10'/%3E%3Cpath d='M0 88C200 56 350 118 550 88s350-34 650 4V120H0Z' fill='%23ffffff' fill-opacity='.09'/%3E%3C/svg%3E")
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --gold:#D9B65D; --bg:#061423; --card:#0B2136; --text:#E4F0FC; --muted:#9BB6D2; --line:#1B4263; --soft:#0F2D4A;
  --brand:#4DA3F5; --brand-dark:#2A74C4; --accent:#D9B65D; --warn-soft:#3A2F10; --shadow:0 10px 30px rgba(0,0,0,.40);}}
:root[data-theme="dark"]{
  --gold:#D9B65D; --bg:#061423; --card:#0B2136; --text:#E4F0FC; --muted:#9BB6D2; --line:#1B4263; --soft:#0F2D4A;
  --brand:#4DA3F5; --brand-dark:#2A74C4; --accent:#D9B65D; --warn-soft:#3A2F10; --shadow:0 10px 30px rgba(0,0,0,.40);}
[hidden]{display:none!important}
body{-webkit-font-smoothing:antialiased;line-height:1.65;
  background:radial-gradient(1100px 520px at 90% -8%,color-mix(in srgb,var(--sky) 26%,transparent),transparent 62%),
    radial-gradient(900px 560px at -8% 4%,color-mix(in srgb,var(--aqua) 14%,transparent),transparent 62%),var(--bg)}
::selection{background:color-mix(in srgb,var(--brand) 28%,transparent)}
:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 60%,transparent);outline-offset:2px}
/* khung đầu trang */
.topbar{background:color-mix(in srgb,var(--card) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);box-shadow:0 1px 0 var(--line),0 8px 24px rgba(8,52,102,.06)}
.logo{font-family:var(--display);font-size:24px;letter-spacing:-.01em;color:var(--text)}
.logo span{color:var(--gold)}
.logo small{font-family:var(--ui)}
.search input{background:color-mix(in srgb,var(--soft) 55%,var(--card));border-color:var(--line)}
.search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent)}
.gradebar{background:linear-gradient(125deg,var(--navy),#0B4C99 70%,#0E6FBF);box-shadow:inset 0 -1px 0 rgba(235,215,155,.35)}
.grades>li:hover>button,.grades>li.open>button{background:rgba(255,255,255,.12)}
.mega{border-radius:0 0 18px 18px;box-shadow:0 18px 44px rgba(6,38,74,.22)}
.tabs{background:color-mix(in srgb,var(--card) 90%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.tabs a{border-radius:12px;transition:background .15s,color .15s}
.tabs a:hover,.tabs a.active{background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 80%,#fff),var(--brand));color:#fff;box-shadow:0 6px 14px color-mix(in srgb,var(--brand) 28%,transparent)}
/* nút, thẻ */
.btn{border-radius:13px;padding:10px 18px;background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 80%,#fff),var(--brand));box-shadow:0 8px 18px color-mix(in srgb,var(--brand) 26%,transparent),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .15s,box-shadow .15s}
.btn:hover{background:linear-gradient(180deg,var(--brand),var(--brand-dark));transform:translateY(-1px)}
.btn.sm{padding:6px 12px;border-radius:10px}
.btn.sec{background:var(--card);color:var(--brand);border:1px solid var(--line);box-shadow:none}
.btn.sec:hover{background:var(--soft);color:var(--brand)}
.btn.ghost{box-shadow:none}
.card{border-radius:22px;box-shadow:var(--shadow)}
.pill{background:var(--card);border-color:var(--line);color:var(--text)}
.pill:hover{background:var(--soft);color:var(--brand)}
.promo{border-radius:18px;border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}
/* hero */
.hero{position:relative;overflow:hidden;color:#fff;text-align:left;border:0;border-radius:30px;padding:46px 46px 84px;
  background:linear-gradient(125deg,var(--navy) 0%,#0B4C99 62%,#1A86D6 140%);
  box-shadow:var(--shadow-lg),inset 0 0 0 1px rgba(255,255,255,.10),inset 0 1px 0 rgba(255,255,255,.24)}
.hero:before{content:"";position:absolute;left:0;right:0;bottom:0;height:64px;background:var(--wave) center bottom/100% 100% no-repeat;pointer-events:none}
.hero>*{position:relative;z-index:1}
.hero .hero-globe{position:absolute;z-index:0;right:-8px;top:50%;transform:translateY(-54%);width:min(560px,48%);aspect-ratio:1;pointer-events:none}
.hero>.hero-eyebrow{margin:0 0 10px;font-size:13px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--hero-gold,#f2b632)}
.hero>.hero-eyebrow .en{display:none}html[data-lang="en"] .hero>.hero-eyebrow .vi{display:none}html[data-lang="en"] .hero>.hero-eyebrow .en{display:inline}html[data-lang="bi"] .hero>.hero-eyebrow .en{display:inline;margin:0;font-size:inherit;font-weight:inherit;color:inherit;opacity:.8}html[data-lang="bi"] .hero>.hero-eyebrow .en::before{content:" / "}
.hero h1{font-family:var(--display);font-weight:700;font-size:clamp(28px,4.4vw,46px);line-height:1.14;letter-spacing:-.01em;max-width:15em;margin:0 0 14px;text-wrap:balance}
.hero>p{color:rgba(255,255,255,.86);margin:0 0 22px;max-width:36em;font-size:16px}
.hero .search{margin:0 0 18px;max-width:560px}
.hero .search input{background:rgba(255,255,255,.97);color:#0B2542;border:0;padding:15px 18px 15px 46px;font-size:16px;box-shadow:0 14px 34px rgba(3,18,40,.35)}
.hero .search input::placeholder{color:#5d7592}
.hero .search::before{left:18px}
.hero .chips{justify-content:flex-start;max-width:640px}
.hero .chips a{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.26);color:#fff;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:background .15s,transform .15s}
.hero .chips a:hover{background:rgba(255,255,255,.2);color:#fff;transform:translateY(-1px)}
.hero .chips a.c-chn b{color:#ffb4a6} .hero .chips a.c-eng b{color:#a9c9ff} .hero .chips a.c-ssa b{color:#74e2ec} .hero .chips a.c-enp b{color:#c4bdff} .hero .chips a.c-ecr b{color:#ffd283}
.hero .stats{justify-content:flex-start;margin-top:26px;gap:12px 34px}
.hero .stats div{text-align:left}
.hero .stats b{font-family:var(--display);font-size:30px;color:var(--hero-gold)}
.hero .stats span{color:rgba(255,255,255,.72)}
.hero .resume{color:rgba(255,255,255,.85)} .hero .resume a{color:var(--hero-gold);text-decoration:underline}
/* thẻ chế độ ôn */
.services{grid-template-columns:repeat(3,1fr);gap:18px}
.svc{position:relative;overflow:hidden;transition:transform .18s,box-shadow .18s,border-color .18s}
.svc:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--gold),transparent)}
.svc:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--gold) 55%,var(--line))}
.svc .ico{width:50px;height:50px;border-radius:16px;display:grid;place-items:center;font-size:25px;margin-bottom:10px;background:linear-gradient(145deg,var(--soft),color-mix(in srgb,var(--gold) 22%,var(--card)))}
.svc h3{font-family:var(--display);font-size:19px}
.svc.hot{background:linear-gradient(160deg,var(--card),color-mix(in srgb,var(--sky) 14%,var(--card)));border-color:color-mix(in srgb,var(--sky) 45%,var(--line))}
/* tiêu đề mục */
.section-title{font-family:var(--display);font-weight:700;font-size:clamp(23px,3vw,30px);line-height:1.2;margin:44px 0 6px;display:flex;align-items:center;gap:16px;color:var(--text)}
.section-title:after{content:"";height:1px;flex:1;min-width:24px;background:linear-gradient(90deg,var(--gold),transparent)}
.section-sub{font-size:15px}
/* thời khoá biểu, thẻ môn */
.clock{border-radius:22px;background:linear-gradient(145deg,var(--navy),#0B5BB5);box-shadow:var(--shadow-lg),inset 0 1px 0 rgba(255,255,255,.2)}
.clock .t{font-family:var(--display);color:var(--hero-gold)}
.tt-wrap{border-radius:20px;box-shadow:var(--shadow)}
.cell{border-radius:10px}
.subj{border-top-width:5px;border-radius:22px;transition:transform .18s,box-shadow .18s}
.subj:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.subj h3{font-family:var(--display);font-size:19px}
.subj .gl{font-family:var(--display)}
/* chân trang */
footer{position:relative;overflow:hidden;background:linear-gradient(125deg,var(--navy),#0B4C99);color:#d3e4f7;padding:40px 0 46px}
footer:before{content:"";position:absolute;left:0;right:0;bottom:0;height:46px;background:var(--wave) center bottom/100% 100% no-repeat;pointer-events:none}
footer .container{position:relative;z-index:1}
footer h5{font-family:var(--display);font-size:17px;color:#fff}
footer a:hover{color:var(--hero-gold)}
@media (max-width:1000px){.services{grid-template-columns:repeat(2,1fr)}}
/* màn hình vừa: mô hình 12 cung nằm phía trên chữ (để không đè lên tiêu đề và các chip môn) */
@media (max-width:1180px){.hero .hero-globe{position:static;transform:none;width:min(440px,84%);margin:0 auto 10px;display:block}}
@media (max-width:640px){
  .services{grid-template-columns:1fr}
  .hero{padding:30px 22px 70px;border-radius:24px;text-align:center}
  .hero h1,.hero>p{margin-left:auto;margin-right:auto}
  .hero .chips,.hero .stats{justify-content:center}
  .hero .stats div{text-align:center}
  .hero .search{margin-left:auto;margin-right:auto}
  .hero .hero-globe{position:static;transform:none;opacity:1;width:min(360px,94%);margin:0 auto 6px;display:block}
}
@media (prefers-reduced-motion:reduce){.btn,.svc,.subj,.hero .chips a{transition:none}.svc:hover,.subj:hover,.btn:hover{transform:none}}
@media (max-width:640px){.hero .search input{font-size:14.5px;padding-left:42px}}
