/* Inter 4.1 — self-hosted, SIL Open Font License 1.1 (fonts/OFL-Inter.txt). */
@font-face {
  font-family: "Inter";
  src: url("fonts/InterVariable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

:root {
  --font-ui: "Inter", "Segoe UI", Arial, sans-serif;
  --weight-body: 400;
  --weight-heading: 520;
}

body {
  font-family: var(--font-ui);
  font-weight: var(--weight-body);
  font-optical-sizing: auto;
  font-feature-settings: "liga" 1, "calt" 1;
  -webkit-font-smoothing: antialiased;
  letter-spacing: -.012em;
}

button, input, select, textarea { font-family: inherit; }
h1, h2, h3, .brand, .project-statement { font-family: var(--font-ui); }
h1, h2, h3 { font-style: normal; text-wrap: balance; }
h2 { font-weight: var(--weight-heading); line-height: 1.18; letter-spacing: -.038em; }
h3 { font-weight: 550; letter-spacing: -.025em; }
p { text-wrap: pretty; }

.brand { font-size: 31px; font-weight: 650; letter-spacing: -.055em; }
.brand>span { font-weight: 400; }
.header nav { font-size: 13px; font-weight: 550; letter-spacing: .075em; }
.header-language { font-size: 12px; font-weight: 600; letter-spacing: .1em; }
.menu-toggle { font-weight: 550; letter-spacing: -.01em; }
.eyebrow, .hero .eyebrow, .footer-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .15em;
  line-height: 1.5;
}

.hero-carousel h1 {
  font-size: clamp(3rem, 5.3vw, 5rem);
  font-weight: 500;
  line-height: 1.06;
  letter-spacing: -.045em;
  text-transform: uppercase;
  max-width: 850px;
  margin-bottom: 25px;
  text-wrap: initial;
}
.hero-title-accent { color: #c2d6e5; }
.hero-description { font-size: 17px; font-weight: 400; line-height: 1.65; letter-spacing: -.012em; }
a.hero-link { font-size: 14px; font-weight: 550; letter-spacing: -.01em; }
.slide-selector { font-weight: 500; letter-spacing: -.015em; }
.slide-index, .slide-count, .skill-number, .project-index, .policy-meta, .reading-status { font-variant-numeric: tabular-nums; }
.slide-index, .skill-number, .project-index { font-weight: 500; }

.intro h2 { font-weight: var(--weight-heading); line-height: 1.2; letter-spacing: -.035em; }
.intro div>p { font-size: 17px; line-height: 1.85; }
.skills-grid h3 { font-size: 25px; font-weight: 550; line-height: 1.25; letter-spacing: -.03em; }
.skills-grid p { font-size: 16px; line-height: 1.8; }
.tech { font-size: 13px; font-weight: 450; line-height: 1.8; letter-spacing: 0; }
.project-picker small { font-size: 12px; font-weight: 550; letter-spacing: .1em; }
.project-picker strong { font-size: 24px; font-weight: 550; letter-spacing: -.035em; }
.project-panel-top .eyebrow { font-size: 12px; font-weight: 500; letter-spacing: .13em; }
.project-statement {
  font-style: normal;
  font-weight: 450;
  font-size: clamp(2.6rem, 4.6vw, 4.6rem);
  line-height: 1.1;
  letter-spacing: -.055em;
  color: #8eafc8;
  margin-block: 44px 30px;
}
.project-panel h3 { font-size: 33px; font-weight: 550; line-height: 1.2; letter-spacing: -.035em; }
.project-panel p { font-size: 17px; line-height: 1.8; }
.project-tags { font-size: 13px; font-weight: 450; letter-spacing: 0; }
.about-copy .lead { font-size: 24px; font-weight: 500; line-height: 1.45; letter-spacing: -.025em; }
.about-copy>p { font-size: 16px; line-height: 1.85; }
.text-link { font-size: 14px; font-weight: 550; letter-spacing: -.01em; }

.contact h2 {
  font-size: clamp(2.6rem, 5.1vw, 4.8rem);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -.045em;
}
.contact-accent { color: #52738c; }
.contact-bottom a { font-size: 23px; font-weight: 500; letter-spacing: -.035em; }
.footer-main>div { font-size: 14px; font-weight: 400; letter-spacing: -.01em; }
.footer-bottom { font-size: 12px; letter-spacing: 0; }

.policy-hero h1, .policy>h1 {
  font-size: clamp(2.8rem, 5.7vw, 5.1rem);
  font-weight: 500;
  line-height: 1.06;
  letter-spacing: -.045em;
}
.policy-title-accent { color: #52738c; }
.policy-meta { font-size: 13px; line-height: 1.7; letter-spacing: 0; }
.policy-article .policy-section h2, .policy>h2 {
  font-size: 27px;
  font-weight: 550;
  line-height: 1.25;
  letter-spacing: -.03em;
}
.policy-article p, .policy-article li, .policy p, .policy li { font-size: 16px; line-height: 1.9; letter-spacing: -.008em; }
.policy-article .info-box { font-size: 16px; line-height: 1.9; letter-spacing: -.008em; }
.policy-toc a { font-size: 13px; line-height: 1.55; letter-spacing: -.012em; }
.policy-contents summary { font-size: 15px; font-weight: 600; letter-spacing: -.02em; }
.policy-article .contact-box h3 { font-size: 25px; font-weight: 550; letter-spacing: -.03em; }
.perm-name { letter-spacing: 0; }

.cookie-copy h2 { font-size: 20px; font-weight: 600; letter-spacing: -.025em; }
.cookie-dialog h2 { font-size: 29px; font-weight: 550; letter-spacing: -.035em; }
.cookie-copy p, .cookie-dialog>p { font-size: 14px; letter-spacing: -.005em; }
.cookie-actions button, .dialog-actions button, .policy-button { font-weight: 550; letter-spacing: -.015em; border-radius: 4px; }
.cookie-category h3 { font-weight: 600; letter-spacing: -.02em; }
.cookie-category p { font-size: 14px; letter-spacing: -.005em; }

@media(max-width:1150px) {
  .header nav { font-size: 12px; gap: 22px; }
  .project-picker strong { font-size: 22px; }
  .skills-grid h3 { font-size: 23px; }
}
@media(max-width:980px) {
  .header nav { font-size: 14px; }
  .project-picker strong { font-size: 20px; }
  .project-statement { font-size: 3rem; }
}
@media(max-width:760px) {
  .brand { font-size: 28px; }
  .hero-carousel h1 { font-size: clamp(2rem, 7.85vw, 3.75rem); line-height: 1.12; letter-spacing: -.045em; margin-bottom: 24px; }
  .hero .eyebrow { font-size: 12px; letter-spacing: .12em; }
  .hero-description { font-size: 16px; line-height: 1.7; max-width: 30ch; }
  .intro h2 { font-size: 31px; line-height: 1.23; }
  .intro div>p { font-size: 16px; }
  h2 { font-size: 32px; }
  .skills-grid h3 { font-size: 25px; }
  .project-picker strong { font-size: 18px; letter-spacing: -.03em; }
  .project-picker small { font-size: 12px; letter-spacing: .08em; }
  .project-statement { font-size: clamp(2.3rem, 9vw, 3.5rem); margin-block: 30px; }
  .project-panel h3 { font-size: 29px; }
  .about-copy .lead { font-size: 23px; }
  .contact h2 { font-size: clamp(2rem, 7vw, 3rem); letter-spacing: -.045em; }
  .contact-bottom a { font-size: 20px; letter-spacing: -.03em; }
  .policy-hero h1, .policy>h1 { font-size: clamp(2.6rem, 8vw, 3.5rem); }
  .policy-meta { font-size: 13px; }
  .policy-article .policy-section h2, .policy>h2 { font-size: 25px; }
  .cookie-copy p, .cookie-category p { font-size: 13px; }
  .cookie-dialog h2 { font-size: 26px; }
  .slide-selector { font-size: 13px; }
}
@media(max-width:380px) {
  .hero-carousel h1 { font-size: 2rem; }
  .project-picker strong { font-size: 17px; }
  .contact-bottom a { font-size: 18px; }
  .contact h2 { font-size: 29px; }
}
