/* Site theme (chosen by the PI, 2026-10-11): "Institutional" — crisp white, bold grotesque headlines, serif reading text, Maryland-red accent.
   Linked LAST on every page so it overrides site.css and page CSS. Fonts are loaded in each page's <head>.
   This is the only file allowed to hold hex colors; page stylesheets use the tokens below. */
:root, :root[data-theme] {
  --bg: #ffffff; --bg-2: #f4f3f0; --surface: #ffffff; --surface-2: #f6f5f2; --surface-3: #ecebe7;
  --line: #e2e0db; --line-strong: #1a1a1a; --glass: #ffffff;
  /* --text-3 is #6b6b6b (not #767676) so small grey labels stay ≥ 4.5:1 on white AND on --bg-2 */
  --text: #141414; --text-2: #454545; --text-3: #6b6b6b;
  /* --gold is a deep bronze: the old #b8860b was 3.2:1 on white and failed AA as text */
  --accent: #c8102e; --accent-2: #141414; --accent-3: #4b3a8c; --gold: #86640c;
  --accent-glow: transparent; --accent-2-glow: transparent; --on-accent: #ffffff;
  /* topic colors: every one ≥ 4.5:1 on white and on --bg-2 */
  --t-deep-earth: #a94c0c; --t-mars: #c8102e; --t-moon: #6b6b6b; --t-icy-worlds: #1f6aa5;
  --t-lithosphere: #2e7d4f; --t-earthquakes: #86640c; --t-methods: #4b3a8c; --t-humanitarian: #a3366b;
  --font-display: "Libre Franklin", "Helvetica Neue", Arial, sans-serif; --font-body: "Source Serif 4", Georgia, serif; --font-mono: "Libre Franklin", "Helvetica Neue", Arial, sans-serif; --font-code: "Source Code Pro", ui-monospace, monospace;
  --r-sm: 0; --r: 0; --r-lg: 0; --shadow: none;
  --rule: 2px solid var(--text);      /* bold rule: section and block tops */
  --hair: 1px solid var(--line);      /* hairline: row separators */
  --on-dark: #ffffff; --on-dark-2: #cfcfcf; --on-dark-3: #9a9a9a; --dark-line: #333333;
  color-scheme: light;
}
body { font-size: 18px; line-height: 1.62; }
h1, h2, h3 { font-weight: 800; letter-spacing: -0.03em; line-height: 1.02; }
h1 { font-size: clamp(2.6rem, 5.6vw, 4.6rem); }
h2 { font-size: clamp(1.9rem, 3.4vw, 2.8rem); line-height: 1.06; }
h3 { font-weight: 700; letter-spacing: -0.015em; line-height: 1.18; }
h4 { font-family: var(--font-display); font-weight: 700; }
.display-em, em.display-em { color: var(--accent); font-style: normal; }
.gradient-text { background: none; -webkit-background-clip: initial; background-clip: initial; color: var(--accent); }
a { color: var(--text); text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
a:hover { color: var(--accent); }
a.card, .btn, .nav-links a, .brand, .chip, .site-footer a, .rv-tab, .cc-name a { text-decoration: none; }
/* block links (cards, rows, portraits) never underline everything inside them */
a:has(:is(h2, h3, h4, p, div, img, figure, ul, ol)) { text-decoration: none; }
.rs-jump a, .rs-toc a, .cv-nav a, .rs-pn a, .pub-btn, .m-link, .rv-paper, .press__mark, .story, .scroll-cue,
.alumni-strip__count, .pillar--more, .jn-fs, .jn-q-own, .honor, .person, .news-item, .hl-card, .rs-theme { text-decoration: none; }
.lead { color: var(--text-2); }
.mono { font-family: var(--font-display); font-size: .86em; }
code, kbd, samp, pre, .code { font-family: var(--font-code); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 0; }

.eyebrow { font: 700 .78rem/1 var(--font-display); letter-spacing: .1em; text-transform: uppercase; color: var(--accent); padding-top: 12px; border-top: 3px solid var(--accent); }
.eyebrow::before { display: none; }
.section-head p.eyebrow { font-size: .78rem; }

/* cards are ruled blocks: a bold top rule, no box, no fill, no inset */
.card { background: transparent; border: 0; border-top: var(--rule); border-radius: 0; box-shadow: none; padding: 20px 0 0; }
a.card:hover, .card.hoverable:hover { transform: none; border-top-color: var(--accent); }
.section.alt { background: var(--bg-2); border-color: transparent; }
.btn { border-radius: 0; font-family: var(--font-display); font-weight: 700; border-width: 2px; border-color: var(--text); letter-spacing: 0; }
.btn:hover { transform: none; }
.btn-primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent); box-shadow: none; }
.btn-primary:hover { background: var(--text); border-color: var(--text); color: var(--on-accent); box-shadow: none; }
.btn-ghost { background: transparent; }
.btn-ghost:hover { background: var(--text); color: var(--on-accent); border-color: var(--text); }

/* chips are plain rectangular tags: dark text, a small square in the topic color */
.chip { --c: var(--text-3); border-radius: 0; padding: .3em .62em; font: 600 .74rem/1.35 var(--font-display); letter-spacing: .01em;
  color: var(--text-2); background: transparent; border: 1px solid var(--line); }
.chip::before { border-radius: 0; width: 7px; height: 7px; background: var(--c); }
a.chip:hover, button.chip:hover { color: var(--text); border-color: var(--text); background: transparent; }
button.chip[aria-pressed="true"], button.chip[aria-pressed="true"]:hover { background: var(--text); border-color: var(--text); color: var(--on-dark); }
button.chip[aria-pressed="true"]::before { background: var(--c); box-shadow: 0 0 0 1px var(--on-dark); }

.site-nav, .site-nav.scrolled, .site-nav.solid { background: var(--bg); backdrop-filter: none; -webkit-backdrop-filter: none; border-bottom: 1px solid var(--line); }
.site-nav::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--accent); }
.brand { font-family: var(--font-display); font-weight: 800; letter-spacing: -0.03em; font-size: 1.3rem; }
.brand small { font-family: var(--font-display); font-weight: 600; letter-spacing: .06em; }
.brand svg { color: var(--accent); }
.nav-links a { font-family: var(--font-display); font-weight: 600; color: var(--text); border-radius: 0; }
.nav-links a:hover, .nav-links a[aria-current="page"] { background: transparent; color: var(--accent); }
.nav-links a[aria-current="page"] { box-shadow: inset 0 -2px 0 var(--accent); }
.nav-links a.nav-cta { border-radius: 0; background: var(--accent); color: var(--on-accent); box-shadow: none; }
.nav-links a.nav-cta:hover { background: var(--text); color: var(--on-accent); filter: none; }
@media (max-width: 1020px) { .nav-links a[aria-current="page"] { box-shadow: inset 3px 0 0 var(--accent); } }
#theme-toggle { display: none; }
.icon-btn { border-radius: 0; }

.page-hero::before, .page-hero::after { display: none; }
.page-hero { border-bottom: 1px solid var(--line); }
.seismo-line { color: var(--text-3); opacity: .35; }
/* calmer underlines inside link-dense lists and tables */
li a, td a, .cc-papers a, .pub-title a, .dir-table a { text-decoration-color: color-mix(in srgb, var(--accent) 35%, transparent); text-decoration-thickness: 1px; }
li a:hover, td a:hover, .cc-papers a:hover, .pub-title a:hover, .dir-table a:hover { text-decoration-color: var(--accent); }
.stat .num { font-family: var(--font-display); font-weight: 800; letter-spacing: -0.04em; }
.stat .label { font-family: var(--font-display); font-weight: 600; letter-spacing: .06em; color: var(--text-3); }

/* people: square portraits and flat initials, as in a faculty directory */
.avatar { border-radius: 0; }
.avatar-fallback { background: var(--surface-3); color: var(--text-2); font-family: var(--font-display); font-weight: 700; }

.pub .pub-year { font-family: var(--font-display); font-weight: 700; }
.kbd { border-radius: 0; font-family: var(--font-code); }
body.show-verify .verify-flag { border-radius: 0; }

/* scroll reveal: a quiet fade, no slide or scale */
[data-reveal], [data-reveal="scale"] { transform: none; transition: opacity .7s var(--ease); transition-delay: var(--d, 0ms); }

.site-footer { background: var(--text); color: var(--on-dark-2); border-top: 0; }
.site-footer a, .site-footer .brand { color: var(--on-dark); }
.site-footer a:hover { color: var(--on-dark); text-decoration: underline; text-decoration-color: var(--accent); }
.site-footer h4, .site-footer .fineprint { color: var(--on-dark-3); border-color: var(--dark-line); }
.site-footer .faint, .site-footer .muted, .site-footer small { color: var(--on-dark-3); }
.site-footer h4 { font-family: var(--font-display); font-weight: 700; letter-spacing: .08em; }
::selection { background: var(--accent); color: var(--on-accent); }
