/* Solra: site styles.
   Two themes (dark is the default), set on <html data-theme="…">. The hero artwork lives on a
   1440 × 1150 "stage" that scales with the page; everything on it is sized in --u (one design pixel). */

:root {
  --accent: #2F5B46;
  --focus: #D49A17;
  --serif: 'Newsreader', Georgia, 'Times New Roman', serif;
  --sans: 'Figtree', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --gutter: clamp(20px, 8.33vw, 120px);
  --hero-h: calc(100vw * 1150 / 1440);
  --sky-pad: 0px;                        /* extra sky above the artwork on tall screens, for the intro text */
  --stage-w: max(100vw, calc((var(--hero-h) - var(--sky-pad)) * 1440 / 1150));
  --fade: 0.8s ease;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --day: 0; --night: 1;
  --hero-bg: #070F1E; --sky-top: #0A1825; --hero-ink: #E3F1EC; --ghost-border: rgba(227, 241, 236, 0.75);
  --nav-btn-bg: #F2CE7E; --nav-btn-ink: #0A1626;
  --word: #9ED9CD; --word-glow: 0 0 48px rgba(111, 224, 207, 0.35);
  --earth: #0B1D24; --roots: #173840;
  --paper: #0F222A; --ink: #E3F1EC; --ink-soft: #A9C1B8; --rule: #1E3A42;
  --spine: #2F5A5E; --pill-border: #3C6A6A;
  --panel1: #16323A; --panel2: #2B2C24; --panel3: #1C2738;
  --link: #8FE6D8; --input-bg: #0B1A20; --input-border: #6E8E88;
  --btn-bg: #F2CE7E; --btn-ink: #0A1626;
  --aura: rgba(111, 224, 207, 0.20); --aura-clear: rgba(111, 224, 207, 0);
  --mist: rgba(120, 214, 198, 0.16); --mist-back: rgba(90, 180, 170, 0.12); --mist-clear: rgba(90, 180, 170, 0);
  --leaf0: #7FE0CF; --leaf1: #A8F0E2; --leaf2: #5CC7B8; --leaf3: #F2CE7E; --leaf-o: 0.85;
  --fly0: #F6DE93; --fly1: #9FF2E1; --fly2: #F6DE93; --fly-glow: 12; --fly-spread: 3;
  --fade-rgb: 11, 29, 36;
}

:root[data-theme="light"] {
  color-scheme: light;
  --day: 1; --night: 0;
  --hero-bg: #DDE8DC; --sky-top: #C5DBDD; --hero-ink: #1A2B24; --ghost-border: rgba(26, 43, 36, 0.7);
  --nav-btn-bg: var(--accent); --nav-btn-ink: #FFFFFF;
  --word: #3F5E50; --word-glow: 0 0 40px rgba(255, 248, 228, 0.55);
  --earth: #1F352C; --roots: #2A4538;
  --paper: #F2F5EF; --ink: #1A2B24; --ink-soft: #4E5F55; --rule: #D3DCD1;
  --spine: #9FB3A2; --pill-border: #9FB3A2;
  --panel1: #DCE6D7; --panel2: #EAE3D3; --panel3: #DFE4EC;
  --link: var(--accent); --input-bg: #FFFFFF; --input-border: #1A2B24;
  --btn-bg: var(--accent); --btn-ink: #FFFFFF;
  --aura: rgba(255, 246, 212, 0.38); --aura-clear: rgba(255, 246, 212, 0);
  --mist: rgba(240, 246, 240, 0.55); --mist-back: rgba(240, 246, 240, 0.35); --mist-clear: rgba(240, 246, 240, 0);
  --leaf0: #6FA36B; --leaf1: #9CC47E; --leaf2: #F2B8BE; --leaf3: #86B573; --leaf-o: 0.95;
  --fly0: rgba(255, 244, 206, 0.95); --fly1: rgba(255, 250, 230, 0.9); --fly2: rgba(255, 244, 206, 0.95);
  --fly-glow: 8; --fly-spread: 2;
  --fade-rgb: 31, 53, 44;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html.glide { scroll-behavior: auto; }   /* the script does the easing */
[tabindex="-1"]:focus { outline: none; }
body {
  margin: 0; font-family: var(--sans); background: var(--paper); color: var(--ink);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  transition: background-color 0.6s ease, color 0.6s ease;
}
img, svg { display: block; }
a { color: var(--link); }
a:hover { color: var(--ink); }
a:focus-visible, button:focus-visible, input:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; left: 16px; top: -60px; z-index: 50; padding: 10px 16px; border-radius: 8px; background: var(--btn-bg); color: var(--btn-ink); font-weight: 600; text-decoration: none; }
.skip-link:focus { top: 16px; }

/* ---------------------------------------------------------------- hero */

.hero { position: relative; height: var(--hero-h); overflow: hidden; background: var(--sky-top); transition: background-color 0.6s ease; }
.stage {
  --u: calc(var(--stage-w) / 1440);
  position: absolute; left: 50%; bottom: 0; width: var(--stage-w); height: calc(var(--u) * 1150);
  transform: translateX(-50%);
}
.layer { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.sky-blend { position: absolute; left: 0; right: 0; top: -1px; height: calc(var(--u) * 90); background: linear-gradient(var(--sky-top), transparent); pointer-events: none; transition: background 0.6s ease; }
.layer.day { opacity: var(--day); transition: opacity var(--fade); }
.layer.night { opacity: var(--night); transition: opacity var(--fade); }
.sway { position: absolute; inset: 0; transform-origin: 50% 100%; animation: sway 7.5s ease-in-out infinite; }

.wordmark {
  position: absolute; left: 0; right: 0; margin: 0; text-align: center;
  font-family: var(--serif); font-weight: 400; line-height: 1; letter-spacing: -0.035em;
  font-size: min(calc(var(--u) * 350), 31vw);
  bottom: calc(var(--u) * 140.75 - 0.265em);   /* keeps the letters' baseline on the same spot in the art */
  color: var(--word); text-shadow: var(--word-glow);
  transition: color var(--fade), text-shadow var(--fade);
}

.fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.fx.stars { opacity: var(--night); transition: opacity var(--fade); }
.aura { position: absolute; left: calc(var(--u) * 150); top: calc(var(--u) * 20); width: calc(var(--u) * 1140); height: calc(var(--u) * 780);
  border-radius: 50%; background: radial-gradient(ellipse at center, var(--aura) 0%, var(--aura-clear) 68%); animation: breathe 9s ease-in-out infinite; }
.star { position: absolute; border-radius: 50%; background: #EAFBF6; animation: twinkle 4s ease-in-out infinite; }
.star.big { box-shadow: 0 0 7px 2px rgba(190, 255, 240, 0.75); }
.shoot { position: absolute; width: calc(var(--u) * 190); height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, rgba(234, 251, 246, 0), rgba(234, 251, 246, 0.95)); opacity: 0; animation: shoot 14s linear infinite; }
.mist { position: absolute; left: 0; border-radius: 50%; animation: mist linear infinite; }
.mist.back { background: radial-gradient(ellipse at center, var(--mist-back) 0%, var(--mist-clear) 70%); }
.mist.front { background: radial-gradient(ellipse at center, var(--mist) 0%, var(--mist-clear) 70%); }
.fly { position: absolute; border-radius: 50%;
  box-shadow: 0 0 calc(var(--fly-glow) * 1px) calc(var(--fly-spread) * 1px) currentColor; background: currentColor;
  animation-name: float, pulse; animation-timing-function: ease-in-out, ease-in-out;
  animation-iteration-count: infinite, infinite; animation-direction: alternate, normal; }
.fly.c0 { color: var(--fly0); } .fly.c1 { color: var(--fly1); } .fly.c2 { color: var(--fly2); }
:root[data-theme="light"] .fly.night-only { display: none; }
.leaf-track { position: absolute; left: calc(var(--u) * -70); animation: drift linear infinite; }
.leaf { display: block; opacity: var(--leaf-o); animation: flutter ease-in-out infinite alternate; }
.leaf.c0 { fill: var(--leaf0); } .leaf.c1 { fill: var(--leaf1); } .leaf.c2 { fill: var(--leaf2); } .leaf.c3 { fill: var(--leaf3); }
.ground-fade { position: absolute; left: 0; right: 0; top: calc(var(--u) * 990); height: calc(var(--u) * 160); pointer-events: none;
  background: linear-gradient(180deg, rgba(var(--fade-rgb), 0) 0%, rgba(var(--fade-rgb), 0.16) 30%, rgba(var(--fade-rgb), 0.5) 58%,
    rgba(var(--fade-rgb), 0.86) 84%, rgba(var(--fade-rgb), 1) 100%); }

@keyframes sway { 0%, 100% { transform: skewX(0deg); } 30% { transform: skewX(-0.34deg); } 62% { transform: skewX(0.12deg); } }
@keyframes breathe { 0%, 100% { opacity: 0.5; transform: scale(0.97); } 50% { opacity: 1; transform: scale(1.04); } }
@keyframes twinkle { 0%, 100% { opacity: 0.2; transform: scale(0.75); } 50% { opacity: 1; transform: scale(1.15); } }
@keyframes shoot {
  0% { opacity: 0; transform: translate(0, 0) rotate(22deg); }
  1.5% { opacity: 1; }
  6% { opacity: 0; transform: translate(calc(var(--u) * 560), calc(var(--u) * 226)) rotate(22deg); }
  100% { opacity: 0; transform: translate(calc(var(--u) * 560), calc(var(--u) * 226)) rotate(22deg); }
}
@keyframes mist { from { transform: translateX(calc(var(--u) * -520)); } to { transform: translateX(calc(var(--u) * 1720)); } }
@keyframes float {
  0% { transform: translate(0, 0); } 33% { transform: translate(calc(var(--u) * 16), calc(var(--u) * -24)); }
  66% { transform: translate(calc(var(--u) * -12), calc(var(--u) * -44)); } 100% { transform: translate(calc(var(--u) * 10), calc(var(--u) * -66)); }
}
@keyframes pulse { 0%, 100% { opacity: 0.1; } 50% { opacity: 1; } }
@keyframes drift { from { transform: translate(0, 0); } to { transform: translate(calc(var(--u) * 1600), calc(var(--u) * 150)); } }
@keyframes flutter {
  0% { transform: translateY(calc(var(--u) * -28)) rotate(-35deg); }
  50% { transform: translateY(calc(var(--u) * 20)) rotate(45deg); }
  100% { transform: translateY(calc(var(--u) * -6)) rotate(170deg); }
}

/* header and intro float over the art, sized to the window rather than the stage */
.site-header {
  position: absolute; left: 0; top: 0; z-index: 5; width: 100%; height: 96px; padding: 0 var(--gutter);
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: center; color: var(--hero-ink);
}
.main-nav { display: flex; align-items: center; gap: 36px; }
.main-nav a, .brand { display: inline-flex; align-items: center; min-height: 44px; color: var(--hero-ink); text-decoration: none; transition: color 0.6s ease; }
.main-nav a { font-size: 16px; font-weight: 500; }
.main-nav a:hover, .brand:hover { color: var(--hero-ink); opacity: 0.8; }
.brand { justify-self: center; gap: 10px; }
.brand span { font-family: var(--serif); font-size: 26px; font-weight: 500; letter-spacing: -0.01em; }
.header-actions { justify-self: end; display: flex; align-items: center; gap: 12px; }
.theme-toggle {
  width: 44px; height: 44px; padding: 0; border-radius: 999px; border: 1.5px solid var(--ghost-border); background: transparent;
  color: var(--hero-ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  transition: color 0.6s ease, border-color 0.6s ease;
}
:root[data-theme="dark"] .icon-moon, :root[data-theme="light"] .icon-sun { display: none; }
.btn-pill {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 22px; border-radius: 999px;
  background: var(--nav-btn-bg); color: var(--nav-btn-ink); font-size: 16px; font-weight: 600; text-decoration: none;
  transition: background-color 0.6s ease, color 0.6s ease;
}
.btn-pill:hover { color: var(--nav-btn-ink); filter: brightness(1.06); }

.intro {
  position: absolute; left: 0; right: 0; top: clamp(96px, 7.8vw, 112px); z-index: 4; padding: 0 24px;
  display: flex; flex-direction: column; align-items: center; gap: 18px; text-align: center;
}
.intro p { margin: 0; max-width: 980px; font-family: var(--serif); font-size: clamp(21px, 1.1rem + 0.8vw, 28px); line-height: 1.3; color: var(--hero-ink); transition: color 0.6s ease; }
.btn-ghost {
  display: inline-flex; align-items: center; min-height: 48px; padding: 0 26px; border-radius: 999px;
  border: 1.5px solid var(--ghost-border); color: var(--hero-ink); font-size: 16px; font-weight: 600; text-decoration: none;
  transition: color 0.6s ease, border-color 0.6s ease;
}
.btn-ghost:hover { color: var(--hero-ink); border-color: var(--hero-ink); }

/* ---------------------------------------------------------------- about */

.about { position: relative; overflow: hidden; padding: clamp(96px, 9vw, 130px) var(--gutter) clamp(110px, 10vw, 150px); background: var(--earth); color: #FFFFFF; transition: background-color 0.6s ease; }
.roots { position: absolute; left: 50%; top: 0; width: var(--stage-w); height: auto; transform: translateX(-50%); }
.roots g { stroke: var(--roots); transition: stroke 0.6s ease; }
.about-inner { position: relative; display: flex; flex-direction: column; align-items: center; gap: 72px; }
.about-lede { margin: 0; max-width: 900px; text-align: center; font-family: var(--serif); font-size: clamp(30px, 1.2rem + 2vw, 44px); line-height: 1.3; font-weight: 400; letter-spacing: -0.01em; }
.values { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px; width: 100%; max-width: 1080px; }
.value { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.value h2 { margin: 0; font-family: var(--serif); font-size: 26px; line-height: 1.25; font-weight: 500; }
.value p { margin: 0; max-width: 300px; font-size: 17px; line-height: 1.6; color: #B8C8BC; }

/* ---------------------------------------------------------------- work */

.work { padding: clamp(88px, 8.3vw, 120px) var(--gutter) clamp(96px, 9vw, 140px); background: var(--paper); transition: background-color 0.6s ease; }
.section-head { display: flex; flex-direction: column; align-items: center; gap: 16px; text-align: center; }
.section-head h2 { margin: 0; font-family: var(--serif); font-size: clamp(40px, 1.4rem + 3vw, 60px); line-height: 1.1; font-weight: 400; letter-spacing: -0.015em; }
.section-head p { margin: 0; max-width: 560px; font-size: 18px; line-height: 1.6; color: var(--ink-soft); }
.projects { position: relative; max-width: 1200px; margin: 80px auto 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 80px; }
.projects::before { content: ""; position: absolute; left: calc(50% - 1px); top: 0; bottom: 0; width: 2px; background: var(--spine); }
.project { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 104px minmax(0, 1fr); align-items: center; min-height: 380px; }
.project-art { grid-column: 1; display: block; width: 100%; height: auto; aspect-ratio: 520 / 340; object-fit: cover; border-radius: 8px; }
.project-art.placeholder { display: flex; align-items: center; justify-content: center; color: var(--ink-soft);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ink) 8%, transparent); transition: background-color 0.6s ease; }
.project-art.placeholder svg { opacity: 0.55; }
.project-art.p1 { background: var(--panel1); } .project-art.p2 { background: var(--panel2); } .project-art.p3 { background: var(--panel3); }
.project-mark { grid-column: 2; justify-self: center; width: 52px; height: 52px; border-radius: 999px; background: var(--paper); display: flex; align-items: center; justify-content: center; position: relative; z-index: 1; }
.project-text { grid-column: 3; display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.project.flip .project-art { grid-column: 3; grid-row: 1; }
.project.flip .project-text { grid-column: 1; grid-row: 1; align-items: flex-end; text-align: right; }
.project.flip .project-mark { grid-row: 1; }
.pill { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--pill-border); font-size: 14px; font-weight: 500; color: var(--ink); }
.pill::before { content: ""; width: 8px; height: 8px; border-radius: 999px; background: #D49A17; }
.project h3 { margin: 0; font-family: var(--serif); font-size: clamp(34px, 1.2rem + 1.6vw, 44px); line-height: 1.1; font-weight: 400; letter-spacing: -0.01em; }
.project p { margin: 0; font-size: 18px; line-height: 1.6; color: var(--ink-soft); }
.project .meta { font-size: 15px; color: var(--ink-soft); }
.project .notify { margin-top: 4px; padding: 10px 0; font-size: 16px; font-weight: 600; color: var(--link); text-underline-offset: 4px; }

/* ---------------------------------------------------------------- updates */

.updates { padding: clamp(88px, 7.6vw, 110px) var(--gutter) clamp(96px, 9vw, 130px); background: var(--paper); border-top: 1px solid var(--rule);
  display: flex; flex-direction: column; align-items: center; text-align: center; transition: background-color 0.6s ease, border-color 0.6s ease; }
.updates h2 { margin: 18px 0 0; font-family: var(--serif); font-size: clamp(36px, 1.3rem + 2.6vw, 52px); line-height: 1.1; font-weight: 400; letter-spacing: -0.015em; }
.updates > p { margin: 16px 0 0; max-width: 520px; font-size: 18px; line-height: 1.6; color: var(--ink-soft); }
.signup { margin-top: 36px; width: 100%; max-width: 560px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; text-align: left; }
.signup label { font-size: 15px; font-weight: 500; color: var(--ink); }
.signup-row { width: 100%; display: flex; gap: 12px; }
.signup input {
  flex: 1 1 auto; min-width: 0; height: 52px; padding: 0 20px; border-radius: 999px; border: 1.5px solid var(--input-border);
  background: var(--input-bg); font: 16px var(--sans); color: var(--ink);
}
.signup input::placeholder { color: #7F9690; }
.signup button { height: 52px; padding: 0 28px; border: none; border-radius: 999px; background: var(--btn-bg); color: var(--btn-ink); font: 600 16px var(--sans); cursor: pointer; }
.signup button:hover { filter: brightness(1.06); }
.signup-status { min-height: 1.5em; margin: 4px 0 0; font-size: 15px; color: var(--ink-soft); }

/* ---------------------------------------------------------------- footer */

.site-footer { padding: 56px var(--gutter) 64px; background: var(--earth); color: #B8C8BC; display: flex; flex-direction: column; align-items: center; gap: 18px; text-align: center; transition: background-color 0.6s ease; }
.footer-brand { display: flex; align-items: center; gap: 10px; }
.footer-brand span { font-family: var(--serif); font-size: 24px; font-weight: 500; color: #FFFFFF; }
.footer-nav { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; column-gap: 32px; }
.footer-nav a { display: inline-flex; align-items: center; min-height: 44px; font-size: 15px; color: #FFFFFF; text-decoration: none; }
.footer-nav a:hover { color: #FFFFFF; text-decoration: underline; text-underline-offset: 4px; }
.site-footer p { margin: 0; max-width: 640px; font-size: 14px; line-height: 1.6; }
.site-footer small { font-size: 14px; }

/* ---------------------------------------------------------------- smaller screens */

@media (max-aspect-ratio: 1 / 1), (max-width: 820px) {
  :root { --hero-h: max(100svh, 680px); --sky-pad: 130px; }
}

@media (max-width: 860px) {
  .site-header { grid-template-columns: auto 1fr; height: 76px; }
  .main-nav { display: none; }
  .brand { justify-self: start; }
  .values { grid-template-columns: 1fr; gap: 40px; }
  .projects { gap: 56px; }
  .projects::before { display: none; }
  .project, .project.flip { grid-template-columns: 1fr; min-height: 0; gap: 20px; }
  .project .project-art, .project.flip .project-art { grid-column: 1; grid-row: 1; }
  .project .project-mark, .project.flip .project-mark { display: none; }
  .project .project-text, .project.flip .project-text { grid-column: 1; grid-row: 2; align-items: flex-start; text-align: left; }
}

@media (max-width: 520px) {
  .header-actions .btn-pill { padding: 0 16px; font-size: 15px; }
  .brand span { font-size: 23px; }
  .signup-row { flex-direction: column; }
  .signup button { width: 100%; }
}

/* ---------------------------------------------------------------- motion */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
  .sway, .aura, .star, .mist, .fly, .leaf { animation: none !important; }
  .shoot, .leaf-track { display: none; }
}
