/* Vagabond Studio — shared night-sky skin */
:root {
  --night-top: #10202b;   /* teal-cast black — the lit edge of the plumage */
  --night: #0a0712;       /* ink */
  --night-low: #1d0e2e;   /* violet-cast black */
  --paper: #e8e4f2;
  --muted: #9d97b8;
  --peri: #c2c1fa;        /* periwinkle — the Synthesis accent */
  --magenta: #ff5fd2;     /* reserved: tip jar only */
  --hairline: #2c2440;
}
* { box-sizing: border-box; margin: 0; }
html { scroll-behavior: smooth; }
body {
  background: linear-gradient(175deg, var(--night-top) 0%, var(--night) 38%, var(--night) 62%, var(--night-low) 100%) fixed;
  color: var(--paper);
  font-family: "Bitter", Georgia, serif;
  font-size: 1.05rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  display: flex; flex-direction: column;
}

/* star-specks: two box-shadow layers on fixed pseudo-dots; starlings are named for these */
.sky, .sky::after {
  content: "";
  position: fixed; inset: 0; pointer-events: none; z-index: 0;
  width: 2px; height: 2px; border-radius: 50%; background: transparent;
}
.sky {
  box-shadow:
    12vw  8vh 0 0 #ffffffcc,  78vw  6vh 0 0 #ffffff99,  55vw 14vh 0 0 #ffffffb0,
    30vw 22vh 0 0 #ffffff77,  90vw 30vh 0 0 #ffffff99,   8vw 44vh 0 0 #ffffff66,
    68vw 52vh 0 0 #ffffff88,  22vw 66vh 0 0 #ffffff55,  84vw 74vh 0 0 #ffffff77,
    44vw 86vh 0 0 #ffffff66,  60vw 94vh 0 0 #ffffff44,   5vw 92vh 0 0 #ffffff55;
  animation: twinkle 7s ease-in-out infinite alternate;
}
.sky::after {
  width: 1px; height: 1px;
  box-shadow:
    18vw 15vh 0 0 #c2c1fa88,  40vw  5vh 0 0 #ffffff55,  95vw 12vh 0 0 #c2c1fa66,
    64vw 28vh 0 0 #ffffff44,  15vw 34vh 0 0 #ffffff44,  50vw 42vh 0 0 #c2c1fa55,
    88vw 48vh 0 0 #ffffff33,  35vw 58vh 0 0 #ffffff44,  72vw 64vh 0 0 #c2c1fa44,
    10vw 76vh 0 0 #ffffff33,  55vw 78vh 0 0 #ffffff33,  92vw 88vh 0 0 #c2c1fa44;
}
@keyframes twinkle { from { opacity: 0.55; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .sky { animation: none; }
  html { scroll-behavior: auto; }
}

/* type */
.eyebrow {
  font-family: "Space Grotesk", sans-serif;
  font-size: 0.8rem; font-weight: 500;
  letter-spacing: 0.35em; text-transform: uppercase;
  color: var(--peri);
}
h1 {
  font-size: clamp(2.1rem, 6vw, 3rem);
  font-weight: 400; font-style: italic;
  line-height: 1.15;
  margin: 0.75rem 0 1.5rem;
}
h2 {
  font-family: "Space Grotesk", sans-serif;
  font-size: 0.85rem; font-weight: 500;
  letter-spacing: 0.3em; text-transform: uppercase;
  color: var(--paper);
}
.thesis { font-style: italic; font-size: 1.25rem; color: var(--peri); margin-bottom: 0.75rem; }

/* links */
a { color: var(--peri); text-decoration: none; }
a:hover, a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }
a:focus-visible { outline: 2px solid var(--peri); outline-offset: 3px; border-radius: 2px; }
.go {
  display: inline-block; margin: 0.35rem 0.5rem 0 0;
  font-family: "Space Grotesk", sans-serif; font-size: 0.9rem;
  border: 1px solid var(--hairline); border-radius: 999px;
  padding: 0.45rem 1.1rem;
  transition: border-color 120ms ease;
}
.go:hover, .go:focus-visible { border-color: var(--peri); text-decoration: none; }

/* social icon row */
.socials { display: flex; flex-wrap: wrap; gap: 1.1rem; align-items: center; }
.socials a { color: var(--muted); display: inline-flex; padding: 0.2rem; }
.socials a:hover, .socials a:focus-visible { color: var(--peri); }
.socials a.tip { color: var(--magenta); }
.socials svg { width: 21px; height: 21px; fill: currentColor; }

/* the shore — the Vagabond banner closes every page at the horizon */
.shore { position: relative; z-index: 1; margin-top: auto; padding-top: 4rem; }
.shore img {
  display: block; width: 100%; height: 44vh; min-height: 240px;
  object-fit: cover; object-position: center bottom;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 55%);
  mask-image: linear-gradient(to bottom, transparent, #000 55%);
}

/* ===== hub: everything lives inside the star, above the shore ===== */
.starwrap {
  position: relative; z-index: 1;
  width: min(78vmin, 880px);
  margin: 0 auto;
}
.hub-hero {
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  padding: 1.5rem 0 20vh; /* the star floats above the fixed horizon */
}
.prow { font-size: 0.98rem; }
.bigstar { display: block; width: 100%; height: auto; overflow: visible; }
.star-content {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center;
  padding: 0 15%;
}
.star-content .bio { color: var(--muted); max-width: 26rem; margin: 0 auto; }
.star-content .bio em { color: var(--paper); }
.star-content h1 { margin-bottom: 1rem; }

.projects {
  margin: 1.8rem 0 1.6rem;
  display: flex; flex-direction: column; gap: 0.9rem;
  text-align: left;
}
.prow {
  display: flex; align-items: center; gap: 0.8rem;
  color: var(--muted);
}
.prow:hover, .prow:focus-visible { text-decoration: none; }
/* project names read as links: periwinkle, underlined on hover, arrow slides in */
a.prow strong { color: var(--peri); font-weight: 700; white-space: nowrap; }
.prow strong { color: var(--paper); font-weight: 700; white-space: nowrap; }
a.prow:hover strong, a.prow:focus-visible strong { text-decoration: underline; text-underline-offset: 3px; }
.arr { color: var(--hairline); transition: color 120ms ease, transform 120ms ease; }
a.prow:hover .arr, a.prow:focus-visible .arr { color: var(--peri); transform: translateX(3px); }
.prow .mark { flex: none; }
.prow img.cover { border-radius: 5px; border: 1px solid var(--hairline); }
.prow .listen { display: inline-flex; gap: 0.55rem; margin-left: 0.35rem; }
.prow .listen a { color: var(--muted); display: inline-flex; }
.prow .listen a:hover, .prow .listen a:focus-visible { color: var(--peri); }
.prow .listen svg { width: 17px; height: 17px; fill: currentColor; }
.star-content .socials { justify-content: center; margin-top: 0.4rem; }

/* ===== sub-pages: the letter layout ===== */
main.page { position: relative; z-index: 1; max-width: 40rem; margin: 0 auto; padding: 5rem 1.5rem 1rem; }
.page-home { display: inline-block; }
.page-home svg { display: block; overflow: visible; }
.page header { margin-bottom: 3rem; }
.page header .eyebrow { margin-top: 1.25rem; }
.page section { margin-top: 2.2rem; }
.page p { color: var(--muted); margin-bottom: 0.9rem; }
.page p em, .page p strong { color: var(--paper); }
.page .socials { margin-top: 3.5rem; }

@media (min-width: 861px) {
  /* the hub is one viewport: star in the sky, shore pinned at the horizon */
  body.hub .shore { position: fixed; bottom: 0; left: 0; right: 0; z-index: 0; margin: 0; padding: 0; }
  body.hub .shore img { height: 28vh; }
}
@media (max-width: 860px) {
  /* the star can't hold the content on small screens — let it go, keep the sky */
  .bigstar { display: none; }
  .hub-hero { min-height: 0; padding: 4rem 0 0; }
  .starwrap { width: 100%; }
  .star-content { position: static; padding: 0 1.5rem; }
  .prow { flex-wrap: wrap; }
  .shore img { height: 32vh; }
  main.page { padding-top: 3.5rem; }
}

/* centered page emblem (synthesis: Mark of Empathy) */
.page .emblem { display: block; margin: 0 auto 2rem; }

/* single prominent CTA */
.cta-center { text-align: center; margin-top: 3rem; }
.go.big { font-size: 1.05rem; padding: 0.8rem 2.2rem; border-color: var(--peri); color: var(--peri); }
.go.big:hover, .go.big:focus-visible { background: var(--peri); color: var(--night); }
