:root{
  --bg:#f3f5f9; --surface:#fff; --surface-2:#f7f9fc; --border:#e1e6ee;
  --text:#18212f; --muted:#5b6778; --faint:#8a95a6;
  --primary:#1f4e8c; --primary-600:#173e70; --primary-50:#e8f0fb;
  --teal:#0f766e; --teal-50:#e6f4f2;
  --amber:#9a5b00; --amber-50:#fff4e0; --rose:#b42346; --rose-50:#fdecef;
  --radius:14px; --shadow:0 1px 2px rgba(16,24,40,.06),0 4px 16px rgba(16,24,40,.06);
  --font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--text);font:16px/1.5 var(--font);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
.wrap{max-width:1180px;margin:0 auto;padding:0 16px}
:focus-visible{outline:3px solid #7aa7e8;outline-offset:2px}

/* Heading */
.hero{background:linear-gradient(135deg,#1f4e8c 0%,#2d7bb6 100%);color:#fff;padding:36px 0 64px}
.hero h1{margin:0;font-size:clamp(26px,4vw,38px);line-height:1.15;letter-spacing:-.02em}
main{margin-top:-40px;padding-bottom:48px}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}

/* Table (desktop) */
.sched{width:100%;border-collapse:collapse;font-size:15px}
.sched thead th{background:var(--surface-2);color:var(--muted);font-size:12.5px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:12px 14px;border-bottom:1px solid var(--border);line-height:1.3;vertical-align:bottom}
.sched td{padding:14px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.sched tbody tr:last-child td{border-bottom:0}
.week-row th{text-align:left;padding:18px 14px 8px;background:var(--surface);border-bottom:1px solid var(--border)}
.week-row th span{display:inline-block;background:var(--primary);color:#fff;font-size:13px;font-weight:700;letter-spacing:.03em;padding:4px 12px;border-radius:99px}
tbody.week+tbody.week .week-row th{border-top:6px solid var(--bg)}
tr.session:hover td{background:#fafcff}

.c-date{white-space:nowrap;font-weight:650;color:var(--text);width:1%}
.c-topic{min-width:220px}
.sess{display:block;font-size:12.5px;font-weight:700;color:var(--primary);letter-spacing:.02em}
.tname{display:block;font-weight:650;font-size:16px;line-height:1.3}
.c-read{white-space:nowrap;width:1%;font-variant-numeric:tabular-nums;color:var(--text)}
.na{color:var(--faint)}
.disc{display:inline-block;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:3px 10px;font-size:14px;white-space:nowrap}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:7px;text-decoration:none;font-weight:650;font-size:14.5px;border-radius:10px;padding:9px 13px;min-height:42px;white-space:nowrap;transition:background .15s,border-color .15s}
.btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.btn.dl{background:var(--primary);color:#fff}
.btn.dl:hover{background:var(--primary-600)}
.btn.dl .size{font-weight:500;font-size:12px;opacity:.8;margin-left:2px}
.btn.study{background:var(--teal-50);color:var(--teal);border:1px solid #b8e0da}
.btn.study:hover{background:#d5eeea}

/* Event rows */
tr.event td{background:var(--amber-50)}
tr.event.exam td{background:var(--rose-50)}
tr.event .c-topic{font-weight:700;color:var(--amber)}
tr.event.exam .c-topic{color:var(--rose)}
.event-badge{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#fff;margin-right:10px;font-size:14px;vertical-align:middle;box-shadow:0 0 0 1px rgba(0,0,0,.06)}

/* Note */
.note{margin-top:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;box-shadow:var(--shadow)}
.note h2{margin:0 0 4px;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.note p{margin:0;color:var(--text)}

/* Medium screens: allow wrapping */
@media (max-width:1240px){
  .btn .size{display:none}
}
@media (max-width:1020px){
  .c-topic{min-width:160px}
  .sched{font-size:14.5px}
  .btn{padding:8px 11px;font-size:14px}
}

/* Phones: each class becomes a card */
@media (max-width:960px){
  .hero{padding:26px 0 54px}
  main{margin-top:-34px}
  .card{background:transparent;border:0;box-shadow:none;overflow:visible}
  .sched,.sched tbody,.sched tr,.sched td,.sched th{display:block;width:auto}
  .sched thead{display:none}
  .week-row th{background:transparent;border:0;padding:14px 2px 8px}
  tbody.week+tbody.week .week-row th{border-top:0;padding-top:22px}
  tr.session,tr.event{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);margin-bottom:10px;overflow:hidden}
  .sched td{border:0;padding:6px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:0}
  .sched td[data-label]::before{content:attr(data-label);color:var(--muted);font-size:13px;font-weight:600;flex:none;max-width:48%}
  tr.session td.c-date{padding-top:12px;justify-content:flex-start;gap:8px;font-size:14px;color:var(--muted)}
  tr.session td.c-date::before{display:none}
  tr.session td.c-topic{display:block;padding-top:0;padding-bottom:8px;border-bottom:1px solid var(--border);margin-bottom:4px}
  tr.session td.c-topic::before{display:none}
  .tname{font-size:17px}
  tr.session td:last-child{padding-bottom:12px}
  .btn .size{display:inline}
  .btn{min-height:40px;padding:8px 12px}
  tr.event td{background:transparent}
  tr.event{background:var(--amber-50);border-color:#f2d9ab}
  tr.event.exam{background:var(--rose-50);border-color:#f3c3cf}
  tr.event td.c-date{padding-top:12px;justify-content:flex-start;font-size:14px}
  tr.event td.c-date::before{display:none}
  tr.event td.c-topic{display:flex;justify-content:flex-start;padding-bottom:12px}
  .c-read{white-space:normal}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{
  .hero{background:none;color:#000;padding:0 0 12px}
  main{margin-top:0}
  .btn{border:1px solid #999;background:none!important;color:#000!important}
  .card,.note{box-shadow:none}
}

/* Linked discussion questions */
a.disc-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--primary);background:var(--primary-50);border-color:#c9dbf3;font-weight:600;transition:background .15s}
a.disc-link:hover{background:#d8e6f8}
a.disc-link svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
