/* Design tokens — BUILD_SPEC §4.2. Fonts are self-hosted in /static/fonts (added with the dashboard). */
:root {
  --parchment: #F6F1E7;
  --ink: #1E1B16;
  --lapis: #1F3A93;
  --gold: #C9A227;
  --rule: #D8CFBF;
  --font-display: "Cormorant Garamond", Georgia, serif;
  --font-ui: "Source Sans 3", system-ui, sans-serif;
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--parchment); color: var(--ink); font-family: var(--font-ui); }
.topbar, .content, .footer { width: 1280px; max-width: 100%; margin: 0 auto; padding: 0 16px; }
.topbar { display: flex; align-items: center; gap: 24px; height: 56px; border-bottom: 1px solid var(--rule); }
.brand { font-family: var(--font-display); font-size: 22px; color: var(--lapis); }
.content { padding-top: 32px; padding-bottom: 32px; }
.footer { border-top: 1px solid var(--rule); font-size: 12px; color: #5c5548; padding-top: 12px; padding-bottom: 24px; }
h1 { font-family: var(--font-display); font-weight: 600; margin: 0 0 8px; }
.muted { color: #5c5548; }
.card { background: #fff; border: 1px solid var(--rule); border-radius: 6px; padding: 24px; }
.login { max-width: 420px; margin: 64px auto; }
label { display: block; margin: 12px 0 4px; font-size: 14px; }
input { width: 100%; min-height: 44px; padding: 10px; border: 1px solid var(--rule); border-radius: 4px; font: inherit; }
button { margin-top: 16px; min-height: 44px; padding: 10px 18px; background: var(--lapis); color: #fff; border: 0; border-radius: 4px; font: inherit; cursor: pointer; }
button:hover { background: #17307a; }

/* ---- Phase 2: accounts (login, MFA, invite, profile, admin users) ---- */
.login.wide { max-width: 560px; }
.profile { max-width: 720px; margin: 0 auto; }
.error { color: #8b1a1a; background: #fbeaea; border: 1px solid #e5b9b9; border-radius: 4px; padding: 8px 12px; font-size: 14px; }
.ok { color: #1f5e2e; background: #e9f5ec; border: 1px solid #b9dcc2; border-radius: 4px; padding: 8px 12px; font-size: 14px; }
.small { font-size: 12px; }
select, textarea { width: 100%; padding: 10px; border: 1px solid var(--rule); border-radius: 4px; font: inherit; background: #fff; }
.row { display: flex; gap: 16px; flex-wrap: wrap; }
.row > label { flex: 1 1 240px; }
.codes { columns: 2; padding-left: 20px; font-size: 16px; }
.secret code { font-size: 20px; letter-spacing: 2px; }
code.wrap { word-break: break-all; }
a.button { display: inline-block; margin-top: 16px; padding: 10px 18px; background: var(--lapis); color: #fff; border-radius: 4px; text-decoration: none; }
form.inline { display: inline; }
button.link { background: none; color: var(--lapis); padding: 8px 0; margin: 8px 0 0; text-decoration: underline; min-height: 44px; }
button.link:hover { background: none; color: #17307a; }
button.small { padding: 6px 10px; font-size: 13px; margin: 0 4px 0 0; }
button.danger { background: #8b1a1a; }
button.danger:hover { background: #6e1414; }
.topbar a { color: var(--lapis); text-decoration: none; }
.topbar .spacer { flex: 1; }
.topbar button.link { margin: 0; }
.admin-users table { width: 100%; border-collapse: collapse; font-size: 14px; }
.admin-users th, .admin-users td { text-align: left; padding: 8px 6px; border-bottom: 1px solid var(--rule); vertical-align: middle; }
.admin-users tr.disabled td { color: #8a8272; }
.admin-users h2 { font-family: var(--font-display); font-size: 20px; margin: 24px 0 8px; }
.admin-users .row > label { flex: 1 1 200px; }
.admin-users .row > button { align-self: flex-end; }
ul.plain { list-style: none; padding: 0; margin: 0; font-size: 14px; }
@media (max-width: 480px) { .codes { columns: 1; } .admin-users th:nth-child(3), .admin-users td:nth-child(3) { display: none; } }

/* Phase 2 — mobile fit and 44px tap targets */
input, select, textarea, button, a.button { min-height: 44px; box-sizing: border-box; }
button.small { min-height: 44px; }
.secret code, code.wrap { display: block; overflow-wrap: anywhere; word-break: break-all; white-space: normal; }
.codes { columns: 1; }
@media (min-width: 480px) { .codes { columns: 2; } }

/* ===== Phase 1: Ancient Words + /about/sources — start ===== */
.ancient-words h2 { font-family: var(--font-display); margin: 0 0 4px; }
.aw-hint { margin: 0 0 12px; font-size: 14px; }
.aw-hint code { background: var(--parchment); padding: 1px 4px; border-radius: 3px; }
.aw-label { font-size: 14px; margin: 0 0 4px; }
.aw-row { display: flex; gap: 8px; }
.aw-row input { flex: 1; min-height: 44px; }
.aw-row button { margin-top: 0; min-height: 44px; }
.aw-status { min-height: 20px; margin: 8px 0; font-size: 14px; }
.aw-results { list-style: none; margin: 0; padding: 0; }
.aw-result-btn { display: grid; grid-template-columns: auto 1fr auto; gap: 4px 12px; width: 100%; min-height: 44px; margin: 0 0 6px; padding: 10px 12px; text-align: left; background: #fff; color: var(--ink); border: 1px solid var(--rule); border-radius: 4px; }
.aw-result-btn:hover, .aw-result-btn:focus { background: var(--parchment); border-color: var(--gold); }
.aw-result-btn .aw-brief { grid-column: 1 / -1; font-size: 13px; color: #5c5548; }
.aw-lemma { font-family: var(--font-display); font-size: 20px; color: var(--lapis); }
.aw-xlit { font-style: italic; }
.aw-id { font-size: 12px; color: #5c5548; letter-spacing: 0.04em; }
.aw-entry { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--rule); }
.aw-entry-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 12px; }
.aw-entry-head h3 { margin: 0; font-size: 28px; }
.aw-fields { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 12px 0; font-size: 15px; }
.aw-fields dt { color: #5c5548; }
.aw-fields dd { margin: 0; }
.aw-entry h4 { margin: 16px 0 6px; font-family: var(--font-display); }
.aw-verses, .aw-related { margin: 0; padding-left: 18px; }
.aw-verses li { margin-bottom: 6px; line-height: 1.45; }
.aw-related { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.aw-link { margin: 0; min-height: 44px; padding: 8px 12px; background: #fff; color: var(--lapis); border: 1px solid var(--rule); border-radius: 4px; }
.aw-link:hover { background: var(--parchment); border-color: var(--gold); }
.aw-ask { min-height: 44px; }
.aw-esv-btn { display: block; margin-top: 4px; font-size: 14px; }
.aw-esv { margin: 6px 0 0; padding-left: 10px; border-left: 2px solid var(--gold); }
.aw-notice { font-style: italic; color: #5c5548; }
.esv-notice { font-style: italic; }
.sources h2 { font-family: var(--font-display); margin: 24px 0 8px; }
.sources dt { font-weight: 600; margin-top: 12px; }
.sources dd { margin: 4px 0 0; line-height: 1.5; }
.sources .notice { font-style: italic; }
.sources a { display: inline-block; padding: 12px 2px; margin: -12px -2px; color: var(--lapis); }
@media (max-width: 600px) {
  .aw-fields { grid-template-columns: 1fr; gap: 2px; }
  .aw-fields dd { margin-bottom: 8px; }
  .aw-result-btn { grid-template-columns: 1fr; }
}
/* ===== Phase 1: Ancient Words + /about/sources — end ===== */

/* ---- Phase 4: admin (start) ---- */
.admin-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(380px, 100%), 1fr)); gap: 24px; }
.admin-card { min-width: 0; }
.admin-card h2 { font-family: var(--font-display); margin: 0 0 12px; font-size: 22px; }
.admin-banner { background: #a12626; color: #fff; padding: 14px 18px; border-radius: 6px; margin-bottom: 16px; }
.admin-flash { background: #eef2ff; border: 1px solid var(--rule); padding: 10px 14px; border-radius: 4px; }
.table-wrap { overflow-x: auto; max-width: 100%; }
.admin-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.admin-table td { overflow-wrap: break-word; }
.admin-table .nowrap { white-space: nowrap; }
.admin-table .msg { min-width: 14em; }
.admin-table th, .admin-table td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--rule); vertical-align: top; }
.admin-kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 0; font-size: 14px; }
.admin-kv dt { color: #5c5548; } .admin-kv dd { margin: 0; }
.admin-list { padding-left: 18px; font-size: 14px; }
.admin-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.admin-actions button { min-height: 44px; }
button.secondary { background: #fff; color: var(--lapis); border: 1px solid var(--lapis); }
.sev-critical { color: #a12626; } .sev-warning { color: #8a5a00; }
textarea { width: 100%; padding: 10px; border: 1px solid var(--rule); border-radius: 4px; font: inherit; }
@media (max-width: 480px) { .admin-grid { grid-template-columns: 1fr; } .admin-card { padding: 16px; } }
/* ---- Phase 4: admin (end) ---- */

/* ===== Phase 3 — fonts (self-hosted, OFL) and dashboard ===== */
@font-face { font-family: "Cormorant Garamond"; src: url("/static/fonts/CormorantGaramond.woff2") format("woff2"); font-weight: 400 700; font-display: swap; }
@font-face { font-family: "Cormorant Garamond"; src: url("/static/fonts/CormorantGaramond-Italic.woff2") format("woff2"); font-weight: 400 700; font-style: italic; font-display: swap; }
@font-face { font-family: "Source Sans 3"; src: url("/static/fonts/SourceSans3.woff2") format("woff2"); font-weight: 300 700; font-display: swap; }
@font-face { font-family: "Source Sans 3"; src: url("/static/fonts/SourceSans3-Italic.woff2") format("woff2"); font-weight: 300 700; font-style: italic; font-display: swap; }

.topnav { display: flex; align-items: center; gap: 16px; }
.topbar-right { margin-left: auto; display: flex; align-items: center; gap: 16px; }
.who { font-size: 14px; }
.dot { color: var(--gold); font-size: 10px; vertical-align: middle; }
.menu summary { cursor: pointer; list-style: none; font-size: 14px; }
.menu { position: relative; }
.menu-body { position: absolute; top: 28px; left: 0; background: #fff; border: 1px solid var(--rule); border-radius: 4px; padding: 8px 12px; min-width: 200px; font-size: 14px; z-index: 5; }
.link-btn { margin: 0; padding: 6px 8px; background: none; color: var(--lapis); border: 0; font: inherit; font-size: 14px; cursor: pointer; text-decoration: none; min-height: 44px; }
.link-btn:hover { background: none; text-decoration: underline; }

#dashboard h2 { font-family: var(--font-display); font-size: 20px; letter-spacing: .04em; text-transform: uppercase; margin: 0 0 12px; color: var(--lapis); }
.panel { background: #fff; border: 1px solid var(--rule); border-radius: 6px; padding: 20px; margin-bottom: 20px; }
.grid-top { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.note { width: 100%; min-height: 220px; padding: 12px; border: 1px solid var(--rule); border-radius: 4px; font: inherit; font-size: 16px; line-height: 1.5; resize: vertical; }
.save-row { display: flex; align-items: center; justify-content: space-between; margin-top: 6px; font-size: 13px; }
.save-status { color: #5c5548; font-size: 13px; }
.save-status.unsaved { background: #f6e7a1; color: #5a4a00; padding: 2px 8px; border-radius: 10px; }
.actions { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.pr-btn { margin: 0; min-height: 44px; }
.pr-btn.small { min-height: 40px; padding: 8px 14px; }
.pr-btn:disabled { opacity: .6; cursor: wait; }
.banner { background: #fbf3d6; border: 1px solid var(--gold); padding: 10px 14px; border-radius: 4px; }

.ws-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.ws-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cards { display: grid; gap: 12px; margin-bottom: 16px; }
.sug-card { border: 1px solid var(--gold); border-left-width: 4px; border-radius: 4px; padding: 14px 16px; background: #fffdf7; }
.sug-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.sug-title { font-family: var(--font-display); font-size: 20px; margin: 0; }
.sug-body p, .sug-body h4 { margin: 6px 0; }
.sug-body textarea { width: 100%; font: inherit; margin: 4px 0; }
.sug-body .hidden-field { display: none; }
.sug-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.scripture { font-family: var(--font-display); font-size: 18px; }
.scripture.kjv { font-style: italic; }

.sermon-form label { font-size: 14px; }
.sermon-form textarea, .sermon-form input { width: 100%; padding: 8px; border: 1px solid var(--rule); border-radius: 4px; font: inherit; }
.sermon-form fieldset { border: 1px solid var(--rule); border-radius: 4px; margin: 12px 0; padding: 8px 12px 12px; }
.sermon-form legend { font-family: var(--font-display); font-size: 18px; padding: 0 6px; }

.drawer { position: fixed; top: 0; right: 0; height: 100vh; width: 420px; max-width: 100%; background: #fff; border-left: 1px solid var(--rule); box-shadow: -8px 0 24px rgba(30,27,22,.08); padding: 16px 20px; z-index: 10; display: flex; flex-direction: column; }
.drawer[hidden] { display: none; }
.drawer-head { display: flex; justify-content: space-between; align-items: center; }
.chat-log { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.msg { padding: 10px 12px; border-radius: 6px; max-width: 92%; white-space: pre-wrap; line-height: 1.45; }
.msg.me { align-self: flex-end; background: #eef1fa; }
.msg.ray { align-self: flex-start; background: var(--parchment); }
.chat-form textarea { width: 100%; font: inherit; padding: 8px; border: 1px solid var(--rule); border-radius: 4px; }
.chat-form button { margin-top: 8px; min-height: 44px; }
.version-list { list-style: none; padding: 0; margin: 0; overflow-y: auto; flex: 1; }
.version { border-bottom: 1px solid var(--rule); padding: 8px 0; }
.version p { margin: 4px 0; font-size: 14px; }
.small { font-size: 12px; }

@media (max-width: 900px) {
  .grid-top { grid-template-columns: 1fr; }
  .topbar { height: auto; flex-wrap: wrap; padding-top: 8px; padding-bottom: 8px; gap: 8px 16px; }
  .drawer { width: 100%; }
  .panel { padding: 14px; }
}
