/* ═══════════════════════════════════════════════════════════════════
   THE SYSTEM — components, and the bridge that brings the older pages in
   ═══════════════════════════════════════════════════════════════════

   Linked after every other stylesheet on a page, so it is the last word.
   Two parts:

   1. COMPONENTS (.x-*): the pieces new and rebuilt pages are made of —
      buttons, panels, prices, steps, disclosures, fields, tags, records.
      Every value comes from lunara-materials.css.

   2. THE BRIDGE (body.lx-legacy): forty older pages carry their own
      inline styles and lunara-refined.css, which dimmed body text to
      half-white so gold headlines would glow. On a phone, which shows
      this 1120px page at about a third of its size, that made them
      unreadable. The bridge does not rewrite those pages. It re-points
      the variables their styles already use (--white-50, --text-dim,
      --gold-dim…) at the readable tokens, re-sets their ground, type
      and controls, and so moves all of them at once. Where a page needs
      more, that page is rebuilt, not patched here.

   The rule throughout, from docs/transformation.md: legible first —
   body 17px at 11:1, meta at 7:1 or better, nothing a reader must read
   under 12px, and weight 300 only for display type.
   ═══════════════════════════════════════════════════════════════════ */


/* ═══ 1. COMPONENTS ══════════════════════════════════════════════════ */

/* ── measure and rhythm ─────────────────────────────────────────── */
.x-wrap{width:100%;max-width:1180px;margin:0 auto;padding:0 clamp(22px,3.4vw,44px);position:relative;z-index:2}
.x-wrap--text{max-width:820px}
.x-section{position:relative;z-index:2;padding:clamp(64px,9vh,112px) 0}
.x-section--tight{padding:clamp(40px,6vh,72px) 0}
.x-rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,transparent,var(--hair) 16%,var(--hair) 84%,transparent)}

/* ── type ───────────────────────────────────────────────────────── */
.x-eyebrow{display:flex;align-items:center;gap:12px;margin:0 0 18px;
  font:400 var(--fs-label)/1.4 var(--f-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--tx-gold)}
.x-eyebrow::before{content:'';width:26px;height:1px;background:currentColor;opacity:.7}
.x-eyebrow--plain::before{display:none}
.x-h1{margin:0;font:300 var(--fs-h1)/1.04 var(--f-display);letter-spacing:-.012em;color:var(--tx-1)}
.x-h2{margin:0;font:400 var(--fs-h2)/1.1 var(--f-display);letter-spacing:-.008em;color:var(--tx-1)}
.x-h3{margin:0;font:500 var(--fs-h3)/1.2 var(--f-display);color:var(--tx-1)}
.x-h4{margin:0;font:600 var(--fs-h4)/1.35 var(--f-text);color:var(--tx-1);letter-spacing:-.005em}
.x-h1 em,.x-h2 em,.x-h3 em{font-style:italic;color:var(--tx-gold)}
.x-lede{margin:22px 0 0;max-width:60ch;font:400 var(--fs-lede)/1.6 var(--f-text);color:var(--tx-2)}
.x-lede strong,.x-body strong{color:var(--tx-1);font-weight:500}
.x-body{font:400 var(--fs-body)/1.7 var(--f-text);color:var(--tx-2)}
.x-body p+p{margin-top:14px}
.x-meta{font:400 var(--fs-small)/1.6 var(--f-text);color:var(--tx-3)}
.x-mono{font-family:var(--f-mono)}
.x-link{color:var(--tx-1);text-decoration:underline;text-decoration-color:rgba(212,181,116,.55);text-underline-offset:3px;transition:text-decoration-color var(--t-fast) ease}
.x-link:hover{text-decoration-color:var(--tx-gold)}

/* ── buttons ────────────────────────────────────────────────────── */
.x-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 26px;
  border-radius:var(--m-pill);border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;
  font:500 var(--fs-ui)/1 var(--f-text);letter-spacing:.01em;
  transition:transform var(--t-base) var(--ease-out),filter var(--t-base) ease,background var(--t-base) ease,border-color var(--t-base) ease,color var(--t-base) ease}
.x-btn svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.x-btn--gold{color:#16130D;background:linear-gradient(180deg,#F2E3BE,#CDAE73);box-shadow:0 10px 28px -14px rgba(205,174,115,.75),inset 0 1px 0 rgba(255,250,235,.7)}
.x-btn--gold:hover{filter:brightness(1.07);transform:translateY(-1px)}
.x-btn--line{color:var(--tx-1);border-color:rgba(214,222,234,.24);background:rgba(255,255,255,.02)}
.x-btn--line:hover{border-color:rgba(240,217,155,.55);background:rgba(255,255,255,.05);transform:translateY(-1px)}
.x-btn--quiet{min-height:40px;padding:0 4px;color:var(--tx-gold);border-radius:0;background:none}
.x-btn--quiet:hover{color:var(--m-gold-hi)}
.x-btn[aria-busy="true"]{opacity:.6;pointer-events:none}
.x-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:30px}

/* ── panels ─────────────────────────────────────────────────────── */
.x-card{position:relative;border-radius:16px;padding:clamp(22px,2.4vw,30px);
  background:linear-gradient(165deg,rgba(24,27,34,.78),rgba(11,13,17,.7));border:1px solid var(--hair);box-shadow:var(--m-e2)}
.x-card::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(165deg,rgba(236,240,246,.18),transparent 40%,rgba(212,181,116,.12));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.x-card--gold{border-color:var(--hair-gold);background:linear-gradient(165deg,rgba(40,34,22,.62),rgba(12,13,17,.74))}
.x-card--gold::before{background:linear-gradient(165deg,rgba(240,217,155,.5),transparent 42%,rgba(212,181,116,.22))}
.x-card--ok{border-color:rgba(127,224,176,.32)}
.x-card--ok::before{background:linear-gradient(165deg,rgba(159,227,196,.45),transparent 42%,rgba(159,227,196,.12))}
.x-card--flat{box-shadow:none;background:rgba(255,255,255,.018)}
.x-grid{display:grid;gap:18px}
.x-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.x-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.x-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}

/* ── tags: state, never decoration ──────────────────────────────── */
.x-tag{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:var(--m-pill);border:1px solid var(--hair);
  font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--tx-2);white-space:nowrap}
.x-tag::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.x-tag--gold{color:var(--tx-gold);border-color:var(--hair-gold)}
.x-tag--ok{color:var(--m-crystal);border-color:rgba(159,227,196,.3)}
.x-tag--warn{color:var(--m-warn);border-color:rgba(217,166,79,.35)}
.x-tag--bad{color:var(--m-bad);border-color:rgba(226,109,115,.35)}
.x-tag--plain::before{display:none}

/* ── a price: the figure comes from lunara-pricing.js, never typed ── */
.x-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:14px 0 4px}
.x-price b{font:300 46px/1 var(--f-display);color:var(--tx-1);letter-spacing:-.01em}
.x-price span{font:400 var(--fs-small)/1.4 var(--f-text);color:var(--tx-3)}

/* ── a list of what is included ─────────────────────────────────── */
.x-checks{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:10px}
.x-checks li{position:relative;padding-left:28px;font:400 var(--fs-ui)/1.55 var(--f-text);color:var(--tx-2)}
.x-checks li::before{content:'';position:absolute;left:2px;top:.42em;width:14px;height:8px;border-left:1.6px solid var(--m-crystal);border-bottom:1.6px solid var(--m-crystal);transform:rotate(-45deg)}

/* ── steps: a process as a line the reader can follow ───────────── */
.x-steps{list-style:none;margin:0;padding:0;display:grid;gap:0;counter-reset:x-step}
.x-steps>li{position:relative;display:grid;grid-template-columns:56px 1fr;gap:6px 20px;padding:0 0 30px;counter-increment:x-step}
.x-steps>li::before{content:counter(x-step,decimal-leading-zero);grid-row:span 2;display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:50%;border:1px solid var(--hair-gold);background:var(--m-obsidian-2);
  font:500 13px/1 var(--f-mono);letter-spacing:.06em;color:var(--tx-gold);position:relative;z-index:1}
.x-steps>li::after{content:'';position:absolute;left:21.5px;top:46px;bottom:4px;width:1px;background:linear-gradient(var(--hair-gold),var(--hair))}
.x-steps>li:last-child{padding-bottom:0}
.x-steps>li:last-child::after{display:none}
.x-steps h4,.x-steps .x-h4{margin:9px 0 0}
.x-steps p{margin:0;font:400 var(--fs-ui)/1.6 var(--f-text);color:var(--tx-2)}
.x-steps .x-named{color:var(--tx-gold)}

/* ── disclosure: the long version, one click away ───────────────── */
.x-details{border-top:1px solid var(--hair)}
.x-details:last-child{border-bottom:1px solid var(--hair)}
.x-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:20px 2px;font:500 var(--fs-body)/1.4 var(--f-text);color:var(--tx-1)}
.x-details>summary::-webkit-details-marker{display:none}
.x-details>summary::after{content:'';flex:none;width:10px;height:10px;margin-right:6px;border-right:1.5px solid var(--tx-gold);border-bottom:1.5px solid var(--tx-gold);
  transform:rotate(45deg) translate(-2px,-2px);transition:transform var(--t-base) var(--ease-out)}
.x-details[open]>summary::after{transform:rotate(-135deg) translate(-2px,-2px)}
.x-details>summary:hover{color:#fff}
.x-details>div{padding:0 2px 24px;font:400 var(--fs-ui)/1.7 var(--f-text);color:var(--tx-2);max-width:72ch}
.x-details>div p+p{margin-top:12px}

/* ── a record: label on the left, value on the right ────────────── */
.x-kv{display:grid;grid-template-columns:auto 1fr;gap:0;margin:0}
.x-kv dt,.x-kv dd{margin:0;padding:11px 0;border-bottom:1px solid var(--hair)}
.x-kv dt{font:400 var(--fs-label)/1.5 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--tx-3);padding-right:24px}
.x-kv dd{font:400 var(--fs-ui)/1.5 var(--f-mono);color:var(--tx-1);text-align:right}

/* ── fields ─────────────────────────────────────────────────────── */
.x-field{display:grid;gap:8px;align-content:start}
.x-field>label,.x-label{font:500 var(--fs-small)/1.3 var(--f-text);color:var(--tx-1)}
.x-field>small,.x-hint{font:400 13px/1.5 var(--f-text);color:var(--tx-3)}
.x-input,.x-field input:not([type=checkbox]):not([type=radio]),.x-field select,.x-field textarea{
  width:100%;min-height:50px;padding:13px 16px;border-radius:12px;border:1px solid rgba(214,222,234,.18);
  background:rgba(5,6,8,.72);color:var(--tx-1);font:400 var(--fs-ui)/1.4 var(--f-text);
  transition:border-color var(--t-fast) ease,box-shadow var(--t-fast) ease}
.x-field textarea{min-height:120px;resize:vertical;line-height:1.6}
.x-input::placeholder,.x-field input::placeholder,.x-field textarea::placeholder{color:#7D786F}
.x-input:focus,.x-field input:focus,.x-field select:focus,.x-field textarea:focus{outline:none;border-color:rgba(240,217,155,.7);box-shadow:0 0 0 3px rgba(240,217,155,.14)}
.x-field[data-state="error"] input,.x-field[data-state="error"] select{border-color:rgba(226,109,115,.7)}
.x-form{display:grid;gap:18px}
.x-form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}

/* ── figures you can read at a glance ───────────────────────────── */
.x-stat b{display:block;font:300 54px/1 var(--f-display);color:var(--tx-1);letter-spacing:-.01em}
.x-stat span{display:block;margin-top:10px;font:400 var(--fs-label)/1.5 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--tx-gold)}
.x-stat small{display:block;margin-top:4px;font:400 var(--fs-small)/1.5 var(--f-text);color:var(--tx-3)}

/* ── fine print ─────────────────────────────────────────────────── */
.x-note{font:400 13.5px/1.6 var(--f-text);color:var(--tx-3)}
.x-note a{color:var(--tx-2)}

/* ── arrival: content is visible without a script; with one, it
   settles in once, quickly, and never through a blur ──────────── */
html.x-js .x-rise{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease-out),transform .7s var(--ease-out)}
html.x-js .x-rise.x-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html.x-js .x-rise{opacity:1;transform:none;transition:none}}


/* ═══ 2. THE BRIDGE ══════════════════════════════════════════════════
   Everything below applies only to <body class="lx-legacy">: the pages
   that still load lunara-refined.css.                               */

/* ── their variables, pointed at the readable tokens ────────────────
   The names stay; what they mean changes. Half-white body text becomes
   11:1, the gold-at-72% secondary text becomes warm ivory, and black
   becomes obsidian so there is somewhere for light to fall.        */
body.lx-legacy{
  --white:var(--tx-1);
  --white-90:var(--tx-1);
  --white-70:#DAD4C9;
  --white-50:var(--tx-2);
  --white-30:var(--tx-3);
  --white-15:rgba(255,255,255,.15);
  --text:#E7DECB;
  --text-dim:#C9BEA6;
  --gold-dim:var(--tx-gold);
  --gold-70:rgba(212,181,116,.88);
  --gold-50:rgba(212,181,116,.8);
  --gold-bright:#E6C987;
  --black:var(--m-obsidian);
  --black-soft:var(--m-obsidian);
  --black-mid:var(--m-obsidian-2);
  --black-card:var(--m-obsidian-2);
  --card:var(--m-obsidian-2);
  --bg:var(--m-obsidian);
  /* lunara-refined.css's own "dimmed surround" */
  --lx-t-faint:#BFB39A;
  --lx-t-quiet:#C9BEA6;
  --lx-t-body:#CFC5B0;
  --lx-t-strong:#EFE6D2;
  font-weight:400;
  color:var(--tx-2);
}

/* ── the ground: obsidian under a cool moonlight key, as on the newer
   pages, instead of the brown wash and the black vignette ─────────── */
body.lx-legacy #lx-ink{background:
  radial-gradient(60% 42% at 78% -8%,rgba(196,164,107,.07),transparent 70%),
  radial-gradient(54% 40% at 6% 106%,rgba(150,158,172,.07),transparent 72%),
  var(--m-obsidian)}
body.lx-legacy #lx-vignette{display:none}

/* ── type ───────────────────────────────────────────────────────── */
body.lx-legacy:not(#lx) :is(p,li,dd,td,blockquote){font-weight:400}
body.lx-legacy:not(#lx) :is(h1,h2){letter-spacing:-.006em}
body.lx-legacy:not(#lx) h3{letter-spacing:0}
body.lx-legacy .page-sub{font-size:18px;line-height:1.75;color:var(--tx-2)}
body.lx-legacy .page-title{font-size:clamp(44px,5vw,66px);line-height:1.08}
/* Metal headlines become ivory with the gold kept for the italic
   phrase, as on the homepage: the gold is the accent, not the page. */
body.lx-legacy:not(#lx) :is(.hero-title,.lx-metal-type,.const-text h2,.cards-header h2,.lxc-title,.lxq-title,#authority-content h2,.urgency-inner h2){
  background:none;-webkit-text-fill-color:currentColor;color:var(--tx-1);filter:none;animation:none}
body.lx-legacy:not(#lx) :is(.hero-title,.lx-metal-type,.const-text h2,.cards-header h2,#authority-content h2,.urgency-inner h2) em{
  -webkit-text-fill-color:currentColor;color:var(--tx-gold)}

/* ── links in running text ──────────────────────────────────────── */
body.lx-legacy :is(p,li) a:not([class]){color:var(--tx-1);text-decoration:underline;text-decoration-color:rgba(212,181,116,.55);text-underline-offset:3px}
body.lx-legacy :is(p,li) a:not([class]):hover{text-decoration-color:var(--tx-gold)}

/* ── controls: one gold, one outline, the same everywhere ───────── */
body.lx-legacy:not(#lx) :is(.cta-btn,.cta-primary,.btn-primary,.form-btn,.submit-btn,button[type=submit]):not(.lxn *):not(.lxf *){
  min-height:50px;padding:0 28px;border-radius:var(--m-pill);border:0;
  color:#16130D;background:linear-gradient(180deg,#F2E3BE,#CDAE73);
  font:500 var(--fs-ui)/1 var(--f-text);letter-spacing:.01em;text-transform:none;
  box-shadow:0 10px 28px -14px rgba(205,174,115,.75),inset 0 1px 0 rgba(255,250,235,.7);
  display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;
  transition:transform var(--t-base) var(--ease-out),filter var(--t-base) ease}
body.lx-legacy:not(#lx) :is(.cta-btn,.cta-primary,.btn-primary,.form-btn,.submit-btn,button[type=submit]):not(.lxn *):not(.lxf *):hover{filter:brightness(1.07);transform:translateY(-1px)}

/* ── fields ─────────────────────────────────────────────────────── */
body.lx-legacy:not(#lx) :is(input[type=text],input[type=email],input[type=url],input[type=tel],input[type=search],input:not([type]),select,textarea):not(.lxn *){
  min-height:50px;padding:13px 16px;border-radius:12px;border:1px solid rgba(214,222,234,.18);
  background:rgba(5,6,8,.72);color:var(--tx-1);font:400 var(--fs-ui)/1.4 var(--f-text);letter-spacing:0}
body.lx-legacy:not(#lx) textarea{min-height:120px;line-height:1.6}
body.lx-legacy:not(#lx) :is(input,select,textarea)::placeholder{color:#857F75;opacity:1}
body.lx-legacy:not(#lx) :is(input,select,textarea):focus{outline:none;border-color:rgba(240,217,155,.7);box-shadow:0 0 0 3px rgba(240,217,155,.14)}
body.lx-legacy:not(#lx) label{color:var(--tx-2)}

/* ── panels that were brown boxes become glass ─────────────────── */
body.lx-legacy:not(#lx) .card{border-color:var(--hair);border-radius:14px;
  background:linear-gradient(165deg,rgba(24,27,34,.7),rgba(11,13,17,.62))}
