/* The site's plain pages (privacy, terms, coffee): Twinhoods colours and type, light and dark.
   The theme follows the app's stored choice (data-theme, set inline in each page), else the system's. */

/* Fontsource's latin and latin-ext files with their unicode-range, so names like Nişantaşı or Łódź
   stay in one face; the latin-ext file loads only on a page that uses it. tests/plain-pages.test.ts
   checks every letter on the plain pages is covered. */
@font-face {
  font-family: 'Gabarito'; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url('/fonts/gabarito.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Gabarito'; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url('/fonts/gabarito-latin-ext.woff2') format('woff2-variations');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Inter Variable'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('/fonts/inter.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Inter Variable'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('/fonts/inter-latin-ext.woff2') format('woff2-variations');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root {
  --bg: #04060c;
  --card: #0b0f1a;
  --line: rgba(255, 255, 255, 0.1);
  --line-2: rgba(255, 255, 255, 0.18);
  --text: #e9edf7;
  --text-2: #c4cad8;
  --muted: #a0a8be;
  --accent: #ff6fa8;
  --link: #ff6fa8;
  --pin-a: #e8326f;
  --pin-b: #ff9cc2;
  --brand: #ff6fa8;
  --on-brand: #2a0414;
  --glow: rgba(255, 111, 168, 0.16);
  --sans: 'Inter Variable', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --display: 'Gabarito', var(--sans);
  color-scheme: dark;
}
:root[data-theme="light"] {
  --bg: #e9ecf1;
  --card: #fbfcfe;
  --line: rgba(18, 23, 34, 0.12);
  --line-2: rgba(18, 23, 34, 0.22);
  --text: #121722;
  --text-2: #2c3342;
  --muted: #465064;
  --accent: #c8175c;
  --link: #c8175c;
  --pin-a: #940f43;
  --pin-b: #e0306f;
  --brand: #c8175c;
  --on-brand: #ffffff;
  --glow: rgba(200, 23, 92, 0.1);
  color-scheme: light;
}

* { box-sizing: border-box; }
html { background: var(--bg); color: var(--text); -webkit-text-size-adjust: 100%; }
body {
  margin: 0; min-height: 100vh; background: var(--bg);
  background-image: radial-gradient(1200px 420px at 50% -180px, var(--glow), transparent 70%);
  background-repeat: no-repeat;
  font: 16px/1.65 var(--sans); -webkit-font-smoothing: antialiased;
}
main { max-width: 680px; margin: 0 auto; padding: 28px 16px 72px; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.brand { display: inline-flex; align-items: center; gap: 9px; color: var(--text); text-decoration: none; }
.brand svg { width: 34px; height: 26px; overflow: visible; }
.brand span { font-family: var(--display); font-weight: 500; font-size: 22px; letter-spacing: -0.035em; line-height: 1; }
.brand b { font-weight: 800; }
.brand:hover span { color: var(--link); }

h1 { font-family: var(--display); font-weight: 800; font-size: clamp(34px, 7vw, 48px); line-height: 1.02; letter-spacing: -0.035em; margin: 44px 0 10px; }
h2 { font-family: var(--display); font-weight: 700; font-size: 22px; line-height: 1.2; letter-spacing: -0.02em; margin: 40px 0 8px; }
h3 { font-size: 16px; margin: 22px 0 4px; }
p, li { color: var(--text-2); }
strong { color: var(--text); font-weight: 600; }
ul { padding-left: 20px; }
li { margin: 4px 0; }
li::marker { color: var(--pin-a); }
a { color: var(--link); text-underline-offset: 2px; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
.lede { font-size: 18px; color: var(--text); }
.muted { color: var(--muted); font-size: 14px; }
.toc { display: flex; flex-wrap: wrap; gap: 6px 8px; margin: 18px 0 0; padding: 0; list-style: none; }
.toc a { display: inline-block; padding: 4px 11px; border: 1px solid var(--line-2); border-radius: 999px; color: var(--text-2); font-size: 14px; text-decoration: none; }
.toc a:hover { border-color: var(--link); color: var(--text); }
.box { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 4px 18px; margin: 16px 0; }
table { width: 100%; border-collapse: collapse; font-size: 15px; margin: 12px 0; }
th, td { text-align: left; vertical-align: top; padding: 9px 10px 9px 0; border-bottom: 1px solid var(--line); color: var(--text-2); }
th { color: var(--text); font-weight: 600; }
footer { margin-top: 48px; padding-top: 16px; border-top: 1px solid var(--line); }
footer p { color: var(--muted); font-size: 14px; margin: 6px 0; }
footer a { color: var(--muted); }
h2[id] { scroll-margin-top: 16px; }

@media (max-width: 520px) {
  table, thead, tbody, tr, th, td { display: block; }
  thead { display: none; }
  tr { padding: 8px 0; border-bottom: 1px solid var(--line); }
  td { border: 0; padding: 2px 0; }
  td:first-child { color: var(--text); font-weight: 600; }
}

/* Questions and answers (faq): <details><summary>, a thin line between them, a + that turns into ×. */
details { border-bottom: 1px solid var(--line); }
details > summary {
  position: relative; display: block; list-style: none; cursor: pointer;
  padding: 13px 34px 13px 0; color: var(--text); font-weight: 600; line-height: 1.4;
}
details > summary::-webkit-details-marker { display: none; }
details > summary::after {
  content: ''; position: absolute; right: 6px; top: 50%; width: 12px; height: 12px; margin-top: -6px;
  background: linear-gradient(var(--accent), var(--accent)) center / 12px 2px no-repeat,
              linear-gradient(var(--accent), var(--accent)) center / 2px 12px no-repeat;
  transition: transform 0.2s;
}
details[open] > summary::after { transform: rotate(45deg); }
details > summary:hover { color: var(--link); }
details > :not(summary) { margin: 0 0 12px; }
details > :last-child { margin-bottom: 16px; }
@media (prefers-reduced-motion: reduce) { details > summary::after { transition: none; } }

/* Primary button (press, brand) */
.btn { display: inline-flex; align-items: center; gap: 8px; min-height: 46px; padding: 0 20px; border-radius: 999px; background: var(--brand); color: var(--on-brand); font-weight: 600; font-size: 16px; text-decoration: none; box-shadow: 0 10px 30px var(--glow); transition: transform 0.15s, filter 0.15s; }
.btn:hover { transform: translateY(-1px); filter: brightness(1.06); }
.btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.btn.ghost { background: transparent; color: var(--text); border: 1px solid var(--line-2); box-shadow: none; }
.btn.ghost:hover { border-color: var(--link); }
