:root {
  --paper: #f8f5ef;
  --paper-deep: #f1ece3;
  --ink: #171512;
  --muted: #5f594f;
  --line: #ddd5c7;
  --accent: #7a5a32;
  --wrap: 72rem;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;
  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-family: var(--sans);
  color: var(--ink);
  background: var(--paper);
}

* { box-sizing: border-box; }
body { margin: 0; font-size: 1.0625rem; line-height: 1.7; -webkit-font-smoothing: antialiased; min-height: 100vh; display: flex; flex-direction: column; background: var(--paper); }
main { flex: 1 0 auto; }
a { color: inherit; text-decoration-thickness: 1px; text-decoration-color: color-mix(in srgb, var(--ink) 35%, transparent); text-underline-offset: 4px; }
a:hover { color: var(--accent); text-decoration-color: var(--accent); }
a:focus-visible { outline: 1px solid var(--accent); outline-offset: 4px; }

.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 1.25rem; }
@media (min-width: 720px) { .wrap { padding: 0 2.5rem; } }

.skip { position: absolute; left: -9999px; top: 0; }
.skip:focus { left: 1rem; top: 1rem; z-index: 10; background: var(--ink); color: var(--paper); padding: .5rem .9rem; }

/* Header */
.site-header { border-bottom: 1px solid var(--line); }
.header-row { display: flex; align-items: center; justify-content: space-between; height: 5.25rem; gap: 1rem; }
.brand { display: inline-flex; align-items: center; gap: .7rem; text-decoration: none; font-family: var(--serif); font-size: 1.45rem; letter-spacing: .01em; }
.brand img { display: block; }
/* One row: mark, name and nav share a centre line. Text boxes are trimmed
   to cap height so centring compares letters, not line boxes. */
.brand span, nav a { line-height: 1; text-box: trim-both cap alphabetic; }
nav { align-items: center; }
nav { display: flex; gap: 2rem; font-size: .74rem; letter-spacing: .2em; text-transform: uppercase; }
nav a { text-decoration: none; color: var(--muted); }
nav a:hover { color: var(--ink); }
@media (max-width: 560px) { nav { gap: 1.1rem; letter-spacing: .14em; } .brand { font-size: 1.25rem; } }

/* Type */
h1, h2, h3, dt { font-family: var(--serif); font-weight: 400; }
.label {
  font-size: .72rem; letter-spacing: .32em; text-transform: uppercase; color: var(--accent); margin: 0;
}

/* Hero */
.hero { padding: 5.5rem 1.25rem 5rem; }
@media (min-width: 720px) { .hero { padding: 9rem 2.5rem 7.5rem; } }
.hero h1 { font-size: clamp(2.5rem, 6.2vw, 5rem); line-height: 1.06; letter-spacing: -.015em; margin: 1.6rem 0 2rem; max-width: 17ch; }
.deck { font-size: clamp(1.08rem, 1.9vw, 1.3rem); line-height: 1.65; color: var(--muted); max-width: 38rem; margin: 0; }
.meta { margin: 3rem 0 0; padding-top: 1.4rem; border-top: 1px solid var(--line); max-width: 38rem; font-size: .74rem; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.meta a { text-decoration: none; color: var(--ink); }
.meta a:hover { color: var(--accent); }
.dot { display: none; }

/* Sections: heading in a narrow left column on wide screens */
.section { padding-top: 4.5rem; padding-bottom: 4.5rem; border-top: 1px solid var(--line); }
@media (min-width: 720px) { .section { padding-top: 6rem; padding-bottom: 6rem; } }
.section h2 { font-size: clamp(1.7rem, 3vw, 2.2rem); line-height: 1.15; letter-spacing: -.01em; margin: 0 0 2.2rem; }
@media (min-width: 960px) {
  .section { display: grid; grid-template-columns: 16rem minmax(0, 1fr); column-gap: 5rem; align-items: start; }
  .section > h2 { grid-column: 1; grid-row: 1 / span 3; margin: 0; }
  .section > :not(h2) { grid-column: 2; }
}
.prose { max-width: 40rem; }
.prose p { margin: 0 0 1.3rem; }
.prose p:last-child { margin-bottom: 0; }

/* Building blocks: hairlines instead of boxes */
.grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 2.4rem 3.5rem; grid-template-columns: 1fr; }
@media (min-width: 680px) { .grid { grid-template-columns: repeat(2, 1fr); } }
.card { border-top: 1px solid var(--ink); padding-top: 1.3rem; }
.card h3 { font-size: 1.32rem; line-height: 1.3; margin: 0 0 .6rem; }
.card p { margin: 0; color: var(--muted); font-size: 1rem; }

/* Principles */
.principles { display: grid; gap: 2.4rem 3.5rem; margin: 0; grid-template-columns: 1fr; }
@media (min-width: 680px) { .principles { grid-template-columns: repeat(2, 1fr); } }
.principles > div { border-top: 1px solid var(--line); padding-top: 1.3rem; }
.principles dt { font-size: 1.32rem; line-height: 1.3; margin-bottom: .6rem; }
.principles dd { margin: 0; color: var(--muted); font-size: 1rem; }

/* Status */
.stages { margin: 2.2rem 0 0; max-width: 40rem; border-top: 1px solid var(--line); }
.stages > div { display: grid; grid-template-columns: 1fr; gap: .3rem 2rem; padding: 1.2rem 0; border-bottom: 1px solid var(--line); }
@media (min-width: 600px) { .stages > div { grid-template-columns: 9.5rem 1fr; } }
.stages dt { font-family: var(--sans); font-size: .72rem; letter-spacing: .24em; text-transform: uppercase; color: var(--accent); padding-top: .3rem; }
.stages dd { margin: 0; }

/* Legal */
.legal { padding-top: 5rem; padding-bottom: 5rem; max-width: 46rem; }
.legal h1 { font-size: clamp(2rem, 4.5vw, 3rem); line-height: 1.1; margin: 1rem 0 2.5rem; }
.legal h2 { font-size: 1.6rem; line-height: 1.25; margin: 3rem 0 1rem; }
.legal h3 { font-size: 1.2rem; line-height: 1.3; margin: 1.8rem 0 .5rem; }
.updated { margin-top: 3rem; font-size: .85rem; color: var(--muted); }

/* Footer */
.site-footer { border-top: 1px solid var(--line); background: var(--paper-deep); margin-top: 0; }
.footer-row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem 2rem; padding-top: 2rem; padding-bottom: 2rem; font-size: .85rem; color: var(--muted); }
.footer-row p { margin: 0; }
.footer-row span { margin: 0 .45rem; }

/* Essay sections */
.lead { font-family: var(--serif); font-size: clamp(1.2rem, 2.1vw, 1.42rem); line-height: 1.55; color: var(--ink); }
.essay h3 { font-size: 1.32rem; line-height: 1.3; margin: 2.6rem 0 .7rem; padding-top: 1.3rem; border-top: 1px solid var(--line); }
.essay h3 ~ p { color: var(--muted); }
.prose + .principles { margin-top: 3rem; }

/* Photographs: one shared grade so the set reads as one shoot */
figure { margin: 0; }
figure img { display: block; width: 100%; height: auto; background: var(--paper-deep); filter: saturate(.86) sepia(.07) contrast(.97); }
figcaption {
  display: flex; align-items: flex-start; gap: .9rem; margin-top: 1rem;
  font-family: var(--serif); font-style: italic; font-size: .98rem; color: var(--muted);
}
figcaption::before { content: ""; flex: 0 0 2.2rem; height: 1px; margin-top: .8em; background: var(--accent); }

.hero-media { margin-top: 3.5rem; }
.hero-media img { aspect-ratio: 4 / 5; object-fit: cover; max-height: 34rem; }
@media (min-width: 960px) {
  .hero { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); column-gap: 5rem; align-items: start; }
  .hero > :not(.hero-media) { grid-column: 1; }
  /* The photo spans from the label to the rule under the text. */
  .hero { align-items: stretch; }
  .hero-media { grid-column: 2; grid-row: 1 / span 4; margin-top: .4rem; display: flex; flex-direction: column; }
  .hero-media img { flex: 1 1 0; min-height: 0; height: 0; aspect-ratio: auto; max-height: none; }
}

.detail-media { margin-top: 3.2rem; max-width: 40rem; }

.band { border-top: 1px solid var(--line); padding-top: 0; }
.band img { aspect-ratio: 21 / 9; object-fit: cover; min-height: 14rem; }
.band figcaption { justify-content: flex-end; margin-top: 1rem; }
.band + .section { border-top: 0; }

/* The two framed photos sit on the page: rounded, a hairline edge and a soft shadow. */
.hero-media img, .detail-media img {
  border-radius: 14px;
  box-shadow: 0 0 0 1px rgba(23, 21, 18, .06), 0 1px 2px rgba(23, 21, 18, .06), 0 24px 48px -28px rgba(23, 21, 18, .45);
}
@media (min-width: 960px) { .hero-media img, .detail-media img { border-radius: 20px; } }

/* Product screenshots: framed like the photos, desktop with a phone in front. */
.shots { display: grid; gap: 3rem 2.5rem; grid-template-columns: 1fr; margin-top: 3rem; }
@media (min-width: 720px) { .shots { grid-template-columns: 1fr 1fr; } .shot-hero { grid-column: 1 / -1; } }
.shot img { filter: none; border-radius: 12px; box-shadow: 0 0 0 1px rgba(23, 21, 18, .08), 0 1px 2px rgba(23, 21, 18, .06), 0 24px 48px -28px rgba(23, 21, 18, .45); }
.shot-stage { position: relative; padding-right: 3.5rem; padding-bottom: 2.5rem; }
.shot-phone { position: absolute; right: 0; bottom: 0; width: 24%; max-width: 11rem; border-radius: 18px !important;
  box-shadow: 0 0 0 1px rgba(23, 21, 18, .12), 0 0 0 6px var(--paper), 0 0 0 7px rgba(23, 21, 18, .1), 0 30px 50px -24px rgba(23, 21, 18, .5) !important; }
