/* International Gemological &amp; Minerals Laboratory */

:root {
  --ink: #121419;
  --ink-2: #1D2026;
  --paper: #FFFFFF;
  --mist: #F4F5F7;
  --line: #E2E4E8;
  --line-dark: #31343C;
  --text: #1E2126;
  --muted: #5B6066;
  --link: #8C2332;
  --brand: #7E1F2E;
  --brand-dark: #641822;
  --steel: #4A4E55;
  --steel-light: #9A9CA1;
  --on-dark: #EDEBE4;
  --on-dark-muted: #9A9CA1;
  --serif: Georgia, "Times New Roman", serif;
  --sans: "Libre Franklin", "Helvetica Neue", Arial, sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--sans);
  color: var(--text);
  background: var(--paper);
  line-height: 1.7;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; display: block; }

.wrap { max-width: 1160px; margin: 0 auto; padding: 0 40px; }

h1, h2 { font-family: var(--sans); font-weight: 500; line-height: 1.22; letter-spacing: -0.015em; }
h3 { font-family: var(--sans); font-weight: 600; line-height: 1.3; }

/* ---------- Topbar ---------- */
.topbar { background: var(--brand-dark); color: #D9B9BE; font-size: 0.72rem; letter-spacing: 0.06em; }
.topbar .wrap { display: flex; justify-content: space-between; align-items: center; height: 34px; }
.topbar a { color: #F3E4E6; text-decoration: none; }
.topbar a:hover { text-decoration: underline; }
.topbar .tb-right { display: flex; gap: 22px; }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
.site-header .wrap {
  display: flex; align-items: center; justify-content: space-between;
  height: 76px; gap: 24px;
}
.logo { display: flex; align-items: center; gap: 13px; text-decoration: none;
  color: var(--ink); flex-shrink: 0; }
.logo-box {
  background: var(--brand); color: #FFFFFF; flex-shrink: 0;
  font-family: var(--sans); font-weight: 800; font-size: 1.17rem; letter-spacing: 0.055em;
  line-height: 1; padding: 9px 12px 9px 13px;
}
.logo .word {
  font-size: 0.585rem; letter-spacing: 0.105em; text-transform: uppercase; color: var(--ink);
  font-weight: 600; line-height: 1.52; white-space: nowrap;
}
.nav { display: flex; align-items: center; gap: 26px; }
.nav a {
  text-decoration: none; color: var(--text); font-size: 0.92rem; font-weight: 500;
}
.nav a:hover { color: var(--link); text-decoration: underline; }
.nav a.active { color: var(--link); font-weight: 700; }
.hdr-verify { display: flex; }
.hdr-verify input {
  width: 168px; padding: 9px 12px; font-size: 0.78rem; letter-spacing: 0.05em;
  border: 1px solid var(--line); border-right: none; border-radius: 2px 0 0 2px; font-family: var(--sans);
}
.hdr-verify input:focus { outline: none; border-color: var(--ink); }
.hdr-verify button {
  padding: 9px 14px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase;
  background: var(--brand); color: #fff; border: 1px solid var(--brand); border-radius: 0 2px 2px 0; cursor: pointer;
}
.hdr-verify button:hover { background: var(--brand-dark); }

/* Hero assurance strip */
.hero-strip { background: #fff; }
.hero-strip .wrap { display: grid; grid-template-columns: repeat(4, 1fr); }
.hero-strip .hs-item {
  display: flex; align-items: center; justify-content: center; padding: 15px 12px;
  color: var(--text); font-size: 0.85rem; font-weight: 500;
}
.hero-strip .hs-item::before { content: ""; width: 5px; height: 5px; background: var(--brand); margin-right: 10px; }
.hero-strip .hs-item:first-child { border-left: none; }



/* Statement band + seal */
.statement { text-align: center; padding: 68px 0 64px; }
.statement .st-mark { display: inline-flex; flex-direction: column; align-items: center;
  gap: 12px; margin: 0 auto 30px; }
.statement .st-mark .logo-box { font-size: 1.52rem; padding: 12px 16px 12px 17px; }
.statement .st-word { font-size: 0.615rem; letter-spacing: 0.17em; text-transform: uppercase;
  color: var(--muted); font-weight: 600; }
.statement h2 {
  font-size: clamp(1.6rem, 3.2vw, 2.3rem); max-width: 21em; margin: 0 auto 22px; font-weight: 400;
}
.statement p { max-width: 62ch; margin: 0 auto; color: var(--muted); font-size: 1.02rem; }
.statement .rule { display: none; }
.girdle { display: flex; align-items: center; gap: 16px; max-width: 300px; margin: 34px auto 0; }
.girdle::before, .girdle::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.girdle svg { width: 34px; height: 24px; flex-shrink: 0; }

/* Icon service tiles */
.tiles { display: grid; grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.tile {
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
  padding: 38px 30px 32px; background: #fff; text-decoration: none; color: var(--text);
  transition: background .15s;
}
.tile:hover { background: var(--mist); }
.tile svg { width: 44px; height: 44px; margin-bottom: 18px; }
.tile svg .ln { stroke-width: 1.5; }
.tile h3 { font-size: 1.05rem; margin-bottom: 8px; }
.tile p { color: var(--muted); font-size: 0.88rem; margin-bottom: 14px; }
.tile .t-links { font-size: 0.8rem; font-weight: 600; }
.tile .t-links a { color: var(--link); text-decoration: none; margin-right: 18px; }
.tile .t-links a:hover { text-decoration: underline; }

/* Verify band */
.verify-band { background: var(--brand-dark); color: #fff; padding: 48px 0; }
.verify-band .wrap { display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; }
.verify-band h2 { font-size: clamp(1.4rem, 2.6vw, 1.9rem); color: #fff; }
.verify-band p { color: #D9B9BE; font-size: 0.9rem; margin-top: 6px; }
.vb-form { display: flex; flex: 0 1 460px; min-width: 300px; }
.vb-form input {
  flex: 1; padding: 14px 16px; font-size: 0.95rem; letter-spacing: 0.05em;
  border: none; border-radius: 2px 0 0 2px; font-family: var(--sans);
}
.vb-form input:focus { outline: 2px solid #fff; }
.vb-form button {
  padding: 14px 24px; font-size: 0.85rem; font-weight: 600;
  background: #fff; color: var(--ink); border: none; border-radius: 0 2px 2px 0; cursor: pointer;
}
.vb-form button:hover { background: #E7E9ED; }

/* Education promo cards */
.edu-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.edu-card {
  border: 1px solid var(--line); border-radius: 2px; padding: 30px 26px; text-decoration: none;
  color: var(--text); background: #fff; transition: border-color .15s;
}
.edu-card:hover { border-color: var(--steel); }
.edu-card svg { width: 54px; height: 54px; margin-bottom: 16px; }
.edu-card h3 { font-size: 1.05rem; margin-bottom: 8px; }
.edu-card p { font-size: 0.88rem; color: var(--muted); }
.edu-card .go { display: block; margin-top: 16px; font-size: 0.82rem; font-weight: 500; color: var(--link); }

/* Hero with report specimen */
.hero2 { background: #fff; color: var(--text); border-bottom: 1px solid var(--line); }
.hero2 .wrap { display: grid; grid-template-columns: 1.02fr 0.98fr; gap: 60px; align-items: center; padding-top: 72px; padding-bottom: 80px; }
.hero2 .kicker { color: var(--muted); }
.hero2 h1 { font-size: clamp(2.1rem, 4.4vw, 3.1rem); color: var(--ink); margin-bottom: 20px; }
.hero2 p.lead { font-size: 1.04rem; color: var(--ink-2); max-width: 50ch; margin-bottom: 30px; }
.hero-report { position: relative; }
.hero-report .report { margin: 0; box-shadow: 0 20px 44px rgba(18,20,25,0.16); transform: rotate(-1.2deg); }
.hero-report::after {
  content: "SAMPLE"; position: absolute; top: 14px; right: 18px;
  font-size: 0.6rem; letter-spacing: 0.3em; color: #C58B94; font-weight: 600;
}

/* Fee schedule */
.fees { border: 1px solid var(--line); border-radius: 2px; background: #fff; padding: 8px 28px 18px; }
.fees table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.fees th { text-align: left; font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); font-weight: 600; padding: 16px 12px 10px 0; border-bottom: 2px solid var(--ink); }
.fees td { padding: 11px 12px 11px 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.fees tr:last-child td { border-bottom: none; }
.fees td:first-child { font-weight: 600; }
.fees .fee-note { font-size: 0.76rem; color: var(--muted); padding: 14px 0 4px; line-height: 1.7; }
.fees td.num, .fees th.num { text-align: right; white-space: nowrap; }

/* Main + sidebar */
.cols { display: grid; grid-template-columns: 1fr 320px; gap: 56px; align-items: start; }
.panel { background: #fff; border-radius: 2px; padding: 24px 26px; margin-bottom: 24px; }
.panel h3 { font-size: 0.9rem; color: var(--ink); margin-bottom: 12px; }
.notice { padding: 12px 0; font-size: 0.88rem; }
.notice:first-of-type { border-top: none; padding-top: 0; }
.notice .n-date { font-size: 0.7rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); margin-bottom: 3px; }
.hours-row { display: flex; justify-content: space-between; font-size: 0.88rem; padding: 6px 0; }
.hours-row:last-child { border-bottom: none; }
.hours-row span:last-child { font-weight: 600; }

/* Compact process list */
.miniproc { counter-reset: mp; margin: 8px 0 0; }
.miniproc li {
  list-style: none; position: relative; padding: 18px 0 18px 56px; border-top: 1px solid var(--line);
}
.miniproc li::before {
  counter-increment: mp; content: "0" counter(mp);
  position: absolute; left: 0; top: 18px;
  font-family: var(--serif); color: var(--steel); font-size: 1rem;
}
.miniproc h4 { font-size: 0.95rem; margin-bottom: 2px; }
.miniproc p { font-size: 0.86rem; color: var(--muted); margin: 0; }

/* FAQ */
.faq { max-width: 780px; }
.faq details { border-top: 1px solid #ECEEF1; }
.faq details:last-child { border-bottom: 1px solid #ECEEF1; }
.faq summary {
  cursor: pointer; padding: 22px 30px 22px 0; font-weight: 600; font-size: 0.98rem;
  list-style: none; position: relative;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 4px; top: 18px; font-size: 1.3rem; color: var(--muted); font-weight: 400; }
.faq details[open] summary::after { content: "–"; }
.faq .faq-a { padding: 0 0 20px; color: var(--ink-2); font-size: 0.94rem; max-width: 68ch; }

/* ---------- Document report specimen ---------- */
.doc-report {
  background: #FCFBF6; border: 1px solid #B9BCC2; border-radius: 2px;
  box-shadow: 0 16px 40px rgba(18,20,25,0.14); padding: 30px 34px 22px; position: relative;
  font-size: 12.5px; line-height: 1.5; color: var(--ink-2); overflow: hidden;
}
.doc-report::before {
  content: ""; position: absolute; inset: 7px; border: 1px solid rgba(18,20,25,0.22);
  border-radius: 2px; pointer-events: none;
}
.dr-watermark { position: absolute; left: 50%; top: 52%; width: 210px; height: 210px; transform: translate(-50%,-50%); opacity: 0.035; pointer-events: none; }
.dr-head { display: flex; justify-content: space-between; align-items: flex-end; border-bottom: 2px solid var(--ink); padding-bottom: 12px; position: relative; }
.dr-head .dr-id { display: flex; gap: 12px; align-items: center; }
.dr-head .dr-box { background: var(--brand); color: #FFFFFF; font-family: var(--sans); font-weight: 800; font-size: 17px; letter-spacing: 0.05em; line-height: 1; padding: 10px 12px 10px 13px; flex-shrink: 0; }
.dr-head .dr-lab { font-family: var(--serif); font-size: 14px; color: var(--ink); line-height: 1.15; }
.dr-head .dr-lab span { display: block; font-family: var(--sans); font-size: 8px; letter-spacing: 0.28em; color: var(--muted); margin-top: 3px; }
.dr-title { text-align: right; }
.dr-title .t1 { font-family: var(--serif); font-size: 15px; letter-spacing: 0.08em; color: var(--ink); }
.dr-title .t2 { font-size: 8.5px; letter-spacing: 0.24em; color: var(--brand); font-weight: 600; margin-top: 3px; }
/* Tri-fold: three EQUAL panels divided by fold lines, the way a folded
   laboratory document reads. The old 1fr/1.15fr/0.78fr split left the middle
   and right panels ending less than halfway down while the left ran to the
   floor, so the document was bottom-heavy on one side and hollow on the other. */
.dr-cols {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  padding: 18px 0 14px; position: relative;
}
.dr-panel { padding: 0 22px; position: relative; }
.dr-panel:first-child { padding-left: 0; }
.dr-panel:last-child { padding-right: 0; }
/* the folds themselves - a scored crease, not a border */
.dr-panel + .dr-panel::before {
  content: ""; position: absolute; left: 0; top: -6px; bottom: -6px; width: 1px;
  background: repeating-linear-gradient(
    to bottom, #C9CCD1 0 4px, transparent 4px 8px);
  pointer-events: none;
}
/* notches at the sheet edge where the crease meets it */
.dr-panel + .dr-panel::after {
  content: ""; position: absolute; left: -2px; top: -14px; width: 5px; height: 5px;
  border-top: 1px solid #B9BCC2; border-left: 1px solid #B9BCC2;
  transform: rotate(45deg); pointer-events: none;
}
.dr-sec { margin-bottom: 16px; }
.dr-sec h4 {
  font-family: var(--sans); font-size: 9px; letter-spacing: 0.2em; color: var(--muted);
  font-weight: 700; border-bottom: 1px solid var(--ink); padding-bottom: 4px; margin-bottom: 7px;
}
.dr-row { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; border-bottom: 1px dotted #D9DBDF; }
.dr-row:last-child { border-bottom: none; }
.dr-row .l { color: var(--muted); font-size: 11.5px; }
.dr-row .v { font-weight: 600; color: var(--ink); text-align: right; }
.dr-row .v.big { font-size: 14px; }
.dr-fig { text-align: center; }
.dr-fig svg { width: 100%; max-width: 250px; height: auto; margin: 0 auto; }
.dr-key { display: flex; justify-content: center; gap: 14px; font-size: 10px; color: var(--muted); margin-top: 4px; }
.dr-key .k { color: #B42318; font-weight: 700; margin-right: 3px; }
.dr-scale { margin-bottom: 12px; }
.dr-scale .s-row { display: flex; align-items: stretch; gap: 2px; margin-top: 4px; }
.dr-scale .s-seg {
  flex: 1; text-align: center; font-size: 8.5px; letter-spacing: 0.04em; padding: 4px 0;
  background: #F1F2F4; color: var(--muted); border: 1px solid #DEE0E4;
}
.dr-scale .s-seg.on { background: var(--brand-dark); color: #fff; border-color: var(--brand-dark); font-weight: 700; }
.dr-foot { border-top: 2px solid var(--ink); padding-top: 10px; display: flex; justify-content: space-between; align-items: center; gap: 18px; position: relative; }
.dr-foot .qr { width: 54px; height: 54px; flex-shrink: 0; }
.dr-foot .dr-verify { font-size: 10.5px; color: var(--muted); line-height: 1.55; flex: 1; }
.dr-foot .dr-verify strong { color: var(--ink); }
.dr-micro { font-size: 6px; letter-spacing: 0.35em; color: #B4B7BC; white-space: nowrap; overflow: hidden; margin-top: 8px; }

/* ---------- Card report specimen ---------- */
.cr-display { display: flex; justify-content: center; align-items: stretch; gap: 40px; flex-wrap: wrap; padding: 12px 0; }
.card-report {
  width: 460px; max-width: 100%; aspect-ratio: 1.586; background: #FCFBF6;
  border: 1px solid #C4C7CC; border-radius: 12px; overflow: hidden; position: relative;
  box-shadow: 0 14px 34px rgba(18,20,25,0.18); transform: rotate(-1.2deg);
  display: flex; flex-direction: column; color: var(--ink-2);
}
.card-report::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: 12px;
  background: linear-gradient(115deg, rgba(255,255,255,0) 52%, rgba(255,255,255,0.38) 68%, rgba(255,255,255,0) 80%);
}
.cr-head {
  background: var(--brand-dark); color: #fff; padding: 8px 14px;
  display: flex; justify-content: space-between; align-items: center; flex-shrink: 0;
}
.cr-head .h-l { display: flex; align-items: center; gap: 7px; }
.cr-head .h-l svg { width: 20px; height: 14px; }
.cr-head .h-l span { font-size: 6.6px; letter-spacing: 0.15em; font-weight: 700; }
.cr-head .h-r { font-size: 7.2px; letter-spacing: 0.2em; color: #D9B9BE; font-weight: 700; }
.cr-body { flex: 1; display: grid; grid-template-columns: 1fr 34%; gap: 12px; padding: 9px 14px 6px; min-height: 0; overflow: hidden; }
.cr-photo { display: flex; flex-direction: column; min-height: 0; }
.cr-photo .well {
  flex: 1; background: #fff; border: 1px solid #E4E6EA; border-radius: 4px;
  display: flex; align-items: center; justify-content: center; overflow: hidden; min-height: 0;
}
.cr-photo img { width: 86%; height: 86%; object-fit: contain; }
.cr-photo .ins { font-size: 6.4px; letter-spacing: 0.08em; color: var(--muted); text-align: center; margin-top: 4px; }
.cr-data { display: flex; flex-direction: column; min-width: 0; }
.cr-data .kind { font-size: 7.2px; letter-spacing: 0.18em; color: var(--brand); font-weight: 700; }
.cr-data .no { font-family: var(--sans); font-size: 12.5px; font-weight: 700; color: var(--ink); margin: 1px 0 5px; }
.cr-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; }
.cr-grid .f .l { font-size: 6.3px; letter-spacing: 0.12em; color: var(--muted); text-transform: uppercase; }
.cr-grid .f .v { font-size: 10.5px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.cr-foot {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
  padding: 6px 14px 8px; border-top: 1px solid #E4E6EA; flex-shrink: 0;
}
.cr-foot .qr { width: 26px; height: 26px; flex-shrink: 0; }
.cr-foot .u { font-size: 6.8px; color: var(--muted); letter-spacing: 0.06em; line-height: 1.5; flex: 1; }
.cr-foot .sp { font-size: 6.4px; letter-spacing: 0.26em; color: #C58B94; font-weight: 700; }

/* Report family tiers */
.fmt {
  display: inline-block; font-size: 0.64rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--muted); border: 1px solid var(--line); background: var(--mist);
  padding: 3px 9px; border-radius: 2px; margin-bottom: 14px; font-weight: 700;
}

/* Editorial side-label sections */
.side-section { display: grid; grid-template-columns: 230px 1fr; gap: 64px; align-items: start; }
.side-label { position: sticky; top: 120px; }
.side-label .sl-title {
  font-size: 0.8rem; letter-spacing: 0.04em; text-transform: none;
  color: var(--ink); font-weight: 700; line-height: 1.5;
}

.side-label p { font-size: 0.85rem; color: var(--muted); margin-top: 12px; }

/* Service ledger */
.ledger-row {
  display: grid; grid-template-columns: 1fr 170px 90px; gap: 32px; align-items: baseline;
  padding: 19px 0; border-bottom: 1px solid #ECEEF1;
}

.ledger-row h3 { font-size: 1rem; margin-bottom: 3px; }
.ledger-row h3 a { color: var(--link); text-decoration: none; }
.ledger-row h3 a:hover { text-decoration: underline; }
.ledger-row .d { font-size: 0.85rem; color: var(--muted); max-width: 56ch; }
.ledger-row .tt { font-size: 0.8rem; color: var(--muted); white-space: nowrap; text-align: right; }
.ledger-row .fee { font-family: var(--sans); font-size: 0.98rem; font-weight: 700; color: var(--ink); white-space: nowrap; text-align: right; }
.ledger-note { font-size: 0.78rem; color: var(--muted); padding-top: 16px; line-height: 1.8; }

/* Photo split */
.photo-split { display: grid; grid-template-columns: 0.92fr 1.08fr; gap: 64px; align-items: center; }
.photo-split img { width: 100%; border: 1px solid var(--line); }
.photo-split .ph-cap { font-size: 0.75rem; color: var(--muted); margin-top: 10px; letter-spacing: 0.04em; }

/* Panel row */
.panel-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.panel-row .panel { margin-bottom: 0; }

/* Education ruled links */
.edu-links a {
  display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: baseline;
  padding: 18px 0; border-bottom: 1px solid #ECEEF1; text-decoration: none; color: var(--ink);
}

.edu-links .t { font-family: var(--sans); font-size: 1.05rem; font-weight: 600; }
.edu-links .s { font-size: 0.85rem; color: var(--muted); display: block; margin-top: 2px; }
.edu-links .arrow { color: var(--muted); font-weight: 400; font-size: 1rem; }
.edu-links a:hover .t { color: var(--link); }

/* Authority contrast */

h1, h2 { text-wrap: balance; }
::selection { background: var(--ink); color: var(--steel-light); }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.fees table, .spec-table, .ledger-row .fee, .ledger-row .tt, .dr-row .v, .cr-row .v, .hours-row span:last-child { font-variant-numeric: tabular-nums; }
.statement h2 { font-weight: 500; }

/* Footer fine print */
.footer-fine {
  margin-top: 40px; padding-top: 8px;
  font-size: 0.74rem; color: var(--on-dark-muted); line-height: 1.9;
}
.btn {
  display: inline-block; text-decoration: none; font-weight: 600; font-size: 0.88rem;
  padding: 11px 22px; border-radius: 2px; transition: background .15s, color .15s;
}
.btn-ink { background: var(--brand); color: #fff; }
.btn-ink:hover { background: var(--brand-dark); }
.btn-ghost { border: 1px solid var(--line-dark); color: var(--on-dark); }
.btn-ghost:hover { border-color: var(--on-dark); }
.btn-light { background: #fff; color: var(--ink); }
.btn-outline { border: 1px solid var(--line); color: var(--ink); }
.btn-outline:hover { border-color: var(--ink); }

/* ---------- Hero ---------- */
.hero {
  background: var(--ink) url("images/hero.jpg") right center / cover no-repeat;
  color: var(--on-dark);
}
.hero-inner { padding: 130px 0 140px; max-width: 560px; }
.kicker {
  font-size: 0.8rem; letter-spacing: 0.02em;
  color: var(--muted); margin-bottom: 14px; font-weight: 600;
}
.hero h1 { font-size: clamp(2.4rem, 5vw, 3.6rem); color: #fff; margin-bottom: 22px; }
.hero p.lead { font-size: 1.08rem; color: var(--on-dark); max-width: 46ch; margin-bottom: 34px; }
.hero .actions { display: flex; gap: 14px; flex-wrap: wrap; }
.hero .actions .btn { padding: 13px 26px; }

/* ---------- Sections ---------- */
.section { padding: 84px 0; }
.section.tinted { background: var(--mist); }
.section-head { max-width: 640px; margin-bottom: 52px; }
.section-head h2 { margin-bottom: 12px; }
.section-head p { color: var(--muted); }

/* Pillars */
.pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.pillar h3 { font-size: 1.15rem; margin-bottom: 10px; }
.pillar p { color: var(--muted); font-size: 0.94rem; }
.pillar .num {
  font-family: var(--serif); font-size: 0.95rem; color: var(--steel);
  border-top: 2px solid var(--ink); display: inline-block; padding-top: 12px; margin-bottom: 14px;
}

/* Cards */
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.card {
  border: 1px solid var(--line); border-radius: 2px; padding: 34px 28px;
  background: #fff; display: flex; flex-direction: column;
}
.card h3 { font-size: 1.2rem; margin-bottom: 12px; }
.card p { color: var(--muted); font-size: 0.92rem; flex: 1; }
.card .cta { margin-top: 22px; font-size: 0.86rem; font-weight: 600; color: var(--steel); text-decoration: none; }
.card .cta:hover { text-decoration: underline; }
.card .tag {
  align-self: flex-start; font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--steel); background: var(--mist); border: 1px solid var(--line);
  padding: 4px 10px; border-radius: 2px; margin-bottom: 18px; font-weight: 600;
}

/* Process */
.steps { display: grid; grid-template-columns: repeat(5, 1fr); gap: 20px; counter-reset: step; }
.step { border-top: 1px solid var(--line-dark); padding-top: 18px; }
.step::before {
  counter-increment: step; content: "0" counter(step);
  font-family: var(--serif); color: var(--steel-light); font-size: 1.05rem; display: block; margin-bottom: 10px;
}
.step h3 { font-size: 0.98rem; color: #fff; margin-bottom: 8px; }
.step p { font-size: 0.84rem; color: var(--on-dark-muted); }
.dark { background: var(--ink); color: var(--on-dark); }
.dark .section-head h2 { color: #fff; }
.dark .section-head p { color: var(--on-dark-muted); }

/* Split (image + text) */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
.split img { border-radius: 2px; }
.split h2 { font-size: clamp(1.6rem, 3vw, 2.1rem); margin-bottom: 16px; }
.split p { color: var(--muted); margin-bottom: 14px; }

/* CTA band */
.cta-band { background: var(--mist); text-align: center; padding: 72px 24px; }
.cta-band h2 { font-size: clamp(1.8rem, 3.4vw, 2.5rem); color: var(--ink); margin-bottom: 14px; }
.cta-band p { color: var(--muted); max-width: 52ch; margin: 0 auto 32px; }

/* ---------- Verify ---------- */
.verify-box { max-width: 560px; margin: 0 auto; text-align: center; }
.verify-box h1 { font-size: clamp(2rem, 4vw, 2.8rem); margin-bottom: 14px; }
.verify-box > p { color: var(--muted); margin-bottom: 36px; }
.verify-form { display: flex; gap: 10px; }
.verify-form input {
  flex: 1; padding: 14px 18px; font-size: 1rem; font-family: var(--sans);
  border: 1px solid var(--line); border-radius: 2px; letter-spacing: 0.04em;
}
.verify-form input:focus { outline: 2px solid var(--steel); border-color: transparent; }
.hint { font-size: 0.8rem; color: var(--muted); margin-top: 14px; }
.hint code { background: var(--mist); border: 1px solid var(--line); padding: 1px 6px; border-radius: 2px; }

/* Report card */
.report {
  max-width: 640px; margin: 48px auto 0; border: 1px solid var(--line); border-radius: 2px;
  text-align: left; overflow: hidden; box-shadow: 0 12px 32px rgba(16,24,40,0.08);
  background: #fff; color: var(--text);
}
.report-head {
  background: var(--brand-dark); color: #fff; padding: 26px 32px;
  display: flex; justify-content: space-between; align-items: center;
}
.report-head .mark { font-family: var(--serif); font-size: 1.4rem; letter-spacing: 0.05em; }
/* The registry record carries the same lockup as the site and the printed card, so the
   screen a customer checks reads as the same document as the card in their hand. The box
   inverts to white on the crimson header - brand crimson on brand crimson would vanish. */
.report-head .report-mark { display: flex; align-items: center; gap: 13px; min-width: 0; }
.report-head .report-mark .logo-box { background: #fff; color: var(--brand-dark); }
.report-head .report-mark .word {
  font-size: 0.585rem; letter-spacing: 0.105em; text-transform: uppercase; color: #fff;
  font-weight: 600; line-height: 1.52; white-space: nowrap;
}
.report-head .no { font-size: 0.82rem; color: #D9B9BE; letter-spacing: 0.08em; white-space: nowrap; }
.report-body { padding: 34px 36px; display: grid; grid-template-columns: 1fr 1fr; gap: 22px 36px; }
.report-body .field .label {
  font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); margin-bottom: 3px;
}
.report-body .field .value { font-weight: 600; font-size: 1.02rem; }
.report-foot {
  border-top: 1px solid var(--line); padding: 18px 32px; font-size: 0.78rem; color: var(--muted); background: var(--mist);
}
.not-found {
  max-width: 560px; margin: 40px auto 0; border: 1px solid var(--line); border-left: 3px solid #B42318;
  padding: 22px 26px; text-align: left; border-radius: 2px; font-size: 0.92rem; color: var(--text);
}

/* ---------- Prose pages ---------- */
.page-hero { background: var(--mist); padding: 64px 0 56px; }
.page-hero .kicker { color: var(--muted); }
.page-hero h1 { font-size: clamp(2.1rem, 4.4vw, 3rem); color: var(--ink); max-width: 680px; margin-bottom: 16px; }
.page-hero p { color: var(--muted); max-width: 58ch; font-size: 1.02rem; }

.prose { max-width: 720px; }
.prose h2 { font-size: 1.6rem; margin: 48px 0 16px; }
.prose h3 { font-size: 1.15rem; margin: 32px 0 10px; }
.prose p { margin-bottom: 16px; color: var(--ink-2); }
.prose ul { margin: 0 0 16px 22px; color: var(--ink-2); }
.prose li { margin-bottom: 8px; }
.callout {
  background: var(--mist); padding: 22px 26px; border-radius: 2px; margin: 28px 0;
}
.callout p { margin: 0; font-size: 0.95rem; }

/* 4Cs grid */
.fourc { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 40px; }
.fourc .card h3 span { color: var(--steel); }

/* ---------- Forms ---------- */
.form { max-width: 620px; display: grid; gap: 18px; }
.form label { font-size: 0.82rem; font-weight: 600; display: block; margin-bottom: 6px; }
.form input, .form textarea, .form select {
  width: 100%; padding: 12px 14px; font-size: 0.95rem; font-family: var(--sans);
  border: 1px solid var(--line); border-radius: 2px;
}
.form input:focus, .form textarea:focus, .form select:focus { outline: 2px solid var(--steel); border-color: transparent; }
.form .row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.form-note { font-size: 0.8rem; color: var(--muted); }
.form-success {
  border: 1px solid var(--line); border-left: 3px solid #067647; background: var(--mist);
  padding: 22px 26px; border-radius: 2px; font-size: 0.95rem;
}

/* ---------- Footer ---------- */
.site-footer { background: var(--ink); color: var(--on-dark-muted); padding: 68px 0 40px; font-size: 0.86rem; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; margin-bottom: 48px; }
.site-footer .mark { font-family: var(--serif); font-size: 1.5rem; color: #fff; margin-bottom: 12px; }
.site-footer h4 { font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: #fff; margin-bottom: 14px; font-weight: 600; }
.site-footer a { color: var(--on-dark-muted); text-decoration: none; display: block; margin-bottom: 8px; }
.site-footer a:hover { color: #fff; }
.footer-bottom {
  padding-top: 24px;
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: 0.78rem;
}

/* ---------- Diagrams & figures ---------- */
.figure {
  border: 1px solid var(--line); border-radius: 2px; background: #fff;
  padding: 40px 36px 26px; margin: 40px 0;
}
.figure svg { width: 100%; height: auto; display: block; }
.fig-cap {
  margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--line);
  font-size: 0.82rem; color: var(--muted); display: flex; gap: 14px; align-items: baseline;
}
.fig-num {
  font-family: var(--serif); color: var(--muted); white-space: nowrap;
  font-size: 0.8rem; letter-spacing: 0.14em; text-transform: uppercase;
}
svg .ln   { stroke: var(--ink); stroke-width: 1.6; fill: none; stroke-linejoin: round; stroke-linecap: round; }
svg .ln-soft { stroke: #C9CFD9; stroke-width: 1; fill: none; stroke-linejoin: round; }
svg .dim  { stroke: var(--steel); stroke-width: 1; fill: none; }
svg .lbl  { font-family: var(--sans); font-size: 11px; fill: var(--muted); letter-spacing: 0.1em; text-transform: uppercase; }
svg .lbl-b{ font-family: var(--sans); font-size: 12.5px; fill: var(--ink); font-weight: 600; }
svg .lbl-s{ font-family: var(--serif); font-size: 15px; fill: var(--ink); }
svg .mark { stroke: #B42318; fill: none; stroke-width: 1.6; stroke-linecap: round; }
svg .mark-f { fill: #B42318; stroke: none; }
svg .ray  { stroke: var(--steel); stroke-width: 2; fill: none; }
svg .ray-bad { stroke: #B42318; stroke-width: 2; fill: none; }

/* Grading scales */
.scale-wrap { margin: 40px 0; }
.scale-title { font-size: 0.72rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin-bottom: 14px; }
.scale {
  height: 20px; border-radius: 2px; border: 1px solid var(--line);
  background: linear-gradient(90deg, #FFFFFF 0%, #FEFDFA 30%, #FBF7EA 52%, #F5EDD2 72%, #EDDFB0 88%, #E5D294 100%);
}
.scale-groups { display: grid; grid-template-columns: 3fr 4fr 3fr 5fr 8fr; margin-top: 8px; }
.scale-groups > div { border-left: 1px solid var(--line); padding: 4px 0 0 8px; }
.scale-groups .g-range { font-weight: 600; font-size: 0.85rem; color: var(--ink); }
.scale-groups .g-name { font-size: 0.72rem; color: var(--muted); letter-spacing: 0.04em; }

/* Clarity row */
.clarity-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.clarity-cell { text-align: center; }
.clarity-cell svg { width: 100%; max-width: 110px; height: auto; }
.clarity-cell .c-grade { font-weight: 600; font-size: 0.9rem; margin-top: 6px; }
.clarity-cell .c-name { font-size: 0.72rem; color: var(--muted); }

/* Shapes chart */
.shapes-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.shape-cell {
  text-align: center; padding: 26px 10px 18px;
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.shape-cell svg { width: 74px; height: 90px; margin: 0 auto; display: block; }
.shape-cell .s-name { font-family: var(--serif); font-size: 0.95rem; margin-top: 10px; }
.shape-cell .s-note { font-size: 0.7rem; color: var(--muted); letter-spacing: 0.06em; }

/* Specimen strip (home) */
.specimen { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--mist); padding: 44px 0; }
.specimen-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.specimen-row svg { width: 50px; height: 62px; opacity: 0.6; }
.specimen-cap { text-align: center; font-size: 0.72rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted); margin-top: 18px; }

/* Spec table */
.spec-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; margin: 10px 0 6px; }
.spec-table th { text-align: left; font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); font-weight: 600; padding: 12px 14px 12px 0; border-bottom: 1px solid #D8DBDF; }
.spec-table td { padding: 13px 14px 13px 0; border-bottom: 1px solid #ECEEF1; }
.spec-table td:first-child { font-weight: 600; }

/* Report plot row */
.report-plot {
  grid-column: 1 / -1; border-top: 1px dashed var(--line); padding-top: 20px; margin-top: 4px;
  display: flex; gap: 28px; align-items: center;
}
.report-plot svg { width: 132px; height: 132px; flex-shrink: 0; }
.plot-legend { font-size: 0.78rem; color: var(--muted); line-height: 2; }
.plot-legend .k { color: #B42318; font-weight: 600; margin-right: 6px; }
.plot-legend .plot-title { font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); font-weight: 600; }

/* Two-up figures */
.fig-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; }

/* ---------- Responsive ---------- */
@media (max-width: 880px) {
  /* Most registry lookups arrive from a phone camera scanning the card, so the record
     header has to hold the full lockup and the report number without colliding. */
  .report-head { flex-direction: column; align-items: flex-start; gap: 14px; padding: 22px 24px; }
  .report-head .no { white-space: normal; }
  .report-head .report-mark .word { white-space: normal; }
  .nav { display: none; }
  .hdr-verify { display: none; }
  .topbar .tb-left { display: none; }
  .topbar .wrap { justify-content: center; }
  .hero-strip .wrap { grid-template-columns: 1fr 1fr; }
  .hero-strip .hs-item:nth-child(odd) { border-left: none; }
  .tiles { grid-template-columns: 1fr; }
  .edu-cards { grid-template-columns: 1fr; }
  .verify-band .wrap { flex-direction: column; align-items: stretch; text-align: center; }
  .side-section { grid-template-columns: 1fr; gap: 28px; }
  .side-label { position: static; }
  .ledger-row { grid-template-columns: 1fr; gap: 6px; }
  .ledger-row .tt, .ledger-row .fee { text-align: left; }
  .photo-split { grid-template-columns: 1fr; gap: 32px; }
  .panel-row { grid-template-columns: 1fr; }
  .dr-cols { grid-template-columns: 1fr; gap: 18px; }
  .doc-report { padding: 20px 18px 16px; }
  .dr-title { text-align: left; margin-top: 10px; }
  .dr-head { flex-direction: column; align-items: flex-start; gap: 8px; }
  .card-report { transform: none; }
  .hero2 .wrap { grid-template-columns: 1fr; gap: 40px; padding-top: 48px; padding-bottom: 56px; }
  .hero-report .report { transform: none; }
  .cols { grid-template-columns: 1fr; }
  .fees { padding: 4px 16px 12px; }
  .fees td, .fees th { font-size: 0.82rem; }
  .pillars, .cards, .steps, .split, .fourc, .footer-grid { grid-template-columns: 1fr; }
  .shapes-grid { grid-template-columns: repeat(2, 1fr); }
  .clarity-row { grid-template-columns: repeat(3, 1fr); }
  .fig-duo { grid-template-columns: 1fr; }
  .figure { padding: 26px 20px 20px; }
  .report-plot { flex-direction: column; align-items: flex-start; }
  .specimen-row { justify-content: center; }
  .split { gap: 32px; }
  .hero-inner { padding: 90px 0 100px; }
  .hero { background-position: 78% center; }
  .report-body { grid-template-columns: 1fr; }
  .form .row { grid-template-columns: 1fr; }
}


/* ---------- Cinematic hero ---------- */
.hero3 { background: var(--mist); color: var(--text); position: relative; }
.hero3 .bg { display: none; }

.hero3 .wrap { position: relative; z-index: 1; }
.hero-grid { display: grid; grid-template-columns: 1.08fr 0.92fr; gap: 56px; align-items: center; padding-top: 56px; }
.hero3 .kicker { color: var(--muted); }
.hero3 h1 {
  font-size: clamp(1.9rem, 2.9vw, 2.4rem); color: var(--ink); font-weight: 500;
  line-height: 1.16; letter-spacing: -0.02em; margin-bottom: 13px; max-width: 24ch;
}
.hero3 p.lead { color: var(--ink-2); font-size: 0.95rem; max-width: 54ch; margin-bottom: 20px; }
.hero3 .btn-light { background: var(--brand); color: #fff; }
.hero3 .btn-ghost { border: 1px solid #B9BDC4; color: var(--ink); }
.hero3 .btn-ghost:hover { border-color: var(--ink); }
.hero3 .hero-report .report { box-shadow: 0 6px 22px rgba(18,20,25,0.12); transform: none; }
.hero-stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  margin-top: 44px;
}
.hero-stats > div { padding: 14px 22px 20px 0; }

.hero-stats .n { font-family: var(--sans); font-size: 1.35rem; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.hero-stats .l { font-size: 0.78rem; color: var(--muted); margin-top: 3px; }

/* ---------- Motion ---------- */
.rv { }
.rv.in { }
.btn { transition: background 0.15s, color 0.15s; }

.ledger-row { transition: background 0.15s; padding-left: 16px; padding-right: 16px; margin-left: -16px; margin-right: -16px; }
.ledger-row:hover { background: var(--mist); }
.edu-links a { transition: background 0.15s; padding-left: 14px; padding-right: 14px; margin-left: -14px; margin-right: -14px; }
.edu-links a:hover { background: var(--mist); }
@media (prefers-reduced-motion: reduce) {
  .rv { opacity: 1; transform: none; transition: none; }
  .btn:hover { transform: none; }
}

/* ---------- Scale up display type ---------- */
.section-head h2 { font-size: 2rem; font-weight: 450; }
.statement h2 { font-size: 1.7rem; font-weight: 450; }
.page-hero h1 { font-size: clamp(2rem, 3.2vw, 2.7rem); font-weight: 500; }

@media (max-width: 880px) {
  .hero-grid { grid-template-columns: 1fr; gap: 44px; padding-top: 56px; }
  .hero-stats { grid-template-columns: 1fr 1fr; margin-top: 44px; }
  .hero-stats > div:nth-child(odd) { border-left: none; padding-left: 0; }
  .ledger-row, .edu-links a { margin-left: 0; margin-right: 0; padding-left: 0; padding-right: 0; }
}

.prose a, .faq-a a, .notice a, .side-label a { color: var(--link); }
.footer-bottom a { color: var(--on-dark-muted); text-decoration: none; margin-left: 14px; }
.footer-bottom a:hover { color: #fff; text-decoration: underline; }


/* Certificate realism */
.doc-report { border-width: 2px; }
.spec-diag {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%) rotate(-24deg);
  font-family: var(--sans); font-size: 92px; font-weight: 700; letter-spacing: 0.28em;
  color: rgba(126,31,46,0.035); pointer-events: none; white-space: nowrap; z-index: 1;
}
.dr-fine {
  border-top: 1px solid #D9DBDF; margin-top: 6px; padding-top: 8px;
  font-size: 7.6px; line-height: 1.5; color: #8A8D93; text-align: justify;
}
.dr-sign { text-align: center; flex-shrink: 0; }
.dr-sign svg { width: 96px; height: 30px; display: block; margin: 0 auto; }
.dr-sign .t { font-size: 7.5px; letter-spacing: 0.14em; color: var(--muted); border-top: 1px solid #B4B7BC; padding-top: 3px; margin-top: 2px; }
.barcode { height: 26px; margin-top: 6px; }

/* Differentiators */
.diff { counter-reset: dif; }
.diff li { list-style: none; padding: 18px 0; border-bottom: 1px solid #ECEEF1; display: grid; grid-template-columns: 200px 1fr; gap: 28px; }

.diff h3 { font-size: 1rem; }
.diff p { font-size: 0.92rem; color: var(--muted); margin: 0; }
@media (max-width: 880px) { .diff li { grid-template-columns: 1fr; gap: 6px; } }

/* No-fee ledger variant */
.ledger-row.nofee { grid-template-columns: 1fr 190px; }

.fourc .card, .clarity-cell { border: none; }
.fourc .card { background: var(--mist); }

.cr-notes { margin-top: 6px; }
.cr-grid .f .v.sm { font-size: 8.6px; font-weight: 600; }
.cr-notes .nrow { margin-top: 2px; line-height: 1.35; }
.cr-notes .nl { display: inline; font-size: 6.3px; letter-spacing: 0.1em; color: var(--muted); text-transform: uppercase; margin-right: 3px; }
.cr-notes .nv { display: inline; font-size: 7.2px; line-height: 1.35; color: var(--ink-2); }
.card-report + .card-report { transform: rotate(1.1deg); }

.cr-watermark {
  position: absolute; left: 50%; top: 52%; transform: translate(-50%,-50%);
  width: 58%; height: auto; opacity: 0.05; pointer-events: none; z-index: 0;
}
.cr-head, .cr-body, .cr-foot { position: relative; z-index: 1; }
.cr-strip { flex-shrink: 0; height: 13px; position: relative; z-index: 1; }
.cr-strip svg { display: block; width: 100%; height: 13px; }

.photo-band { position: relative; }
.photo-band img { width: 100%; height: 420px; object-fit: cover; display: block; }
.photo-band .pb-cap {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 40px;
  background: linear-gradient(transparent, rgba(18,20,25,0.55)); color: #fff; font-size: 0.8rem; letter-spacing: 0.03em;
}

/* Dropdown navigation */
.nav { gap: 4px; }
.nav > a, .nav .dd > a {
  padding: 0 12px; display: flex; align-items: center; height: 76px; white-space: nowrap;
  text-decoration: none; color: var(--text); font-size: 0.92rem; font-weight: 500;
}
.nav .dd { position: relative; }
.nav .dd > a::after { content: ""; width: 7px; height: 7px; margin-left: 7px; margin-top: -3px;
  border-right: 1.4px solid #9A9CA1; border-bottom: 1.4px solid #9A9CA1; transform: rotate(45deg); }
.dd-menu {
  display: none; position: absolute; top: 76px; left: 0; min-width: 250px;
  background: #fff; border: 1px solid var(--line); border-top: 2px solid var(--brand);
  box-shadow: 0 10px 26px rgba(18,20,25,0.10); padding: 8px 0; z-index: 60;
}
.dd:hover .dd-menu { display: block; }
.dd-menu a { display: block; padding: 9px 20px; font-size: 0.88rem; color: var(--text); text-decoration: none; height: auto; }
.dd-menu a:hover { background: var(--mist); color: var(--link); text-decoration: none; }
.dd-menu .dd-note { display: block; padding: 9px 20px 4px; font-size: 0.78rem; color: var(--muted); }
.dd-menu .dd-sep { height: 1px; background: var(--line); margin: 7px 0; }

/* Rare cuts feature */
.cuts-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-top: 36px; }
.cut-fig { background: #fff; padding: 34px 30px 22px; }
.tinted .cut-fig { background: #fff; }
.cut-fig svg { width: 100%; max-width: 320px; height: auto; margin: 0 auto; display: block; }
.cut-fig .cf-name { font-size: 1.05rem; font-weight: 600; margin-top: 18px; }
.cut-fig .cf-sub { font-size: 0.82rem; color: var(--muted); margin-top: 2px; }
@media (max-width: 880px) { .cuts-duo { grid-template-columns: 1fr; } .nav > a, .nav .dd > a { height: auto; } }

/* Clean photo hero */
.hero-photo img { width: 100%; height: 430px; object-fit: cover; display: block; }
.cuts-trio { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 36px; }
.cuts-trio .cut-fig svg { max-width: 250px; }
@media (max-width: 880px) { .cuts-trio { grid-template-columns: 1fr; } .hero-photo img { height: 300px; } }

/* Hero slider */
.hero-slider { position: relative; }
.hero-slide { display: none; }
.hero-slide.on { display: block; }
.hero-ctl {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px; border: 1px solid var(--line); background: #fff;
  cursor: pointer; z-index: 5; display: flex; align-items: center; justify-content: center;
}
.hero-ctl:hover { border-color: var(--ink); }
.hero-ctl.prev { left: 14px; }
.hero-ctl.next { right: 14px; }
.hero-ctl::before { content: ""; width: 9px; height: 9px; border-left: 2px solid var(--ink); border-bottom: 2px solid var(--ink); }
.hero-ctl.prev::before { transform: rotate(45deg); margin-left: 4px; }
.hero-ctl.next::before { transform: rotate(225deg); margin-right: 4px; }
.hero-dots { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); display: flex; gap: 9px; z-index: 5; }
.hero-dots button { width: 9px; height: 9px; border-radius: 50%; border: none; background: #C9CCD1; cursor: pointer; padding: 0; }
.hero-dots button.on { background: var(--brand); }
.hero-slide .ann { font-size: 0.76rem; font-weight: 600; letter-spacing: 0.06em; color: var(--brand); margin-bottom: 9px; text-transform: uppercase; }

/* Service photo cards */
.svc-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.svc-card { background: #fff; text-decoration: none; color: var(--text); display: block; }
.svc-card img { width: 100%; height: 175px; object-fit: cover; display: block; }
.svc-card h3 { font-size: 1.02rem; margin: 14px 0 5px; }
.svc-card p { font-size: 0.86rem; color: var(--muted); }
.svc-card .go { display: inline-block; margin-top: 9px; font-size: 0.84rem; font-weight: 500; color: var(--link); }
.svc-card:hover .go { text-decoration: underline; }
@media (max-width: 880px) { .svc-cards { grid-template-columns: 1fr 1fr; } .hero-ctl { display: none; } }

/* Full-bleed hero slider */
.hero-slider .hero-slide.on { display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; }
.hero-slider .hs-textwrap { display: flex; justify-content: center; align-items: center; }
.hero-slider .hs-text { width: min(100%, 580px); padding: 28px 44px; }
.hero-slider .hero-slide.on { min-height: 500px; }
.hero-slider .hero-photo { position: relative; min-height: 300px; }
.hero-slider .hero-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 880px) {
  .hero-slider .hero-slide.on { grid-template-columns: 1fr; }
  .hero-slider .hs-text { width: 100%; padding: 44px 24px 36px; }
  .hero-slider .hero-photo img { min-height: 300px; height: 300px; }
}

/* Footer v2 */
.footer-grid { grid-template-columns: 1.6fr 1fr 1fr 1fr 1fr; gap: 34px; }
.f-social { display: flex; gap: 14px; margin-top: 16px; }
.f-social a { display: flex; width: 34px; height: 34px; border: 1px solid var(--line-dark); border-radius: 2px; align-items: center; justify-content: center; }
.f-social a:hover { border-color: var(--on-dark); }
.f-social svg { width: 16px; height: 16px; fill: var(--on-dark-muted); }
.f-social a:hover svg { fill: #fff; }
@media (max-width: 880px) { .footer-grid { grid-template-columns: 1fr 1fr; } }

/* Verify page v2 */
.v-secure { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 44px; }
.v-secure .panel { margin-bottom: 0; }
.v-more { margin-top: 56px; }

/* Card Report v3 */
.cr3-results {
  display: grid; grid-template-columns: repeat(4, 1fr);
  border-bottom: 1px solid #E4E6EA; flex-shrink: 0; position: relative; z-index: 1;
}
.cr3-results > div { padding: 7px 6px 6px 14px; border-left: 1px solid #E4E6EA; }
.cr3-results > div:first-child { border-left: none; }
.cr3-results .l { font-size: 6.2px; letter-spacing: 0.14em; color: var(--muted); text-transform: uppercase; }
.cr3-results .v { font-size: 13.5px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; line-height: 1.25; }
.cr3-body { flex: 1; display: grid; grid-template-columns: 1fr 33%; gap: 14px; padding: 9px 14px 7px; min-height: 0; position: relative; z-index: 1; }
.cr3-id .kind { font-size: 6.8px; letter-spacing: 0.16em; color: var(--brand); font-weight: 700; }
.cr3-id .no { font-size: 12.5px; font-weight: 700; color: var(--ink); margin: 0 0 5px; font-variant-numeric: tabular-nums; }
.cr3-row { display: flex; justify-content: space-between; gap: 8px; padding: 2.5px 0; border-bottom: 1px dotted #DDE0E4; }
.cr3-row:last-child { border-bottom: none; }
.cr3-row .rl { font-size: 7px; letter-spacing: 0.1em; color: var(--muted); text-transform: uppercase; white-space: nowrap; padding-top: 1.5px; }
.cr3-row .rv { font-size: 9px; font-weight: 600; color: var(--ink); text-align: right; line-height: 1.35; }
.cr3-note { margin-top: 4px; font-size: 7.2px; line-height: 1.4; color: var(--ink-2); }
.cr3-note .nl { font-size: 6.2px; letter-spacing: 0.1em; color: var(--muted); text-transform: uppercase; margin-right: 3px; }
.cr3-photo { display: flex; flex-direction: column; min-height: 0; }
.cr3-photo .well { flex: 1; background: #fff; border: 1px solid #E4E6EA; border-radius: 3px; display: flex; align-items: center; justify-content: center; overflow: hidden; min-height: 0; }
.cr3-photo img { width: 88%; height: 88%; object-fit: contain; }
.cr3-photo .ins { font-size: 6.2px; letter-spacing: 0.07em; color: var(--muted); text-align: center; margin-top: 3px; white-space: nowrap; }
.cr3-foot {
  display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center;
  padding: 5px 14px 7px; border-top: 1px solid #E4E6EA; flex-shrink: 0; position: relative; z-index: 1;
}
.cr3-foot .qr { width: 24px; height: 24px; }
.cr3-foot .u { font-size: 6.6px; color: var(--muted); letter-spacing: 0.04em; line-height: 1.45; }
.cr3-foot .sp { font-size: 6.2px; letter-spacing: 0.24em; color: #C58B94; font-weight: 700; }

/* Jewelry card v4: typed-form genre layout */
.crj { display: grid; grid-template-columns: 16px 1fr; }
.crj-stripe { position: relative; background: linear-gradient(180deg, #641822, #7E1F2E 55%, #641822); }
.crj-stripe svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.crj-main { display: flex; flex-direction: column; min-width: 0; }
.crj-head { display: flex; justify-content: space-between; align-items: flex-start; padding: 9px 12px 5px 12px; }
.crj-head .n { display: flex; align-items: center; gap: 6px; }
.crj-head .n svg { width: 22px; height: 15px; }
.crj-head .n span { font-size: 8px; letter-spacing: 0.16em; font-weight: 700; color: var(--ink); }
.crj-head .t { text-align: right; font-size: 6.6px; letter-spacing: 0.18em; color: var(--brand); font-weight: 700; line-height: 1.55; }
.crj-body { flex: 1; display: grid; grid-template-columns: 1fr 31%; gap: 10px; padding: 2px 12px 4px 12px; min-height: 0; }
.crj-lines { min-width: 0; }
.crj-lines .ln2 { font-size: 7.6px; line-height: 1.52; color: var(--ink-2); }
.crj-lines .ln2 b { font-size: 6.8px; letter-spacing: 0.09em; color: var(--ink); font-weight: 700; }
.crj-lines .ln2.big { font-size: 9.5px; font-weight: 700; color: var(--ink); }
.crj-photo { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding-top: 2px; }
.crj-photo img { width: 100%; max-height: 118px; object-fit: contain; }
.crj-photo .cap { font-size: 5.8px; letter-spacing: 0.12em; color: var(--muted); margin-top: 2px; }
.crj-foot { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: end; padding: 3px 12px 8px 12px; }
.crj-foot .qr { width: 26px; height: 26px; }
.crj-foot .u { font-size: 6px; color: var(--muted); letter-spacing: 0.05em; line-height: 1.5; }
.crj-foot .sp { font-size: 6px; letter-spacing: 0.22em; color: #C58B94; font-weight: 700; }

/* Jewelry card v5 */
.card-report.crj { background: #fff; grid-template-columns: 1fr; }
.crj-stripe { display: none; }
.crj-main { position: relative; }
.crj-head {
  background: linear-gradient(180deg, #EDE0CB 0%, #F6EFE3 70%, #FFFFFF 100%);
  padding: 11px 15px 9px; align-items: center;
}
.crj-head .n span { font-size: 7.4px; letter-spacing: 0.12em; }
.crj-head .n svg { width: 24px; height: 16px; }
.crj-body { padding: 8px 15px 4px; grid-template-columns: 1fr 30%; gap: 14px; }
.crj-lines .ln2 { font-size: 8.5px; line-height: 2.05; }
.crj-lines .ln2 b { font-size: 7.4px; }
.crj-lines .ln2.big { font-size: 11px; }
.crj-photo { padding-top: 0; }
.crj-photo img { max-height: 92px; }
.crj-photo .cap { font-size: 6px; }
.crj-qr { width: 46px; height: 46px; margin-top: 6px; }
.crj-qr img { width: 100%; height: 100%; display: block; }
.crj-photo .scan { font-size: 5.6px; letter-spacing: 0.12em; color: var(--muted); margin-top: 2px; text-align: center; }
.crj-foot { grid-template-columns: 1fr auto; padding: 2px 15px 7px; align-items: center; }
.crj-foot .u { font-size: 6.4px; }
.crj-foot .code { font-size: 6.2px; letter-spacing: 0.08em; color: var(--muted); white-space: nowrap; }


/* ---------- IGML Card Report (final) ---------- */
.cr-display { display: flex; justify-content: center; align-items: flex-start; gap: 30px; flex-wrap: wrap; padding: 12px 0; }
.pcard {
  width: 524px; max-width: 100%; aspect-ratio: 1.586; position: relative; display: flex;
  border-radius: 11px; overflow: hidden; background: #fff;
  box-shadow: 0 14px 34px rgba(18,20,25,.18); border: 1px solid #D2D5DA;
}
.pcard + .pcard { transform: rotate(1deg); }
.pc-band { width: 32px; flex-shrink: 0; position: relative; z-index: 2; overflow: hidden; }
.pc-band .btex { position: absolute; inset: 0; width: 100%; height: 100%; }
.pc-main { flex: 1; display: flex; flex-direction: column; min-width: 0; position: relative; z-index: 2; }
.pc-hd { padding: 12px 15px 6px; flex-shrink: 0; }
.pc-n { display: flex; align-items: center; gap: 10px; }
.pc-box { background: var(--brand); color: #fff; font-weight: 800; font-size: 11px; letter-spacing: .05em; line-height: 1; padding: 5.5px 6px 5.5px 7px; flex-shrink: 0; }
.pc-lab { font-size: 7.9px; letter-spacing: .11em; font-weight: 700; line-height: 1.46; color: var(--ink); }
.pc-vt { position: absolute; right: 0; top: 0; bottom: 0; width: 22px; display: flex; align-items: center; justify-content: center; z-index: 3; }
.pc-vt span { writing-mode: vertical-rl; transform: rotate(180deg); font-size: 6.6px; letter-spacing: .22em; color: var(--brand); font-weight: 700; white-space: nowrap; }
.pc-bd { flex: 1; display: grid; grid-template-columns: 1fr 34%; gap: 15px; padding: 7px 26px 4px 15px; min-height: 0; }
.pc-lines .l { font-size: 9.4px; line-height: 1.60; color: #1D2026; margin-bottom: 5px; }
.pc-lines .l:last-child { margin-bottom: 0; }
.pc-lines .l b { font-size: 8.2px; letter-spacing: .09em; font-weight: 700; color: var(--ink); }
.pc-side { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-height: 0; }
.pc-fig { display: flex; flex-direction: column; align-items: center; width: 100%; margin: 0; }
.pc-fig img { width: 100%; aspect-ratio: 1; object-fit: contain;
  background: #fff; display: block; }
.pc-cap { font-size: 6.6px; letter-spacing: .13em; color: var(--muted); margin-top: 3px; text-align: center; }
.pc-ft { display: flex; align-items: center; gap: 10px; padding: 4px 26px 8px 15px; flex-shrink: 0; }
.pc-qr { width: 42px; height: 42px; }
.pc-u { flex: 1; font-size: 7.2px; color: var(--muted); letter-spacing: .05em; }
.pc-code { font-size: 7.0px; letter-spacing: .08em; color: var(--muted); white-space: nowrap; }
@media (max-width: 880px) { .pcard, .pcard + .pcard { transform: none; } }


/* ---------- wallet card: back face ---------- */
.pcard-back .pc-main { padding: 0; }

.f-box {
  display: inline-block; background: #8E2334; color: #FFFFFF;
  font-family: var(--sans); font-weight: 800; font-size: 1.05rem; letter-spacing: 0.055em;
  line-height: 1; padding: 8px 11px 8px 12px; margin-bottom: 14px;
}

/* ---------- Card Report back: diagonal crystal wedge + logo ---------- */
.pcard-back { display: block; position: relative; overflow: hidden; }
.pb-wedge { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; }
.pb-brand {
  position: relative; z-index: 2; height: 100%;
  display: flex; flex-direction: column; align-items: flex-start; justify-content: center;
  padding-left: 34px;
}
.pb-brand .pb-box {
  background: var(--brand); color: #FFFFFF; font-weight: 800; font-size: 27px;
  letter-spacing: 0.05em; line-height: 1; padding: 13px 15.5px 13px 16.5px;
}
.pb-name {
  margin-top: 15px; font-size: 9px; letter-spacing: 0.155em; text-transform: uppercase;
  font-weight: 700; color: var(--ink); line-height: 1.62;
}


/* ===== BEGIN report-card-language ===== */
/* The report now wears the card's clothes. */
.doc-report{
  background:#FFFFFF; border:1px solid #E4E6EA; border-radius:0;
  box-shadow:0 10px 30px rgba(18,20,25,0.10);
  padding:26px 74px 20px 88px;
}
.doc-report::before{ display:none; }          /* the inset double frame reads as clip-art */
/* One mark, not two. The card carries no watermark at all and is the stronger
   document for it; the SAMPLE mark stays because it says something true, the IGML
   letterform wash was decoration sitting on top of the data. */
.dr-watermark{ display:none; }
/* .spec-diag lives in styles.css, which pdf-report.html does not link -- so its
   SAMPLE mark has been rendering as small unstyled grey text in the corner. */
.spec-diag{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%) rotate(-24deg);
  font-family:var(--sans); font-size:92px; font-weight:700; letter-spacing:.28em;
  pointer-events:none; white-space:nowrap; z-index:1;
}
.dr-band{ position:absolute; left:0; top:0; bottom:0; width:60px; overflow:hidden; z-index:2; }
.dr-band .dr-btex{ position:absolute; inset:0; width:100%; height:100%; }
.dr-vt{ position:absolute; right:0; top:0; bottom:0; width:40px;
        display:flex; align-items:center; justify-content:center; z-index:2; }
.dr-vt span{ writing-mode:vertical-rl; transform:rotate(180deg); font-family:var(--sans);
  font-size:9.2px; letter-spacing:.22em; color:var(--brand); font-weight:700; white-space:nowrap; }
/* masthead lockup matched to the card */
.dr-head .dr-box{ font-size:15.5px; padding:9px 10px 9px 12px; }
.dr-head .dr-lab{ font-family:var(--sans); font-size:10.4px; letter-spacing:.11em;
  font-weight:700; line-height:1.46; color:var(--ink); text-transform:uppercase; }
.dr-head .dr-lab span{ font-size:7px; letter-spacing:.2em; color:var(--muted);
  font-weight:600; margin-top:4px; }
.dr-title .t1{ font-family:var(--sans); font-weight:700; font-size:13px; letter-spacing:.1em;
  text-transform:uppercase; }
.dr-title .t2{ letter-spacing:.22em; }
/* section heads pick up the card's tracking discipline */
.dr-sec h4{ letter-spacing:.19em; color:var(--brand); border-bottom-color:#E4E6EA; }
.dr-row{ border-bottom:1px solid #F0F1F3; }
.dr-row .l{ letter-spacing:.02em; }
.dr-foot{ border-top:1px solid var(--ink); }
.dr-foot .qr{ width:64px; height:64px; }
/* Scales: the filled segmented boxes read as clip-art. A grade is a position on
   a range, so show the range as one hairline and mark the position. */
.dr-scale .s-row{ gap:0; margin-top:6px; border-bottom:1px solid #E4E6EA; }
.dr-scale .s-seg{
  background:none; border:none; color:#9A9CA1; font-weight:500;
  font-size:8.4px; letter-spacing:.1em; padding:0 0 5px; position:relative;
}
.dr-scale .s-seg.on{ background:none; border:none; color:var(--brand); font-weight:700; }
.dr-scale .s-seg.on::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px; background:var(--brand);
}
/* Real microtext is a hairline to the naked eye. Rendered dark enough to read,
   it stops being a security feature and becomes decoration. */
.dr-micro{ font-size:5.4px; color:#DCDEE2; letter-spacing:.3em; }
.dr-sign .t{ border-top:1px solid #9A9CA1; }
.dr-key-sec{ margin-top:14px; }
.dr-key-sec .dr-row .l{ color:var(--ink); }
.dr-key-sec .k{ color:#B42318; font-weight:700; margin-right:5px; }
.dr-keynote{ font-size:8.2px; line-height:1.55; color:var(--muted); margin-top:7px; }
.spec-diag{ color:rgba(126,31,46,0.045); }
/* ===== END report-card-language ===== */

/* ===== BEGIN compliance-sweep ===== */
.footer-status{
  border-top:1px solid rgba(255,255,255,.12); margin-top:18px; padding-top:14px;
  font-size:0.78rem; color:var(--on-dark-muted); letter-spacing:.02em;
}
.footer-status a{ color:var(--on-dark); text-decoration:underline; text-underline-offset:2px; }
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:999; background:var(--brand); color:#fff;
  padding:10px 16px; font-size:0.85rem; font-weight:600; text-decoration:none;
}
.skip-link:focus{ left:0; }
/* ===== END compliance-sweep ===== */


/* ===== BEGIN responsive-repair =====
   The site had exactly one breakpoint (880px), so every layout that survived the
   jump from desktop to tablet was assumed to survive the jump to a phone as well.
   Several did not: four-up grids stayed four-up at 390px and pushed the page
   sideways, and a flex row that became a flex column turned its flex-basis into a
   height. Everything below is phone-width repair; desktop is deliberately
   untouched except where noted. */

/* --- Page gutter ---------------------------------------------------------
   40px of padding each side costs a 390px phone a fifth of its screen, and it is
   what forces most of the squeezed grids below to be squeezed in the first place. */
@media (max-width: 560px) {
  .wrap { padding-left: 22px; padding-right: 22px; }
}

/* --- Announcement bar ----------------------------------------------------
   Three items in a fixed 34px bar wrapped into two ragged lines that ran into the
   header beneath. Let the bar grow to fit, centre what is in it, and drop the
   opening hours on the narrowest screens (they repeat verbatim in the footer). */
@media (max-width: 880px) {
  .topbar .wrap {
    height: auto; min-height: 34px; padding-top: 7px; padding-bottom: 7px;
    line-height: 1.5;
  }
  .topbar .tb-right {
    flex-wrap: wrap; justify-content: center; text-align: center;
    column-gap: 16px; row-gap: 1px;
  }
}
@media (max-width: 560px) { .topbar .tb-hours { display: none; } }

/* --- Verify page: the security panels ------------------------------------
   repeat(4, 1fr) with no override. On a phone this was four ~70px columns of
   one-word-per-line text, and the last two hung 205px off the right edge. */
@media (max-width: 880px) { .v-secure { grid-template-columns: 1fr 1fr; gap: 16px 20px; } }
@media (max-width: 560px) { .v-secure { grid-template-columns: 1fr; gap: 4px; } }

/* --- Home page: the verify band ------------------------------------------
   `.vb-form` is `flex: 0 1 460px`. At <=880px the row becomes a column, and in a
   column a flex-basis is a HEIGHT -- so the form rendered as a 460px white slab
   with the field floating in the middle of it. Also: the submit button was white
   on a white input, so the only call to action in the band read as decoration. */
@media (max-width: 880px) {
  .vb-form { flex: 0 0 auto; width: 100%; }
}
.vb-form button { background: var(--brand); color: #fff; }
.vb-form button:hover { background: var(--brand-dark); }

/* --- Text inputs inside flex rows ----------------------------------------
   A flex item's default `min-width: auto` floors it at min-content, and for an
   <input> that is roughly its default 20-character size. Both verify forms
   therefore refused to shrink below ~300px and pushed the page sideways on a
   320px screen. */
.vb-form { min-width: 0; }
.vb-form input, .verify-form input, .hdr-verify input { min-width: 0; }

/* --- Footer: inline links ------------------------------------------------
   `.site-footer a { display: block }` was inherited by the two runs of inline
   links at the bottom. It stacked Privacy/Terms/Accessibility into a column, and
   it broke "Current status." onto two lines so the full stop landed alone on a
   line of its own -- on every page, desktop and phone. */
.footer-bottom a, .footer-status a { display: inline; }
.footer-bottom a { margin-left: 0; margin-right: 14px; }
.footer-bottom span + span a:last-child { margin-right: 0; }

/* --- Reports page: the fee ledger ----------------------------------------
   `.ledger-row` collapses to one column on mobile but `.ledger-row.nofee` is more
   specific and kept its `1fr 190px`, so the service name and its description were
   crushed into 114px beside a near-empty 190px column. */
@media (max-width: 880px) {
  .ledger-row.nofee { grid-template-columns: 1fr; gap: 6px; }
}

/* --- Wallet card specimens -----------------------------------------------
   The card is a fixed 524px design (it is a real CR80 card at 1:1.586) whose type
   sizes are absolute px. `max-width: 100%` shrank the box but not its contents, so
   on a phone the QR sat on top of the grade lines and the terms line sat on top of
   the measurements. Scale the whole card instead of reflowing it -- the point of
   the specimen is that it looks like the physical card. Desktop is unaffected. */
@media (max-width: 700px) {
  .cr-display { gap: 22px; }
  .pcard { width: 524px; max-width: none; zoom: 0.62; }
}
@media (max-width: 430px) { .pcard { zoom: 0.55; } }
@media (max-width: 370px) { .pcard { zoom: 0.50; } }

/* --- Spec tables ---------------------------------------------------------
   Two-column tables become term-over-definition blocks: at 390px the description
   column was 145px wide and broke to two or three words a line. The four-column
   comparison table on /technology cannot compress that far, so it scrolls in place
   rather than pushing the whole page sideways. */
@media (max-width: 620px) {
  .spec-2col, .spec-2col tbody, .spec-2col tr, .spec-2col td { display: block; width: 100%; }
  .spec-2col tr:first-child { display: none; }
  .spec-2col tr { padding: 13px 0; border-bottom: 1px solid #ECEEF1; }
  .spec-2col td { padding: 0; border-bottom: none; }
  .spec-2col td:first-child { margin-bottom: 4px; }
  .spec-2col td:last-child { color: var(--muted); }
}
@media (max-width: 880px) {
  .spec-wide { display: block; overflow-x: auto; font-size: 0.82rem; }
  .spec-wide th, .spec-wide td { padding-right: 8px; }
  .spec-table th, .spec-table td { padding-right: 10px; }
}

/* --- Education: the grade scales -----------------------------------------
   Five columns across a phone gave 37-65px cells, so "K - M" and "Very light"
   broke mid-range. */
@media (max-width: 620px) {
  .scale-groups { grid-template-columns: 1fr 1fr; row-gap: 10px; }
  .scale-groups > div:nth-child(odd) { border-left: none; padding-left: 0; }
}
@media (max-width: 460px) { .clarity-row { grid-template-columns: 1fr 1fr; gap: 16px; } }

/* --- Service cards: aligned footers --------------------------------------
   Two-up on a phone, the "Reports ->" links sat at whatever height the paragraph
   above them happened to end, so no two lined up. */
.svc-card { display: flex; flex-direction: column; }
.svc-card .go { margin-top: auto; padding-top: 9px; }

/* --- Header row ----------------------------------------------------------
   The logo, nav and verify field need 1145px of a 1080px column, so the field
   hung 65px past the spine that every other element on the page lines up to --
   and on any viewport under ~1225px that 65px became real horizontal scroll on
   every page. Buy the width back from the gaps and the type rather than dropping
   anything: 20px gaps, a slightly smaller nav, and a field sized to a placeholder
   that fits it (the full example number lives on /verify, where it is needed). */
.site-header .wrap { gap: 20px; }
.nav > a, .nav .dd > a { padding: 0 8px; }
.hdr-verify input { width: 132px; }
/* Between the 880px mobile breakpoint and ~1120px there is still not room for all
   three. Drop the verify field first -- Verify is already a top-level nav item --
   and tighten the nav for the last stretch above the breakpoint. */
@media (max-width: 1120px) { .hdr-verify { display: none; } }
@media (max-width: 940px) {
  .nav > a, .nav .dd > a { padding: 0 6px; font-size: 0.86rem; }
}

/* --- Long-form pages: one left edge --------------------------------------
   `.wrap.prose` sets max-width on the same element that centres itself, so the
   prose column re-centred at x=360 while every figure, table and section on the
   same page sat on the spine at x=140. /education alternates between the two
   seven times. Keep the 720px reading measure, but hang it off the spine. */
@media (min-width: 881px) {
  .wrap.prose { max-width: 1160px; }
  .wrap.prose > * { max-width: 720px; }
}
/* ===== END responsive-repair ===== */


/* ===== BEGIN mobile-navigation =====
   The 880px breakpoint deleted the nav and the header verification field and put
   nothing in their place. On a phone the only way to reach Reports, Laboratory,
   Education, Verify or Contact was a link that happened to appear in body copy,
   and the field that the whole genre is built around was simply gone.

   The markup now wraps the nav and the verify form in .hdr-collapse. Above the
   breakpoint that wrapper is `display: contents`, so the header's flex children
   are still exactly (logo, nav, form) and desktop renders byte-identical to
   before. Below it the wrapper becomes a panel under the sticky header. */

.hdr-collapse { display: contents; }
.hdr-verify-label { display: none; }
.nav-toggle { display: none; }

@media (max-width: 880px) {
  /* the panel hangs off the header row, so that row is the containing block */
  .site-header .wrap { position: relative; }

  /* --- the button ---
     Bars plus the word, because an unlabelled icon is a consumer-app
     convention and this site is meant to read as an institution. No
     transition on the open state: the house style is motionless. */
  .nav-toggle {
    display: flex; align-items: center; gap: 9px; flex-shrink: 0;
    height: 44px; padding: 0 2px; margin-right: -2px;
    background: none; border: none; cursor: pointer;
    font-family: var(--sans); font-size: 0.7rem; font-weight: 600;
    letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink);
  }
  .nav-toggle .nt-bars { display: block; width: 20px; height: 14px; position: relative; }
  .nav-toggle .nt-bars span {
    display: block; position: absolute; left: 0; width: 20px; height: 1.5px;
    background: var(--ink);
  }
  .nav-toggle .nt-bars span:nth-child(1) { top: 0; }
  .nav-toggle .nt-bars span:nth-child(2) { top: 6.25px; }
  .nav-toggle .nt-bars span:nth-child(3) { top: 12.5px; }
  .nav-toggle[aria-expanded="true"] .nt-bars span:nth-child(1) { top: 6.25px; transform: rotate(45deg); }
  .nav-toggle[aria-expanded="true"] .nt-bars span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] .nt-bars span:nth-child(3) { top: 6.25px; transform: rotate(-45deg); }

  /* --- the panel --- */
  .hdr-collapse {
    display: none;
    position: absolute; top: 100%; left: 0; right: 0; z-index: 60;
    flex-direction: column;
    background: var(--paper);
    border-top: 1px solid var(--line);
    border-bottom: 3px solid var(--brand);
    box-shadow: 0 16px 34px rgba(18,20,25,0.14);
    /* the header is 76px and the topbar scrolls away above it */
    max-height: calc(100vh - 76px);
    overflow-y: auto; -webkit-overflow-scrolling: touch;
    padding-bottom: 10px;
  }
  .hdr-collapse.open { display: flex; }

  /* the verification field is the one control that has to be reachable first,
     so it is ordered above the link list rather than left in DOM order */
  .hdr-verify-label {
    order: -2; display: block;
    padding: 16px 40px 7px;
    font-size: 0.68rem; font-weight: 600; letter-spacing: 0.18em;
    text-transform: uppercase; color: var(--muted);
  }
  .hdr-collapse .hdr-verify {
    order: -1; display: flex; padding: 0 40px 16px;
    border-bottom: 1px solid var(--line);
  }
  .hdr-collapse .hdr-verify input {
    flex: 1; width: auto; min-width: 0;
    padding: 12px 14px; font-size: 16px; /* under 16px iOS zooms the page on focus */
    border-right: none;
  }
  .hdr-collapse .hdr-verify button { padding: 12px 18px; font-size: 0.72rem; }

  /* --- the link list ---
     The desktop dropdowns become indented sub-lists. Their parent is a real
     page in its own right, so it stays a link and loses the chevron that on
     desktop promised a menu that is now already open. */
  .hdr-collapse .nav { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
  .nav .dd { display: block; position: static; }
  .nav > a, .nav .dd > a {
    display: flex; align-items: center; height: auto; min-height: 50px;
    padding: 4px 40px; font-size: 1rem; font-weight: 600; white-space: normal;
    border-bottom: 1px solid var(--line);
  }
  .nav .dd > a::after { content: none; }
  .nav .dd-menu {
    display: block; position: static; min-width: 0; padding: 0;
    background: var(--mist); border: none; border-top: none; box-shadow: none;
  }
  .nav .dd-menu a {
    display: flex; align-items: center; min-height: 44px; height: auto;
    padding: 4px 40px 4px 58px; font-size: 0.92rem; color: var(--text);
    border-bottom: 1px solid var(--line);
  }
  .nav .dd-menu .dd-note { padding: 10px 40px 12px 58px; border-bottom: 1px solid var(--line); }
  .nav .dd-menu .dd-sep { display: none; }
}

/* --- The header row at phone width ---
   .logo is flex-shrink: 0 and .logo .word is nowrap, so the lockup holds its
   full desktop width and pushes the button off the right edge instead: the
   word "Close" was half cut off at 390px. Let the descriptor set smaller and
   wrap, and drop the button's word label to the accessibility tree so it
   costs no width. Both changes are phone-only. */
@media (max-width: 560px) {
  .site-header .wrap { gap: 14px; }
  .logo { gap: 10px; min-width: 0; }
  .logo-box { font-size: 1.05rem; padding: 8px 10px 8px 11px; }
  .logo .word { font-size: 0.5rem; letter-spacing: 0.08em; white-space: normal; }
  /* the bars stay flush to the gutter, the negative margin buys back the
     padding so the target is 44px wide rather than the 20px of the glyph */
  .nav-toggle { position: relative; padding: 0 12px; margin-right: -12px; }
  .nav-toggle .nt-word {
    position: absolute; width: 1px; height: 1px; overflow: hidden;
    clip-path: inset(50%); white-space: nowrap;
  }
}

/* the panel's inner padding tracks the page gutter so its left edge sits on
   the same spine as the logo above it */
@media (max-width: 560px) {
  .hdr-verify-label { padding-left: 22px; padding-right: 22px; }
  .hdr-collapse .hdr-verify { padding-left: 22px; padding-right: 22px; }
  .nav > a, .nav .dd > a { padding-left: 22px; padding-right: 22px; }
  .nav .dd-menu a,
  .nav .dd-menu .dd-note { padding-left: 40px; padding-right: 22px; }
}
/* ===== END mobile-navigation ===== */


/* ===== BEGIN mobile-repair-2 ===== */

/* --- Footer: two columns is one too many on a phone ----------------------
   The 880px rule takes the footer from five columns to two, and two columns of
   a 390px screen is 156px each. The brand paragraph in column one wrapped to
   two and three words a line for its full height. */
@media (max-width: 560px) {
  .footer-grid { grid-template-columns: 1fr; gap: 26px; }
}

/* --- Report specimen: the footer block was being cut off ------------------
   `.dr-foot` is a flex row of QR + verification note + signature line, and a
   flex item will not shrink below its min-content width. At 390px the row
   needed 1031px inside a 182px panel, and `.doc-report` is `overflow: hidden`,
   so the signature line and most of the note were clipped away rather than
   overflowing visibly. Nothing on the page indicated anything was missing. */
@media (max-width: 880px) {
  .dr-foot { flex-wrap: wrap; row-gap: 12px; }
  .dr-foot .dr-verify { flex: 1 1 100%; min-width: 0; order: 3; }
  .dr-foot .dr-sign { margin-left: auto; }
}
/* Deliberately NOT touching .dr-row: letting its label and value shrink lets
   the browser hyphenate a single-word label, and "Comm/ents" down the side of
   a grading report reads worse than the 35px of the value column that the
   ledger currently gives up. */

/* --- iOS zooms the whole page when a focused field is under 16px ----------
   Mobile Safari treats a sub-16px control as unreadable and scales the layout
   to fit it, which leaves the page zoomed and horizontally scrollable after
   the keyboard closes. The contact form ran at 15.2px and the header field at
   12.5px. Only the rendered size changes; the fields are unchanged on
   desktop. */
@media (max-width: 880px) {
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="number"], input[type="search"], select, textarea {
    font-size: 16px;
  }
}

/* --- Slider dots were 9px targets ----------------------------------------
   The prev/next arrows are hidden below 880px, which leaves the dots as the
   only way to reach slides 2 and 3. Keep the 9px dot and hang a 30px
   transparent target off it rather than drawing a bigger dot. */
@media (max-width: 880px) {
  .hero-dots { gap: 4px; bottom: 8px; }
  .hero-dots button { position: relative; }
  .hero-dots button::after {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 30px; height: 30px; transform: translate(-50%, -50%);
  }
}
/* ===== END mobile-repair-2 ===== */
