/* ==========================================================================
   Atsuma — shared styles for /privacy, /terms, /support
   ==========================================================================
   Kept as one small stylesheet rather than duplicated per page, because these
   three pages will drift apart otherwise. Tokens match the app's AppColors
   ThemeExtension so the web reads as the same product.

   NO web fonts. These pages must render instantly and work offline-ish; a
   blocked Google Fonts request should never leave a legal page unstyled.
   System stack is close enough to Inter on Apple platforms and correct
   everywhere else. It also means one less third-party request to allow when
   the CSP lands in Phase 4.

   i18n: no fixed widths on text containers. DE runs ~35% longer than EN, and
   JA/KO wrap without spaces — hence overflow-wrap on headings.
   ========================================================================== */

:root {
  --canvas: #F5F5F9;
  --card: #FFFFFF;
  --field: #F1F1F6;
  --line: #E6E6EE;
  --line-soft: #EFEFF5;
  --ink: #14141C;
  --ink-2: #4A4A5C;
  --ink-3: #82829A;
  --purple: #6C63FF;
  --purple-ink: #5147E8;
  --purple-wash: #F0EFFF;
  --shadow: 0 1px 2px rgba(20, 20, 40, .05), 0 8px 24px -12px rgba(20, 20, 40, .14);

  /* L249 — THE CHROME'S VOCABULARY, mapped onto this family's palette.
     public/chrome.css is written in the guest sheet's token names because that
     is the copy with ~20 route shapes behind it. This file's names predate
     those and are used by 400 lines of prose styling below, so aliasing is far
     cheaper than renaming — and it keeps each family's own palette intact
     rather than forcing one set of colours onto documents designed apart.
     --primary is the literal, not --purple: this file lightens --purple to
     #8981FF in dark, and the app's wordmark is an unconditional #6C63FF. */
  --primary: #6C63FF;
  --on-surface: var(--ink);
  --on-surface-variant: var(--ink-3);
  --surface: var(--card);
  --border: var(--line);
}

@media (prefers-color-scheme: dark) {
  :root {
    --canvas: #0D0D13;
    --card: #17171F;
    --field: #20202B;
    --line: #2A2A38;
    --line-soft: #22222E;
    --ink: #F2F2F7;
    --ink-2: #A9A9BE;
    --ink-3: #75758C;
    --purple: #8981FF;
    --purple-ink: #A79FFF;
    --purple-wash: #1E1B3A;
    --shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -12px rgba(0, 0, 0, .6);

    /* The aliases follow the dark palette; --primary does not, by design. */
    --primary: #6C63FF;
    --on-surface: var(--ink);
    --on-surface-variant: var(--ink-3);
    --surface: var(--card);
    --border: var(--line);
  }
}

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

html { -webkit-text-size-adjust: 100%; }

/* L248 — INTER, AND IT HAD NEVER BEEN HERE.
 *
 * This file registered no @font-face at all and did not name Inter anywhere in
 * its stack, so /privacy, /terms, /support, /delete-account and the three POST
 * outcome pages have rendered in San Francisco on Apple and Segoe or Roboto
 * elsewhere since the day they shipped. That is not drift from a shared source
 * — this file predates one. The guest pages and the homepage have served Inter
 * throughout, which is what made the legal family look like a different site.
 *
 * COPIED VERBATIM from src/render/style_prod.css:32-33 ([PROD-1]/[L186 S1a]),
 * which is byte-identical to what the Worker serves at
 * src/render/style.generated.css:516-517 and to what tools/derive_home.mjs
 * emits into public/index.html. Not rewritten: `font-weight:100 900` and
 * `font-display:swap` have to match, or the same weight resolves differently
 * on two families of page — a variable face asked for 650 interpolates, while
 * a mismatched declaration would synthesise or snap to the nearest static.
 *
 * ONE VARIABLE FACE, rsms/inter v4.1 — the release the app pins. Self-hosted
 * from the origin, per L011: a guest page fetches no off-origin subresource
 * after a blocked font CDN once left a page inert, and the same rule applies
 * here. The file is already deployed and already fetched by every other route,
 * so this costs no new asset.
 *
 * THE TYPE WAS NOT TOUCHED. Every size, line-height and letter-spacing below
 * was chosen against San Francisco's metrics and is left exactly as it was;
 * Inter's larger x-height means the same numbers read slightly bigger, which
 * [PROD-1] already recorded as expected rather than as drift. What that shift
 * actually costs is measured in the handback. The prose styling is a separate
 * decision and is not this change's to make. */
@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;
  font-display:swap;src:url('/fonts/InterVariable.woff2') format('woff2-variations')}

body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", Arial, "Noto Sans JP", sans-serif;
  background: var(--canvas);
  color: var(--ink);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

:focus-visible {
  outline: 2.5px solid var(--purple);
  outline-offset: 2px;
  border-radius: 6px;
}

/* ---- header ---- */

/* L249 — GONE, ALL OF IT. .site-head/.site-head-inner/.mark/.wordmark/
   .head-spacer/.head-link were a hand-copied second version of the guest
   header, and the L224 comment that used to sit here said so plainly:
   "the values are the derived sheet's; if they change there, they must be
   changed here too". They changed there and were not changed here.

   public/chrome.css is the one definition now and these pages <link> it
   before this file. The markup moved to the .hdr vocabulary in the same
   pass, and the dead Lucide <svg> — killed by `.mark svg{display:none}`
   and still shipping in four documents — is deleted rather than carried. */

/* ---- page ---- */

main {
  max-width: 720px;
  margin: 0 auto;
  padding: 36px 20px 64px;
}

h1 {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -.03em;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.updated {
  font-size: 13px;
  color: var(--ink-3);
  margin-top: 8px;
}

.lede {
  font-size: 16px;
  color: var(--ink-2);
  margin-top: 18px;
  line-height: 1.6;
}

h2 {
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -.02em;
  margin-top: 38px;
  overflow-wrap: anywhere;
}

h3 {
  font-size: 15.5px;
  font-weight: 650;
  letter-spacing: -.01em;
  margin-top: 22px;
}

p { margin-top: 12px; font-size: 15px; }

ul, ol { margin-top: 12px; padding-left: 22px; }

li { margin-top: 7px; font-size: 15px; }

a { color: var(--purple-ink); }

strong { font-weight: 650; }

/* ---- table ---- */

.table-wrap {
  margin-top: 16px;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--card);
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

th, td {
  text-align: left;
  padding: 11px 14px;
  vertical-align: top;
}

th {
  font-weight: 650;
  font-size: 12.5px;
  letter-spacing: .01em;
  color: var(--ink-3);
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}

td { border-bottom: 1px solid var(--line-soft); }

tr:last-child td { border-bottom: 0; }

/* ---- callout ---- */

.note {
  margin-top: 20px;
  padding: 14px 16px;
  background: var(--purple-wash);
  border-radius: 12px;
  font-size: 14.5px;
  color: var(--ink-2);
  line-height: 1.55;
}

.note strong { color: var(--ink); }

/* ---- contact card ---- */

.contact {
  margin-top: 20px;
  padding: 18px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--shadow);
}

.contact .label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--ink-3);
}

.contact .value {
  font-size: 17px;
  font-weight: 650;
  letter-spacing: -.01em;
  margin-top: 5px;
}

.contact .value a { text-decoration: none; }

.contact .sub {
  font-size: 13.5px;
  color: var(--ink-3);
  margin-top: 7px;
  line-height: 1.5;
}

/* ---- form controls ----------------------------------------------------
   Added for /delete-account (L089). The stylesheet was prose-only, so the
   form rendered as browser defaults inside a designed page.

   Deliberately styled as ELEMENTS rather than with a new class vocabulary:
   these pages have one form between them, and inventing .btn-primary /
   .form-field for a single use is how a second visual language starts. The
   --field token existed already and was unused — it was reserved for this.

   16px is a FLOOR on every text control, not a preference. iOS Safari zooms
   the viewport when you focus an input smaller than that, which on a phone
   throws the page sideways mid-form. It is the one size that cannot be
   tightened for aesthetics.
   ------------------------------------------------------------------------ */

.contact label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 6px;
}

/* Helper text under a label. Long guidance belongs here, NOT in a
   placeholder: a placeholder disappears the moment someone starts typing,
   which is exactly when they still need it. */
.contact .hint {
  display: block;
  font-size: 13px;
  font-weight: 400;
  color: var(--ink-3);
  margin: -2px 0 8px;
  line-height: 1.5;
}

.contact input[type="email"],
.contact input[type="text"],
.contact textarea {
  display: block;
  width: 100%;
  font: inherit;
  font-size: 16px;           /* see the iOS note above */
  line-height: 1.5;
  color: var(--ink);
  background: var(--field);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 11px 13px;
  transition: border-color .15s ease, box-shadow .15s ease;
}

.contact textarea {
  /* The hint this replaces ran to three lines in a two-line box. Sized for
     its content, and vertical-only resize so dragging cannot break the
     card's width. */
  min-height: 92px;
  resize: vertical;
}

.contact input::placeholder,
.contact textarea::placeholder {
  color: var(--ink-3);
  opacity: 1;                /* Firefox dims placeholders by default */
}

.contact input[type="email"]:focus,
.contact input[type="text"]:focus,
.contact textarea:focus {
  outline: none;
  border-color: var(--purple);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--purple) 22%, transparent);
}

/* Checkbox row: the box must sit on the first line of a label that wraps to
   two or three, so this is a flex row rather than an inline element. */
.contact label.check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-weight: 400;
  font-size: 14.5px;
  color: var(--ink-2);
  line-height: 1.5;
  cursor: pointer;
}

.contact input[type="checkbox"] {
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  accent-color: var(--purple);   /* one line, and it follows dark mode */
  cursor: pointer;
}

.contact button[type="submit"] {
  display: block;
  width: 100%;
  font: inherit;
  font-size: 16px;
  font-weight: 650;
  letter-spacing: -.01em;
  color: #FFF;
  background: var(--purple);
  border: 0;
  border-radius: 12px;
  padding: 14px 18px;
  cursor: pointer;
  transition: background .15s ease, transform .06s ease;
}

.contact button[type="submit"]:hover { background: var(--purple-ink); }
.contact button[type="submit"]:active { transform: translateY(1px); }

/* Keyboard focus only — a mouse click should not leave a ring behind. */
.contact button[type="submit"]:focus-visible,
.contact input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--purple);
  outline-offset: 2px;
}

/* Spacing between the form's rows. The page's own `p` rules assume prose. */
.contact p { margin-top: 0; }
.contact p + p { margin-top: 16px; }

@media (prefers-reduced-motion: reduce) {
  .contact input[type="email"],
  .contact input[type="text"],
  .contact textarea,
  .contact button[type="submit"] { transition: none; }
}

/* ---- footer ---- */

/* L249 — GONE too. .site-foot/.site-foot-inner/.site-foot a/.foot-spacer
   were L221's footer copied by hand, and the copy had drifted: it put the
   copyright FIRST and the links after it, where every other page on the
   site puts the links first. The markup now emits the shared shape —
   <nav class="flinks"> then <p class="fc"> — and chrome.css styles it. */

@media (max-width: 480px) {
  h1 { font-size: 26px; }
  main { padding-top: 28px; }
}
