/* ==========================================================================
   aidenseo.com — base.css (v2)
   Static & minimal. No animations, no hover state changes. Source Serif 4,
   black (#121212) on subtly warm off-white (#F9F8F5), green (#05AB05) accents.
   ========================================================================== */

/* ---- Fonts: self-hosted Source Serif 4 (variable weight 200–900) --------- */
@font-face {
  font-family: "Source Serif 4";
  src: url("/assets/fonts/source-serif-4-regular-latin.woff2") format("woff2");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Source Serif 4";
  src: url("/assets/fonts/source-serif-4-regular-latin-ext.woff2")
    format("woff2");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Source Serif 4";
  src: url("/assets/fonts/source-serif-4-italic-latin.woff2") format("woff2");
  font-weight: 200 900;
  font-style: italic;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Source Serif 4";
  src: url("/assets/fonts/source-serif-4-italic-latin-ext.woff2")
    format("woff2");
  font-weight: 200 900;
  font-style: italic;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---- Design tokens ------------------------------------------------------- */
:root {
  --bg: #f9f8f5;
  --fg: #121212;
  --green: #05ab05;
  --muted: #333333;

  --font-serif: "Source Serif 4", Georgia, "Times New Roman", serif;

  --wrap: 800px;

  --step--1: 0.875rem;
  --step-0: 1.0625rem;
  --step-1: 1.375rem;
  --step-2: 1.875rem;
  --step-home: 32px;
}

/* ---- Reset --------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}
* {
  margin: 0;
}
html {
  -webkit-text-size-adjust: 100%;
}
body {
  min-height: 100vh;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font-serif);
  font-size: var(--step-0);
  line-height: 1.6;
  /* Do not set -webkit-font-smoothing: antialiased. It drops subpixel
     rendering for dark-on-light text, thinning the serif into gray. */
  text-rendering: optimizeLegibility;
}
img,
picture,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}
h1,
h2,
h3,
h4 {
  line-height: 1.2;
  font-weight: 600;
}
a {
  color: var(--fg);
  text-decoration-line: underline;
  text-decoration-color: var(--green);
  text-decoration-thickness: 1px;
  text-decoration-skip-ink: none; /* solid continuous underline, not broken by descenders */
  text-underline-offset: 0.15em;
}
:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}

/* ---- Layout -------------------------------------------------------------- */
.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding: 0 1.5rem 6rem;
}

/* ---- Nav: brand left, links pushed against the right (wrap right-aligned) --
   Static & consistent: no hover state change, green ~ before each item.      */
.site-header {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding: 1.5rem 1.5rem 1.75rem;
}
.site-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem 1.5rem;
}
.brand {
  color: var(--fg);
  text-decoration: none;
  font-weight: 400;
  font-size: 28px; /* pairs with the 32px homepage line */
  line-height: 1;
  letter-spacing: 0.01em;
}
.nav-links {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end; /* push items against the right side */
  align-items: baseline;
  column-gap: 1.25rem;
  row-gap: 0.4rem;
}
.nav-link {
  color: var(--fg);
  text-decoration: none;
  text-transform: lowercase;
  letter-spacing: 0.02em;
  line-height: 1;
  white-space: nowrap;
}
.nav-link::before {
  content: "~"/ ""; /* decorative tilde; empty alt so it isn't read aloud */
  color: var(--green);
  margin-right: 0.4ch;
}

/* Mobile: brand holds the left ~half; links flow beside it from the middle
   and wrap onto the next line across the full width (display: contents).    */
@media (max-width: 600px) {
  .site-nav {
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    column-gap: 1rem;
    row-gap: 0.4rem;
  }
  .brand {
    flex: 0 0 calc(40% - 0.5rem);
  }
  .nav-links {
    display: contents;
  }
}

/* ---- Prose --------------------------------------------------------------- */
.page-title,
.poem-title {
  font-size: 32px;
  font-weight: 600;
  margin-bottom: 1.5rem;
}
.page p,
.poem-body p {
  margin-bottom: 1.1rem;
}
.page ul,
.page ol {
  margin-bottom: 1.1rem;
  padding-left: 1.25rem;
}
.page li {
  margin-bottom: 0.35rem;
}
em {
  font-style: italic;
}

.work-section {
  margin-bottom: 2rem;
}
.work-section-title {
  font-size: var(--step-1);
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 0.6rem;
}
.work-list {
  list-style: none;
  padding-left: 0;
}
.work-list li {
  margin-bottom: 0.5rem;
}

/* poem indentation hooks (used by a few poems) */
.poem-body .tab {
  display: inline-block;
}
.poem-body .tab-1 {
  width: 2ch;
}
.poem-body .tab-1-5 {
  width: 3ch;
}
.poem-body .tab-2 {
  width: 4ch;
}

/* ---- Home ---------------------------------------------------------------- */
.home {
  padding-top: 2.5rem;
}
/* line-height must stay >= 1.375: Source Serif 4's ascent+descent make each
   selection band 1.371em tall, and tighter spacing overlaps adjacent bands. */
.home-intro {
  font-size: var(--step-home);
  font-weight: 500;
  line-height: 1.4;
  color: var(--fg);
}

/* Pretext-driven line layout (src/assets/js/pretext-layout.mjs) */
html.pretext-pending .home-intro,
html.pretext-pending .page p,
html.pretext-pending .page li {
  visibility: hidden;
}
.pretext-layout {
  display: flex;
  flex-direction: column;
  max-width: 100%;
}
.pretext-line {
  display: block;
  white-space: nowrap;
}

/* ---- Art gallery --------------------------------------------------------- */
.art-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 1.5rem;
}
.art-item {
  margin: 0;
}
.art-item--wide {
  grid-column: span 2;
}
.art-item img {
  width: 100%;
}
.art-item figcaption {
  margin-top: 0.5rem;
  font-size: var(--step--1);
}
.art-meta {
  color: var(--muted);
}

@media (max-width: 520px) {
  .art-item--wide {
    grid-column: auto;
  }
}
