[hidden] { display: none !important; }
@font-face { font-family: "Cinzel"; src: url("/assets/cinzel-600.woff2") format("woff2"); font-weight: 400 700; font-display: swap; }
:root, :root[data-theme="light"] {
  /* Ever Gift & Co.: black and gold. Light mode uses a deep gold that keeps 4.5:1 text contrast. */
  --bg: #faf7f0; --surface: #ffffff; --text: #17150f; --muted: #575146; --line: #ddd5c4;
  --accent: #7a5c12; --accent-text: #ffffff; --ok: #1d6b3a; --warn: #8a4b00; --danger: #a12622; --focus: #1a5fb4;
  --bar-bg: #0d0c0a; --bar-text: #f3efe6; --gold: #d4af37; --border-w: 1px;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 100%; line-height: 1.5;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) { --bg: #0d0c0a; --surface: #17150f; --text: #f3efe6; --muted: #bfb6a3; --line: #3a352b; --accent: #d9b44a; --accent-text: #0d0c0a; --ok: #7fd49a; --warn: #f0b46a; --danger: #ff9b95; --focus: #8ab8ff; --bar-bg: #000000; color-scheme: dark; }
}
:root[data-theme="dark"] { --bg: #0d0c0a; --surface: #17150f; --text: #f3efe6; --muted: #bfb6a3; --line: #3a352b; --accent: #d9b44a; --accent-text: #0d0c0a; --ok: #7fd49a; --warn: #f0b46a; --danger: #ff9b95; --focus: #8ab8ff; --bar-bg: #000000; color-scheme: dark; }
:root[data-theme="high_contrast"] { --bg: #000000; --surface: #000000; --text: #ffffff; --muted: #ffffff; --line: #ffffff; --accent: #ffd60a; --accent-text: #000000; --ok: #7dff9b; --warn: #ffd60a; --danger: #ff8080; --focus: #00e5ff; --bar-bg: #000000; --bar-text: #ffffff; --gold: #ffd60a; --border-w: 2px; color-scheme: dark; }
:root[data-theme="high_contrast"] a { text-decoration-thickness: 2px; }
:root[data-text-size="large"] { font-size: 118.75%; }
:root[data-text-size="larger"] { font-size: 137.5%; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); }
.skip { position: absolute; left: -999px; top: 0; background: var(--surface); padding: .5rem 1rem; }
.skip:focus { left: 1rem; z-index: 10; }
.bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .75rem 1.25rem; border-bottom: 2px solid var(--gold); background: var(--bar-bg); color: var(--bar-text); flex-wrap: wrap; }
.bar .tag, .bar .pill { color: var(--bar-text); }
.bar button.secondary { color: var(--bar-text); border-color: var(--gold); }
.brand { margin: 0; font-weight: 700; color: var(--gold); text-decoration: none; font-size: 1.15rem; letter-spacing: .02em; }
.brand .tag { font-size: .85rem; letter-spacing: 0; margin-left: .35rem; }
.brand { display: inline-flex; align-items: center; gap: .5rem; }
.brand .brand-mark { width: 36px; height: auto; }
.brand .word { font-family: "Cinzel", Georgia, serif; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--bar-text); }
.brand .word span { color: var(--gold); }
h1 { font-family: "Cinzel", Georgia, serif; font-weight: 600; letter-spacing: .03em; }
.tag { font-weight: 400; color: var(--muted); font-size: .9rem; }
.bar-actions { display: flex; gap: .75rem; align-items: center; }
.pill { font-size: .9rem; color: var(--muted); }
main { max-width: 46rem; margin: 0 auto; padding: 1.5rem 1rem 4rem; }
main:focus { outline: none; }
h1 { font-size: 1.6rem; line-height: 1.25; margin: 0 0 .5rem; }
h2 { font-size: 1.2rem; margin: 2rem 0 .5rem; }
.card > h2:first-child { margin-top: .25rem; }
p.lead { color: var(--muted); margin-top: 0; }
section.card, li.card { background: var(--surface); border: var(--border-w) solid var(--line); border-radius: 12px; padding: 1rem 1.25rem; margin: 1rem 0; }
label { display: block; font-weight: 600; margin: .75rem 0 .25rem; }
.hint { display: block; margin: -.15rem 0 .3rem; font-weight: 400; color: var(--muted); font-size: .92rem; }
input, select, textarea { font: inherit; color: inherit; background: var(--bg); border: 1px solid var(--muted); border-radius: 8px; padding: .55rem .7rem; width: 100%; max-width: 100%; }
textarea { min-height: 8rem; }
button { font: inherit; font-weight: 600; border-radius: 8px; padding: .6rem 1.1rem; border: 2px solid var(--accent); background: var(--accent); color: var(--accent-text); cursor: pointer; min-height: 44px; }
button.secondary { background: transparent; color: var(--text); border-color: var(--muted); }
button:disabled { opacity: .55; cursor: not-allowed; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.row { display: flex; gap: .75rem; flex-wrap: wrap; margin-top: 1rem; align-items: center; }
.steps { list-style: none; padding: 0; display: flex; gap: .5rem; flex-wrap: wrap; margin: 1rem 0; }
.steps li { border: 1px solid var(--line); border-radius: 999px; padding: .2rem .75rem; font-size: .9rem; color: var(--muted); }
.steps li[aria-current="step"] { border-color: var(--accent); color: var(--text); font-weight: 600; }
.steps li.done::before { content: "✓ "; color: var(--ok); }
dl.summary { display: grid; grid-template-columns: minmax(9rem, max-content) 1fr; gap: .4rem 1rem; margin: 0; }
dl.summary dt { color: var(--muted); }
dl.summary dd { margin: 0; overflow-wrap: anywhere; }
.ok { color: var(--ok); } .warn { color: var(--warn); } .danger { color: var(--danger); }
video { width: 100%; border-radius: 8px; background: #000; }
ul.plain { list-style: none; padding: 0; margin: 0; }
ul.plain li { padding: .6rem 0; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; align-items: center; }
code, .mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .88rem; overflow-wrap: anywhere; }
.alert { position: fixed; bottom: 1rem; left: 50%; transform: translateX(-50%); max-width: 40rem; width: calc(100% - 2rem); background: var(--surface); border: 2px solid var(--danger); color: var(--text); padding: .75rem 1rem; border-radius: 10px; }
.sr-status { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.permanence { border-left: 4px solid var(--warn); padding-left: 1rem; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* web additions */
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
a.button { display: inline-flex; align-items: center; text-decoration: none; font-weight: 600; border-radius: 8px; padding: .6rem 1.1rem; border: 2px solid var(--accent); background: var(--accent); color: var(--accent-text); min-height: 44px; }
a.button.secondary { background: transparent; color: var(--text); border-color: var(--muted); }
a { color: var(--accent); }
.check { display: flex; gap: .6rem; align-items: flex-start; margin: .75rem 0; }
.check input { width: auto; margin-top: .3rem; min-width: 1.1rem; min-height: 1.1rem; }
.check label { font-weight: 400; margin: 0; }
.meta { color: var(--muted); font-size: .95rem; }
ul.tasks { display: grid; gap: .75rem; }
ul.tasks li.card { display: block; border-bottom: 1px solid var(--line); }
li.card h3 { margin: 0 0 .25rem; font-size: 1.1rem; }
select { width: auto; }
.field select, .field input, .field textarea { width: 100%; }
.urgent { border: 2px solid var(--danger); }
.dev { border-style: dashed; }
details > summary { cursor: pointer; font-weight: 600; min-height: 44px; display: list-item; padding: .5rem 0; }
.signout { margin-top: 3rem; }

/* ---------------------------------------------------------------- member portal (Milestone 6) */
.layout { display: block; }
.portal main { max-width: 52rem; }
#nav ul { list-style: none; margin: 0; padding: .5rem 1rem; display: flex; flex-wrap: wrap; gap: .25rem; border-bottom: var(--border-w) solid var(--line); background: var(--surface); }
#nav a { display: flex; align-items: center; min-height: 44px; padding: .25rem .75rem; border-radius: 8px; color: var(--text); text-decoration: none; }
#nav a:hover { text-decoration: underline; }
#nav a[aria-current="page"] { background: var(--accent); color: var(--accent-text); font-weight: 600; }
@media (min-width: 60rem) {
  .signed-in .layout { display: grid; grid-template-columns: 15rem 1fr; min-height: calc(100vh - 4rem); }
  #nav ul { flex-direction: column; border-bottom: none; border-right: var(--border-w) solid var(--line); height: 100%; padding: 1rem .75rem; }
}
#banners .banner { max-width: 52rem; margin: 1rem auto 0; background: var(--surface); border: var(--border-w) solid var(--warn); border-left: 6px solid var(--warn); border-radius: 12px; padding: .75rem 1.25rem; }
#banners .banner.urgent { border-color: var(--danger); }
#banners .banner h2 { margin: 0 0 .25rem; font-size: 1.05rem; }
#banners .banner ul { margin: 0; padding-left: 1.2rem; }
.badge { display: inline-block; font-size: .85rem; border: var(--border-w) solid var(--line); border-radius: 999px; padding: .1rem .6rem; color: var(--muted); }
.badge.ok { color: var(--ok); border-color: var(--ok); } .badge.warn { color: var(--warn); border-color: var(--warn); } .badge.danger { color: var(--danger); border-color: var(--danger); }
.badges { display: inline-flex; flex-wrap: wrap; gap: .35rem; }
.row.tight { margin-top: 0; gap: .5rem; }
.row.tight input, .row.tight select { width: auto; max-width: 12rem; }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: .75rem; margin: 1rem 0; }
a.stat { display: flex; flex-direction: column; background: var(--surface); border: var(--border-w) solid var(--line); border-top: 3px solid var(--gold); border-radius: 12px; padding: .75rem 1rem; color: var(--text); text-decoration: none; min-height: 44px; }
.stat-value { font-size: 1.8rem; font-weight: 700; }
.stat-label { color: var(--muted); }
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: .5rem .4rem; border-bottom: var(--border-w) solid var(--line); vertical-align: top; }
th { color: var(--muted); font-weight: 600; }
fieldset { border: var(--border-w) solid var(--line); border-radius: 10px; padding: .5rem 1rem 1rem; margin: 1rem 0; }
legend { font-weight: 600; padding: 0 .25rem; }
button.danger { background: var(--danger); border-color: var(--danger); color: var(--accent-text); }
:root[data-theme="high_contrast"] button.danger { color: #000; }
dialog.dialog { border: 2px solid var(--accent); border-radius: 12px; background: var(--surface); color: var(--text); max-width: 32rem; width: calc(100% - 2rem); padding: 1.25rem; }
dialog.dialog::backdrop { background: rgb(0 0 0 / .6); }
dialog.dialog h2 { margin-top: 0; }
.testmode, .promise { border: 2px dashed var(--warn); border-radius: 10px; padding: .6rem 1rem; background: var(--surface); }
.promise { border-style: solid; border-color: var(--accent); }
section.testpay { border: 2px dashed var(--warn); }
ul.plans { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: .75rem; }
li.card.plan { display: block; border-top: 3px solid var(--gold); }
.price { font-size: 1.2rem; font-weight: 700; margin: 0; }
.plan.choice { margin: .75rem 0; border-top: 3px solid var(--gold); }
.plan.choice ul { margin-bottom: 0; }
ol.timeline { list-style: none; padding: 0; margin: 0; border-left: 3px solid var(--gold); }
ol.timeline > li { padding-left: 1rem; }
ol.timeline h2 { margin-top: 1rem; }
li.past { opacity: .85; }
ol.thread { display: grid; gap: .75rem; }
li.msg { display: block; border: var(--border-w) solid var(--line); border-radius: 10px; padding: .25rem 1rem; background: var(--surface); }
li.msg.member { border-left: 4px solid var(--accent); }
li.msg .body { white-space: pre-wrap; }
details.why { margin: .5rem 0; }
.next-steps li { display: block; }
ul.plain > li.card { display: block; padding: 1rem 1.25rem; border: var(--border-w) solid var(--line); border-radius: 12px; margin: 0; }
ul.plain > li.card.plan { border-top: 3px solid var(--gold); }
li.card ul li, .plan.choice ul li { display: list-item; border: none; padding: .15rem 0; }
li.card ul, .plan.choice ul { padding-left: 1.2rem; }
li.card .badge { margin-top: .5rem; }

/* ---- staff and trustee console ---- */
nav.tabs ul { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem; padding: 0; margin: 0 0 1rem; }
nav.tabs a { display: inline-block; padding: .4rem .9rem; border: var(--border-w) solid var(--line); border-radius: 999px; text-decoration: none; color: var(--text); }
nav.tabs a[aria-current="page"] { border-color: var(--accent); font-weight: 700; box-shadow: inset 0 -3px 0 var(--accent); }
ul.checklist li { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .4rem 0; border-bottom: var(--border-w) solid var(--line); }
ul.checklist li:last-child { border-bottom: 0; }
.console-banner { margin-bottom: 1rem; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .92em; overflow-wrap: anywhere; }
li.release { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; padding: .5rem 0; border-bottom: var(--border-w) solid var(--line); }
li.msg.system { border-style: dashed; }
.console table { width: 100%; border-collapse: collapse; }
.console th, .console td { text-align: left; padding: .45rem .5rem; border-bottom: var(--border-w) solid var(--line); vertical-align: top; }
.console .table-wrap { overflow-x: auto; }

/* the dashboard's way into the private vault */
section.vault-door { border: 2px solid var(--accent); background: linear-gradient(135deg, var(--surface) 60%, color-mix(in srgb, var(--accent) 10%, var(--surface))); }
section.vault-door h2 { font-family: "Cinzel", Georgia, serif; font-weight: 600; letter-spacing: .04em; }
section.vault-door select { max-width: 22rem; }

/* ---------------------------------------------------------------- frosted glass (2026-11-06)
   Soft gold light sits fixed behind the dashboard; panels are translucent glass over it. Glass keeps at least 72%
   of the solid surface colour so text contrast stays at AA. The high-contrast theme stays solid. */
:root { --glass-mix: 72%; --frost: blur(18px) saturate(160%); --ambient-1: rgba(212, 175, 55, .28); --ambient-2: rgba(122, 92, 18, .16); --ambient-3: rgba(255, 236, 190, .55); }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) { --glass-mix: 66%; --ambient-1: rgba(217, 180, 74, .2); --ambient-2: rgba(140, 100, 30, .18); --ambient-3: rgba(40, 32, 18, .7); } }
:root[data-theme="dark"] { --glass-mix: 66%; --ambient-1: rgba(217, 180, 74, .2); --ambient-2: rgba(140, 100, 30, .18); --ambient-3: rgba(40, 32, 18, .7); }
body.portal::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(ellipse 60% 50% at 12% 8%, var(--ambient-1), transparent 70%), radial-gradient(ellipse 55% 60% at 92% 70%, var(--ambient-2), transparent 70%), radial-gradient(ellipse 70% 50% at 50% 100%, var(--ambient-3), transparent 75%); }
body.portal { position: relative; isolation: isolate; }
body.portal section.card, body.portal li.card, body.portal a.stat, body.portal #nav ul, body.portal .alert, body.portal dialog.dialog {
  background: color-mix(in srgb, var(--surface) var(--glass-mix), transparent);
  backdrop-filter: var(--frost); -webkit-backdrop-filter: var(--frost);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 10px 30px rgba(23, 21, 15, .08);
}
body.portal .bar { background: color-mix(in srgb, var(--bar-bg) 92%, transparent); backdrop-filter: var(--frost); -webkit-backdrop-filter: var(--frost); position: sticky; top: 0; z-index: 5; }
:root[data-theme="high_contrast"] body.portal::before { display: none; }
:root[data-theme="high_contrast"] body.portal section.card, :root[data-theme="high_contrast"] body.portal li.card, :root[data-theme="high_contrast"] body.portal a.stat, :root[data-theme="high_contrast"] body.portal #nav ul { background: var(--surface); backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: none; }

/* Public demo notice (EVERGIFT_DEMO=1 builds only) */
.demo-ribbon { margin: 0; padding: .5rem 1rem; text-align: center; font-size: .92rem; background: #f3d27a; color: #1a1408; border-bottom: 1px solid #b8912f; position: relative; z-index: 15; }
.demo-ribbon strong { font-weight: 700; }
