/* ============================================================
   LỚP CHUYỂN HOÁ TỪ GỐC — Hệ thống thiết kế VFC (đất–cây)
   ============================================================ */
:root{
  /* ==== Chuẩn màu VFC "The Mindful Anchor" — đồng bộ app datvacay.com ==== */
  --bg:#F3EFE6; --bg2:#ECE7DA; --paper:#FAF9F5; --ink:#4C3B2E;
  --muted:#8a7a5e; --line:#E3D8C5;
  --green:#61724E; --green-d:#3A4530; --green-soft:#E8ECDD;
  --earth:#A07847; --earth-soft:#F4EAD4;
  --blue:#4a6f8a; --blue-soft:#e9eff3;
  --purple:#8a6f4a; --purple-soft:#F4EAD4;   /* dùng tông gỗ thay tím cho đồng bộ */
  --gold:#D2A24C; --gold-soft:#E8D2A8; --red:#9a3b2e; --ok:#4f8a5c;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Be Vietnam Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  --shadow:0 8px 24px -14px rgba(16,42,34,.30),0 2px 8px rgba(16,42,34,.08);
  --radius:20px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0; color:var(--ink); font-family:var(--sans); font-size:17px; line-height:1.7;
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(154,123,70,.10), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(47,93,80,.10), transparent 55%),
    var(--bg);
}
a{color:var(--green);text-decoration:none}
.wrap{max-width:920px;margin:0 auto;padding:0 clamp(16px,4vw,28px)}
.muted{color:var(--muted)}
.center{text-align:center}
.hidden{display:none!important}

/* topbar */
.top{position:sticky;top:0;z-index:30;background:rgba(243,239,230,.9);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .row{max-width:920px;margin:0 auto;padding:12px clamp(16px,4vw,28px);
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--green);
  letter-spacing:.06em;font-size:.86rem}
.brand .dot{width:30px;height:30px;border-radius:0;
  background:url(/assets/vfc-logo.png) center/contain no-repeat}
.top a.lk{color:var(--earth);font-weight:600;font-size:.85rem}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:none;border-radius:999px;padding:13px 24px;font-size:1rem;font-weight:700;
  font-family:var(--sans);cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s}
.btn-primary{background:var(--green);color:#fff;box-shadow:var(--shadow)}
.btn-primary:hover{transform:translateY(-2px);background:var(--green-d)}
.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{border-color:#cdbb96}
.btn-zalo{background:#0068ff;color:#fff}
.btn-block{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}

/* card */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:clamp(18px,4vw,30px);box-shadow:var(--shadow)}

/* form */
label{display:block;font-weight:600;font-size:.85rem;color:var(--muted);margin:14px 0 6px}
input,textarea,select{width:100%;font-family:var(--sans);font-size:1rem;color:var(--ink);
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 15px;outline:none}
input:focus,textarea:focus{border-color:var(--green)}
.err{color:var(--red);font-size:.9rem;margin-top:10px;min-height:1.2em}

/* ===== LOGIN ===== */
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth .card{max-width:420px;width:100%}
.auth .logo{width:84px;height:84px;border-radius:0;margin:0 auto 14px;
  background:url(/assets/vfc-logo.png) center/contain no-repeat}
.auth h1{font-family:var(--serif);font-size:1.6rem;color:var(--green);text-align:center;margin:0 0 4px}
.auth p.sub{text-align:center;color:var(--muted);font-style:italic;margin:0 0 18px;font-size:.92rem}

/* ===== ROADMAP (lộ trình) ===== */
.hero{padding:clamp(26px,6vw,52px) 0 10px;text-align:center}
.hero h1{font-family:var(--serif);font-size:clamp(1.6rem,5vw,2.4rem);color:var(--green);margin:0 0 6px}
.hero p{color:var(--muted);font-style:italic;margin:0 auto;max-width:560px}
.greet{font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--earth);font-weight:700;margin-bottom:8px}

.phase-tag{display:inline-block;margin:24px 0 10px;font-size:.74rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--earth);font-weight:700;border-bottom:2px solid var(--earth-soft);padding-bottom:4px}

.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin:8px 0 24px}
.day{position:relative;display:block;background:var(--paper);border:1px solid var(--line);
  border-radius:16px;padding:18px;box-shadow:0 4px 16px rgba(60,45,20,.06);color:var(--ink);
  transition:transform .15s,box-shadow .15s,border-color .15s;overflow:hidden}
.day:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--green),var(--earth))}
.day:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(60,45,20,.14);border-color:#cdbb96}
.day .n{font-family:var(--serif);font-size:1.7rem;font-weight:700;color:var(--green);line-height:1}
.day .lbl{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--earth);font-weight:700;margin:2px 0 8px}
.day .t{font-size:.92rem;line-height:1.4;min-height:2.6em}
.day .bar{display:flex;gap:5px;margin-top:12px}
.day .pip{flex:1;height:5px;border-radius:3px;background:var(--bg2)}
.day .pip.on{background:var(--ok)}
.day.locked{opacity:.62;filter:grayscale(.3);pointer-events:none}
.day.locked:before{background:var(--muted)}
.day .lock{position:absolute;top:14px;right:14px;font-size:1rem}
.day .lockmsg{font-size:.72rem;color:var(--muted);margin-top:10px}
.day.done:before{background:linear-gradient(var(--ok),var(--green))}

/* ===== LESSON VIEW ===== */
.lesson-head{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:clamp(22px,5vw,40px);box-shadow:var(--shadow);position:relative;overflow:hidden;margin-top:18px}
.lesson-head:before{content:"";position:absolute;inset:0 0 auto 0;height:5px;background:linear-gradient(90deg,var(--green),var(--earth))}
.lesson-head .eyebrow{font-family:var(--serif);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--green);font-weight:700;opacity:.85}
.lesson-head .daynum{font-family:var(--serif);color:var(--green);font-weight:700;font-size:clamp(2.4rem,8vw,3.4rem);line-height:.9;margin:8px 0}
.lesson-head h1{font-family:var(--serif);font-size:clamp(1.4rem,4.5vw,2rem);margin:6px 0;line-height:1.2}
.lesson-head .method{color:var(--muted);font-style:italic;border-left:3px solid var(--earth);padding-left:12px;margin-top:10px}

.step{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:clamp(18px,4vw,28px);margin-top:16px;box-shadow:0 6px 22px rgba(60,45,20,.06)}
.step h2{font-family:var(--serif);color:var(--green);font-size:1.25rem;margin:0 0 4px;display:flex;align-items:center;gap:10px}
.step .ic{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--green-soft);font-size:1.1rem;flex:none}

/* audio player */
.player{display:flex;align-items:center;gap:14px;background:var(--green-soft);border-radius:14px;padding:16px;margin-top:8px}
audio{width:100%}
.noaudio{background:var(--earth-soft);border:1px dashed #e3d2ac;border-radius:12px;padding:14px;color:#6f5a32;font-size:.92rem}

/* check row */
.check{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer}
.check:first-of-type{border-top:none}
.check .box{width:26px;height:26px;border-radius:8px;border:2px solid var(--line);flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;transition:.15s}
.check.on .box{background:var(--ok);border-color:var(--ok)}
.check .lab{font-weight:600}

/* thực hành tương tác */
.psteps{margin-top:8px}
.pstep{border-left:3px solid var(--green-soft);padding:4px 0 10px 16px;margin:0 0 14px}
.pstep-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.pstep-n{width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;flex:none;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;font-family:var(--serif)}
.pstep-name{font-family:var(--serif);font-weight:700;color:var(--green-d);font-size:1.02rem}
.pstep-prompt{margin:2px 0 8px;color:var(--ink)}
.pans{width:100%;min-height:48px;resize:none;overflow:hidden;border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;font-size:1rem;line-height:1.6;background:#fffdf8;transition:border-color .15s}
.pans:focus{border-color:var(--green);background:#fff}
.psave{display:inline-block;font-size:.76rem;margin-top:4px;min-height:1.1em;color:var(--muted)}
.psave.saved{color:var(--ok)} .psave.saving{color:var(--earth)} .psave.err{color:var(--red)}
.ref-link{display:inline-flex;align-items:center;color:var(--earth);font-weight:600;font-size:.9rem}
.ref-link:hover{color:var(--green)}
.export-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:16px;padding-top:14px;border-top:1px dashed var(--line)}
.export-row .btn{padding:10px 18px;font-size:.92rem}

/* takeaway (mang vào đời sống) */
.takeaway{background:linear-gradient(135deg,#fff8ec,#f3ebdb);border:1px solid #e9dcc1;border-radius:var(--radius);
  padding:clamp(18px,4vw,28px);margin-top:16px}
.takeaway .k{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--earth);font-weight:700}
.takeaway .big{font-family:var(--serif);font-size:1.25rem;color:var(--green-d);margin:8px 0 0;line-height:1.4}

/* quiz */
.q{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.q:first-of-type{border-top:none}
.q .qt{font-weight:700;margin-bottom:10px}
.opt{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;
  padding:11px 14px;margin:8px 0;cursor:pointer;transition:.12s;background:#fff}
.opt:hover{border-color:#cdbb96}
.opt.sel{border-color:var(--green);background:var(--green-soft)}
.opt.correct{border-color:var(--ok);background:#e8f5ee}
.opt.wrong{border-color:var(--red);background:#fbecea}
.opt .mk{width:24px;height:24px;border-radius:50%;border:2px solid var(--line);flex:none;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem}
.opt.sel .mk{border-color:var(--green)}
.explain{font-size:.9rem;color:var(--muted);background:var(--bg2);border-radius:10px;padding:10px 12px;margin-top:6px}
.score{font-family:var(--serif);font-size:1.4rem;color:var(--green);text-align:center;margin:14px 0}

/* stuck / support box */
.stuck{background:var(--blue-soft);border:1px solid #c3dbf3;border-radius:var(--radius);padding:18px 20px;margin-top:16px}
.stuck h3{margin:0 0 6px;color:var(--blue);font-size:1.05rem}
.stuck .normalize{font-style:italic;color:#4a6f96;font-size:.92rem;margin-bottom:10px}
.support-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}

/* companion strip (chống cô đơn) */
.companion{display:flex;align-items:center;gap:12px;background:var(--earth-soft);border-radius:14px;padding:12px 16px;margin-top:16px;font-size:.92rem;color:#6b5436}
.companion .av{width:40px;height:40px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--gold-mid,#E1C081),var(--earth));flex:none}

/* live banner */
.live{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#fdeee9,#f7ddd4);
  border:1px solid #f0cdbf;border-radius:var(--radius);padding:16px 20px;margin:18px 0}
.live .pulse{width:12px;height:12px;border-radius:50%;background:var(--red);flex:none;box-shadow:0 0 0 0 rgba(177,71,54,.5);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(177,71,54,.5)}70%{box-shadow:0 0 0 12px rgba(177,71,54,0)}100%{box-shadow:0 0 0 0 rgba(177,71,54,0)}}

.pager{display:flex;justify-content:space-between;gap:12px;margin:24px 0}
.foot{text-align:center;color:var(--muted);font-size:.8rem;margin:30px 0 50px}

/* ===== ADMIN ===== */
table{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--paper);border-radius:12px;overflow:hidden}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
th{background:var(--green-soft);color:var(--green-d);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
tr:hover td{background:#fffaf0}
.badge{display:inline-block;border-radius:999px;padding:3px 10px;font-size:.74rem;font-weight:700}
.badge.red{background:#fbecea;color:var(--red)}
.badge.ok{background:#e8f5ee;color:var(--ok)}
.badge.warn{background:#fdf3e0;color:#a87b22}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--green-d);color:#fff;
  padding:12px 22px;border-radius:999px;box-shadow:var(--shadow);opacity:0;transition:.25s;z-index:60}
.toast.show{opacity:1}

@media (max-width:520px){ body{font-size:16px} .days{grid-template-columns:repeat(auto-fill,minmax(135px,1fr))} }
@media print{ .top,.pager,.support-row,.btn{display:none} body{background:#fff} }

/* ===== Tiện ích mới ===== */
.navchips{display:flex;gap:9px;overflow-x:auto;padding:4px 0 14px;-webkit-overflow-scrolling:touch}
.navchips .chip{flex:none;background:var(--paper);border:1px solid var(--line);border-radius:999px;
  padding:9px 15px;font-size:.85rem;font-weight:600;color:var(--ink);white-space:nowrap;box-shadow:0 2px 8px rgba(60,45,20,.05)}
.navchips .chip:hover{border-color:var(--green);color:var(--green)}

.asm-banner{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#eaf1ee,#dceae3);
  border:1px solid #cfe0d9;border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;color:var(--ink)}
.asm-banner .asm-ic{font-size:1.6rem;flex:none}
.asm-banner strong{color:var(--green-d)} .asm-banner p{margin:2px 0 0;font-size:.88rem;color:var(--muted)}
.asm-banner .asm-go{margin-left:auto;flex:none;font-weight:700;color:var(--green);white-space:nowrap}

.asm-row{margin:14px 0}
.asm-row label{display:flex;justify-content:space-between;color:var(--ink);font-weight:600;margin:0 0 4px}
.asm-row .asm-val{color:var(--green);font-family:var(--serif);font-size:1.1rem}
.asm-slider{width:100%;accent-color:var(--green)}
.asm-delta{margin:14px 0 0;font-size:1rem;color:var(--green-d);background:var(--green-soft);border-radius:10px;padding:10px 14px}
.hbar{display:flex;align-items:center;gap:10px;margin:8px 0}
.hbar-lbl{flex:none;width:72px;font-size:.82rem;color:var(--muted)}
.hbar-track{flex:1;background:var(--bg2);border-radius:999px;height:22px;overflow:hidden}
.hbar-fill{height:100%;background:linear-gradient(90deg,var(--green),var(--earth));color:#fff;font-size:.78rem;
  display:flex;align-items:center;justify-content:flex-end;padding-right:10px;font-weight:700;border-radius:999px;min-width:34px}

.rquiz .opt{margin:7px 0}

/* hộp công cụ */
.tool{display:block;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px;
  margin-bottom:10px;color:var(--ink);box-shadow:0 2px 10px rgba(60,45,20,.05);transition:.15s}
.tool:hover{border-color:#cdbb96;transform:translateY(-2px)}
.tool-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}
.tool-day{font-family:var(--serif);font-weight:700;color:var(--green)}
.tool-ph{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--earth);font-weight:700}
.tool-title{font-weight:600;margin-bottom:5px}
.tool-take{font-size:.9rem;color:var(--muted);background:var(--earth-soft);border-radius:9px;padding:8px 11px}

/* chứng nhận */
.cert{background:linear-gradient(135deg,#4C5A40,#2A3221);border-radius:20px;padding:8px;margin-top:18px;box-shadow:var(--shadow)}
.cert-in{border:2px solid rgba(199,154,62,.5);border-radius:14px;padding:36px 26px;text-align:center;color:#fdfbf4}
.cert-dot{width:64px;height:64px;border-radius:0;margin:0 auto 14px;background:url(/assets/vfc-logo.png) center/contain no-repeat}
.cert-sign{display:block;height:54px;margin:14px auto 2px;object-fit:contain}
.foot-sign{display:block;height:40px;margin:10px auto 0;opacity:.85}
.cert-ey{font-size:.72rem;letter-spacing:.2em;color:#d8c084;font-weight:700}
.cert-k{font-size:.8rem;letter-spacing:.24em;color:rgba(253,251,244,.7);margin-top:14px}
.cert-name{font-family:var(--serif);font-size:2.1rem;color:#fff;margin:8px 0}
.cert-txt{color:rgba(253,251,244,.9);font-size:.95rem;line-height:1.6}
.cert-txt b{color:#e7cf8f}
.cert-foot{display:flex;justify-content:space-between;margin-top:26px;font-size:.78rem;color:rgba(253,251,244,.65)}

/* ===== Responsive: máy tính bảng & máy tính ===== */
@media (min-width:768px){
  body{font-size:18px}
  .wrap{max-width:940px;padding-left:clamp(22px,4vw,40px);padding-right:clamp(22px,4vw,40px)}
  .navchips{flex-wrap:wrap;overflow:visible}        /* iPad/PC: hiện hết, không cần cuốn */
  .days{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:16px}
}
@media (min-width:1180px){
  .wrap{max-width:1000px}
}
/* iPad: trình phát & thẻ rộng rãi, dễ chạm */
@media (min-width:768px) and (max-width:1180px){
  .day{padding:20px}
}
