/* Curate & Harness — shared design tokens and base styles.
   Single source of truth for color, type, spacing, and radius. Every public and
   subscriber-facing page links this file rather than redefining these values. */
:root{
  color-scheme:light;

  /* Color: rose (primary), sage (secondary), plum (accent), two neutrals. */
  --rose:#9C4E66;
  --rose-deep:#7D3D52;
  --sage:#7F9271;
  --sage-deep:#5F6F52;
  --plum:#5B3F58;
  --paper:#F6F0EC;
  --ink:#332A30;
  --muted:#6B5C62;
  --line:#E4D9D3;
  --surface:#FFFFFF;

  /* Type: one serif for headings, one sans for everything else. */
  --font-serif: Georgia, "Times New Roman", serif;
  --font-sans: "Avenir Next", Avenir, system-ui, -apple-system, "Segoe UI", sans-serif;

  /* A deliberate type scale rather than browser defaults. */
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.375rem;
  --text-2xl: 1.75rem;
  --text-3xl: 2.25rem;
  --text-4xl: 2.75rem;

  /* Spacing on a 4px base. */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --space-16: 64px;

  /* Radius varies by what it's applied to — not a single blanket value. */
  --radius-sm: 4px;  /* inputs, tags, small controls */
  --radius-md: 8px;  /* buttons, product cards */
  --radius-lg: 14px; /* large panels, used sparingly */
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--text-base);
  line-height:1.6;
  font-synthesis:none;
}
h1,h2,h3{font-family:var(--font-serif);font-weight:400;margin:0;text-wrap:balance}
h1{font-size:var(--text-4xl);line-height:1.1;letter-spacing:-0.01em}
h2{font-size:var(--text-2xl);line-height:1.2}
h3{font-size:var(--text-lg);line-height:1.3}
p{margin:0;max-width:62ch}
p+p{margin-top:var(--space-4)}
a{color:inherit;text-underline-offset:3px}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.5}
[hidden]{display:none!important}
img{max-width:100%;display:block}

:focus-visible{outline:2px solid var(--plum);outline-offset:2px}

.button{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  padding:12px 22px;border-radius:var(--radius-md);font-weight:600;font-size:var(--text-sm);
  border:1px solid transparent;text-decoration:none;
}
.button-primary{background:var(--rose);color:#fff;border-color:var(--rose)}
.button-primary:hover:not(:disabled){background:var(--rose-deep);border-color:var(--rose-deep)}
.button-secondary{background:transparent;color:var(--plum);border-color:var(--plum)}
.button-secondary:hover:not(:disabled){background:rgba(91,63,88,0.07)}

.tag{
  display:inline-block;padding:4px 12px;border-radius:999px;font-size:var(--text-sm);
  font-weight:600;background:rgba(127,146,113,0.18);color:#4F5C44;
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms!important;animation-iteration-count:1!important;transition-duration:0.001ms!important}
}
