/* ── Allometry v2 skin — Omen-scale, two themes, shared across v2 pages ──
   Light is defined on :root; dark via prefers-color-scheme (guarded) and the
   explicit data-theme stamp, so system/dark/light all resolve. The console follows the theme with everything else. */
:root{
  --bg:#FAF8F4; --bg-2:#F1EDEA; --panel:#FFFFFF; --panel-2:#FBF8F5;
  --ink:#171316; --ink-2:#4B424A; --ink-3:#8A8086;
  --line:rgba(23,19,22,.12); --line-2:rgba(23,19,22,.22);
  --accent:#6E2A50; --accent-ink:#FBF6F9; --accent-deep:#8C3A67;
  --pop:#B8431F; --green:#2F7D5B; --amber:#A6742A;
  --glow-a:rgba(140,58,103,.10); --glow-b:rgba(140,58,103,.05);
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Inter",system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0B0A0C; --bg-2:#121115; --panel:#161419; --panel-2:#1C1A20;
    --ink:#F4F0F2; --ink-2:#B9B2B7; --ink-3:#7E777C;
    --line:rgba(244,240,242,.10); --line-2:rgba(244,240,242,.18);
    --accent:#C994B3; --accent-ink:#141014; --accent-deep:#8C3A67;
    --pop:#E8643D; --green:#63C495; --amber:#DBAA5E;
    --glow-a:rgba(140,58,103,.16); --glow-b:rgba(140,58,103,.07);
  }
}
:root[data-theme="dark"]{
  --bg:#0B0A0C; --bg-2:#121115; --panel:#161419; --panel-2:#1C1A20;
  --ink:#F4F0F2; --ink-2:#B9B2B7; --ink-3:#7E777C;
  --line:rgba(244,240,242,.10); --line-2:rgba(244,240,242,.18);
  --accent:#C994B3; --accent-ink:#141014; --accent-deep:#8C3A67;
  --pop:#E8643D; --green:#63C495; --amber:#DBAA5E;
  --glow-a:rgba(140,58,103,.16); --glow-b:rgba(140,58,103,.07);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:16px;line-height:1.6;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
a{color:inherit}
.shell{max-width:1120px;margin:0 auto;padding:0 28px}
.eb{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3)}
.eb.acc{color:var(--accent)}
.tag{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  padding:2px 8px;border-radius:4px;vertical-align:2px}
.tag.m{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent)}
.tag.c{color:var(--amber);background:color-mix(in srgb,var(--amber) 13%,transparent)}

/* nav */
nav.top{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 84%,transparent);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav-in{max-width:1120px;margin:0 auto;padding:15px 28px;display:flex;align-items:center;gap:26px}
.wm{display:flex;align-items:center;gap:10px;font-weight:650;font-size:16px;letter-spacing:.01em;text-decoration:none}
.nav-links{display:flex;gap:22px;margin-left:auto;font-family:var(--mono);font-size:12px;letter-spacing:.06em}
.nav-links a{color:var(--ink-2);text-decoration:none}
.nav-links a:hover{color:var(--ink)}
.btn{display:inline-block;border:1px solid var(--line-2);border-radius:999px;padding:9px 18px;
  font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-decoration:none;color:var(--ink);cursor:pointer;background:transparent}
.btn:hover{border-color:var(--accent)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn.pri:hover{filter:brightness(1.08)}
.theme-btn{border:1px solid var(--line);background:transparent;color:var(--ink-3);border-radius:999px;
  width:34px;height:34px;display:grid;place-items:center;cursor:pointer;font-size:14px;line-height:1}
.theme-btn:hover{color:var(--ink);border-color:var(--line-2)}
@media(max-width:760px){
  .nav-links{gap:14px}
  .nav-links a{display:none}
  .nav-links a.keep{display:inline}
  .nav-in{gap:14px}
}

/* sections + type */
section{padding:88px 0;border-bottom:1px solid var(--line)}
h1{font-size:clamp(38px,5.2vw,58px);line-height:1.03;letter-spacing:-.035em;font-weight:680;margin:18px 0 20px;text-wrap:balance}
h1 em{font-style:normal;color:var(--accent)}
h2{font-size:clamp(26px,3.4vw,38px);line-height:1.1;letter-spacing:-.03em;font-weight:660;margin:14px 0 14px;text-wrap:balance;max-width:26ch}
.lede{font-size:18px;color:var(--ink-2);max-width:52ch;margin:0 0 30px}
.sub{color:var(--ink-2);max-width:62ch;margin:0 0 40px}
.sub b{color:var(--ink)}

/* console — follows the theme like every other surface */
.console{border:1px solid var(--line-2);border-radius:16px;
  background:linear-gradient(180deg,var(--panel-2),var(--panel));color:var(--ink);
  box-shadow:0 40px 80px -40px rgba(0,0,0,.35);overflow:hidden}
.con-bar{display:flex;align-items:center;gap:8px;padding:11px 16px;border-bottom:1px solid var(--line);
  font-family:var(--mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.06em}
.con-bar i{width:8px;height:8px;border-radius:50%;background:var(--line-2);display:inline-block}
.con-bar span{margin-left:6px}
.con-body{padding:20px}
.pulse-row{display:flex;gap:20px;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--line)}
.dial{width:74px;height:74px;border-radius:50%;flex:none;
  background:conic-gradient(var(--accent) calc(var(--deg,0)*1deg), var(--line) calc(var(--deg,0)*1deg) 360deg);
  display:grid;place-items:center}
.dial b{width:58px;height:58px;border-radius:50%;background:var(--panel);display:grid;place-items:center;
  font-size:21px;font-weight:680;letter-spacing:-.02em;color:var(--ink)}
.pulse-meta{display:grid;gap:2px}
.pulse-meta .k{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.pulse-meta .v{font-size:15px;font-weight:600}
.pulse-meta .v small{font-family:var(--mono);font-size:11px;color:var(--ink-3);font-weight:400;margin-left:8px}
.qline{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;padding:11px 0;
  border-bottom:1px solid var(--line);font-size:13.5px}
.qline:last-child{border-bottom:none}
.qline .n{color:var(--ink-2)} .qline .n small{display:block;font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}
.qline .m{font-family:var(--mono);font-size:12.5px;text-align:right}
.qline .s{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px}
.s.ok{color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent)}
.s.blk{color:var(--pop);background:color-mix(in srgb,var(--pop) 13%,transparent)}
.con-foot{padding:12px 20px;border-top:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.con-foot b{color:var(--pop);font-weight:600}
/* console entrance animation */
@media (prefers-reduced-motion: no-preference){
  .console.animate .qline{opacity:0;transform:translateY(6px);animation:qin .5s ease forwards}
  .console.animate .qline:nth-child(2){animation-delay:.9s}
  .console.animate .qline:nth-child(3){animation-delay:1.35s}
  .console.animate .qline:nth-child(4){animation-delay:2.0s}
  .console.animate .qline .s{opacity:0;animation:qin .35s ease forwards}
  .console.animate .qline:nth-child(2) .s{animation-delay:1.15s}
  .console.animate .qline:nth-child(3) .s{animation-delay:1.6s}
  .console.animate .qline:nth-child(4) .s{animation-delay:2.5s}
  .console.animate .con-foot{opacity:0;animation:qin .5s ease 2.9s forwards}
}
@keyframes qin{to{opacity:1;transform:none}}

/* cards + grids */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.card{border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:28px;display:grid;gap:12px;align-content:start}
.card .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.card h3{margin:0;font-size:22px;letter-spacing:-.02em;font-weight:650}
.card p{margin:0;color:var(--ink-2);font-size:14.5px}
.card .pr{font-family:var(--mono);font-size:12.5px;color:var(--ink-3);padding-top:10px;border-top:1px solid var(--line)}
.card .pr b{color:var(--ink);font-size:14px}
.mini{border:1px solid var(--line);border-radius:10px;background:var(--bg-2);padding:13px 15px;
  font-family:var(--mono);font-size:11.5px;color:var(--ink-2);line-height:1.7}
.mini .r{display:flex;justify-content:space-between;gap:12px}
.mini .warn{color:var(--pop)} .mini .good{color:var(--green)} .mini .dim{color:var(--ink-3)}
@media(max-width:820px){.duo{grid-template-columns:1fr}}

.strip{display:flex;gap:28px;align-items:baseline;flex-wrap:wrap;border:1px solid var(--line);
  border-radius:14px;background:var(--panel);padding:22px 26px}
.strip .big{font-size:19px;font-weight:650;letter-spacing:-.01em}
.strip .d{font-family:var(--mono);font-size:12px;color:var(--ink-3)}

.shapes{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.shape{background:var(--panel);padding:20px 22px}
.shape b{display:block;font-size:15px;font-weight:640;margin-bottom:4px}
.shape span{font-size:13px;color:var(--ink-3);line-height:1.5;display:block}
@media(max-width:820px){.shapes{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.shapes{grid-template-columns:1fr}}

.proof{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.pf{background:var(--panel);padding:24px 22px}
.pf .v{font-size:30px;font-weight:680;letter-spacing:-.03em;line-height:1.1}
.pf .k{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-top:7px;line-height:1.55}
@media(max-width:820px){.proof{grid-template-columns:1fr 1fr}}

.price{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.tier{border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:26px}
.tier.hi{border-color:color-mix(in srgb,var(--accent) 50%,transparent);
  background:linear-gradient(180deg,var(--glow-a),transparent 60%),var(--panel)}
.tier .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--accent)}
.tier .v{font-size:30px;font-weight:680;letter-spacing:-.02em;margin:8px 0 2px}
.tier .v small{font-family:var(--mono);font-size:12px;color:var(--ink-3);font-weight:400}
.tier p{margin:8px 0 0;color:var(--ink-2);font-size:13.5px}
.price-note{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);margin-top:18px;line-height:1.7}
@media(max-width:820px){.price{grid-template-columns:1fr}}

/* forms */
form.scan{display:grid;gap:10px}
form.scan input{background:var(--bg-2);border:1px solid var(--line-2);border-radius:10px;color:var(--ink);
  padding:13px 15px;font:inherit;font-size:14.5px;outline:none}
form.scan input:focus{border-color:var(--accent)}
form.scan button{margin-top:4px}
.alt-cta{font-family:var(--mono);font-size:12px;color:var(--ink-3);margin-top:14px}
.alt-cta a{color:var(--accent);text-decoration:none}
.alt-cta a:hover{text-decoration:underline}
.sent{display:none;font-size:14.5px;color:var(--green)}
.done form.scan{display:none}
.done .sent{display:block}

footer{padding:26px 0 40px;font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.foot-tag{max-width:1120px;margin:0 auto 14px;padding:0 28px;font-family:var(--mono);font-size:11.5px;color:var(--ink-2);letter-spacing:.02em}
.foot-tag b{color:var(--ink);font-weight:600}
.foot-in{max-width:1120px;margin:0 auto;padding:0 28px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
.foot-in a{color:var(--ink-3);text-decoration:none;margin-left:16px}
.foot-in a:hover{color:var(--ink-2)}

/* FAQ */
.faq{display:grid;gap:10px;max-width:820px}
.faq details{border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.faq summary{cursor:pointer;padding:16px 20px;font-size:15px;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:14px;align-items:baseline}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--mono);color:var(--ink-3);font-size:16px}
.faq details[open] summary::after{content:"–"}
.faq .a{padding:0 20px 16px;color:var(--ink-2);font-size:14px;max-width:70ch}
.faq .a a{color:var(--accent)}

/* how it works — numbered pathway */
.steps4{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.step4{background:var(--panel);padding:22px}
.step4 .n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--accent)}
.step4 b{display:block;font-size:16px;font-weight:650;margin:8px 0 5px}
.step4 span{font-size:13px;color:var(--ink-3);line-height:1.55;display:block}
@media(max-width:820px){.steps4{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.steps4{grid-template-columns:1fr}}

/* defense / offense */
.dir{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.dir .card{border-top:3px solid var(--accent)}
.dir .card.off{border-top-color:var(--green)}
.dir .card .k{color:var(--pop)}
.dir .card.off .k{color:var(--green)}
@media(max-width:820px){.dir{grid-template-columns:1fr}}
.mini .pick{color:var(--green);font-weight:600}
.mini .strike{color:var(--ink-3);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--ink-3) 60%,transparent)}

/* product film modal */
.film-btn{display:inline-flex;align-items:center;gap:7px}
.film-btn i{width:0;height:0;border-left:8px solid currentColor;border-top:5px solid transparent;border-bottom:5px solid transparent;display:inline-block}
.dir .film-btn{margin-top:16px}
.modal{position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:20px;
  background:color-mix(in srgb,var(--bg) 55%,transparent);backdrop-filter:blur(10px)}
.modal.open{display:grid}
.film{width:min(680px,94vw);border:1px solid var(--line-2);border-radius:18px;overflow:hidden;
  background:linear-gradient(180deg,var(--panel-2),var(--panel));box-shadow:0 60px 120px -40px rgba(0,0,0,.55)}
.film-top{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);
  font-family:var(--mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.06em}
.film-top i{width:8px;height:8px;border-radius:50%;background:var(--line-2)}
.film-top .x{margin-left:auto;border:0;background:transparent;color:var(--ink-3);font-size:18px;cursor:pointer;line-height:1;padding:2px 6px}
.film-top .x:hover{color:var(--ink)}
.film-stage{padding:22px;min-height:280px}
.frow{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;padding:10px 6px;
  border-bottom:1px solid var(--line);font-size:13.5px;opacity:0;transform:translateY(7px);border-radius:8px;
  transition:opacity .5s ease,transform .5s ease}
.frow .n{color:var(--ink-2)} .frow .n small{display:block;font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}
.frow .m{font-family:var(--mono);font-size:12.5px;text-align:right;opacity:0;transition:opacity .4s ease}
.frow .st{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px;opacity:0;transition:opacity .4s ease}
.resv{border:1px solid var(--line);border-radius:10px;background:var(--bg-2);padding:12px 14px;margin:12px 0 0;
  font-family:var(--mono);font-size:11.5px;line-height:1.8;color:var(--ink-2);display:none}
.resv .r{display:flex;justify-content:space-between;gap:12px}
.fsum{display:none;align-items:center;gap:16px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.fsum .dial{width:56px;height:56px}
.fsum .dial b{width:44px;height:44px;font-size:16px}
.fsum .t{font-size:14px;font-weight:600}
.fsum .t small{display:block;font-family:var(--mono);font-size:11px;color:var(--green);font-weight:500;margin-top:2px}
.film-cap{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 18px;border-top:1px solid var(--line)}
.film-cap .c{font-size:13.5px;font-weight:600;transition:opacity .18s ease}
.film-cap .c.swap{opacity:0}
.segs{display:flex;gap:6px}
.segs b{width:26px;height:3px;border-radius:2px;background:var(--line-2);overflow:hidden;display:block;cursor:pointer}
.segs b i{display:block;height:100%;width:0;background:var(--accent)}
.segs b.done i{width:100%}
.segs b.act i{animation:segfill var(--d,3s) linear forwards}
@keyframes segfill{from{width:0}to{width:100%}}
/* scene states */
.film:not([data-scene="0"]) .frow{opacity:1;transform:none}
.film:not([data-scene="0"]) .frow:nth-child(2){transition-delay:.16s}
.film:not([data-scene="0"]) .frow:nth-child(3){transition-delay:.32s}
.film[data-scene="2"] .resv,.film[data-scene="3"] .resv,.film[data-scene="4"] .resv{display:block;animation:frise .45s ease}
.film[data-scene="3"] .frow .m,.film[data-scene="3"] .frow .st,
.film[data-scene="4"] .frow .m,.film[data-scene="4"] .frow .st,
.film[data-scene="5"] .frow .m,.film[data-scene="5"] .frow .st{opacity:1}
.film[data-scene="3"] .frow.fail{animation:failflash 1.4s ease .45s}
.film[data-scene="4"] .frow.win{animation:okflash 1.4s ease}
.film[data-scene="5"] .fsum{display:flex;animation:frise .5s ease}
.hidden-alt{display:none}
.film[data-scene="4"] .alt-a,.film[data-scene="5"] .alt-a{display:none}
.film[data-scene="4"] .alt-b,.film[data-scene="5"] .alt-b{display:inline-block}
.film[data-scene="4"] .alt-b{animation:popin .45s cubic-bezier(.2,1.4,.4,1)}
.alt-b{display:none}
@keyframes frise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes failflash{0%,100%{background:transparent}30%{background:color-mix(in srgb,var(--pop) 11%,transparent)}}
@keyframes okflash{0%,100%{background:transparent}30%{background:color-mix(in srgb,var(--green) 11%,transparent)}}
@keyframes popin{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
