:root{--bg:#f2f7fa;--card:#fff;--text:#14233c;--muted:#60718a;--line:#d9e4ec;--primary:#087f8c;--primary-2:#2456b8;--soft:#e7f5f5;--good:#087443;--bad:#bf3249;color-scheme:light}
:root[data-theme=dark]{--bg:#091321;--card:#111f32;--text:#edf5ff;--muted:#a9bbd2;--line:#2a4057;--primary:#55ced5;--primary-2:#81a7ff;--soft:#123844;--good:#69d8a0;--bad:#ff91a1;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 85% -10%,color-mix(in srgb,var(--primary) 10%,transparent),transparent 32rem),var(--bg);color:var(--text);font:16px/1.7 system-ui,"Khmer OS System",sans-serif}header{min-height:86px;border-bottom:1px solid color-mix(in srgb,var(--line) 82%,transparent);background:color-mix(in srgb,var(--card) 91%,transparent);backdrop-filter:blur(18px);display:flex;align-items:center;gap:22px;padding:14px max(20px,calc((100vw - 1150px)/2));flex-wrap:wrap;box-shadow:0 6px 30px #071b2e0a;position:relative;z-index:4}.brand{display:flex;align-items:center;gap:11px;color:var(--text);text-decoration:none;white-space:nowrap}.brand img{width:48px;height:48px;filter:drop-shadow(0 7px 10px #087f8c28);transition:transform .22s ease}.brand:hover img{transform:translateY(-2px) rotate(-2deg)}.brand-copy{display:grid;line-height:1}.brand-copy strong{font-size:24px;font-weight:850;letter-spacing:-.7px}.brand-copy strong span{color:var(--primary)}.brand-copy small{font-size:10px;line-height:1.35;margin-top:5px;text-transform:uppercase;letter-spacing:1.25px;font-weight:700;color:var(--muted)}nav{display:flex;gap:6px;flex:1}.settings{display:flex;gap:8px}main{max-width:1150px;margin:auto;padding:36px 20px 80px}h1{font-size:clamp(25px,4vw,38px);line-height:1.4;margin:0 0 12px;letter-spacing:-.5px}h2{font-size:22px;line-height:1.6;margin:0 0 12px}p{margin:8px 0 18px}.muted,small{color:var(--muted)}small{font-size:14px}button,select,input{font:inherit}button,select{min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--text);padding:8px 14px;cursor:pointer;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease}button:hover{border-color:var(--primary);box-shadow:0 6px 18px #087f8c12}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:wait}button.primary{background:linear-gradient(135deg,var(--primary),var(--primary-2));color:var(--bg);font-weight:700;border-color:transparent;box-shadow:0 8px 22px #087f8c28}:root:not([data-theme=dark]) button.primary{color:white}button.active{background:var(--soft);border-color:var(--primary)}button.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,var(--line));font-weight:700}button.danger:hover{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 9%,var(--card));box-shadow:0 6px 18px color-mix(in srgb,var(--bad) 16%,transparent)}:focus-visible{outline:3px solid var(--primary);outline-offset:3px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;margin:22px 0}.card{background:linear-gradient(145deg,var(--card),color-mix(in srgb,var(--card) 96%,var(--primary)));border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:0 10px 32px #102a460a}.faculty{border-top:4px solid var(--primary);text-align:left;min-height:135px}.faculty strong{display:block;font-size:22px}.filters,.actions,.meta{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.filters{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px;margin:24px 0}.filters label{display:grid;gap:5px;flex:1;min-width:140px}.badge{display:inline-block;background:var(--soft);color:var(--primary);border-radius:30px;padding:3px 12px;font-size:14px}.session{max-width:850px;margin:auto}.question{font-size:clamp(19px,2vw,25px);font-weight:600;white-space:pre-wrap;overflow-wrap:anywhere}.option{display:flex;gap:12px;align-items:flex-start;border:2px solid var(--line);border-radius:14px;padding:16px;margin:12px 0;cursor:pointer;white-space:pre-wrap;overflow-wrap:anywhere;transition:border-color .18s ease,background .18s ease,transform .18s ease}.option:hover{transform:translateX(2px)}.option:has(input:checked){border-color:var(--primary);background:var(--soft)}.option input{margin-top:8px;accent-color:var(--primary);width:18px;height:18px;flex-shrink:0}.correct{border-color:var(--good)!important}.feedback{padding:16px;border-left:4px solid var(--primary);background:var(--soft);border-radius:10px;margin:18px 0}.error{color:var(--bad)}.auth{max-width:450px;margin:35px auto}.auth label{display:grid;gap:6px;margin:18px 0}input{min-height:46px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);min-width:0}#message:empty{display:none}#message{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);max-width:calc(100% - 30px);padding:14px 22px;background:var(--text);color:var(--bg);border-radius:14px;z-index:9}progress{width:100%;height:9px;accent-color:var(--primary);margin:16px 0}.score{font-size:64px;font-weight:800;color:var(--primary)}.empty{padding:35px;text-align:center;border:1px dashed var(--line);border-radius:20px}.row{display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap}.timer{font-variant-numeric:tabular-nums;font-weight:700}.history-item{margin-bottom:14px}.notice{border-left:4px solid var(--primary);padding:12px 18px;background:var(--soft);border-radius:10px;margin:18px 0}
@media(max-width:650px){header{gap:10px;padding:12px 16px}.brand{flex:1}.brand img{width:43px;height:43px}.brand-copy strong{font-size:22px}.brand-copy small{font-size:9px}nav{order:3;flex-basis:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}main{padding:24px 14px 65px}.card{padding:18px}.grid{grid-template-columns:1fr}.actions button{flex:1}.settings select{max-width:110px}}
.study-question{margin:18px 0;content-visibility:auto;contain-intrinsic-size:auto 500px;scroll-margin-top:20px}.exam-controls{position:sticky;bottom:0;padding:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;display:flex;gap:10px;justify-content:space-between;z-index:2}.exam-controls button{flex:1}.bookmark-card{display:block;text-align:left;width:100%;margin:12px 0}nav{flex-wrap:wrap}.question-editor{margin:15px 0}.question-editor summary{cursor:pointer;font-weight:600;overflow-wrap:anywhere}fieldset{border:0;padding:0;min-width:0}textarea{font:inherit;width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);resize:vertical}#set-form label,.question-editor fieldset>label,.catalog-section form>label{display:grid;gap:6px;margin:12px 0}.choice-editor{display:grid;grid-template-columns:65px minmax(100px,1fr) auto;gap:10px;align-items:center;margin:12px 0}.choice-editor input,.review-check input{min-height:0}.review-check{display:flex!important;align-items:center}.toolbar{position:sticky;top:0;background:var(--card);padding:12px;z-index:3}.catalog-section{margin:18px 0}#save-status:not(:empty){padding:8px;color:var(--muted)}@media(max-width:500px){.choice-editor{grid-template-columns:45px minmax(0,1fr)}.choice-editor button{grid-column:2}.exam-controls button{padding:8px;font-size:14px}}


/* ===== QcMed compact catalogue + stronger answer states ===== */
.faculty-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin:16px 0;
}
.faculty{
  min-height:104px;
  padding:16px 17px;
  border-top-width:4px;
  border-radius:18px;
}
.faculty small{
  display:block;
  font-size:12px;
  line-height:1.2;
  margin-bottom:8px;
}
.faculty strong{
  font-size:19px;
  line-height:1.25;
}
.faculty-subtitle{
  display:block;
  margin-top:4px;
  font-size:12px;
  line-height:1.3;
}
.home-filters{
  margin:16px 0 22px;
  padding:14px;
}
.study-setup,.exam-setup{
  max-width:760px;
  margin:16px 0;
}
.study-setup>label{
  display:grid;
  gap:7px;
  margin:12px 0;
}
.study-setup select{
  width:100%;
}
.exam-setup h2{
  margin-top:10px;
}

/* Entire answer card is the tap target. */
.option{
  min-height:58px;
  align-items:center;
  padding:15px 17px;
  font-size:17px;
  line-height:1.5;
  transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease;
}
.option-copy{
  width:100%;
}
.option-label{
  font-size:1.06em;
  margin-right:4px;
}
.option:has(input:checked),
.option.selected{
  background:var(--primary);
  border-color:var(--primary);
  color:#fff;
  box-shadow:0 8px 22px color-mix(in srgb,var(--primary) 28%,transparent);
}
.option:has(input:checked) .muted,
.option.selected .muted{
  color:rgba(255,255,255,.88);
}
.option.correct{
  background:#139653!important;
  border-color:#139653!important;
  color:#fff!important;
  box-shadow:0 8px 22px rgba(19,150,83,.24)!important;
}
.option.wrong{
  background:#d43d52!important;
  border-color:#d43d52!important;
  color:#fff!important;
  box-shadow:0 8px 22px rgba(212,61,82,.24)!important;
}
:root[data-theme=dark] .option.correct{background:#137547!important;border-color:#35c478!important}
:root[data-theme=dark] .option.wrong{background:#9f2f43!important;border-color:#ff7187!important}
.option.correct input,.option.wrong input,.option.selected input{accent-color:#fff}
.feedback{
  border-left:0;
  text-align:left;
  padding:18px;
}
.feedback-good{
  background:color-mix(in srgb,#139653 14%,var(--card));
  border:1px solid color-mix(in srgb,#139653 45%,var(--line));
}
.feedback-bad{
  background:color-mix(in srgb,#d43d52 12%,var(--card));
  border:1px solid color-mix(in srgb,#d43d52 42%,var(--line));
}
.feedback-emoji{
  font-size:34px;
  line-height:1;
  margin-bottom:10px;
  animation:qcm-pop .32s ease-out;
}
@keyframes qcm-pop{
  0%{transform:scale(.65);opacity:.35}
  75%{transform:scale(1.08)}
  100%{transform:scale(1);opacity:1}
}
.timer{
  padding:4px 10px;
  border-radius:999px;
  background:var(--soft);
  color:var(--primary);
}
.exam-controls{
  padding-bottom:max(12px,env(safe-area-inset-bottom));
}
.exam-controls .primary{
  font-weight:800;
}
@media(max-width:650px){
  .faculty-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin:14px 0;
  }
  .faculty{
    min-height:90px;
    padding:13px 14px;
  }
  .faculty strong{
    font-size:17px;
  }
  .faculty-subtitle{
    font-size:11px;
  }
  .home-filters{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    padding:12px;
  }
  .home-filters label{
    min-width:0;
  }
  .home-filters>button{
    grid-column:1/-1;
  }
  .subject-grid{
    grid-template-columns:1fr;
  }
  .option{
    font-size:16.5px;
    padding:15px 14px;
  }
}
@media(max-width:390px){
  .faculty strong{font-size:16px}
  .faculty-subtitle{display:none}
  .faculty{min-height:78px}
}

/* ===== v5: DES past-paper flow + dark-mode question readability ===== */
.des-notice{margin:16px 0 22px}
.des-year-setup{max-width:720px;margin:18px 0}
.des-year-setup>label{display:grid;gap:7px;margin:12px 0}
.des-year-setup select{width:100%}
#des-source{margin:4px 0 16px;overflow-wrap:anywhere}

/* Increase separation and text contrast inside question cards in dark mode. */
:root[data-theme=dark] .study-question,
:root[data-theme=dark] .session>article.card{
  background:#17283d;
  border-color:#46617c;
  box-shadow:0 12px 34px rgba(0,0,0,.28);
}
:root[data-theme=dark] .question{
  color:#ffffff;
  font-weight:700;
  text-shadow:0 1px 0 rgba(0,0,0,.18);
}
:root[data-theme=dark] .study-question .muted,
:root[data-theme=dark] .session>article.card .muted{
  color:#c9d8ea;
}
:root[data-theme=dark] .option{
  background:#0d1b2c;
  border-color:#49647f;
  color:#f7fbff;
}
:root[data-theme=dark] .option:hover{
  background:#142a40;
  border-color:#71dbe1;
}
:root[data-theme=dark] .option:has(input:checked),
:root[data-theme=dark] .option.selected{
  background:#176f7b;
  border-color:#7de8ed;
  color:#fff;
}
:root[data-theme=dark] .exam-controls{
  background:#17283d;
  border-color:#46617c;
}
@media(max-width:650px){
  :root[data-theme=dark] .question{font-size:20px;line-height:1.65}
  :root[data-theme=dark] .option{line-height:1.65}
}

/* ===== v7 clean catalogue ===== */
.catalog-section>select{width:100%;margin:8px 0 16px}.catalog-section form{border-top:1px solid var(--line);padding-top:10px}.catalog-section [data-subject-term]>.notice{margin:10px 0}.notice.compact{padding:10px 14px}.catalog-section form button.primary{margin-top:8px}#exam-year-field small{display:block;margin-top:4px}optgroup{font-weight:700}option{font-weight:400}


/* v8 — user support and question reporting */
.support-footer{max-width:1180px;margin:34px auto 18px;padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid var(--line,#d9e2e7);border-radius:18px;background:var(--card,#fff);box-shadow:0 8px 30px rgba(15,23,42,.06)}
.support-footer-copy{display:flex;flex-direction:column;gap:4px}.support-footer-copy small{color:var(--muted,#64748b);line-height:1.5}.telegram-contact{display:inline-flex;align-items:center;gap:8px;padding:11px 15px;border-radius:12px;text-decoration:none;font-weight:700;background:#229ED9;color:#fff;white-space:nowrap}.telegram-contact:hover{filter:brightness(.95)}
[data-theme="dark"] .support-footer{background:#111827;border-color:#334155;box-shadow:none}[data-theme="dark"] .support-footer-copy small{color:#cbd5e1}
@media(max-width:700px){.support-footer{margin:22px 0 14px;align-items:stretch;flex-direction:column}.telegram-contact{justify-content:center}}
