:root{
  --green:#0f5132; --green-2:#157347; --gold:#b98a2e;
  --bg:#f7f6f2; --card:#fff; --ink:#1d2321; --muted:#6b7773;
  --ok:#0f7b3f; --bad:#b3261e; --line:#e4e2db; --r:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:"Noto Sans Thai","Noto Naskh Arabic",-apple-system,"Segoe UI",sans-serif;
  font-size:16px;line-height:1.7;padding-bottom:78px}

/* ---------- Top bar ---------- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;
  background:var(--green);color:#fff;padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top))}
.brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.brand small{display:block;font-size:12px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.logo{font-size:22px;color:var(--gold)}
.icon-btn{background:rgba(255,255,255,.15);border:0;color:#fff;width:38px;height:38px;
  border-radius:50%;font-size:19px;cursor:pointer}

/* ---------- Layout ---------- */
.view{max-width:820px;margin:0 auto;padding:16px 14px 24px}
h2{font-size:1.25rem;margin:18px 0 8px}
h3{font-size:1.05rem;margin:16px 0 6px;color:var(--green)}
.muted{color:var(--muted);font-size:.9rem}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:16px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.card.link{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}
.card.link .ico{font-size:26px;width:44px;height:44px;flex:none;display:grid;place-items:center;
  background:#eef4f0;border-radius:12px}
.grid{display:grid;gap:12px}
@media(min-width:680px){.grid.two{grid-template-columns:1fr 1fr}}

/* ---------- Arabic ---------- */
.ar{direction:rtl;text-align:right;font-family:"Noto Naskh Arabic","Traditional Arabic",serif;
  font-size:1.35rem;line-height:2.2}
.ayah{background:#f2f7f4;border-right:4px solid var(--gold);border-radius:10px;padding:12px 14px;margin:10px 0}
.term{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line)}
.term b{direction:rtl;font-family:"Noto Naskh Arabic",serif;font-size:1.15rem;color:var(--green)}

/* ---------- Buttons ---------- */
.btn{display:block;width:100%;padding:14px;border:1px solid var(--line);border-radius:12px;
  background:#fff;font:inherit;text-align:center;cursor:pointer;margin-top:10px;text-decoration:none;color:inherit}
.btn.primary{background:var(--green);color:#fff;border-color:var(--green);font-weight:700}
.btn.gold{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:700}
.btn:active{transform:scale(.99)}

/* ---------- Quiz ---------- */
.progress{height:7px;background:#e3e7e5;border-radius:99px;overflow:hidden;margin:6px 0 14px}
.progress i{display:block;height:100%;background:var(--green-2);transition:.3s}
.choice{display:block;width:100%;text-align:start;padding:14px;margin:9px 0;border:1.6px solid var(--line);
  border-radius:12px;background:#fff;font:inherit;cursor:pointer;min-height:52px}
.choice.sel{border-color:var(--green);background:#eef5f1}
.choice.ok{border-color:var(--ok);background:#e8f6ee}
.choice.bad{border-color:var(--bad);background:#fdecea}
.explain{border-radius:12px;padding:12px 14px;margin-top:10px;font-size:.94rem}
.explain.ok{background:#e8f6ee;border:1px solid #bfe3cd}
.explain.bad{background:#fdecea;border:1px solid #f3c5c0}
.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:.78rem;font-weight:700}
.badge.pre{background:#e6eef7;color:#1b4f8a} .badge.post{background:#f7eee0;color:#8a5a12}
.badge.done{background:#e8f6ee;color:var(--ok)}
.score{font-size:2.6rem;font-weight:800;color:var(--green);text-align:center;margin:6px 0}

table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:start}
th{background:#eef4f0;color:var(--green)}
.ref{font-size:.85rem;color:var(--muted);padding-inline-start:18px}
.ref li{margin-bottom:5px}

/* ---------- Tab bar ---------- */
.tabbar{position:fixed;bottom:0;inset-inline:0;z-index:20;display:flex;background:#fff;
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tab{flex:1;padding:8px 2px;text-align:center;text-decoration:none;color:var(--muted);font-size:17px}
.tab span{display:block;font-size:10.5px;margin-top:2px}
.tab.active{color:var(--green);font-weight:700}

/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);display:grid;place-items:end center}
.modal-box{background:#fff;width:100%;max-width:520px;border-radius:18px 18px 0 0;padding:20px}
.modal-box label{display:block;margin:12px 0;font-size:.9rem;color:var(--muted)}
.modal-box input{width:100%;padding:13px;border:1px solid var(--line);border-radius:10px;font:inherit;
  margin-top:5px;color:var(--ink)}
@media(min-width:680px){.modal{place-items:center}.modal-box{border-radius:18px}}