/* Enlázate design tokens + shared base. Loaded by every first-party page
   (marketing, legal, dashboard) via styleLinks() in src/assets.js — bump
   ASSET_VER there whenever any file in /styles changes, or the week-long
   cache in public/_headers keeps serving the old bytes.

   The guest-facing invitation (src/renderer.js) does NOT load this file: its
   colors/fonts are interpolated per wedding theme and must stay inline.

   One palette for the whole product. The marketing/legal pages historically
   named these --gold/--bg and the dashboard --accent/--paper with slightly
   different hex values; the aliases below keep both vocabularies working
   while the values can no longer drift apart. */
:root {
  /* brand */
  --accent: #8a6d2f;
  --accent-dark: #6f5722;
  --accent-soft: #f5ead0;
  --accent-line: #d9c894;
  --gold: var(--accent);
  --gold-soft: #e9dfc8;

  /* surfaces + text */
  --paper: #faf7f2;
  --bg: var(--paper);
  --surface: #fff;
  --ink: #3d3a34;
  --ink-soft: #6b6656;
  --muted: #75705f;
  --border: #e6e2d8;
  --border-soft: #efece1;

  /* feedback */
  --success: #1e6b34;
  --success-bg: #dcefe0;
  --danger: #b3261e;
  --danger-dark: #8f1e18;
  --danger-bg: #fbe9e7;

  /* shape */
  --radius-lg: 14px;
  --radius: 10px;
  --radius-sm: 7px;
  --shadow-sm: 0 1px 2px rgba(38, 36, 31, .05);
  --shadow-md: 0 6px 24px rgba(38, 36, 31, .08);

  /* type */
  --font-serif: 'Cormorant Garamond', Georgia, serif;
  --font-head: 'Fraunces', Georgia, serif;

  /* layout: one width scale for every page. --page-max is the outer column
     everywhere; --prose-max is the narrower measure for long-form text. */
  --page-max: 960px;
  --prose-max: 720px;
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); color: var(--ink); }
/* Safety net: a stray wide element must not make the whole page pan sideways
   on phones. `clip` rather than `hidden` so no scroll container is created
   and position: sticky (dashboard header, editor save-bar) keeps working;
   browsers without `clip` fall back to today's behavior. And long unbroken
   words (German compounds in headings, slugs, emails) wrap rather than
   overflow their box — overflow-wrap inherits everywhere from body. */
html, body { overflow-x: clip; }
body { overflow-wrap: break-word; }
::selection { background: var(--accent-soft); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
/* Author display rules on buttons/links beat the UA stylesheet's [hidden]
   (author origin wins), so restate it with priority. */
[hidden] { display: none !important; }
