/* Osiris Precious Metals
   One spacing scale (8px base), one content edge, one radius family, 44px+ touch targets.
   Sections breathe; text columns stay near 65 characters. */

@font-face {
  font-family: "OsirisHiero";
  src: url("../fonts/osiris-hiero.woff?v=cff03dd655") format("woff");   /* subset of Noto Sans Egyptian Hieroglyphs (OFL): logo signs, uniliterals, E16 Anubis, N15 Duat */
  font-display: swap;
}

:root {
  --ground: #eee5d0;
  --ground-2: #f5f0e4;
  --panel: #fbf8f1;
  --ink: #201d1a;
  --ink-2: #4a433a;
  --ink-3: #62594d;   /* darkened 2026-10-21 so captions pass 4.5:1 even on the papyrus texture */
  --rule: #ddd2ba;
  --rule-strong: #c7bba0;
  --blue: #2c5fa8;
  --blue-dark: #224b86;
  --gold: #d8a32b;
  --gold-text: #7d5a0c;
  --green: #3b7a55;
  --ochre: #a9583a;
  --danger: #a12d1f;

  --s1: 8px; --s2: 16px; --s3: 24px; --s4: 32px; --s5: 48px; --s6: 64px; --s7: 96px;
  --r-sm: 10px; --r: 14px; --r-lg: 20px;
  --radius: var(--r-sm);
  --wrap: 1120px;
  --gutter: 24px;
  --shadow: 0 1px 2px rgba(32, 29, 26, .04), 0 8px 28px rgba(32, 29, 26, .07);

  /* Playfair Display + Inter (Tim 2026-10-21); the name lettering stays Cormorant to match the logo artwork */
  --serif: "Playfair Display", Georgia, "Times New Roman", serif;
  --logo: "Cormorant Garamond", Georgia, serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color-scheme: light;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 96px; }
body {
  margin: 0;
  background: var(--ground);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--blue); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--blue-dark); }
:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; border-radius: 4px; }
/* on dark backgrounds the focus ring turns gold so it stays visible */
.site-footer :focus-visible, .callout :focus-visible, .spot-bar :focus-visible, .to-top:focus-visible { outline-color: var(--gold); }
/* keep focused items and anchor targets clear of the sticky header */
html { scroll-padding-top: 150px; }
@media (max-width: 940px) { html { scroll-padding-top: 190px; } }

h1, h2, h3 { font-family: var(--serif); font-weight: 600; color: var(--ink); margin: 0 0 var(--s2); }
h1 { font-size: clamp(2.1rem, 4.2vw, 3.1rem); line-height: 1.06; letter-spacing: -.015em; }
h2 { font-size: clamp(1.9rem, 3.2vw, 2.5rem); line-height: 1.1; letter-spacing: -.01em; }
h1, h2 { text-wrap: balance; }
h3 { font-size: 1.35rem; line-height: 1.2; margin-bottom: var(--s1); }
p { margin: 0 0 var(--s2); }
.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter); }
.muted { color: var(--ink-3); }
.small { font-size: .9rem; line-height: 1.5; }

/* ---------- skip link (keyboard users) ---------- */
.skip-link { position: absolute; left: -9999px; top: 8px; z-index: 100; background: var(--panel); color: var(--ink); padding: 10px 16px;
  border-radius: var(--r-sm); box-shadow: var(--shadow); font-weight: 600; }
.skip-link:focus { left: 16px; }
main:focus { outline: none; }

/* ---------- draft banner ---------- */
.draft-banner { background: var(--ochre); color: #fff; text-align: center; font-size: .85rem; padding: 6px 12px; }

/* ---------- header ---------- */
.site-header { position: sticky; top: 0; z-index: 10; background: rgba(238, 229, 208, .92);
  -webkit-backdrop-filter: saturate(160%) blur(14px); backdrop-filter: saturate(160%) blur(14px);
  border-bottom: 1px solid var(--rule); }
.site-header .wrap { display: flex; align-items: center; flex-wrap: wrap; gap: 0 var(--s2); min-height: 76px; }
.brand-wrap { position: relative; display: flex; align-items: flex-end; gap: 6px; }
.brand { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; text-decoration: none; color: var(--ink); padding: 8px 0; }
.site-header { --name: 1.6rem; }   /* the logo name's size; the cartouche's height follows it (see the alignment rules below) */
.brand-name { font-family: var(--logo); font-size: var(--name); font-weight: 600; line-height: 1; white-space: nowrap; }
.brand img { width: var(--mark-w); }
.brand-wrap { --mark-w: 196px; }
.glyph-info::after { content: ""; position: absolute; inset: -10px; }
.nav { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.nav a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink-2); text-decoration: none; font-size: .95rem; padding: 0 12px; border-radius: var(--r-sm); line-height: 1; }
.nav a:hover { color: var(--ink); background: rgba(32, 29, 26, .05); }
.nav a[aria-current="page"] { color: var(--ink); background: rgba(32, 29, 26, .07); }
/* "Buy from us" as a gold-outlined pill (Tim 1a, 2026-10-26): easy to spot, while the blue estimate button stays the one solid action */
/* "Buy from us" in solid gold with the secondary buttons' gold-brown edge (Tim 2026-10-27: tried sandstone, then
   "actually, I liked the gold better"); ink on it is 5.5:1 or more. Keep it the only gold button. */
.nav a.nav-buy { color: var(--ink); font-weight: 600; border: 2px solid var(--gold-text); background: linear-gradient(180deg, #e6b847, #d19a22); min-height: 36px; margin: 4px 2px; }
.nav a.nav-buy:hover, .nav a.nav-buy[aria-current="page"] { color: var(--ink); background: linear-gradient(180deg, #d9a83a, #bf8b1a); }
.header-cta { padding: 0 18px; }
.header-cta .cta-short { display: none; }
@media (max-width: 520px) { .header-cta .cta-full { display: none; } .header-cta .cta-short { display: inline; } }

/* hieroglyph card */
.brand-tip { position: absolute; top: calc(100% + 8px); left: 0; z-index: 20; width: max-content; max-width: 90vw;
  background: var(--ink); color: var(--ground-2); border-radius: var(--r); padding: var(--s2) 20px 14px; box-shadow: var(--shadow);
  opacity: 0; visibility: hidden; transform: translateY(-4px); pointer-events: none;
  transition: opacity .15s ease, transform .15s ease, visibility 0s linear .15s; }
/* hover opens the card only over the glyphs themselves, not the name or the padding around them (Tim 2026-10-22) */
.brand-wrap:has(.brand img:hover) .brand-tip, .brand:focus-visible ~ .brand-tip, .brand-wrap.open .brand-tip {
  opacity: 1; visibility: visible; transform: none; transition: opacity .15s ease, transform .15s ease; }
.tip-grid { display: grid; grid-template-columns: repeat(4, auto); column-gap: 22px; row-gap: 2px; align-items: end; }
.tip-grid > * { text-align: center; }
.tip-glyph { font-family: "OsirisHiero", serif; font-size: 1.9rem; line-height: 1.6; color: var(--gold); white-space: nowrap; }
.tip-glyph .e { vertical-align: .236em; }
.tip-glyph .t { vertical-align: .219em; }
.tip-grid i { font-family: var(--serif); font-size: 1.15rem; color: #fff; }
.tip-grid > span:not(.tip-glyph) { font-size: .78rem; color: #cfc6b4; text-transform: uppercase; letter-spacing: .06em; }
.tip-free { display: block; margin-top: 10px; padding-top: 10px; border-top: 1px solid #3a352e; font-family: var(--serif); font-size: 1.05rem; text-align: center; }
.tip-about { display: block; max-width: 300px; margin: 8px auto 0; font-size: .85rem; line-height: 1.45; color: #cfc6b4; text-align: center; white-space: normal; }
.glyph-info { display: none; position: absolute; left: calc(var(--mark-w) + 8px); bottom: 11px; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--rule-strong);
  background: var(--panel); color: var(--ink-3); font: italic 600 13px/1 Georgia, serif; padding: 0; cursor: pointer; }

/* ---------- buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 22px;
  border-radius: var(--r-sm); background: var(--blue); color: #fff; text-decoration: none; font: 600 1rem/1 var(--sans);
  border: 1.5px solid var(--blue); cursor: pointer; transition: background .15s ease, color .15s ease, border-color .15s ease; white-space: nowrap; }
.btn:hover { background: var(--blue-dark); border-color: var(--blue-dark); color: #fff; }
.btn:disabled { opacity: .6; cursor: default; }
.btn-ghost { color: var(--ink); border: 2px solid var(--gold-text); }
.btn-ghost:hover { color: var(--ink); border-color: #5e4207; box-shadow: inset 0 0 0 60px rgba(255, 255, 255, .22); }
.btn-small { min-height: 44px; padding: 0 16px; font-size: .95rem; }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: var(--s3); }
.btn-row.spaced { margin-top: var(--s4); }

/* ---------- sections ---------- */
section { padding: var(--s5) 0; }
section.band { background: var(--ground-2); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
section.band.tight { padding-top: var(--s3); }
.hero { padding: var(--s5) 0 var(--s4); }
.hero.compact { padding: var(--s4) 0 var(--s3); }
.hero .lede, .lede { font-size: 1.12rem; line-height: 1.55; color: var(--ink-2); max-width: 36em; }
.hero h1 { max-width: 22ch; }
.hero.compact h1 { max-width: 24ch; }
.section-head { max-width: 44em; margin-bottom: var(--s3); }
.section-head p:last-child { margin-bottom: 0; }
.row-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s2); margin-bottom: var(--s3); }
.row-head h2 { margin: 0; }
.row-head a { font-weight: 600; text-decoration: none; padding: 10px 0; }
.more-link { margin: var(--s3) 0 0; font-weight: 600; }
.more-link a { text-decoration: none; }
.stamp { font-size: .88rem; color: var(--ink-3); margin: 12px 0 0; }
.stamp:empty { display: none; }

/* home hero: copy left, live prices right */
.hero-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: var(--s4); align-items: center; }
.hero-copy .btn-row { margin-top: var(--s3); }
.trust-row { list-style: none; padding: 0; margin: var(--s3) 0 0; display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: 1.02rem; color: var(--ink); }
.trust-row li { display: flex; align-items: center; gap: 7px; }
.trust-row li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--gold); flex: none; }
.hero-prices { background: var(--panel); border: 1px solid var(--rule); border-radius: var(--r-lg); padding: var(--s3); box-shadow: var(--shadow); }
.panel-title { font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 12px; }
.todays-bids { padding: 0 0 var(--s6); }

/* live ticker */
.ticker { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: var(--s3); }
.ticker:empty { display: none; }
.ticker div { background: var(--panel); border: 1px solid var(--rule); border-radius: var(--r); padding: 12px var(--s2); }
.ticker b { display: block; font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--ink-3); }
.ticker span { display: block; font-variant-numeric: lining-nums tabular-nums; font-weight: 700; font-size: 1.2rem; margin-top: 2px; }
.ticker small { display: block; color: var(--ink-3); font-size: .85rem; font-variant-numeric: lining-nums tabular-nums; }
.ticker-stack { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 0; }
.ticker-stack { gap: 0 var(--s3); }
.ticker-stack div { background: none; border: 0; border-radius: 0; padding: 8px 0; }
.ticker-stack div:nth-child(n+3) { border-top: 1px solid var(--rule); }

/* bid strip */
.bid-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); background: var(--panel);
  border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; }
.bid-strip div { padding: var(--s2) var(--s3); border-left: 1px solid var(--rule); }
.bid-strip div:first-child { border-left: 0; }
.bid-strip b { display: block; font-size: .85rem; font-weight: 600; color: var(--ink-3); }
.bid-strip span { display: block; font-family: var(--serif); font-size: 1.75rem; font-weight: 600; line-height: 1.15; margin-top: 4px; font-variant-numeric: lining-nums tabular-nums; }
.bid-strip .gold { color: var(--gold-text); }
.bid-strip .silver { color: var(--ink-2); }
.bid-strip .plat { color: var(--green); }

/* ---------- cards & steps ---------- */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 20px; }
.cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cards-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.card .checklist { margin: 12px 0 0; }
.card .checklist li { color: var(--ink-2); font-size: 1rem; }
.card { background: var(--panel); border: 1px solid var(--rule); border-radius: var(--r); padding: var(--s3); }
.card h3 { margin-bottom: 6px; }
.card p { margin: 0; color: var(--ink-2); font-size: 1rem; }
.card .rule { height: 4px; width: 36px; border-radius: 2px; margin-bottom: var(--s2); }
.r-gold { background: var(--gold); } .r-silver { background: #bdb6a6; } .r-blue { background: var(--blue); }
.r-green { background: var(--green); } .r-ochre { background: var(--ochre); }

.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; counter-reset: step; }
.steps-1 { grid-template-columns: 1fr; gap: var(--s2); max-width: 46em; }
.step .checklist { margin: 12px 0 0; }
.step p + p { margin-top: 12px; }
.step { position: relative; background: var(--panel); border: 1px solid var(--rule); border-radius: var(--r); padding: var(--s3) var(--s3) var(--s3) 72px; }
.step::before { counter-increment: step; content: counter(step); position: absolute; left: var(--s3); top: 23px;
  display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%;
  background: var(--blue); color: #fff; font-weight: 700; font-size: .95rem; }
.step h3 { margin-top: 3px; }
.step p { margin: 0; color: var(--ink-2); }

.split { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--s6); align-items: start; }
.split > div > *:last-child { margin-bottom: 0; }
.checklist { list-style: none; padding: 0; margin: 0 0 var(--s2); }
.checklist li { position: relative; padding-left: 26px; margin-bottom: 10px; }
.checklist li::before { content: ""; position: absolute; left: 3px; top: .6em; width: 9px; height: 9px; background: var(--gold); transform: rotate(45deg); border-radius: 1px; }

/* ---------- tables ---------- */
.table-wrap { overflow-x: auto; border: 1px solid var(--rule); border-radius: var(--r); background: var(--panel); }
table { width: 100%; border-collapse: collapse; font-size: 1rem; }
th, td { text-align: left; padding: var(--s2) 20px; border-bottom: 1px solid var(--rule); vertical-align: top; }
th { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--ink-3); background: var(--ground-2); }
tr:last-child td { border-bottom: 0; }
#bid-tables table { table-layout: fixed; }
#bid-tables th:nth-child(1) { width: 38%; } #bid-tables th:nth-child(2) { width: 14%; }
#bid-tables th:nth-child(3) { width: 22%; } #bid-tables th:nth-child(4) { width: 26%; }
td.num { font-variant-numeric: lining-nums tabular-nums; font-weight: 600; white-space: nowrap; }
.group-title { margin: var(--s5) 0 var(--s2); }
#bid-tables > .group-title:first-child { margin-top: 0; }
.scrap-note { color: var(--ink-2); font-size: .95rem; max-width: 46em; }   /* notes.scrap_weight, added by build.py after a page's first per-gram scrap price */
.group-note { margin: 10px 0 0; color: var(--ink-2); font-size: .95rem; max-width: 46em; }   /* bids.json notes under a group's table */
td.est { white-space: nowrap; font-variant-numeric: lining-nums tabular-nums; }
td.est div + div { margin-top: 4px; }
td.est span { color: var(--ink-3); font-size: .88rem; white-space: normal; }

/* ---------- scrap calculator ---------- */
.calc { background: var(--panel); border: 1px solid var(--rule); border-radius: var(--r); padding: var(--s3); }
.calc .row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2); }
.calc output { display: block; font-family: var(--serif); font-size: 2.4rem; font-weight: 600; line-height: 1.1; color: var(--gold-text); margin: 4px 0 var(--s1); font-variant-numeric: lining-nums tabular-nums; }

/* ---------- forms ---------- */
.form-col { max-width: 720px; }
label { display: block; font-weight: 600; margin-bottom: 8px; font-size: .97rem; }
.hint { font-weight: 400; color: var(--ink-3); font-size: .88rem; }
.field-help { margin: 8px 0 0; }
.field-warn { margin: 8px 0 0; color: var(--danger); font-size: .9rem; }
.field-warn[hidden] { display: none; }
.field-ok { margin: 8px 0 0; color: #2f6b45; font-size: .9rem; }
.field-ok[hidden] { display: none; }
input[type=text], input[type=email], input[type=tel], input[type=number], select, textarea {
  width: 100%; min-height: 46px; padding: 11px 14px; border: 1px solid var(--rule-strong); border-radius: var(--r-sm);
  background: #fff; color: var(--ink); font: inherit; font-size: 1rem; transition: border-color .15s ease, box-shadow .15s ease; }
textarea { min-height: 140px; resize: vertical; line-height: 1.5; }
textarea.short { min-height: 96px; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(44, 95, 168, .4); }
input[type=file] { font: inherit; font-size: .95rem; min-height: 44px; }
input[type=file]::file-selector-button { font: 600 .95rem var(--sans); min-height: 40px; padding: 0 16px; margin-right: 12px; cursor: pointer;
  border: 1.5px solid var(--rule-strong); border-radius: var(--r-sm); background: var(--panel); color: var(--ink); }
.field { margin-bottom: var(--s3); }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2) var(--s3); }
.radio-group { display: flex; flex-wrap: wrap; gap: 10px 22px; }
.radio-group label { font-weight: 400; display: flex; align-items: center; gap: 8px; margin: 0; min-height: 44px; }
input[type=radio], input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--blue); margin: 0; flex: none; }
label.check { font-weight: 400; display: flex; gap: 12px; align-items: flex-start; }
label.check input { margin-top: 4px; }
.req { color: var(--danger); margin-left: 3px; font-weight: 700; }
.req-legend { margin: 0 0 var(--s3); }
.form-foot { margin: var(--s2) 0 0; }
.notice { border-left: 4px solid var(--ochre); background: var(--panel); padding: var(--s2) 20px; margin: 0 0 var(--s3); border-radius: 0 var(--r-sm) var(--r-sm) 0; }
.notice.ok { border-left-color: var(--green); }
.notice.gold { border-left-color: var(--gold); background: rgba(216, 163, 43, .10); }
/* Buy from us: what customers commonly order (Tim 2b, 2026-10-26) */
.commonly { margin: 0 0 var(--s3); padding: 16px 20px; border: 1px solid var(--rule); border-radius: var(--r); background: var(--panel); }
.commonly h2 { font-size: 1.25rem; margin: 0 0 2px; }
.commonly ul { margin: 8px 0 0; padding-left: 18px; }
.commonly li { margin: 4px 0; }
.notice.spaced { margin-top: var(--s4); }
.hp { position: absolute; left: -9999px; }
.form-error { color: var(--danger); font-size: .92rem; margin-top: 8px; display: none; }

/* order rows */
.order-row { display: grid; grid-template-columns: 130px minmax(0, 1fr) 96px 160px 46px; gap: 10px; margin-bottom: 10px; }
.order-rm { border: 1px solid var(--rule-strong); background: var(--panel); border-radius: var(--r-sm); font-size: 1.2rem; cursor: pointer; color: var(--ink-3); min-height: 46px; }
.order-rm:hover { color: var(--ink); border-color: var(--ink-3); }

/* ---------- quick estimate ---------- */
.estimator { display: grid; gap: 12px; max-width: 760px; }
.est-row { display: grid; grid-template-columns: minmax(0, 1fr) 150px; gap: 10px var(--s3); align-items: end;
  background: var(--panel); border: 1px solid var(--rule); border-radius: var(--r); padding: var(--s2) var(--s3); }
.est-head { grid-column: 1 / -1; }
.est-head strong { font-size: 1.05rem; }
.est-inputs { display: flex; flex-wrap: wrap; gap: 12px 16px; }
.est-field { display: flex; flex-direction: column; gap: 6px; font-weight: 400; font-size: .85rem; color: var(--ink-3); margin: 0; }
.est-field input { width: 112px; }
.est-field select { width: auto; }
.est-amt { font-family: var(--serif); font-size: 1.5rem; font-weight: 600; color: var(--gold-text); text-align: right; font-variant-numeric: lining-nums tabular-nums; padding-bottom: 8px; }
.est-total { position: sticky; bottom: var(--s2); z-index: 5; max-width: 760px; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--s3); margin-top: var(--s3);
  padding: var(--s3); border: 1px solid var(--rule); border-radius: var(--r-lg); background: var(--panel); box-shadow: var(--shadow); }
.est-total output { display: block; font-family: var(--serif); font-size: 2.6rem; font-weight: 600; line-height: 1.1; color: var(--gold-text); font-variant-numeric: lining-nums tabular-nums; }
.est-total .btn-row { margin-top: 0; }
#est-notes { color: var(--ochre); max-width: 36em; margin-top: 4px; }

/* ---------- reviews ---------- */
.quote-rotator { max-width: 46em; }
.quote { margin: 0; min-height: 12rem; transition: opacity .35s ease; }
.quote.fading { opacity: 0; }
.quote blockquote { margin: 0; font-family: var(--serif); font-size: clamp(1.4rem, 2.6vw, 1.85rem); line-height: 1.32; color: var(--ink); }
.quote blockquote::before { content: "“"; color: var(--gold); margin-right: .04em; }
.quote blockquote::after { content: "”"; color: var(--gold); margin-left: .04em; }
.quote figcaption { margin-top: var(--s2); font-size: .95rem; color: var(--ink-3); }
.quote figcaption a { color: var(--ink-3); }
.quote-nav { display: flex; align-items: center; gap: var(--s2); margin-top: var(--s3); }
.quote-nav button { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--rule-strong); background: var(--panel);
  font-size: 1.4rem; line-height: 1; color: var(--ink); cursor: pointer; }
.quote-nav button:hover { border-color: var(--ink-3); }
.q-count { font-size: .9rem; color: var(--ink-3); font-variant-numeric: lining-nums tabular-nums; }

/* ---------- FAQ ---------- */
details { border-bottom: 1px solid var(--rule); }
details:first-of-type { border-top: 1px solid var(--rule); }
details summary { cursor: pointer; font-weight: 600; font-size: 1.08rem; list-style: none; display: flex; gap: 12px; align-items: baseline; padding: 16px 0; }
details summary::-webkit-details-marker { display: none; }
details summary::before { content: "+"; flex: none; width: 1em; color: var(--blue); font-weight: 700; }
details[open] summary::before { content: "−"; }
details > div { padding: 0 0 18px calc(1em + 12px); color: var(--ink-2); }
details > div p:last-child { margin-bottom: 0; }

/* ---------- prose ---------- */
.prose { max-width: 46em; }
.wrap.prose { max-width: var(--wrap); }
.wrap.prose > * { max-width: 38em; }
.prose .table-wrap { margin: 0 0 var(--s3); }
.prose .checklist { margin-bottom: var(--s3); }
.prose .checklist li { margin-bottom: 12px; }
.prose h2 { margin-top: var(--s5); font-size: 1.7rem; }
.prose h2:first-child { margin-top: 0; }

/* ---------- footer ---------- */
.site-footer { background: var(--ink); color: #b9b09d; padding: var(--s5) 0 var(--s3); font-size: .95rem; }
.site-footer a { color: #e9e1cf; text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.footer-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); gap: var(--s4); align-items: start; }
.footer-name { font-family: var(--logo); font-size: 1.35rem; font-weight: 600; color: #fff; margin: 0 0 4px; }
.footer-tag { margin: 0; max-width: 24em; line-height: 1.5; }
.footer-slogan { margin: 10px 0 0; font-family: var(--serif); font-style: italic; font-size: 1.05rem; color: var(--gold); display: flex; align-items: center; gap: 10px; }
/* the balance with the feather of Ma'at and a gold ingot, level: "weighed fairly" */
.footer-slogan img { flex: none; width: 45px; height: auto; }
.footer-head { font-family: var(--sans); font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gold); margin: 6px 0 12px; }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li a { display: inline-block; padding: 7px 0; }
.footer-bottom { border-top: 1px solid #3a352e; margin-top: var(--s5); padding-top: var(--s3); display: grid; gap: 12px; }
.footer-meta { margin: 0; display: flex; flex-wrap: wrap; gap: 6px 20px; font-size: .85rem; color: #8f8778; }
.footer-meta a { color: #b9b09d; }
.footer-disclaimer { margin: 10px 0 0; font-size: .8rem; color: #8f8778; max-width: 70ch; }   /* Tim 2026-10-30: nothing is legal or financial advice */

/* ---------- responsive ---------- */
/* Header: always-visible navigation. Tighter links on mid widths; below 900px the links move to their own
   full-width row under the logo (scrolling sideways on phones) while "Request an estimate" stays beside the logo. */
@media (max-width: 1100px) {
  .nav a { padding: 0 9px; font-size: .92rem; }
}
@media (max-width: 940px) {
  .site-header .wrap { min-height: 0; }
  .header-cta { margin-left: auto; }
  .nav { order: 3; flex: 0 0 calc(100% + 2 * var(--gutter)); margin: 0 calc(-1 * var(--gutter)); padding: 0 var(--gutter) 2px;
    gap: 2px; border-top: 1px solid var(--rule); overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .nav::-webkit-scrollbar { display: none; }
  .nav a { white-space: nowrap; flex: none; padding: 0 10px; }
  .nav a:first-child { margin-left: -10px; }
}
/* 941–1080px: the logo, six links and the full button label don't fit one row, and the button wrapped under the logo
   (found 2026-10-22). The short label and slightly tighter links keep it on one row. */
@media (min-width: 941px) and (max-width: 1080px) {
  .header-cta .cta-full { display: none; }
  .header-cta .cta-short { display: inline; }
  .nav a { padding: 0 8px; }
}
@media (max-width: 640px) {
  .header-cta { min-height: 40px; padding: 0 14px; font-size: .9rem; }
  .nav { -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); mask-image: linear-gradient(90deg, #000 85%, transparent); }
}

@media (max-width: 1024px) {
  .hero-grid { gap: var(--s3); }
  .cards-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .steps { grid-template-columns: 1fr; gap: 12px; }
}
/* the "i" is for touch screens only (Tim 2026-10-22); a mouse hovers the glyphs, and keyboard focus on the logo opens the card */
@media (hover: none) {
  .glyph-info { display: inline-flex; align-items: center; justify-content: center; }
}
@media (max-width: 980px) {
  .site-header { --name: 1.3rem; }
  .brand-wrap { --mark-w: 156px; }
  .split { grid-template-columns: minmax(0, 1fr); gap: var(--s5); }
  .footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .hero-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  :root { --gutter: 20px; }
  body { font-size: 16.5px; }
  section { padding: 40px 0; }
  .hero { padding: var(--s4) 0 var(--s3); }
  .hero.compact { padding: var(--s4) 0 var(--s3); }
  .todays-bids { padding-bottom: var(--s5); }
  .section-head { margin-bottom: var(--s3); }
  .btn-row .btn { flex: 1 1 100%; }
  .hero-prices { padding: 20px; }
  .ticker { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cards-4 { grid-template-columns: 1fr; }
  .field-row, .calc .row { grid-template-columns: 1fr; gap: 0; }
  form .btn[type=submit], .calc .btn { width: 100%; }
  .radio-group { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
  th, td { padding: 12px; }
  .step { padding: 20px 20px 20px 64px; }
  .step::before { left: var(--s2); top: 19px; }
  .card { padding: 20px; }
  .cards { gap: 12px; }
  .cards-3, .cards-2 { grid-template-columns: 1fr; }
  .est-row { grid-template-columns: 1fr; padding: var(--s2); }
  .est-inputs { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); }
  .est-field input, .est-field select { width: 100%; }
  .est-amt { text-align: left; padding-bottom: 0; }
  .est-total { padding: 12px 16px; gap: 10px; bottom: 8px; flex-direction: column; align-items: stretch; }
  .est-total output { font-size: 1.75rem; }
  .est-total .est-figures { flex: 1; display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; column-gap: 12px; }
  .est-total #est-notes { flex-basis: 100%; }
  .est-total .btn-row { flex-wrap: nowrap; }
  .est-total .btn-row .btn { flex: 1 1 auto; }
  .est-total #est-clear { flex: 0 0 auto; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--s4) var(--s3); }
  .footer-brand { display: block; }
  .footer-grid > div:last-child { grid-column: 1 / -1; }
  .site-footer li a { padding: 10px 0; }
  .order-row { grid-template-columns: 1fr 1fr 46px; grid-template-areas: "metal metal rm" "prod prod prod" "qty unit unit";
    padding: 12px; border: 1px solid var(--rule); border-radius: var(--r); background: var(--panel); }
  .order-row > select:nth-child(1) { grid-area: metal; }
  .order-row > input[type=text] { grid-area: prod; }
  .order-row > input[type=number] { grid-area: qty; }
  .order-row > select:nth-child(4) { grid-area: unit; }
  .order-row > .order-rm { grid-area: rm; }
  /* bids table: one card per item */
  .table-stack { overflow: visible; }
  .table-stack table, .table-stack tbody, .table-stack tr, .table-stack td { display: block; width: 100%; }
  .table-stack thead { display: none; }
  .table-stack tr { padding: 14px 16px; border-bottom: 1px solid var(--rule); }
  .table-stack tr:last-child { border-bottom: 0; }
  .table-stack td { border: 0; padding: 2px 0; }
  .table-stack td:first-child { font-weight: 600; margin-bottom: 2px; }
  .table-stack td[data-label]::before { content: attr(data-label) ": "; color: var(--ink-3); font-size: 14px; }
  #bid-tables .table-wrap { overflow: visible; }
  #bid-tables table, #bid-tables tbody, #bid-tables tr, #bid-tables td { display: block; width: 100%; }
  #bid-tables thead { display: none; }
  #bid-tables tr { padding: 16px 18px; border-bottom: 1px solid var(--rule); }
  #bid-tables tr:last-child { border-bottom: 0; }
  #bid-tables td { border: 0; padding: 2px 0; }
  #bid-tables td:nth-child(1) { font-weight: 600; margin-bottom: 4px; }
  #bid-tables td:nth-child(2)::before { content: "Our bid: "; font-weight: 400; color: var(--ink-3); }
  #bid-tables td.est { white-space: normal; }
  #bid-tables td:nth-child(4):empty { display: none; }
  #bid-tables td:nth-child(4) { font-size: .9rem; margin-top: 4px; }
}
@media (max-width: 820px) {
  .bid-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bid-strip div { border-left: 0; border-top: 1px solid var(--rule); }
  .bid-strip div:nth-child(-n+2) { border-top: 0; }
  .bid-strip div:nth-child(even) { border-left: 1px solid var(--rule); }
  .bid-strip div:last-child:nth-child(odd) { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
  .quote, .brand-tip, .btn { transition: none; }
}
.name-mark { width: 100%; max-width: 420px; margin: var(--s1) 0 var(--s3); }

/* ---------- callout: the two questions ---------- */
.callout { margin-top: var(--s4); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr); gap: var(--s3) var(--s5); align-items: start;
  background: var(--ink); color: #e3dbc9; border-radius: var(--r-lg); padding: var(--s5); }
.callout h3 { color: #fff; font-size: clamp(1.6rem, 2.6vw, 2rem); line-height: 1.12; margin: 0; }
.hero .kicker { color: var(--gold-text); }
.kicker { font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gold); margin: 0 0 var(--s1); }
.ask-list { list-style: none; counter-reset: ask; padding: 0; margin: 0; display: grid; gap: var(--s3); }
.ask-list li { position: relative; padding-left: 48px; counter-increment: ask; }
.ask-list li::before { content: counter(ask); position: absolute; left: 0; top: 0; width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; background: var(--gold); color: var(--ink); font-weight: 700; font-size: .95rem; }
.ask-list strong { display: block; color: #fff; font-size: 1.1rem; line-height: 1.3; padding-top: 4px; margin-bottom: 4px; }
.callout .btn-row { margin-top: var(--s3); padding-left: 48px; }
.callout-cta { margin-top: var(--s5); grid-template-columns: 1fr; gap: 12px; padding: var(--s4) var(--s4) var(--s4); }
.callout-cta h3 { font-size: clamp(1.6rem, 2.4vw, 1.9rem); }
.callout-cta p { margin: 0; }
.callout-cta .btn-row { padding-left: 0; margin-top: var(--s3); }
.callout .btn-ghost { background: transparent; color: #fff; border: 1.5px solid rgba(255, 255, 255, .35); }
.callout .btn-ghost:hover { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .6); color: #fff; box-shadow: none; }
@media (max-width: 980px) { .callout { grid-template-columns: 1fr; padding: var(--s4); } }
@media (max-width: 640px) { .callout { padding: var(--s3) 20px; } .callout .btn-row { padding-left: 0; } }

/* ---------- gold dot in the O of the name (the ☉ mark) ---------- */
.brand-name .o, .footer-name .o { position: relative; }
.brand-name .o::after, .footer-name .o::after { content: ""; position: absolute; left: .383em; top: .599em; width: .22em; height: .22em; margin: -.11em 0 0 -.11em;
  border-radius: 50%; background: var(--gold); }

/* ---------- spot bar (top of every page) and the home "What we pay today" panel ---------- */
.spot-bar { background: var(--ink); color: #d9d1c0; font-size: .8rem; font-variant-numeric: lining-nums tabular-nums; }
.spot-bar .wrap { display: flex; align-items: center; gap: 18px; min-height: 30px; white-space: nowrap; overflow-x: auto; scrollbar-width: none; }
.spot-bar .wrap::-webkit-scrollbar { display: none; }
.sb-label { color: var(--gold); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; font-size: .72rem; text-decoration: none; }
.sb-label:hover { color: #fff; }
.sb-label.closed { color: #f2b8a6; }   /* "Markets closed" (Tim 2026-10-26) */
.pay-list { margin: 0; }
.pay-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 9px 0; border-top: 1px solid var(--rule); }
.pay-row:first-child { border-top: 0; }
.pay-row dt { font-size: .95rem; color: var(--ink-2); }
.pay-row dd { margin: 0; text-align: right; }
.pay-row strong { display: block; font-family: var(--serif); font-size: 1.35rem; line-height: 1.1; color: var(--gold-text); font-variant-numeric: lining-nums tabular-nums; }
.pay-row dd span { display: block; font-size: .85rem; color: var(--ink-3); }
.pay-row dd span b { font-weight: 700; color: var(--ink); }
.pay-row dd span i { font-style: normal; }
.pay-row dd { flex: none; }
.pay-row dd span { white-space: nowrap; }
/* the panel is narrow while the hero is two columns: put the percentage on its own line */
@media (max-width: 1100px) and (min-width: 761px) { .pay-row dd span b { display: block; } .pay-row dd span i { display: none; } }
.pay-panel .stamp a { font-weight: 600; text-decoration: none; }
.spot-table td:first-child { font-weight: 600; }
.wrap-prose { margin-top: var(--s4); }
@media (max-width: 640px) {
  .spot-table td.num::before { color: var(--ink-3); font-weight: 400; }
  .spot-table td:nth-child(2)::before { content: "Bid, per ounce: "; }
  .spot-table td:nth-child(3)::before { content: "Ask, per ounce: "; }
  .spot-table td:nth-child(4)::before { content: "Bid, per gram: "; }
  .spot-table td:nth-child(5)::before { content: "Bid, per kilo: "; }
}

/* ---------- Egyptian touches (Tim 1a, 2026-10-21): papyrus texture, pigment frieze, home-hero eye watermark ---------- */
body { background: var(--ground) url("papyrus.png"); }
/* WebP where supported (33 KB instead of 61 KB); browsers without image-set() type() keep the PNG line above */
body { background: var(--ground) image-set(url("papyrus.webp") type("image/webp"), url("papyrus.png") type("image/png")); }
/* Secondary buttons are carved from sandstone with a gold-brown edge, the pay panel's frame colour (Tim 2026-10-27,
   "1a 2a"); the old see-through button's grey outline was 1.5:1 on the page, this edge is 5:1. The tile is made by
   brand/make_cartouche.py. The dark callout keeps its own see-through version (rules above). */
.btn-ghost, .btn-ghost:hover { background: #deba8c url("sandstone.jpg") 0 0 / 400px;
  background-image: image-set(url("sandstone.webp") type("image/webp"), url("sandstone.jpg") type("image/jpeg")); }
.callout .btn-ghost { background: transparent; }
.callout .btn-ghost:hover { background: rgba(255, 255, 255, .08); }
/* past the bottom of the page (macOS bounce scrolling) show the footer's dark, not beige */
html { background: #201d1a; }
section.band { background-color: rgba(245, 240, 228, .82); position: relative; }
section.band::before, .site-footer::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 9px;
  background: repeating-linear-gradient(90deg, var(--gold) 0 18px, #201d1a 18px 20px, var(--blue) 20px 38px, #201d1a 38px 40px,
    var(--green) 40px 58px, #201d1a 58px 60px, var(--ochre) 60px 78px, #201d1a 78px 80px);
  box-shadow: inset 0 1px 0 #201d1a, inset 0 -1px 0 #201d1a; }
.site-footer { position: relative; }
.hero-home { position: relative; overflow: hidden; }
.hero-home::after { content: ""; position: absolute; left: -60px; bottom: -40px; width: 620px; height: 190px;
  background: url("eye-watermark.png") no-repeat left bottom / contain; background-image: image-set(url("eye-watermark.webp") type("image/webp"), url("eye-watermark.png") type("image/png")); opacity: .06; pointer-events: none; }
.hero-home .wrap { position: relative; z-index: 1; }

/* Tomb-ceiling stars on the spot bar only (Tim 2026-10-21: good on Live prices, not on the footer) */
.spot-bar { background-color: #1f3a6b;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='30'%3E%3Cpath fill='%23d8a32b' fill-opacity='.28' d='M10 9l1.2 3.6h3.8l-3.1 2.3 1.2 3.6-3.1-2.3-3.1 2.3 1.2-3.6-3.1-2.3h3.8z'/%3E%3C/svg%3E"); }
/* the prices sit on a solid, softly feathered block of the same blue, so no star shows behind a word */
.spot-bar .sb-items { display: flex; align-items: center; gap: 18px; padding: 0 4px;
  background: #1f3a6b; box-shadow: 0 0 8px 10px #1f3a6b; }
/* center the capitals, not the line boxes (Tim 2026-10-27, "don't seem vertically centered"): Inter's caps sit above its
   line box's middle, by 0.6px at the prices' size and 1.1px at the smaller label's, measured at 4x. A transform, not
   top: top snaps text to whole pixels (1.1 and 1.25 drew the same, 1.5 drew 2), a transform lands the half pixel on Retina */
.spot-bar .sb-items > * { transform: translateY(.6px); }
.spot-bar .sb-items > .sb-label { transform: translateY(1.1px); }
/* Gold-leaf numbers (Tim 2026-10-21, darkened per 3a so every stop is >= 3.4:1 on the panel): shaded gold on the pay panel, bids and estimator totals; flat gold where clipping is unsupported */
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .pay-row strong, .bid-strip .gold, .est-total output {
    background: linear-gradient(180deg, #ad7e20 0%, #946b14 45%, #5e4207 100%); -webkit-background-clip: text; background-clip: text;
    color: transparent; }
}
/* Cartouche (Tim 1b): the pay panel framed like a name cartouche, with the tie bar at the bottom */
.pay-panel { border: 2px solid var(--gold-text); border-radius: 60px / 40px; padding: 28px 30px 30px;
  box-shadow: 0 0 0 5px var(--panel), 0 0 0 7px var(--gold-text), var(--shadow); position: relative; margin-bottom: 18px; }
.pay-panel::after { content: ""; position: absolute; left: 22%; right: 22%; bottom: -21px; height: 6px;
  background: var(--gold-text); border-radius: 3px; }
/* Register lines under section headings (Tim 2026-10-21) */
.section-head h2, .row-head h2 { padding-bottom: 12px; margin-bottom: 14px;
  background: linear-gradient(var(--ink), var(--ink)) left bottom / 100% 2px no-repeat,
              linear-gradient(var(--gold), var(--gold)) left calc(100% - 5px) / 100% 1px no-repeat; }
.pay-panel .stamp a { white-space: nowrap; }

/* Text for screen readers only */
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Back-to-top arrow (Tim 2026-10-21): appears after scrolling, bottom right; hidden on pages with the sticky estimate bar */
html { scroll-behavior: smooth; }
.to-top { position: fixed; right: 20px; bottom: 20px; z-index: 9; width: 48px; height: 48px; border-radius: 50%;
  display: grid; place-items: center; background: var(--ink); color: var(--gold); border: 1.5px solid var(--gold);
  box-shadow: var(--shadow); opacity: 0; transform: translateY(8px); pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.to-top.show { opacity: 1; transform: none; pointer-events: auto; }
.to-top:hover { background: #000; color: #f3d98a; }
@media (max-width: 640px) { .to-top { right: 14px; bottom: 14px; width: 44px; height: 44px; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .to-top { transition: none; } }

/* Reflow at 320px (WCAG 1.4.10), audit 2026-10-21 */
@media (max-width: 480px) {
  .pay-row dd span b { display: block; }
  .pay-row dd span i { display: none; }
}
@media (max-width: 360px) { .est-total .btn-row { flex-wrap: wrap; } }
input[type=file] { max-width: 100%; }
.brand-tip { max-width: calc(100vw - 32px); }
.tip-glyph { font-size: min(1.9rem, 7.5vw); }

/* About, "The name": the balance of Ma'at beside the motto paragraph */
.maat-figure { margin: var(--s2) 0 var(--s3); text-align: center; }
.maat-figure img { width: min(216px, 60%); height: auto; margin: 0 auto var(--s1); }
.maat-figure figcaption { font-family: var(--serif); font-style: italic; color: var(--ink-2); font-size: 1rem; }

/* Steps are numbered in Egyptian numerals (Tim 2026-10-21): 1-4 upright strokes, 5 = three over two; gold on ink */
.step::before { content: ""; background: var(--ink) center / 32px 32px no-repeat; }

/* The sender's name in a cartouche after a request (site.js hieroName): a horizontal cartouche, its tie at the end */
.name-cartouche { margin: var(--s2) 0 0; text-align: center; }
.name-cartouche .cartouche { display: inline-block; position: relative; font-family: "OsirisHiero", serif; font-size: 2.4rem; line-height: 1.3;
  letter-spacing: .04em; color: var(--ink); padding: 4px 26px 4px 20px; border: 2px solid var(--gold-text); border-radius: 999px;
  box-shadow: 0 0 0 4px var(--panel), 0 0 0 5.5px var(--gold-text); background: var(--panel); }
.name-cartouche .cartouche::after { content: ""; position: absolute; right: -12px; top: 18%; bottom: 18%; width: 5px; border-radius: 3px; background: var(--gold-text); }
.name-cartouche figcaption { margin-top: 10px; font-size: .9rem; color: var(--ink-3); }

/* 404, "Lost in the Duat": Anubis on his shrine and the Duat star, in gold */
.duat { text-align: center; padding-bottom: var(--s6); }
.duat .lede, .duat .btn-row { margin-left: auto; margin-right: auto; justify-content: center; }
.duat h1 { margin-left: auto; margin-right: auto; }
.duat-signs { font-family: "OsirisHiero", serif; color: var(--gold-text); font-size: clamp(4rem, 12vw, 6.5rem); line-height: 1; margin: var(--s3) 0 var(--s2); display: flex; justify-content: center; align-items: flex-end; gap: .35em; }
.duat-signs .star { font-size: .55em; color: #1f3a6b; }
.duat-note { max-width: 36em; margin: var(--s4) auto 0; font-size: .9rem; color: var(--ink-3); font-style: italic; }

/* "What we buy": the gold and silver cards carry the signs from the logo, nbw (gold) and ḥḏ (silver) (Tim 2026-10-21) */
.card .glyph { display: block; font-family: "OsirisHiero", serif; font-size: 2.1rem; line-height: 1; margin: 0 0 12px; }
.card .glyph.g { color: #b8862a; }
.card .glyph.s { color: #9a9283; }

/* Calculator: the balance of Ma'at in the total bar. Empty, the feather outweighs the bare gold pan; once there is a
   total, the ingot appears and the beam settles level (site.js toggles .level) */
.est-sum { display: flex; align-items: center; gap: 14px; }
.est-figures { min-width: 0; }
.est-scale { width: 46px; height: auto; flex: none; }
.est-scale .beam, .est-scale .left, .est-scale .right { transform-box: view-box; transition: transform .9s cubic-bezier(.3, 1.5, .5, 1); }
.est-scale .beam { transform-origin: 36px 14px; transform: rotate(-7deg); }
.est-scale .left { transform: translateY(3.2px); }
.est-scale .right { transform: translateY(-3.2px); }
.est-scale .ingot { opacity: 0; transition: opacity .4s ease .2s; }
.est-total.level .est-scale .beam, .est-total.level .est-scale .left, .est-total.level .est-scale .right { transform: none; }
.est-total.level .est-scale .ingot { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .est-scale .beam, .est-scale .left, .est-scale .right, .est-scale .ingot { transition: none; } }

/* the back-to-top button is a pyramidion: the gilded cap of an obelisk (Tim 2026-10-21) */
.to-top svg { margin-top: -2px; }

/* About, "The company": the djed pillar; its meaning shows on hover, keyboard focus or tap (Tim 2026-10-22) */
.company-head { display: flex; align-items: center; gap: 14px; margin-bottom: var(--s2); }
.company-head h2 { margin: 0; }
.djed { position: relative; font-family: "OsirisHiero", serif; font-size: 3.2rem; line-height: 1; color: var(--gold-text); cursor: help; border-radius: 6px; }
.djed-tip b { display: block; color: var(--gold); font-weight: 600; font-style: normal; margin-bottom: 2px; }
.djed-tip { position: absolute; left: 0; top: calc(100% + 8px); z-index: 20; width: max-content; max-width: min(300px, 80vw);
  background: var(--ink); color: #f5f0e4; font: italic .9rem/1.45 var(--sans); padding: 10px 14px; border-radius: 10px; box-shadow: var(--shadow);
  opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity .15s ease, transform .15s ease, visibility .15s; pointer-events: none; }
.djed:hover .djed-tip, .djed:focus .djed-tip, .djed:focus-visible .djed-tip { opacity: 1; visibility: visible; transform: none; }
@media (prefers-reduced-motion: reduce) { .djed-tip { transition: none; } }

/* About, "The name": hover, focus or tap any sign in the mark to read it (Tim 2026-10-22) */
.name-mark-wrap { position: relative; width: 100%; max-width: 420px; margin: var(--s1) 0 var(--s3); }
.name-mark-wrap .name-mark { margin: 0; max-width: none; }
.glyph-spot { position: absolute; top: 0; bottom: 0; border-radius: 6px; cursor: help; }
.glyph-spot:hover, .glyph-spot:focus-visible { outline: 1.5px dashed var(--gold-text); outline-offset: 2px; }
.glyph-tip { position: absolute; left: 0; top: calc(100% + 8px); z-index: 20; width: max-content; max-width: min(260px, 80vw);
  background: var(--ink); color: #f5f0e4; font: .88rem/1.45 var(--sans); padding: 9px 13px; border-radius: 10px; box-shadow: var(--shadow);
  opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity .15s ease, transform .15s ease, visibility .15s; pointer-events: none; }
.glyph-tip b { display: block; color: var(--gold); font-weight: 600; margin-bottom: 2px; }
.glyph-spot.end .glyph-tip { left: auto; right: 0; }
.glyph-spot:hover .glyph-tip, .glyph-spot:focus .glyph-tip { opacity: 1; visibility: visible; transform: none; }
@media (prefers-reduced-motion: reduce) { .glyph-tip { transition: none; } }

/* About: hover, focus or tap the feather in the balance (feather spans x 6-17, y 17-44 of the 72x64 drawing) */
.maat-wrap { position: relative; display: block; width: min(216px, 60%); margin: 0 auto var(--s1); }
.maat-figure .maat-wrap img { width: 100%; margin: 0; }
.feather-spot { left: 7%; width: 18%; top: 25%; bottom: 29%; border-radius: 40% 40% 30% 30%; }
.feather-spot .glyph-tip { text-align: left; }

/* ---------- Spacing and alignment pass (2026-10-22) ---------- */
/* section headings: the register line spans the content width; the intro under it stays a readable measure */
.section-head { max-width: none; }
.section-head > p { max-width: 44em; }
/* tight sections start clear of the frieze */
section.band.tight { padding-top: calc(var(--s3) + 12px); }
/* card and step headings break into balanced lines, never one orphaned word */
h3 { text-wrap: balance; }
/* hero: the three trust points as a neat stack, not two plus one */
.hero .trust-row { flex-direction: column; gap: 8px; }
/* hero paragraphs share one measure; the small print under a hero too */
.hero .prose > p, .hero .stamp { max-width: 46em; }
.hero .lede { max-width: 36em; }
/* About: one column, so neither section leaves a void beside the other */
.about-split { grid-template-columns: minmax(0, 1fr); gap: var(--s5); }
.about-split > div { max-width: 46em; }
/* footer motto: one sentence per line beside the balance */
.footer-slogan .sl { display: block; }
/* select boxes match text inputs */
select { min-height: 48px; }
/* paragraphs and list items avoid a lone last word where the browser supports it */
p, li, figcaption { text-wrap: pretty; }
/* Phones: the live-price bar shows gold and silver only, so it never runs off the edge (Tim 2026-10-22) */
@media (max-width: 640px) {
  .spot-bar [data-sb="Pt"], .spot-bar [data-sb="Pd"] { display: none; }
  .spot-bar .wrap { justify-content: center; overflow: hidden; }
}
@media (max-width: 340px) { .spot-bar .sb-label { display: none; } }

/* Tooltips take no room until shown (a hidden-but-laid-out tip made About scroll sideways at 320px), and each opens
   in the direction that keeps it on screen: first signs to the right, middle ones centred, last ones to the left */
.glyph-tip, .djed-tip { display: none; opacity: 1; visibility: visible; transform: none; transition: none; max-width: min(260px, 70vw); }
.glyph-spot:hover .glyph-tip, .glyph-spot:focus .glyph-tip, .djed:hover .djed-tip, .djed:focus .djed-tip { display: block; animation: tip-in .15s ease; }
.glyph-spot.mid .glyph-tip { left: 50%; right: auto; transform: translateX(-50%); }
.glyph-spot.mid:hover .glyph-tip, .glyph-spot.mid:focus .glyph-tip { animation: tip-in-mid .15s ease; }
@keyframes tip-in { from { opacity: 0; transform: translateY(-4px); } }
@keyframes tip-in-mid { from { opacity: 0; transform: translate(-50%, -4px); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .glyph-spot .glyph-tip, .djed .djed-tip { animation: none !important; } }

/* ---------- Egyptian numerals (STYLE.md: every numbered step or list uses them) ----------
   1-4 strokes in a row; 5 = 3 over 2, 6 = 3/3, 7 = 4/3, 8 = 4/4, 9 = 3/3/3 (Unicode Z015-Z015H). */
.ask-list li::before { content: ""; background: var(--gold) center / 32px 32px no-repeat; }
.egnum { display: inline-block; width: 1.15em; height: 1.15em; border-radius: 50%; background: var(--ink) center / 100% 100% no-repeat; vertical-align: -.16em; margin-right: .45em; flex: none; }
/* numeral images (shorter, wider-spaced strokes: Tim 2026-10-22 "too long and too close together") */
.step:nth-child(1)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M16.0 11.0V21.0%22/></svg>"); }
.step:nth-child(2)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M13.4 11.0V21.0%22/><path d=%22M18.6 11.0V21.0%22/></svg>"); }
.step:nth-child(3)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 11.0V21.0%22/><path d=%22M16.0 11.0V21.0%22/><path d=%22M21.2 11.0V21.0%22/></svg>"); }
.step:nth-child(4)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 11.0V21.0%22/><path d=%22M13.4 11.0V21.0%22/><path d=%22M18.6 11.0V21.0%22/><path d=%22M23.8 11.0V21.0%22/></svg>"); }
.step:nth-child(5)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 8.5V14.5%22/><path d=%22M16.0 8.5V14.5%22/><path d=%22M21.2 8.5V14.5%22/><path d=%22M13.4 17.5V23.5%22/><path d=%22M18.6 17.5V23.5%22/></svg>"); }
.step:nth-child(6)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 8.5V14.5%22/><path d=%22M16.0 8.5V14.5%22/><path d=%22M21.2 8.5V14.5%22/><path d=%22M10.8 17.5V23.5%22/><path d=%22M16.0 17.5V23.5%22/><path d=%22M21.2 17.5V23.5%22/></svg>"); }
.step:nth-child(7)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 8.5V14.5%22/><path d=%22M13.4 8.5V14.5%22/><path d=%22M18.6 8.5V14.5%22/><path d=%22M23.8 8.5V14.5%22/><path d=%22M10.8 17.5V23.5%22/><path d=%22M16.0 17.5V23.5%22/><path d=%22M21.2 17.5V23.5%22/></svg>"); }
.step:nth-child(8)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 8.5V14.5%22/><path d=%22M13.4 8.5V14.5%22/><path d=%22M18.6 8.5V14.5%22/><path d=%22M23.8 8.5V14.5%22/><path d=%22M8.2 17.5V23.5%22/><path d=%22M13.4 17.5V23.5%22/><path d=%22M18.6 17.5V23.5%22/><path d=%22M23.8 17.5V23.5%22/></svg>"); }
.step:nth-child(9)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 7.5V11.5%22/><path d=%22M16.0 7.5V11.5%22/><path d=%22M21.2 7.5V11.5%22/><path d=%22M10.8 14.0V18.0%22/><path d=%22M16.0 14.0V18.0%22/><path d=%22M21.2 14.0V18.0%22/><path d=%22M10.8 20.5V24.5%22/><path d=%22M16.0 20.5V24.5%22/><path d=%22M21.2 20.5V24.5%22/></svg>"); }
.ask-list li:nth-child(1)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M16.0 11.0V21.0%22/></svg>"); }
.ask-list li:nth-child(2)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M13.4 11.0V21.0%22/><path d=%22M18.6 11.0V21.0%22/></svg>"); }
.ask-list li:nth-child(3)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 11.0V21.0%22/><path d=%22M16.0 11.0V21.0%22/><path d=%22M21.2 11.0V21.0%22/></svg>"); }
.ask-list li:nth-child(4)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 11.0V21.0%22/><path d=%22M13.4 11.0V21.0%22/><path d=%22M18.6 11.0V21.0%22/><path d=%22M23.8 11.0V21.0%22/></svg>"); }
.ask-list li:nth-child(5)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 8.5V14.5%22/><path d=%22M16.0 8.5V14.5%22/><path d=%22M21.2 8.5V14.5%22/><path d=%22M13.4 17.5V23.5%22/><path d=%22M18.6 17.5V23.5%22/></svg>"); }
.ask-list li:nth-child(6)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 8.5V14.5%22/><path d=%22M16.0 8.5V14.5%22/><path d=%22M21.2 8.5V14.5%22/><path d=%22M10.8 17.5V23.5%22/><path d=%22M16.0 17.5V23.5%22/><path d=%22M21.2 17.5V23.5%22/></svg>"); }
.ask-list li:nth-child(7)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 8.5V14.5%22/><path d=%22M13.4 8.5V14.5%22/><path d=%22M18.6 8.5V14.5%22/><path d=%22M23.8 8.5V14.5%22/><path d=%22M10.8 17.5V23.5%22/><path d=%22M16.0 17.5V23.5%22/><path d=%22M21.2 17.5V23.5%22/></svg>"); }
.ask-list li:nth-child(8)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 8.5V14.5%22/><path d=%22M13.4 8.5V14.5%22/><path d=%22M18.6 8.5V14.5%22/><path d=%22M23.8 8.5V14.5%22/><path d=%22M8.2 17.5V23.5%22/><path d=%22M13.4 17.5V23.5%22/><path d=%22M18.6 17.5V23.5%22/><path d=%22M23.8 17.5V23.5%22/></svg>"); }
.ask-list li:nth-child(9)::before { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23201d1a%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 7.5V11.5%22/><path d=%22M16.0 7.5V11.5%22/><path d=%22M21.2 7.5V11.5%22/><path d=%22M10.8 14.0V18.0%22/><path d=%22M16.0 14.0V18.0%22/><path d=%22M21.2 14.0V18.0%22/><path d=%22M10.8 20.5V24.5%22/><path d=%22M16.0 20.5V24.5%22/><path d=%22M21.2 20.5V24.5%22/></svg>"); }
.egnum.n1 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M16.0 11.0V21.0%22/></svg>"); }
.egnum.n2 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M13.4 11.0V21.0%22/><path d=%22M18.6 11.0V21.0%22/></svg>"); }
.egnum.n3 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 11.0V21.0%22/><path d=%22M16.0 11.0V21.0%22/><path d=%22M21.2 11.0V21.0%22/></svg>"); }
.egnum.n4 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 11.0V21.0%22/><path d=%22M13.4 11.0V21.0%22/><path d=%22M18.6 11.0V21.0%22/><path d=%22M23.8 11.0V21.0%22/></svg>"); }
.egnum.n5 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 8.5V14.5%22/><path d=%22M16.0 8.5V14.5%22/><path d=%22M21.2 8.5V14.5%22/><path d=%22M13.4 17.5V23.5%22/><path d=%22M18.6 17.5V23.5%22/></svg>"); }
.egnum.n6 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 8.5V14.5%22/><path d=%22M16.0 8.5V14.5%22/><path d=%22M21.2 8.5V14.5%22/><path d=%22M10.8 17.5V23.5%22/><path d=%22M16.0 17.5V23.5%22/><path d=%22M21.2 17.5V23.5%22/></svg>"); }
.egnum.n7 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 8.5V14.5%22/><path d=%22M13.4 8.5V14.5%22/><path d=%22M18.6 8.5V14.5%22/><path d=%22M23.8 8.5V14.5%22/><path d=%22M10.8 17.5V23.5%22/><path d=%22M16.0 17.5V23.5%22/><path d=%22M21.2 17.5V23.5%22/></svg>"); }
.egnum.n8 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M8.2 8.5V14.5%22/><path d=%22M13.4 8.5V14.5%22/><path d=%22M18.6 8.5V14.5%22/><path d=%22M23.8 8.5V14.5%22/><path d=%22M8.2 17.5V23.5%22/><path d=%22M13.4 17.5V23.5%22/><path d=%22M18.6 17.5V23.5%22/><path d=%22M23.8 17.5V23.5%22/></svg>"); }
.egnum.n9 { background-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22 stroke=%22%23d8a32b%22 stroke-width=%222%22 stroke-linecap=%22round%22><path d=%22M10.8 7.5V11.5%22/><path d=%22M16.0 7.5V11.5%22/><path d=%22M21.2 7.5V11.5%22/><path d=%22M10.8 14.0V18.0%22/><path d=%22M16.0 14.0V18.0%22/><path d=%22M21.2 14.0V18.0%22/><path d=%22M10.8 20.5V24.5%22/><path d=%22M16.0 20.5V24.5%22/><path d=%22M21.2 20.5V24.5%22/></svg>"); }
/* Phones: the menu wraps into centred rows instead of scrolling off the edge (Tim 2026-10-22, 1a; no hamburger) */
@media (max-width: 640px) {
  .nav { flex-wrap: wrap; justify-content: center; overflow: visible; -webkit-mask-image: none; mask-image: none; row-gap: 0; padding-bottom: 4px; }
  .nav a { min-height: 38px; padding: 0 8px; font-size: .9rem; }
  .nav a:first-child { margin-left: 0; }
}
@media (max-width: 360px) { .nav a { padding: 0 6px; font-size: .86rem; } }
/* the narrowest phones: a slightly smaller logo keeps "Free estimate" beside it */
@media (max-width: 380px) {
  .brand-wrap { --mark-w: 132px; }
  .site-header { --name: 1.12rem; }
  .header-cta { padding: 0 12px; }
}
@media (max-width: 340px) {
  .brand-wrap { --mark-w: 112px; }
  .site-header { --name: 1rem; }
  .header-cta { padding: 0 10px; font-size: .85rem; }
}

/* Smallest phones: the four-column karat table fits without sideways scrolling */
@media (max-width: 380px) {
  th, td { padding: 10px 7px; }
  th { letter-spacing: .03em; }
  td { font-size: .94rem; }
}

/* Kheker frieze (Tim 1a, 2026-10-22): the knotted-reed crown painted along the top of tomb walls, standing on the footer's top edge on every page. Section dividers keep the color band. */
.site-footer { margin-top: 36px; }
.site-footer::before { height: 36px; top: -36px; background: url("kheker.svg") repeat-x left bottom / auto 36px; box-shadow: none; }
/* phones: room under the legal links so the back-to-top button never sits on them */
@media (max-width: 640px) { .site-footer { padding-bottom: 88px; } }
/* Base band (Tim 5, 2026-10-22): tomb walls end in a band of color stripes, so the footer reads as one painted wall, kheker on top and the band below */
.site-footer::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 9px;
  background: repeating-linear-gradient(90deg, var(--gold) 0 18px, #201d1a 18px 20px, var(--blue) 20px 38px, #201d1a 38px 40px,
    var(--green) 40px 58px, #201d1a 58px 60px, var(--ochre) 60px 78px, #201d1a 78px 80px);
  box-shadow: inset 0 1px 0 #201d1a, inset 0 -1px 0 #201d1a; }
.site-footer { padding-bottom: calc(var(--s3) + 9px); }
@media (max-width: 640px) { .site-footer { padding-bottom: 97px; } }
/* Reddit trust line under the footer slogan (Tim 1c, 2026-10-22: trust line yes, footer estimate button no). Counts come from data/reviews.json at build time. */
.footer-trust { margin: 22px 0 0; }
.footer-trust a { display: inline-flex; flex-direction: column; gap: 2px; padding-left: 14px; border-left: 2px solid var(--gold); color: #e9e2d2; text-decoration: none; line-height: 1.35; }
.footer-trust b { color: #fff; font-weight: 600; }
.footer-trust span { color: #b9b09d; font-size: .92rem; }
.footer-trust a:hover b { text-decoration: underline; }
.nowrap { white-space: nowrap; }

/* Pyramid bullets (Tim 1a, 2026-10-22): a two-tone pyramid with a gold capstone, matching the back-to-top pyramidion; replaces the gold diamonds and dots */
.checklist li::before { width: 13px; height: 11px; left: 1px; top: .5em; transform: none; border-radius: 0; background: url("pyramid-bullet.svg") no-repeat center / contain; }
.trust-row li::before { width: 12px; height: 10px; border-radius: 0; background: url("pyramid-bullet.svg") no-repeat center / contain; }


/* Logo lockup B (Tim 1b, 2026-10-22): the glyph row is exactly as wide as the name at every size.
   width 0 keeps the image out of the column's width, so the name sets it; min-width then fills it. */
.brand img { width: 0; min-width: 100%; }
/* the touch-screen "i" sits 8px past the lockup, centered on the cartouche: margin percentages are of the lockup's
   width, and the cartouche is 1/3.47 as tall as it is wide, so its middle is 14.42% of the width up from its base */
.glyph-info { left: calc(100% + 8px); bottom: 0; margin-bottom: calc(8px + 14.42% - 12px); }
/* the links and the header button line up on the cartouche's centre line, not the middle of the name-plus-cartouche
   block (Tim 2026-10-28). The cartouche is as wide as the name, which is 8.758em of the name's size, and 1/3.47 as tall
   as it is wide, so its middle sits 8px (.brand's padding) + 1.2626 x --name above the block's base. Each item's bottom
   goes there, then moves down half its own height. Remeasure if the logo font or the cartouche's proportions change. */
.site-header .header-cta { align-self: flex-end; margin-bottom: calc(8px + var(--name) * 1.2626); transform: translateY(50%); }
@media (min-width: 941px) {
  .site-header .nav { align-self: flex-end; margin-bottom: calc(8px + var(--name) * 1.2626); transform: translateY(50%); }
}
/* smallest phones: the wider lockup pushed the "i" into the header button at 320px */
@media (max-width: 340px) { .site-header { --name: .9rem; } }
/* source lists at the end of researched guides */
.sources { font-size: .92rem; color: var(--ink-2); }
.sources li { margin-bottom: 6px; }

/* "Updated" date under each guide's lede (Tim 3a, 2026-10-22) */
.updated { margin: 10px 0 0; font-size: .88rem; color: var(--ink-3); }
.prose .as-of { margin-top: -6px; font-size: .88rem; color: var(--ink-3); }   /* date on a "lately" section */
/* Guides page: two columns of links on wide screens */
.guide-list { list-style: none; padding: 0; margin: 0 0 var(--s4); columns: 2 280px; column-gap: var(--s4); }
.guide-list li { break-inside: avoid; padding: 6px 0; border-bottom: 1px solid var(--rule); }
.guide-list a { text-decoration: none; }
.guide-list a:hover { text-decoration: underline; }

/* Brag line before each guide's closing call to action (Tim 2026-10-22) */
.brag { margin: var(--s4) 0 var(--s3); padding: 14px 18px; border-left: 3px solid var(--gold); background: var(--panel);
  border-radius: 0 var(--r-sm) var(--r-sm) 0; font-family: var(--serif); font-size: 1.12rem; line-height: 1.45; color: var(--ink); font-variant-numeric: lining-nums; }
.brag a { font-family: var(--sans); font-size: .95rem; white-space: nowrap; }

/* Background glyph on each page, like the home eye (Tim 2026-10-22): faint, in the first content section on the right,
   at one of three heights so pages vary; hidden on narrow screens where it would sit behind the text. */
main > section { position: relative; }
main > section > .wrap { position: relative; z-index: 1; }
.page-glyph { position: absolute; right: max(8px, calc((100% - var(--wrap)) / 2 - 10px)); font-family: "OsirisHiero", serif;
  font-size: clamp(200px, 22vw, 300px); line-height: 1; color: var(--ink); opacity: .05; pointer-events: none; user-select: none; }
.page-glyph.pg-0 { top: 40px; }
.page-glyph.pg-1 { top: 34%; }
.page-glyph.pg-2 { top: 62%; }
.page-glyph.off { visibility: hidden; }   /* site.js: no clear spot at this width */
@media (max-width: 760px) { .page-glyph { display: none; } }

/* Price-history charts (tools/make_history_pages.py): inline SVG drawn with the site's tokens, so it follows the theme */
.price-chart { margin: var(--s3) 0; }
.price-chart svg { width: 100%; height: auto; display: block; }
.price-chart .line { fill: none; stroke: var(--gold-text); stroke-width: 2; vector-effect: non-scaling-stroke; }
.price-chart .g { stroke: var(--rule); stroke-width: 1; }
.price-chart .t { fill: var(--ink-3); font-size: 12px; font-family: inherit; }
.price-chart figcaption { font-size: .88rem; color: var(--ink-3); margin-top: 6px; }
.prose ol > li + li { margin-top: 8px; }   /* numbered steps (how-to-sell-a-coin-collection) */

/* "Request sent" confirmation (site.js showSent): replaces the form so it's unmistakable the request went through */
.sent-panel { background: var(--panel); border: 2px solid var(--green); border-radius: var(--r-lg); padding: var(--s4) var(--s4) var(--s3); margin: 0 0 var(--s4); box-shadow: var(--shadow); text-align: left; }
.sent-panel .sent-check { width: 56px; height: 56px; border-radius: 50%; background: var(--green); color: #fff; font-size: 30px; line-height: 56px; text-align: center; font-weight: 700; margin-bottom: var(--s2); }
.sent-panel h2 { margin: 0 0 8px; outline: none; }
.sent-panel .sent-number { font-size: 1.15rem; }
.sent-panel h3 { margin: var(--s3) 0 6px; font-size: 1.05rem; }
.sent-panel ol { margin: 0 0 var(--s3); padding-left: 1.3em; }
.sent-panel ol > li + li { margin-top: 6px; }
.sent-panel .btn { margin-top: var(--s2); }

/* "What we pay today" side panel on guides (build.py add_side_panel; Tim 1a, 2026-10-22). Wide screens only: the
   article keeps its usual measure and the panel sits in the space beside it, staying in view while you scroll. */
.side-panel { display: none; }
@media (min-width: 1200px) {
  .wrap.prose > .side-grid { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 56px; align-items: start; max-width: none; }
  .side-main > * { max-width: 38em; }
  .side-panel { display: block; position: sticky; top: 130px; }
  .side-panel .pay-panel { padding: 18px 20px 22px; border-radius: 40px / 28px; }
  .side-panel .pay-row { display: block; }
  .side-panel .pay-row dt { font-size: .88rem; margin-bottom: 2px; }
  .side-panel .pay-row dd { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; text-align: left; }
  .side-panel .pay-row strong { font-size: 1.2rem; }
  .side-panel .pay-row dd span b { display: inline; }
  /* the sidebar is narrow ("per $1 face value · 90% of melt" ran past the frame): the unit on one line, "% of melt" under it */
  .side-panel .pay-row dd span { text-align: right; }
  .side-panel .pay-row dd span b { display: block; }
  .side-panel .pay-row dd span i { display: none; }
  .side-panel .stamp { font-size: .8rem; margin-top: 10px; }
  .side-panel > .btn { width: 100%; justify-content: center; margin-top: 18px; }
}

/* item pages (tools/make_item_pages.py): an out-of-stock label and, once a premium is set, today's price */
.item-status { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin: 6px 0 14px; }
.stock-out { display: inline-block; padding: 3px 12px; border: 1.5px solid var(--ochre); border-radius: 999px; color: var(--ochre);
  font-weight: 600; font-size: .9rem; letter-spacing: .02em; }
.item-price { font-size: 1.1rem; color: var(--ink-2); }
.item-terms { flex-basis: 100%; font-size: .85rem; color: var(--ink-3); }
.item-price [data-ask] { font-family: var(--serif, Georgia, serif); font-size: 1.5rem; color: var(--gold-text); margin-left: 6px; }

/* Escape dismissed the hieroglyph card (WCAG 1.4.13): hidden until pointer or focus leaves */
/* !important: the hover and focus rules that open the card are more specific */
.brand-wrap.dismissed .brand-tip { opacity: 0 !important; visibility: hidden !important; transition: none; }
.quote-nav .q-pause { font-size: .8rem; letter-spacing: -2px; }

/* item pages' deal check (Tim 2026-10-28) */
.deal-check { margin: 14px 0 8px; padding: 16px 18px; border: 1px solid var(--rule); border-radius: var(--r); background: var(--panel); max-width: 34em; }
.deal-check label { display: block; font-weight: 600; margin-bottom: 8px; }
.deal-row { display: flex; align-items: center; gap: 6px; }
.deal-row input { width: 11em; min-height: 44px; padding: 0 10px; font: inherit; border: 1px solid var(--rule-strong); border-radius: var(--r-sm); }
.deal-result { margin: 10px 0 0; font-weight: 600; min-height: 1.4em; }
.deal-result.good { color: var(--green); }
.deal-result.over { color: var(--ochre); }

/* "Buy from us" reverse calculator (Tim 2026-10-28) */
.buy-calc { margin-top: var(--s2); }
.buy-amount label, .buy-split legend { display: block; font-weight: 600; margin-bottom: 8px; }
.buy-split { border: 0; padding: 0; margin: 16px 0 6px; display: flex; flex-wrap: wrap; gap: 10px 20px; }
.buy-split label { display: flex; align-items: center; gap: 8px; }
.buy-split input { width: 5.5em; min-height: 44px; padding: 0 10px; font: inherit; border: 1px solid var(--rule-strong); border-radius: var(--r-sm); }
.buy-note { color: var(--ochre); font-weight: 600; min-height: 1.4em; margin: 4px 0 8px; }

.terms-note { margin-top: 10px; }   /* refer.html: the asterisk under the hero buttons */

/* footer: the affiliate program under Contact (Tim 2026-10-28) */
.footer-head-gap { margin-top: var(--s3); }
.footer-affiliate { margin: 0; }
.footer-affiliate a { display: inline-block; padding: 7px 0 2px; }
.footer-affiliate span { display: block; font-size: .85rem; color: #8f8778; }

/* refer.html application form (Tim 2026-10-28) */
.refer-form { max-width: 40em; }
.field-row-3 { grid-template-columns: 2fr 1fr 1fr; }
@media (max-width: 640px) { .field-row-3 { grid-template-columns: 1fr; } }
.refer-form fieldset.field { border: 0; padding: 0; margin: 0 0 var(--s2); display: flex; flex-wrap: wrap; gap: 6px 24px; }
.refer-form fieldset.field legend { font-weight: 600; margin-bottom: 6px; width: 100%; }
.refer-form > label.check { margin: 8px 0; }

/* footer email sign-up (Tim 2026-10-28) */
.footer-signup { margin: 0 0 var(--s2); max-width: 34em; }
.footer-signup label { display: block; font-size: .9rem; color: #e9e1cf; margin: 0 0 8px; }
.footer-signup-row { display: flex; gap: 8px; }
.footer-signup input[type=email] { flex: 1; min-width: 0; padding: 10px 12px; border-radius: 8px; border: 1px solid #5a5246; background: #2b2620; color: #fff; font: inherit; }
.footer-signup input[type=email]::placeholder { color: #8f8778; }
.footer-signup .btn, form.footer-signup .btn[type=submit] { flex: none; width: auto; padding: 10px 18px; }   /* beats the phone rule that makes form buttons full width */
.footer-signup-status { margin: 8px 0 0; font-size: .85rem; color: var(--gold); min-height: 1em; }
.footer-signup-status:empty { display: none; }

.email-warn { margin: 0 0 12px; }
