/* The public front — the catalog and the course pages.
   Same two families as the rest of the curriculum: Archivo for structure,
   Literata for prose. Rendered by deploy/worker/catalog.js. */

:root {
  --paper:      #FCFCFA;
  --panel:      #F4F4EF;
  --rule:       #E3E3DB;
  --ink:        #15181F;
  --ink-soft:   #474D59;
  --muted:      #7C818C;
  --cyan:       #0B7FB8;
  --cyan-wash:  #E8F4FB;
  --magenta:    #B3005B;

  --ui: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --prose: "Literata", Georgia, "Times New Roman", serif;
  --measure: 70ch;

  color-scheme: light dark;
}

@media (prefers-color-scheme: dark) {
  :root {
    --paper:     #15171C;
    --panel:     #1C1F26;
    --rule:      #2C313A;
    --ink:       #E8E8E3;
    --ink-soft:  #B4B9C2;
    --muted:     #848A95;
    --cyan:      #52BDEC;
    --cyan-wash: #14262F;
    --magenta:   #F0629E;
  }
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--prose);
  font-size: 17px;
  line-height: 1.6;
  padding-bottom: env(safe-area-inset-bottom, 0px);
}

img { max-width: 100%; }

/* ---------- header and footer ---------- */

.top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 18px 24px;
  padding-top: calc(18px + env(safe-area-inset-top, 0px));
  border-bottom: 1px solid var(--rule);
}
.top .mark {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cyan);
  text-decoration: none;
}
.top nav { display: flex; align-items: center; gap: 14px; }
.top .who {
  font-family: var(--ui);
  font-size: 12.5px;
  color: var(--muted);
  word-break: break-all;
}
a.ghost {
  font-family: var(--ui);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  text-decoration: none;
  border: 1px solid var(--rule);
  border-radius: 7px;
  padding: 7px 14px;
  white-space: nowrap;
}
a.ghost:hover { border-color: var(--cyan); color: var(--cyan); }

.foot {
  max-width: 980px;
  margin: 72px auto 0;
  padding: 24px;
  padding-bottom: calc(40px + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--rule);
  display: flex;
  flex-wrap: wrap;
  gap: 6px 22px;
  font-family: var(--ui);
  font-size: 13px;
  color: var(--muted);
}

/* ---------- page ---------- */

.wrap { max-width: 980px; margin: 0 auto; padding: 0 24px; }

.hero { padding: 56px 0 36px; max-width: var(--measure); }
h1 {
  font-family: var(--ui);
  font-size: clamp(34px, 6vw, 46px);
  font-weight: 700;
  letter-spacing: -0.028em;
  line-height: 1.08;
  margin: 0 0 14px;
}
h1 .zh, h2 .zh {
  font-size: 0.55em;
  font-weight: 500;
  color: var(--muted);
  letter-spacing: 0;
}
p.lede {
  font-size: 19px;
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
}

.facts {
  font-family: var(--ui);
  font-size: 13px;
  color: var(--muted);
  display: flex;
  flex-wrap: wrap;
  gap: 4px 20px;
  margin: 14px 0;
}

/* ---------- the catalog rows ---------- */

.rows { display: grid; gap: 14px; padding-bottom: 20px; }

a.row {
  display: grid;
  grid-template-columns: 56px 1fr 24px;
  align-items: start;
  gap: 20px;
  text-decoration: none;
  color: inherit;
  background: var(--panel);
  border: 1px solid var(--rule);
  border-radius: 10px;
  padding: 24px 22px;
}
a.row:hover { border-color: var(--cyan); }
a.row:hover .rowgo { color: var(--cyan); transform: translateX(3px); }

.rownum {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 22px;
  font-weight: 700;
  color: var(--cyan);
  line-height: 1.2;
}
.rowbody h2 {
  font-family: var(--ui);
  font-size: 22px;
  font-weight: 650;
  letter-spacing: -0.015em;
  margin: 0 0 8px;
}
.rowbody p { margin: 0; color: var(--ink-soft); }
.rowbody .facts { margin: 14px 0 0; }
.rowgo {
  font-family: var(--ui);
  font-size: 20px;
  color: var(--muted);
  transition: transform .14s ease, color .14s ease;
  align-self: center;
}
p.none { color: var(--muted); }

@media (max-width: 620px) {
  a.row { grid-template-columns: 1fr; gap: 10px; padding: 20px 18px; }
  .rowgo { display: none; }
  .rownum { font-size: 15px; }
}

/* ---------- a course page ---------- */

a.back {
  display: inline-block;
  margin: 28px 0 0;
  font-family: var(--ui);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--cyan);
  text-decoration: none;
}
a.back:hover { text-decoration: underline; }

.coursehead { padding: 20px 0 8px; max-width: var(--measure); }
.chip {
  display: inline-block;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: var(--ink);
  color: var(--paper);
  border-radius: 4px;
  padding: 4px 8px;
  margin-bottom: 16px;
}

.ctabox { margin: 32px 0 8px; }
a.cta {
  display: inline-block;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--ui);
  font-size: 16px;
  font-weight: 650;
  text-decoration: none;
  border-radius: 9px;
  padding: 14px 28px;
}
a.cta:hover { background: var(--cyan); }
p.ctanote {
  font-family: var(--ui);
  font-size: 13px;
  color: var(--muted);
  margin: 12px 0 0;
  max-width: 46ch;
}

section { padding: 40px 0 0; max-width: var(--measure); }
section h2 {
  font-family: var(--ui);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--ink);
  margin: 0 0 18px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rule);
}
section h3 {
  font-family: var(--ui);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 8px;
}

ul.ticks { list-style: none; margin: 0; padding: 0; }
ul.ticks li {
  position: relative;
  padding-left: 26px;
  margin-bottom: 10px;
  color: var(--ink-soft);
}
ul.ticks li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 0.62em;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--cyan-wash);
  border: 2px solid var(--cyan);
}

.builds, .kit { display: grid; gap: 22px; }
@media (min-width: 680px) { .builds, .kit { grid-template-columns: 1fr 1fr; } }
.build p { margin: 0; color: var(--ink-soft); }

ol.sessions { list-style: none; margin: 0; padding: 0; counter-reset: none; }
ol.sessions li {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 13px 0;
  border-bottom: 1px solid var(--rule);
}
ol.sessions li:last-child { border-bottom: 0; }
ol.sessions .snum {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--cyan);
  flex: none;
  min-width: 2.2em;
}
