/* ============================================================
   CR7 — hệ thiết kế. MOBILE-FIRST: mặc định là điện thoại,
   desktop nằm trong @media (min-width:820px) ở cuối.

   Ba luật không được phá:
   1. Vùng chạm ≥ 44px  — ngón tay không có mũi nhọn như chuột
   2. Ô nhập ≥ 16px     — dưới ngưỡng này iOS tự phóng to, vỡ layout
   3. Cao dùng 100dvh   — 100vh sai khi bàn phím ảo bật lên
   Chuyển động chỉ transform/opacity để chạy trên GPU.
   ============================================================ */

/* Cascadia Code (SIL OFL) NHÚNG TRONG MÁY — CR7 dùng đồng bộ MỘT font mono trên
   mọi thiết bị (PC + iPhone), KHÔNG gọi mạng. Variable (đủ mọi độ đậm) + 3 subset
   để có dấu tiếng Việt. Đại Ka chốt 22/07. Route /font/ ở main.py. */
@font-face{
  font-family:"Cascadia Code";font-style:normal;font-weight:100 900;
  font-display:swap;src:url("/font/cascadia-code-latin-wght-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
    U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,
    U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Cascadia Code";font-style:normal;font-weight:100 900;
  font-display:swap;src:url("/font/cascadia-code-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,
    U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
    U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Cascadia Code";font-style:normal;font-weight:100 900;
  font-display:swap;src:url("/font/cascadia-code-vietnamese-wght-normal.woff2") format("woff2");
  unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,
    U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

:root{
  --nen-0:#07080c;  --nen-1:#0e1016;  --nen-2:#151822;  --nen-3:#1d2130;
  --vien:#242938;   --vien-sang:#333a4d;
  --chu-1:#eef1f7;  --chu-2:#a6aec1;  --chu-3:#6d7689;
  --nhan:#f5b544;   --nhan-dam:#e09a2b;  --nhan-mo:rgba(245,181,68,.13);
  --tim:#8b7cff;    --luc:#3ddc97;       --do:#ff6b6b;  --cam:#f0913e;
  --kinh:rgba(21,24,34,.86);
  --arc:#3fe0ff;    --arc-dam:#12b8d8;   --arc-mo:rgba(63,224,255,.12);
  --line:rgba(63,224,255,.12);           --line-2:rgba(63,224,255,.26);

  --bong-1:0 1px 2px rgba(0,0,0,.45);
  --bong-2:0 4px 18px rgba(0,0,0,.38), 0 1px 3px rgba(0,0,0,.45);
  --bong-3:0 -14px 44px rgba(0,0,0,.55);
  --sang-trong:inset 0 1px 0 rgba(255,255,255,.045);

  --r-nho:10px; --r-vua:14px; --r-lon:20px; --r-tron:999px;
  --cham:44px;                        /* vùng chạm tối thiểu */
  --an-toan-duoi:env(safe-area-inset-bottom,0px);

  --nhanh:110ms cubic-bezier(.4,0,.2,1);
  --vua:200ms cubic-bezier(.4,0,.2,1);
  --mem:380ms cubic-bezier(.16,1,.3,1);

  /* MỘT font mono cho TOÀN app (Đại Ka 22/07). Cascadia Code nhúng ở trên;
     fallback vẫn là mono nếu font chưa tải xong. --font và --mono giờ như nhau. */
  --font:"Cascadia Code",ui-monospace,"SF Mono",Consolas,"Cascadia Mono",monospace;
  --mono:"Cascadia Code",ui-monospace,"SF Mono",Consolas,monospace;
}

*{margin:0;padding:0;box-sizing:border-box}
/* Form control KHÔNG kế thừa font mặc định -> ép chúng dùng chung 1 font với
   toàn app (nếu không, <textarea> rơi về mono mặc định của trình duyệt = lệch). */
input,textarea,select,button{font-family:inherit}
/* LUÔN khai vh trước rồi dvh sau. Trình duyệt chưa hiểu dvh sẽ bỏ qua CẢ DÒNG
   -> height thành auto, mà body lại overflow:hidden -> không cuộn được gì hết.
   Đã dính đúng lỗi này trên điện thoại 19/07. */
html,body{height:100vh;height:100dvh;overscroll-behavior-y:contain}
body{
  background:var(--nen-1);color:var(--chu-1);font-family:var(--font);
  font-size:15px;line-height:1.6;letter-spacing:-.005em;
  -webkit-font-smoothing:antialiased;overflow:hidden;
  -webkit-tap-highlight-color:transparent;
  /* Cascadia Code có ligature lập trình (-> => != ==): TẮT để giao diện tiếng
     Việt không bị đổi ký tự bất ngờ. Muốn bật lại thì bỏ dòng này. */
  font-feature-settings:"calt" 0,"liga" 0;
}
.an{display:none !important}
.phu{color:var(--chu-3);font-size:12.5px;font-style:normal}
svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;
  touch-action:manipulation}
::selection{background:rgba(245,181,68,.28)}

*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-thumb{background:var(--vien);border-radius:99px;
  border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-track{background:transparent}

.hao-quang{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.hao-quang i{position:absolute;border-radius:50%;filter:blur(80px)}
.hao-quang i:first-child{width:760px;height:760px;top:-300px;left:-200px;
  background:radial-gradient(circle,rgba(245,181,68,.30),rgba(245,181,68,.07) 45%,transparent 72%)}
.hao-quang i:last-child{width:680px;height:680px;bottom:-320px;right:-180px;
  background:radial-gradient(circle,rgba(139,124,255,.28),rgba(139,124,255,.06) 45%,transparent 72%)}

/* nút chạm chuẩn 44px, phần nhìn thấy nhỏ hơn */
.nut-cham{display:grid;place-items:center;width:var(--cham);height:var(--cham);
  flex:0 0 var(--cham);border-radius:var(--r-nho);color:var(--chu-2);
  transition:background var(--nhanh),color var(--nhanh),transform var(--nhanh)}
.nut-cham:active{background:var(--nen-3);transform:scale(.9)}

.huy-hieu{display:grid;place-items:center;font-weight:800;letter-spacing:.5px;
  background:linear-gradient(145deg,var(--nhan),var(--nhan-dam));color:#1a1200;
  border-radius:var(--r-vua);box-shadow:0 6px 20px rgba(245,181,68,.28),var(--sang-trong);
  width:56px;height:56px;font-size:17px}
.huy-hieu.nho{width:38px;height:38px;font-size:12px;border-radius:11px}

/* ---------- màn khoá ---------- */
.man-khoa{position:fixed;inset:0;z-index:60;display:grid;place-items:center;
  padding:24px;background:transparent}
.hop-khoa{width:100%;max-width:340px;text-align:center;animation:len var(--mem) both}
.hop-khoa .huy-hieu{position:relative;margin:0 auto 26px;
  box-shadow:0 6px 20px rgba(245,181,68,.28),0 0 0 1px rgba(63,224,255,.22),
    0 0 34px -8px rgba(63,224,255,.55),var(--sang-trong)}
/* vành hồ quang xoay quanh huy hiệu — khoảnh khắc "khởi động" của CR7.
   position:absolute nên KHÔNG nằm trong lưới -> huy hiệu vẫn 56px. */
.hop-khoa .huy-hieu::before{content:"";position:absolute;top:50%;left:50%;
  width:88px;height:88px;margin:-44px 0 0 -44px;border-radius:50%;pointer-events:none;
  border:1.4px dashed rgba(63,224,255,.42);animation:xoay-vanh 16s linear infinite}
.hop-khoa h1{font-size:23px;font-weight:650;letter-spacing:-.02em}
.hop-khoa h1::before{content:"HỆ THỐNG · SẴN SÀNG";display:block;
  font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.32em;
  color:var(--arc);opacity:.85;margin-bottom:11px}
@media (prefers-reduced-motion:reduce){.hop-khoa .huy-hieu::before{animation:none}}
.hop-khoa .phu{margin:6px 0 24px}
.o-nhap-lon{position:relative;display:block;text-align:left}
.o-nhap-lon input{width:100%;padding:21px 16px 9px;border-radius:var(--r-vua);
  background:var(--nen-2);border:1px solid var(--vien);color:var(--chu-1);
  font-family:inherit;font-size:16px;
  transition:border-color var(--vua),box-shadow var(--vua)}
.o-nhap-lon span{position:absolute;left:16px;top:16px;color:var(--chu-3);
  font-size:15px;pointer-events:none;transform-origin:left top;
  transition:transform var(--vua),color var(--vua)}
.o-nhap-lon input:focus{outline:none;border-color:var(--nhan);box-shadow:0 0 0 3px var(--nhan-mo)}
.o-nhap-lon input:focus+span,.o-nhap-lon input:not(:placeholder-shown)+span{
  transform:translateY(-10px) scale(.75);color:var(--nhan)}
.nut-chinh{width:100%;margin-top:12px;min-height:50px;border-radius:var(--r-vua);
  font-weight:650;font-size:16px;color:#1a1200;
  background:linear-gradient(145deg,var(--nhan),var(--nhan-dam));
  box-shadow:0 6px 20px rgba(245,181,68,.26),var(--sang-trong);
  transition:transform var(--nhanh),box-shadow var(--vua),opacity var(--vua)}
.nut-chinh:active{transform:scale(.98)}
.nut-chinh[disabled]{opacity:.6}
.nut-chinh .xoay{display:none;width:16px;height:16px;border-radius:50%;
  border:2px solid rgba(26,18,0,.3);border-top-color:#1a1200;
  animation:xoay .6s linear infinite;margin:0 auto}
.nut-chinh.dang-cho .nhan{display:none}
.nut-chinh.dang-cho .xoay{display:block}
.bao-loi{color:var(--do);font-size:13.5px;min-height:20px;margin-top:10px;
  opacity:0;transform:translateY(-3px);transition:opacity var(--vua),transform var(--vua)}
.bao-loi.hien{opacity:1;transform:none}

/* ---------- khung ---------- */
#ung-dung{position:relative;z-index:1;display:flex;height:100vh;height:100dvh}
main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}

/* Trên điện thoại header xếp 2 dòng: dòng trên chọn dự án, dòng dưới là
   thanh chuyển 4 màn. Nhét cả hai vào một dòng thì tab bị bóp còn ~40px,
   chạm hụt liên tục. */
header{display:flex;flex-direction:column;gap:8px;padding:8px 8px 10px;
  padding-top:calc(8px + env(safe-area-inset-top,0px));
  border-bottom:1px solid rgba(63,224,255,.12);background:rgba(12,15,22,.84);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.hang-tren{display:flex;align-items:center;gap:6px}

.chon-du-an{display:flex;align-items:center;gap:8px;min-height:var(--cham);
  padding:0 10px 0 8px;border-radius:var(--r-nho);flex:1;min-width:0;
  transition:background var(--nhanh)}
.chon-du-an:active{background:var(--nen-3)}
.chon-du-an .dem-note{font-family:var(--mono);font-size:10.5px;color:var(--chu-3);
  white-space:nowrap;flex:0 0 auto}
.chon-du-an .ten{font-size:14.5px;font-weight:650;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;flex:1;text-align:left}
.chon-du-an .mui{width:16px;height:16px;color:var(--chu-3)}

.cham{width:9px;height:9px;border-radius:50%;flex:0 0 9px;
  box-shadow:0 0 0 3px rgba(255,255,255,.035)}
.cham.to{width:11px;height:11px;flex:0 0 11px}
.cham.xanh{background:var(--luc);box-shadow:0 0 8px rgba(61,220,151,.5)}
.cham.do{background:var(--do)}
.cham.xam{background:var(--chu-3);box-shadow:none}
.cham.cam{background:var(--cam)}

/* dock chuyển màn đáy màn hình (điện thoại) — như concept đã duyệt:
   icon + nhãn nhỏ, gạch cyan trên tab đang mở. Desktop thành pill góc phải. */
.chuyen-man{display:grid;grid-template-columns:repeat(5,1fr);flex:0 0 auto;
  border-top:1px solid var(--line);background:rgba(5,9,15,.85);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  padding-bottom:var(--an-toan-duoi)}
.chuyen-man .tab{position:relative;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:3px;min-height:56px;
  color:var(--chu-3);font-size:10px;letter-spacing:.02em;font-weight:600;
  transition:color var(--vua)}
.chuyen-man .tab svg{width:20px;height:20px}
.chuyen-man .tab.chon{color:var(--chu-1)}
.chuyen-man .tab.chon svg{stroke:var(--arc)}
.chuyen-man .tab.chon::before{content:"";position:absolute;top:0;width:26px;
  height:2px;border-radius:2px;background:var(--arc);box-shadow:0 0 10px var(--arc)}
/* sắc thái riêng cho bộ phận Tim (ấm) + Chân (xanh mọc) khi đang mở */
.chuyen-man .tab.bp-tim.chon svg{stroke:#ff7a8a}
.chuyen-man .tab.bp-tim.chon::before{background:#ff7a8a;box-shadow:0 0 10px #ff7a8a}
.chuyen-man .tab.bp-chan.chon svg{stroke:var(--luc)}
.chuyen-man .tab.bp-chan.chon::before{background:var(--luc);box-shadow:0 0 10px var(--luc)}
/* Mũi (cơ hội) = sắc cam ấm — đánh hơi thấy tiền */
.chuyen-man .tab.bp-mui.chon svg{stroke:var(--cam)}
.chuyen-man .tab.bp-mui.chon::before{background:var(--cam);box-shadow:0 0 10px var(--cam)}
.chuyen-man .tab.bp-mui .bp-cham{background:var(--cam);box-shadow:0 0 8px var(--cam)}
/* chấm đỏ báo động trên icon Tim khi hệ có cảnh báo — thấy dù đang màn khác */
.chuyen-man .tab .bp-cham{position:absolute;top:7px;right:calc(50% - 14px);
  width:7px;height:7px;border-radius:50%;background:var(--do);
  box-shadow:0 0 8px var(--do);opacity:0;transform:scale(.3);
  transition:opacity var(--vua),transform var(--vua)}
.chuyen-man .tab.co-canh .bp-cham{opacity:1;transform:scale(1);
  animation:tim-dap 1.4s ease-in-out infinite}
@keyframes tim-dap{0%,100%{transform:scale(1)}50%{transform:scale(1.4)}}

/* ---------- sub-nav Não: Trợ lý | Nhớ (Nhớ gộp vào Não) ---------- */
.nao-sub{flex:0 0 auto;display:flex;gap:8px;justify-content:center;
  padding:9px 12px;border-bottom:1px solid var(--line);background:var(--nen-1)}
.nao-pill{display:flex;align-items:center;gap:7px;min-height:38px;padding:0 18px;
  border:1px solid var(--vien);border-radius:var(--r-tron);background:var(--nen-2);
  color:var(--chu-3);font-size:13px;font-weight:650;transition:all var(--vua)}
.nao-pill svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.nao-pill:active{transform:scale(.97)}
.nao-pill.chon{color:var(--nen-0);background:var(--arc);border-color:var(--arc);
  box-shadow:0 0 16px var(--arc-mo)}

/* ---------- màn Tim / Chân (theo bộ phận) ---------- */
.bp-the{display:flex;align-items:center;gap:13px;padding:15px;flex:0 0 auto;
  margin-bottom:2px;border:1px solid var(--vien);border-radius:var(--r-lon);
  background:var(--nen-2);box-shadow:var(--bong-1);
  animation:len 260ms cubic-bezier(.16,1,.3,1) both}
.bp-icon{width:44px;height:44px;flex:0 0 44px;display:flex;align-items:center;
  justify-content:center;border-radius:14px;font-size:22px;line-height:1}
.bp-the.tim .bp-icon{color:#ff7a8a;background:rgba(255,122,138,.12);
  box-shadow:inset 0 0 0 1px rgba(255,122,138,.32)}
.bp-the.tim:not(.khoe) .bp-icon{animation:tim-dap 1.1s ease-in-out infinite}
.bp-the.tim.khoe .bp-icon{color:var(--luc);background:rgba(61,220,151,.12);
  box-shadow:inset 0 0 0 1px rgba(61,220,151,.3)}
.bp-the.chan .bp-icon{color:var(--luc);background:rgba(61,220,151,.12);
  box-shadow:inset 0 0 0 1px rgba(61,220,151,.3)}
.bp-the.mui .bp-icon{color:var(--cam);background:rgba(240,145,62,.12);
  box-shadow:inset 0 0 0 1px rgba(240,145,62,.3);
  animation:mui-hit 2.4s ease-in-out infinite}
.bp-noi{flex:1;min-width:0}
.bp-ten{font-size:11.5px;font-weight:650;letter-spacing:.03em;color:var(--chu-3);
  text-transform:uppercase}
.bp-so{font-size:15px;font-weight:650;color:var(--chu-1);margin-top:3px}
.bp-ghi{font-size:12px;color:var(--chu-3);line-height:1.6;padding:4px 4px 8px}

/* ---------- màn MŨI: thẻ ý tưởng đánh hơi được (Đại Ka 23/07) ---------- */
.mui-the{position:relative;display:flex;flex-direction:column;gap:8px;
  padding:13px 15px 12px;border-top:1px solid var(--vien)}
.mui-the:first-of-type{border-top:none}
.mui-the.mo{opacity:.55}
.mui-dau{display:flex;align-items:baseline;gap:10px}
.mui-ten{flex:1;min-width:0;font-size:14.5px;font-weight:650;color:var(--chu-1)}
.mui-ngay{flex:0 0 auto;font-size:10.5px;color:var(--chu-3);
  font-variant-numeric:tabular-nums;letter-spacing:.06em}
.mui-nhan{align-self:flex-start;font-size:9.5px;font-weight:650;
  letter-spacing:.14em;color:var(--arc);background:var(--arc-mo);
  border:1px solid rgba(63,224,255,.3);border-radius:5px;padding:2px 8px}
.mui-mota{font-size:13px;color:var(--chu-2);line-height:1.65}
.mui-visao{font-size:12.5px;color:var(--chu-3);line-height:1.6;
  border-left:2px solid rgba(240,145,62,.5);padding-left:10px}
.mui-visao b{color:var(--cam);font-weight:650}
.mui-nguon{font-size:11.5px;color:var(--arc);text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  display:inline-flex;align-items:center;min-height:24px;opacity:.85}
.mui-nhan.hay{color:var(--luc);background:rgba(61,220,151,.12);
  border-color:rgba(61,220,151,.35)}
.mui-nhan.tam{color:var(--chu-2);background:var(--nen-2);border-color:var(--vien)}
.mui-nhan.cu{color:var(--do);background:rgba(255,107,107,.1);
  border-color:rgba(255,107,107,.32)}
/* chốt sau khi bàn với Mũi: ý này hay hơn cái đang làm ở chỗ nào */
.mui-khacbiet{font-size:12.5px;color:var(--chu-2);line-height:1.6;
  border-left:2px solid var(--arc);padding-left:10px}
.mui-khacbiet b{color:var(--arc);font-weight:650}
.mui-hanhdong{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.mui-hanhdong .kh-them-nut.mo{color:var(--chu-3);border-color:var(--vien)}
.mui-nao{color:var(--cam) !important;border-color:rgba(240,145,62,.45) !important}
.mui-ban{display:inline-flex;align-items:center;gap:7px;
  background:var(--arc-mo) !important;border-color:var(--line-2) !important}
.mui-ban svg{width:15px;height:15px;fill:none;stroke:currentColor;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* "Mũi hiểu Đại Ka" — gu học được sau mỗi lần bàn, cũng là đề bài sáng mai */
.mui-gu-ngan{padding:9px 15px 4px;border-top:1px solid var(--vien)}
.mui-gu-ngan:first-of-type{border-top:none}
.mui-gu-nhan{font-size:10px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--chu-3);margin-bottom:4px}
.mui-gu-nhan.xanh{color:var(--luc)}
.mui-gu-nhan.do{color:var(--do)}
.mui-gu-nhan.cam{color:var(--cam)}
.mui-gu-dong{display:flex;align-items:center;gap:9px;min-height:var(--cham)}
.mui-gu-chu{flex:1;min-width:0;font-size:12.5px;color:var(--chu-2);
  line-height:1.5;padding:6px 0}
.mui-gu-dong .kh-xoa{flex:0 0 var(--cham);width:var(--cham);height:var(--cham)}
#mui-bao{font-size:12.5px;color:var(--arc);padding:2px 15px 10px}
#mui-bao.hong{color:var(--do)}

.man{flex:1;display:flex;flex-direction:column;min-height:0}

/* ---------- bảng điều khiển ---------- */
.bang{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:14px 12px calc(20px + var(--an-toan-duoi));display:flex;
  flex-direction:column;gap:14px;contain:content}

/* flex-shrink:0 BẮT BUỘC. .khoi là flex item trong .bang, mà nó lại có
   overflow:hidden -> min-height:auto tính ra 0 -> flex được phép nén nó xuống
   và CẮT CỤT nội dung bên trong, cuộn cũng không tới. Test Playwright 19/07
   bắt được: 40 thẻ nhớ mà cả khối chỉ cao 617px. */
.khoi{position:relative;flex:0 0 auto;border:1px solid var(--vien);
  background:linear-gradient(180deg,rgba(18,23,34,.96),rgba(13,17,26,.94));
  border-radius:var(--r-lon);overflow:hidden;box-shadow:var(--bong-1);
  animation:len 300ms cubic-bezier(.16,1,.3,1) both;
  transition:border-color var(--vua),box-shadow var(--vua)}
/* khung góc kiểu HUD robot — 2 ngoặc teal chéo nhau (Đại Ka 23/07: ô thông
   tin phải "robot" hơn, hết cảnh cái hộp + cái gạch trơn) */
.khoi::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:
    linear-gradient(var(--arc),var(--arc)) 0 0/14px 1.5px,
    linear-gradient(var(--arc),var(--arc)) 0 0/1.5px 14px,
    linear-gradient(var(--arc),var(--arc)) 100% 100%/14px 1.5px,
    linear-gradient(var(--arc),var(--arc)) 100% 100%/1.5px 14px;
  background-repeat:no-repeat;opacity:.28;transition:opacity var(--vua)}
/* vệt quét sáng chạy ngang khi rê chuột vào — cảm giác máy vừa "đọc" khối */
.khoi::after{content:"";position:absolute;top:0;bottom:0;left:0;width:36%;
  pointer-events:none;z-index:1;transform:translateX(-120%);
  background:linear-gradient(105deg,transparent,rgba(63,224,255,.07) 45%,
    rgba(63,224,255,.045) 55%,transparent)}
.khoi-dau{position:relative}
.khoi-dau::after{content:"";position:absolute;left:15px;right:15px;bottom:0;
  height:1px;background:linear-gradient(90deg,rgba(63,224,255,.45),
    rgba(63,224,255,.08) 55%,transparent)}
.khoi-dau{display:flex;align-items:center;gap:9px;padding:13px 15px 11px}
.khoi-dau h3{font-size:13px;font-weight:650;letter-spacing:.02em;
  text-transform:uppercase;color:var(--chu-2);flex:1}
.khoi-dau .dem{font-size:12px;color:var(--chu-3);font-variant-numeric:tabular-nums}

.hang{display:flex;align-items:center;gap:11px;width:100%;
  min-height:56px;padding:10px 15px;text-align:left;
  border-top:1px solid var(--vien);transition:background var(--nhanh)}
.hang:active{background:var(--nen-3)}
.hang .noi{flex:1;min-width:0}
.hang .ten{display:block;font-size:14px;font-weight:550;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.hang .duoi{display:block;font-size:12px;color:var(--chu-3);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.hang .gio{font-size:12px;color:var(--chu-3);font-variant-numeric:tabular-nums;
  flex:0 0 auto}
.hang .mui{width:16px;height:16px;color:var(--chu-3);flex:0 0 16px}

.the-tt{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;
  border-radius:var(--r-tron);font-size:11.5px;font-weight:600;flex:0 0 auto}
.the-tt.xong{background:rgba(61,220,151,.13);color:var(--luc)}
.the-tt.thieu{background:rgba(255,107,107,.13);color:var(--do)}
.the-tt.cho{background:rgba(240,145,62,.13);color:var(--cam)}
.the-tt.cho-gio{background:var(--nen-3);color:var(--chu-3)}
/* chờ duyệt: nổi bật hơn "đang chờ" (xám) — đây là việc CẦN Đại Ka động tay */
.the-tt.cho-duyet{background:rgba(240,145,62,.18);color:var(--cam);
  box-shadow:0 0 0 1px rgba(240,145,62,.4)}

.hang-tra-loi{margin-top:18px;padding-top:16px;border-top:1px solid var(--vien)}
.nhac-duyet{font-size:12.5px;color:var(--cam);margin-bottom:10px;line-height:1.5}
.nut-tra-loi{display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;min-height:var(--cham);border-radius:var(--r-vua);font-size:14px;
  font-weight:650;color:#1a1200;
  background:linear-gradient(145deg,var(--nhan),var(--nhan-dam));
  box-shadow:0 3px 12px rgba(245,181,68,.24);transition:transform var(--nhanh)}
.nut-tra-loi:active{transform:scale(.98)}
.nut-tra-loi svg{width:17px;height:17px}
.hang-tra-loi .nut-tra-loi+.nut-tra-loi{margin-top:9px}
/* "Đã xử lý xong" — nút PHỤ (đường chính là bàn với Não rồi giao Tay, xong
   việc tự chốt sổ), nên để tông xanh nhạt chứ đừng tranh chỗ nút vàng. */
.nut-chot-rt{color:var(--luc);background:rgba(61,220,151,.1);
  border:1px solid rgba(61,220,151,.4);box-shadow:none}
.nut-chot-rt:disabled{opacity:.5}

/* ---- ⭐ Phiếu XEM ROUTINE ĐANG LÀM GÌ (Đại Ka 25/07) ----
   Log trực tiếp + nhịp tim; routine chết thì nói thẳng lý do thay vì để Mắt
   báo "đang chạy" tới nửa đêm. */
.rt-dau{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-bottom:12px}
.rt-canh{padding:10px 12px;margin-bottom:12px;font-size:13px;line-height:1.55;
  color:var(--chu-2);border-radius:var(--r-nho);
  border:1px solid rgba(255,107,107,.4);background:rgba(255,107,107,.08)}
.rt-log{max-height:46vh;overflow:auto;padding:11px 12px;
  font-family:var(--mono);font-size:11.5px;line-height:1.65;color:var(--chu-2);
  white-space:pre-wrap;word-break:break-word;background:var(--nen-2);
  border:1px solid var(--vien);border-radius:var(--r-nho)}
.nut-tra-loi.rt-chac{color:#fff;background:linear-gradient(145deg,#e05555,#b93b3b);
  box-shadow:0 3px 12px rgba(255,107,107,.3)}

.canh-bao-khoi{border-color:rgba(255,107,107,.4);
  background:linear-gradient(180deg,rgba(255,107,107,.07),transparent 60%)}
.canh-bao-khoi .khoi-dau h3{color:var(--do)}
.hang .chi-tiet{display:block;font-size:12.5px;color:var(--chu-2);
  line-height:1.5;white-space:normal}

.luoi-du-an{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--vien)}
.o-du-an{background:var(--nen-2);padding:13px 14px;min-height:74px;
  display:flex;flex-direction:column;gap:5px;text-align:left;
  transition:background var(--nhanh)}
.o-du-an:active{background:var(--nen-3)}
.o-du-an .tren{display:flex;align-items:center;gap:7px}
.o-du-an .ten{font-size:13px;font-weight:600;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.o-du-an .so{font-size:11.5px;color:var(--chu-3)}
.o-du-an.thieu{opacity:.4}
.o-du-an.dang-chon{background:var(--nen-3);box-shadow:inset 0 0 0 1px rgba(245,181,68,.45)}
.chip.mo{opacity:.4}

/* ---------- khối dự án đang xem (đầu tab Bảng) ---------- */
.khoi-da{background:var(--nen-2);border:1px solid var(--vien);
  border-radius:var(--r-lon);overflow:hidden;box-shadow:var(--bong-1);
  margin-bottom:14px;animation:len 260ms cubic-bezier(.16,1,.3,1) both}
.khoi-da-dau{display:flex;align-items:center;gap:11px;padding:14px 15px}
.khoi-da-dau .cham{width:11px;height:11px;flex:0 0 11px}
.khoi-da-dau .noi{flex:1;min-width:0}
.khoi-da-dau .ten{display:block;font-size:15px;font-weight:650;letter-spacing:-.01em}
.khoi-da-dau .mo-ta{display:block;font-size:12px;color:var(--chu-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.khoi-da-so{display:flex;gap:8px;padding:0 15px 12px;flex-wrap:wrap}
.khoi-da-so span{font-size:11.5px;color:var(--chu-3);padding:4px 10px;
  border-radius:var(--r-tron);background:var(--nen-3)}

.nut-dash{display:flex;align-items:center;justify-content:center;gap:8px;
  width:calc(100% - 30px);margin:0 15px 14px;min-height:var(--cham);
  border-radius:var(--r-vua);font-size:13.5px;font-weight:650;color:#1a1200;
  background:linear-gradient(145deg,var(--nhan),var(--nhan-dam));
  box-shadow:0 3px 12px rgba(245,181,68,.24);
  transition:transform var(--nhanh)}
.nut-dash:active{transform:scale(.98)}
.nut-dash svg{width:17px;height:17px}

.nh-con{padding:2px 15px 8px;font-size:11px;font-weight:650;
  letter-spacing:.03em;text-transform:uppercase;color:var(--chu-3)}
.the-con{display:flex;align-items:center;gap:11px;width:100%;padding:11px 15px;
  text-align:left;border-top:1px solid var(--vien);transition:background var(--nhanh)}
.the-con:active{background:var(--nen-3)}
.the-con .noi{flex:1;min-width:0}
.the-con .ten{display:block;font-size:13.5px;font-weight:600}
.the-con .mo-ta{display:block;font-size:11.5px;color:var(--chu-3)}
.the-con .co-bc{font-size:10px;font-weight:600;padding:2px 8px;
  border-radius:var(--r-tron);background:rgba(61,220,151,.12);color:var(--luc);
  flex:0 0 auto}
.the-con .chua{background:var(--nen-3);color:var(--chu-3)}
.the-con .mui{width:16px;height:16px;color:var(--chu-3);flex:0 0 16px}

/* mảng con đang chọn — tô hồ quang để "bấm mảng nào ra mảng đó" thấy ngay */
.khoi-da-mang{display:flex;align-items:center;gap:9px;padding:9px 15px;
  border-top:1px solid var(--vien);background:var(--arc-mo)}
.khoi-da-mang .cham{width:9px;height:9px;flex:0 0 9px;border-radius:50%}
.khoi-da-mang .ten{font-size:12px;font-weight:650;color:var(--arc);
  letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.the-con.dang{background:var(--arc-mo);box-shadow:inset 3px 0 0 var(--arc)}
.the-con.dang .ten{color:var(--arc)}

/* màn Việc: dự án chưa nối việc nào -> trạng thái rỗng có đường tắt */
.viec-trong{padding:14px 15px 18px;text-align:center}
.viec-trong .vt-tieu{font-size:14px;font-weight:650;color:var(--chu-1)}
.viec-trong .vt-mo-ta{font-size:12.5px;color:var(--chu-3);
  margin:7px auto 14px;line-height:1.5;max-width:34ch}
.viec-trong .vt-nut{display:inline-flex;width:auto;padding:0 18px}

/* ---------- KẾ HOẠCH: mục tiêu (Mắt) + việc cần làm (Tay) ---------- */
.kh-bar{height:7px;border-radius:999px;background:var(--nen-3);overflow:hidden}
.kh-bar i{display:block;height:100%;border-radius:999px;min-width:5px;
  background:linear-gradient(90deg,var(--arc-dam),var(--arc));
  box-shadow:0 0 10px var(--arc-mo);transition:width .5s cubic-bezier(.16,1,.3,1)}
.kh-bar.lon{height:10px}

/* Mắt — mục tiêu + tiến độ */
.kh-mat{padding:13px 15px 16px;display:flex;flex-direction:column;gap:14px}
.kh-chung{display:flex;flex-direction:column;gap:8px;padding-bottom:13px;
  border-bottom:1px solid var(--vien)}
.kh-chung-dau{display:flex;align-items:baseline;justify-content:space-between}
.kh-nhan{font-size:11.5px;font-weight:650;letter-spacing:.03em;
  text-transform:uppercase;color:var(--chu-3)}
.kh-chung-dau b{font-size:21px;font-weight:700;color:var(--arc)}
.kh-phu{font-size:11.5px;color:var(--chu-3)}
.kh-mt{display:flex;flex-direction:column;gap:7px}
.kh-mt-dau{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.kh-mt-ten{font-size:13.5px;font-weight:600;color:var(--chu-1);min-width:0}
.kh-mt-so{font-size:12px;color:var(--chu-3);flex:0 0 auto;
  font-variant-numeric:tabular-nums}
.kh-mang{margin-left:7px;font-size:10px;font-weight:650;font-style:normal;
  color:var(--arc);padding:1px 7px;border-radius:999px;background:var(--arc-mo)}
.kh-trong{font-size:12.5px;color:var(--chu-3);padding:3px 0}

/* ⭐ ẨN VIỆC XONG + LỊCH SỬ THEO NGÀY (Đại Ka 24/07) */
.kh-daxong-nhac{font-size:11.5px;color:var(--chu-3);padding:7px 14px 9px;
  border-top:1px dashed var(--vien)}
.kh-mt-gon{display:flex;align-items:center;gap:9px;padding:10px 14px;
  border:1px solid var(--vien);border-radius:var(--r-vua);
  background:var(--nen-2);opacity:.72}
.kh-mt-gon-tick{color:var(--luc);font-weight:700}
.kh-mt-gon-ten{flex:1;min-width:0;font-size:13px;color:var(--chu-2);
  text-decoration:line-through;text-decoration-color:var(--vien)}
.kh-mt-gon-so{font-size:11px;color:var(--chu-3);font-variant-numeric:tabular-nums}
.ls-khoi{margin-top:2px}
.ls-dau{display:flex;align-items:center;gap:9px;width:100%;
  min-height:var(--cham);padding:11px 14px;background:transparent;
  color:var(--chu-2);text-align:left}
.ls-tieu{font-size:12.5px;font-weight:650;letter-spacing:.02em}
.ls-dau .dem{font-size:11px}
.ls-mui{margin-left:auto;color:var(--chu-3);font-size:12px}
.ls-box{display:flex;flex-direction:column;gap:2px;padding:0 8px 12px}
.ls-box.an{display:none}
.ls-ngay{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--chu-3);padding:11px 6px 4px}
.ls-hang{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  min-height:44px;padding:7px 10px;border-radius:var(--r-nho);
  background:var(--nen-2);border:1px solid var(--vien)}
.ls-tick{color:var(--luc);font-weight:700;flex:none}
.ls-nd{display:flex;flex-direction:column;gap:2px;min-width:0}
.ls-ten{font-size:13px;color:var(--chu-2);line-height:1.4}
.ls-meta{font-size:10.5px;color:var(--chu-3)}
@media (hover:hover) and (pointer:fine){
  .ls-dau:hover{color:var(--chu-1)}
  .ls-hang:hover{border-color:var(--vien-sang);background:var(--nen-3)}
}
.ct-lydo{font-size:13.5px;line-height:1.6;color:var(--chu-2);
  padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--vien)}
.ct-lydo b{color:var(--chu-1)}
.ct-nhan{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--chu-3);margin-bottom:5px}
.ct-chitiet{font-size:14px;line-height:1.65;white-space:pre-wrap;color:var(--chu-1)}

/* Tay — checklist việc cần làm */
.kh-tay{padding:8px 12px 14px;display:flex;flex-direction:column;gap:12px}
.kh-goal{border:1px solid var(--vien);border-radius:var(--r-vua);
  background:var(--nen-2);overflow:hidden}
.kh-goal-dau{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 14px;
  border-bottom:1px solid var(--vien);background:var(--nen-3)}
.kh-goal-ten{flex:1;min-width:0;font-size:13.5px;font-weight:650;color:var(--chu-1)}
.kh-goal-so{font-size:11.5px;color:var(--chu-3);font-variant-numeric:tabular-nums}
.kh-viec{display:flex;align-items:center;gap:6px;padding:3px 6px 3px 8px;
  border-top:1px solid var(--vien);min-height:46px;flex-wrap:wrap}
.kh-goal-dau+.kh-viec{border-top:none}
/* nút tick 44px hit-area, ô vuông 22px vẽ ở giữa (đủ chạm mà nhìn gọn) */
.kh-ck{flex:0 0 44px;height:44px;position:relative;background:transparent}
.kh-ck::before{content:"";position:absolute;left:11px;top:11px;width:22px;height:22px;
  border-radius:7px;border:1.7px solid var(--chu-3);transition:all var(--nhanh)}
.kh-ck::after{content:"";position:absolute;left:19px;top:14px;width:6px;height:11px;
  border:solid #04121a;border-width:0 2.4px 2.4px 0;
  transform:rotate(45deg) scale(0);transition:transform var(--nhanh)}
.kh-viec.xong .kh-ck::before{background:var(--luc);border-color:var(--luc);
  box-shadow:0 0 10px rgba(61,220,151,.4)}
.kh-viec.xong .kh-ck::after{transform:rotate(45deg) scale(1)}
.kh-viec-ten{flex:1;min-width:0;font-size:13.5px;color:var(--chu-1);
  transition:color var(--nhanh)}
.kh-viec.xong .kh-viec-ten{color:var(--chu-3);text-decoration:line-through}
.kh-xoa,.kh-xoa-mt{flex:0 0 44px;width:44px;height:44px;color:var(--chu-3);
  font-size:14px;opacity:.55;transition:all var(--nhanh)}
.kh-xoa:active,.kh-xoa-mt:active{opacity:1;color:var(--do);background:var(--nen-3)}
.kh-them{display:flex;gap:7px;padding:8px 10px;border-top:1px solid var(--vien)}
.kh-them input{flex:1;min-width:0;height:44px;padding:0 12px;font-size:16px;
  border:1px solid var(--vien);border-radius:var(--r-nho);background:var(--nen-1);
  color:var(--chu-1)}
.kh-them input::placeholder{color:var(--chu-3)}
.kh-them input:focus{border-color:var(--arc);outline:none}
.kh-them-nut{flex:0 0 auto;height:44px;padding:0 15px;font-size:12.5px;
  font-weight:650;border-radius:var(--r-nho);color:var(--arc);
  border:1px solid var(--vien);background:var(--nen-2);white-space:nowrap}
.kh-them-nut:active{background:var(--arc);color:var(--nen-0)}
.kh-them-mt{padding:2px 0 0;border-top:none}

/* mục tiêu doanh số + nhịp tiến độ */
.kh-mt-so.tien{color:var(--arc);font-weight:650}
.kh-bar.tre i{background:linear-gradient(90deg,#c0392b,var(--do));
  box-shadow:0 0 10px rgba(255,107,107,.35)}
.kh-mt.tre .kh-mt-ten{color:#ffd9d9}
.kh-nhip{align-self:flex-start;margin-top:5px;font-size:10.5px;font-weight:650;
  letter-spacing:.02em;padding:2px 8px;border-radius:999px}
.kh-nhip.kip{color:var(--luc);background:rgba(61,220,151,.12)}
.kh-nhip.tre{color:#ff8a8a;background:rgba(255,107,107,.14)}

/* form đặt doanh số trong Tay */
.kh-ds{border-top:1px solid var(--vien);background:rgba(63,224,255,.03)}
.kh-ds-dong{display:flex;align-items:center;gap:8px;padding:9px 13px;flex-wrap:wrap}
.kh-ds-icon{font-size:13px;flex:0 0 auto}
.kh-ds-text{font-size:12.5px;color:var(--chu-2);font-weight:600}
.kh-ds-text.mo{color:var(--chu-3);font-weight:500}
.kh-ds-sua{margin-left:auto;flex:0 0 auto;min-width:52px;height:40px;padding:0 14px;
  font-size:12.5px;font-weight:650;color:var(--arc);border-radius:var(--r-nho);
  border:1px solid var(--vien);background:var(--nen-2)}
.kh-ds-form{display:flex;flex-wrap:wrap;gap:7px;padding:0 13px 11px}
.kh-ds-form input{flex:1;min-width:96px;height:44px;padding:0 11px;font-size:16px;
  border:1px solid var(--vien);border-radius:var(--r-nho);background:var(--nen-1);
  color:var(--chu-1)}
.kh-ds-form input:focus{border-color:var(--arc);outline:none}
.kh-ds-form input[type=date]{color-scheme:dark}

/* TIM: mục tiêu chậm -> nút nhờ Não */
.kh-tre-hang{padding:12px 15px;border-top:1px solid var(--vien)}
.kh-tre-ten{display:block;font-size:14px;font-weight:650;color:#ffd9d9}
.kh-tre-so{display:block;font-size:12px;color:var(--chu-3);margin:4px 0 10px;
  line-height:1.5}
.nut-nao{display:inline-flex;align-items:center;gap:8px;min-height:40px;
  padding:0 15px;font-size:13px;font-weight:650;color:var(--nen-0);
  border-radius:var(--r-tron);background:linear-gradient(135deg,var(--arc),var(--arc-dam));
  box-shadow:0 0 16px var(--arc-mo)}
.nut-nao svg{width:16px;height:16px;stroke:var(--nen-0);fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.nut-nao:active{transform:scale(.97)}

/* ---------- banner MỤC TIÊU TỔNG 1 tỷ (trên cùng Mắt) ---------- */
.tong-hop{border:1px solid var(--line-2);border-radius:var(--r-lon);
  background:linear-gradient(160deg,rgba(63,224,255,.09),var(--nen-2));
  box-shadow:0 0 26px -8px var(--arc-mo);padding:15px 16px 16px;
  animation:len 300ms cubic-bezier(.16,1,.3,1) both}
.tong-hop.tre{border-color:rgba(255,107,107,.4)}
.tong-dau{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.tong-nhan{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--arc)}
.tong-han{font-size:11px;color:var(--chu-3);font-weight:600}
.tong-so{display:flex;align-items:baseline;gap:8px;margin-bottom:9px}
.tong-so b{font-size:30px;font-weight:800;color:var(--chu-1);letter-spacing:-.02em;
  line-height:1}
.tong-tren{font-size:15px;color:var(--chu-3);font-weight:600}
.tong-pt{font-size:12px;color:var(--chu-2);margin-top:8px;font-weight:600}
/* cúp đứng TUYỆT ĐỐI bên phải nên chiều cao banner do cột số quyết định —
   cúp cao bằng đúng khối chữ, không kéo thêm khoảng trống (Đại Ka 23/07) */
.tong-tren-hang{position:relative;padding-right:56px}
.tong-cot{min-width:0}
.tong-chia{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}

/* CÚP WORLD CUP cạnh mục tiêu 1 tỷ (Đại Ka 23/07): đạt mục tiêu = CR7 vô
   địch. Cúp xám mờ = chặng chưa đi; lớp VÀNG cắt từ đáy lên đúng % đã đạt,
   vạch sáng chạy ngang ở mực hiện tại. Ảnh /anh/cup.webp đã tách nền. */
/* cao ĐÚNG BẰNG cột số bên trái (align-self:stretch + aspect-ratio suy ra bề
   ngang) nên cúp không kéo banner dài thêm — Đại Ka 23/07 */
.cup{position:absolute;right:0;top:0;bottom:0;width:52px;
  pointer-events:none;user-select:none;animation:len 460ms cubic-bezier(.16,1,.3,1) both}
/* cao 100% khối chữ, bề ngang tự suy ra -> cắt theo % vẫn khớp thân cúp */
.cup img{position:absolute;top:0;left:50%;transform:translateX(-50%);
  height:100%;width:auto;max-width:100%}
/* KHÔNG phủ mờ lên cúp (Đại Ka 23/07): cả cúp vàng sáng bình thường... */
.cup-mo{opacity:1;filter:saturate(1.12) brightness(1.06)
  drop-shadow(0 2px 12px rgba(255,178,54,.34))}
/* ...phần ĐÃ ĐẠT được rọi sáng thêm, dâng từ đáy lên theo %.
   KHÔNG drop-shadow ở lớp này: clip-path cắt sau filter nên bóng sẽ thành
   một VỆT CHỮ NHẬT quanh cúp (vấp 23/07) — hào quang để ở lớp nền. */
.cup-vang{clip-path:inset(calc(100% - var(--pt,0%)) 0 0 0);
  filter:saturate(1.42) brightness(1.34)}
.cup-vach{position:absolute;left:-5px;right:-5px;bottom:var(--pt,0%);height:1px;
  background:linear-gradient(90deg,transparent,var(--arc) 30%,var(--arc) 70%,transparent);
  box-shadow:0 0 8px var(--arc);opacity:.7}
/* dải sáng quét chéo qua thân cúp cho lấp lánh — mặt nạ chính là ảnh cúp nên
   ánh sáng bám đúng hình, không tràn ra nền */
.cup-lap{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;
  -webkit-mask:url(/anh/cup.webp) center/contain no-repeat;
  mask:url(/anh/cup.webp) center/contain no-repeat;
  background:linear-gradient(108deg,transparent 43%,rgba(255,255,255,.34) 48.5%,
    rgba(255,236,183,.5) 50.5%,rgba(255,255,255,.3) 53%,transparent 59%);
  background-size:320% 100%;background-position:150% 0;
  animation:cup-quet 5.2s ease-in-out infinite}
@keyframes cup-quet{
  0%{background-position:150% 0}
  55%,100%{background-position:-60% 0}}
.cup.vo-dich .cup-vach{display:none}
.cup.vo-dich .cup-mo{animation:cup-sang 2.4s ease-in-out infinite}
@keyframes cup-sang{
  0%,100%{filter:saturate(1.3) brightness(1.14) drop-shadow(0 0 14px rgba(255,178,54,.5))}
  50%{filter:saturate(1.45) brightness(1.3) drop-shadow(0 0 26px rgba(255,199,89,.9))}}
@media (prefers-reduced-motion:reduce){
  .cup,.cup-lap,.cup.vo-dich .cup-mo{animation:none}}
.tong-da{text-align:left;padding:9px 11px;border-radius:var(--r-vua);
  border:1px solid var(--vien);background:var(--nen-1);display:flex;
  flex-direction:column;gap:6px;min-height:auto}
.tong-da.dang{border-color:var(--arc);background:var(--arc-mo)}
.tong-da.tre{border-color:rgba(255,107,107,.35)}
.tong-da-ten{font-size:12px;font-weight:650;color:var(--chu-1);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tong-da-so{font-size:10.5px;color:var(--chu-3);font-variant-numeric:tabular-nums}

/* doanh thu cấp dự án (đầu khối Mục tiêu ở Mắt) */
.kh-dt{position:relative;display:flex;flex-direction:column;gap:7px;
  padding-bottom:13px;margin-bottom:3px;border-bottom:1px solid var(--vien)}
.kh-dt-dau{display:flex;align-items:baseline;justify-content:space-between}
.kh-dt-dau b{font-size:19px;font-weight:750;color:var(--arc)}
.kh-dt.tre .kh-dt-dau b{color:#ff8a8a}
.kh-dt-so{font-size:12.5px;color:var(--chu-2);font-weight:600}
.kh-dt.tre .kh-dt-so{color:#ffd9d9}
.kh-dt-so.mo{color:var(--chu-3);font-weight:500}
.kh-dt .kh-ds-sua{position:absolute;top:-3px;right:0}
.kh-dt .kh-ds-form{padding:0;margin-top:2px}
.kh-pull{margin-top:5px;align-self:flex-start;min-height:40px;padding:0 14px;
  font-size:12.5px;font-weight:650;color:var(--arc);border-radius:var(--r-nho);
  border:1px solid var(--line-2);background:var(--arc-mo)}
.kh-pull:disabled{opacity:.6}
.kh-pull-loi{font-size:11.5px;color:var(--do);margin-top:6px;line-height:1.4}

/* Tay: việc do Não giao — nhãn + nút lý do */
.kh-viec-nd{flex:1;min-width:0;display:flex;align-items:center;gap:7px}
.kh-nao-nhan{flex:0 0 auto;font-size:9.5px;font-weight:700;letter-spacing:.03em;
  color:var(--arc);padding:1px 6px;border-radius:999px;background:var(--arc-mo)}
.kh-viec.tu-nao{background:rgba(63,224,255,.04)}
.kh-lydo-nut{flex:0 0 40px;width:40px;height:40px;color:var(--arc);font-size:15px;
  font-weight:700;opacity:.85;border-radius:var(--r-nho)}
.kh-lydo-nut:active{background:var(--nen-3)}
/* "Hỏi cho rõ" trên hàng lưu ý Tim / theo dõi Mắt (Đại Ka 27/07): nút PHỤ nên
   nhạt hơn nút hành động chính ("Đã nắm"), nhưng vẫn đủ 40px chạm. Khổ hẹp
   rút nhãn còn "Hỏi" — hàng này đã có "?" · Đã nắm · ✕ rồi. */
.kh-hoi-nut{color:var(--chu-2);border-color:var(--vien);background:var(--nen-2)}
.kh-hoi-nut:active{color:var(--arc);border-color:var(--line-2)}
.kh-hoi-nut .hoi-dai{display:none}

/* khối "Nhờ Não" trong Tim/Chân */
.kh-nao-khoi{padding:14px 15px;border:1px solid var(--line-2);
  border-radius:var(--r-lon);background:rgba(63,224,255,.05);
  display:flex;flex-direction:column;gap:11px;flex:0 0 auto}
.kh-nao-nhac{font-size:13px;color:var(--chu-2);line-height:1.5}
.rs-homnay .ten{color:var(--luc)}
.nut-nao.dang{opacity:.7;pointer-events:none}
.nut-nao.dang span{animation:rs-tho 1.1s ease-in-out infinite}
@keyframes rs-tho{0%,100%{opacity:1}50%{opacity:.5}}

/* ⭐ tiến trình / kết quả lần toả rà soát ghi nhật ký (Đại Ka 25/07) */
.rs-lan{display:flex;flex-direction:column;gap:7px}
.rs-lan:empty{display:none}
.rs-lan-trong{font-size:12.5px;color:var(--chu-3);line-height:1.5}
.rs-lan-dau{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.rs-lan-tt{font-size:11px;font-weight:700;letter-spacing:.03em;padding:3px 9px;
  border-radius:var(--r-tron)}
.rs-lan-tt.chay{background:rgba(240,145,62,.15);color:var(--cam)}
.rs-lan-tt.xong{background:rgba(61,220,151,.15);color:var(--luc)}
.rs-lan-phu{font-size:11.5px;color:var(--chu-3);font-weight:600}
.rs-da{display:flex;align-items:center;gap:10px;padding:9px 11px;
  border:1px solid var(--vien);border-radius:var(--r-nho);background:var(--nen-2)}
.rs-da .noi{flex:1;min-width:0}
.rs-da .ten{display:block;font-size:13px;font-weight:600;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.rs-da .duoi{display:block;font-size:11.5px;color:var(--chu-3);line-height:1.45;
  margin-top:2px}

/* nút Thảo luận + badge trạng thái trong hàng việc (Tay/Chân) */
.kh-viec-nd{min-width:140px;flex-wrap:wrap;row-gap:4px}
.kh-viec-nut{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;gap:4px}
.kh-tl-nut{display:inline-flex;align-items:center;gap:6px;min-height:40px;
  padding:0 12px;font-size:12px;font-weight:650;color:var(--arc);white-space:nowrap;
  border-radius:var(--r-tron);border:1px solid var(--line-2);background:var(--arc-mo)}
.kh-tl-nut svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.kh-tl-nut.dang{color:var(--cam);border-color:rgba(240,145,62,.4);
  background:rgba(240,145,62,.12)}
.kh-tl-nut.nho{min-height:38px;padding:0 11px;font-size:11.5px;margin-left:auto}
.kh-tl-nut:active{transform:scale(.97)}
.kh-tt{flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.02em;
  padding:2px 8px;border-radius:999px}
.kh-tt.trien{color:var(--cam);background:rgba(240,145,62,.14)}
/* "chờ bắt tay" = đã xếp vào Tay nhưng CHƯA chạy lượt nào — xám, đừng khoe
   màu cam như đang chạy thật (Đại Ka 23/07: đừng hiện trạng thái ảo) */
.kh-tt.cho-lam{color:var(--chu-3);background:var(--nen-3);
  border:1px dashed var(--vien)}
/* việc nền DỪNG bất thường (Đại Ka 25/07) — đỏ, viền nét, để không lẫn với
   "đang làm" cam; báo thật là đã dừng chứ không phải vẫn chạy */
.kh-tt.loi-nen{color:var(--do,#ff6b6b);background:rgba(255,107,107,.13);
  border:1px dashed rgba(255,107,107,.5)}
/* Đại Ka CHỦ ĐỘNG ⏸ tạm dừng — vàng, không đỏ như lỗi (đây là ý muốn) */
.kh-tt.tam-dung{color:var(--vang,#f0c040);background:rgba(240,192,64,.13);
  border:1px dashed rgba(240,192,64,.5)}
.kh-tl-nut.tam-dung{color:var(--vang,#f0c040);
  border-color:rgba(240,192,64,.4)}
button.kh-tt.xong{color:var(--luc);background:rgba(61,220,151,.14)}
/* CR7 TỰ báo xong sau phiên nền (Đại Ka 25/07) — viền nét để phân biệt với
   việc chính chủ nhân tick: đây mới là lời KHAI của máy, còn phải nghiệm thu */
button.kh-tt.xong.tu-bao{border:1px dashed rgba(61,220,151,.55)}
.kh-tl-nut.lam-tiep{color:var(--cam);border-color:rgba(240,145,62,.4);
  background:rgba(240,145,62,.12)}
.kh-tl-nut.nghiem-thu{color:var(--luc);border-color:rgba(61,220,151,.4);
  background:rgba(61,220,151,.1);margin-left:0}

/* ---------- modal THẢO LUẬN đầu việc (chat riêng từng việc) ---------- */
.phieu-hop.tl-hop{display:flex;flex-direction:column;width:min(560px,100%);
  height:min(86dvh,760px);max-height:86dvh;padding:0;overflow:hidden}
.tl-hop .phieu-dau{padding:12px 14px;border-bottom:1px solid var(--vien);flex:0 0 auto}
.tl-tieu{flex:1;min-width:0;display:flex;align-items:center;gap:9px}
.tl-tieu b{font-size:15px;font-weight:650;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.tl-tt{flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.02em;
  padding:2px 9px;border-radius:999px}
.tl-tt.trien{color:var(--cam);background:rgba(240,145,62,.14)}
.tl-tt.xong{color:var(--luc);background:rgba(61,220,151,.14)}
.tl-tt.cho-lam{color:var(--chu-3);background:var(--nen-3);
  border:1px dashed var(--vien)}
.tl-tin{flex:1;min-height:0;overflow-y:auto;padding:14px 15px;display:flex;
  flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch}
.tl-goi-y{font-size:12.5px;color:var(--chu-3);line-height:1.6;padding:12px 13px;
  border:1px dashed var(--vien);border-radius:var(--r-vua);background:var(--nen-2)}
.tl-phien{display:flex;flex-direction:column;gap:10px}
.tl-dang{opacity:.6;letter-spacing:4px}
.tl-hanh-dong{flex:0 0 auto;display:flex;gap:8px;flex-wrap:wrap;padding:10px 15px;
  border-top:1px solid var(--vien)}
.tl-hanh-dong .nut-phu{flex:1;min-width:135px;min-height:44px}
.tl-soan{flex:0 0 auto;display:flex;gap:9px;align-items:flex-end;
  padding:11px 15px calc(11px + var(--an-toan-duoi));border-top:1px solid var(--vien)}
.tl-soan textarea{flex:1;min-height:44px;max-height:120px;padding:11px 13px;
  font-size:16px;border:1px solid var(--vien);border-radius:var(--r-vua);
  background:var(--nen-2);color:var(--chu-1);resize:none;line-height:1.4}
.tl-soan textarea:focus{border-color:var(--arc);outline:none}
.tl-soan .nut-gui{flex:0 0 44px}

/* ---------- phiếu dashboard (iframe toàn màn) ----------
   Dùng .phieu-hop.dash-hop (2 class = specificity cao hơn .phieu-hop đơn) để
   thắng max-height:90dvh của .phieu-hop mobile — nếu không phiếu chỉ cao 90%
   và lộ tab Bảng phía dưới (bắt được khi chụp màn 20/07).
   transform:none để không dính translate canh-giữa của desktop kéo lệch. */
.phieu-hop.dash-hop{inset:0;width:100%;height:100dvh;max-height:100dvh;
  transform:none;border-radius:0;display:flex;flex-direction:column;
  padding-top:env(safe-area-inset-top,0px)}
.dash-than{flex:1;position:relative;min-height:0;background:var(--nen-0)}
#dash-frame{width:100%;height:100%;border:0;display:block}
#dash-mo-ngoai{text-decoration:none}

.dang-tai{display:flex;gap:5px;justify-content:center;padding:50px 0}
.dang-tai i{width:8px;height:8px;border-radius:50%;background:var(--chu-3);
  animation:nay 1.3s ease-in-out infinite}
.dang-tai i:nth-child(2){animation-delay:.16s}
.dang-tai i:nth-child(3){animation-delay:.32s}

/* ---------- Trợ lý: não + hội thoại nổi trên nền não ----------
   #khung-chat phủ TRÊN não. Khi chưa có tin: pointer-events:none để còn
   kéo/chạm não; có tin (lớp .co-tin) thì nhận chạm để cuộn hội thoại. */
.troly-than{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}
.troly-than .khung-chat{position:absolute;inset:12px;z-index:4;border-radius:var(--r-lon);
  pointer-events:none;background:transparent;padding-bottom:44px;
  transition:opacity var(--vua)}
.troly-than .khung-chat>*{pointer-events:auto}
/* thu gọn: não hiện nguyên, hội thoại lặn đi, bấm nút là quay lại */
.troly-than .khung-chat.gon{opacity:0;pointer-events:none !important}
.troly-than .khung-chat.gon>*{pointer-events:none}
/* MỖI DỰ ÁN MỘT KHUNG PHIÊN riêng — đổi dự án là chuyển khung, không xoá.
   Khung đang hiện tự neo xuống đáy khi ít tin. */
.khung-phien{display:flex;flex-direction:column;gap:13px}
.troly-than .khung-chat .khung-phien:not(.an){margin-top:auto}
.troly-than .khung-chat.co-tin{pointer-events:auto;
  background:linear-gradient(180deg,transparent 0%,rgba(2,8,14,.42) 40%,rgba(2,8,14,.78))}
.trangthai{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);z-index:5;
  display:flex;align-items:center;gap:7px;white-space:nowrap;
  font-family:var(--mono);font-size:9px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--arc);background:rgba(6,10,17,.66);border:1px solid rgba(69,227,255,.22);
  padding:5px 12px;border-radius:var(--r-tron);backdrop-filter:blur(4px)}
.trangthai i{width:6px;height:6px;border-radius:50%;background:var(--arc);
  box-shadow:0 0 9px var(--arc);animation:tho-cham 2s ease-in-out infinite}
@keyframes tho-cham{0%,100%{opacity:1}50%{opacity:.3}}
.do-thi-hop.ban{box-shadow:inset 0 0 60px rgba(0,0,0,.55),
  inset 0 0 0 1px rgba(69,227,255,.16),0 0 34px -12px rgba(69,227,255,.5)}
.dem-troly{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:0 12px 4px}
.dem-troly .o-dem{padding:7px 4px 6px;border-radius:11px}
.dem-troly .o-dem .so{font-size:15px}
.dem-troly .o-dem .nhan-dem{font-size:7px;margin-top:3px}

.khung-chat{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:16px 12px 6px;display:flex;flex-direction:column;gap:13px;contain:content}
.khung-chat::-webkit-scrollbar{width:0}
.man-chao{margin-top:auto;text-align:center;max-width:100%;padding-bottom:2px;
  animation:len var(--mem) both}
.man-chao .phu{line-height:1.6}
/* chip DỰ ÁN ngay màn Trợ lý — bấm phát đổi não/ngữ cảnh, khỏi mở ngăn cạnh */
.goi-y{display:flex;flex-direction:row;flex-wrap:wrap;gap:7px;margin-top:10px;
  justify-content:center}
.goi-y button{display:inline-flex;align-items:center;gap:7px;
  min-height:var(--cham);padding:8px 14px;border-radius:var(--r-tron);
  font-size:12.5px;color:var(--chu-2);background:rgba(9,17,26,.78);backdrop-filter:blur(6px);
  border:1px solid var(--line);transition:background var(--nhanh),transform var(--nhanh),
  border-color var(--vua),color var(--vua)}
.goi-y button .cham{box-shadow:0 0 7px currentColor}
.goi-y button:active{background:var(--nen-3);transform:scale(.97)}
.goi-y button.dang{color:var(--chu-1);border-color:rgba(63,224,255,.45);
  background:rgba(63,224,255,.08)}

.bong{max-width:88%;padding:11px 15px;border-radius:var(--r-lon);
  white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;
  animation:len 240ms cubic-bezier(.16,1,.3,1) both}
.bong.toi{align-self:flex-end;color:var(--chu-1);border-bottom-right-radius:7px;
  background:rgba(18,32,45,.92);border:1px solid var(--line-2);
  box-shadow:var(--bong-1)}
.bong.no{align-self:flex-start;background:rgba(7,17,26,.9);backdrop-filter:blur(8px);
  border:1px solid rgba(69,227,255,.2);border-left:2px solid var(--arc);
  border-bottom-left-radius:7px;
  box-shadow:var(--bong-1),0 0 24px -12px rgba(69,227,255,.55)}
.bong.hong{align-self:flex-start;max-width:100%;background:rgba(255,107,107,.09);
  border:1px solid rgba(255,107,107,.34);color:#ffb0b0;font-size:13.5px}
/* C4 (26/07): tin HỆ THỐNG tự gửi thay Đại Ka (vd yêu cầu tóm tắt phiên) —
   nhạt + nghiêng + căn giữa, để KHÔNG lẫn với tin Đại Ka tự gõ */
.bong.toi.he-thong{align-self:center;max-width:80%;font-size:12.5px;
  font-style:italic;color:var(--chu-3);background:transparent;
  border:1px dashed var(--vien);box-shadow:none;text-align:center}
.bong code{font-family:var(--mono);font-size:13px;background:var(--nen-0);
  padding:1.5px 5px;border-radius:5px}

.hang-hieu{align-self:flex-start;display:flex;flex-wrap:wrap;gap:6px;max-width:100%}
.nhan-tool{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;
  border-radius:var(--r-tron);font-size:12px;color:var(--chu-2);
  background:var(--nen-2);border:1px solid var(--vien);
  animation:len 220ms cubic-bezier(.16,1,.3,1) both}
.nhan-tool .cham{width:6px;height:6px;flex:0 0 6px;background:var(--tim);box-shadow:none}
.nhan-tool.cho .cham{background:var(--nhan);animation:tho 1.1s ease-in-out infinite}

.dang-go{align-self:flex-start;display:flex;gap:5px;padding:15px 19px;
  background:var(--nen-2);border:1px solid var(--vien);
  border-radius:var(--r-lon);border-bottom-left-radius:7px}
.dang-go i{width:6px;height:6px;border-radius:50%;background:var(--chu-3);
  animation:nay 1.3s ease-in-out infinite}
.dang-go i:nth-child(2){animation-delay:.16s}
.dang-go i:nth-child(3){animation-delay:.32s}
.con-tro::after{content:"";display:inline-block;width:2px;height:1em;
  background:var(--arc);margin-left:2px;vertical-align:text-bottom;
  animation:nhay 1s steps(2) infinite}

.soan{padding:8px 12px calc(10px + var(--an-toan-duoi));
  border-top:1px solid var(--vien);background:rgba(14,16,22,.82);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.hop-soan{display:flex;align-items:flex-end;gap:8px;padding:5px 5px 5px 16px;
  background:rgba(12,18,28,.9);border:1px solid var(--line-2);border-radius:999px;
  transition:border-color var(--vua),box-shadow var(--vua)}
.hop-soan:focus-within{border-color:var(--arc);box-shadow:0 0 0 3px var(--arc-mo)}
/* 16px là ngưỡng chống iOS tự phóng to khi focus — đừng hạ xuống */
#o-nhap{flex:1;resize:none;max-height:150px;padding:10px 0;background:none;
  border:none;color:var(--chu-1);font-family:inherit;font-size:16px;line-height:1.5}
#o-nhap:focus{outline:none}
#o-nhap::placeholder{color:var(--chu-3)}
.nut-gui{display:grid;place-items:center;width:var(--cham);height:var(--cham);
  flex:0 0 var(--cham);border-radius:50%;color:var(--arc);
  background:rgba(63,224,255,.14);border:1px solid rgba(63,224,255,.5);
  box-shadow:0 0 18px -4px var(--arc),inset 0 0 8px rgba(63,224,255,.15);
  transition:transform var(--nhanh),opacity var(--vua)}
.nut-gui:active:not(:disabled){transform:scale(.92)}
.nut-gui:disabled{opacity:.3;box-shadow:none;background:var(--nen-3);color:var(--chu-3)}

/* ---------- ngăn dự án (phiếu trượt từ dưới trên điện thoại) ---------- */
.rem{position:fixed;inset:0;z-index:29;background:rgba(0,0,0,.6);
  opacity:0;pointer-events:none;transition:opacity var(--vua)}
.rem.hien{opacity:1;pointer-events:auto}

#canh{position:fixed;left:0;right:0;bottom:0;z-index:30;
  max-height:82vh;max-height:82dvh;display:flex;flex-direction:column;
  background:var(--kinh);backdrop-filter:blur(22px) saturate(1.4);
  -webkit-backdrop-filter:blur(22px) saturate(1.4);
  border-top:1px solid var(--vien-sang);
  border-radius:var(--r-lon) var(--r-lon) 0 0;box-shadow:var(--bong-3);
  transform:translateY(101%);transition:transform var(--mem);
  padding-bottom:var(--an-toan-duoi)}
#canh.mo{transform:none}
#canh::before{content:"";position:absolute;top:8px;left:50%;width:40px;height:4px;
  border-radius:99px;background:var(--vien-sang);transform:translateX(-50%)}
.canh-dau{display:flex;align-items:center;gap:11px;padding:22px 12px 12px 16px;
  border-bottom:1px solid var(--vien)}
.thuong-hieu{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.thuong-hieu b{display:block;font-size:15px;font-weight:650}
.thuong-hieu em{display:block;font-size:12px}

/* ---- chọn dự án: MỘT Ô, bấm mới sổ (Đại Ka 27/07) ----
   Trước đây `.ds-du-an` là `flex:1` phơi cả danh sách ra ngăn cạnh; mấy khối
   dưới bóp nó còn ~1 hàng, phải cuộn trong một khe hẹp mới bấm trúng dự án.
   Nay ô thu gọn luôn cao 56px, panel sổ ra nổi TRÊN các khối dưới (absolute)
   nên không tranh chỗ với ai — max-height do JS đo theo đáy ngăn cạnh. */
.hop-du-an{position:relative;padding:8px;z-index:6}
.so-du-an{display:flex;align-items:center;gap:11px;width:100%;min-height:56px;
  padding:9px 12px;border-radius:var(--r-vua);text-align:left;
  background:var(--nen-2);border:1px solid var(--vien);
  transition:background var(--nhanh),border-color var(--vua),transform var(--nhanh)}
.so-du-an:active{background:var(--nen-3);transform:scale(.985)}
.so-du-an[aria-expanded="true"]{background:var(--nen-3);
  border-color:rgba(63,224,255,.4);box-shadow:0 0 12px -3px rgba(63,224,255,.45)}
.so-chu{flex:1;min-width:0}
.so-nhan{display:block;font-size:10.5px;font-weight:650;letter-spacing:.03em;
  text-transform:uppercase;color:var(--chu-3);font-style:normal}
#so-ten{display:block;font-size:14.5px;font-weight:600;color:var(--chu-1);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.so-du-an .mui{width:18px;height:18px;flex:0 0 18px;color:var(--chu-3);
  transition:transform var(--vua)}
.so-du-an[aria-expanded="true"] .mui{transform:rotate(180deg)}
.canh-day{flex:1;min-height:6px}

.ds-du-an{position:absolute;left:8px;right:8px;top:calc(100% - 3px);z-index:20;
  max-height:min(46dvh,360px);overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:6px;background:var(--nen-1);border:1px solid var(--vien-sang);
  border-radius:var(--r-vua);box-shadow:var(--bong-2);
  animation:so-xuong var(--vua) both}
@keyframes so-xuong{from{opacity:0;transform:translateY(-6px)}
  to{opacity:1;transform:none}}
.the-du-an{position:relative;display:flex;align-items:center;gap:12px;width:100%;
  min-height:60px;padding:11px 13px;border-radius:var(--r-vua);text-align:left;
  transition:background var(--nhanh),transform var(--nhanh)}
.the-du-an:active{background:var(--nen-3);transform:scale(.985)}
.the-du-an.chon{background:var(--nen-3);box-shadow:var(--bong-1),var(--sang-trong)}
/* mảng con của 21 ngày — thụt vào dưới thẻ dự án mẹ */
.ds-con{display:flex;flex-direction:column;gap:1px;margin:0 0 6px 24px;
  border-left:1px solid var(--vien);padding-left:8px}
.ds-con button{display:flex;align-items:center;gap:9px;min-height:var(--cham);
  padding:6px 10px;border-radius:var(--r-nho);font-size:12.5px;color:var(--chu-2);
  text-align:left;transition:background var(--nhanh),color var(--vua)}
.ds-con button:active{background:var(--nen-3)}
.ds-con button.dang{color:var(--arc);background:var(--arc-mo)}
.ds-con .cham{width:7px;height:7px;flex:0 0 7px;box-shadow:none}
.the-du-an.chon::before{content:"";position:absolute;left:0;top:50%;width:3px;
  height:22px;border-radius:0 3px 3px 0;background:var(--arc);
  transform:translateY(-50%)}
.the-du-an .noi-dung{flex:1;min-width:0}
.the-du-an .ten{display:block;font-size:14.5px;font-weight:550}
.the-du-an .mo-ta{display:block;font-size:12px;color:var(--chu-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.the-du-an.thieu{opacity:.42}
.canh-quyen{padding:12px 12px 10px;border-top:1px solid var(--vien)}
.nh-quyen{display:block;font-size:11px;font-weight:650;letter-spacing:.03em;
  text-transform:uppercase;color:var(--chu-3);margin-bottom:8px}
.hang-quyen{display:flex;gap:5px}
/* --cham (44px) chứ đừng gõ số. Đây là lần thứ ba cùng một lỗi: tab chuyển
   màn, rồi chip, giờ tới nút quyền — đều bị đặt 36px rồi bị test bắt. */
.hang-quyen button{flex:1;min-height:var(--cham);border-radius:var(--r-nho);
  font-size:12px;font-weight:600;color:var(--chu-3);background:var(--nen-2);
  border:1px solid var(--vien);
  transition:background var(--nhanh),color var(--vua),border-color var(--vua)}
.hang-quyen button.chon{color:var(--chu-1);border-color:rgba(63,224,255,.34);
  background:linear-gradient(180deg,var(--nen-3),var(--nen-2));
  box-shadow:0 0 12px -3px rgba(63,224,255,.5)}
.hang-quyen button.chon.canh{background:linear-gradient(145deg,#ff8a6b,var(--do));
  color:#2a0808}
#quyen-mo-ta{display:block;margin-top:8px;line-height:1.45}

.sua-than{display:flex;flex-direction:column;padding:14px 16px 18px}
#sua-noi-dung{flex:1;min-height:46vh;min-height:46dvh;resize:none;padding:14px;
  border-radius:var(--r-vua);background:var(--nen-0);border:1px solid var(--vien);
  color:var(--chu-1);font-family:var(--mono);font-size:14px;line-height:1.65}
#sua-noi-dung:focus{outline:none;border-color:var(--nhan);
  box-shadow:0 0 0 3px var(--nhan-mo)}

.canh-chan{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid var(--vien)}
.nut-phu{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
  min-height:var(--cham);border-radius:var(--r-vua);font-size:13.5px;
  color:var(--chu-2);background:var(--nen-2);border:1px solid var(--vien);
  transition:background var(--nhanh),transform var(--nhanh)}
.nut-phu svg{width:17px;height:17px}
.nut-phu:active{background:var(--nen-3);transform:scale(.97)}

/* ---------- màn Nhớ ---------- */
.o-tim-hop{display:flex;align-items:center;gap:9px;margin:12px 12px 0;
  padding:0 6px 0 14px;background:var(--nen-2);border:1px solid var(--vien);
  border-radius:var(--r-lon);transition:border-color var(--vua),box-shadow var(--vua)}
.o-tim-hop:focus-within{border-color:var(--nhan);box-shadow:0 0 0 3px var(--nhan-mo)}
.o-tim-hop .bt-tim{color:var(--chu-3);flex:0 0 20px}
/* 16px chống iOS tự phóng to khi focus */
#o-tim{flex:1;min-height:var(--cham);background:none;border:none;
  color:var(--chu-1);font-family:inherit;font-size:16px}
#o-tim:focus{outline:none}
#o-tim::placeholder{color:var(--chu-3)}
#o-tim::-webkit-search-cancel-button{display:none}

.chuyen-nho{display:flex;gap:8px;margin:10px 12px 0}
.tab-nho{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
  min-height:var(--cham);border-radius:var(--r-vua);font-size:13.5px;
  font-weight:600;color:var(--chu-3);background:var(--nen-2);
  border:1px solid var(--vien);
  transition:background var(--nhanh),color var(--vua),border-color var(--vua),transform var(--nhanh)}
.tab-nho svg{width:17px;height:17px}
.tab-nho:active{transform:scale(.97)}
.tab-nho.chon{color:var(--chu-1);border-color:rgba(63,224,255,.34);
  background:linear-gradient(180deg,var(--nen-3),var(--nen-2));
  box-shadow:0 0 14px -3px rgba(63,224,255,.5),inset 0 1px 0 rgba(255,255,255,.05)}
.tab-nho.chon svg{color:var(--arc)}

.loc-du-an{display:flex;gap:8px;margin:10px 12px 0;flex-wrap:wrap}
.chip{min-height:var(--cham);padding:0 16px;border-radius:var(--r-tron);font-size:12.5px;
  color:var(--chu-3);background:var(--nen-2);border:1px solid var(--vien);
  transition:background var(--nhanh),color var(--vua),border-color var(--vua)}
.chip b{font-weight:650}
.chip.chon{color:var(--arc);border-color:rgba(63,224,255,.42);
  background:var(--arc-mo)}

.the-nho{display:flex;flex-direction:column;gap:5px;width:100%;padding:13px 15px;
  text-align:left;border-top:1px solid var(--vien);transition:background var(--nhanh)}
.the-nho:first-child{border-top:none}
.the-nho:active{background:var(--nen-3)}
.the-nho .tren{display:flex;align-items:center;gap:8px}
.the-nho .ten{font-size:14px;font-weight:600;flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.the-nho .mo-ta{font-size:12.5px;color:var(--chu-2);line-height:1.5}
.the-nho .trich{font-size:12px;color:var(--chu-3);line-height:1.5}
.nhan-da{padding:2px 8px;border-radius:var(--r-tron);font-size:10.5px;
  font-weight:600;background:var(--nen-3);color:var(--chu-3);flex:0 0 auto;
  max-width:42%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nhan-loai{padding:2px 8px;border-radius:var(--r-tron);font-size:10.5px;
  font-weight:600;flex:0 0 auto}
.nhan-loai.project{background:rgba(245,181,68,.13);color:var(--nhan)}
.nhan-loai.feedback{background:rgba(139,124,255,.13);color:var(--tim)}
.nhan-loai.reference{background:rgba(61,220,151,.11);color:var(--luc)}
.nhan-loai.user,.nhan-loai.index{background:var(--nen-3);color:var(--chu-2)}

.trong-khong{text-align:center;padding:44px 20px;color:var(--chu-3);font-size:13.5px}
.lien-ket{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px;
  padding-top:14px;border-top:1px solid var(--vien)}
.lien-ket .nh{font-size:12px;color:var(--chu-3);width:100%;margin-bottom:2px}
.lien-ket button{padding:6px 12px;border-radius:var(--r-tron);font-size:12.5px;
  color:var(--chu-2);background:var(--nen-2);border:1px solid var(--vien);
  transition:background var(--nhanh)}
.lien-ket button:active{background:var(--nen-3)}

/* ---------- đồ thị liên kết — LÕI KÝ ỨC ----------
   Nền HUD (lưới + vành đồng tâm) là trang trí thuần CSS: xoay bằng transform
   trên GPU, KHÔNG có vòng lặp JS -> không tốn CPU/pin. Node vẫn vẽ tĩnh như cũ,
   chỉ thêm quầng sáng cho node-trục + node đang chọn (không phải cả 141 node,
   để kéo-thả không giật). */
.do-thi-hop{position:relative;flex:1;min-height:0;margin:12px;
  border-radius:var(--r-lon);overflow:hidden;touch-action:none;
  background:radial-gradient(130% 96% at 50% 34%,#0f1a29 0%,#0a0f18 58%,#06080e 100%);
  border:1px solid var(--vien);
  box-shadow:inset 0 0 60px rgba(0,0,0,.55),inset 0 0 0 1px rgba(63,224,255,.05)}

.do-thi-vien{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.do-thi-vien::before{content:"";position:absolute;inset:0;
  background-image:radial-gradient(rgba(120,160,200,.05) 1px,transparent 1.4px);
  background-size:24px 24px;
  -webkit-mask-image:radial-gradient(72% 62% at 50% 42%,#000,transparent 80%);
          mask-image:radial-gradient(72% 62% at 50% 42%,#000,transparent 80%)}
/* Vành ngắm giờ vẽ TRONG canvas (toạ độ thế giới) — pan/zoom/xoay cùng não.
   Chỉ giữ keyframes xoay-vanh cho vành quanh huy hiệu màn khoá. */
@keyframes xoay-vanh{to{transform:rotate(360deg)}}

/* touch-action:none -> canvas TỰ nuốt chụm/kéo, KHÔNG để iOS Safari phóng to
   trang (lỗi Đại Ka 21/07: chụm zoom não thì lộ vệt sáng lạ dưới đáy khung —
   là trình duyệt tự zoom trang chứ không phải mình vẽ). */
#do-thi{display:block;width:100%;height:100%;position:relative;z-index:1;
  touch-action:none}
/* hàng kỹ năng trong phiếu (bấm ô Kỹ năng ở màn Trợ lý) */
.hang-kn{display:flex;flex-direction:column;gap:3px;padding:11px 4px;
  border-top:1px solid var(--vien)}
.hang-kn:first-child{border-top:none}
.hang-kn b{font-size:13.5px;font-weight:650}
.hang-kn .phu{line-height:1.5}

/* dòng đọc kỹ thuật — nằm TRÊN não, gạch giãn nối các số (như concept) */
.do-thi-doc{display:flex;align-items:center;gap:9px;white-space:nowrap;
  margin:10px 16px 0;font-family:var(--mono);font-size:8.5px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--chu-3)}
.do-thi-doc em{color:var(--arc);font-style:normal}
.do-thi-doc b{color:var(--chu-2);font-weight:500}
.do-thi-doc .sep{flex:1;height:1px;min-width:14px;
  background:linear-gradient(90deg,var(--line-2),transparent)}

.chu-thich{position:absolute;left:12px;bottom:12px;z-index:3;display:flex;flex-wrap:wrap;
  gap:8px;pointer-events:none;max-width:calc(100% - 24px)}
.chu-thich span{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;
  border-radius:var(--r-tron);font-size:11px;color:var(--chu-2);
  background:rgba(8,12,20,.72);border:1px solid var(--vien);backdrop-filter:blur(8px)}
.chu-thich i{width:8px;height:8px;border-radius:50%;box-shadow:0 0 7px currentColor}
/* right:132px để KHÔNG che chip 2D/3D; có nút đóng riêng cho đỡ vướng */
.do-thi-nhan{position:absolute;left:12px;top:12px;right:132px;z-index:5;
  padding:11px 40px 11px 14px;
  border-radius:var(--r-vua);background:rgba(9,13,21,.92);
  backdrop-filter:blur(10px);border:1px solid rgba(63,224,255,.22);
  box-shadow:var(--bong-2),0 0 22px -8px rgba(63,224,255,.4);animation:len 200ms both}
.do-thi-nhan b{display:block;font-size:13.5px;font-weight:650;margin-bottom:3px}
.do-thi-nhan em{display:block;font-size:11.5px;color:var(--chu-3);font-style:normal}
.do-thi-nhan .mo{display:block;font-size:12px;color:var(--chu-2);margin-top:5px;
  line-height:1.5}
.do-thi-nhan .dong-nhan{position:absolute;top:2px;right:2px;width:var(--cham);
  height:var(--cham);display:grid;place-items:center;border-radius:var(--r-nho);
  color:var(--chu-3);transition:background var(--nhanh),color var(--nhanh)}
.do-thi-nhan .dong-nhan:active{background:var(--nen-3);color:var(--chu-1)}
.nut-cham.dang-bat{color:var(--nhan);background:var(--nhan-mo)}
.do-thi-tai{position:absolute;inset:0;display:grid;place-items:center;
  background:rgba(8,12,20,.7);font-size:13px;color:var(--chu-2);z-index:4}

/* khung góc HUD — như concept đã duyệt */
.bk{position:absolute;width:14px;height:14px;z-index:3;pointer-events:none;
  border:1.5px solid rgba(63,224,255,.4)}
.bk.tl{top:10px;left:10px;border-right:0;border-bottom:0;border-top-left-radius:4px}
.bk.tr{top:10px;right:10px;border-left:0;border-bottom:0;border-top-right-radius:4px}
.bk.bl{bottom:10px;left:10px;border-right:0;border-top:0;border-bottom-left-radius:4px}
.bk.br{bottom:10px;right:10px;border-left:0;border-top:0;border-bottom-right-radius:4px}

/* dòng hệ thống dưới ô nhập — như concept */
.sysline{display:flex;justify-content:center;align-items:center;gap:10px;
  margin-top:7px;
  font-family:var(--mono);font-size:7.5px;letter-spacing:.18em;color:var(--chu-3);
  text-transform:uppercase}
.sysline em{font-style:normal;color:var(--arc)}
/* VOICE thành nút đổi ngôn ngữ mic nghe (VI/EN) — vùng chạm nới bằng padding
   âm-margin cho đủ 44px mà dòng chữ vẫn mảnh */
.mic-lang{font:inherit;letter-spacing:inherit;text-transform:inherit;
  color:var(--arc);background:none;border:none;
  padding:16px 10px;margin:-16px -4px;transition:color var(--nhanh)}
.mic-lang:active{color:var(--chu-1)}
/* phiếu Giọng đọc — bấm là nghe thử + lưu */
.hang-giong{display:flex;align-items:center;gap:9px;width:100%;
  min-height:var(--cham);padding:8px 11px;margin-top:6px;
  border-radius:var(--r-vua);text-align:left;
  background:var(--nen-2);border:1px solid var(--vien);
  transition:background var(--nhanh),border-color var(--nhanh)}
.hang-giong:active{background:var(--nen-3)}
.hang-giong.chon{border-color:rgba(63,224,255,.45);
  box-shadow:0 0 14px -6px rgba(63,224,255,.5)}
.hang-giong .ten-g{flex:1;font-size:13px;font-weight:550;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.hang-giong .phu-g{font-family:var(--mono);font-size:9.5px;color:var(--chu-3)}
.hang-giong .tag-g{font-family:var(--mono);font-size:8px;letter-spacing:.12em;
  color:var(--arc);border:1px solid rgba(63,224,255,.35);
  border-radius:var(--r-tron);padding:2px 7px;white-space:nowrap}

/* nút thu/mở hội thoại — não là mặt chính, chat thu được cho gọn */
.thu-chat{position:absolute;right:16px;bottom:14px;z-index:6;
  width:var(--cham);height:var(--cham);display:grid;place-items:center;
  border-radius:50%;color:var(--arc);background:rgba(9,13,21,.82);
  border:1px solid rgba(63,224,255,.35);backdrop-filter:blur(6px)}
.thu-chat svg{transition:transform var(--vua)}
.thu-chat:active{background:var(--nen-3)}
#khung-chat.gon ~ .thu-chat svg{transform:rotate(180deg)}

/* nút ⌖ đưa não về giữa — kéo/xoay lạc đi đâu bấm một phát là não fit lại
   khung (Đại Ka 20/07: "lệch mà không kéo về giữa được") */
.nut-giua{position:absolute;left:16px;bottom:14px;z-index:6;
  width:var(--cham);height:var(--cham);display:grid;place-items:center;
  border-radius:50%;color:var(--arc);background:rgba(9,13,21,.82);
  border:1px solid rgba(63,224,255,.35);backdrop-filter:blur(6px);
  transition:transform var(--nhanh),background var(--nhanh)}
.nut-giua svg{width:18px;height:18px;fill:none;stroke:currentColor;
  stroke-width:1.5;stroke-linecap:round}
.nut-giua:active{transform:scale(.92);background:var(--nen-3)}

/* ---------- HUD thông số quanh não — kiểu màn chỉ huy sci-fi ----------
   Hai tấm kính mỏng hai bên đọc số THẬT của dự án/mảng đang chọn (ảnh tham
   chiếu Đại Ka 20/07: trái đất giữa, thông số nổi quanh). pointer-events:none
   để không cản kéo não; chat phủ lên thì tự mờ đi. */
.hud{position:absolute;top:34px;z-index:2;pointer-events:auto;
  width:clamp(128px,36%,178px);padding:9px 10px 10px;border-radius:10px;
  font-family:var(--mono);font-size:9px;letter-spacing:.07em;
  color:var(--chu-2);background:linear-gradient(180deg,rgba(8,18,28,.84),rgba(4,9,16,.62));
  border:1px solid rgba(63,224,255,.24);
  box-shadow:0 0 22px -8px rgba(63,224,255,.4),inset 0 1px 0 rgba(63,224,255,.14);
  transition:opacity var(--vua)}
/* khung góc + vân quét ngang — tấm kính HUD robot (Đại Ka 23/07) */
.hud::before{content:"";position:absolute;inset:0;pointer-events:none;
  border-radius:10px;
  background:repeating-linear-gradient(180deg,rgba(63,224,255,.05) 0 1px,
    transparent 1px 3px);opacity:.5}
.hud::after{content:"";position:absolute;inset:-1px;pointer-events:none;
  background:
    linear-gradient(#4fe4ff,#4fe4ff) 0 0/14px 1.5px,
    linear-gradient(#4fe4ff,#4fe4ff) 0 0/1.5px 14px,
    linear-gradient(#4fe4ff,#4fe4ff) 100% 100%/14px 1.5px,
    linear-gradient(#4fe4ff,#4fe4ff) 100% 100%/1.5px 14px;
  background-repeat:no-repeat;opacity:.7}
.hud-trai{left:12px;animation:hud-vao-trai .55s cubic-bezier(.16,1,.3,1) both}
.hud-phai{right:12px;animation:hud-vao-phai .55s cubic-bezier(.16,1,.3,1) both}
@keyframes hud-vao-trai{from{opacity:0;transform:translateX(-16px)}
  to{opacity:1;transform:none}}
@keyframes hud-vao-phai{from{opacity:0;transform:translateX(16px)}
  to{opacity:1;transform:none}}
/* Ô MỤC TIÊU trong HUD trái — bấm là nhảy đến màn phù hợp (Đại Ka 23/07) */
.hud-muc{display:block;width:100%;min-height:40px;margin-top:6px;
  padding:6px 7px 7px;text-align:left;cursor:pointer;position:relative;
  border:1px solid rgba(63,224,255,.14);border-radius:7px;
  background:rgba(63,224,255,.045);color:var(--chu-2);
  font-family:inherit;font-size:9px;letter-spacing:.07em;
  transition:border-color var(--nhanh),background var(--nhanh),
    box-shadow var(--nhanh),transform var(--nhanh)}
.hud-muc:first-of-type{margin-top:0}
.hud-muc:active{transform:scale(.97)}
.hud-muc-dau{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.hud-muc-dau .hud-t{text-transform:uppercase;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.hud-muc-dau b{color:var(--arc);font-weight:650;font-size:11.5px;
  font-variant-numeric:tabular-nums}
/* cúp nhỏ ở ô TỔNG · 1 TỶ — nhắc cái đích cuối ngay trên não */
.hud-cup{flex:0 0 auto;width:9px;height:auto;align-self:center;
  filter:drop-shadow(0 0 5px rgba(255,178,54,.55))}
.hud-muc .hud-bar{margin-top:4px}
.hud-muc-so{display:block;margin-top:3px;color:var(--chu-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud-muc.tre{border-color:rgba(255,107,107,.35)}
.hud-muc.tre .hud-muc-dau b{color:#ff8a8a}
.hud-muc.tre .hud-bar i{background:var(--do);box-shadow:0 0 8px var(--do)}
.hud-hang.bam{cursor:pointer}
.hud-nh{display:flex;align-items:center;gap:6px;color:var(--arc);
  font-size:8px;letter-spacing:.16em;text-transform:uppercase;
  padding-bottom:5px;margin-bottom:6px;
  border-bottom:1px solid rgba(63,224,255,.18)}
.hud-nh::after{content:"";flex:1;height:1px;
  background:linear-gradient(90deg,rgba(63,224,255,.35),transparent)}
.hud-ten{display:block;font-size:10.5px;letter-spacing:.04em;font-weight:600;
  color:var(--chu-1);margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.hud-hang{display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:2.5px 0;text-transform:uppercase}
.hud-hang b{color:var(--chu-1);font-weight:500;white-space:nowrap}
.hud-hang .cham{width:5px;height:5px;flex:0 0 5px;border-radius:50%;
  box-shadow:0 0 6px currentColor}
.hud-hang .hud-t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hud-hang.dang{color:var(--arc)}
.hud-hang.dang b{color:var(--arc)}
.hud-bar{height:2px;margin-top:6px;border-radius:2px;overflow:hidden;
  background:rgba(63,224,255,.12)}
.hud-bar i{display:block;height:100%;background:var(--arc);
  box-shadow:0 0 8px var(--arc)}
/* chat đang phủ não hoặc thẻ node đang mở -> HUD nhường chỗ (và NGƯNG nhận
   chạm — HUD giờ có nút bấm, mờ đi mà còn ăn click là bấm nhầm vô hình) */
.troly-than:has(#khung-chat.co-tin:not(.gon)) .hud{opacity:0;pointer-events:none}
.do-thi-hop:has(.do-thi-nhan:not(.an)) .hud-trai{opacity:0;pointer-events:none}

@media (prefers-reduced-motion:reduce){
  .do-thi-rings .r2,.do-thi-rings .r4{animation:none}
}

/* ---------- giọng nói ---------- */
.nut-mic{display:grid;place-items:center;width:var(--cham);height:var(--cham);
  flex:0 0 var(--cham);border-radius:50%;color:var(--arc);
  background:rgba(63,224,255,.1);border:1px solid rgba(63,224,255,.35);
  transition:transform var(--nhanh),background var(--vua),color var(--vua)}
.nut-mic:active{transform:scale(.92)}
.nut-mic.dang-nghe{background:var(--do);color:#fff;border-color:var(--do);
  animation:tho 1.1s ease-in-out infinite}
.mic-bao{margin-top:9px;padding:8px 13px;border-radius:var(--r-vua);
  font-size:12.5px;line-height:1.5;color:var(--chu-2);
  background:var(--nen-2);border:1px solid var(--vien)}
.mic-bao.hong{background:rgba(255,107,107,.09);
  border-color:rgba(255,107,107,.3);color:#ffb0b0}

/* ---------- màn Việc ---------- */
.luoi-viec{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nut-viec{display:flex;flex-direction:column;align-items:flex-start;gap:7px;
  min-height:104px;padding:14px;border-radius:var(--r-lon);text-align:left;
  background:var(--nen-2);border:1px solid var(--vien);box-shadow:var(--bong-1);
  transition:background var(--nhanh),transform var(--nhanh),border-color var(--nhanh)}
.nut-viec:active{background:var(--nen-3);transform:scale(.975)}
.nut-viec .bt{display:grid;place-items:center;width:34px;height:34px;
  border-radius:10px;background:var(--arc-mo);color:var(--arc);
  border:1px solid rgba(63,224,255,.2)}
.nut-viec .ten{font-size:13.5px;font-weight:600;line-height:1.35}
.nut-viec .mo-ta{font-size:11.5px;color:var(--chu-3);line-height:1.45}
.nut-viec.xac_nhan{border-color:rgba(240,145,62,.35)}
.nut-viec.xac_nhan .bt{color:var(--cam);background:rgba(240,145,62,.12)}
.nut-viec.chay_nen .bt{color:var(--tim);background:rgba(139,124,255,.12)}

/* ---------- buồng lái: cụm đếm + luồng việc ---------- */
/* Số THẬT (đếm từ dữ liệu), mono canh cột, gạch cyan — khác reel Javis
   chỉ có số trang trí. Ô 'Luồng' nhấn cyan vì đó là cái mới. */
.dem-luong{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 12px 14px}
.o-dem{position:relative;text-align:center;padding:12px 6px 10px;overflow:hidden;
  border-radius:var(--r-vua);border:1px solid var(--vien);
  background:linear-gradient(180deg,var(--nen-2),var(--nen-1))}
.o-dem::before{content:"";position:absolute;top:0;left:14%;right:14%;height:1.5px;
  border-radius:2px;background:var(--arc);opacity:.3}
.o-dem.nhan::before{opacity:.9;box-shadow:0 0 10px var(--arc)}
.o-dem.nhan .so{color:var(--arc)}
.o-dem .so{font-family:var(--mono);font-size:22px;font-weight:700;line-height:1;
  color:var(--chu-1);font-variant-numeric:tabular-nums}
.o-dem.nhan .so{color:var(--arc)}
.o-dem .nhan-dem{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--chu-3);margin-top:6px}

.ds-luong{display:flex;flex-direction:column;gap:9px;padding:0 12px 14px}
.the-luong{display:flex;align-items:flex-start;gap:12px;text-align:left;padding:13px 14px;
  border-radius:var(--r-lon);background:var(--nen-2);border:1px solid var(--vien);
  box-shadow:var(--bong-1);
  transition:background var(--nhanh),transform var(--nhanh),border-color var(--vua)}
.the-luong:active{background:var(--nen-3);transform:scale(.99)}
.the-luong .bt{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;
  border-radius:11px;color:var(--arc);background:var(--arc-mo);
  border:1px solid rgba(63,224,255,.22)}
.the-luong .info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.the-luong .ten{font-size:14px;font-weight:650;letter-spacing:-.01em}
.the-luong .mo-ta{font-size:12px;color:var(--chu-3);line-height:1.5}
.the-luong .chuoi{display:flex;flex-wrap:wrap;align-items:center;gap:5px 6px;margin-top:4px}
.the-luong .chuoi .buoc{font-family:var(--mono);font-size:10px;color:var(--chu-2);
  background:var(--nen-3);border:1px solid var(--vien);padding:2px 7px;border-radius:var(--r-tron)}
.the-luong .chuoi .mui-chuoi{color:var(--arc);font-size:10px;opacity:.7}

/* ---------- phiếu chạy việc ---------- */
.hop-canh-bao{display:flex;gap:10px;padding:12px 14px;margin-bottom:16px;
  border-radius:var(--r-vua);font-size:13px;line-height:1.55;
  background:rgba(240,145,62,.1);border:1px solid rgba(240,145,62,.32);
  color:#ffcf9c}
.hop-tham-so{display:flex;flex-direction:column;gap:14px}
.hop-tham-so label{display:block}
.hop-tham-so .nhan-o{display:block;font-size:12.5px;color:var(--chu-2);
  margin-bottom:6px;font-weight:550}
/* 16px chống iOS tự phóng to khi focus */
.hop-tham-so input{width:100%;min-height:var(--cham);padding:12px 14px;
  border-radius:var(--r-vua);background:var(--nen-2);border:1px solid var(--vien);
  color:var(--chu-1);font-family:inherit;font-size:16px;
  transition:border-color var(--vua),box-shadow var(--vua)}
.hop-tham-so input:focus{outline:none;border-color:var(--nhan);
  box-shadow:0 0 0 3px var(--nhan-mo)}

.ket-qua{margin-top:4px;padding:14px;border-radius:var(--r-vua);
  background:var(--nen-0);border:1px solid var(--vien);
  font-family:var(--mono);font-size:12.5px;line-height:1.65;color:var(--chu-2);
  white-space:pre-wrap;overflow-wrap:anywhere;max-height:46vh;max-height:46dvh;overflow-y:auto;
  -webkit-overflow-scrolling:touch}
.vp-tt{margin-top:12px;padding:11px 14px;border-radius:var(--r-vua);
  font-size:13px;font-weight:550}
.vp-tt.xong{background:rgba(61,220,151,.11);color:var(--luc);
  border:1px solid rgba(61,220,151,.3)}
.vp-tt.hong{background:rgba(255,107,107,.1);color:#ffb0b0;
  border:1px solid rgba(255,107,107,.32)}

/* ---------- Kết nối bên ngoài (connector MCP) ---------- */
.nut-phu.rong{flex:1 1 100%;width:100%}

/* Bước 1 — cửa vào bắt đầu dự án: nút "Đưa đề bài cho Não" nổi bật teal */
.canh-batdau{background:linear-gradient(180deg,var(--arc-mo),transparent)}
.nh-buoc1{display:block;text-transform:none;letter-spacing:0;font-style:normal;
  font-size:11px;font-weight:600;color:var(--arc);margin-top:3px;opacity:.9}
.nut-phu.noi-bat{color:var(--arc);font-weight:650;font-size:14.5px;min-height:52px;
  background:linear-gradient(145deg,var(--arc-mo),rgba(63,224,255,.04));
  border-color:var(--arc-dam)}
.nut-phu.noi-bat svg{width:19px;height:19px;stroke:var(--arc)}
.nut-phu.noi-bat.moi{animation:nc-tho 2.6s ease-in-out infinite}
@keyframes nc-tho{
  0%,100%{box-shadow:0 0 14px -6px var(--arc-mo),inset 0 0 0 1px rgba(63,224,255,.14)}
  50%{box-shadow:0 0 26px -3px var(--arc),inset 0 0 0 1px rgba(63,224,255,.34)}}
@media (prefers-reduced-motion:reduce){.nut-phu.noi-bat.moi{animation:none;
  box-shadow:0 0 18px -4px var(--arc-mo),inset 0 0 0 1px rgba(63,224,255,.2)}}
.kn-ds{display:flex;flex-direction:column;gap:12px}
.kn-o{padding:13px 14px;border-radius:var(--r-vua);
  background:var(--nen-2);border:1px solid var(--vien)}
.kn-o.noi{border-color:rgba(63,224,255,.34);background:var(--arc-mo)}
.kn-dau{display:flex;align-items:center;gap:9px;margin-bottom:5px}
.kn-bt{font-size:17px;line-height:1}
.kn-dau b{flex:1;font-size:14.5px;font-weight:600}
.kn-tt{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  padding:3px 8px;border-radius:99px;color:var(--chu-3);
  background:var(--nen-3);border:1px solid var(--vien)}
.kn-tt.noi{color:var(--arc);background:var(--arc-mo);
  border-color:rgba(63,224,255,.38)}
.kn-o .phu{font-size:12.5px;line-height:1.55}
/* nhãn nói rõ Não được gì / Tay được gì — luật "Não chỉ nghĩ" phủ cả ra ngoài */
.kn-nhan{display:inline-block;margin-top:7px;padding:3px 8px;font-size:11.5px;
  border-radius:var(--r-nho);color:var(--cam);
  background:rgba(240,145,62,.1);border:1px solid rgba(240,145,62,.3)}
.kn-hd{display:block;margin-top:8px;color:var(--chu-3)}
.kn-tk{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:9px}
.kn-tk-nhan{font-size:11.5px;color:var(--chu-3)}
.kn-tk code{padding:2px 7px;border-radius:var(--r-nho);font-size:11.5px;
  font-family:var(--mono);color:var(--arc);background:var(--arc-mo);
  border:1px solid rgba(63,224,255,.28)}
.kn-form{display:flex;flex-direction:column;gap:10px;margin-top:11px}
.kn-nhap .nhan-o{display:block;font-size:12.5px;color:var(--chu-2);
  margin-bottom:5px;font-weight:550}
/* 16px chống iOS tự phóng to khi focus — luật cũ, đừng hạ xuống */
.kn-nhap input{width:100%;min-height:var(--cham);padding:11px 13px;
  border-radius:var(--r-vua);background:var(--nen-0);border:1px solid var(--vien);
  color:var(--chu-1);font-family:inherit;font-size:16px;
  transition:border-color var(--vua),box-shadow var(--vua)}
.kn-nhap input:focus{outline:none;border-color:var(--arc);
  box-shadow:0 0 0 3px var(--arc-mo)}
.kn-hang{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:12px}
.kn-hang button{min-height:var(--cham);padding:0 16px}
.kn-hang .phu{flex:1 1 100%;font-size:11.5px;color:var(--chu-3)}
.kn-nut{margin-top:11px;width:100%}
.kn-chan-chu{margin-top:16px;font-size:12px;line-height:1.6;color:var(--chu-3)}

.phieu-chan{display:flex;gap:9px;padding:12px 16px;border-top:1px solid var(--vien)}
.phieu-chan .nut-phu{flex:0 0 34%}
.nut-chinh.nho{flex:1;margin-top:0;min-height:var(--cham);font-size:14.5px}

/* ---------- phiếu báo cáo ---------- */
.phieu{position:fixed;inset:0;z-index:40}
.phieu-nen{position:absolute;inset:0;background:rgba(0,0,0,.62);
  animation:mo var(--vua) both}
.phieu-hop{position:absolute;left:0;right:0;bottom:0;max-height:90vh;max-height:90dvh;
  display:flex;flex-direction:column;background:var(--nen-1);
  border-top:1px solid var(--vien-sang);border-radius:var(--r-lon) var(--r-lon) 0 0;
  box-shadow:var(--bong-3);animation:truot-len var(--mem) both;
  padding-bottom:var(--an-toan-duoi)}
.phieu-dau{display:flex;align-items:center;gap:10px;padding:16px 10px 12px 18px;
  border-bottom:1px solid var(--vien)}
.phieu-dau b{flex:1;font-size:15px;font-weight:650;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phieu-than{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:16px 18px 28px;font-size:14.5px;line-height:1.7;white-space:pre-wrap;
  overflow-wrap:anywhere;color:var(--chu-2)}

/* ---------- chuyển động ---------- */
@keyframes len{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes mo{from{opacity:0}to{opacity:1}}
@keyframes truot-len{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
@keyframes xoay{to{transform:rotate(360deg)}}
@keyframes nhay{50%{opacity:0}}
@keyframes tho{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes nay{0%,60%,100%{transform:translateY(0);opacity:.45}
               30%{transform:translateY(-5px);opacity:1}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;
    animation-iteration-count:1 !important;transition-duration:.01ms !important}
}

/* ============================================================
   DESKTOP — bản mở rộng của bố cục điện thoại
   ============================================================ */
@media (min-width:820px){
  .rem{display:none}

  /* Desktop gộp lại 1 dòng: tên dự án (::before) — thanh chuyển — nút làm mới.
     Ngăn cạnh đã lo việc chọn dự án nên nút chọn ở header ẩn đi. */
  header{flex-direction:row;align-items:center;gap:12px;padding:11px 14px 11px 20px}
  /* desktop: dock thành pill nổi góc phải trên đầu, chỉ chữ */
  main{position:relative}
  .chuyen-man{position:absolute;top:9px;right:16px;z-index:20;display:flex;gap:2px;
    border:1px solid rgba(120,150,190,.14);border-radius:var(--r-tron);
    background:rgba(9,13,21,.72);padding:3px;border-top:none;padding-bottom:3px}
  .chuyen-man .tab{flex-direction:row;min-height:var(--cham);padding:0 13px;
    font-size:13px;border-radius:var(--r-tron)}
  .chuyen-man .tab svg{display:none}
  .chuyen-man .tab.chon::before{display:none}
  .chuyen-man .tab.chon{background:linear-gradient(180deg,var(--nen-3),var(--nen-2));
    box-shadow:0 0 14px -3px rgba(63,224,255,.5)}
  /* Tim/Chân giữ sắc thái riêng cả trên desktop (không có gạch ::before) */
  .chuyen-man .tab.bp-tim.chon{box-shadow:0 0 14px -3px rgba(255,122,138,.55)}
  .chuyen-man .tab.bp-chan.chon{box-shadow:0 0 14px -3px rgba(61,220,151,.5)}
  .chuyen-man .tab .bp-cham{top:6px;right:7px}
  .hang-tren{order:2;flex:0 0 auto;margin-left:auto;margin-right:290px}
  .o-tim-hop{max-width:680px;margin:18px auto 0;width:calc(100% - 48px)}

  .kh-hoi-nut .hoi-ngan{display:none}
  .kh-hoi-nut .hoi-dai{display:inline}
  /* rộng rồi -> về lại một hàng như cũ */
  .kh-td .kh-viec-nd,
  .kh-td .kh-viec-ten{flex:1 1 auto}

  #canh{position:static;transform:none;max-height:none;width:264px;
    flex:0 0 264px;border-radius:0;border-top:none;
    border-right:1px solid var(--vien);box-shadow:none;padding-bottom:0}
  #canh::before{display:none}
  .canh-dau{padding:15px 10px 15px 16px}
  #nut-dong-canh{display:none}
  .chon-du-an{display:none}

  header{padding:11px 14px 11px 20px;gap:12px}
  header::before{content:attr(data-ten);flex:1;font-size:15px;font-weight:650;
    letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #nut-lam-moi{order:3}

  .bang{padding:20px 24px 28px;gap:16px;max-width:1080px;width:100%;margin:0 auto}
  .luoi-du-an{grid-template-columns:repeat(4,1fr)}
  .luoi-viec{grid-template-columns:repeat(4,1fr)}
  .khung-chat{padding:24px 24px 8px;gap:15px}
  .bong{max-width:min(760px,80%)}
  .soan{padding:10px 24px 18px}
  .hop-soan{max-width:920px;margin:0 auto}
  .goi-y{flex-direction:row;flex-wrap:wrap;justify-content:center}
  .goi-y button{border-radius:var(--r-tron)}

  /* ⚠️ KHÔNG dùng animation `len` ở đây. Nó animate `transform` và kết thúc ở
     `none`, xoá luôn translate(-50%,-50%) canh giữa -> phiếu văng xuống góc
     dưới phải, nút đóng ra ngoài màn hình, bấm không được. Phải có keyframes
     riêng giữ nguyên phép canh giữa. */
  .phieu-hop{left:50%;right:auto;bottom:auto;top:50%;width:min(820px,92vw);
    max-height:84vh;max-height:84dvh;transform:translate(-50%,-50%);border-radius:var(--r-lon);
    border:1px solid var(--vien-sang);animation:hien-giua var(--mem) both}
  @keyframes hien-giua{
    from{opacity:0;transform:translate(-50%,calc(-50% + 10px))}
    to{opacity:1;transform:translate(-50%,-50%)}
  }
  /* dashboard: desktop thành hộp canh giữa (mobile là full màn ở trên) */
  .phieu-hop.dash-hop{inset:auto;left:50%;top:50%;width:min(1200px,94vw);
    height:90dvh;max-height:90dvh;transform:translate(-50%,-50%);
    border-radius:var(--r-lon);overflow:hidden;padding-top:0;
    animation:hien-giua var(--mem) both}
}

/* ---------- MÀN CƠ THỂ — anh Bảy hologram, cổng vào theo bộ phận ----------
   (Đại Ka chốt 21/07: mở app là gặp cơ thể số; não→Trợ lý, mắt→Bảng,
   tay→Việc, tim→cảnh báo, chân→tăng trưởng). z-index 35: trên app,
   DƯỚI phiếu (40) để phiếu Tim/Chân đè lên, dưới màn khoá (60). */
.man-cothe{position:fixed;inset:0;z-index:35;
  background:radial-gradient(120% 90% at 50% 30%,#07121d 0%,#030910 55%,#010407 100%)}
.man-cothe.an{display:none}
#cothe-ve{position:absolute;inset:0;width:100%;height:100%;touch-action:none;
  cursor:grab}
#cothe-ve:active{cursor:grabbing}
.ct-tren{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;
  align-items:center;justify-content:center;gap:9px;
  padding:calc(12px + env(safe-area-inset-top)) 14px 12px;pointer-events:none;
  font-family:var(--mono);font-size:9px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--chu-3)}
.ct-tren b,.ct-tren em{color:var(--arc);font-style:normal}
.ct-nhan{position:absolute;z-index:2;display:flex;flex-direction:column;gap:4px;
  min-height:var(--cham);padding:9px 12px;border-radius:10px;text-align:left;
  background:rgba(6,16,26,.82);border:1px solid rgba(63,224,255,.2);
  box-shadow:0 0 22px -9px rgba(63,224,255,.5);font-family:var(--mono);
  transition:border-color var(--nhanh),transform var(--nhanh)}
.ct-nhan:active{transform:scale(.96);border-color:rgba(63,224,255,.55)}
.ct-nhan .h{display:flex;align-items:center;gap:7px;font-size:10px;
  letter-spacing:.16em;color:var(--arc)}
.ct-nhan .h i{width:6px;height:6px;border-radius:50%;background:var(--arc);
  box-shadow:0 0 8px var(--arc)}
.ct-nhan .h em{font-style:normal;color:var(--chu-3);letter-spacing:.12em}
.ct-nhan .s{font-size:9px;letter-spacing:.06em;color:var(--chu-2)}
.ct-nhan.vang .h{color:var(--nhan)}
.ct-nhan.vang .h i{background:var(--nhan);box-shadow:0 0 9px var(--nhan);
  animation:ct-dap 1.05s ease-in-out infinite}
@keyframes ct-dap{0%,100%{transform:scale(1)}18%{transform:scale(1.7)}
  32%{transform:scale(1)}46%{transform:scale(1.45)}60%{transform:scale(1)}}
/* Mũi = cam ấm, chấm "hít vào" phập phồng — đánh hơi cơ hội */
.ct-nhan.cam .h{color:var(--cam)}
.ct-nhan.cam .h i{background:var(--cam);box-shadow:0 0 9px var(--cam);
  animation:mui-hit 2.4s ease-in-out infinite}
@keyframes mui-hit{0%,100%{transform:scale(1);opacity:.75}
  45%{transform:scale(1.55);opacity:1}}
/* PC: hai cột hai bên */
#ct-nao {left:6%;top:16%}
#ct-mui {right:6%;top:16%}
#ct-mat {left:6%;top:42%}
#ct-chan{left:9%;top:70%}
#ct-tim {right:6%;top:30%}
#ct-tay {right:6%;top:56%}
.ct-day{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;
  justify-content:center;
  padding:8px 14px calc(8px + env(safe-area-inset-bottom))}
.ct-toggle{font-family:var(--mono);font-size:8px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--chu-3);background:none;border:none;
  padding:16px 12px;transition:color var(--nhanh)}
.ct-toggle:active{color:var(--chu-1)}
.ct-toggle b{color:var(--arc);font-weight:600}
@media (max-width:720px){
  .ct-nhan .s{display:none}
  .ct-nhan{padding:8px 11px}
  .ct-nhan .h{font-size:9px;letter-spacing:.13em}
  /* chip nằm SÁT bộ phận của nó (Đại Ka 21/07: để xa dây nối xuyên màn, rối):
     não/chân cột trái, mắt/tim/tay cột phải — tim + nắm tay vốn neo bên phải
     người. Mốc %: đầu ~17%, mắt ~19%, tim ~30%, tay ~46%, chân ~67% màn. */
  #ct-nao {left:10px;right:auto;top:12%;bottom:auto}
  #ct-mui {left:10px;right:auto;top:23%;bottom:auto}
  #ct-mat {left:auto;right:10px;top:19%;bottom:auto}
  #ct-tim {left:auto;right:10px;top:31%;bottom:auto}
  #ct-tay {left:auto;right:10px;top:44%;bottom:auto}
  #ct-chan{left:10px;right:auto;top:70%;bottom:auto}
}
@media (prefers-reduced-motion:reduce){
  .ct-nhan.vang .h i,.ct-nhan.cam .h i{animation:none}
}

/* lời chào digital khi mở app — gõ từng ký tự, con trỏ nháy, rồi mờ dần */
.ct-chao{position:absolute;left:0;right:0;z-index:2;pointer-events:none;
  top:calc(46px + env(safe-area-inset-top));text-align:center;
  font-family:var(--mono);font-size:15px;letter-spacing:.34em;
  color:var(--arc);text-transform:uppercase;
  text-shadow:0 0 12px rgba(63,224,255,.75),0 0 30px rgba(63,224,255,.35);
  transition:opacity 1.4s}
.ct-chao::after{content:"▌";animation:chao-nhay .85s step-end infinite;
  margin-left:2px}
@keyframes chao-nhay{50%{opacity:0}}
.ct-chao.an{display:none}
.ct-chao.mo-dan{opacity:0}
@media (max-width:720px){.ct-chao{font-size:11.5px;letter-spacing:.26em}}
@media (prefers-reduced-motion:reduce){.ct-chao::after{animation:none}}

/* ---------- ĐIỀU PHỐI từ Não + theo dõi Mắt/Tim + MODEL (Đại Ka 22/07) ----- */

/* thẻ xác nhận trong chat: Não chốt -> đã chuyển đến bộ phận nào */
.bong.dieu-phoi{max-width:100%;width:min(440px,100%);padding:10px 12px 4px}
.dp-dau{font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  color:var(--arc);margin:0 0 5px 2px}
.dp-hang{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:7px 2px;border-top:1px solid rgba(63,224,255,.14)}
.dp-noi{flex:1;min-width:150px;display:flex;flex-direction:column;gap:2px}
.dp-noi b{font-size:13.5px;font-weight:650;color:var(--chu-1)}
.dp-duoi{font-size:11.5px;color:var(--chu-2)}
.dp-nut{display:flex;gap:5px;margin-left:auto}
.dp-mo,.dp-doi{min-height:40px;padding:0 14px;border-radius:var(--r-tron);
  font-size:12px;font-weight:650;border:1px solid var(--line-2);
  transition:transform var(--nhanh)}
.dp-mo{color:var(--nen-0);background:var(--arc);border-color:transparent}
.dp-doi{color:var(--chu-2);background:var(--nen-2)}
.dp-mo:active,.dp-doi:active{transform:scale(.96)}
.dp-menu{flex-basis:100%;display:flex;gap:6px;flex-wrap:wrap;padding:4px 0 7px}
.dp-menu button{min-height:40px;padding:0 13px;border-radius:var(--r-tron);
  font-size:12.5px;color:var(--chu-1);background:var(--nen-2);
  border:1px solid var(--vien)}
.dp-menu button:active{background:var(--nen-3)}

/* chấm teal "mới nhận từ Não" trên dock (Tim giữ chấm đỏ cảnh báo riêng) */
.chuyen-man .tab{position:relative}
.chuyen-man .tab.co-moi::after{content:"";position:absolute;top:7px;
  right:calc(50% - 15px);width:7px;height:7px;border-radius:50%;
  background:var(--arc);box-shadow:0 0 8px var(--arc)}

/* nhãn trạng thái theo dõi (Mắt/Tim) + ngưỡng báo động */
.kh-tt.theo{color:var(--arc);background:var(--arc-mo);
  animation:td-nhip 2.6s ease-in-out infinite}
@keyframes td-nhip{0%,100%{opacity:1}50%{opacity:.55}}
span.kh-tt.xong{color:var(--luc);background:rgba(61,220,151,.14)}
.kh-td .kh-viec-ten{text-decoration:none}
.kh-td.xong .kh-viec-ten{color:var(--chu-3)}
/* Hàng lưu ý/theo dõi trên KHỔ HẸP: nội dung một tầng, nhóm nút tầng dưới.
   Để chung một hàng thì phần chữ bị bóp còn ~40px và tên cảnh báo dài bị xé
   dọc từng chữ một (thấy ngay khi thêm nút "Hỏi cho rõ" 27/07). Desktop rộng
   nên vẫn để một hàng như cũ. */
.kh-td .kh-viec-nd{flex:1 1 100%}
/* tên chiếm TRỌN một dòng, mấy chip (mảng · Não · trạng thái) xuống dòng sau:
   để tên chung hàng với chip thì nó bị ép còn ~40px và xé dọc từng chữ */
.kh-td .kh-viec-ten{flex:1 1 100%;line-height:1.45}
.kh-td .kh-viec-nut{margin-left:auto;padding-bottom:4px}
.kh-nguong{flex:0 0 auto;font-family:var(--mono);font-size:10.5px;
  color:var(--cam);opacity:.9}
@media (prefers-reduced-motion:reduce){.kh-tt.theo{animation:none}}

/* dòng tổng "hôm nay Não đã điều phối" ở Rà soát */
.rs-dp{padding:11px 14px;border:1px solid rgba(63,224,255,.25);
  border-radius:var(--r-vua);background:var(--arc-mo);
  font-size:13px;color:var(--chu-1);line-height:1.5}

/* phiếu chọn MODEL + mức suy nghĩ */
.md-ds{display:flex;flex-direction:column;gap:7px}
.md-hang{display:flex;align-items:center;gap:10px;width:100%;
  min-height:var(--cham);padding:9px 13px;text-align:left;
  border-radius:var(--r-vua);background:var(--nen-2);
  border:1px solid var(--vien);transition:border-color var(--nhanh)}
.md-hang .ten{display:block;font-size:14px;font-weight:650;color:var(--chu-1)}
.md-hang .chi-tiet{display:block;font-size:12px;color:var(--chu-3);margin-top:2px}
.md-hang.chon{border-color:rgba(63,224,255,.45);
  box-shadow:0 0 14px -6px rgba(63,224,255,.6)}
.md-hang.chon .ten{color:var(--arc)}
.md-hang:active{background:var(--nen-3)}
.md-nhan{font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  color:var(--chu-3);text-transform:uppercase;margin:15px 2px 8px}
.md-effort{display:flex;gap:7px;flex-wrap:wrap}

/* nút Khởi động lại CR7 (2 lần xác nhận) + màn phủ chờ máy chủ lên lại */
.canh-may{padding-bottom:0}
.canh-may+.canh-chan{border-top:none;padding-top:8px}
.nut-phu.canh{color:#ffb0b0;border-color:rgba(255,107,107,.4)}
.restart-phu{position:fixed;inset:0;z-index:80;display:grid;place-items:center;
  background:rgba(2,6,11,.9);backdrop-filter:blur(6px)}
.restart-hop{display:flex;flex-direction:column;align-items:center;gap:13px;
  text-align:center;padding:28px}
.restart-hop b{font-family:var(--mono);font-size:13px;letter-spacing:.14em;
  color:var(--arc)}
.restart-xoay{width:34px;height:34px;border-radius:50%;
  border:2px solid rgba(63,224,255,.25);border-top-color:var(--arc);
  animation:rs-xoay .9s linear infinite}
@keyframes rs-xoay{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.restart-xoay{animation-duration:2s}}

/* ================= HIỆU ỨNG ĐIỀU KHIỂN ROBOT (Đại Ka 23/07) =================
   Rê chuột vào BẤT KỲ nút/ô thông tin nào -> sáng lên + glow teal (kèm tick
   âm thanh từ app.js); bấm -> nhá sáng .vua-bam. Vào màn mới -> các ô bay ra
   lần lượt (.man.vao — app.js gắn cờ 700ms, dữ liệu vẽ lại giữa chừng KHÔNG
   nhảy múa lại). Chỉ transform/opacity/filter — không đụng layout. */

/* -- rê chuột: chỉ máy có chuột thật (hover:hover), khỏi dính hover ma iOS -- */
@media (hover:hover) and (pointer:fine){
  .nut-cham:hover{color:var(--arc);background:var(--nen-3);
    box-shadow:0 0 14px -5px var(--arc)}
  .chuyen-man .tab:hover{color:var(--chu-1)}
  .chuyen-man .tab:hover svg{stroke:var(--arc);
    filter:drop-shadow(0 0 6px rgba(63,224,255,.8))}
  .chuyen-man .tab.bp-tim:hover svg{stroke:#ff7a8a;
    filter:drop-shadow(0 0 6px rgba(255,122,138,.8))}
  .chuyen-man .tab.bp-chan:hover svg{stroke:var(--luc);
    filter:drop-shadow(0 0 6px rgba(61,220,151,.8))}
  .chuyen-man .tab.bp-mui:hover svg{stroke:var(--cam);
    filter:drop-shadow(0 0 6px rgba(240,145,62,.8))}
  .nao-pill:hover:not(.chon){color:var(--chu-1);border-color:var(--line-2);
    box-shadow:0 0 14px -6px var(--arc)}
  .nut-phu:hover,.kh-them-nut:hover,.kh-ds-sua:hover,.chip:hover,
  .tab-nho:hover,.mic-lang:hover,.ct-toggle:hover{
    color:var(--chu-1);border-color:var(--line-2);
    box-shadow:0 0 16px -8px var(--arc)}
  .nut-chinh:hover,.nut-gui:hover{filter:brightness(1.15);
    box-shadow:0 0 20px -6px var(--arc)}
  .nut-mic:hover{color:var(--arc);box-shadow:0 0 16px -6px var(--arc)}
  .nut-nao:hover{border-color:var(--line-2);
    box-shadow:0 0 18px -7px var(--arc);filter:brightness(1.12)}
  .hang:hover,.kh-viec:hover,.the-luong:hover{background:var(--nen-3)}
  .the-du-an:hover,.the-con:hover{border-color:var(--line-2);
    box-shadow:0 0 16px -8px var(--arc)}
  .khoi:hover{border-color:var(--line-2);
    box-shadow:0 0 26px -12px rgba(63,224,255,.55)}
  .khoi:hover::before{opacity:.8}
  .khoi:hover::after{animation:o-quet .9s ease}
  .bp-the:hover{border-color:var(--line-2);
    box-shadow:0 0 22px -10px rgba(63,224,255,.5)}
  .tong-hop:hover{box-shadow:0 0 26px -12px rgba(63,224,255,.5)}
  .tong-da:hover{border-color:var(--line-2);
    box-shadow:0 0 14px -6px var(--arc)}
  .mui-the:hover{background:rgba(63,224,255,.035)}
  .mui-nguon:hover{opacity:1;text-decoration:underline}
  .hud-muc:hover{border-color:rgba(63,224,255,.5);
    background:rgba(63,224,255,.09);box-shadow:0 0 14px -6px var(--arc)}
  .hud-hang.bam:hover,.hud-hang.bam:hover b{color:var(--arc)}
  .ct-nhan:hover{border-color:rgba(63,224,255,.55);
    box-shadow:0 0 26px -8px rgba(63,224,255,.75)}
  .ct-nhan.cam:hover{border-color:rgba(240,145,62,.55);
    box-shadow:0 0 26px -8px rgba(240,145,62,.7)}
  .ct-nhan.vang:hover{border-color:rgba(245,181,68,.55);
    box-shadow:0 0 26px -8px rgba(245,181,68,.7)}
}
@keyframes o-quet{from{transform:translateX(-120%)}to{transform:translateX(340%)}}

/* -- bấm: nhá sáng nhanh (app.js gắn .vua-bam rồi gỡ khi animation xong) -- */
.vua-bam{animation:bam-nhay .26s cubic-bezier(.4,0,.2,1)}
@keyframes bam-nhay{0%{filter:brightness(1.75) saturate(1.3)}
  100%{filter:brightness(1)}}

/* -- vào màn: ô thông tin lần lượt bay ra (chỉ khi .man vừa được mở) -- */
.man.vao .bang>*{animation:o-vao .46s cubic-bezier(.16,1,.3,1) both}
.man.vao .bang>*:nth-child(2){animation-delay:55ms}
.man.vao .bang>*:nth-child(3){animation-delay:110ms}
.man.vao .bang>*:nth-child(4){animation-delay:165ms}
.man.vao .bang>*:nth-child(5){animation-delay:215ms}
.man.vao .bang>*:nth-child(6){animation-delay:260ms}
.man.vao .bang>*:nth-child(7){animation-delay:300ms}
.man.vao .bang>*:nth-child(n+8){animation-delay:335ms}
/* KHÔNG scale trong o-vao: scale làm nút 40px đo ra 39.4px giữa lúc bay vào
   -> phép "vùng chạm 44px" báo hỏng oan (vấp 23/07). Chỉ trượt + mờ. */
@keyframes o-vao{from{opacity:0;transform:translateY(16px)}
  to{opacity:1;transform:none}}

@media (prefers-reduced-motion:reduce){
  .man.vao .bang>*,.hud-trai,.hud-phai,.vua-bam{animation:none}
  .khoi:hover::after{animation:none}
  .bp-the.mui .bp-icon{animation:none}
}

/* ---- khối GỌN: dòng thu gọn cho mục đang êm (luật Mắt-thấy-hết 23/07) ----
   Mắt phải thấy MỌI routine/dịch vụ, nhưng cái đang đúng nhịp thì nằm gọn
   một dòng — bấm mở ra xem đủ. Cái bất thường luôn nổi lên trên. */
.gom-nut{display:flex;align-items:center;gap:9px;width:100%;min-height:var(--cham);
  padding:0 15px;border-top:1px solid var(--vien);text-align:left;
  font-size:12.5px;color:var(--chu-3);transition:color var(--nhanh),
  background var(--nhanh)}
.gom-nut:active{background:var(--nen-3)}
.gom-mui{display:inline-block;font-size:11px;color:var(--arc);
  transition:transform var(--vua)}
.gom-nut.mo .gom-mui{transform:rotate(90deg)}
.gom-nut.mo{color:var(--chu-2)}
.gom-nhan{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.gom-than{animation:len 240ms cubic-bezier(.16,1,.3,1) both}
@media (hover:hover) and (pointer:fine){
  .gom-nut:hover{color:var(--chu-1);background:var(--nen-3)}
}
@media (prefers-reduced-motion:reduce){
  .gom-than{animation:none}
  .gom-mui{transition:none}
}

/* ---- THẺ CHỐT VIỆC: Não bàn xong -> Đại Ka bấm chuyển sang Tay (23/07) ----
   Khác thẻ điều phối (đã chuyển rồi): thẻ này là CHỐT CHẶN — việc chưa đi đâu
   cả, chờ Đại Ka gật. Viền xanh mọc cho khác sắc teal của điều phối. */
.bong.chot-viec{border:1px solid rgba(61,220,151,.42);
  background:linear-gradient(180deg,rgba(61,220,151,.09),rgba(13,17,26,.9));
  padding:0;overflow:hidden}
.cv-dau{display:flex;align-items:center;gap:8px;padding:10px 14px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  color:var(--luc);border-bottom:1px solid rgba(61,220,151,.24);
  background:rgba(61,220,151,.07)}
.cv-hang{padding:12px 14px 13px;border-top:1px solid var(--vien)}
.cv-hang:first-of-type{border-top:none}
.cv-hang.cv-bo-roi{opacity:.45}
.cv-ten{display:block;font-size:14.5px;font-weight:650;color:var(--chu-1);
  line-height:1.5}
.cv-pa{margin-top:7px;font-size:13px;color:var(--chu-2);line-height:1.65;
  white-space:pre-wrap}
.cv-buoc{margin:9px 0 0;padding-left:20px;font-size:12.5px;color:var(--chu-2);
  line-height:1.7}
.cv-buoc li{margin-bottom:3px}
.cv-vung{margin-top:8px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.05em;color:var(--chu-3)}
.cv-nut{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.cv-go{min-height:var(--cham);padding:0 16px;border-radius:var(--r-nho);
  font-size:13px;font-weight:650;color:var(--nen-0);background:var(--luc);
  box-shadow:0 0 18px -6px var(--luc);transition:filter var(--nhanh),
  transform var(--nhanh)}
.cv-go:active{transform:scale(.97)}
.cv-go:disabled{opacity:.5}
.cv-go.cv-lam{color:var(--luc);background:transparent;
  border:1px solid rgba(61,220,151,.5);box-shadow:none}
.cv-bo{min-height:var(--cham);padding:0 14px;border-radius:var(--r-nho);
  font-size:12.5px;color:var(--chu-3);border:1px solid var(--vien)}
.cv-xong{font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  color:var(--luc)}
@media (hover:hover) and (pointer:fine){
  .cv-go:hover{filter:brightness(1.12)}
  .cv-bo:hover{color:var(--chu-1);border-color:var(--vien-sang)}
}
/* ⭐ DUYỆT & CHẠY LUÔN + thẻ trạng thái sống (Đại Ka 24/07) */
.cv-go.cv-chay{animation:cvPulse 2.4s ease-in-out infinite}
@keyframes cvPulse{0%,100%{box-shadow:0 0 18px -6px var(--luc)}
  50%{box-shadow:0 0 27px -3px var(--luc)}}
.cv-xep{min-height:var(--cham);padding:0 14px;border-radius:var(--r-nho);
  font-size:12.5px;font-weight:600;color:var(--arc);background:transparent;
  border:1px solid rgba(63,224,255,.42)}
.cv-dang{font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  color:var(--chu-3)}
.cv-chip{font-family:var(--mono);font-size:11px;letter-spacing:.05em;
  color:var(--arc);display:inline-flex;align-items:center;min-height:var(--cham);
  padding:0 11px;border-radius:var(--r-nho);
  border:1px solid rgba(63,224,255,.3);background:rgba(63,224,255,.07)}
.cv-chip.cn-chay{animation:cnBlink 1.3s ease-in-out infinite}
@keyframes cnBlink{0%,100%{opacity:1}50%{opacity:.5}}
.cv-chip.cn-xong{color:var(--luc);border-color:rgba(61,220,151,.4);
  background:rgba(61,220,151,.08)}
.cv-chip.cn-loi{color:var(--cam);border-color:rgba(255,176,74,.4);
  background:rgba(255,176,74,.08)}
.cv-bo.cv-dung{color:var(--cam);border-color:rgba(255,176,74,.42)}
@media (hover:hover) and (pointer:fine){
  .cv-xep:hover{border-color:var(--arc);filter:brightness(1.1)}
}
/* công tắc NÃO · NGHĨ / LÀM ở sysline — LÀM thì nhuốm cam cảnh báo */
#nut-nao-che.dang-lam{color:var(--cam)}

/* ---- ⭐ DỰ ÁN MỚI TỪ CHAT (Đại Ka 25/07) ----
   Não đề xuất khởi động dự án -> thẻ teal + nút ngay trong chat; đang nghiên
   cứu / kết quả cũng là thẻ teal (đúng tông Não/hologram). */
.bong.du-an-moi,.bong.nc-dangchay,.bong.nc-ketqua,.bong.lo-trinh{
  max-width:100%;width:min(460px,100%);padding:0;overflow:hidden;
  border:1px solid var(--arc-dam);
  background:linear-gradient(180deg,var(--arc-mo),rgba(13,17,26,.92))}
.bong.du-an-moi.dm-roi,.bong.lo-trinh.dm-roi{opacity:.5}
.dm-dau{display:flex;align-items:center;gap:8px;padding:10px 14px 8px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  color:var(--arc)}
.dm-ten{display:block;padding:0 14px;font-size:15px;font-weight:700;
  color:var(--chu-1)}
.dm-de{padding:6px 14px 0;font-size:13px;line-height:1.55;color:var(--chu-2);
  white-space:pre-wrap;
  display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;
  overflow:hidden}
.nc-tom{margin:8px 14px 0;padding:10px 12px;max-height:210px;overflow:auto;
  font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--chu-2);
  white-space:pre-wrap;background:var(--nen-2);border-radius:var(--r-nho);
  border:1px solid var(--vien)}
.dm-nut{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px}
.dm-go{min-height:var(--cham);padding:0 16px;border-radius:var(--r-nho);
  font-size:13px;font-weight:650;color:var(--nen-0);background:var(--arc);
  border:none;transition:filter var(--nhanh),transform var(--nhanh);
  animation:dmPulse 2.4s ease-in-out infinite}
@keyframes dmPulse{0%,100%{box-shadow:0 0 18px -7px var(--arc)}
  50%{box-shadow:0 0 26px -2px var(--arc)}}
.bong.nc-ketqua .dm-go{animation:none;box-shadow:0 0 18px -7px var(--arc)}
@media (prefers-reduced-motion:reduce){.dm-go{animation:none}}
.dm-go:active{transform:scale(.97)}
.dm-go:disabled{opacity:.5}
.dm-bo{min-height:var(--cham);padding:0 14px;border-radius:var(--r-nho);
  font-size:12.5px;color:var(--chu-3);border:1px solid var(--vien);
  background:transparent}
.dm-dang,.dm-xong{font-size:12.5px;color:var(--arc);font-family:var(--mono)}
.dm-xong{color:var(--chu-3)}
@media (hover:hover) and (pointer:fine){
  .dm-go:hover{filter:brightness(1.12)}
  .dm-bo:hover{color:var(--chu-1);border-color:var(--vien-sang)}
}

/* ---- 🧭 LỘ TRÌNH DỰ ÁN 4 CHẶNG (Đại Ka 25/07): thẻ duyệt chặng trong chat.
   4 chấm tiến độ + nội dung chặng + dòng skill (cửa kiểm) + nút duyệt ---- */
.lt-cham-day{display:flex;align-items:flex-start;gap:4px;padding:8px 14px 2px}
.lt-cham{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;
  min-width:0}
.lt-cham i{display:block;width:100%;height:4px;border-radius:2px;
  background:var(--vien)}
.lt-cham.chot i{background:var(--luc)}
.lt-cham.cho i{background:var(--cam);animation:dmPulse 2.4s ease-in-out infinite}
.lt-cham small{font-family:var(--mono);font-size:9px;letter-spacing:.02em;
  color:var(--chu-3);white-space:nowrap;overflow:hidden;max-width:100%;
  text-overflow:ellipsis}
.lt-cham.chot small{color:var(--luc)}
.lt-cham.cho small{color:var(--cam)}
.lt-noi-dung{margin:8px 14px 0;padding:10px 12px;max-height:240px;overflow:auto;
  font-size:13px;line-height:1.6;color:var(--chu-2);white-space:pre-wrap;
  background:var(--nen-2);border-radius:var(--r-nho);border:1px solid var(--vien)}
.lt-buoc{margin:8px 14px 0;padding:10px 12px 10px 30px;
  background:var(--nen-2);border-radius:var(--r-nho);border:1px solid var(--vien)}
.lt-buoc li{font-size:13px;line-height:1.55;color:var(--chu-1);margin:4px 0}
.lt-kq{color:var(--chu-3);font-size:12px}
.lt-viec{margin:8px 14px 0;max-height:260px;overflow:auto;
  background:var(--nen-2);border-radius:var(--r-nho);border:1px solid var(--vien)}
.lt-viec-hang{padding:8px 12px;border-bottom:1px solid var(--vien)}
.lt-viec-hang:last-child{border-bottom:none}
.lt-viec-hang b{display:block;font-size:13px;color:var(--chu-1)}
.lt-viec-phu{display:block;margin-top:2px;font-family:var(--mono);
  font-size:11px;color:var(--chu-3)}
.lt-skill{margin:8px 14px 0;padding:7px 10px;font-size:12px;line-height:1.5;
  color:var(--arc);background:rgba(63,224,255,.07);border-radius:var(--r-nho)}
.lt-skill.thieu{color:var(--cam);background:rgba(240,145,62,.1)}
.bong.lo-trinh.lt-chot-roi .lt-cham.cho i{background:var(--luc);animation:none}

/* ---- 📋 RÀ SOÁT KẾ HOẠCH hằng ngày + chuẩn sống tác vụ (25/07) ---- */
.rs-lan-tt.chet{background:rgba(255,107,107,.15);color:var(--do)}
.rskh-bao-cao{margin-top:8px;padding:10px 12px;max-height:340px;overflow:auto;
  font-size:12.5px;line-height:1.65;color:var(--chu-2);white-space:pre-wrap;
  background:var(--nen-2);border-radius:var(--r-nho);border:1px solid var(--vien)}
.rskh-khoi,.rskz-khoi{margin-bottom:14px}

/* ---- B4 KAIZEN TUẦN (26/07): bảng 4 số + dòng đề xuất chờ duyệt ---- */
.rskz-diem{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:8px;
  padding:8px 10px;font-family:var(--mono);font-size:11px;color:var(--chu-2);
  background:var(--nen-2);border-radius:var(--r-nho);border:1px solid var(--vien)}
.rskz-de-xuat{display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  margin-top:8px;padding:8px 10px;font-size:12.5px;color:var(--arc);
  background:rgba(63,224,255,.07);border-radius:var(--r-nho)}

/* ---- 🎯 B1 "HÔM NAY LÀM GÌ" (25/07): thẻ 3 việc ưu tiên lúc mở app ---- */
.bong.hom-nay{max-width:100%;width:min(460px,100%);padding:0 0 2px;
  overflow:hidden;border:1px solid var(--arc-dam);
  background:linear-gradient(180deg,var(--arc-mo),rgba(13,17,26,.92))}
.hn-viec{display:flex;align-items:center;gap:8px;width:calc(100% - 20px);
  margin:6px 10px 0;padding:9px 12px;min-height:var(--cham);text-align:left;
  color:var(--chu-1);background:var(--nen-2);border:1px solid var(--vien);
  border-radius:var(--r-nho);transition:border-color var(--nhanh)}
.hn-viec .noi{flex:1;min-width:0}
.hn-viec .ten{display:block;font-size:13.5px;font-weight:650;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hn-viec .duoi{display:block;margin-top:2px;font-size:11.5px;
  color:var(--chu-3)}
@media (hover:hover) and (pointer:fine){
  .hn-viec:hover{border-color:var(--arc-dam)}
}

/* ---- ⚡ C2 khối "Token hôm nay" ở màn Mắt ---- */
.tok-dong{padding:8px 12px 4px;font-size:13px;color:var(--chu-1)}
.tok-dong b{color:var(--arc)}
.tok-7ngay{padding:6px 12px 8px;font-family:var(--mono);font-size:11px;
  color:var(--chu-3)}

/* chip HẠN của việc (timeline từ kế hoạch chi tiết) */
.kh-han{flex:0 0 auto;font-family:var(--mono);font-size:10px;font-weight:600;
  padding:2px 7px;border-radius:99px;color:var(--chu-3);
  background:var(--nen-3);border:1px solid var(--vien)}
.kh-han.qua{color:var(--do);border-color:rgba(255,107,107,.4);
  background:rgba(255,107,107,.1)}

/* ---- NGHIÊN CỨU SÂU (GĐ A siêu agent 23/07): phiếu #nc-phieu ----
   Đề bài -> Não chạy NỀN -> hồ sơ ho-so/. Chỉ chạy khi Đại Ka bấm (đo token
   trước, tự động tính sau). Ô nhập 16px + vùng chạm --cham: luật mobile. */
.nc-o{width:100%;min-height:var(--cham);padding:10px 12px;margin-bottom:8px;
  font-size:16px;color:var(--chu-1);background:var(--nen-3);
  border:1px solid var(--vien);border-radius:var(--r-nho)}
.nc-o:focus{border-color:var(--vien-sang);outline:none}
textarea.nc-o{resize:vertical;line-height:1.55;min-height:96px}
#nc-form>.phu{margin:8px 2px 14px;line-height:1.6}
#nc-chay{width:100%}
.nc-the{display:block;width:100%;text-align:left;min-height:var(--cham);
  padding:10px 12px;margin-bottom:8px;color:var(--chu-1);
  background:var(--nen-3);border:1px solid var(--vien);
  border-radius:var(--r-nho);transition:border-color var(--nhanh)}
.nc-the .phu{display:block;margin-top:4px}
.nc-dong1{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nc-dong1 b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.nc-chip{flex:none;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.06em;padding:3px 9px;border-radius:99px;
  border:1px solid var(--vien);color:var(--chu-3);white-space:nowrap}
.nc-chip.nc-chay{color:var(--arc);border-color:rgba(63,224,255,.5);
  animation:nc-nhay 1.2s ease infinite}
.nc-chip.nc-xong{color:var(--luc);border-color:rgba(61,220,151,.5)}
.nc-chip.nc-loi{color:#ff7a7a;border-color:rgba(255,122,122,.5)}
.nc-chip.nc-cho{border-style:dashed}
@keyframes nc-nhay{50%{opacity:.45}}
.nc-tieude{margin:12px 0 4px;font-size:15px;color:var(--arc)}
.nc-md{white-space:pre-wrap;word-break:break-word;font-size:13px;
  line-height:1.6;color:var(--chu-2);background:var(--nen-3);
  border:1px solid var(--vien);border-radius:var(--r-nho);
  padding:12px;max-height:52vh;overflow:auto;margin-top:10px}
#nc-xem{padding-bottom:10px}
#nc-xem .kh-them-nut{margin-top:10px}
@media (hover:hover) and (pointer:fine){
  .nc-the:hover{border-color:var(--vien-sang);
    box-shadow:0 0 16px -8px var(--arc)}
}
@media (prefers-reduced-motion:reduce){.nc-chip.nc-chay{animation:none}}

/* ---- GĐ B (24/07): duyệt kế hoạch hồ sơ + KPI/mốc ở màn Mắt ---- */
.nc-duyet{margin-top:14px}
.nc-tick{display:flex;align-items:flex-start;gap:9px;min-height:var(--cham);
  padding:9px 4px;border-bottom:1px solid var(--vien);cursor:pointer;
  font-size:13px;line-height:1.5;color:var(--chu-1)}
.nc-tick input{width:18px;height:18px;margin-top:2px;flex:none;
  accent-color:var(--arc)}
.nc-tick .phu{font-style:normal}
.nc-duyet .nut-chinh{width:100%;margin-top:12px}
.kh-kpi,.kh-moc{margin-top:5px;font-size:12px;color:var(--chu-2);
  line-height:1.5}
.kh-moc.qua-han{color:#ff7a7a}

/* ---- 👂👃 NHIỆM VỤ TAI & MŨI (Đại Ka 24/07): công dụng do người dùng đặt ---- */
.nv-ds{padding:4px 15px 14px}
.nv-the{padding:12px 0;border-top:1px solid var(--vien)}
.nv-the:first-child{border-top:none}
.nv-the.tat{opacity:.5}
.nv-dong1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.nv-loai{flex:none;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  padding:3px 8px;border-radius:99px;border:1px solid var(--vien);
  color:var(--chu-3)}
.nv-loai.tai{color:var(--arc);border-color:rgba(63,224,255,.45)}
.nv-loai.mui{color:var(--cam);border-color:rgba(240,145,62,.45)}
.nv-ten{font-size:14px;font-weight:650;color:var(--chu-1)}
.nv-toanhe{flex:none;margin-left:auto;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.08em;padding:2px 7px;border-radius:99px;color:var(--chu-3);
  border:1px dashed var(--vien)}
.nv-debai{margin-top:6px;font-size:12.5px;color:var(--chu-2);line-height:1.6}
.nv-the .phu{display:block;margin-top:4px}
.nv-the .mui-hanhdong{margin-top:10px}
.nv-ban{width:100%;margin-top:14px}
/* đổi dự án của nhiệm vụ (Đại Ka 24/07) */
.nv-duan{display:flex;align-items:center;gap:8px;margin-top:9px;position:relative;
  flex-wrap:wrap}
.nv-duan-nhan{font-size:11px;color:var(--chu-3)}
.nv-duan-nut{min-height:32px;padding:3px 11px;border-radius:99px;
  font-size:11.5px;color:var(--chu-2);background:var(--nen-2);
  border:1px solid var(--vien)}
.nv-menu{position:absolute;top:100%;left:0;z-index:30;margin-top:5px;
  display:flex;flex-direction:column;min-width:190px;max-height:250px;
  overflow:auto;background:var(--nen-3);border:1px solid var(--vien-sang);
  border-radius:var(--r-nho);box-shadow:0 12px 32px -8px #000b;padding:4px}
.nv-menu button{text-align:left;min-height:40px;padding:8px 12px;font-size:13px;
  color:var(--chu-1);border-radius:6px}
@media (hover:hover) and (pointer:fine){
  .nv-duan-nut:hover{border-color:var(--vien-sang)}
  .nv-menu button:hover{background:var(--nen-2)}
}
/* Wizard cài đặt (GĐ D): màn đầu tiên người mua CR7 nhìn thấy */
.cd-nhan{display:block;margin:12px 0 5px;font-size:12.5px;color:var(--chu-2)}
.cd-hang{display:flex;gap:8px}
.cd-hang .nc-o{flex:1;min-width:0}
#cd-phieu .phieu-dau b{font-size:14px}
#cd-luu{margin-top:16px}

/* Não CHỦ ĐỘNG đề xuất -> chờ người dùng duyệt (Đại Ka 24/07). Viền xanh lá
   như thẻ chốt việc: cùng ý nghĩa "đang chờ Đại Ka gật". */
.nv-dx-dau{margin:2px 0 8px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.1em;color:var(--luc)}
.nv-the.nv-dx{border:1px solid rgba(61,220,151,.4);border-radius:var(--r-nho);
  background:rgba(61,220,151,.06);padding:12px;margin-bottom:8px}
.nv-the.nv-dx + .nv-the.nv-dx{border-top:1px solid rgba(61,220,151,.4)}

/* ---- Lịch sử đọc được + khôi phục hội thoại (24/07) ----
   .ls-luot thay cho .bong trong phiếu (bong bị bóp -> chữ rơi từng ký tự);
   .bong.cu = lượt nạp lại từ lịch sử, mờ nhẹ cho khác tin mới. */
.ls-luot{white-space:pre-wrap;word-break:break-word;width:100%;
  font-size:13.5px;line-height:1.6;color:var(--chu-2);
  background:var(--nen-3);border:1px solid var(--vien);
  border-radius:var(--r-nho);padding:10px 13px;margin-bottom:10px}
.ls-luot.toi{border-color:rgba(63,224,255,.35);color:var(--chu-1)}
.ls-tiep{display:block;width:100%;min-height:var(--cham);margin-bottom:12px;
  border:1px solid rgba(63,224,255,.5);border-radius:var(--r-nho);
  color:var(--arc);font-weight:650;background:rgba(63,224,255,.06)}
.ls-vach{width:100%;text-align:center;font-family:var(--mono);
  font-size:10.5px;letter-spacing:.14em;color:var(--chu-3);margin:6px 0 12px}
.bong.cu{opacity:.82}
