:root{
  --bg:#F7F5EF;
  --card:#FFFFFF;
  --card-alt:#FBFAF6;
  --line:#E1DDD1;
  --navy:#16283D;
  --navy-soft:#48607A;
  --navy-mute:#8695A6;
  --gold:#9C6B1F;
  --gold-bg:#FBF1DE;
  --gold-line:#D9A441;
  --green:#1D7A4C;
  --green-bg:#E9F5EE;
  --red:#B23A2E;
  --red-bg:#FBEBE8;
  --blue:#245A8D;
  --blue-bg:#E9F1F8;
  --radius:10px;
  --radius-lg:14px;
  --shadow:0 1px 2px rgba(22,40,61,0.06), 0 1px 8px rgba(22,40,61,0.04);
  font-size:16px;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--navy);
  font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:"Noto Serif TC",serif;
  color:var(--navy);
  font-weight:600;
  margin:0 0 .6em;
}
a{color:var(--blue);}
.mono{font-family:"IBM Plex Mono",monospace;}

/* ---------- App shell ---------- */
#app{min-height:100vh;display:flex;}
.sidebar{
  width:220px;
  flex-shrink:0;
  background:var(--navy);
  color:#EDEBE1;
  padding:24px 18px;
  position:sticky;
  top:0;
  height:100vh;
  overflow-y:auto;
}
.sidebar .brand{
  font-family:"Noto Serif TC",serif;
  font-size:18px;
  font-weight:600;
  color:#fff;
  margin-bottom:2px;
}
.sidebar .brand-sub{
  font-size:12px;
  color:#9FB0C4;
  margin-bottom:24px;
}
.chapter-list{list-style:none;margin:0;padding:0;}
.chapter-list li{
  padding:9px 10px;
  border-radius:8px;
  font-size:13px;
  color:#C6D0DC;
  cursor:pointer;
  margin-bottom:2px;
}
.chapter-list li.active{
  background:rgba(217,164,65,0.16);
  color:#F0D9A6;
  font-weight:500;
}
.chapter-list li:hover{background:rgba(255,255,255,0.06);}
.module-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:#7488A0;
  margin:18px 0 6px;
  padding-left:10px;
}

.main{flex:1;min-width:0;}
.topbar{
  background:var(--card);
  border-bottom:1px solid var(--line);
  padding:16px 32px;
  position:sticky;
  top:0;
  z-index:5;
}
.topbar .crumb{font-size:12px;color:var(--navy-mute);margin-bottom:2px;}
.topbar h1{font-size:20px;margin:0;}

.tabs{
  display:flex;
  gap:4px;
  padding:0 32px;
  background:var(--card);
  border-bottom:1px solid var(--line);
  overflow-x:auto;
}
.tab-btn{
  border:none;
  background:none;
  padding:12px 16px;
  font-size:14px;
  color:var(--navy-soft);
  cursor:pointer;
  border-bottom:2px solid transparent;
  white-space:nowrap;
  font-family:inherit;
}
.tab-btn.active{
  color:var(--navy);
  border-bottom-color:var(--gold-line);
  font-weight:500;
}
.tab-btn:hover{color:var(--navy);}

.content{
  max-width:920px;
  margin:0 auto;
  padding:32px;
}

/* ---------- Cards & callouts ---------- */
.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:24px 28px;
  margin-bottom:20px;
  box-shadow:var(--shadow);
}
.callout{
  border-radius:0 8px 8px 0;
  padding:12px 16px;
  margin:14px 0;
  font-size:14px;
  line-height:1.7;
}
.callout-tip{background:var(--green-bg);border-left:3px solid var(--green);color:var(--navy);}
.callout-warning{background:var(--red-bg);border-left:3px solid var(--red);color:var(--navy);}
.callout-quote{background:var(--blue-bg);border-left:3px solid var(--blue);color:var(--navy);font-style:italic;}
.callout-gold{background:var(--gold-bg);border-left:3px solid var(--gold-line);color:var(--navy);}
.callout strong{color:inherit;}

.content-body table{
  width:100%;
  border-collapse:collapse;
  margin:16px 0;
  font-size:13.5px;
}
.content-body th{
  background:var(--card-alt);
  text-align:left;
  padding:9px 12px;
  border:1px solid var(--line);
  color:var(--navy-soft);
  font-weight:500;
}
.content-body td{
  padding:9px 12px;
  border:1px solid var(--line);
  vertical-align:top;
}
.content-body em{color:var(--navy-mute);font-size:12.5px;}
.content-body h3{font-size:17px;margin-top:1.6em;}
.content-body h4{font-size:15px;color:var(--navy-soft);}
.content-body p{margin:0.8em 0;font-size:14.5px;}

.badge{
  display:inline-block;
  font-size:11px;
  padding:3px 9px;
  border-radius:20px;
  background:var(--gold-bg);
  color:var(--gold);
  font-weight:500;
  margin-bottom:10px;
}

/* ---------- Objectives ---------- */
.objectives-list{list-style:none;margin:0;padding:0;}
.objectives-list li{
  display:flex;
  gap:10px;
  padding:8px 0;
  font-size:14.5px;
  border-bottom:1px solid var(--line);
}
.objectives-list li:last-child{border-bottom:none;}
.objectives-list li::before{
  content:"○";
  color:var(--gold-line);
  flex-shrink:0;
}

/* ---------- Buttons ---------- */
.btn{
  border:1px solid var(--line);
  background:var(--card);
  color:var(--navy);
  padding:9px 18px;
  border-radius:8px;
  font-size:14px;
  cursor:pointer;
  font-family:inherit;
}
.btn:hover{border-color:var(--navy-mute);}
.btn-primary{
  background:var(--navy);
  color:#F5F1E4;
  border-color:var(--navy);
}
.btn-primary:hover{background:#0F1C2C;}
.btn-gold{
  background:var(--gold-bg);
  color:var(--gold);
  border-color:var(--gold-line);
}

/* ---------- MCQ / Quiz ---------- */
.quiz-progress{
  font-size:13px;color:var(--navy-mute);margin-bottom:16px;
}
.q-card{margin-bottom:18px;}
.q-title{font-size:15px;font-weight:500;margin-bottom:12px;}
.opt{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:10px 14px;
  border:1px solid var(--line);
  border-radius:8px;
  margin-bottom:8px;
  cursor:pointer;
  font-size:14px;
}
.opt:hover{border-color:var(--navy-mute);}
.opt.selected{border-color:var(--blue);background:var(--blue-bg);}
.opt.correct{border-color:var(--green);background:var(--green-bg);}
.opt.wrong{border-color:var(--red);background:var(--red-bg);}
.opt-letter{
  width:22px;height:22px;border-radius:50%;
  background:var(--card-alt);
  display:flex;align-items:center;justify-content:center;
  font-size:12px;flex-shrink:0;color:var(--navy-soft);
}
.explain{
  font-size:13px;
  color:var(--navy-soft);
  background:var(--card-alt);
  border-radius:8px;
  padding:10px 14px;
  margin-top:8px;
  display:none;
}
.explain.show{display:block;}
.score-banner{
  text-align:center;
  padding:24px;
  margin-bottom:20px;
}
.score-num{font-size:40px;font-family:"IBM Plex Mono",monospace;color:var(--navy);}

/* ---------- Flashcards ---------- */
.card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:14px;
}
.flip-card{
  perspective:1000px;
  height:120px;
  cursor:pointer;
}
.flip-inner{
  position:relative;width:100%;height:100%;
  transition:transform .5s;
  transform-style:preserve-3d;
}
.flip-card.flipped .flip-inner{transform:rotateY(180deg);}
.flip-face{
  position:absolute;width:100%;height:100%;
  backface-visibility:hidden;
  border-radius:var(--radius);
  border:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:10px;text-align:center;
  background:var(--card);
}
.flip-face.back{
  transform:rotateY(180deg);
  background:var(--blue-bg);
}
.flip-face .zh{font-size:15px;font-weight:500;}
.flip-face .en{font-size:11px;color:var(--navy-mute);margin-top:4px;font-family:"IBM Plex Mono",monospace;}
.flip-face .def{font-size:12px;color:var(--navy);line-height:1.5;}

/* ---------- Slides ---------- */
.slide-viewport{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  aspect-ratio:16/9;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:48px 56px;
  position:relative;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.slide-viewport.fullscreen{
  position:fixed;inset:0;z-index:100;border-radius:0;aspect-ratio:auto;
}
.slide-kicker{font-size:13px;color:var(--gold);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;}
.slide-title{font-family:"Noto Serif TC",serif;font-size:30px;font-weight:600;margin-bottom:14px;color:var(--navy);}
.slide-body{font-size:17px;color:var(--navy-soft);}
.slide-viewport.fullscreen .slide-title{font-size:44px;}
.slide-viewport.fullscreen .slide-body{font-size:22px;}
.slide-bullets{list-style:none;margin:0;padding:0;}
.slide-bullets li{
  padding:8px 0 8px 22px;
  position:relative;
  font-size:16px;
}
.slide-bullets li::before{
  content:"";position:absolute;left:0;top:16px;
  width:8px;height:8px;border-radius:50%;background:var(--gold-line);
}
.slide-table{width:100%;border-collapse:collapse;font-size:14px;}
.slide-table th{background:var(--card-alt);padding:8px 12px;text-align:left;border:1px solid var(--line);}
.slide-table td{padding:8px 12px;border:1px solid var(--line);}
.slide-compare{display:flex;gap:24px;}
.slide-compare > div{flex:1;background:var(--card-alt);border-radius:10px;padding:16px 18px;}
.slide-compare h4{color:var(--gold);font-size:15px;}
.slide-quote-text{font-size:24px;font-style:italic;font-family:"Noto Serif TC",serif;color:var(--navy);}
.slide-quote-source{margin-top:14px;font-size:14px;color:var(--navy-mute);}
.slide-formula-box{
  background:var(--card-alt);border:1px solid var(--line);border-radius:10px;
  padding:20px;text-align:center;font-family:"IBM Plex Mono",monospace;font-size:20px;margin-bottom:10px;
}
.slide-nav{
  display:flex;align-items:center;justify-content:center;gap:16px;
  padding:12px 0 0;font-size:13px;color:var(--navy-mute);
}
.slide-nav button{background:none;border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer;font-family:inherit;}
.slide-click-l,.slide-click-r{position:absolute;top:0;bottom:0;width:35%;cursor:pointer;}
.slide-click-l{left:0;}
.slide-click-r{right:0;}
.exit-fs{position:fixed;top:16px;right:16px;z-index:101;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 14px;cursor:pointer;display:none;}
.exit-fs.show{display:block;}

/* ---------- AI task / checklist ---------- */
.ai-task-card{background:var(--green-bg);border-left:3px solid var(--green);border-radius:0 10px 10px 0;padding:16px 20px;margin-bottom:14px;}
.ai-task-card .label{font-size:12px;color:var(--green);font-weight:500;margin-bottom:6px;}
.ai-task-card ul{margin:8px 0 0;padding-left:18px;font-size:13px;color:var(--navy-soft);}
.checklist-item{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px;}
.checklist-item:last-child{border-bottom:none;}
.checklist-item input{margin-top:3px;}

/* ---------- Section headers ---------- */
.section-head{margin-bottom:18px;}
.section-head .kicker{font-size:12px;color:var(--gold);letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;}
.section-head h2{font-size:22px;margin-bottom:4px;}
.section-head p{font-size:13.5px;color:var(--navy-mute);margin:0;}

/* ---------- Password gate ---------- */
.gate{
  position:fixed;inset:0;background:var(--navy);
  display:flex;align-items:center;justify-content:center;z-index:999;
}
.gate-box{
  background:var(--card);border-radius:var(--radius-lg);padding:40px;width:320px;text-align:center;
}
.gate-box h2{font-size:18px;}
.gate-box input{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;
  margin:16px 0;font-size:14px;text-align:center;
}
.gate-box .err{color:var(--red);font-size:13px;height:16px;}

/* ---------- Task steps ---------- */
.step-block{margin-bottom:16px;}
.step-block .step-label{font-size:13px;font-weight:500;color:var(--gold);margin-bottom:6px;}
textarea.notes{
  width:100%;min-height:70px;border:1px solid var(--line);border-radius:8px;padding:10px;
  font-family:inherit;font-size:13.5px;margin-top:8px;resize:vertical;
}

@media (max-width:760px){
  .sidebar{display:none;}
  .content{padding:20px 16px;}
  .card{padding:18px 18px;}
  .slide-viewport{padding:28px 24px;}
  .slide-title{font-size:22px;}
}
