:root{
  --bg:#FAF8F4;
  --bg-card:#FFFFFF;
  --ink:#1F2933;
  --ink-soft:#5B6472;
  --brand:#2E5C8A;
  --brand-dark:#1E3F63;
  --accent:#C1440E;
  --brand-tint:#EAF1F8;
  --accent-tint:#FBEDE6;
  --line:#E4E0D8;
  --radius:14px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  font-size:16px;
  line-height:1.65;
}
h1,h2,h3,h4{
  font-family:'Sora',system-ui,sans-serif;
  color:var(--brand-dark);
  line-height:1.25;
  margin:0 0 .5em;
}
a{color:var(--brand);}
img{max-width:100%;display:block;}

/* ---------- top bar ---------- */
.topbar{
  position:sticky; top:0; z-index:50;
  background:var(--brand-dark);
  color:#fff;
  padding:14px 28px;
  display:flex; align-items:center; justify-content:space-between;
  box-shadow:0 2px 10px rgba(0,0,0,.12);
}
.topbar .brand{
  font-family:'Sora',sans-serif; font-weight:700; font-size:1.05rem;
  color:#fff; text-decoration:none; letter-spacing:.2px;
}
.topbar .brand span{color:#F2B79A;}
.topbar nav a{
  color:#DCE7F2; text-decoration:none; margin-left:22px; font-size:.92rem;
}
.topbar nav a:hover{color:#fff;}

/* ---------- layout ---------- */
.layout{
  display:grid;
  grid-template-columns:260px 1fr;
  max-width:1200px;
  margin:0 auto;
  gap:0;
}
.sidebar{
  border-right:1px solid var(--line);
  padding:28px 18px;
  position:sticky; top:56px;
  align-self:start;
  height:calc(100vh - 56px);
  overflow-y:auto;
}
.sidebar .eyebrow{
  font-size:.72rem; text-transform:uppercase; letter-spacing:.09em;
  color:var(--ink-soft); font-weight:600; margin:0 0 10px 6px;
}
.sidebar a.topic-link{
  display:block; padding:8px 10px; border-radius:8px;
  color:var(--ink-soft); text-decoration:none; font-size:.88rem;
  border-left:3px solid transparent;
}
.sidebar a.topic-link:hover{background:var(--brand-tint); color:var(--brand-dark);}
.main{padding:36px 40px 90px;}

@media (max-width:860px){
  .layout{grid-template-columns:1fr;}
  .sidebar{position:relative; height:auto; border-right:none; border-bottom:1px solid var(--line);}
}

/* ---------- module header ---------- */
.module-header{
  background:linear-gradient(135deg,var(--brand) 0%,var(--brand-dark) 100%);
  color:#fff; border-radius:var(--radius);
  padding:34px 38px; margin-bottom:36px;
}
.module-header .kicker{color:#F2B79A; font-weight:600; font-size:.85rem; text-transform:uppercase; letter-spacing:.08em;}
.module-header h1{color:#fff; font-size:2rem; margin-top:6px;}
.module-header p{color:#DCE7F2; max-width:70ch; margin:14px 0 0;}

/* ---------- topic blocks ---------- */
.topic{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:32px 34px;
  margin-bottom:34px;
  scroll-margin-top:70px;
}
.topic h2{
  font-size:1.5rem; color:var(--brand-dark);
  border-bottom:3px solid var(--accent);
  padding-bottom:10px; margin-bottom:20px;
  display:flex; gap:12px; align-items:baseline;
}
.topic h2 .num{color:var(--accent); font-family:'Sora',sans-serif;}
.section-block{margin:22px 0;}
.section-block h3{
  font-size:1rem; color:var(--accent); text-transform:uppercase;
  letter-spacing:.03em; font-weight:700; margin-bottom:10px;
}
.section-block ul{margin:0; padding-left:1.2em;}
.section-block li{margin-bottom:8px;}
.figure{text-align:center; margin:20px 0;}
.figure img{margin:0 auto; max-width:520px; border-radius:10px;}
.figure figcaption{font-size:.85rem; color:var(--ink-soft); font-style:italic; margin-top:10px;}

.steps{list-style:none; margin:0; padding:0;}
.steps li{
  display:flex; gap:12px; margin-bottom:12px; align-items:flex-start;
}
.steps .step-num{
  flex:0 0 auto; background:var(--accent); color:#fff; font-weight:700;
  width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:.8rem;
}
.example-card{
  background:var(--accent-tint); border-left:4px solid var(--accent);
  border-radius:8px; padding:12px 16px; margin-bottom:10px;
}
.example-card b{color:var(--brand-dark);}
.assignment-box{
  background:var(--brand-tint); border-left:4px solid var(--brand);
  border-radius:8px; padding:16px 18px; font-style:italic; color:var(--brand-dark);
}
.wp-html-box{
  background:#F6F5F1; border:1px dashed #C9C2B4; border-radius:8px;
  padding:14px 18px; font-size:.95rem;
}
.wp-html-box p{margin:0 0 8px;}
.wp-html-box p:last-child{margin-bottom:0;}

/* ---------- index page ---------- */
.hero{
  background:linear-gradient(135deg,var(--brand) 0%,var(--brand-dark) 100%);
  color:#fff; padding:70px 40px; text-align:center;
}
.hero .kicker{color:#F2B79A; text-transform:uppercase; letter-spacing:.1em; font-weight:700; font-size:.85rem;}
.hero h1{color:#fff; font-size:2.6rem; margin:14px auto; max-width:22ch;}
.hero p{color:#DCE7F2; max-width:60ch; margin:0 auto;}
.module-grid{
  max-width:1100px; margin:-40px auto 60px; padding:0 24px;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:22px;
}
.module-card{
  background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius);
  padding:26px 24px; text-decoration:none; color:var(--ink);
  box-shadow:0 4px 18px rgba(30,63,99,.06);
  transition:transform .15s ease, box-shadow .15s ease;
  display:block;
}
.module-card:hover{transform:translateY(-3px); box-shadow:0 10px 24px rgba(30,63,99,.12);}
.module-card .m-num{
  display:inline-block; background:var(--accent-tint); color:var(--accent);
  font-weight:700; font-size:.8rem; padding:3px 10px; border-radius:20px; margin-bottom:12px;
}
.module-card h3{margin:0 0 8px; font-size:1.15rem; color:var(--brand-dark);}
.module-card p{margin:0; color:var(--ink-soft); font-size:.9rem;}
.module-card.locked{opacity:.55;}

.footer-note{
  text-align:center; color:var(--ink-soft); font-size:.85rem; padding:30px; max-width:700px; margin:0 auto;
}
