/* ===================================================================
   lukasnord.eu — stylesheet
   Fonts are self-hosted in /fonts (Source Serif 4 for headings,
   Inter for body text). No external dependencies.
   =================================================================== */

/* ---------- fonts ---------- */
@font-face { font-family: "Source Serif 4"; font-style: normal; font-weight: 400;
  src: url("../fonts/source-serif-4-latin-400-normal.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Source Serif 4"; font-style: normal; font-weight: 600;
  src: url("../fonts/source-serif-4-latin-600-normal.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 400;
  src: url("../fonts/inter-latin-400-normal.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Inter"; font-style: italic; font-weight: 400;
  src: url("../fonts/inter-latin-400-italic.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 500;
  src: url("../fonts/inter-latin-500-normal.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600;
  src: url("../fonts/inter-latin-600-normal.woff2") format("woff2"); font-display: swap; }

/* ---------- layout primitives ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { max-width: 100%; display: block; }
a { text-decoration-thickness: 1px; text-underline-offset: 2px; }
main { max-width: var(--measure); margin: 0 auto; padding: 0 1.25rem 4rem; }
.intro { display: grid; grid-template-columns: 1fr var(--photo-w); gap: 3rem; align-items: start; }
.intro-photo img { width: var(--photo-w); }
.paper { margin: 0 0 1.05rem 0; }
.paper-line1 { display: flex; align-items: baseline; gap: .15rem .9rem; flex-wrap: wrap; }
.links-right .paper-line1 { justify-content: space-between; }
.paper-links { display: inline-flex; gap: .8rem; align-items: baseline; white-space: nowrap; }
.meta { margin: .1rem 0 0 0; }

/* ---------- theme ---------- */
:root { --measure: 50rem; --photo-w: 172px; --accent: #9c4221; }
body { font-family: "Inter", -apple-system, "Segoe UI", sans-serif;
       color: #2b2926; background: #ffffff; font-size: 15.5px; line-height: 1.68; }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, .paper-title { font-family: "Source Serif 4", Georgia, serif; }
.intro { padding-top: 3.6rem; }
h1 { font-weight: 600; font-size: 2.4rem; margin: 0 0 .45rem; letter-spacing: -.01em; }
.role { color: #6b655c; margin: 0 0 1.4rem; }
.bio { text-align: justify; }
.intro-photo img { border-radius: 12px; }
h2 { font-weight: 600; font-size: 1.55rem; margin: 3.4rem 0 1.2rem; padding-bottom: .35rem;
     border-bottom: 1px solid #ece7df; }
h3 { font-size: .82rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em;
     color: #98917f; margin: 3.15rem 0 1rem; font-family: "Inter", sans-serif; }
#research h3:first-of-type { margin-top: 2.1rem; }
.paper-title { font-weight: 600; font-size: 1.05rem; }
.meta { font-size: .88rem; color: #6b655c; }
.meta a { color: #6b655c; text-decoration: none; }
.meta a:hover { color: var(--accent); text-decoration: underline; }
.meta .sep { color: #c9c2b4; }
.plink { font-size: .78rem; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; color: var(--accent); }

/* ---------- contact buttons ---------- */
.cv-btn { display: inline-flex; align-items: center; justify-content: center;
  border: 1.5px solid var(--accent); border-radius: 6px; height: 2.35rem; padding: 0 1rem;
  font-size: .85rem; font-weight: 600; letter-spacing: .02em; }
.cv-btn:hover { background: var(--accent); color: #fff; text-decoration: none; }
.btn-row { display: flex; gap: .7rem; align-items: stretch; margin: 1.4rem 0 0; }
.btn-row .icon-btn { width: 2.35rem; padding: 0; }
.btn-row .icon-btn svg { width: 1.1rem; height: 1.1rem; }

/* ---------- footer ---------- */
footer { max-width: var(--measure); margin: 0 auto; padding: 0 1.25rem 2rem; }
footer p { margin: 0; font-size: .78rem; color: #b5afa3; }
footer a { color: #98917f; }
footer a:hover { color: var(--accent); }

/* ---------- legal page ---------- */
.legal main { padding-top: 3rem; }
.legal h1 { font-size: 1.7rem; }
.legal h2 { font-size: 1.15rem; margin-top: 2.4rem; border-bottom: none; padding-bottom: 0; }
.legal p { font-size: .92rem; color: #4a463f; }
.back-link { font-size: .85rem; font-weight: 500; }

/* ---------- small screens ---------- */
@media (max-width: 640px) {
  .intro { grid-template-columns: 1fr; }
  .intro-photo { order: -1; }
  .intro-photo img { width: min(46vw, 200px); }
  /* papers: links always on their own line, tight under the title */
  .paper-title { flex: 1 1 100%; }
  .links-right .paper-line1 { justify-content: flex-start; }
}
