:root{
  --paper:#FFFFFF; --card:#F5FAFC; --ink:#14181B; --ink-soft:#4C565B;
  --rule:#E4EAEC; --rule-strong:#CBD5D8;
  --blue:#0085AD; --blue-dark:#00647F; --blue-tint:#E4F1F6;
  --kraft:#7C8A8F;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
  line-height:1.6;font-size:17px;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:940px;margin:0 auto;padding:0 22px}

/* topbar */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:22px 0;border-bottom:3px solid var(--blue)}
.brand{font-family:var(--mono);font-weight:700;text-transform:uppercase;
  letter-spacing:.12em;font-size:13px;text-decoration:none}
.brand span{color:var(--blue)}
.topbar__nav{display:flex;flex-wrap:wrap;gap:18px;align-items:center}
.topbar__link{font-family:var(--mono);font-size:12px;text-decoration:none;color:var(--ink-soft)}
.topbar__link:hover{color:var(--blue)}

/* hero */
.hero{padding:56px 0 12px}
.hero__eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.2em;
  font-size:12px;color:var(--blue);margin:0 0 18px;font-weight:700}
.hero__title{font-size:clamp(30px,6vw,52px);line-height:1.02;margin:0 0 20px;
  font-weight:800;letter-spacing:-.02em;text-transform:uppercase;color:var(--blue)}
.hero__sub{max-width:60ch;color:var(--ink-soft);font-size:18px;margin:0}

/* controls */
.controls{margin:34px 0 6px;position:sticky;top:0;background:var(--paper);
  padding:14px 0;z-index:5;border-bottom:1px solid var(--rule)}
.search{width:100%;padding:15px 18px;font-size:17px;font-family:var(--sans);
  background:var(--card);border:2px solid var(--ink);border-radius:0;outline:none}
.search:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,133,173,.22)}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.filter{font-family:var(--mono);font-size:12px;letter-spacing:.02em;
  padding:7px 12px;background:transparent;border:1px solid var(--rule-strong);
  color:var(--ink-soft);cursor:pointer;border-radius:0}
.filter:hover{border-color:var(--blue);color:var(--blue)}
.filter.is-active{background:var(--blue);color:#fff;border-color:var(--blue)}

.count{font-family:var(--mono);font-size:12px;color:var(--kraft);margin:16px 0 0}

/* grid */
.grid{list-style:none;margin:14px 0 0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0;
  border-top:1px solid var(--rule)}
.card{border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}
.card a{display:block;padding:20px 18px;text-decoration:none;height:100%;
  transition:background .12s ease}
.card a:hover{background:var(--card)}
.card__head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.card__term{font-weight:700;font-size:19px;letter-spacing:-.01em}
.card__def{margin:0 0 14px;color:var(--ink-soft);font-size:15px;line-height:1.5}
.card__cat{font-family:var(--mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.1em;color:var(--kraft)}

.chip{display:inline-flex;align-items:center;font-family:var(--mono);font-weight:700;
  font-size:12px;letter-spacing:.04em;padding:3px 8px;background:var(--ink);
  color:#fff;border-radius:0}
.chip--code{background:var(--blue);color:#fff}

/* term page */
.term{padding:52px 0 8px;max-width:70ch}
.term__label{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.term__cat{font-family:var(--mono);font-size:12px;text-transform:uppercase;
  letter-spacing:.16em;color:var(--kraft)}
.term__code{font-family:var(--mono);font-weight:700;font-size:13px;
  padding:4px 10px;background:var(--blue);color:#fff}
.term__title{font-size:clamp(34px,7vw,60px);line-height:1.02;margin:0 0 18px;
  font-weight:800;letter-spacing:-.025em;text-transform:uppercase;color:var(--blue)}
.term__lead{font-size:21px;line-height:1.45;color:var(--ink);margin:0 0 34px;
  padding-bottom:28px;border-bottom:3px solid var(--blue);font-weight:500}
.term__body p{margin:0 0 20px;font-size:18px}

.example{margin:30px 0;padding:22px 24px;background:var(--blue-tint);
  border-left:4px solid var(--blue)}
.example__label{display:block;font-family:var(--mono);font-size:11px;
  text-transform:uppercase;letter-spacing:.18em;color:var(--blue-dark);margin-bottom:8px;font-weight:700}
.example p{margin:0;font-size:17px;color:var(--ink-soft)}

.meta-row{display:flex;gap:12px;flex-wrap:wrap;margin:26px 0 0;
  padding-top:20px;border-top:1px solid var(--rule)}
.meta-row__key{font-family:var(--mono);font-size:12px;text-transform:uppercase;
  letter-spacing:.12em;color:var(--kraft);min-width:90px}
.meta-row__val{color:var(--ink-soft);font-size:15px}

.academy-link{display:inline-block;margin-top:26px;font-family:var(--mono);
  font-size:13px;text-decoration:none;color:var(--blue-dark);
  border-bottom:1px solid var(--blue)}
.academy-link:hover{color:var(--ink)}

/* related */
.related{margin:48px 0 0;padding-top:28px;border-top:3px solid var(--blue)}
.related__title{font-family:var(--mono);font-size:12px;text-transform:uppercase;
  letter-spacing:.16em;color:var(--kraft);margin:0 0 16px;font-weight:700}
.related__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.related__list a{display:inline-flex;align-items:center;gap:10px;
  padding:9px 14px 9px 9px;background:var(--card);border:1px solid var(--rule-strong);
  text-decoration:none;font-weight:600;font-size:15px}
.related__list a:hover{border-color:var(--blue);color:var(--blue-dark)}

/* footer */
.foot{display:flex;justify-content:space-between;align-items:center;gap:16px;
  margin:64px 0 40px;padding-top:22px;border-top:1px solid var(--rule);
  font-family:var(--mono);font-size:12px;color:var(--kraft)}
.foot a{text-decoration:none;color:var(--ink-soft)}
.foot a:hover{color:var(--blue)}

.empty{text-align:center;color:var(--kraft);padding:50px 0;font-size:16px}

@media (max-width:560px){
  body{font-size:16px}
  .grid{grid-template-columns:1fr}
  .card{border-right:none}
  .hero{padding:40px 0 8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
