:root{
  --ink:#21181d;
  --ink-soft:#4d4448;
  --paper:#f8f3eb;
  --panel:#fffdf9;
  --plum:#4d1d3b;
  --oxblood:#74233b;
  --gold:#aa8548;
  --gold-soft:#d7c29a;
  --muted:#6f6669;
  --line:#d8cec2;
  --line-dark:#b9aa9b;
  --soft:#efe7dd;
  --focus:#21181d;
  --max:1120px;
  --reading:760px;
}
*{box-sizing:border-box}
html{font-family:Arial,"Helvetica Neue",sans-serif;background:var(--paper);color:var(--ink);scroll-behavior:auto}
body{margin:0;min-height:100vh;background:
  radial-gradient(circle at 92% 2%,rgba(170,133,72,.08),transparent 23rem),
  var(--paper)}
a{color:inherit}
img,svg{max-width:100%;height:auto}
.skip{
  position:absolute;left:-9999px;top:.75rem;z-index:9999;
  background:var(--panel);color:var(--ink);padding:.8rem 1rem;border:2px solid var(--ink)
}
.skip:focus{left:.75rem}
.site-header,header{
  border-bottom:1px solid var(--line);
  background:rgba(248,243,235,.98)
}
.wrap{max-width:var(--max);margin:auto;padding:0 1.4rem}
.masthead,.brand{
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  min-height:88px
}
.wordmark{
  display:inline-flex;align-items:baseline;gap:.72rem;text-decoration:none;white-space:nowrap
}
.wordmark-title{
  font:700 .88rem/1 Arial,"Helvetica Neue",sans-serif;
  letter-spacing:.22em;color:var(--ink)
}
.wordmark-sub{
  font:400 1.25rem/1 Georgia,"Times New Roman",serif;
  color:var(--oxblood);letter-spacing:.02em
}
.brand strong{
  font:700 .88rem/1.2 Arial,"Helvetica Neue",sans-serif;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ink)
}
.toplinks{
  display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem 1.15rem;
  align-items:center;font:600 .78rem/1.25 Arial,"Helvetica Neue",sans-serif
}
.toplinks a{
  display:inline-flex;align-items:center;min-height:44px;text-decoration:none;padding:.55rem 0;border-bottom:1px solid transparent
}
.toplinks a:hover{border-color:var(--gold)}
.toplinks a:focus-visible,.wordmark:focus-visible{
  outline:3px solid var(--focus);outline-offset:4px
}
.routebar{
  border-top:1px solid rgba(216,206,194,.75);
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  min-height:42px;color:var(--muted);font:700 .72rem/1.2 Arial,sans-serif;
  letter-spacing:.09em;text-transform:uppercase
}
.routebar a{text-decoration:none;border-bottom:1px solid var(--gold)}
.progress-wrap{padding:.65rem 0 .9rem;border-top:1px solid rgba(216,206,194,.75)}
.progress-label{
  display:flex;justify-content:space-between;gap:1rem;margin-bottom:.45rem;
  color:var(--muted);font:700 .68rem/1.2 Arial,sans-serif;text-transform:uppercase;letter-spacing:.09em
}
.progress{height:3px;background:#e5dbcf;overflow:hidden}
.progress span{display:block;height:100%;background:var(--gold)}

main{
  max-width:var(--reading);margin:0 auto;padding:4.6rem 1.4rem 6rem
}
main.wide{max-width:var(--max)}
.kicker,.meta{
  font:700 .72rem/1.25 Arial,"Helvetica Neue",sans-serif;
  text-transform:uppercase;letter-spacing:.14em;color:var(--oxblood)
}
h1,h2,h3{
  font-family:Georgia,"Times New Roman",serif;color:var(--ink);
  text-wrap:balance
}
h1{
  font-size:clamp(2.7rem,7vw,5.6rem);line-height:.96;
  margin:.55rem 0 1.35rem;font-weight:400;letter-spacing:-.035em
}
h2{
  font-size:clamp(1.65rem,4vw,2.55rem);line-height:1.08;
  margin:2.4rem 0 1rem;font-weight:400;letter-spacing:-.02em
}
h3{font-size:1.35rem;line-height:1.18;font-weight:400}
main>h1::after{
  content:"";display:block;width:62px;height:2px;background:var(--gold);margin-top:1.25rem
}
p,li{font-size:1.06rem;line-height:1.68}
.lede{
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(1.25rem,2.6vw,1.52rem);line-height:1.47;
  color:var(--ink-soft)
}
.small{font:400 .88rem/1.55 Arial,sans-serif;color:var(--muted)}

.card,.feedback,.notice,.lawbox,.sourcebox,.callout{
  margin:1.55rem 0;padding:1.4rem 1.45rem;background:var(--panel);
  border:1px solid var(--line)
}
.card{border-left:2px solid var(--gold)}
.feedback{
  border:0;border-top:2px solid var(--gold);border-bottom:1px solid var(--line);
  background:rgba(255,253,249,.78);padding:1.25rem 0 1.35rem
}
.feedback strong{
  display:block;margin-bottom:.45rem;
  font:700 .76rem/1.2 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;
  color:var(--oxblood)
}
.notice{
  background:transparent;border:0;border-left:2px solid var(--gold);
  padding:.2rem 0 .2rem 1rem;color:var(--ink-soft);
  font-size:.96rem;line-height:1.55
}
.lawbox{background:var(--soft)}
.sourcebox{background:rgba(255,253,249,.62)}
.callout{border:0;border-left:3px solid var(--oxblood);background:transparent}

.choice-grid{display:grid;gap:.75rem;margin:1.7rem 0 1.3rem}
.choice{
  display:block;text-decoration:none;background:rgba(255,253,249,.82);
  border:1px solid var(--line);padding:1rem 1.15rem;
  min-height:54px;font:400 1rem/1.48 Arial,sans-serif;
  transition:border-color .12s ease,background .12s ease,transform .12s ease
}
.choice strong{color:var(--oxblood);margin-right:.25rem}
.choice:hover{border-color:var(--gold);background:var(--panel)}
.choice:focus-visible{
  border-color:var(--focus);outline:3px solid var(--focus);outline-offset:3px
}

.primary,.secondary{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;text-decoration:none;
  font:700 .82rem/1.2 Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;
  padding:.9rem 1.18rem;margin:.8rem .55rem .2rem 0
}
.primary{background:var(--plum);color:#fff;border:1px solid var(--plum)}
.primary:hover{background:var(--oxblood);border-color:var(--oxblood)}
.secondary{border:1px solid var(--line-dark);background:transparent}
.secondary:hover{border-color:var(--ink)}
.primary:focus-visible,.secondary:focus-visible,summary:focus-visible{
  outline:3px solid var(--focus);outline-offset:3px
}

.teacher{margin-top:2.7rem;border-top:1px solid var(--line);padding-top:1.25rem}
details{
  background:transparent;border:0;padding:0
}
summary{
  min-height:48px;display:flex;align-items:center;cursor:pointer;
  font:700 .78rem/1.2 Arial,sans-serif;letter-spacing:.11em;text-transform:uppercase;
  color:var(--oxblood)
}
summary::marker{color:var(--gold)}
.teacher-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:1.1rem 1.4rem;
  margin:1rem 0 0;padding:1.25rem 0 0;border-top:1px solid var(--line)
}
.teacher-grid div{font-size:.95rem;line-height:1.5}
.teacher-grid b{
  display:block;margin-bottom:.3rem;
  font:700 .72rem/1.25 Arial,sans-serif;text-transform:uppercase;
  letter-spacing:.09em;color:var(--oxblood)
}

nav.lesson-nav{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  border-top:1px solid var(--line);padding-top:1.5rem;margin-top:3rem
}

.stage-list{display:grid;gap:0;margin:1.6rem 0}
.stage-link{
  display:grid;grid-template-columns:3.2rem 1fr;gap:1rem;align-items:start;
  text-decoration:none;border-top:1px solid var(--line);padding:1.15rem .1rem
}
.stage-link:last-child{border-bottom:1px solid var(--line)}
.stage-link:hover .ttl{color:var(--oxblood)}
.stage-link .num{
  font:700 .73rem/1.25 Arial,sans-serif;color:var(--oxblood);letter-spacing:.12em;padding-top:.2rem
}
.stage-link .ttl{font:400 1.3rem/1.2 Georgia,serif}

.route-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.45rem;margin:2rem 0 2.7rem
}
.route-card{
  display:block;text-decoration:none;background:transparent;
  border:0;border-top:2px solid var(--gold);padding:1.15rem .15rem 1.3rem;
  min-height:170px
}
.route-card strong{
  display:block;font:700 .7rem/1.2 Arial,sans-serif;color:var(--oxblood);
  text-transform:uppercase;letter-spacing:.13em;margin-bottom:.8rem
}
.route-card span{
  display:block;font:400 1.65rem/1.08 Georgia,serif;color:var(--ink);margin-bottom:.65rem
}
.route-card p{font-size:.96rem;line-height:1.55;color:var(--ink-soft)}
.route-card:hover span{color:var(--oxblood)}

.badge{
  display:inline-block;font:700 .68rem/1.2 Arial,sans-serif;text-transform:uppercase;
  letter-spacing:.09em;border:1px solid var(--line-dark);padding:.38rem .56rem;
  margin:.2rem .35rem .2rem 0;background:transparent
}

.steps{counter-reset:step;list-style:none;padding:0}
.steps li{counter-increment:step;border-top:1px solid var(--line);padding:1rem 0}
.steps li:before{
  content:counter(step,decimal-leading-zero);
  font:700 .7rem/1 Arial,sans-serif;color:var(--oxblood);
  letter-spacing:.08em;margin-right:.9rem
}

.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5rem 0}
.table{
  width:100%;border-collapse:collapse;margin:0;font-family:Arial,sans-serif;
  min-width:600px
}
.table th,.table td{
  border-top:1px solid var(--line);padding:.85rem .75rem;text-align:left;vertical-align:top;line-height:1.5
}
.table th{
  width:8rem;font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--oxblood)
}

footer{
  border-top:1px solid var(--line);color:var(--muted);
  font:400 .78rem/1.55 Arial,sans-serif;background:rgba(255,253,249,.38)
}
.footer-inner{
  max-width:var(--max);margin:auto;padding:1.6rem 1.4rem 2rem;
  display:flex;justify-content:space-between;gap:1.5rem;align-items:flex-start
}
.footer-brand{
  font:700 .72rem/1.3 Arial,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--ink)
}
.footer-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem 1rem}
.footer-links a{display:inline-flex;align-items:center;min-height:36px;text-decoration:none;border-bottom:1px solid var(--gold)}

.sr-only{
  position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important
}

@media(max-width:820px){
  .masthead,.brand{align-items:flex-start;flex-direction:column;justify-content:center;padding:1rem 0;min-height:auto}
  .toplinks{justify-content:flex-start;gap:.25rem .9rem}
  .route-grid{grid-template-columns:1fr}
  .route-card{min-height:0}
  .teacher-grid{grid-template-columns:1fr}
  .footer-inner{flex-direction:column}
  .footer-links{justify-content:flex-start}
}
@media(max-width:620px){
  .wrap{padding:0 1rem}
  main{padding:3.25rem 1rem 4.5rem}
  h1{font-size:clamp(2.5rem,14vw,4.1rem)}
  .wordmark{gap:.45rem}
  .wordmark-title{font-size:.8rem}
  .wordmark-sub{font-size:1.05rem}
  .toplinks{font-size:.72rem}
  .routebar{align-items:flex-start;flex-direction:column;justify-content:center;padding:.6rem 0}
  nav.lesson-nav{flex-direction:column-reverse;align-items:stretch}
  .primary,.secondary{width:100%;margin:.35rem 0}
  .choice{padding:1rem;min-height:56px}
  .table{font-size:.88rem}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important;transition:none!important}
}
@media print{
  header,footer,.lesson-nav,.skip{display:none!important}
  body,html{background:#fff}
  main{max-width:none;padding:0}
  a{text-decoration:none}
}

/* Teacher View: compact four-part implementation panel */
.teacher details{margin-top:2rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:transparent}
.teacher summary{cursor:pointer;list-style:none;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 0;font:700 .76rem/1.2 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--plum)}
.teacher summary::-webkit-details-marker{display:none}
.teacher summary::after{content:"+";font:400 1.25rem/1 Georgia,serif;color:var(--gold)}
.teacher details[open] summary::after{content:"–"}
.teacher summary:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
.teacher-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2rem;padding:.25rem 0 1.6rem}
.teacher-group{padding:1.15rem 0;border-top:1px solid var(--line)}
.teacher-group h3{margin:0 0 .8rem;font:700 .72rem/1.2 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--oxblood)}
.teacher-group p{margin:.55rem 0;font-size:.93rem;line-height:1.55;color:var(--ink-soft)}
.teacher-group p b{color:var(--ink);font-weight:700}
@media(max-width:620px){.teacher-grid{grid-template-columns:1fr;gap:0}.teacher-group{padding:1rem 0}}
