/* HAU2B Academy – trang chủ R2: giữ phong cách R1, tinh chỉnh */
:root{
  --ink:#172231; --ink2:#2A3646; --muted:#4A5565; --line:#DADDE2; --line2:#E6E8EC; --input:#A9B1BC;
  --bg:#F3F4F1; --card:#FFFFFF; --card2:#FAFAF8; --today:#F4F6FA;
  --navy:#13233A; --navy2:#1A2E4A; --navy-line:#3E5371; --navy-sub:#B9C6D8; --navy-text:#D3DCE8;
  --cta:#E06A2E; --cta-h:#C9581F; --cta-ink:#1A0A02; --link:#A8401A;
  --xanh-bg:#E3ECF8; --xanh-fg:#163E73; --xanh:#2F6BC4;
  --cam-bg:#FAE6D6; --cam-fg:#7E310D; --cam:#D2692F;
  --luc-bg:#DDEFE5; --luc-fg:#1A553B; --luc:#2F8A5E;
  --tim-bg:#ECE4F5; --tim-fg:#4B2A78; --tim:#7A55B5;
  --xam-bg:#E8EAEE; --xam-fg:#2A3646; --xam:#6B7684;
  --alert-bg:#FBE4DA; --alert-fg:#7A2A0B; --ok-bg:#DDEFE5; --ok-fg:#1A553B; --notice-bg:#FFF4D6; --notice-fg:#5A4200;
  --shadow:0 1px 2px rgba(23,34,49,.06),0 4px 14px rgba(23,34,49,.06);
  --shadow-h:0 2px 4px rgba(23,34,49,.08),0 10px 24px rgba(23,34,49,.10);
  --r:10px; --font:'Be Vietnam Pro',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  html.auto-theme:not([data-theme="light"]){
    --ink:#E8ECF2; --ink2:#CDD5E0; --muted:#A3AEBD; --line:#2B3A50; --line2:#24324A; --input:#4A5B74;
    --bg:#0E1726; --card:#16223A; --card2:#192741; --today:#1C2B45;
    --navy:#0A1424; --navy2:#12203A;
    --link:#F2A27A;
    --xanh-bg:#1C3354; --xanh-fg:#BFD6FA; --cam-bg:#45281A; --cam-fg:#F9C9A8; --luc-bg:#173A2B; --luc-fg:#B8E6CC;
    --tim-bg:#2E2348; --tim-fg:#D8C8F2; --xam-bg:#26324A; --xam-fg:#D0D7E2;
    --alert-bg:#4A2215; --alert-fg:#FFD3C2; --ok-bg:#173A2B; --ok-fg:#B8E6CC; --notice-bg:#3A3112; --notice-fg:#FFE8A6;
    --shadow:0 1px 2px rgba(0,0,0,.3); --shadow-h:0 6px 18px rgba(0,0,0,.4);
    color-scheme:dark;
  }
}
html.auto-theme[data-theme="dark"]{
  --ink:#E8ECF2; --ink2:#CDD5E0; --muted:#A3AEBD; --line:#2B3A50; --line2:#24324A; --input:#4A5B74;
  --bg:#0E1726; --card:#16223A; --card2:#192741; --today:#1C2B45; --navy:#0A1424; --navy2:#12203A; --link:#F2A27A;
  --xanh-bg:#1C3354; --xanh-fg:#BFD6FA; --cam-bg:#45281A; --cam-fg:#F9C9A8; --luc-bg:#173A2B; --luc-fg:#B8E6CC;
  --tim-bg:#2E2348; --tim-fg:#D8C8F2; --xam-bg:#26324A; --xam-fg:#D0D7E2;
  --alert-bg:#4A2215; --alert-fg:#FFD3C2; --ok-bg:#173A2B; --ok-fg:#B8E6CC; --notice-bg:#3A3112; --notice-fg:#FFE8A6;
  --shadow:0 1px 2px rgba(0,0,0,.3); --shadow-h:0 6px 18px rgba(0,0,0,.4); color-scheme:dark;
}
:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-behavior:smooth;scroll-padding-top:calc(72px + env(safe-area-inset-top,0px))}
*,*::before,*::after{box-sizing:inherit}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--link)}
h1,h2,h3,h4,p{margin:0}
:focus-visible{outline:3px solid #3B82C4;outline-offset:2px;border-radius:4px}
.wrap{max-width:1240px;margin:0 auto;padding-left:24px;padding-right:24px}
.muted{color:var(--muted)} .small{font-size:14px} .muted-inv{color:var(--navy-text)}
.prewrap{white-space:pre-line;color:var(--muted)}
.skip{position:absolute;left:-999px;top:0;background:var(--card);padding:8px 12px;z-index:30}.skip:focus{left:8px}
.notice{background:var(--notice-bg);color:var(--notice-fg);font-size:14px;text-align:center;padding:8px 16px}

/* header: dính trên cùng, đổ bóng khi cuộn */
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:saturate(1.4) blur(8px);-webkit-backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line);transition:box-shadow .2s ease}
.top.scrolled{box-shadow:var(--shadow)}
.top-in{display:flex;flex-wrap:wrap;align-items:center;gap:8px 28px;padding-top:10px;padding-bottom:10px}
.brand{display:flex;align-items:baseline;gap:8px;text-decoration:none;color:var(--ink)}
.brand b{font-size:22px;font-weight:800;letter-spacing:-.02em}.brand span{font-weight:500;font-size:15px;color:var(--muted)}
.nav{display:flex;flex-wrap:wrap;gap:0 22px;font-size:15px;flex:1 1 300px}
.nav a{color:var(--ink2);text-decoration:none;padding:10px 0;position:relative}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:2px;background:var(--cta);transform:scaleX(0);transition:transform .2s ease;transform-origin:left}
.nav a:hover{color:var(--ink)}.nav a:hover::after{transform:scaleX(1)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:var(--r);font:inherit;font-size:15px;font-weight:600;cursor:pointer;text-decoration:none;border:1px solid transparent;transition:background-color .15s ease,border-color .15s ease,transform .15s ease,box-shadow .15s ease}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:var(--card);border-color:var(--input);color:var(--ink)}
.btn.ghost:hover{border-color:var(--ink)}
.btn.ghost.strong{font-weight:700}
.btn.primary{background:var(--cta);color:var(--cta-ink);font-weight:700;min-height:48px;padding:0 24px;box-shadow:0 2px 0 rgba(0,0,0,.12)}
.btn.primary:hover{background:var(--cta-h)}
.btn.primary.sm{min-height:42px;padding:0 18px;font-size:15px}
.btn.dark{background:var(--ink);color:var(--card);font-weight:600}
.btn.dark:hover{opacity:.9}
.btn.outline{background:transparent;border-color:var(--input);color:var(--ink)}
.btn.outline:hover{border-color:var(--ink);background:var(--card)}
.btn.outline-inv{border-color:#5A6E8B;color:#fff;background:transparent}
.btn.ghost-inv{border-color:#5A6E8B;color:#fff;background:transparent}
.btn[disabled]{opacity:.55;cursor:default;transform:none}
.btn-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}

/* hero: nền navy có lưới bản vẽ rất mờ */
.hero{background-color:var(--navy);background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),radial-gradient(1200px 400px at 85% 0%,var(--navy2),transparent 70%);background-size:40px 40px,40px 40px,auto;color:#fff}
.hero .wrap{padding-top:40px;padding-bottom:22px}
.hero-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.hero-eyebrow{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--navy-sub);font-weight:600}
.hero-ctl{display:flex;gap:8px}
.icon-btn{width:44px;height:44px;border-radius:var(--r);border:1px solid var(--navy-line);background:transparent;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease}
.icon-btn:hover{background:rgba(255,255,255,.08)}
.slide{display:flex;flex-wrap:wrap;gap:28px 48px;align-items:stretch;min-height:262px}
.slide.enter .slide-main,.slide.enter .datebox{animation:rise .35s ease both}
.slide.enter .datebox{animation-delay:.05s}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.slide-main{flex:999 1 520px;min-width:0;display:flex;flex-direction:column;gap:14px}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tag{font-size:13px;font-weight:700;padding:5px 11px;border-radius:999px;background:#F2B48F;color:#3B1607}
.tag.line{background:transparent;border:1px solid var(--navy-line);color:var(--navy-text);font-weight:500}
.slide h1{font-size:clamp(28px,3.4vw,40px);line-height:1.18;font-weight:700;letter-spacing:-.018em;max-width:780px;text-wrap:balance}
.slide .desc{font-size:17px;line-height:1.6;color:var(--navy-text);max-width:680px}
.slide .when{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:15px;color:var(--navy-sub)}
.slide .when span{display:inline-flex;align-items:center;gap:6px}
.datebox{flex:1 1 220px;max-width:300px;border:1px solid var(--navy-line);border-radius:16px;padding:22px 26px;display:flex;flex-direction:column;justify-content:center;gap:4px;background:rgba(255,255,255,.03)}
.datebox .wd{font-size:15px;color:var(--navy-sub)}
.datebox .d{font-size:92px;line-height:1;font-weight:700;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.datebox .m{font-size:19px;font-weight:500}
.datebox .left{margin-top:10px;align-self:flex-start;font-size:13px;font-weight:700;padding:5px 11px;border-radius:999px;background:rgba(242,180,143,.16);color:#F7C9AC}
.dots{display:flex;gap:2px;margin-top:18px;align-items:center}
.dot{width:44px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center}
.dot span{display:block;height:4px;width:32px;border-radius:2px;background:var(--navy-line);overflow:hidden;position:relative}
.dot[aria-current="true"] span{background:rgba(242,180,143,.35)}
.dot[aria-current="true"] span::after{content:"";position:absolute;inset:0;background:#F2B48F;transform-origin:left;animation:fill var(--dur,7s) linear both}
.paused .dot[aria-current="true"] span::after{animation-play-state:paused}
.static .dot[aria-current="true"] span::after{animation:none}
@keyframes fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* sections */
.sec{padding-top:44px;padding-bottom:8px}
.sec h2{font-size:28px;font-weight:700;letter-spacing:-.012em;margin-bottom:6px}
.sec-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.chip{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--input);background:var(--card);color:var(--ink);font:inherit;font-size:14px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:border-color .15s ease}
.chip:hover{border-color:var(--ink)}
.chip i{width:8px;height:8px;border-radius:2px;display:inline-block}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--card)}

/* lịch tuần */
.sched-box{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow-x:auto;box-shadow:var(--shadow)}
.sched{min-width:1000px;display:grid;grid-template-columns:96px repeat(7,minmax(0,1fr))}
.sh{padding:10px 12px;border-bottom:1px solid var(--line);border-left:1px solid var(--line2);position:sticky;top:0}
.sh:first-child{border-left:0;font-size:13px;color:var(--muted)}
.sh b{display:block;font-size:14px;font-weight:600}.sh span{font-size:13px;color:var(--muted)}
.sh.today{background:var(--ink);color:var(--card)}.sh.today span{color:inherit;opacity:.8}
.sr{padding:12px;border-bottom:1px solid var(--line2)}
.sr b{display:block;font-size:14px}.sr span{font-size:12px;color:var(--muted)}
.sc{padding:8px;border-bottom:1px solid var(--line2);border-left:1px solid var(--line2);min-height:96px;display:flex;flex-direction:column;gap:6px}
.sched>.sc:nth-last-child(-n+7),.sched>.sr:nth-last-child(8){border-bottom:0}
.sc.today{background:var(--today)}
.cls{border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;font-size:12px;transition:transform .15s ease,box-shadow .15s ease}
.cls:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.cls .code{font-weight:700;letter-spacing:.01em}
.cls .nm{font-size:13px;font-weight:600;line-height:1.35}
.cls .live{align-self:flex-start;margin-top:3px;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--ink);color:var(--card);display:inline-flex;align-items:center;gap:5px}
.cls .live::before{content:"";width:6px;height:6px;border-radius:3px;background:#3DDC84;animation:blink 1.6s ease-in-out infinite}
@keyframes blink{50%{opacity:.25}}
.sched-empty{padding:14px 16px;border-top:1px solid var(--line2);color:var(--muted);font-size:14px}
.agenda{display:none}
.c-xanh{background:var(--xanh-bg);color:var(--xanh-fg)}.c-cam{background:var(--cam-bg);color:var(--cam-fg)}
.c-luc{background:var(--luc-bg);color:var(--luc-fg)}.c-tim{background:var(--tim-bg);color:var(--tim-fg)}.c-xam{background:var(--xam-bg);color:var(--xam-fg)}
.t-xanh{color:var(--xanh-fg)}.t-cam{color:var(--cam-fg)}.t-luc{color:var(--luc-fg)}.t-tim{color:var(--tim-fg)}.t-xam{color:var(--xam-fg)}
.k-xanh{background:var(--xanh)}.k-cam{background:var(--cam)}.k-luc{background:var(--luc)}.k-tim{background:var(--tim)}.k-xam{background:var(--xam)}

/* tham gia */
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--shadow)}
.join{display:flex;flex-direction:column;gap:20px}
.join h2{font-size:24px}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.tile{min-height:92px;text-align:left;padding:16px 18px;border-radius:12px;border:1px solid var(--input);background:var(--card);color:var(--ink);font:inherit;cursor:pointer;display:flex;align-items:center;gap:14px;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}
.tile:hover{border-color:var(--ink);box-shadow:var(--shadow)}
.tile-ic{flex:none;width:44px;height:44px;border-radius:10px;background:var(--xam-bg);color:var(--ink);display:flex;align-items:center;justify-content:center}
.tile.primary .tile-ic{background:var(--cta);color:var(--cta-ink)}
.tile-tx{flex:1 1 auto;display:flex;flex-direction:column;gap:2px}
.tile-tx b{font-size:17px;font-weight:700}.tile-tx span{font-size:14px;color:var(--muted);line-height:1.45}
.tile .chev{flex:none;color:var(--muted);transition:transform .2s ease}
.tile.primary{border-color:#E9B999;background:color-mix(in srgb,var(--cta) 10%,var(--card))}
.tile[aria-expanded="true"]{background:var(--ink);border-color:var(--ink);color:var(--card)}
.tile[aria-expanded="true"] .tile-tx span,.tile[aria-expanded="true"] .chev{color:inherit;opacity:.8}
.tile[aria-expanded="true"] .chev{transform:rotate(180deg)}
.tile[aria-expanded="true"] .tile-ic{background:rgba(255,255,255,.14);color:inherit}
@media (max-width:900px){.tiles{grid-template-columns:minmax(0,1fr)}}
.panel{border-top:1px solid var(--line2);padding-top:22px;animation:rise .25s ease both}
.panel h3{font-size:18px;margin:0 0 4px}
form{display:flex;flex-direction:column;gap:16px}
.fields{display:flex;flex-wrap:wrap;gap:16px}
.fields label{flex:1 1 280px;display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600}
.fields label.wide{flex:999 1 420px}
input,select,textarea{font:inherit;font-size:15px;font-weight:400;color:var(--ink);background:var(--card);border:1px solid var(--input);border-radius:8px;padding:10px 12px;min-height:46px;width:100%;transition:border-color .15s ease,box-shadow .15s ease}
input:focus,select:focus,textarea:focus{outline:none;border-color:#3B82C4;box-shadow:0 0 0 3px rgba(59,130,196,.25)}
input[aria-invalid="true"]{border-color:#C0392B}
textarea{resize:vertical;min-height:90px}
.hint{font-size:12px;font-weight:400;color:var(--muted)}
.hp{position:absolute!important;left:-5000px!important;width:1px;height:1px;opacity:0}
.groups{display:flex;flex-wrap:wrap;gap:16px}
fieldset{flex:1 1 300px;min-width:0;margin:0;border:1px solid var(--line);border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:2px}
legend{padding:0 6px;font-size:14px;font-weight:700}
.opt{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:6px 8px;margin:0 -8px;border-radius:8px;font-size:14px;cursor:pointer}
.opt:hover{background:var(--card2)}
.opt input{width:18px;height:18px;min-height:0;margin:2px 0 0;padding:0;accent-color:var(--ink);flex:none}
.opt .code{font-size:12px;font-weight:700}
.opt small{display:block;font-size:12px;color:var(--muted)}
.alert{padding:10px 14px;border-radius:8px;background:var(--alert-bg);color:var(--alert-fg);font-size:14px}
.ok{padding:10px 14px;border-radius:8px;background:var(--ok-bg);color:var(--ok-fg);font-size:14px}
.done{display:flex;flex-direction:column;gap:10px}
.done h3{display:flex;align-items:center;gap:10px}
.done h3::before{content:"";flex:none;width:28px;height:28px;border-radius:14px;background:var(--ok-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F8A5E' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/16px no-repeat}
.done p{color:var(--muted);line-height:1.6}
.split{display:flex;flex-wrap:wrap;gap:28px}
.contact{flex:1 1 260px;display:flex;flex-direction:column;gap:8px;font-size:15px}
#fLh{flex:999 1 420px}

/* chương trình */
.programs{display:flex;flex-direction:column;gap:22px;margin-top:22px;padding-bottom:48px}
.prog{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:26px 28px 28px;display:flex;flex-direction:column;gap:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.prog::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--bar,var(--xam))}
.prog-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px}
.prog-head>div{flex:999 1 480px;min-width:0}
.pcode{display:inline-block;font-size:12px;font-weight:700;padding:4px 8px;border-radius:6px;margin-bottom:10px;letter-spacing:.04em}
.prog h3{font-size:22px;margin-bottom:8px;letter-spacing:-.01em}
.prog-head p{color:var(--muted);font-size:15px;line-height:1.6;max-width:760px}
.prog-count{font-size:14px;color:var(--muted);white-space:nowrap}
.courses{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.course{border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--card2);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.course:hover{border-color:var(--input);box-shadow:var(--shadow-h);transform:translateY(-2px)}
.course .code{font-size:12px;font-weight:700;letter-spacing:.03em}
.course h4{font-size:16px;font-weight:600;line-height:1.4}
.course p{font-size:14px;color:var(--muted);flex-grow:1}
.course-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--muted);padding-top:4px;border-top:1px dashed var(--line)}
.status{font-size:12px;font-weight:600;padding:4px 9px;border-radius:999px}
.s-open{background:var(--cam-bg);color:var(--cam-fg)}.s-run{background:var(--luc-bg);color:var(--luc-fg)}.s-soon{background:var(--xam-bg);color:var(--xam-fg)}.s-req{background:var(--xanh-bg);color:var(--xanh-fg)}
.course .btn{min-height:40px;font-size:14px;align-self:stretch;margin-top:2px}

.foot{border-top:1px solid var(--line);background:var(--card)}
.foot-in{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:22px;padding-bottom:22px;font-size:14px;color:var(--muted)}

/* thanh đăng ký dưới đáy (điện thoại) */
.mbar{display:none}

@media (max-width:760px){
  .wrap{padding-left:16px;padding-right:16px}
  .top-in{gap:4px 12px}
  .top-in .btn.primary{margin-left:auto;order:2}
  .brand{order:1}.nav{order:3;flex-basis:100%;gap:0 18px}
  .hero .wrap{padding-top:22px;padding-bottom:10px}
  .hero-bar{margin-bottom:14px}
  .slide{min-height:0;gap:16px}
  .datebox{order:-1;max-width:none;flex:1 1 100%;flex-direction:row;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding:10px 14px;border-radius:12px}
  .datebox .d{font-size:34px}.datebox .m{font-size:16px}.datebox .left{margin:0 0 0 auto}
  .dots{margin-top:8px}
  .sec{padding-top:30px}.sec h2{font-size:24px}
  .sec-head .btn-row{width:100%;flex-wrap:nowrap}
  .sec-head .btn-row .btn{flex:1 1 0;padding:0 6px;font-size:14px}
  .card,.prog{padding:18px}
  .sched-box{display:none}
  .agenda{display:flex;flex-direction:column;gap:10px}
  .ag-day{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
  .ag-day.today{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
  .ag-day h3{font-size:15px}.ag-day h3 small{font-weight:400;color:var(--muted)}
  .ag-none{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;color:var(--muted);font-size:14px}
  .mbar{display:flex;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:25;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--navy);box-shadow:0 -4px 16px rgba(0,0,0,.18);transform:translateY(110%);transition:transform .25s ease}
  .mbar.show{transform:none}
  .mbar .btn{flex:1 1 0;min-height:46px}
  .foot{padding-bottom:76px}
}
@media (max-width:420px){.brand b{font-size:19px}.brand span{font-size:14px}.top-in .btn.primary{padding:0 14px;font-size:14px}}

/* ===== Nhận diện HAU (màu tạm – thay bằng mã màu chính thức của trường) ===== */
:root{
  --hau-xanh:#1F5FBF; --hau-do:#A51C30;
  --navy:#0D2A5C; --navy2:#16407F; --navy-line:#3A5D96; --navy-sub:#B9CBEA; --navy-text:#D8E3F5;
  --cta:#A51C30; --cta-h:#8A1627; --cta-ink:#FFFFFF; --link:#A51C30; --pen:#C8102E;
}
@media (prefers-color-scheme:dark){html.auto-theme:not([data-theme="light"]){--navy:#081B3D;--navy2:#0F2D5E;--link:#F59AA6;--pen:#FF5C70}}
html.auto-theme[data-theme="dark"]{--navy:#081B3D;--navy2:#0F2D5E;--link:#F59AA6;--pen:#FF5C70}
.btn.primary{box-shadow:0 2px 0 rgba(0,0,0,.18)}
.tag{background:#FFFFFF;color:var(--navy)}
.dot[aria-current="true"] span{background:rgba(255,255,255,.3)}
.dot[aria-current="true"] span::after{background:#FFFFFF}
.datebox .left{background:rgba(255,255,255,.12);color:#FFFFFF}
.nav a::after{background:var(--pen)}
.tile.primary{border-color:color-mix(in srgb,var(--cta) 35%,var(--line));background:color-mix(in srgb,var(--cta) 7%,var(--card))}
input:focus,select:focus,textarea:focus{border-color:var(--hau-xanh);box-shadow:0 0 0 3px color-mix(in srgb,var(--hau-xanh) 25%,transparent)}

/* cụm đồng thương hiệu */
.brand{align-items:center;gap:12px}
.logo-ph{flex:none;width:44px;height:44px;border:1.5px dashed var(--input);border-radius:6px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:9px;line-height:1.15;font-weight:600;color:var(--muted);background:var(--card)}
.brand-tx{display:flex;flex-direction:column;line-height:1.15}
.brand-tx .bt{font-size:15px;font-weight:500;color:var(--muted)}
.brand-tx .bt b{font-size:21px;font-weight:800;letter-spacing:-.02em;color:var(--ink)}
.brand-tx .bs{font-size:12px;color:var(--muted);margin-top:3px}

/* thước T dưới tiêu đề mục */
.tsq{position:relative;height:14px;margin:6px 0 16px;max-width:360px}
.tsq::before{content:"";position:absolute;left:12px;right:0;top:6px;height:2px;background:var(--ink);opacity:.85}
.tsq i{position:absolute;left:0;top:0;width:14px;height:14px;border-left:4px solid var(--ink);opacity:.85}
.tsq::after{content:"";position:absolute;right:0;top:0;width:0;height:0;border-left:12px solid transparent;border-bottom:12px solid var(--pen);transform:translateY(-2px)}
.join .tsq{margin-bottom:4px}

/* trục lưới cho lịch */
.ax{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:1.5px solid currentColor;border-radius:50%;font-style:normal;font-size:11px;font-weight:700;margin-bottom:4px;opacity:.8}
.sh .ax{display:flex}
.sr .ax{display:flex}
.sc{border-left-style:dashed}
.sh{border-left-style:dashed}

/* vòng khoanh bút đỏ vẽ tay */
.ringed,.status{position:relative}
.ringed{font-style:normal}
.ring{position:absolute;left:-10px;right:-10px;top:-7px;bottom:-7px;width:calc(100% + 20px);height:calc(100% + 14px);pointer-events:none;overflow:visible}
.ring path{fill:none;stroke:var(--pen);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:600;stroke-dashoffset:0}
.sh.today .ring path{stroke:#FF8A98}
.sh.today{background:var(--navy);color:#fff}
@media (prefers-reduced-motion:no-preference){.ring path{animation:draw 1.1s ease-out .3s both}}
@keyframes draw{from{stroke-dashoffset:600}to{stroke-dashoffset:0}}
.s-open{background:transparent;color:var(--pen);font-weight:700;padding:4px 10px}

/* góc ê-ke */
.pcode{clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);padding-right:14px}
.course{position:relative}
.course::after{content:"";position:absolute;top:-1px;right:-1px;width:0;height:0;border-top:16px solid var(--bar,var(--xam));border-left:16px solid transparent;border-top-right-radius:12px;opacity:.9}

/* khung tên bản vẽ ở chân trang */
.foot{background:var(--bg);border-top:0;padding:28px 0 32px}
.tb{display:grid;grid-template-columns:72px minmax(0,2.2fr) minmax(0,2fr) repeat(3,minmax(0,.8fr));border:2px solid var(--ink);background:var(--card)}
.tb-c{padding:10px 12px;border-left:1px solid var(--ink);display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;font-size:13px;color:var(--muted)}
.tb-c:first-child{border-left:0}
.tb-c small{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.tb-c b{font-size:15px;color:var(--ink);letter-spacing:.04em}
.tb-name b{font-size:17px;letter-spacing:.12em}
.tb-logo{align-items:center}
.tb-note{margin:8px 0 0;font-size:12px;color:var(--muted);text-align:right;letter-spacing:.06em}
@media (max-width:900px){
  .tb{grid-template-columns:72px minmax(0,1fr) repeat(3,minmax(0,1fr))}
  .tb-c:nth-child(3){grid-column:1 / -1;border-left:0;border-top:1px solid var(--ink);order:9}
}
@media (max-width:560px){
  .tb{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tb-logo{display:none}
  .tb-name{grid-column:1 / -1;border-left:0}
  .tb-sm{border-top:1px solid var(--ink)}
  .tb-sm:nth-of-type(4){border-left:0}
  .brand-tx .bs{display:none}
}
@media (max-width:760px){.foot{padding-bottom:90px}}

/* ===== Góc vuông, nét vẽ chờm qua nhau như bản vẽ tay ===== */
:root{--xo:7px;--xw:1px;--xl:color-mix(in srgb,var(--ink) 35%,var(--line))}
*,*::before,*::after{border-radius:0!important}
.ax,.done h3::before{border-radius:50%!important}
.cls .live::before{border-radius:50%!important}
/* khung có nét chờm: bỏ viền thật, vẽ 2 cặp nét bằng ::before (ngang) và ::after (dọc) */
.card,.prog,.course,.tile,.xbox,.datebox,.ag-day,fieldset,.tb,.ag-none{position:relative;border-color:transparent!important;box-shadow:none!important}
.card::before,.prog::before,.course::before,.tile::before,.xbox::before,.datebox::before,.ag-day::before,fieldset::before,.tb::before,.ag-none::before{content:"";position:absolute;top:0;bottom:0;left:calc(-1 * var(--xo));right:calc(-1 * var(--xo));border-top:var(--xw) solid var(--xl);border-bottom:var(--xw) solid var(--xl);pointer-events:none;z-index:1}
.card::after,.prog::after,.course::after,.tile::after,.xbox::after,.datebox::after,.ag-day::after,fieldset::after,.tb::after,.ag-none::after{content:"";position:absolute;left:0;right:0;top:calc(-1 * var(--xo));bottom:calc(-1 * var(--xo));border-left:var(--xw) solid var(--xl);border-right:var(--xw) solid var(--xl);pointer-events:none;z-index:1}
/* độ đậm nét theo cấp: khung lớn nét đậm hơn */
.card,.prog,.xbox{--xw:1.5px;--xl:color-mix(in srgb,var(--ink) 55%,var(--line))}
.tb{--xw:2px;--xl:var(--ink);--xo:9px;border:0!important}
.datebox{--xl:var(--navy-line)}
.tile,.course{--xo:5px}
.tile:hover,.course:hover{--xl:var(--ink);box-shadow:none!important;transform:none}
.tile[aria-expanded="true"]{--xl:var(--ink)}
.course:hover{background:var(--card)}
.sched-box{border:0!important;box-shadow:none!important;border-radius:0}
.xbox{background:var(--card)}
.sched-frame{margin:0}
/* dải màu chương trình và tam giác ê-ke chuyển sang nền (pseudo đã dùng để vẽ nét) */
.prog{overflow:visible;background:linear-gradient(var(--bar,var(--xam)),var(--bar,var(--xam))) top left / 100% 4px no-repeat,var(--card)}
.course{background:linear-gradient(225deg,var(--bar,var(--xam)) 0 11px,transparent 11px) top right / 16px 16px no-repeat,var(--card2)}
.course:hover{background:linear-gradient(225deg,var(--bar,var(--xam)) 0 11px,transparent 11px) top right / 16px 16px no-repeat,var(--card)}
legend{position:relative;z-index:2;background:var(--card)}
.tsq i{border-radius:0!important}
/* nét chờm nhỏ cho ô lịch hôm nay và thanh nhập liệu: chỉ góc vuông, không chờm (tránh rối) */
input,select,textarea,.btn,.chip,.tag,.status,.pcode,.logo-ph,.icon-btn,.tile-ic{border-radius:0!important}
.pcode{clip-path:none}
@media (max-width:760px){:root{--xo:5px}}
/* xóa thuộc tính cũ của pseudo (dải màu, tam giác) để nét chờm vẽ đủ */
.card::before,.prog::before,.course::before,.tile::before,.xbox::before,.datebox::before,.ag-day::before,fieldset::before,.tb::before,.ag-none::before{width:auto;height:auto;background:none;opacity:1;border-left:0;border-right:0;transform:none}
.card::after,.prog::after,.course::after,.tile::after,.xbox::after,.datebox::after,.ag-day::after,fieldset::after,.tb::after,.ag-none::after{width:auto;height:auto;background:none;opacity:1;border-top:0;border-bottom:0;transform:none}

/* ===== Nét gạch chân vẽ tay (thay thước T) ===== */
.tsq{position:relative;height:18px;max-width:380px;margin:4px 0 16px;color:var(--ink)}
.tsq::before,.tsq::after,.tsq i{display:none}
.tsq svg{display:block;width:100%;height:18px;overflow:visible}
.tsq path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.tsq .hl-main{stroke:currentColor;stroke-width:1.9}
.tsq .hl-ghost{stroke:currentColor;stroke-width:.9;opacity:.45}
.tsq .hl-tick{stroke:currentColor;stroke-width:1.6}
.tsq .hl-red{stroke:var(--pen);stroke-width:2.2}
@media (prefers-reduced-motion:no-preference){
  .tsq path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .9s cubic-bezier(.4,.1,.2,1)}
  .tsq .hl-tick{transition-duration:.25s}
  .tsq .hl-ghost{transition-delay:.35s}
  .tsq .hl-red{transition-delay:.8s;transition-duration:.25s}
  .tsq.drawn path{stroke-dashoffset:0}
}
/* nét gạch chân: chỉ một nét đậm, rung đều */
.tsq{height:12px;width:380px;max-width:100%;margin:6px 0 16px}
.tsq svg{height:12px}
.tsq .hl-main{stroke:currentColor;stroke-width:2.4}
@media (prefers-reduced-motion:no-preference){.tsq .hl-main{transition:stroke-dashoffset 1s cubic-bezier(.45,.05,.25,1)}}
/* nét kéo chậm: hình mực có độ đậm thay đổi, hiện ra đều từ trái sang phải */
.tsq .hl-ink{fill:currentColor;stroke:none}
.tsq svg{clip-path:inset(0 0 0 0)}
@media (prefers-reduced-motion:no-preference){
  .tsq svg{clip-path:inset(0 100% 0 0);transition:clip-path 1s linear}
  .tsq.drawn svg{clip-path:inset(0 0 0 0)}
}

/* gạch chân dài bằng khung bên dưới: chấm hai đầu trước, rồi kéo nét nối */
.tsq{width:100%;max-width:none;height:12px;margin:8px 0 18px;position:relative}
.tsq svg{position:absolute;left:0;top:0;width:100%;height:12px;overflow:visible}
.tsq .hd{position:absolute;top:6px;width:7px;height:7px;background:currentColor;border-radius:50%!important;transform:translate(-50%,-50%);z-index:1}
.tsq .hd.l{left:0}
.tsq .hd.r{left:100%}
@media (prefers-reduced-motion:no-preference){
  .tsq .hd{opacity:0;transform:translate(-50%,-50%) scale(.2);transition:opacity .15s ease,transform .2s cubic-bezier(.3,1.6,.5,1)}
  .tsq .hd.r{transition-delay:.18s}
  .tsq.drawn .hd{opacity:1;transform:translate(-50%,-50%) scale(1)}
  .tsq svg{clip-path:inset(0 100% 0 0);transition:clip-path 1s linear .42s}
  .tsq.drawn svg{clip-path:inset(0 0 0 0)}
}
.tsq i.hd{display:block}
.tsq svg{left:calc(-1 * var(--xo));width:calc(100% + 2 * var(--xo))}
/* bỏ dải màu đậm trên khung chương trình: mọi cạnh khung cùng một nét mảnh */
.prog{background:var(--card)}
/* bỏ tam giác màu ở góc thẻ khóa học */
.course{background:var(--card2)}
.course:hover{background:var(--card)}

/* ===== Cả trang là một tờ bản vẽ: lề đóng gáy bên trái, khung bản vẽ, dấu định tâm, khung tên góc dưới phải ===== */
:root{--desk:#DCDFD8}
@media (prefers-color-scheme:dark){html.auto-theme:not([data-theme="light"]){--desk:#060B14}}
html.auto-theme[data-theme="dark"]{--desk:#060B14}
html.auto-theme body{background:var(--desk)}
.sheet{position:relative;margin:14px 14px 14px 34px;padding:10px;background:var(--bg);box-shadow:0 1px 0 rgba(0,0,0,.04),0 6px 24px rgba(0,0,0,.08)}
.sheet-in{position:relative;min-height:calc(100vh - 48px);display:flex;flex-direction:column;--fw:2px;--fl:var(--ink)}
.sheet-in>main{flex:1 0 auto}
/* khung bản vẽ: nét đậm, chờm góc */
.sheet-in::before{content:"";position:absolute;top:0;bottom:0;left:calc(-1 * var(--xo));right:calc(-1 * var(--xo));border-top:var(--fw) solid var(--fl);border-bottom:var(--fw) solid var(--fl);pointer-events:none;z-index:30}
.sheet-in::after{content:"";position:absolute;left:0;right:0;top:calc(-1 * var(--xo));bottom:calc(-1 * var(--xo));border-left:var(--fw) solid var(--fl);border-right:var(--fw) solid var(--fl);pointer-events:none;z-index:30}
/* dấu định tâm giữa mỗi cạnh */
.cm{position:absolute;background:var(--fl);z-index:31;pointer-events:none}
.cm-t,.cm-b{left:50%;width:1.5px;height:16px;transform:translateX(-50%)}
.cm-t{top:-10px}.cm-b{bottom:-10px}
.cm-l,.cm-r{top:50%;height:1.5px;width:16px;transform:translateY(-50%)}
.cm-l{left:-10px}.cm-r{right:-10px}
/* header dính vẫn nằm trong khung */
.top{z-index:20}
/* chân trang: khung tên đặt ở góc dưới bên phải, dùng chung cạnh phải và cạnh đáy với khung bản vẽ */
.foot{background:transparent!important;border:0;padding:0!important;margin-top:48px}
.foot-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.tb-note{margin:0;padding:0 0 12px 24px;font-size:12px;letter-spacing:.06em;color:var(--muted);text-align:left}
.tb-note span{letter-spacing:0;font-style:italic;opacity:.8}
.tb{width:min(560px,100%);margin-left:auto;grid-template-columns:64px repeat(3,minmax(0,1fr))!important;grid-template-rows:auto auto auto;background:var(--card);--xl:var(--ink);--xw:1.5px}
.tb::before{border-bottom:0!important;right:0!important}
.tb::after{border-right:0!important;bottom:0!important}
.tb-c{border-left:1px solid var(--ink);border-top:1px solid var(--ink)}
.tb-logo{grid-column:1;grid-row:1 / 4;border-left:0;border-top:0;align-items:center;justify-content:center}
.tb-name{grid-column:2 / 5;grid-row:1;border-top:0}
.tb-ct{grid-column:2 / 5;grid-row:2}
.tb-sm{grid-row:3}
.tb-c:nth-child(3){order:0}
@media (max-width:900px){.tb{grid-template-columns:64px repeat(3,minmax(0,1fr))!important}.tb-c:nth-child(3){grid-column:2 / 5;border-left:1px solid var(--ink);border-top:1px solid var(--ink)}}
@media (max-width:760px){
  .sheet{margin:6px 6px 6px 16px;padding:6px}
  .sheet-in{min-height:calc(100vh - 24px)}
  .cm-t{top:-7px}.cm-b{bottom:-7px}.cm-l{left:-7px}.cm-r{right:-7px}
  .cm-t,.cm-b{height:11px}.cm-l,.cm-r{width:11px}
  .foot-row{flex-direction:column;align-items:stretch;gap:8px}
  .tb-note{padding:0 16px}
  .tb{width:100%}
  .foot{padding-bottom:0!important}
}
@media (max-width:560px){
  .tb{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .tb-logo{display:none}
  .tb-name,.tb-ct{grid-column:1 / 4;border-left:0}
  .tb-sm{grid-row:3}
  .tb-sm:nth-of-type(4){border-left:0}
}
@media (max-width:560px){.tb-c.tb-ct{grid-column:1 / 4;border-left:0}}
@media (max-width:440px){
  .logo-ph{width:36px;height:36px;font-size:8px}
  .brand{gap:8px}
  .brand-tx .bt b{font-size:18px}.brand-tx .bt{font-size:13px}
  .top-in .btn.primary{padding:0 10px;font-size:13px;min-height:40px}
}

/* ===== Bỏ khung cấp giữa: mục "Tham gia" và khung chương trình nằm thẳng trên giấy ===== */
.card,.prog{background:transparent!important;padding-left:0!important;padding-right:0!important;box-shadow:none!important}
.card::before,.card::after,.prog::before,.prog::after{display:none!important}
.card{padding-top:0!important;padding-bottom:0!important}
.programs{gap:44px}
.prog{padding-top:0!important;padding-bottom:0!important}
.prog h3{font-size:21px}
.tiles .tile{background:var(--card)}

/* ===== Bỏ hai chấm ở nét gạch chân ===== */
.tsq .hd,.tsq i.hd{display:none!important}
@media (prefers-reduced-motion:no-preference){.tsq svg{transition:clip-path 1s linear}}

/* ===== Hai ô thao tác nằm trong khung tên ===== */
.tb{grid-template-rows:auto auto auto auto}
.tb-logo{grid-row:1 / 5}
.tb-act{grid-row:4;text-decoration:none;color:var(--ink);min-height:52px;cursor:pointer;transition:background-color .15s ease}
.tb-act b{font-size:15px;letter-spacing:.02em}
.tb-c.tb-reg{grid-column:2 / 4;background:var(--cta);color:var(--cta-ink)}
.tb-c.tb-reg small{color:inherit;opacity:.8}
.tb-c.tb-reg:hover{background:var(--cta-h)}
.tb-c.tb-cal{grid-column:4 / 5}
.tb-c.tb-cal:hover{background:var(--card2)}
@media (max-width:560px){
  .tb-c.tb-reg{grid-column:1 / 3;border-left:0}
  .tb-c.tb-cal{grid-column:3 / 4}
}
/* thanh nổi trên điện thoại = đúng hai ô của khung tên, nằm gọn trong khung bản vẽ, không còn nền xanh tràn */
@media (max-width:760px){
  .mbar{left:22px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));padding:0;gap:0;background:var(--card);box-shadow:none;display:grid;grid-template-columns:2fr 1fr;border:1.5px solid var(--ink)}
  .mbar .tb-act{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:8px 12px;min-height:52px;font-size:13px}
  .mbar .tb-act small{font-size:10px;letter-spacing:.1em;text-transform:uppercase}
  .mbar .tb-reg{background:var(--cta);color:var(--cta-ink)}
  .mbar .tb-reg small{opacity:.8}
  .mbar .tb-cal{border-left:1px solid var(--ink);color:var(--ink)}
  .mbar .tb-cal small{color:var(--muted)}
}
@media (max-width:760px){.mbar{transform:translateY(calc(100% + 40px))}.mbar.show{transform:none}}
.tb-c.tb-reg b,.tb-c.tb-reg small{color:var(--cta-ink)}

/* ===== 1. Ký hiệu chi tiết cạnh tiêu đề mục ===== */
.h-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.callout{flex:none;position:relative;width:44px;height:44px;border:1.5px solid var(--ink);border-radius:50%!important;background:var(--card);color:var(--ink);font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;line-height:1}
.callout::before{content:"";position:absolute;left:-5px;right:-5px;top:50%;height:1.5px;background:var(--ink)}
.callout b{font-size:14px;font-weight:700;margin-bottom:5px}
.callout i{font-style:normal;font-size:10px;font-weight:600;margin-top:5px;color:var(--muted)}
.callout:hover{background:var(--card2)}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:60;background:var(--ink);color:var(--card);font-size:14px;padding:10px 16px;max-width:calc(100vw - 48px)}
/* Δ cạnh mục vừa cập nhật */
.delta{font-size:12px;font-weight:700;color:var(--pen);border:1.5px solid var(--pen);padding:1px 7px 2px;letter-spacing:.02em;align-self:center}
.rev-tri{color:var(--pen);font-weight:700;margin-right:4px}

/* ===== 2. Gạch mặt cắt 45° cho phần đã qua / đã kết thúc ===== */
:root{--hatch:color-mix(in srgb,var(--ink) 16%,transparent)}
.sc.past,.sh.past,.ag-day.past,.course.ended{background-image:repeating-linear-gradient(45deg,var(--hatch) 0 1px,transparent 1px 7px)!important}
.sc.past .cls,.ag-day.past .cls{opacity:.72}
.sh.past b,.sh.past span{opacity:.75}
.course.ended h4,.course.ended p,.course.ended .code{opacity:.7}
.course.ended .btn[aria-disabled]{cursor:default;border-style:dashed;color:var(--muted);background:transparent}
.s-end{background:transparent;color:var(--muted);border:1px dashed var(--input);padding:3px 8px}

/* ===== 3. Đường kích thước (thời lượng) ===== */
.dim{display:flex;align-items:center;gap:8px;position:relative;padding:0 2px;color:var(--muted);font-size:12px;letter-spacing:.04em;margin:2px 0}
.dim .dl{flex:1 1 auto;height:1px;background:currentColor;opacity:.75}
.dim b{font-weight:700;white-space:nowrap;color:var(--ink)}
.dim::before,.dim::after{content:"";position:absolute;top:50%;width:11px;height:1.5px;background:currentColor;transform:translateY(-50%) rotate(-45deg)}
.dim::before{left:-4px}.dim::after{right:-4px}
.dim.inv{color:var(--navy-sub);max-width:300px;margin-top:2px}
.dim.inv b{color:#fff}
.course .dim{margin-top:4px}

/* ===== 4. Mũi tên chỉ Bắc: lên đầu trang ===== */
.north{position:fixed;right:34px;bottom:34px;z-index:40;width:56px;height:70px;padding:4px 8px;border:0;background:var(--card);color:var(--ink);cursor:pointer;opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;box-shadow:0 0 0 1.5px var(--ink)}
.north.show{opacity:1;pointer-events:auto;transform:none}
.north:hover svg{transform:translateY(-2px)}
.north svg{transition:transform .15s ease}
@media (max-width:760px){.north{right:18px;bottom:calc(84px + env(safe-area-inset-bottom,0px));width:48px;height:60px}}

/* ===== 5. Thước tỷ lệ và dòng sửa đổi trong khung tên ===== */
.scale{position:relative;display:grid;grid-template-columns:repeat(4,12px);height:6px;margin-top:6px;border:1px solid var(--ink);width:max-content}
.scale i{display:block;height:100%}
.scale i:nth-child(odd){background:var(--ink)}
.scale em{position:absolute;top:8px;font-size:9px;font-style:normal;color:var(--muted);transform:translateX(-50%)}
.scale em:nth-of-type(1){left:0}.scale em:nth-of-type(2){left:50%}.scale em:nth-of-type(3){left:100%}
.tb-sm:has(.scale){padding-bottom:18px}
.tb{grid-template-rows:auto auto auto auto auto}
.tb-logo{grid-row:1 / 6}
.tb-c.tb-rev{grid-column:2 / 5;grid-row:4}
.tb-rev span{font-size:13px;color:var(--ink)}
.tb-act{grid-row:5}
@media (max-width:560px){.tb-c.tb-rev{grid-column:1 / 4;border-left:0}}

/* ===== Ô lớp học: gạch vật liệu có màu thay cho tô đặc (mỗi chương trình một kiểu gạch) ===== */
:root{--hx:color-mix(in srgb,var(--xanh) 42%,transparent);--hc:color-mix(in srgb,var(--cam) 42%,transparent);--hl:color-mix(in srgb,var(--luc) 45%,transparent);--ht:color-mix(in srgb,var(--tim) 42%,transparent);--hg:color-mix(in srgb,var(--xam) 40%,transparent)}
.cls{background-color:var(--card)!important;border:1px solid currentColor;position:relative}
.cls.c-xanh{color:var(--xanh-fg);border-color:var(--xanh);background-image:repeating-linear-gradient(45deg,var(--hx) 0 1px,transparent 1px 6px)}
.cls.c-cam{color:var(--cam-fg);border-color:var(--cam);background-image:repeating-linear-gradient(45deg,var(--hc) 0 1px,transparent 1px 7px),repeating-linear-gradient(-45deg,var(--hc) 0 1px,transparent 1px 7px)}
.cls.c-luc{color:var(--luc-fg);border-color:var(--luc);background-image:repeating-linear-gradient(-45deg,var(--hl) 0 1px,transparent 1px 6px)}
.cls.c-tim{color:var(--tim-fg);border-color:var(--tim);background-image:repeating-linear-gradient(0deg,var(--ht) 0 1px,transparent 1px 5px)}
.cls.c-xam{color:var(--xam-fg);border-color:var(--xam);background-image:radial-gradient(var(--hg) 1px,transparent 1.3px);background-size:6px 6px}
/* chữ đọc rõ trên nền gạch: mỗi dòng có nền giấy mỏng */
.cls>span{align-self:flex-start;background:color-mix(in srgb,var(--card) 88%,transparent);padding:0 3px;margin-left:-3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.cls .live{background:var(--ink)!important;margin-left:0}
.sc.past .cls{opacity:.75}
/* ô chú thích trong bộ lọc cũng là mẫu gạch */
.chip i{width:14px;height:14px;border:1px solid}
.chip i.k-xanh{border-color:var(--xanh);background:repeating-linear-gradient(45deg,var(--hx) 0 1px,transparent 1px 4px)}
.chip i.k-cam{border-color:var(--cam);background:repeating-linear-gradient(45deg,var(--hc) 0 1px,transparent 1px 4px),repeating-linear-gradient(-45deg,var(--hc) 0 1px,transparent 1px 4px)}
.chip i.k-luc{border-color:var(--luc);background:repeating-linear-gradient(-45deg,var(--hl) 0 1px,transparent 1px 4px)}
.chip i.k-tim{border-color:var(--tim);background:repeating-linear-gradient(0deg,var(--ht) 0 1px,transparent 1px 4px)}
.chip i.k-xam{border-color:var(--xam);background:radial-gradient(var(--hg) 1px,transparent 1.3px);background-size:4px 4px}
.chip[aria-pressed="true"] i{background-color:var(--card)}
/* gạch "đã qua" nhạt hơn, thưa hơn để không lấn gạch vật liệu của lớp học */
.sc.past,.ag-day.past{background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--ink) 8%,transparent) 0 1px,transparent 1px 11px)!important}
/* mũi tên chỉ Bắc cố định trong khung tên khi đã cuộn tới chân trang */
.tb-wrap{position:relative;width:min(560px,100%);margin-left:auto}
.tb-wrap .tb{width:100%}
.north-static{position:absolute;right:0;bottom:calc(100% + 14px);color:var(--ink);display:block;width:40px;height:54px}
.north-static:hover svg{transform:translateY(-2px)}
.north-static svg{transition:transform .15s ease}
@media (max-width:760px){.tb-wrap{width:100%}.north-static{right:10px}}
@media (max-width:760px){.tb-note{padding-right:64px}}

/* thanh báo bản mới */
.newver{position:fixed;left:50%;top:calc(10px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:100;display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#172231;color:#fff;padding:10px 12px 10px 16px;font-size:14px;max-width:calc(100vw - 24px);box-shadow:0 6px 20px rgba(0,0,0,.25)}
.newver button{min-height:40px;padding:0 14px;border:1px solid #fff;background:transparent;color:#fff;font:inherit;font-weight:700;cursor:pointer}

/* ================= R2.2 ================= */
/* 7. Màu lấy từ logo trường */
:root{--hau-xanh:#0093DD;--navy:#152347;--navy2:#1D3266;--navy-line:#3B5288;--navy-sub:#B5C3E0;--navy-text:#D7DFF0}
@media (prefers-color-scheme:dark){html.auto-theme:not([data-theme="light"]){--navy:#0E1834;--navy2:#16254D}}
html.auto-theme[data-theme="dark"]{--navy:#0E1834;--navy2:#16254D}
:focus-visible{outline-color:var(--hau-xanh)}
/* logo: bản xanh trên nền sáng, bản trắng trên nền tối */
.logo{flex:none;display:inline-flex;width:44px}
.logo img,.tb-logo img{display:block;width:100%;height:auto}
.lg-w{display:none!important}
@media (prefers-color-scheme:dark){html.auto-theme:not([data-theme="light"]) .lg-b{display:none!important}html.auto-theme:not([data-theme="light"]) .lg-w{display:block!important}}
html.auto-theme[data-theme="dark"] .lg-b{display:none!important}
html.auto-theme[data-theme="dark"] .lg-w{display:block!important}
@media (max-width:440px){.logo{width:36px}}

/* 1. Ngày đã qua: nền trắng, không gạch */
.sc.past,.sh.past,.ag-day.past{background-image:none!important}
.sc.past,.ag-day.past{background-color:var(--card)!important}
.sh.past{background-color:var(--card)}
.sh.past b,.sh.past span{opacity:1}

/* 2. Ngăn cách giữa các chương trình: nét run mảnh hơn */
.tsq.tsq-sep{margin:0;height:12px}
.programs{gap:30px}

/* 3. Tạm ẩn ký hiệu chi tiết (giữ mã để dùng lại) */
.callout{display:none!important}

/* 4. Mục Tham gia không tiêu đề */
.join{gap:0}
#dang-ky{padding-top:36px}

/* 6. Đầu cột ngày / đầu hàng buổi theo ký hiệu trục */
.sh{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.sh .wd-t{font-size:13px;font-weight:600;letter-spacing:.02em}
.sh .ax,.sh .ax-sp{margin:2px 0 12px}
.ax{position:relative;opacity:1}
.ax-sp{display:block;width:22px;height:22px}
.axd::after{content:"";position:absolute;left:50%;top:100%;width:1.5px;height:8px;background:currentColor;transform:translateX(-50%)}
.axr::after{content:"";position:absolute;top:50%;left:100%;height:1.5px;width:10px;background:currentColor;transform:translateY(-50%)}
.sr .ax{margin-bottom:6px}
.sh.today .ax{border-color:#fff}

/* 8. Khung tên: logo + tên trường; Đơn vị hai dòng; Liên hệ GĐ trung tâm */
.tb{grid-template-columns:104px repeat(3,minmax(0,1fr))!important}
.tb-logo{flex-direction:column;gap:6px;padding:10px 8px;text-align:center}
.tb-logo img{width:56px}
.tb-school{font-size:10px;line-height:1.3;font-weight:600;color:var(--ink);letter-spacing:.02em}
.tb-name .u1{font-size:13px;color:var(--ink)}
.tb-name .u2{font-size:15px;letter-spacing:.01em;line-height:1.35}
.tb-ct span{font-size:13px;color:var(--ink);line-height:1.5}
.tb-ct a{color:inherit;text-decoration:underline;text-underline-offset:2px;text-decoration-color:color-mix(in srgb,var(--ink) 35%,transparent)}
.tb-wrap{width:min(620px,100%)}
@media (max-width:900px){.tb{grid-template-columns:104px repeat(3,minmax(0,1fr))!important}}
@media (max-width:560px){
  .tb{grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:none}
  .tb-c.tb-logo{display:flex;grid-column:1 / 4;grid-row:1;flex-direction:row;justify-content:flex-start;gap:12px;border-left:0;border-top:0;text-align:left}
  .tb-logo img{width:40px}
  .tb-school{font-size:12px}
  .tb-c.tb-name{grid-row:2;border-top:1px solid var(--ink)}
  .tb-c.tb-ct{grid-row:3}
  .tb-sm{grid-row:4}
  .tb-c.tb-rev{grid-row:5}
  .tb-act{grid-row:6}
}
@media (max-width:560px){.tb-school .brd{display:none}}
