:root{--bg:#f5f6f8;--card:#fff;--ink:#1d2433;--muted:#667085;--line:#e4e7ec;--brand:#173a5e;--accent:#0f8b8d;--accent-soft:#e6f4f4;--good:#16794c;--good-soft:#e7f6ee;--warn:#b54708;--warn-soft:#fef0e6;--bad:#b42318;--bad-soft:#fdecea;--side:#10263d}
*{box-sizing:border-box}
body{margin:0;font-family:"IBM Plex Sans Thai",system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:16px;line-height:1.65}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:1.65rem;margin:.2rem 0 .6rem;line-height:1.35}h2{font-size:1.2rem;margin:1.6rem 0 .6rem}h3{font-size:1.05rem;margin:0 0 .5rem}
.shell{display:flex;min-height:100vh}
.side{width:230px;flex:none;background:var(--side);color:#cdd6e1;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:18px 12px}
.brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;font-size:1.05rem;margin:0 6px 18px}.brand:hover{text-decoration:none}
.brand.big{color:var(--brand);font-size:1.3rem;margin:0 0 4px}
.logo{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--accent);color:#fff;font-size:.85rem;font-weight:700}
.side nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow:auto}
.side nav a{color:#cdd6e1;padding:7px 10px;border-radius:8px}.side nav a:hover{background:#1b3a59;text-decoration:none}.side nav a.on{background:var(--accent);color:#fff}
.side nav a b{display:inline-block;width:34px}
.navlabel{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#7f93a8;margin:14px 10px 4px}
.me{border-top:1px solid #23415f;padding:12px 8px 0;font-size:.85rem}.me .who{color:#fff;font-weight:600}.me .muted{color:#8ea2b6}.melinks a,.linkbtn{color:#9fd3d4;font-size:.8rem}
.linkbtn{background:none;border:0;padding:0;cursor:pointer;font-family:inherit}.inline{display:inline}
.main{flex:1;min-width:0;padding:28px 40px 80px;max-width:1150px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:12px;display:block;color:inherit}
a.card:hover{border-color:var(--accent);text-decoration:none}
.muted{color:var(--muted)}.small{font-size:.86rem}.ok{color:var(--good)}.warn{color:var(--warn)}
.crumbs{font-size:.85rem;color:var(--muted);margin-bottom:6px}
.msgs .msg,.msg{padding:10px 14px;border-radius:10px;margin-bottom:12px;background:var(--accent-soft)}
.msg.success{background:var(--good-soft);color:var(--good)}.msg.warning{background:var(--warn-soft);color:var(--warn)}.msg.error{background:var(--bad-soft);color:var(--bad)}
.btn{display:inline-block;font-family:inherit;font-size:.95rem;padding:9px 18px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer}
.btn:hover{border-color:var(--accent);text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#0c7476}
.btn:disabled{opacity:.6;cursor:wait}.btn.wide{width:100%}
input,textarea,select{font-family:inherit;font-size:.95rem;width:100%;padding:9px 11px;border:1px solid #cfd4dc;border-radius:8px;background:#fff;color:var(--ink)}
input[type=checkbox],input[type=radio]{width:auto}
textarea{resize:vertical}label{display:block;margin-bottom:10px}
.pill{display:inline-block;font-size:.8rem;padding:2px 10px;border-radius:99px;background:#eef1f5;color:var(--muted);white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good)}.pill.warn{background:var(--warn-soft);color:var(--warn)}
.bar{height:8px;background:#e9edf2;border-radius:99px;overflow:hidden;margin:8px 0 6px;min-width:60px}.bar span{display:block;height:100%;background:var(--accent);border-radius:99px}
.bar.big{height:10px;flex:1;max-width:340px;margin:0}
.hero{display:flex;gap:20px;align-items:flex-start;justify-content:space-between;margin-bottom:14px}
.nextcard{min-width:280px;border-left:4px solid var(--accent)}.nexttitle{font-weight:600;font-size:1.05rem}
.levels{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:10px}
.levelcard{position:relative}.levelcard h3{margin-top:4px}.levelcard.locked{opacity:.72}.levelcard.done{border-color:#a6dcc0;background:#fbfffd}
.lvtag{display:inline-block;font-weight:700;color:#fff;background:var(--brand);border-radius:6px;padding:0 8px;font-size:.85rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid #f0f2f5}.row:last-child{border-bottom:0}
.howto{margin:0;padding-left:18px}.howto li{margin-bottom:4px}
.statline{display:flex;align-items:center;gap:14px;margin:8px 0 6px}
.list .item,.item{display:flex;align-items:center;gap:14px}
.item .num,.qtext .num{flex:none;display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:.9rem}
.grow{flex:1;min-width:0}.itemtitle{font-weight:600}
.lesson{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px 36px;margin-bottom:14px}
.lessonhead{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:12px}
.prose{max-width:820px}.prose h2{font-size:1.2rem;margin-top:1.6rem;color:var(--brand)}.prose h3{font-size:1.05rem;margin-top:1.2rem}
.prose table{border-collapse:collapse;margin:12px 0;font-size:.92rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top}.prose th{background:#f3f5f8}
.prose blockquote{margin:12px 0;padding:8px 16px;border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0}
.prose code{background:#f1f3f6;padding:1px 5px;border-radius:4px;font-size:.9em}.prose pre{background:#f1f3f6;padding:12px;border-radius:8px;overflow-x:auto}
.quizcta{display:flex;justify-content:space-between;align-items:center;border-left:4px solid var(--accent)}
.pager{display:flex;justify-content:space-between;margin-top:10px;font-size:.92rem}
.q .qtext{font-weight:500;margin-bottom:10px;display:flex;gap:10px}
.choice{display:block;padding:8px 12px;border:1px solid var(--line);border-radius:8px;margin:6px 0;cursor:pointer}
label.choice:hover{border-color:var(--accent);background:#fafdfd}label.choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.choice.correct{border-color:#a6dcc0;background:var(--good-soft)}.choice.picked{border-color:#f5b8b2;background:var(--bad-soft)}
.q.wrong{border-left:4px solid var(--bad)}.q.right{border-left:4px solid var(--good)}
.explain{margin-top:10px;padding:10px 12px;background:#f7f8fa;border-radius:8px;font-size:.93rem}
.sticky{position:sticky;bottom:0;background:rgba(245,246,248,.95);padding:12px 0;display:flex;justify-content:space-between;align-items:center;gap:14px;border-top:1px solid var(--line)}
.scorebox{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.scorebox .actions{margin-left:auto}
.bigscore{font-size:2.2rem;font-weight:700}.scorebox.pass{border-left:6px solid var(--good)}.scorebox.pass .bigscore{color:var(--good)}.scorebox.fail{border-left:6px solid var(--warn)}.scorebox.fail .bigscore{color:var(--warn)}
.tablewrap{overflow-x:auto;margin-bottom:12px}
table.wp{border-collapse:collapse;width:100%;background:#fff;font-size:.92rem;border:1px solid var(--line)}
table.wp th{background:var(--brand);color:#fff;padding:8px 10px;text-align:left;font-weight:500}table.wp td{padding:7px 10px;border-top:1px solid var(--line);vertical-align:top}
table.wp .ck{width:56px;text-align:center}table.wp tr.flag{background:#fff7ed}table.wp tr.why td{border-top:0;padding-top:0;background:#fff7ed}
.hidden{display:none}
table.wp tr.hit{background:var(--good-soft)}table.wp tr.miss{background:var(--warn-soft)}table.wp tr.fp{background:var(--bad-soft)}table.wp tr.ans td{border-top:0;font-size:.9rem;background:#fafbfc}
details.ctx summary,details.caseans summary{cursor:pointer;font-weight:600}
details.caseans{border-bottom:1px solid #f0f2f5;padding:8px 0}details.caseans form{margin-top:8px}details.caseans .btn{margin-top:6px}
.scene{border-left:4px solid var(--brand)}
.options{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.optbtn{font-family:inherit;font-size:.97rem;text-align:left;padding:12px 14px;border:1px solid #cfd4dc;border-radius:10px;background:#fff;cursor:pointer}.optbtn:hover{border-color:var(--accent);background:var(--accent-soft)}
.fb{border-left:4px solid}.fb.good{border-color:var(--good);background:var(--good-soft)}.fb.mid{border-color:var(--warn);background:var(--warn-soft)}.fb.bad{border-color:var(--bad);background:var(--bad-soft)}
.ending{margin-top:12px;font-weight:700;padding:10px 14px;border-radius:8px;background:#f3f5f8}.ending.good{background:var(--good-soft);color:var(--good)}.ending.bad{background:var(--bad-soft);color:var(--bad)}
.pathstep{padding:10px 14px}
.chat{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.bubble{max-width:72%;padding:10px 14px;border-radius:14px;background:#fff;border:1px solid var(--line)}
.bubble.learner{align-self:flex-end;background:var(--accent);color:#fff;border-color:var(--accent)}.bubble.learner .who{color:#d6f0f0}
.bubble .who{color:var(--muted);margin-bottom:2px}.bubble.typing{color:var(--muted);font-style:italic}
.chatbox{display:flex;gap:10px;align-items:flex-end;margin-bottom:10px}.chatbox textarea{flex:1}
table.plain{width:100%;border-collapse:collapse;font-size:.92rem}table.plain th{text-align:left;background:#f3f5f8;padding:8px}table.plain td{padding:8px;border-top:1px solid var(--line);vertical-align:top}.c{text-align:center}
.phrase{padding:8px 0;border-bottom:1px solid #f0f2f5}.phrase .said{color:var(--muted)}.phrase .better{color:var(--good);font-weight:500}
.mentorbox{border-left:4px solid #7a5af8;background:#f8f6ff}.mentorbox textarea{margin-bottom:8px}
.discussion{border-left:4px solid var(--good)}
.search{display:flex;gap:10px;margin-bottom:10px}
.qa .qq{font-weight:600;margin-bottom:8px}
.loginwrap{min-height:100vh;display:grid;place-items:center;padding:16px}.login{width:100%;max-width:380px;padding:28px}.narrow{max-width:460px}
.cert{background:#fff;border:10px double var(--brand);padding:56px 40px;text-align:center;max-width:820px;margin:16px auto;display:flex;flex-direction:column;gap:10px}
.certlogo{letter-spacing:.2em;font-weight:700;color:var(--accent)}.certsub{font-size:1.3rem}.certname{font-size:2rem;font-weight:700;color:var(--brand);margin:12px 0}
.certlevel{font-size:1.3rem;font-weight:600}.certdate{margin-top:14px}.certsign{margin-top:40px}
@media print{.side,.noprint,.msgs{display:none}.main{padding:0}body{background:#fff}}
@media (max-width:900px){.shell{flex-direction:column}.side{width:auto;height:auto;position:static}.side nav{flex-direction:row;flex-wrap:wrap}.navlabel{display:none}.main{padding:16px}.levels{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.hero{flex-direction:column}.lesson{padding:18px}.bubble{max-width:90%}}
