/* ============================================================
   Lumea public site design system — v2, written from scratch
   Serves: marketing pages, client sign-in, business application
   Palette: white / violet #6D4A9E / rose #C9707F — no green/blue/orange
   ============================================================ */

:root {
  --violet: #6D4A9E;
  --violet-deep: #4A3070;
  --violet-ink: #241B35;
  --violet-soft: #EFE9F7;
  --violet-faint: #F6F2FB;
  --rose: #C9707F;
  --rose-bright: #D98895;
  --rose-soft: #FAEDEF;
  --ink: #241B35;
  --body: #5C5570;
  --faint: #8E879F;
  --line: #E8E3F1;
  --line-strong: #D9D2E7;
  --bg: #F8F6FB;
  --card: #FFFFFF;
  --red: #B42945;
  --red-soft: #F9E6EA;
  --shadow: 0 1px 2px rgba(36, 27, 53, .05), 0 12px 34px rgba(36, 27, 53, .08);
  --shadow-lift: 0 2px 4px rgba(36, 27, 53, .06), 0 24px 60px rgba(36, 27, 53, .14);
  --radius: 18px;
  --font: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "Cascadia Mono", Consolas, monospace;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: var(--font); font-size: 16px; line-height: 1.6; color: var(--ink); background: var(--bg); -webkit-font-smoothing: antialiased; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
::selection { background: var(--violet-soft); }

.mono { font-family: var(--mono); }
.lm-wrap { max-width: 1180px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 44px); }

/* ---------- type ---------- */
.eyebrow { display: inline-flex; align-items: center; gap: 10px; font-size: 11.5px; font-weight: 800; letter-spacing: .22em; text-transform: uppercase; color: var(--violet); }
.eyebrow::before { content: ""; width: 22px; height: 2px; background: var(--rose); border-radius: 2px; }
.display { font-size: clamp(38px, 6vw, 72px); line-height: 1.02; letter-spacing: -.035em; font-weight: 800; margin: 18px 0 20px; }
.h2 { font-size: clamp(28px, 3.6vw, 44px); line-height: 1.08; letter-spacing: -.028em; font-weight: 800; margin: 14px 0 14px; }
.h3 { font-size: 21px; letter-spacing: -.015em; font-weight: 780; margin: 0 0 8px; }
.lead { font-size: clamp(16px, 1.6vw, 19px); color: var(--body); max-width: 640px; }
.note { color: var(--body); font-size: 15px; }
.num-tag { font-family: var(--mono); font-size: 12px; letter-spacing: .14em; color: var(--faint); }

/* ---------- buttons ---------- */
.btn { display: inline-flex; align-items: center; gap: 9px; border-radius: 999px; padding: 13px 26px; font-weight: 750; font-size: 15px; border: 1.5px solid transparent; transition: transform .16s ease, box-shadow .16s ease, background .16s ease; }
.btn:hover { transform: translateY(-2px); }
.btn-solid { background: var(--violet); color: #fff; box-shadow: 0 12px 26px rgba(109, 74, 158, .32); }
.btn-solid:hover { background: var(--violet-deep); }
.btn-ink { background: var(--violet-ink); color: #fff; }
.btn-outline { background: transparent; border-color: var(--line-strong); color: var(--ink); }
.btn-outline:hover { border-color: var(--violet); color: var(--violet-deep); background: var(--violet-faint); }
.btn-ghost-light { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .34); color: #fff; }
.btn-ghost-light:hover { background: rgba(255, 255, 255, .2); }
.btn-sm { padding: 9px 18px; font-size: 13.5px; }
.btn.is-loading { opacity: .6; pointer-events: none; }
.link-arrow { color: var(--violet-deep); font-weight: 750; font-size: 14.5px; display: inline-flex; gap: 8px; align-items: center; }
.link-arrow::after { content: "→"; transition: transform .16s; }
.link-arrow:hover::after { transform: translateX(4px); }

/* ---------- header / footer ---------- */
.lm-header { position: sticky; top: 0; z-index: 40; background: rgba(248, 246, 251, .82); backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); }
.lm-header-in { display: flex; align-items: center; justify-content: space-between; gap: 20px; height: 74px; }
.lm-logo { display: inline-flex; align-items: center; gap: 11px; }
.lm-logo img { height: 30px; width: auto; }
.lm-nav { display: flex; gap: 4px; background: var(--card); border: 1px solid var(--line); border-radius: 999px; padding: 5px; }
.lm-nav a { padding: 8px 16px; border-radius: 999px; font-size: 13.5px; font-weight: 700; color: var(--body); transition: .15s; }
.lm-nav a:hover { color: var(--ink); background: var(--violet-faint); }
.lm-nav a.active { background: var(--violet-soft); color: var(--violet-deep); }
.lm-header-actions { display: flex; gap: 10px; align-items: center; }

.lm-footer { background: var(--violet-ink); color: #B7AFC6; margin-top: 0; }
.lm-footer-in { padding: 58px 0 30px; }
.lm-footer-grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 40px; }
.lm-footer .lm-logo img { filter: brightness(1.9); }
.lm-footer p { max-width: 300px; font-size: 13.5px; line-height: 1.7; }
.lm-footer h4 { color: #fff; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; margin: 0 0 14px; }
.lm-footer a { display: block; padding: 5px 0; font-size: 13.5px; }
.lm-footer a:hover { color: #fff; }
.lm-footer-bottom { border-top: 1px solid rgba(255, 255, 255, .1); margin-top: 44px; padding-top: 22px; display: flex; justify-content: space-between; gap: 14px; font-size: 12px; flex-wrap: wrap; }

/* ---------- hero (home) ---------- */
.hero-stage { position: relative; overflow: hidden; background: radial-gradient(1100px 600px at 18% -10%, #8A63BE 0%, transparent 55%), radial-gradient(900px 520px at 108% 12%, #D98895 0%, transparent 52%), linear-gradient(160deg, #4A3070 0%, #5A3B84 48%, #3A2458 100%); color: #fff; padding: clamp(80px, 11vw, 150px) 0 130px; }
.hero-stage::after { content: ""; position: absolute; inset: auto -10% -55% -10%; height: 70%; background: var(--bg); border-radius: 50% 50% 0 0; }
.hero-center { position: relative; z-index: 2; display: grid; justify-items: center; text-align: center; gap: 6px; }
.hero-center .eyebrow { color: var(--rose-bright); }
.hero-center .eyebrow::before { background: var(--rose-bright); }
.hero-center h1 { font-size: clamp(42px, 6.4vw, 84px); line-height: .98; letter-spacing: -.04em; font-weight: 800; margin: 16px 0 18px; max-width: 900px; }
.hero-center h1 em { font-style: normal; color: var(--rose-bright); }
.hero-center p { max-width: 560px; color: #D8CFE9; font-size: clamp(16px, 1.7vw, 19px); margin: 0 0 30px; }
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.hero-widgets { position: absolute; z-index: 1; }
.hero-widget { background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .2); backdrop-filter: blur(10px); border-radius: 16px; padding: 16px 20px; color: #fff; box-shadow: var(--shadow-lift); min-width: 210px; }
.hero-widget small { font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: #C9BCE0; }
.hero-widget strong { display: block; font-size: 22px; letter-spacing: -.02em; margin-top: 4px; font-variant-numeric: tabular-nums; }
.hero-widget .wrow { display: flex; justify-content: space-between; gap: 14px; font-size: 12px; padding-top: 8px; border-top: 1px dashed rgba(255, 255, 255, .22); margin-top: 10px; }
.hw-left { left: clamp(12px, 4vw, 60px); top: 120px; transform: rotate(-2deg); }
.hw-right { right: clamp(12px, 4vw, 60px); bottom: 150px; transform: rotate(2deg); }
.hero-scroll { position: absolute; left: 50%; bottom: 46px; transform: translateX(-50%); z-index: 3; color: #C9BCE0; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; }

/* ---------- module ribbon ---------- */
.module-ribbon { position: relative; z-index: 3; margin-top: -74px; }
.module-track { display: flex; gap: 12px; overflow-x: auto; padding: 6px 4px 18px; scrollbar-width: thin; }
.module-chip { flex-shrink: 0; display: grid; gap: 4px; background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 16px 20px; min-width: 172px; box-shadow: var(--shadow); transition: .16s; }
.module-chip:hover { transform: translateY(-3px); border-color: var(--violet); }
.module-chip b { font-family: var(--mono); font-size: 11px; color: var(--rose); letter-spacing: .12em; }
.module-chip strong { font-size: 15px; letter-spacing: -.01em; }
.module-chip span { font-size: 12px; color: var(--faint); }

/* ---------- sections ---------- */
.section { padding: clamp(64px, 8vw, 110px) 0; }
.section-tint { background: var(--violet-faint); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.section-dark { background: var(--violet-ink); color: #fff; }
.section-dark .note, .section-dark .lead { color: #B7AFC6; }
.section-dark .eyebrow { color: var(--rose-bright); }
.section-head { display: grid; gap: 6px; max-width: 720px; margin-bottom: clamp(30px, 4vw, 52px); }

/* alternating feature rows */
.alt-row { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 6vw, 84px); align-items: center; padding: clamp(28px, 4vw, 48px) 0; }
.alt-row + .alt-row { border-top: 1px dashed var(--line-strong); }
.alt-row:nth-child(even) .alt-visual { order: 2; }
.alt-copy .num-tag { display: block; margin-bottom: 10px; }
.alt-copy p { color: var(--body); max-width: 460px; }
.alt-points { display: grid; gap: 10px; margin-top: 20px; }
.alt-points li { list-style: none; display: flex; gap: 11px; align-items: flex-start; font-size: 14.5px; color: var(--body); }
.alt-points li::before { content: ""; flex-shrink: 0; width: 8px; height: 8px; border-radius: 3px; background: var(--violet); margin-top: 7px; }
.alt-visual { position: relative; aspect-ratio: 5 / 4; border-radius: 24px; overflow: hidden; background: linear-gradient(150deg, var(--violet-deep), var(--violet) 55%, var(--rose) 130%); box-shadow: var(--shadow-lift); }
.alt-visual .glass { position: absolute; background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .22); backdrop-filter: blur(8px); border-radius: 14px; color: #fff; padding: 14px 18px; }
.alt-visual .g1 { left: 8%; top: 12%; right: 30%; }
.alt-visual .g2 { left: 16%; bottom: 14%; width: 52%; }
.alt-visual .g3 { right: 8%; top: 34%; width: 30%; transform: rotate(2deg); }
.alt-visual .glass b { font-family: var(--mono); font-size: 10px; letter-spacing: .16em; color: #E4D9F2; }
.alt-visual .glass strong { display: block; font-size: 17px; margin-top: 3px; }
.alt-visual .moon { position: absolute; right: -40px; bottom: -40px; width: 190px; height: 190px; border-radius: 50%; border: 34px solid rgba(255, 255, 255, .09); }

/* big numbers band */
.numbers-band { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.numbers-band div { background: var(--card); padding: clamp(22px, 3vw, 38px) clamp(18px, 2.4vw, 30px); }
.numbers-band b { display: block; font-family: var(--mono); font-size: 11px; letter-spacing: .16em; color: var(--rose); text-transform: uppercase; }
.numbers-band strong { display: block; font-size: clamp(26px, 3.4vw, 42px); letter-spacing: -.03em; margin: 8px 0 6px; font-variant-numeric: tabular-nums; }
.numbers-band span { color: var(--faint); font-size: 13px; }
.section-dark .numbers-band { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .12); }
.section-dark .numbers-band div { background: #2C2140; }
.section-dark .numbers-band span { color: #9C93AE; }

/* story cards */
.story-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.story-card { position: relative; background: var(--card); border: 1px solid var(--line); border-radius: 22px; padding: clamp(24px, 3vw, 36px); box-shadow: var(--shadow); overflow: hidden; }
.story-card::before { content: ""; position: absolute; width: 210px; height: 210px; border-radius: 50%; background: radial-gradient(circle, var(--violet-soft), transparent 70%); right: -70px; top: -70px; }
.story-card blockquote { margin: 16px 0 18px; font-size: clamp(17px, 1.8vw, 21px); line-height: 1.5; letter-spacing: -.015em; font-weight: 650; }
.story-card figcaption { color: var(--faint); font-size: 13px; }
.story-card .role-chip { display: inline-flex; padding: 5px 12px; border-radius: 99px; background: var(--violet-soft); color: var(--violet-deep); font-size: 12px; font-weight: 750; }

/* FAQ */
.faq-list { display: grid; gap: 10px; max-width: 780px; }
.faq-item { background: var(--card); border: 1px solid var(--line); border-radius: 15px; overflow: hidden; }
.faq-item summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 17px 22px; font-weight: 750; font-size: 15.5px; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; width: 26px; height: 26px; border-radius: 9px; background: var(--violet-faint); color: var(--violet-deep); display: grid; place-items: center; font-size: 17px; transition: transform .18s; }
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item p { margin: 0; padding: 0 22px 18px; color: var(--body); font-size: 14.5px; }

/* CTA band */
.cta-band { margin: clamp(40px, 6vw, 80px) 0; border-radius: 28px; background: radial-gradient(700px 340px at 85% -30%, rgba(217, 136, 149, .55), transparent 60%), linear-gradient(140deg, var(--violet-deep), var(--violet)); color: #fff; padding: clamp(40px, 6vw, 72px); display: flex; justify-content: space-between; align-items: center; gap: 34px; flex-wrap: wrap; box-shadow: var(--shadow-lift); }
.cta-band h2 { font-size: clamp(26px, 3.4vw, 40px); letter-spacing: -.03em; margin: 10px 0 8px; }
.cta-band p { color: #D8CFE9; margin: 0; max-width: 480px; }
.cta-band .eyebrow { color: var(--rose-bright); }

/* ---------- subpage scaffolds ---------- */
.page-hero { padding: clamp(56px, 8vw, 96px) 0 clamp(36px, 5vw, 60px); border-bottom: 1px solid var(--line); background: linear-gradient(180deg, var(--violet-faint), var(--bg)); }
.toc-layout { display: grid; grid-template-columns: 236px minmax(0, 1fr); gap: clamp(30px, 5vw, 70px); padding: clamp(40px, 5vw, 64px) 0; }
.toc-side { position: sticky; top: 104px; align-self: start; display: grid; gap: 6px; }
.toc-side b { font-size: 11.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--faint); margin-bottom: 8px; }
.toc-side a { padding: 9px 14px; border-left: 3px solid transparent; border-radius: 0 10px 10px 0; font-size: 14px; font-weight: 650; color: var(--body); }
.toc-side a:hover, .toc-side a.active { border-left-color: var(--violet); background: var(--violet-faint); color: var(--violet-deep); }
.toc-block { padding: clamp(26px, 3vw, 38px) 0; border-bottom: 1px dashed var(--line-strong); scroll-margin-top: 100px; }
.toc-block:last-child { border-bottom: 0; }

/* comparison matrix */
.matrix { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); font-size: 14.5px; }
.matrix th, .matrix td { padding: 15px 20px; text-align: left; border-bottom: 1px solid var(--line); }
.matrix thead th { background: var(--violet-ink); color: #fff; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; border-bottom: 0; }
.matrix tbody tr:last-child td { border-bottom: 0; }
.matrix td:first-child { font-weight: 750; }
.matrix .yes { color: var(--violet-deep); font-weight: 750; }
.matrix .no { color: var(--faint); }

/* timeline */
.tl { position: relative; display: grid; gap: 0; margin-top: 24px; }
.tl-row { position: relative; display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 16px; padding-bottom: 26px; }
.tl-row::before { content: ""; position: absolute; left: 15px; top: 34px; bottom: 0; width: 2px; background: var(--line-strong); }
.tl-row:last-child::before { display: none; }
.tl-dot { width: 32px; height: 32px; border-radius: 50%; background: var(--violet-soft); color: var(--violet-deep); display: grid; place-items: center; font-weight: 800; font-size: 13px; border: 2px solid var(--violet); }
.tl-row strong { display: block; font-size: 17px; letter-spacing: -.01em; }
.tl-row p { margin: 4px 0 0; color: var(--body); font-size: 14.5px; max-width: 560px; }

/* dark security stacks */
.stack-card { position: relative; background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .12); border-radius: 20px; padding: 26px 30px; }
.stack-card b { font-family: var(--mono); font-size: 11px; letter-spacing: .18em; color: var(--rose-bright); text-transform: uppercase; }
.stack-card h3 { color: #fff; margin: 8px 0 8px; font-size: 22px; letter-spacing: -.02em; }
.stack-card p { color: #B7AFC6; margin: 0; font-size: 14.5px; }
.stack-deck { display: grid; gap: 14px; }
.stack-deck .stack-card:nth-child(2) { margin-left: clamp(0px, 4vw, 56px); }
.stack-deck .stack-card:nth-child(3) { margin-left: clamp(0px, 8vw, 112px); }
.ctrl-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ctrl-cell { background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .12); border-radius: 16px; padding: 20px 22px; }
.ctrl-cell strong { display: block; color: #fff; font-size: 15.5px; }
.ctrl-cell span { color: #9C93AE; font-size: 13px; }
.badge-row { display: flex; gap: 10px; flex-wrap: wrap; }
.badge-row span { padding: 9px 18px; border-radius: 99px; border: 1px solid rgba(255, 255, 255, .2); color: #D8CFE9; font-size: 13px; font-weight: 650; }

/* contact */
.contact-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(26px, 4vw, 50px); align-items: start; }
.contact-card { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 14px; align-items: start; background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 18px 20px; box-shadow: var(--shadow); }
.contact-card + .contact-card { margin-top: 12px; }
.contact-card .ic { width: 42px; height: 42px; border-radius: 13px; background: var(--violet-soft); color: var(--violet-deep); display: grid; place-items: center; font-weight: 800; font-size: 15px; }
.contact-card strong { display: block; font-size: 15px; }
.contact-card span { color: var(--body); font-size: 13.5px; }

/* legal */
.legal-block { scroll-margin-top: 100px; padding: 26px 0; border-bottom: 1px dashed var(--line-strong); }
.legal-block:last-child { border-bottom: 0; }
.legal-block .num-tag { display: block; margin-bottom: 8px; color: var(--rose); }
.legal-block p { color: var(--body); max-width: 720px; }

/* ---------- forms (shared: contact-style + registration) ---------- */
.lm-field { display: grid; gap: 7px; }
.lm-field label { font-size: 12.5px; font-weight: 750; color: var(--ink); }
.lm-field small { color: var(--faint); font-size: 12px; }
.lm-field input, .lm-field select, .lm-field textarea { width: 100%; border: 1.5px solid var(--line-strong); background: var(--card); border-radius: 12px; padding: 13px 15px; outline: 0; transition: border-color .15s, box-shadow .15s; color: var(--ink); }
.lm-field input:focus, .lm-field select:focus, .lm-field textarea:focus { border-color: var(--violet); box-shadow: 0 0 0 4px rgba(109, 74, 158, .16); }
.form-message { min-height: 22px; font-size: 13px; color: var(--faint); margin: 6px 0 0; }
.form-message.error { color: var(--red); }

/* ---------- auth (login) ---------- */
.auth-stage { min-height: 100vh; display: grid; place-items: center; padding: 34px 20px; position: relative; overflow: hidden; background: radial-gradient(900px 520px at 12% 6%, #E9DDF6 0%, transparent 55%), radial-gradient(760px 460px at 96% 88%, #F7E3E7 0%, transparent 52%), var(--bg); }
.auth-moon { position: absolute; border-radius: 50%; pointer-events: none; }
.auth-moon.m1 { width: 420px; height: 420px; border: 54px solid var(--violet-soft); left: -140px; top: -120px; opacity: .8; }
.auth-moon.m2 { width: 300px; height: 300px; border: 40px solid var(--rose-soft); right: -90px; bottom: -80px; }
.auth-moon.m3 { width: 130px; height: 130px; background: var(--violet-soft); right: 14%; top: 12%; opacity: .7; }
.auth-card { position: relative; z-index: 2; width: min(460px, 100%); background: rgba(255, 255, 255, .82); backdrop-filter: blur(18px); border: 1px solid rgba(255, 255, 255, .9); border-radius: 26px; padding: clamp(28px, 4vw, 42px); box-shadow: var(--shadow-lift); display: grid; gap: 4px; }
.auth-card .lm-logo { justify-self: center; margin-bottom: 18px; }
.auth-card h1 { font-size: clamp(26px, 3vw, 32px); letter-spacing: -.028em; margin: 12px 0 6px; }
.auth-card > p { color: var(--body); margin: 0 0 14px; font-size: 14.5px; }
.auth-form { display: grid; gap: 14px; }
.auth-form .btn { width: 100%; justify-content: center; margin-top: 6px; }
.auth-links { display: flex; justify-content: space-between; gap: 12px; margin-top: 18px; font-size: 13px; }
.auth-links a { color: var(--violet-deep); font-weight: 700; }
.auth-links span { color: var(--faint); }
.auth-back { position: absolute; left: clamp(16px, 3vw, 34px); top: clamp(16px, 3vw, 30px); z-index: 3; }

/* ---------- registration ---------- */
.reg-shell { min-height: 100vh; background: var(--bg); display: flex; flex-direction: column; }
.reg-top { border-bottom: 1px solid var(--line); background: var(--card); }
.reg-top-in { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 70px; }
.reg-save { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--faint); }
.reg-save::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--rose); }
.reg-progress { border-bottom: 1px solid var(--line); background: linear-gradient(180deg, var(--violet-faint), var(--bg)); }
.reg-progress-track { display: flex; align-items: flex-start; gap: 0; padding: 22px 0 26px; }
.reg-step-node { flex: 1; display: grid; gap: 8px; position: relative; }
.reg-step-node::before { content: ""; position: absolute; left: 26px; right: -26px; top: 15px; height: 2px; background: var(--line-strong); }
.reg-step-node:first-child::before { left: 26px; right: -26px; }
.reg-step-node:last-child::before { display: none; }
.reg-step-node.complete::before { background: var(--violet); }
.reg-step-btn { display: flex; align-items: center; gap: 11px; border: 0; background: transparent; padding: 0; text-align: left; }
.reg-step-btn:disabled { cursor: default; }
.reg-step-num { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-family: var(--mono); font-size: 12px; font-weight: 700; background: var(--card); border: 2px solid var(--line-strong); color: var(--faint); position: relative; z-index: 1; transition: .18s; flex-shrink: 0; }
.reg-step-node.active .reg-step-num { background: var(--violet); border-color: var(--violet); color: #fff; box-shadow: 0 0 0 5px var(--violet-soft); }
.reg-step-node.complete .reg-step-num { background: var(--violet-soft); border-color: var(--violet); color: var(--violet-deep); }
.reg-step-btn:disabled .reg-step-name, .reg-step-btn:disabled .reg-step-sub { opacity: .45; }
.reg-step-name { display: block; font-size: 13.5px; font-weight: 780; line-height: 1.2; }
.reg-step-sub { display: block; font-size: 11px; color: var(--faint); line-height: 1.3; }

.reg-main { flex: 1; width: 100%; max-width: 880px; margin: 0 auto; padding: clamp(26px, 4vw, 44px) clamp(20px, 4vw, 44px) 80px; }
.reg-intro { margin-bottom: 22px; display: grid; gap: 4px; }
.reg-intro h2 { font-size: clamp(26px, 3.4vw, 36px); letter-spacing: -.03em; margin: 8px 0 4px; }
.reg-intro p { color: var(--body); margin: 0; max-width: 560px; }
.reg-card { background: var(--card); border: 1px solid var(--line); border-radius: 24px; padding: clamp(24px, 3.4vw, 40px); box-shadow: var(--shadow); }
.reg-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; margin-bottom: 26px; }
.reg-card-head h1 { font-size: clamp(24px, 3vw, 30px); letter-spacing: -.025em; margin: 10px 0 6px; }
.reg-card-head p { color: var(--body); margin: 0; max-width: 520px; font-size: 14.5px; }
.reg-pill { white-space: nowrap; font-family: var(--mono); font-size: 11px; letter-spacing: .12em; color: var(--violet-deep); background: var(--violet-soft); padding: 8px 14px; border-radius: 99px; }
.reg-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; }
.reg-fields .full { grid-column: 1 / -1; }
.reg-subhead { grid-column: 1 / -1; display: grid; gap: 4px; padding: 22px 0 4px; border-top: 1px dashed var(--line-strong); margin-top: 6px; }
.reg-subhead h3 { margin: 0; font-size: 17px; letter-spacing: -.01em; }
.reg-subhead p { margin: 0; color: var(--faint); font-size: 13px; }
.reg-actions { display: flex; justify-content: space-between; align-items: center; gap: 14px; margin-top: 28px; flex-wrap: wrap; }
.reg-actions-side { display: flex; gap: 10px; align-items: center; }
.reg-note { font-size: 12px; color: var(--faint); max-width: 380px; }

.password-strength { display: flex; gap: 5px; margin-top: 8px; }
.password-strength i { height: 5px; flex: 1; border-radius: 99px; background: var(--violet-faint); transition: .2s; }
.password-strength i.active { background: var(--violet); }

/* option radios */
.reg-radios { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.reg-radio { position: relative; display: grid; gap: 3px; border: 1.5px solid var(--line-strong); border-radius: 15px; padding: 16px 18px; cursor: pointer; transition: .15s; background: var(--card); }
.reg-radio:hover { border-color: var(--violet); }
.reg-radio input { position: absolute; opacity: 0; pointer-events: none; }
.reg-radio strong { font-size: 14.5px; }
.reg-radio small { color: var(--faint); font-size: 12px; }
.reg-radio:has(input:checked) { border-color: var(--violet); background: var(--violet-faint); box-shadow: 0 0 0 4px rgba(109, 74, 158, .12); }

/* uploads */
.reg-uploads { display: grid; gap: 12px; }
.reg-upload { display: grid; grid-template-columns: 46px minmax(0, 1fr) auto; gap: 15px; align-items: center; border: 1.5px dashed var(--line-strong); border-radius: 17px; padding: 17px 19px; background: var(--card); transition: .15s; }
.reg-upload.has-file { border-style: solid; border-color: var(--violet); background: var(--violet-faint); }
.reg-upload .u-ic { width: 46px; height: 46px; border-radius: 14px; background: var(--violet-soft); color: var(--violet-deep); display: grid; place-items: center; font-weight: 800; font-size: 13px; }
.reg-upload strong { display: block; font-size: 14.5px; }
.reg-upload span { color: var(--body); font-size: 12.5px; display: block; }
.reg-upload small { color: var(--faint); font-size: 12px; display: block; margin-top: 3px; }
.upload-button { display: inline-flex; align-items: center; gap: 8px; border: 1.5px solid var(--line-strong); background: var(--card); border-radius: 10px; padding: 9px 15px; font-size: 12.5px; font-weight: 750; cursor: pointer; }
.upload-button:hover { border-color: var(--violet); color: var(--violet-deep); }
.upload-button input { display: none; }
.reg-tips { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 16px; }
.reg-tips div { background: var(--violet-faint); border-radius: 13px; padding: 14px 16px; font-size: 12.5px; color: var(--body); }
.reg-tips strong { display: block; color: var(--violet-deep); margin-bottom: 4px; font-size: 13px; }

/* review */
.reg-review { display: grid; gap: 14px; }
.reg-review-group { border: 1px solid var(--line); border-radius: 17px; overflow: hidden; }
.reg-review-head { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; background: var(--violet-faint); border-bottom: 1px solid var(--line); }
.reg-review-head strong { font-size: 14.5px; }
.text-link { border: 0; background: transparent; color: var(--violet-deep); font-weight: 750; font-size: 13px; cursor: pointer; }
.text-link:hover { text-decoration: underline; }
.reg-review-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 26px; padding: 8px 20px 12px; }
.reg-review-field { display: flex; justify-content: space-between; gap: 16px; padding: 9px 0; border-bottom: 1px dashed var(--line); font-size: 13.5px; }
.reg-review-field span { color: var(--faint); flex-shrink: 0; }
.reg-review-field strong { text-align: right; overflow-wrap: anywhere; font-weight: 650; }
.consent-line { display: flex; gap: 11px; align-items: flex-start; margin-top: 20px; font-size: 13px; color: var(--body); line-height: 1.6; }
.consent-line input { width: 17px; height: 17px; margin-top: 2px; accent-color: var(--violet); }

/* pending */
.reg-pending { text-align: center; display: grid; justify-items: center; gap: 8px; padding: clamp(30px, 5vw, 54px) clamp(20px, 4vw, 50px); }
.pending-mark { width: 64px; height: 64px; border-radius: 20px; background: var(--violet-soft); color: var(--violet-deep); display: grid; place-items: center; font-size: 30px; margin-bottom: 8px; }
.reg-pending h1 { font-size: clamp(26px, 3.4vw, 34px); letter-spacing: -.028em; margin: 8px 0 6px; }
.reg-pending > p { color: var(--body); max-width: 520px; margin: 0; }
.pending-ref { background: var(--violet-faint); border: 1px dashed var(--line-strong); border-radius: 15px; padding: 16px 24px; margin: 16px 0 6px; }
.pending-ref span { display: block; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--faint); }
.pending-ref strong { font-family: var(--mono); font-size: 18px; color: var(--violet-deep); }
.pending-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 22px 0 10px; text-align: left; }
.pending-steps div { background: var(--card); border: 1px solid var(--line); border-radius: 15px; padding: 16px 18px; }
.pending-steps b { display: block; font-size: 12px; color: var(--rose); font-family: var(--mono); letter-spacing: .1em; margin-bottom: 5px; }
.pending-steps strong { display: block; font-size: 14.5px; margin-bottom: 3px; }
.pending-steps span { color: var(--faint); font-size: 12.5px; }

/* ---------- responsive ---------- */
@media (max-width: 1080px) {
  .hero-widget { display: none; }
  .numbers-band { grid-template-columns: repeat(2, 1fr); }
  .ctrl-grid, .reg-tips, .pending-steps, .reg-radios { grid-template-columns: 1fr 1fr; }
  .toc-layout { grid-template-columns: 1fr; }
  .toc-side { position: static; display: flex; overflow-x: auto; gap: 6px; padding-bottom: 8px; }
  .toc-side b { display: none; }
  .toc-side a { white-space: nowrap; border-left: 0; border: 1px solid var(--line); border-radius: 99px; padding: 8px 16px; background: var(--card); }
  .lm-footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 880px) {
  .lm-nav { display: none; }
  .alt-row { grid-template-columns: 1fr; }
  .alt-row:nth-child(even) .alt-visual { order: 0; }
  .story-grid, .contact-grid, .reg-fields, .reg-review-grid { grid-template-columns: 1fr; }
  .reg-fields .lm-field { grid-column: 1 / -1; }
  .reg-step-sub { display: none; }
  .reg-step-name { font-size: 12px; }
}
@media (max-width: 620px) {
  .numbers-band, .ctrl-grid, .reg-tips, .pending-steps, .reg-radios, .lm-footer-grid { grid-template-columns: 1fr; }
  .reg-actions { flex-direction: column-reverse; align-items: stretch; }
  .reg-actions .btn { justify-content: center; }
  .reg-card-head { flex-direction: column; }
  .reg-upload { grid-template-columns: 46px minmax(0, 1fr); }
  .reg-upload .upload-button { grid-column: 2; justify-self: start; }
  .lm-header-actions .btn-outline { display: none; }
}
