/* Klar product page, "Midnight": near-black, hairlines, monospace figures, one thing lit at a time.
   Builds on app.css (fonts and tokens) and tour.css (the walkthrough). */
@property --ang { syntax: "<angle>"; inherits: false; initial-value: 0deg; }

.m { --bg: #06080f; --panel: #0b0f19; --line: rgba(255,255,255,.09); --text: #e9ecf5; --dim: #8a92a8; --faint: #4d556b;
  --lime: #d6f35b; --violet: #8b7bff; --blue: #5b8cff;
  background: var(--bg); color: var(--text); overflow-x: clip; font-size: 16px; }
.m em { font-family: var(--serif); font-style: italic; font-weight: 400; letter-spacing: -.01em; }
.m h2 { font-size: clamp(34px, 4.6vw, 62px); line-height: 1.03; letter-spacing: -.045em; font-weight: 540; margin: 18px 0 0; color: #fff; max-width: 18ch; }
.m h2.center, .m .center { text-align: center; margin-inline: auto; }
.meyebrow { display: flex; align-items: center; gap: 10px; font: 500 11.5px/1 var(--mono); letter-spacing: .16em; color: var(--dim); margin: 0; }
.meyebrow.center { justify-content: center; }
.meyebrow i { width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 12px var(--lime); animation: blink 2.4s ease-in-out infinite; }
@keyframes blink { 50% { opacity: .35; } }

/* ---------- logo and buttons (the top bar itself is in site.css) ---------- */
.mlogo { display: flex; align-items: center; gap: 10px; color: #fff; text-decoration: none; }
.mlogo b { font: 600 18px/1 var(--sans); letter-spacing: -.03em; } .mlogo b em { font-size: 20px; color: var(--dim); }
.mbtn { display: inline-flex; align-items: center; background: #fff; color: #06080f; text-decoration: none; font-weight: 560; font-size: 14.5px; padding: 9px 17px;
  border-radius: 10px; letter-spacing: -.01em; transition: box-shadow .3s, background .2s; }
.mbtn:hover { color: #06080f; background: var(--lime); box-shadow: 0 0 40px -6px var(--lime); }
.mbtn.big { padding: 14px 22px; font-size: 15.5px; border-radius: 12px; }

/* ---------- hero ---------- */
.mhero { position: relative; min-height: 100vh; display: grid; align-items: center; padding: 120px clamp(18px, 4vw, 48px) 70px; overflow: hidden; isolation: isolate; }
.mhero::before { content: ""; position: absolute; inset: 0; z-index: -2;
  background: radial-gradient(700px 500px at 78% 46%, rgba(91,140,255,.20), transparent 70%), radial-gradient(500px 400px at 90% 80%, rgba(139,123,255,.16), transparent 70%); }
.mhero::after { content: ""; position: absolute; inset: auto 0 0; height: 1px; background: var(--line); }
.mhero-orbit { position: absolute; z-index: -1; right: -6vw; top: 50%; translate: 0 -50%; width: min(64vw, 900px); aspect-ratio: 1; opacity: .9;
  mask-image: radial-gradient(closest-side, #000 60%, transparent 100%); }
.mhero-orbit canvas, .mhero-orbit spline-viewer, .mend-orbit canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.mhero-in { max-width: 940px; }
.mhero h1 { font-size: clamp(44px, 6.6vw, 96px); line-height: .96; letter-spacing: -.055em; font-weight: 540; margin: 26px 0 26px; color: #fff; }
.msub { font-size: clamp(17px, 1.5vw, 20px); line-height: 1.55; color: var(--dim); max-width: 46ch; margin: 0 0 34px; }
.mactions { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }
.mactions.center { justify-content: center; }
.mlink { display: inline-flex; align-items: center; gap: 10px; color: #fff; text-decoration: none; font-size: 15px; }
.mlink:hover { color: var(--lime); }
.mlink .play { width: 30px; height: 30px; border-radius: 50%; border: 1px solid rgba(255,255,255,.35); position: relative; transition: border-color .2s, box-shadow .3s; }
.mlink .play::after { content: ""; position: absolute; left: 11px; top: 9px; border: 6px solid transparent; border-left: 9px solid currentColor; border-right: 0; }
.mlink:hover .play { border-color: var(--lime); box-shadow: 0 0 20px -2px var(--lime); }
.mlog { margin-top: 54px; display: inline-flex; align-items: center; gap: 12px; padding: 12px 16px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.025);
  font: 500 13.5px/1.3 var(--mono); color: var(--text); max-width: 100%; min-height: 44px; backdrop-filter: blur(6px); }
.mlog .prompt { color: var(--lime); } .mlog .prompt::after { content: " ›"; color: var(--faint); }
.caret { width: 8px; height: 16px; background: var(--lime); animation: blink 1s steps(2) infinite; flex: none; }
.msample { position: absolute; right: clamp(18px, 4vw, 48px); bottom: 22px; margin: 0; font: 500 11px var(--mono); letter-spacing: .1em; color: var(--faint); text-transform: uppercase; }
.rise { opacity: 0; transform: translateY(22px); filter: blur(8px); transition: opacity 1s var(--d), transform 1s cubic-bezier(.2,.7,.2,1) var(--d), filter 1s var(--d); }
.ready .rise { opacity: 1; transform: none; filter: none; }
@media (max-width: 900px) { .mhero-orbit { right: -30vw; width: 120vw; opacity: .45; } .mhero { min-height: 92vh; } }

/* ---------- the stack: one card wakes at a time ---------- */
.watch { height: 380vh; position: relative; }
.watch-pin { position: sticky; top: 0; height: 100vh; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(20px, 5vw, 80px);
  align-items: center; padding: 0 clamp(18px, 4vw, 48px); max-width: 1320px; margin: 0 auto; overflow: hidden; }
.topics { list-style: none; margin: 40px 0 0; padding: 0; display: grid; gap: 4px; max-width: 460px; }
.topics li { padding: 14px 0 14px 18px; border-left: 1px solid var(--line); cursor: pointer; transition: border-color .4s; }
.topics b { display: block; font-size: 18px; font-weight: 540; letter-spacing: -.02em; color: var(--faint); transition: color .4s; }
.topics span { display: block; overflow: hidden; color: var(--dim); font-size: 15px; line-height: 1.5; max-height: 0; opacity: 0;
  transition: max-height .5s cubic-bezier(.2,.7,.2,1), opacity .5s, margin .5s; }
.topics li.on { border-left-color: var(--lime); } .topics li.on b { color: #fff; }
.topics li.on span { max-height: 80px; opacity: 1; margin-top: 6px; }
.stackwrap { height: 100vh; position: relative; mask-image: linear-gradient(transparent 2%, #000 22%, #000 78%, transparent 98%); }
.stack { display: grid; gap: 34px; transition: transform .9s cubic-bezier(.2,.7,.2,1); max-width: 540px; margin: 0 auto; }
.fcard { position: relative; border-radius: 16px; padding: 24px 24px 22px; border: 1px solid rgba(255,255,255,.05); opacity: .16; filter: saturate(.2);
  transition: opacity .7s, filter .7s, background .7s, transform .7s cubic-bezier(.2,.7,.2,1), box-shadow .7s; transform: scale(.97); }
.fcard header { display: flex; align-items: center; gap: 11px; }
.fico { width: 30px; height: 30px; border-radius: 9px; border: 1px solid rgba(255,255,255,.18); display: grid; place-items: center; background: rgba(255,255,255,.04); }
.fico i { width: 12px; height: 12px; border-radius: 50%; border: 1.5px dashed #fff; }
.fcard.on .fico i { animation: turn 6s linear infinite; } @keyframes turn { to { rotate: 360deg; } }
.fcard h3 { font: 600 19px/1.2 var(--sans); letter-spacing: -.02em; margin: 0; color: #fff; min-height: 1.2em; }
.fcard p { color: var(--dim); font-size: 14.5px; margin: 10px 0 34px; max-width: 40ch; }
.fcard dl { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; margin: 0; }
.fcard dt { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-style: italic; color: var(--dim); margin-bottom: 5px; }
.fcard .i { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; opacity: .7; }
.fcard dd { margin: 0; font: 500 19px/1.2 var(--mono); letter-spacing: -.01em; color: #fff; min-height: 1.2em; }
.fcard.on { opacity: 1; filter: none; transform: none; border-color: transparent;
  background: linear-gradient(140deg, rgba(139,123,255,.16), rgba(255,255,255,.035) 38%, rgba(214,243,91,.10)); backdrop-filter: blur(16px);
  box-shadow: 0 40px 80px -40px rgba(0,0,0,.9), 0 0 70px -28px rgba(214,243,91,.35), inset 0 1px 0 rgba(255,255,255,.08); }
/* the light that travels around the lit card's edge */
.edge { position: absolute; inset: -1px; border-radius: inherit; padding: 1.5px; pointer-events: none; opacity: 0; transition: opacity .7s;
  background: conic-gradient(from var(--ang), rgba(255,255,255,.10) 0 52%, var(--violet) 66%, var(--lime) 80%, rgba(255,255,255,.10) 92%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.fcard.on .edge { opacity: 1; animation: orbit 7s linear infinite; }
.fcard.on::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: -1; opacity: .9;
  background: conic-gradient(from var(--ang), transparent 0 58%, rgba(139,123,255,.5) 68%, rgba(214,243,91,.55) 80%, transparent 90%); filter: blur(34px); animation: orbit 7s linear infinite; }
@keyframes orbit { to { --ang: 360deg; } }
@media (max-width: 900px) {
  .watch { height: auto; padding: 90px 0 40px; }
  .watch-pin { position: static; height: auto; grid-template-columns: 1fr; overflow: visible; }
  .topics { display: none; } .stackwrap { height: auto; mask-image: none; margin-top: 34px; } .stack { gap: 18px; }
}

/* ---------- figures ---------- */
.mnums { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-block: 1px solid var(--line); margin-top: 40px; }
.mnum { padding: 54px clamp(18px, 4vw, 48px); display: grid; gap: 14px; }
.mnum + .mnum { border-left: 1px solid var(--line); }
.mnum b { font: 500 clamp(54px, 8vw, 112px)/.9 var(--mono); letter-spacing: -.06em; color: #fff; min-height: .9em;
  background: linear-gradient(180deg, #fff 30%, var(--lime)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.mnum span { color: var(--dim); font-size: 15px; max-width: 28ch; }
@media (max-width: 760px) { .mnums { grid-template-columns: 1fr; } .mnum + .mnum { border-left: 0; border-top: 1px solid var(--line); } .mnum { padding: 34px 18px; } }

/* ---------- film (tour.css restyled for black) ---------- */
.m .tour { background: none; padding: 110px clamp(18px, 4vw, 48px) 110px; text-align: center; }
.m .tour > .tagpill { display: inline-flex; font: 500 11.5px/1 var(--mono); letter-spacing: .16em; color: var(--dim); border: 1px solid var(--line); border-radius: 8px;
  padding: 8px 12px; margin: 0 0 22px; }
.m .tour .title { color: #fff; font-size: clamp(34px, 4.6vw, 62px); letter-spacing: -.045em; font-weight: 540; margin: 0 auto 14px; max-width: none; }
.m .tour .intro { color: var(--dim); }
.m .player { background: var(--panel); box-shadow: 0 0 0 1px var(--line), 0 60px 120px -50px #000, 0 0 120px -40px rgba(139,123,255,.5); }
.m .screen { background: radial-gradient(600px 300px at 80% 10%, rgba(139,123,255,.22), transparent 70%), radial-gradient(600px 300px at 10% 90%, rgba(91,140,255,.22), transparent 70%), #080c16; }
.m .withsound { color: var(--dim); } .m .withsound a { color: var(--text); }
.m .soundbtn { background: #fff; color: #06080f; border: 0; box-shadow: none; border-radius: 12px; }
.m .soundbtn svg { stroke: #06080f; } .m .soundbtn:hover { background: var(--lime); box-shadow: 0 0 40px -6px var(--lime); }

/* ---------- product grid ---------- */
.mgrid-sec, .mfirms { padding: 110px clamp(18px, 4vw, 48px); max-width: 1320px; margin: 0 auto; }
.mgrid { --x: -400px; --y: -400px; position: relative; margin-top: 54px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; border-radius: 20px; overflow: hidden;
  background: radial-gradient(360px circle at var(--x) var(--y), rgba(214,243,91,.75), rgba(139,123,255,.45) 40%, var(--line) 70%); border: 1px solid var(--line); }
.mcell { background: var(--bg); padding: 28px 26px 34px; min-height: 220px; position: relative; transition: background .3s; }
.mcell::before { content: ""; position: absolute; inset: 0; opacity: 0; transition: opacity .3s; pointer-events: none;
  background: radial-gradient(420px circle at calc(var(--x) - var(--ox, 0px)) calc(var(--y) - var(--oy, 0px)), rgba(255,255,255,.06), transparent 60%); }
.mcell:hover { background: #0a0e17; } .mcell:hover::before { opacity: 1; }
.mcell .no { font: 500 12px var(--mono); color: var(--faint); transition: color .3s; } .mcell:hover .no { color: var(--lime); }
.mcell h3 { font: 560 20px/1.2 var(--sans); letter-spacing: -.025em; color: #fff; margin: 40px 0 10px; }
.mcell p { color: var(--dim); font-size: 14.5px; margin: 0; }
@media (max-width: 1000px) { .mgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .mgrid { grid-template-columns: 1fr; } .mcell { min-height: 0; } .mcell h3 { margin-top: 18px; } }

/* ---------- connects ---------- */
.mconnect { padding: 110px clamp(18px, 4vw, 48px); text-align: center; border-block: 1px solid var(--line);
  background: radial-gradient(700px 300px at 50% 0%, rgba(139,123,255,.14), transparent 70%); }
.ctabs { display: inline-flex; gap: 4px; padding: 5px; border-radius: 12px; border: 1px solid var(--line); margin: 34px 0; flex-wrap: wrap; }
.ctabs button { border: 0; background: none; color: var(--dim); font: 500 14.5px var(--sans); padding: 9px 18px; border-radius: 8px; cursor: pointer; transition: background .25s, color .25s; }
.ctabs button.on { background: #fff; color: #06080f; }
.cpanes { display: grid; max-width: 900px; margin: 0 auto; }
.cpane { grid-area: 1 / 1; display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; align-content: flex-start; visibility: hidden; }
.cpane.on { visibility: visible; }
.cpane span { padding: 10px 16px; border-radius: 10px; font: 500 13.5px var(--mono); border: 1px solid var(--line); background: rgba(255,255,255,.02); opacity: 0;
  transition: transform .25s, border-color .25s, color .25s, box-shadow .25s; }
.cpane.on span { animation: chipin .5s cubic-bezier(.2,.7,.2,1) both; animation-delay: calc(var(--i) * 45ms); }
@keyframes chipin { from { opacity: 0; transform: translateY(14px) scale(.92); filter: blur(6px); } to { opacity: 1; transform: none; filter: none; } }
.cpane span:hover { transform: translateY(-3px); border-color: var(--lime); color: var(--lime); box-shadow: 0 0 30px -10px var(--lime); }

/* ---------- firms ---------- */
.mboard { position: relative; margin-top: 54px; border-radius: 20px; border: 1px solid var(--line); background: var(--panel); padding: 10px 10px 4px; }
.mboard.tilt { transform: perspective(1500px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); }
.mboard .bhead, .mboard .brow { display: grid; grid-template-columns: 1.3fr 2fr .5fr 1fr; gap: 14px; align-items: center; padding: 14px 16px; }
.mboard .bhead { font: 500 10.5px var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--faint); }
.mboard .brow { border-top: 1px solid var(--line); font-size: 14.5px; border-radius: 12px; transition: background .2s; }
.mboard .brow:hover { background: rgba(255,255,255,.04); }
.mboard .brow b { font-weight: 560; color: #fff; display: flex; align-items: center; } .mboard .brow > span { color: var(--dim); }
.dot { width: 8px; height: 8px; border-radius: 50%; margin-right: 11px; flex: none; }
.dot.g { background: #4ade80; box-shadow: 0 0 10px #4ade80; } .dot.r { background: #ff6b70; box-shadow: 0 0 10px #ff6b70; } .dot.a { background: #f3b443; }
.mboard .av { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; border: 1px solid var(--line); font: 500 10.5px var(--mono); font-style: normal; color: var(--text); }
.mboard .sc { display: flex; align-items: center; gap: 10px; }
.mboard .sc i { flex: 1; height: 4px; border-radius: 2px; background: linear-gradient(90deg, var(--violet), var(--lime)) 0 / var(--w) 100% no-repeat, rgba(255,255,255,.08);
  transition: background-size 1.5s cubic-bezier(.2,.7,.2,1) .3s; }
.mboard:not(.in) .sc i { background-size: 0 100%, auto; }
.mboard .sc em { font: 500 13px var(--mono); font-style: normal; color: #fff; width: 24px; text-align: right; }
.snote { text-align: right; font: 500 10.5px var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); margin: 8px 12px; }
.mroles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 40px; border-top: 1px solid var(--line); }
.mroles div { padding: 26px 26px 0 0; } .mroles div + div { padding-left: 26px; border-left: 1px solid var(--line); }
.mroles b { font: 540 24px var(--sans); letter-spacing: -.03em; color: #fff; } .mroles p { color: var(--dim); margin: 8px 0 0; font-size: 15px; }
@media (max-width: 760px) { .mboard .bhead { display: none; } .mboard .brow { grid-template-columns: 1fr auto; } .mboard .brow > span:nth-child(2) { grid-column: 1 / -1; order: 3; font-size: 13px; }
  .mboard .sc { display: none; } .mroles { grid-template-columns: 1fr; } .mroles div + div { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); margin-top: 22px; } }

/* ---------- end ---------- */
.mend { position: relative; isolation: isolate; overflow: hidden; text-align: center; padding: 170px clamp(18px, 4vw, 48px) 160px; border-top: 1px solid var(--line); }
.mend h2 { max-width: 14ch; margin: 0 auto 38px; font-size: clamp(40px, 6.4vw, 92px); }
.mend-orbit { position: absolute; z-index: -1; left: 50%; top: 50%; translate: -50% -50%; width: min(110vw, 900px); aspect-ratio: 1; opacity: .5;
  mask-image: radial-gradient(closest-side, #000 50%, transparent 100%); }
.mfoot { border-top: 1px solid var(--line); padding: 34px clamp(18px, 4vw, 48px) 50px; display: grid; gap: 12px; color: var(--faint); font-size: 13.5px; }
.mfoot a { color: var(--dim); } .mmotion { border: 0; background: none; color: var(--dim); font: inherit; cursor: pointer; padding: 0; text-decoration: underline; }

.reveal { opacity: 0; transform: translateY(20px); filter: blur(8px); transition: opacity .9s var(--d, 0ms), transform .9s cubic-bezier(.2,.7,.2,1) var(--d, 0ms), filter .9s var(--d, 0ms); }
.reveal.in { opacity: 1; transform: none; filter: none; }
.mboard.reveal.tilt.in { transform: perspective(1500px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); }
:root[data-motion="off"] .rise, :root[data-motion="off"] .reveal { opacity: 1; transform: none; filter: none; }
:root[data-motion="off"] .cpane span { opacity: 1; }

/* ---------- refinements: brand mark, demo chip, figure labels, narration button ---------- */
.mark { filter: drop-shadow(0 0 10px rgba(214,243,91,.35)); transition: filter .3s, transform .4s cubic-bezier(.2,.7,.2,1); }
.mlogo:hover .mark { filter: drop-shadow(0 0 16px rgba(214,243,91,.7)); transform: rotate(-6deg) scale(1.06); }
.msample { display: inline-flex; align-items: center; gap: 9px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; background: rgba(255,255,255,.03);
  backdrop-filter: blur(8px); color: var(--dim); letter-spacing: .12em; }
.msample i { width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 10px var(--lime); animation: mpulse 2s ease-in-out infinite; }
@keyframes mpulse { 50% { opacity: .35; transform: scale(.7); } }
.mnum { position: relative; transition: background .4s; }
.mnum:hover { background: radial-gradient(420px 220px at 30% 100%, rgba(214,243,91,.07), transparent 70%); }
.mnum small { font: 500 11px var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--lime); }
.mnum span { color: #aab1c4; font-size: 15.5px; line-height: 1.5; max-width: 32ch; }
.m .soundbtn { border-radius: 999px; padding: 13px 22px 13px 14px; color: #06080f; font-weight: 600; border: 1px solid transparent;
  background: linear-gradient(#fff, #e9ecf5) padding-box, linear-gradient(120deg, var(--lime), var(--blue), var(--violet)) border-box; box-shadow: 0 0 44px -14px var(--lime); }
.m .soundbtn svg { width: 30px; height: 30px; padding: 6px; border-radius: 50%; background: #06080f; stroke: var(--lime); }
.m .soundbtn:hover { background: linear-gradient(var(--lime), var(--lime)) padding-box, linear-gradient(120deg, #fff, var(--lime)) border-box; }
.m .agentpill small { color: var(--lime); }
