/* --- Self-hosted typefaces (SIL Open Font License, see fonts/OFL-*.txt) ------- */
@font-face {
  font-family:"EB Garamond"; src:url("fonts/eb-garamond.woff2") format("woff2");
  font-weight:400 700; font-style:normal; font-display:swap;
}
@font-face {
  font-family:"EB Garamond"; src:url("fonts/eb-garamond-italic.woff2") format("woff2");
  font-weight:400 700; font-style:italic; font-display:swap;
}
@font-face {
  font-family:"Source Serif 4"; src:url("fonts/source-serif-4.woff2") format("woff2");
  font-weight:400 700; font-style:normal; font-display:swap;
}
@font-face {
  font-family:"Source Serif 4"; src:url("fonts/source-serif-4-italic.woff2") format("woff2");
  font-weight:400 700; font-style:italic; font-display:swap;
}
@font-face {
  font-family:"Karla"; src:url("fonts/karla.woff2") format("woff2");
  font-weight:400 700; font-style:normal; font-display:swap;
}

/* Alchemilla Press — site styles
   Palette, type and rule weights follow the Alchemilla Press identity standards. */

:root {
  /* brand */
  --ink:#2A211B;
  --paper:#F5EFE2;
  --warm:#FBF8F1;
  --gold:#C08B3C;
  --brass:#8A5F20;
  --green:#5F6B45;
  --red:#9C4A34;
  --vellum:#E6DBC6;
  --sable:#6B5D51;

  /* roles (light) */
  --ground:var(--paper);
  --surface:var(--warm);
  --panel:var(--vellum);
  --text:var(--ink);
  --muted:var(--sable);
  --accent:var(--brass);
  --accent-bright:var(--gold);
  --rule:rgba(42,33,27,.20);
  --rule-soft:rgba(42,33,27,.11);
  --footer-bg:var(--ink);
  --footer-text:#E8DFCE;
  --footer-muted:#A8988A;
  --selection:rgba(192,139,60,.28);

  --display:"EB Garamond",Georgia,"Times New Roman",serif;
  --body:"Source Serif 4",Georgia,"Times New Roman",serif;
  --util:"Karla","Helvetica Neue",Arial,sans-serif;

  --gutter:clamp(20px,5vw,56px);
  --wrap:1160px;
  --measure:66ch;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ground:#17120F;
    --surface:#201A15;
    --panel:#2A221C;
    --text:#EFE6D6;
    --muted:#A89684;
    --accent:#D8A459;
    --accent-bright:#D8A459;
    --rule:rgba(239,230,214,.20);
    --rule-soft:rgba(239,230,214,.10);
    --footer-bg:#100C0A;
    --footer-text:#E8DFCE;
    --footer-muted:#9C8B7C;
  }
}
:root[data-theme="dark"] {
  --ground:#17120F; --surface:#201A15; --panel:#2A221C;
  --text:#EFE6D6; --muted:#A89684; --accent:#D8A459; --accent-bright:#D8A459;
  --rule:rgba(239,230,214,.20); --rule-soft:rgba(239,230,214,.10);
  --footer-bg:#100C0A; --footer-text:#E8DFCE; --footer-muted:#9C8B7C;
}

*, *::before, *::after { box-sizing:border-box; }

html { -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  * { animation-duration:.001ms !important; transition-duration:.001ms !important; }
}

body {
  margin:0;
  background:var(--ground);
  color:var(--text);
  font-family:var(--body);
  font-size:17.5px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection { background:var(--selection); }

img, svg { max-width:100%; height:auto; }

a { color:inherit; text-decoration:none; }
a:focus-visible, button:focus-visible {
  outline:2px solid var(--accent); outline-offset:3px; border-radius:1px;
}

.wrap { width:min(var(--wrap), 100% - (var(--gutter) * 2)); margin-inline:auto; }
.narrow { max-width:var(--measure); }

.skip {
  position:absolute; left:-9999px; top:0; background:var(--ink); color:var(--paper);
  padding:12px 18px; font-family:var(--util); font-size:13px; z-index:50;
}
.skip:focus { left:12px; top:12px; }

/* ---------------------------------------------------------------- type */
h1, h2, h3, h4 { font-family:var(--display); font-weight:500; margin:0; text-wrap:balance; }
h1 { font-size:clamp(31px,4.6vw,48px); line-height:1.1; letter-spacing:.005em; }
h2 { font-size:clamp(24px,3vw,33px); line-height:1.18; }
h3 { font-size:clamp(19px,2.1vw,23px); line-height:1.25; }
p { margin:0 0 1.05em; max-width:var(--measure); }
p:last-child { margin-bottom:0; }
strong, b { font-weight:600; }

.eyebrow {
  font-family:var(--util); font-size:11px; font-weight:700; letter-spacing:.26em;
  text-transform:uppercase; color:var(--muted); margin:0 0 18px;
}
.lede {
  font-family:var(--display); font-size:clamp(19px,2.2vw,24px); line-height:1.5;
  color:var(--text); max-width:36ch;
}
.small { font-family:var(--util); font-size:13.5px; line-height:1.6; color:var(--muted); }
.mono { font-family:var(--util); font-variant-numeric:tabular-nums; }
.hr { border:0; border-top:1px solid var(--rule-soft); margin:0; }
.hr-strong { border:0; border-top:1px solid var(--rule); margin:0; }

.link {
  font-family:var(--util); font-size:12.5px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--text);
  border-bottom:1px solid var(--accent); padding-bottom:3px;
  display:inline-block; transition:color .18s ease, border-color .18s ease;
}
.link:hover { color:var(--accent); }
.link::after { content:" \2192"; letter-spacing:0; }
.inline-link { color:var(--text); border-bottom:1px solid var(--rule); }
.inline-link:hover { border-color:var(--accent); color:var(--accent); }

/* ---------------------------------------------------------------- header */
.site-header { border-bottom:1px solid var(--rule-soft); }
.site-header .bar {
  display:flex; flex-wrap:wrap; align-items:center; gap:18px 32px;
  padding:22px 0 20px;
}
.site-header .brand { display:block; width:min(268px,58vw); }
.site-header .brand picture, .site-header .brand img { display:block; width:100%; height:auto; }
.site-nav { margin-left:auto; }
.site-nav ul {
  list-style:none; display:flex; flex-wrap:wrap; gap:8px 26px; margin:0; padding:0;
}
.site-nav a {
  font-family:var(--util); font-size:12px; font-weight:500; letter-spacing:.15em;
  text-transform:uppercase; color:var(--muted);
  padding:4px 0; border-bottom:1px solid transparent;
}
.site-nav a:hover { color:var(--text); }
.site-nav a[aria-current="page"] { color:var(--text); border-bottom-color:var(--accent); }

/* ---------------------------------------------------------------- sections */
main { display:block; }
.section { padding:clamp(52px,7vw,88px) 0; border-top:1px solid var(--rule-soft); }
.section:first-of-type { border-top:0; }
.section-head { display:flex; align-items:baseline; gap:20px; margin-bottom:34px; }
.section-head h2 { margin:0; }
.section-head .aside {
  margin-left:auto; font-family:var(--util); font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); white-space:nowrap;
}

/* hero */
.hero { padding:clamp(56px,8vw,104px) 0 clamp(44px,6vw,72px); }
.hero-grid { display:grid; gap:44px; align-items:center; }
@media (min-width:860px) {
  .hero-grid { grid-template-columns:minmax(0,1fr) minmax(200px,282px); gap:72px; }
}
.hero h1 { font-size:clamp(33px,5.2vw,58px); line-height:1.06; max-width:14ch; }
.hero .lede { margin-top:26px; }
.hero .actions { display:flex; flex-wrap:wrap; gap:16px 34px; margin-top:36px; }
.hero-mark { justify-self:center; width:min(258px,64vw); }
.hero-mark picture, .hero-mark img { display:block; width:100%; height:auto; }

/* ---------------------------------------------------------------- books */
.books { display:grid; gap:1px; background:var(--rule-soft); border:1px solid var(--rule-soft); }
.book { background:var(--ground); padding:clamp(24px,3.4vw,38px); display:grid; gap:30px; }
@media (min-width:760px) { .book { grid-template-columns:186px minmax(0,1fr); gap:44px; } }
.cover {
  background:var(--panel); border:1px solid var(--rule-soft); aspect-ratio:2/3;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px;
  padding:20px; text-align:center;
}
.cover-img {
  display:block; width:100%; height:auto;
  border:1px solid var(--rule-soft);
  box-shadow:0 1px 0 rgba(42,33,27,.06), 0 14px 30px -22px rgba(42,33,27,.55);
}
@media (max-width:759px) { .cover-img { max-width:210px; } }
.cover picture, .cover img { display:block; width:56px; height:auto; }
.cover span {
  font-family:var(--util); font-size:10px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted);
}
.book h3 { margin-bottom:6px; }
.book .byline { font-family:var(--display); font-style:italic; font-size:18px; color:var(--muted); margin:0 0 18px; }
.book .status {
  display:inline-block; font-family:var(--util); font-size:10.5px; font-weight:700;
  letter-spacing:.18em; text-transform:uppercase; color:var(--accent);
  border:1px solid var(--accent); padding:4px 10px; margin-bottom:16px;
}
.specs { display:grid; gap:0; margin:22px 0 0; }
.specs div {
  display:grid; grid-template-columns:132px minmax(0,1fr); gap:16px;
  padding:9px 0; border-top:1px solid var(--rule-soft);
}
.specs div:last-child { border-bottom:1px solid var(--rule-soft); }
.specs dt {
  font-family:var(--util); font-size:10.5px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted); padding-top:4px;
}
.specs dd { margin:0; font-family:var(--util); font-size:14px; font-variant-numeric:tabular-nums; }

/* ---------------------------------------------------------------- blocks */
.cols { display:grid; gap:clamp(28px,4vw,52px); }
@media (min-width:760px) { .cols-2 { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (min-width:860px) { .cols-3 { grid-template-columns:repeat(3,minmax(0,1fr)); } }
.cols p { max-width:none; }

.panel { background:var(--surface); border:1px solid var(--rule-soft); padding:clamp(24px,3.2vw,36px); }
.panel h3 { margin-bottom:12px; }

.facts { list-style:none; margin:0; padding:0; display:grid; gap:0; }
.facts li {
  display:grid; grid-template-columns:auto minmax(0,1fr); gap:16px;
  padding:13px 0; border-top:1px solid var(--rule-soft); align-items:baseline;
}
.facts li:last-child { border-bottom:1px solid var(--rule-soft); }
.facts .k {
  font-family:var(--util); font-size:10.5px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted); min-width:126px;
}
.facts .v { font-family:var(--util); font-size:14.5px; font-variant-numeric:tabular-nums; }

.qa { border-top:1px solid var(--rule); }
.qa > div { border-bottom:1px solid var(--rule-soft); padding:24px 0; }
.qa h3 { font-family:var(--display); font-size:21px; margin-bottom:10px; }
.qa p { font-size:16.5px; }

.pull {
  font-family:var(--display); font-size:clamp(22px,2.8vw,30px); line-height:1.36;
  border-top:1px solid var(--rule); border-bottom:1px solid var(--rule);
  padding:30px 0; margin:0; max-width:30ch;
}
.pull cite { display:block; font-family:var(--util); font-style:normal; font-size:11px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin-top:18px; }

.note {
  font-family:var(--util); font-size:12.5px; line-height:1.6; color:var(--muted);
  border-left:2px solid var(--accent-bright); padding:4px 0 4px 16px; margin:26px 0 0;
  max-width:60ch;
}

/* ---------------------------------------------------------------- footer */
.site-footer { background:var(--footer-bg); color:var(--footer-text); margin-top:clamp(56px,8vw,96px); }
.site-footer a { color:var(--footer-text); }
.site-footer a:hover { color:var(--accent-bright); }
.footer-grid { display:grid; gap:36px; padding:clamp(44px,6vw,72px) 0 34px; }
@media (min-width:760px) { .footer-grid { grid-template-columns:1.1fr .8fr 1fr; gap:46px; } }
@media (min-width:1000px) { .footer-grid { grid-template-columns:1.25fr .7fr 1fr .6fr; gap:44px; } }
.site-footer .brand { width:min(230px,60vw); display:block; }
.site-footer .brand img { display:block; width:100%; height:auto; }
.site-footer h2 {
  font-family:var(--util); font-size:10.5px; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; color:var(--footer-muted); margin:0 0 16px;
}
.site-footer ul { list-style:none; margin:0; padding:0; display:grid; gap:11px; }
.site-footer li { font-family:var(--util); font-size:14px; }
.site-footer .blurb { font-size:15.5px; color:var(--footer-text); opacity:.86; margin-top:22px; max-width:34ch; }
.colophon {
  border-top:1px solid rgba(245,239,226,.16); padding:22px 0 clamp(30px,5vw,44px);
  display:flex; flex-wrap:wrap; gap:8px 30px;
  font-family:var(--util); font-size:12px; color:var(--footer-muted);
}
.colophon .right { margin-left:auto; }

/* ---------------------------------------------------------------- misc */
.page-head { padding:clamp(48px,6.5vw,86px) 0 clamp(30px,4vw,48px); border-bottom:1px solid var(--rule-soft); }
.page-head .lede { margin-top:22px; }
.crumbs { font-family:var(--util); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted); margin:0 0 20px; }
.crumbs a { border-bottom:1px solid var(--rule-soft); }
.center { text-align:center; }
.stack-mark { width:min(300px,70vw); margin:0 auto 34px; }
.stack-mark picture, .stack-mark img { display:block; width:100%; height:auto; }
.mt-l { margin-top:clamp(30px,4vw,46px); }

/* ---------------------------------------------------------------- book launch, Oct 2026 */
.eyebrow a { color:var(--text); border-bottom:1px solid var(--accent); }
.eyebrow a:hover { color:var(--accent); }
.book h3 a:hover, .book h2 a:hover { color:var(--accent); }
.book .book-title { font-size:clamp(27px,3.4vw,38px); line-height:1.12; margin-bottom:8px; }
.book .actions { display:flex; flex-wrap:wrap; gap:14px 32px; margin-top:28px; }
@media (min-width:760px) {
  #the-boy-who-borrowed-tomorrow { grid-template-columns:minmax(200px,300px) minmax(0,1fr); gap:52px; }
  .announce .book { grid-template-columns:minmax(170px,240px) minmax(0,1fr); }
}
.mt-s { margin-top:14px; }

.button {
  display:inline-block; font-family:var(--util); font-size:12.5px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--paper); background:var(--ink);
  padding:14px 22px; border:1px solid var(--ink); transition:background .18s ease, color .18s ease;
}
.button:hover { background:var(--brass); border-color:var(--brass); color:var(--paper); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .button { background:var(--accent); border-color:var(--accent); color:#17120F; }
  :root:not([data-theme="light"]) .button:hover { background:var(--text); border-color:var(--text); }
}
:root[data-theme="dark"] .button { background:var(--accent); border-color:var(--accent); color:#17120F; }
.file-note { display:inline-block; margin-left:14px; }

.sellsheet { display:grid; gap:36px; align-items:start; }
@media (min-width:820px) { .sellsheet { grid-template-columns:minmax(220px,340px) minmax(0,1fr); gap:60px; } }
.sellsheet-thumb { display:block; max-width:340px; }
.sellsheet-thumb img {
  display:block; width:100%; height:auto; border:1px solid var(--rule);
  box-shadow:0 1px 0 rgba(42,33,27,.06), 0 18px 36px -24px rgba(42,33,27,.6);
  transition:transform .2s ease;
}
.sellsheet-thumb:hover img { transform:translateY(-3px); }
.sellsheet .specs { margin-top:30px; }
.sellsheet h2 { margin-top:-6px; }

.prompts { margin:16px 0 0; padding-left:1.4em; display:grid; gap:10px; }
.prompts li { padding-left:6px; }
.prompts li::marker { font-family:var(--util); font-weight:700; color:var(--accent); }
.ticks { list-style:none; margin:16px 0 0; padding:0; display:grid; gap:9px; }
.ticks li { position:relative; padding-left:22px; }
.ticks li::before { content:""; position:absolute; left:2px; top:.62em; width:7px; height:7px;
  background:var(--accent-bright); transform:rotate(45deg); }
.cols h3 + .facts { margin-top:22px; }
.cols .facts { margin-top:22px; }
