

    :root {
      --text: #181818;
      --muted: #616161;
      --line: #e2e2e2;
      --soft: #f7f7f7;
      --badge: #f0f2f5;
      --link: #214c8a;
      --max: 1040px;
      --radius: 0.9rem;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
    body {
      margin: 0;
      color: var(--text);
      background: white;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      font-size: 17px;
      line-height: 1.55;
    }
    a { color: var(--link); }
    a:hover { text-decoration-thickness: 2px; }
    .skip-link {
      position: absolute;
      left: -999px;
      top: 0;
      background: white;
      padding: .6rem .8rem;
      z-index: 10;
    }
    .skip-link:focus { left: .75rem; top: .75rem; }
    .page {
      max-width: var(--max);
      margin: 0 auto;
      padding: 32px 22px 80px;
    }
    .course-header {
      padding: 18px 0 30px;
      border-bottom: 1px solid var(--line);
    }
    .eyebrow {
      margin: 0 0 .35rem;
      color: var(--muted);
      font-size: .98rem;
      letter-spacing: .02em;
    }
    h1 {
      margin: 0 0 .7rem;
      max-width: 900px;
      font-size: clamp(2.25rem, 5.6vw, 3.8rem);
      line-height: 1;
      letter-spacing: -.035em;
    }
    .course-meta {
      margin: 0;
      max-width: 780px;
      color: var(--muted);
      font-size: 1.1rem;
    }
    .top-nav {
      display: flex;
      flex-wrap: wrap;
      gap: .75rem;
      margin: 1.45rem 0 0;
      font-size: 1.08rem;
      font-weight: 800;
    }
    .top-nav a {
      display: inline-flex;
      align-items: center;
      border: 2px solid var(--text);
      border-radius: 999px;
      background: var(--text);
      color: white;
      padding: .54rem 1.04rem;
      text-decoration: none;
      letter-spacing: .01em;
      box-shadow: 0 2px 0 rgba(0, 0, 0, .14);
    }
    .top-nav a:hover,
    .top-nav a:focus {
      background: var(--link);
      border-color: var(--link);
      text-decoration: none;
    }
    h2 {
      font-size: clamp(1.85rem, 4.2vw, 2.45rem);
      line-height: 1.08;
      margin: 2.8rem 0 .9rem;
      letter-spacing: -.025em;
    }
    h3 {
      font-size: 1.35rem;
      line-height: 1.2;
      margin: 1.3rem 0 .35rem;
      letter-spacing: -.01em;
    }
    h4 {
      font-size: 1.06rem;
      margin: 0 0 .25rem;
    }
    .section-intro,
    .lede {
      max-width: 880px;
      margin: .25rem 0 1rem;
    }
    .lede { color: var(--muted); }
    .course-details {
      max-width: 820px;
      margin: 1rem 0 1.6rem;
      border-top: 1px solid var(--line);
    }
    .detail-row {
      display: grid;
      grid-template-columns: 9.5rem minmax(0, 1fr);
      gap: 1rem;
      padding: .55rem 0;
      border-bottom: 1px solid var(--line);
    }
    .detail-row dt {
      color: var(--muted);
      font-weight: 700;
    }
    .detail-row dd {
      margin: 0;
    }
    .material-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(235px, 1fr));
      gap: .75rem;
      margin: .75rem 0 1.3rem;
    }
    .material-card,
    .topic-card,
    .arc-card {
      border: 1px solid var(--line);
      border-radius: .75rem;
      background: white;
      padding: .8rem .9rem;
    }
    .material-card p,
    .topic-card p,
    .arc-card p { margin: .25rem 0 0; color: var(--muted); }
    .arc-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
      gap: .75rem;
      margin: .85rem 0 1.3rem;
    }
    .module {
      border-top: 2px solid var(--text);
      padding-top: 1rem;
      margin-top: 1.4rem;
    }
    .module-title {
      margin-top: 0;
      font-size: 1.5rem;
    }
    .topic-card { margin: .75rem 0; }
    .topic-head {
      display: flex;
      flex-wrap: wrap;
      align-items: baseline;
      gap: .4rem .7rem;
    }
    .topic-number {
      color: var(--muted);
      font-weight: 700;
      font-size: .95rem;
    }
    .buttons {
      display: flex;
      flex-wrap: wrap;
      gap: .4rem;
      margin: .55rem 0 .4rem;
    }
    .badge {
      display: inline-block;
      background: var(--badge);
      border: 1px solid var(--line);
      border-radius: .4rem;
      line-height: 1.35;
      padding: .2rem .56rem;
      font-size: .9rem;
      color: var(--text);
      font-weight: 650;
      text-decoration: none;
      transition: border-color .12s ease, box-shadow .12s ease, transform .12s ease;
    }
    .badge:hover,
    .badge:focus {
      border-color: var(--link);
      box-shadow: 0 0 0 2px rgba(33, 76, 138, .12);
      text-decoration: none;
    }
    .badge.notes {
      background: #f3f3f3;
      border-color: #dedede;
      color: #595959;
    }
    .badge.assignment {
      background: #eef3fb;
      border-color: #d5e0f0;
      color: #315f98;
    }
    .badge.slides {
      background: #f1eefb;
      border-color: #ddd6ef;
      color: #5b438f;
    }
    .badge.exercises {
      background: #eef6f0;
      border-color: #d4e6d8;
      color: #2f6841;
    }
    .badge.reference {
      background: #f7eeee;
      border-color: #e6d5d5;
      color: #6b2525;
    }
    .ref-list {
      margin: .45rem 0 0;
      padding-left: 1.15rem;
      color: var(--muted);
    }
    .ref-list li { margin: .25rem 0; }
    .ref-list a { font-weight: 600; }
    .site-footer {
      margin-top: 3rem;
      padding-top: 1.2rem;
      border-top: 1px solid var(--line);
      color: var(--muted);
      font-size: .94rem;
    }
    @media (max-width: 620px) {
      body { font-size: 16px; }
      .page { padding-top: 22px; }
      .detail-row { grid-template-columns: 1fr; gap: .05rem; }
    }

  