:root{
  --bg:#fdfaf9; --fg:#2b2320; --muted:#6d5f5a;
  --accent:#c07a6d; --rule:#ece0dc; --card:#ffffff;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#1a1614; --fg:#f2ebe8; --muted:#a89a95;
         --accent:#d9958a; --rule:#332b28; --card:#221d1b; }
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--fg);
  font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-text-size-adjust:100%;
}
.wrap{max-width:44rem;margin:0 auto;padding:3rem 1.25rem 5rem}
header{border-bottom:1px solid var(--rule);padding-bottom:1.5rem;margin-bottom:2.5rem}
.brand{font-weight:600;letter-spacing:-.01em;color:var(--accent);text-decoration:none;font-size:1.05rem}
h1{font-size:1.75rem;line-height:1.25;letter-spacing:-.02em;margin:.75rem 0 .35rem}
.updated{color:var(--muted);font-size:.875rem;margin:0}
h2{font-size:1.15rem;letter-spacing:-.01em;margin:2.5rem 0 .6rem}
h3{font-size:1rem;margin:1.6rem 0 .4rem}
p,li{color:var(--fg)}
ul{padding-left:1.15rem}
li{margin:.3rem 0}
a{color:var(--accent)}
.note{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:1rem 1.15rem;margin:1.5rem 0}
.note p{margin:0;color:var(--muted);font-size:.925rem}
dl{margin:0}
dt{font-weight:600;margin-top:1rem}
dd{margin:.15rem 0 0;color:var(--muted)}
footer{border-top:1px solid var(--rule);margin-top:4rem;padding-top:1.5rem;font-size:.875rem;color:var(--muted)}
footer a{margin-right:1rem}
.todo{background:#fff4e5;border:1px solid #f0d0a0;color:#6b4a10;border-radius:10px;padding:.85rem 1rem;margin:1rem 0;font-size:.9rem}
@media (prefers-color-scheme: dark){ .todo{background:#2e2313;border-color:#5a4520;color:#e8c98a} }

/* --- Landing page (index.html) ------------------------------------------ */
.eyebrow{
  text-transform:uppercase; letter-spacing:.09em; font-size:.75rem;
  font-weight:600; color:var(--accent); margin:0 0 1rem;
}
.hero-title{font-size:2.5rem;line-height:1.1;letter-spacing:-.03em;margin:0 0 1rem}
.lede{font-size:1.125rem;line-height:1.6;color:var(--muted);margin:0 0 2.5rem;max-width:34rem}
.features{list-style:none;padding:0;margin:0;display:grid;gap:1rem}
.features li{
  background:var(--card); border:1px solid var(--rule); border-radius:12px;
  padding:1rem 1.15rem; margin:0; display:flex; flex-direction:column; gap:.2rem;
}
.features strong{font-size:1rem;letter-spacing:-.01em}
.features span{color:var(--muted);font-size:.925rem}
.fineprint{margin:1rem 0 0;font-size:.8rem;line-height:1.5}

/* Teaser: the page content sits behind a blur, "Coming soon" on top.
   The blur is decoration, not a paywall - the copy is still in the source.
   Legal pages are not deployed yet - see .vercelignore. */
.teaser .wrap{
  min-height:100vh; min-height:100svh;
  display:flex; flex-direction:column; justify-content:center;
}
.stage{position:relative; display:grid; place-items:center; padding:2rem 0}
.veil{
  filter:blur(14px); opacity:.5; user-select:none; pointer-events:none;
  grid-area:1/1; width:100%;
}
.coming-soon{
  grid-area:1/1; z-index:1; margin:0;
  font-size:2rem; font-weight:600; letter-spacing:-.02em; color:var(--fg);
  text-align:center;
}

@media (min-width:40rem){
  .hero-title{font-size:3.25rem}
  .features{grid-template-columns:repeat(3,1fr)}
  .veil{filter:blur(20px)}
  .coming-soon{font-size:2.5rem}
}
/* Blur can read as a rendering fault when motion/effects are reduced. */
@media (prefers-reduced-transparency:reduce){
  .veil{filter:blur(24px);opacity:.3}
}
