/* The sign-in and consent pages: Sherbet's tokens (app.css), on their own so they load without a session. */
:root {
  color-scheme: light dark;
  --bg: #ffffff; --ink: #2b2f36; --muted: #8b919d; --line: #e4e7ec; --accent: #3e7f5f; --field: #ffffff; --warn: #b25a1e;
  --p1: #e3f3fd; --p5: #fdeede;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #141619; --ink: #e6e8ec; --muted: #8a919d; --line: #2a2e35; --accent: #7cc39d; --field: #1c1f24; --warn: #e39a62;
    --p1: #1a2731; --p5: #2f241b;
  }
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font: 17px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}
main { max-width: 440px; margin: 0 auto; padding: 56px 16px 48px; }
h1 { font-size: 24px; line-height: 1.25; margin: 0 0 12px; }
p { margin: 0 0 12px; }
.muted { color: var(--muted); font-size: 15px; }
.box { background: var(--p1); border-radius: 14px; padding: 16px; margin: 16px 0; }
.warn { background: var(--p5); border-radius: 14px; padding: 12px 16px; margin: 12px 0; font-size: 15px; }
form { display: flex; flex-direction: column; gap: 12px; margin: 16px 0; }
label { font-size: 15px; font-weight: 600; }
input {
  font: inherit; color: var(--ink); background: var(--field); border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 12px; min-height: 44px; width: 100%;
}
input[inputmode="numeric"] { letter-spacing: .3em; font-variant-numeric: tabular-nums; }
.buttons { display: flex; gap: 12px; flex-wrap: wrap; }
button {
  font: inherit; font-weight: 600; min-height: 44px; padding: 0 20px; border-radius: 10px; cursor: pointer;
  border: 1px solid var(--accent); background: var(--accent); color: var(--bg);
}
button.secondary { background: transparent; color: var(--ink); border-color: var(--line); }
button:disabled { opacity: .6; cursor: default; }
a { color: var(--accent); }
.error { color: var(--warn); font-size: 15px; min-height: 1.5em; margin: 0; }
.foot { margin-top: 32px; font-size: 15px; color: var(--muted); }
/* The welcome screen and the connect panel (onboarding.ts). */
h2 { font-size: 18px; line-height: 1.3; margin: 24px 0 8px; }
ul.facts, ol { padding-left: 20px; margin: 0 0 16px; }
ul.facts li, ol li { margin-bottom: 8px; }
label.check { display: flex; gap: 10px; align-items: flex-start; font-weight: 400; font-size: 16px; cursor: pointer; }
label.check input { width: 20px; height: 20px; min-height: 0; margin: 3px 0 0; flex: none; accent-color: var(--accent); }
details { border-top: 1px solid var(--line); padding: 4px 0; }
details:last-of-type { border-bottom: 1px solid var(--line); margin-bottom: 24px; }
summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; list-style: none; }
summary::-webkit-details-marker { display: none; }
summary::before { content: "›"; width: 16px; color: var(--muted); font-weight: 700; transition: transform .15s; }
details[open] > summary::before { transform: rotate(90deg); }
@media (prefers-reduced-motion: reduce) { summary::before { transition: none; } }
summary h2 { display: inline; margin: 0; }
a.button {
  display: inline-flex; align-items: center; font-weight: 600; min-height: 44px; padding: 0 20px; border-radius: 10px;
  background: var(--accent); color: var(--bg); text-decoration: none;
}
/* The privacy policy and terms: a readable column. */
main.doc { max-width: 680px; padding-top: 32px; }
main.doc ul { padding-left: 20px; margin: 0 0 12px; }
main.doc li { margin-bottom: 6px; }
.crumb { font-size: 15px; color: var(--muted); margin-bottom: 24px; }
/* Delete your account: the downloads are secondary, the delete button is the warning colour. */
a.button.secondary { background: transparent; color: var(--ink); border: 1px solid var(--line); }
button.danger { background: var(--warn); border-color: var(--warn); }
/* The invite request form (request.ts). */
textarea {
  font: inherit; color: var(--ink); background: var(--field); border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 12px; min-height: 88px; width: 100%; resize: vertical;
}
label .optional { font-weight: 400; color: var(--muted); }
/* The honeypot: off-screen rather than display: none, which some bots skip. */
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
/* v8: the welcome screen's three points, each with a line icon, and the rest folded under "What's stored". */
ul.points { list-style: none; padding: 0; margin: 20px 0 8px; display: flex; flex-direction: column; gap: 14px; }
ul.points li { display: flex; gap: 12px; align-items: flex-start; }
.icon {
  flex: none; width: 36px; height: 36px; padding: 7px; border-radius: 10px; background: var(--p1);
  fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}
details.more { border: 0; margin: 4px 0 8px; padding: 0; }
details.more:last-of-type { border: 0; margin-bottom: 8px; }
details.more > summary { font-size: 15px; color: var(--accent); min-height: 44px; }
details.more ul.facts { font-size: 15px; }
/* v8: the connect panel: a tab per assistant (big, side by side; stacked on a narrow phone) over its steps. */
.add-buttons { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; margin: 20px 0 12px; }
@media (max-width: 400px) {
  .add-buttons button.add { font-size: 15px; gap: 6px; padding: 0 6px; }
  .add-buttons button.add img { width: 20px; height: 20px; }
}
@media (max-width: 320px) { .add-buttons { grid-template-columns: minmax(0, 1fr); } }
button.add {
  display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 56px; padding: 0 8px;
  border-radius: 14px; border: 1px solid var(--line); background: var(--field); color: var(--ink); font-weight: 650;
  font-size: 16px; white-space: nowrap;
}
button.add img { flex: none; width: 22px; height: 22px; }
button.add:hover { border-color: var(--accent); }
button.add[aria-selected="true"] { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
button.add:focus-visible, a.open:focus-visible, .prompt:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
section.steps { background: var(--p1); border-radius: 14px; padding: 16px 16px 4px; margin: 0 0 16px; }
section.steps ol { margin: 4px 0 10px; }
.status { min-height: 0; margin: 8px 0 4px; }
.status:empty { display: none; }
code { font: 14px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; background: var(--field); border-radius: 6px; padding: 1px 5px; overflow-wrap: anywhere; }
.small { font-size: 13px; }
/* The phone sign-up form (login.html): the Turnstile widget under the number, then the consent line, as on the
   welcome screen. */
.turnstile:empty { display: none; }
.consent-line { font-size: 15px; line-height: 1.45; margin: 0; }
.consent-line a { font-weight: 600; text-underline-offset: 3px; }
/* The connect panel's last row: room above "Go to my log", and a clear gap before the notes under it. */
.done-row { margin: 20px 0 20px; }
.done-row ~ .muted { margin-bottom: 10px; }
