/* tõnusamuel.ee / tõnusamuel.eu — shared components.
   Colors only via tokens (design-tokens.css). */

* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
.page { max-width: 46rem; margin: 0 auto; padding: 2.5rem 1.5rem 4rem; }

/* header */
header.site {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 1rem; flex-wrap: wrap; margin-bottom: 0.5rem;
}
.site-name { font-size: 1.3rem; font-weight: 650; letter-spacing: -0.01em; margin: 0; }
.site-name a { color: var(--ink); text-decoration: none; }
nav.menu { font-family: var(--mono); font-size: 0.8rem; display: flex; gap: 1.1rem; flex-wrap: wrap; }
nav.menu a {
  color: var(--ink-soft); text-decoration: none;
  border-bottom: 1px solid transparent; padding-bottom: 1px;
}
nav.menu a:hover, nav.menu a.here { color: var(--accent); border-bottom-color: var(--accent); }
.tagline { color: var(--ink-mute); font-size: 0.95rem; margin: 0 0 2rem; }

/* the one glyph per view */
.pagemark { display: flex; align-items: baseline; gap: 0.75rem; margin: 1.5rem 0 1.25rem; }
.pagemark .kanji { color: var(--mark); font-size: 2rem; line-height: 1; font-family: var(--jp); }
.pagemark .word {
  font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--ink-mute);
}

/* blog feed */
.post { padding: 1.1rem 0; border-top: 1px solid var(--line); }
.post .date { font-family: var(--mono); font-size: 0.78rem; color: var(--accent); font-variant-numeric: tabular-nums; }
.post h2 { margin: 0.15rem 0 0.3rem; font-size: 1.12rem; font-weight: 650; }
.post h2 a { color: var(--ink); text-decoration: none; }
.post h2 a:hover { color: var(--accent); }
.post p { margin: 0; font-size: 0.95rem; color: var(--ink-soft); max-width: 38rem; }
.post p a { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--line); }
.post p a:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* projects */
.project {
  display: grid; grid-template-columns: 8rem 1fr; gap: 1.25rem;
  padding: 1.1rem 0; border-bottom: 1px solid var(--line); align-items: start;
}
.project:first-of-type { border-top: 1px solid var(--line); }
.project.withphoto { grid-template-columns: 8rem 1fr 8.5rem; }
.project .when {
  font-family: var(--mono); font-size: 0.82rem; color: var(--accent);
  font-variant-numeric: tabular-nums; padding-top: 0.2rem; white-space: nowrap;
}
.project h2 { margin: 0 0 0.15rem; font-size: 1.02rem; font-weight: 650; }
.project h2 .role {
  font-family: var(--mono); font-size: 0.78rem; font-weight: 400;
  color: var(--ink-mute); margin-left: 0.5rem;
}
.project p { margin: 0; font-size: 0.95rem; color: var(--ink-soft); }
.project a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--line); }
.project a:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* prose (about) */
.prose { max-width: 38rem; }
.prose p { margin: 0 0 1rem; font-size: 0.98rem; }
.prose a { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--line); }
.prose a:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* meta rows (links, resume) */
.meta { font-family: var(--mono); font-size: 0.88rem; margin-top: 2rem; }
.meta .row {
  display: grid; grid-template-columns: 8rem 1fr; gap: 1.25rem;
  padding: 0.5rem 0; border-bottom: 1px solid var(--line); align-items: baseline;
}
.meta .row:first-child { border-top: 1px solid var(--line); }
.meta .k { color: var(--ink-mute); font-size: 0.78rem; }
.meta a { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--line); }
.meta a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.meta .soon { color: var(--ink-mute); }

/* photos (slots activate when real photos exist) */
.photo { border-radius: 3px; overflow: hidden; position: relative; border: 1px solid var(--line); }
.photo img { display: block; width: 100%; height: auto; filter: saturate(0.85); }
.photo figcaption {
  position: absolute; left: 0; right: 0; bottom: 0;
  font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.04em;
  /* scrim sits on the photo, not on paper — theme-independent by design */
  color: #fff; background: rgba(0,0,0,0.45); padding: 0.25rem 0.5rem;
}

/* footer */
footer.site {
  margin-top: 3.5rem; padding-top: 1rem; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 0.76rem; color: var(--ink-mute);
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
}
footer.site a { color: var(--ink-soft); text-decoration: none; border-bottom: 1px solid var(--line); }
footer.site a:hover { color: var(--accent); border-bottom-color: var(--accent); }

@media (max-width: 560px) {
  .project, .project.withphoto, .meta .row { grid-template-columns: 1fr; gap: 0.3rem; }
}
