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

:root {
  --bg-primary: #fffafb;
  --bg-secondary: #fff1f2;
  --bg-tertiary: #f1eafb;
  --bg-card: #ffffff;
  --accent: #9f1239;
  --accent-hover: #7f0f2e;
  --accent-soft: #fda4af;
  --warm-tone: #f59e0b;
  --lilac-tone: #b9a3e3;
  --text-primary: #231a3f;
  --text-secondary: #56496f;
  --line: rgba(35, 26, 63, 0.14);
  --on-accent: #ffffff;
  --font-body: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --font-head: Georgia, 'Times New Roman', serif;
  --gutter: clamp(1rem, 4vw, 3rem);
  --measure: min(92vw, 72rem);
}

[data-theme="dark"] {
  --bg-primary: #231a3f;
  --bg-secondary: #2c2250;
  --bg-tertiary: #362a5e;
  --bg-card: #2c2250;
  --accent: #fda4af;
  --accent-hover: #fecdd3;
  --text-primary: #f5eefa;
  --text-secondary: #c9bedb;
  --line: rgba(245, 238, 250, 0.16);
  --on-accent: #231a3f;
}

html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  scroll-behavior: auto;
}

body {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-primary);
}

h1, h2, h3, h4 {
  font-family: var(--font-head);
  font-weight: 700;
  line-height: 1.15;
  color: var(--text-primary);
  hyphens: auto;
  -webkit-hyphens: auto;
  overflow-wrap: break-word;
}

h1 { font-size: clamp(2.1rem, 7vw, 3rem); line-height: 1.12; }
h2 { font-size: clamp(1.6rem, 5vw, 2.1rem); }
h3 { font-size: clamp(1.15rem, 3.2vw, 1.4rem); }

p {
  font-size: 1rem;
  line-height: 1.5;
  margin-bottom: 0.5rem;
  hyphens: auto;
  -webkit-hyphens: auto;
}

a {
  color: var(--accent);
  text-decoration: none;
}

a:hover { text-decoration: underline; }

ul, ol { padding-left: 1.2rem; }

li { margin-bottom: 0.35rem; }

img, svg {
  display: block;
  max-width: 100%;
}

img { height: auto; }

button {
  cursor: pointer;
  border: none;
  background: none;
  font: inherit;
  color: inherit;
}

input, select, textarea { font: inherit; }

strong { font-weight: 700; }

:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 3px;
}

* {
  animation-name: none !important;
  transition-property: none !important;
}
