/* Bản đồ chiến lược + Lộ trình 3 tháng */
@media (max-width:1440px){
  header.top .nav{display:none;position:absolute;top:60px;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;padding:8px 16px;margin:0}
  header.top .nav.open{display:flex}
  header.top .menu-btn{display:grid;place-items:center}
}
.map-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:14px;margin:18px 0 6px;box-shadow:var(--shadow)}
.map-svg svg{width:100%;height:auto;display:block}
.map-list{display:none}
.map-hint{font-size:13px;color:var(--muted);text-align:center;padding:4px 0 2px}
#mapsvg .ly{font-weight:800;font-size:15px;letter-spacing:.04em}
#mapsvg .lyn{font-size:12px;fill:var(--muted);font-weight:600}
#mapsvg .grp{fill:none;stroke:var(--ink2);stroke-dasharray:6 5;stroke-width:1.2;opacity:.55}
#mapsvg .gl,#mapsvg .gl2,#mapsvg .el{paint-order:stroke;stroke:var(--surface);stroke-width:5px;stroke-linejoin:round}
#mapsvg .grp{pointer-events:none}
#mapsvg .gl{font-size:12.5px;fill:var(--ink2);font-weight:600}
#mapsvg .gl2{font-size:13px;font-weight:700}
#mapsvg .el{font-size:12px;fill:var(--muted);font-style:italic}
#mapsvg .ed{fill:none;stroke:var(--ink2);stroke-width:1.6;opacity:.45;transition:opacity .15s,stroke-width .15s}
#mapsvg .ed.dash{stroke-dasharray:5 5}
#mapsvg.focus .ed{opacity:.08}
#mapsvg.focus .ed.on{opacity:1;stroke:var(--accent);stroke-width:2.6}
#mapsvg .nd{cursor:pointer;outline:none;transition:opacity .15s}
#mapsvg .nd .nb{fill:var(--surface);stroke:var(--nc);stroke-width:2;transition:fill .15s}
#mapsvg .nd:hover .nb,#mapsvg .nd:focus .nb,#mapsvg .nd.sel .nb{fill:var(--nc)}
#mapsvg .nd:hover text,#mapsvg .nd:focus text,#mapsvg .nd.sel text{fill:#fff}
#mapsvg .nd.dim{opacity:.28}
#mapsvg .nt{font-size:15px;font-weight:700;fill:var(--ink)}
#mapsvg .nt.gt{font-size:17px;font-weight:800;letter-spacing:.02em}
#mapsvg .nk{font-size:11.5px;fill:var(--muted)}
#mapsvg [data-n="goal"] .nb{fill:var(--headbg);stroke:var(--headbg)}
#mapsvg [data-n="goal"] text{fill:var(--headink)}
/* danh sách trên điện thoại */
.ml{border-radius:14px;background:var(--lt);padding:10px}
.ml-h b{display:block;color:var(--lc);font-size:14px;letter-spacing:.03em}
.ml-h small{color:var(--ink2);font-size:13px}
.ml-b{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.mlc{display:block;text-align:left;background:var(--surface);border:1.5px solid var(--lc,var(--line));border-radius:12px;padding:8px 10px;cursor:pointer;width:100%}
.mlc b{display:block;font-size:14px}
.mlc small{color:var(--muted);font-size:12px}
.goalc{background:var(--headbg);border-color:var(--headbg);color:var(--headink);text-align:center}
.goalc small{color:var(--headink);opacity:.8}
.ml-ar{text-align:center;color:var(--muted);font-size:12px;font-weight:700;padding:4px 0}
/* ngăn chi tiết */
.drawer-back{position:fixed;inset:0;background:rgba(10,18,32,.35);opacity:0;pointer-events:none;transition:opacity .2s;z-index:60}
.drawer-back.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--surface);border-left:4px solid var(--lc,var(--accent));box-shadow:-10px 0 30px rgba(0,0,0,.15);transform:translateX(105%);transition:transform .25s;z-index:61;display:flex;flex-direction:column}
.drawer.open{transform:none}
.dr-in{overflow-y:auto;padding:22px 22px 40px}
.dr-x{position:absolute;top:10px;right:12px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--surface);font-size:22px;line-height:1;cursor:pointer;z-index:2}
.dr-k{font-size:12px;font-weight:800;letter-spacing:.08em;color:var(--lc);text-transform:uppercase}
.drawer h2{margin:4px 40px 8px 0;font-size:23px;line-height:1.25}
.drawer h3{font-size:14px;margin:18px 0 6px;color:var(--ink2);text-transform:uppercase;letter-spacing:.05em}
.drawer p{margin:0 0 6px}
.drawer ul,.drawer ol{margin:0;padding-left:20px}
.drawer li{margin:3px 0}
.dr-l{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0}
.dr-l span{font-size:13px;color:var(--muted);min-width:96px}
.dr-ex{background:var(--lt);border-radius:12px;padding:10px 12px;margin-top:14px;font-size:14.5px}
.dr-ex b{display:block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--lc)}
.dr-links{display:flex;flex-wrap:wrap;gap:6px}
/* hướng dẫn */
.g-read{display:flex;align-items:stretch;gap:8px}
.g-step{flex:1;background:var(--lt);border-radius:14px;padding:12px;border-top:4px solid var(--lc)}
.g-step b{display:block;color:var(--lc);font-size:14px}
.g-step p{margin:4px 0 0;font-size:14px;color:var(--ink2)}
.g-n{width:26px;height:26px;border-radius:50%;background:var(--lc);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px;margin-bottom:6px}
.g-arr{align-self:center;color:var(--muted);font-weight:800}
.howto{padding-left:22px;margin:0}
.howto li{margin:8px 0}
.howto .chip{vertical-align:baseline;padding:2px 9px}
.gloss{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.gloss div{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:9px 12px}
.gloss b{display:block;font-size:14px}
.gloss span{font-size:14px;color:var(--ink2)}
/* lộ trình */
.tiles{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin:18px 0 22px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.tile .ti{font-size:20px}
.tile b{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.2;font-variant-numeric:tabular-nums}
.tile span{font-size:13.5px;font-weight:600}
.tile small{font-size:12px;color:var(--muted)}
.ph{background:var(--pt);border-radius:20px;padding:16px;border:1.5px solid color-mix(in srgb,var(--pc) 40%,transparent)}
.ph-h{display:flex;gap:12px;align-items:center}
.ph-n{flex:none;width:44px;height:44px;border-radius:50%;background:var(--pc);color:#fff;display:grid;place-items:center;font-size:22px;font-weight:800}
.ph-h h2{margin:0;font-size:20px;color:var(--pc)}
.ph-h small{color:var(--ink2);font-size:14px}
.ph-k{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin:12px 0}
.ph-k div{background:var(--surface);border-radius:10px;padding:7px 9px}
.ph-k b{display:block;font-size:18px;font-weight:800;color:var(--pc);font-variant-numeric:tabular-nums}
.ph-k span{font-size:12px;color:var(--ink2)}
.wk{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;position:relative}
.wc{background:var(--surface);border-radius:14px;padding:12px;border-top:4px solid var(--pc);display:flex;flex-direction:column}
.wc-h{display:flex;justify-content:space-between;font-size:12px;font-weight:700}
.wn{color:var(--pc);letter-spacing:.05em;text-transform:uppercase}
.wv{color:var(--muted)}
.wc h3{margin:4px 0 6px;font-size:16px}
.wc ul{margin:0 0 8px;padding-left:18px;font-size:13.5px;color:var(--ink2)}
.wo{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:auto}
.wo span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);width:100%}
.wo em{font-style:normal;font-size:12.5px;font-weight:700;background:color-mix(in srgb,var(--pc) 14%,var(--surface));color:var(--ink);border-radius:999px;padding:2px 8px}
.wl{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px}
.wl a{font-size:12.5px;color:var(--pc);font-weight:600;text-decoration:none}
.wl a:hover{text-decoration:underline}
.gate{margin-top:12px;background:var(--surface);border:1.5px dashed var(--pc);border-radius:12px;padding:10px 12px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;font-size:14px}
.gate b{width:100%}
.ph-ar{text-align:center;color:var(--muted);font-size:20px;padding:4px 0}
.cc{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.cc h3{margin:0 0 6px;font-size:15px}
.chart{width:100%;height:auto;display:block}
.chart .gr{stroke:var(--line)}
.chart .ax{font-size:12px;fill:var(--muted)}
.chart .bv{font-size:13px;font-weight:700;fill:var(--ink)}
.fun{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.fun-r{display:grid;grid-template-columns:170px 1fr;gap:10px;align-items:center}
.fun-l{font-size:14px;font-weight:600}
.fun-bars{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.fun-c{display:flex;justify-content:center}
.fun-b{height:32px;border-radius:8px;display:grid;place-items:center;min-width:64px}
.fun-b span{color:#fff;font-weight:800;font-size:14px;font-variant-numeric:tabular-nums}
.fun-head small{font-weight:800;font-size:13px}
.rhythm{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.rd{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:2px}
.rd b{font-size:12px;color:var(--accent);font-weight:800}
.rd strong{font-size:14px}
.rd span{font-size:13px;color:var(--ink2)}
.rd small{margin-top:auto;font-size:12px;font-weight:700;color:var(--muted)}
@media (max-width:1100px){
  .tiles{grid-template-columns:repeat(4,1fr)}
  .ph-k{grid-template-columns:repeat(4,1fr)}
  .wk{grid-template-columns:repeat(2,1fr)}
  .rhythm{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:760px){
  .map-svg,.map-hint{display:none}
  .map-list{display:block}
  .map-card{padding:10px}
  .g-read{flex-direction:column}
  .g-arr{transform:rotate(90deg)}
  .gloss{grid-template-columns:1fr}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .ph{padding:12px}
  .ph-k{grid-template-columns:repeat(2,1fr)}
  .wk{grid-template-columns:1fr}
  .rhythm{grid-template-columns:1fr 1fr}
  .fun-r{grid-template-columns:1fr}
  .fun-bars{gap:6px}
  .fun-b{min-width:0;width:100%!important}
}
/* ===== bản đồ v2 ===== */
.flowbar{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 6px}
.flowbar button{border:2px solid var(--fc);background:var(--surface);color:var(--ink);border-radius:999px;padding:7px 14px;font-weight:700;font-size:14px;cursor:pointer}
.flowbar button.on,.flowbar button:hover{background:var(--fc);color:#fff}
.flownote{font-size:14px;color:var(--ink2);margin:4px 0 12px;min-height:22px}
.map2{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:16px;box-shadow:var(--shadow)}
.goal2{display:block;text-align:center;background:var(--headbg);color:var(--headink);border-radius:999px;padding:12px 20px;max-width:560px;margin:0 auto;cursor:pointer;position:relative}
.goal2 b{display:block;font-size:18px;letter-spacing:.02em}
.goal2 small{opacity:.85}
.lane-heads{display:grid;grid-template-columns:200px 1fr 1fr;gap:10px;margin:4px 0 6px}
.lane-heads::before{content:""}
.lane-heads div{border-radius:10px;background:var(--lc);color:#fff;padding:6px 12px;text-align:center}
.lane-heads b{font-size:14px;letter-spacing:.06em;margin-right:8px}
.lane-heads span{font-size:12.5px;opacity:.95}
.lv{display:grid;grid-template-columns:200px 1fr;gap:10px;align-items:stretch}
.lv-h{background:var(--lt);border-left:5px solid var(--lc);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;justify-content:center}
.lv-no{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.lv-h b{color:var(--lc);font-size:14px;line-height:1.3;letter-spacing:.02em}
.lv-h small{font-size:12.5px;color:var(--ink2);line-height:1.35;margin-top:3px}
.lv-b{background:color-mix(in srgb,var(--lt) 55%,transparent);border-radius:12px;padding:10px}
.lanes{display:grid;grid-template-columns:1fr 1fr;gap:10px;height:100%}
.lane{background:var(--lt);border-radius:10px;padding:8px;border-top:3px solid var(--lc)}
.lane-n,.row-n,.tree-n{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}
.lane-n>.nd2,.row-n>.nd2,.tree-n>.nd2{flex:1 1 130px}
.ar{align-self:center;color:var(--muted);font-weight:800;font-size:18px}
.nd2{position:relative;text-align:left;background:var(--surface);border:2px solid var(--nc,var(--lc));border-radius:12px;padding:8px 10px 8px 10px;cursor:pointer;transition:opacity .15s,box-shadow .15s,transform .15s;color:var(--ink);font:inherit;display:block}
.nd2 b{display:block;font-size:14.5px;line-height:1.3}
.nd2 small{display:block;color:var(--muted);font-size:12px;line-height:1.35;margin-top:2px}
.nd2:hover,.nd2:focus-visible{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.12)}
.nd2 .tg{position:absolute;top:-9px;left:8px;background:var(--c4);color:#fff;font-size:10.5px;font-weight:800;border-radius:6px;padding:1px 6px;letter-spacing:.04em}
.nd2 .star{position:absolute;top:-10px;right:-6px;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-style:normal;font-size:12px;display:grid;place-items:center;box-shadow:0 0 0 3px var(--surface)}
.nd2.key{border-width:2.5px;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.nd2 .fn{position:absolute;bottom:-9px;right:8px;font-style:normal;font-size:11px;font-weight:800;color:#fff;background:var(--fc,var(--ink));border-radius:999px;min-width:20px;height:20px;display:none;place-items:center;padding:0 5px}
.flowing .nd2.onflow .fn:not(:empty){display:grid}
.nd2.dim{opacity:.22}
.nd2.cur{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 45%,transparent)}
.nd2.rel{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.flowing .nd2.onflow{box-shadow:0 0 0 4px color-mix(in srgb,var(--fc) 45%,transparent)}
.bigc{padding:10px 12px;background:var(--surface)}
.bigc-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.bigc-h b{font-size:16px;color:var(--nc)}
.bigc-h span{font-size:12.5px;font-weight:700;background:var(--nt);border-radius:999px;padding:1px 8px}
.bigc dl{display:grid;grid-template-columns:78px 1fr;gap:4px 8px;margin:4px 0 8px;font-size:13.5px}
.bigc dt{font-weight:800;color:var(--nc);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding-top:2px}
.bigc dd{margin:0;color:var(--ink2);line-height:1.45}
.bigc-ch{display:flex;flex-wrap:wrap;gap:5px}
.bigc-ch .chip{font-size:12px;padding:3px 9px;background:var(--nt)}
.tree{display:flex;gap:8px;align-items:stretch}
.tree-g{flex:1;background:var(--surface);border:1.5px dashed color-mix(in srgb,var(--lc) 60%,transparent);border-radius:12px;padding:8px}
.tree-g:nth-of-type(2){flex:1.5}.tree-g:nth-of-type(3){flex:1.5}
.tree-h{font-size:12px;font-weight:800;color:var(--lc);letter-spacing:.08em;margin-bottom:10px}
.tree-h small{font-weight:600;color:var(--muted);letter-spacing:0;text-transform:none}
.loopnote{font-size:12.5px;color:var(--ink2);margin-top:8px;font-style:italic}
.gap{margin:3px 0 3px 210px;text-align:center;font-size:12.5px;color:var(--ink2);font-weight:600;padding:3px 0}
.gap>span,.gl-l>span{display:inline-block;color:var(--accent);font-size:14px;margin-right:6px}
.gap2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gl-l{color:var(--lc);font-weight:700}
.gl-l>span{color:var(--lc)}
.map2>.gap:first-of-type{margin-left:0}
.dr-key{background:color-mix(in srgb,var(--accent) 12%,var(--surface));border:1.5px solid var(--accent);border-radius:12px;padding:8px 12px;margin:6px 0 10px;font-size:14px}
.dr-key b{display:block;color:var(--accent);font-size:13px}
.train{margin-top:12px;background:var(--surface);border-left:4px solid var(--pc);border-radius:12px;padding:10px 12px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;font-size:14px}
.train b{width:100%}
.train span::before{content:"• ";color:var(--pc)}
.train a{font-size:13px;color:var(--pc);font-weight:700}
@media (max-width:900px){
  .lv{grid-template-columns:1fr}
  .lane-heads{grid-template-columns:1fr 1fr}
  .lane-heads::before{display:none}
  .gap{margin-left:0}
  .tree{flex-direction:column}
  .tar{transform:rotate(90deg);align-self:center}
}
@media (max-width:760px){
  .map2{padding:10px}
  .lanes{grid-template-columns:1fr}
  .lane-heads{display:none}
  .lane-tag{display:block}
  .lane{border-top-width:5px}
  .gap2{grid-template-columns:1fr;gap:2px}
  .bigc dl{grid-template-columns:1fr}
  .lane-heads b{display:block;margin:0}
}
.nd2.goal2{display:block;text-align:center;background:var(--headbg);color:var(--headink);border-color:var(--headbg);border-radius:999px;padding:12px 20px}
.nd2.goal2 small{color:var(--headink);opacity:.85}
.lane-tag{display:none;font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--lc);margin:0 0 6px}
/* mũi tên nối ô */
.map2{position:relative}
#edgeSvg{position:absolute;left:0;top:0;z-index:2;pointer-events:none;overflow:visible}
.map2 .nd2{z-index:3}
#edgeSvg .eg{fill:none;stroke:var(--line);stroke-width:1.4;opacity:.9;transition:opacity .15s,stroke .15s}
#edgeSvg .eg.back{stroke-dasharray:5 4}
#edgeSvg .ahg{fill:var(--line)}
#edgeSvg .ahd{fill:var(--ink)}
#edgeSvg.act .eg{opacity:.25}
#edgeSvg.act .eg.on{opacity:1;stroke:var(--ink);stroke-width:2.4}
.flowing #edgeSvg.act .eg.on{stroke:var(--fc)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) #edgeSvg .eg{stroke:#3A4866}:root:not([data-theme="light"]) #edgeSvg .ahg{fill:#3A4866}}
:root[data-theme="dark"] #edgeSvg .eg{stroke:#3A4866}
/* slide trong ngăn chi tiết */
body .lb{z-index:90}
.drawer h3 small{text-transform:none;letter-spacing:0;font-weight:500;color:var(--muted)}
.dr-sg{margin:6px 0 10px}
.dr-st{font-size:13px;font-weight:700;margin-bottom:5px}
.dr-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.dr-thumbs button{padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;cursor:zoom-in;background:var(--sand);aspect-ratio:16/9}
.dr-thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.dr-thumbs button:hover{outline:2px solid var(--lc)}
.map2 .gap{position:relative;z-index:3;text-shadow:0 0 3px var(--surface),0 0 3px var(--surface),0 0 6px var(--surface)}
/* v71: giai đoạn CoreViral + Gantt */
.gd{display:flex;gap:6px;margin:0 0 6px}
.gd-c{background:#121513;border:1px solid #262B27;border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;min-width:0;color:#B7BEB8}
.gd-c span{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
.gd-c b{font-family:var(--serif);font-weight:500;font-size:16px;color:#EEEFEA;line-height:1.25}
.gd-c small{font-size:11.5px}
.gd-c.on{background:#F4F3EE;border-color:#F5C518;box-shadow:0 0 0 2px #F5C518;color:#47544C}
.gd-c.on b{color:#13241C}
.gd-src{font-size:12.5px;color:var(--muted);margin:4px 0 14px}
.gd-src b{color:var(--ink)}
.kpi-src{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 16px}
.kpi-src>div{background:#121513;border:1px solid #262B27;border-radius:6px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;font-size:13px;color:#B7BEB8}
.kpi-src b{color:#EEEFEA;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.kpi-src small{color:#848C86;margin-left:4px}
.rv-bar{display:flex;gap:6px;margin:22px 0 12px;flex-wrap:wrap}
.rv-bar button{font:inherit;font-size:13.5px;font-weight:600;padding:9px 14px;border-radius:4px;border:1px solid #3A403B;background:transparent;color:#EEEFEA;cursor:pointer}
.rv-bar button.on{background:#F4F3EE;color:#13241C;border-color:#F4F3EE}
.rv-gantt{padding:18px 18px 14px}
.gt-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.gt{min-width:760px;display:flex;flex-direction:column}
.gt-r{display:grid;grid-template-columns:250px repeat(12,1fr);align-items:center;position:relative;min-height:30px}
.gt-r>.gt-c,.gt-r>.gt-b,.gt-r>.gt-ms{grid-row:1}
.gt-l{grid-column:1;grid-row:1;font-size:12.5px;line-height:1.3;padding:4px 10px 4px 0;color:var(--ink)}
.gt-c{height:100%;border-left:1px solid var(--line)}
.gt-c.end{border-right:1px solid var(--ink2)}
.gt-b{height:16px;border-radius:4px;background:var(--bc);margin:0 3px;align-self:center}
.gt-b.all{background:repeating-linear-gradient(135deg,#78837B 0 6px,#A9B1AA 6px 12px)}
.gt-ms{justify-self:center;color:var(--bc);font-size:17px;line-height:1}
.gt-hd{min-height:24px;border-bottom:1px solid var(--line)}
.gt-m{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-align:center;padding:4px 0}
.gt-w{font-size:11px;color:var(--muted);text-align:center;font-weight:600}
.gt-g{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--muted);padding:10px 0 2px;border-top:1px solid var(--line)}
.gt-key{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--ink2);margin-top:12px}
.gt-key i{display:inline-block;width:14px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle}
.gt-key i.all{background:repeating-linear-gradient(135deg,#78837B 0 4px,#A9B1AA 4px 8px)}
@media (max-width:760px){.gd{flex-direction:column}.gd-c{flex:auto!important}.kpi-src{grid-template-columns:1fr}.gt{min-width:640px}.gt-r{grid-template-columns:170px repeat(12,1fr)}.gt-l{font-size:11.5px}}
.gm-grid[hidden],#gmMap[hidden]{display:none!important}
.rv-a{align-self:center;font-size:13px;font-weight:600;margin-left:6px;text-decoration:underline;text-underline-offset:3px;color:inherit}
.gm .gd-c{background:#fff;border-color:#D5D8CF;color:#47544C}
.gm .gd-c b{color:#13241C}
.gm .gd-src{color:#78837B}.gm .gd-src b{color:#13241C}
.gm .rv-bar button{border-color:#C9CEC4;color:#13241C;background:#fff}
.gm .rv-bar button.on{background:#13241C;color:#F4F3EE;border-color:#13241C}
.gm .rv-gantt{background:#fff;color:#13241C}
.gt-hint{display:none;font-size:12px;color:var(--muted);margin:0 0 6px}@media (max-width:760px){.gt-hint{display:block}}
/* v74: Gantt việc con + trạng thái */
.gt-tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}
.gt-tools button{font:inherit;font-size:12.5px;font-weight:600;padding:5px 10px;border-radius:4px;border:1px solid #C9CEC4;background:#fff;color:#13241C;cursor:pointer}
.gt-sum{margin-left:auto;font-size:12.5px;color:var(--ink2)}
.gt .gt-l{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.gt-t{flex:1 1 120px;min-width:0}
.gt-t small{color:var(--muted);font-size:11px;margin-left:2px}
.gt-x{flex:none;width:20px;height:20px;border-radius:4px;border:1px solid #9AA39C;background:#fff;color:#13241C;font:700 14px/1 var(--sans);cursor:pointer;display:grid;place-items:center;padding:0}
.gt-x[aria-expanded="true"]{background:#13241C;color:#fff;border-color:#13241C}
.gt-st{font:inherit;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:99px;border:1px solid transparent;cursor:pointer;white-space:nowrap;font-style:normal}
.gt-st.s-todo{background:#ECEEE9;color:#5D6A62;border-color:#D5D8CF}
.gt-st.s-doing{background:#FFF1CC;color:#7A5300;border-color:#F0C75E}
.gt-st.s-done{background:#D9F2E2;color:#14653A;border-color:#8FD1A8}
.gt-st.s-hold{background:#F6DEDA;color:#9A3324;border-color:#E3A196}
.gt-par{border-top:1px dashed transparent}
.gt-sub .gt-l{padding-left:26px;font-size:12px;color:var(--ink2)}
.gt-sub{min-height:26px;background:rgba(19,36,28,.03)}
.gt-r[hidden]{display:none}
.gt-b.sm{height:9px;opacity:.75}
.gt-b.s-done{opacity:.45;background-image:linear-gradient(90deg,transparent,transparent)}
.gt-b.s-done::after{content:"✓";display:block;color:#fff;font:700 11px/16px var(--sans);text-align:center}
.gt-b.sm.s-done::after{line-height:9px;font-size:8px}
.gt-b.s-hold{background:repeating-linear-gradient(135deg,#C2493A 0 5px,#E8A79D 5px 10px)}
.gt-b.s-doing{box-shadow:0 0 0 2px #F0C75E}
.gt-kst{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center}
.gt-note{font-size:12px;color:var(--muted);margin:8px 0 0}
.gt-r{grid-template-columns:330px repeat(12,1fr)}
.gt{min-width:900px}
@media (max-width:760px){.gt{min-width:780px}.gt-r{grid-template-columns:230px repeat(12,1fr)}.gt-sum{margin-left:0;width:100%}}

.rv-gantt,.gm .rv-gantt{background:#0F2A23;color:#fff;border-radius:14px}
.rv-gantt>h3{color:#fff}
.rv-gantt .gt-sum{color:#C9D6CE}
.rv-gantt .gt-tools button{background:#163A30;color:#E6EEE9;border-color:#2C5446}
.rv-gantt .gt-wrap{background:#fff;color:#13241C;border-radius:12px;padding:12px}
.rv-gantt .gt-key,.rv-gantt .gt-note,.rv-gantt .gt-hint{color:#C9D6CE}
.gq{background:#fff;color:#111;border-radius:12px;padding:12px 14px;margin:0 0 12px}
.gq-h{margin:0 0 8px;font:800 15px "Be Vietnam Pro",Arial,sans-serif;color:#0E7A4F}
.gq-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.gq-c h4{margin:0 0 6px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#5C665F}
.gq-c h4 i{font-style:normal;background:#0F2A23;color:#fff;border-radius:99px;padding:1px 7px;margin-left:4px}
.gq-c ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.gq-c li{display:flex;align-items:center;gap:8px;border:1px solid #E2E5DF;border-radius:8px;padding:7px 9px}
.gq-c li span{flex:1;min-width:0;display:flex;flex-direction:column;font-size:13px;line-height:1.35}
.gq-c li small{color:#6B756F;font-size:11.5px}
.gq-c p{margin:0;font-size:12.5px;color:#6B756F}
.gm:has(#gmGantt:not([hidden])){background:transparent;padding:0 0 40px}
.gm:has(#gmGantt:not([hidden])) .gd~p,.gm:has(#gmGantt:not([hidden])) .gd-note,.gm:has(#gmGantt:not([hidden])) p{color:#C9D6CE}
.gm:has(#gmGantt:not([hidden])) .gq p,.gm:has(#gmGantt:not([hidden])) .gt-wrap p{color:#6B756F}
.gm:has(#gmGantt:not([hidden])) .rv-bar button.on{background:#F2C230!important;color:#111!important;border-color:#F2C230!important}
.gm:has(#gmGantt:not([hidden])) p a{color:#F2C230}
@media(max-width:760px){#gmGantt.rv-gantt{padding:14px 10px}}
.gm .gd{gap:8px;margin:0 0 4px}
.gm .gd-c{font-family:"Be Vietnam Pro",Arial,sans-serif;background:#0F2A23;border:1px solid #21402F;box-shadow:none;border-radius:10px;padding:10px 12px;gap:2px;color:#C9D6CE}
.gm .gd-c span{font-size:11px;letter-spacing:.06em;font-weight:700}
.gm .gd-c b{font-family:"Be Vietnam Pro",Arial,sans-serif;font-weight:700;font-size:15px;color:#fff;line-height:1.3}
.gm .gd-c small{font-size:12px}
.gm .gd-c.on{background:#26604F;border-color:#3C7A68;box-shadow:none;color:#E9FFF2}
.gm .gd-c.on b{color:#fff}
.gd-p{display:flex;align-items:center;gap:8px;margin-top:6px}
.gd-p i{flex:1;height:6px;border-radius:99px;background:rgba(255,255,255,.18);overflow:hidden}
.gd-p s{display:block;height:100%;background:#F2C230;border-radius:99px}
.gd-p em{font-style:normal;font-weight:800;font-size:13px;color:#fff;min-width:36px;text-align:right}
.gm .gd-src{margin:2px 0 10px;font-size:12px}
.gq-t{display:flex;align-items:center;gap:8px}
.gq-p{display:flex;align-items:center;gap:8px}
.gq-p em{font-style:normal;font-weight:800;font-size:12.5px;color:#0E7A4F;min-width:38px;text-align:right}
.gq-p input{flex:1;-webkit-appearance:none;appearance:none;height:6px;border-radius:99px;background:linear-gradient(90deg,#1FA463 var(--v),#E2E5DF var(--v));outline:none;margin:0;cursor:pointer}
.gq-p input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#0F2A23;border:2px solid #fff;box-shadow:0 0 0 1px #0F2A23}
.gq-p input::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#0F2A23;border:2px solid #fff}
.gt-b.gp{display:flex;align-items:center;justify-content:center;background:linear-gradient(90deg,var(--bc) var(--p),color-mix(in srgb,var(--bc) 28%,#fff) var(--p));opacity:1;height:18px}
.gt-b.gp.all{background:linear-gradient(90deg,#4C5A52 var(--p),transparent var(--p)),repeating-linear-gradient(135deg,#A9B1AA 0 6px,#CDD2CD 6px 12px)}
.gt-b.gp.s-hold{background:linear-gradient(90deg,#C2493A var(--p),#F1CCC6 var(--p))}
.gt-b.gp.sm{height:15px;opacity:1}
.gt-b.gp::after{content:none!important}
.gt-b.gp em{font-style:normal;font-weight:800;font-size:10.5px;color:#111;background:rgba(255,255,255,.85);border-radius:99px;padding:0 5px;line-height:13px}
.gt-b.gp.sm em{font-size:9.5px;line-height:12px}
.gt-pr{flex:1 1 100%;display:flex;align-items:center;gap:6px}
.gt-pr em{font-style:normal;font-weight:800;font-size:11.5px;color:#0E7A4F;min-width:34px;text-align:right}
.gt-pr input{flex:1;-webkit-appearance:none;appearance:none;height:5px;border-radius:99px;background:linear-gradient(90deg,#1FA463 var(--v),#E2E5DF var(--v));margin:0;cursor:pointer}
.gt-pr input::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#0F2A23;border:2px solid #fff;box-shadow:0 0 0 1px #0F2A23}
.gt-pr input::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#0F2A23;border:2px solid #fff}
.gq-c li{flex-direction:row;align-items:center}
.gq-c li .gt-st{margin-left:auto;flex:none}
.gq{background:#26604F;color:#fff}
.gq-h{color:#fff}
.gq-c h4{color:#D6E6DF}
.gq-c li{background:#fff;color:#111;border-color:transparent}
.gq-c p{color:#D6E6DF}
.gt-b.gp{position:relative}
.gt-bi{position:absolute;inset:-4px 0;width:100%;height:calc(100% + 8px);margin:0;opacity:0;cursor:ew-resize}
.gt-b.gp:hover{outline:2px solid #F2C230}
