:root{
  --ground:#0a0c10; --panel:#12161d; --panel2:#1a2029; --line:#262d39;
  --text:#f2f5f8; --muted:#a3acbb; --signal:#2ff3c3; --signal-ink:#06261d; --live:#ff3b5c;
  --display:"Space Grotesk",Inter,system-ui,sans-serif; --body:Inter,system-ui,sans-serif;
}
*{box-sizing:border-box}
html{background:var(--ground)}
body{margin:0;background:var(--ground);color:var(--text);font:400 clamp(1rem,1.15vw,1.0625rem)/1.65 var(--body);overflow-x:hidden}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}

/* nav */
nav{display:flex;align-items:center;justify-content:space-between;padding:22px 0}
nav img{height:30px;display:block}
.btn{display:inline-flex;align-items:center;gap:10px;font:600 15px/1 var(--body);text-decoration:none;border-radius:999px;padding:15px 24px;transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s,background-color .2s}
.btn-solid{background:var(--signal);color:var(--signal-ink);box-shadow:0 0 0 0 rgba(47,243,195,0)}
.btn-solid:hover{transform:translateY(-2px);box-shadow:0 12px 28px -12px rgba(0,0,0,.9)}
.btn-ghost{border:1px solid #2f3a48;color:var(--text);padding:11px 18px;font-size:14px}
.btn-ghost:hover{border-color:var(--signal)}
.btn:focus-visible{outline:2px solid var(--signal);outline-offset:3px}

/* hero */
.hero{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:center;gap:24px;min-height:min(78vh,720px);padding:24px 0 40px}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font:600 12px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--live);}
@keyframes onair{0%{box-shadow:0 0 0 0 rgba(255,59,92,.55)}70%,100%{box-shadow:0 0 0 10px rgba(255,59,92,0)}}
h1{font:700 clamp(2.75rem,6.2vw,5.6rem)/.98 var(--display);letter-spacing:-.04em;margin:22px 0 22px}
h1 em{font-style:normal;color:var(--signal)}
.lede{color:var(--muted);max-width:30ch;font-size:clamp(1.05rem,1.4vw,1.2rem);margin:0 0 30px}
.lede b{color:var(--text);font-weight:500}
.fine{font-size:13px;color:#7d8798;margin-top:14px}

/* 3D stage */
.stage{position:relative;height:540px;perspective:1500px;perspective-origin:50% 40%}
.tilt{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(calc(var(--py,0) * -6deg)) rotateY(calc(var(--px,0) * 8deg))}
.rig{position:absolute;left:50%;top:50%;width:460px;height:310px;margin:-155px 0 0 -230px;scale:1.08;transform-style:preserve-3d;animation:drift 9s ease-in-out infinite}
@keyframes drift{
  0%,100%{transform:rotateX(20deg) rotateY(-28deg) rotateZ(4deg) translateY(0)}
  50%{transform:rotateX(14deg) rotateY(-16deg) rotateZ(2.5deg) translateY(-14px)}
}
.slab{position:absolute;inset:0;border-radius:22px;background:linear-gradient(160deg,#151a22,#0d1016 70%);border:1px solid #2a3240;transform-style:preserve-3d;box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
/* thickness: stacked back layers give the slab an edge */
.slab::before,.slab::after{content:"";position:absolute;inset:0;border-radius:22px;background:#07090c;border:1px solid #1d232d}
.slab::before{transform:translateZ(-12px)}
.slab::after{transform:translateZ(-24px);box-shadow:0 40px 80px -20px rgba(0,0,0,.8)}
.layer{position:absolute;transform-style:preserve-3d}
.l-head{left:26px;top:22px;right:26px;display:flex;align-items:center;justify-content:space-between;transform:translateZ(18px)}
.l-head img{height:24px;display:block}
.l-head span{font:500 11px/1 var(--body);color:#6f7a8b}
.l-panel{left:20px;right:20px;top:70px;height:132px;border-radius:14px;background:#11161e;border:1px solid #2a3342;transform:translateZ(34px);padding:16px 18px;box-shadow:0 18px 30px -18px rgba(0,0,0,.9)}
.ready{display:flex;align-items:center;gap:9px;font:700 12px/1 var(--display);letter-spacing:.12em}
.ready i{width:9px;height:9px;border-radius:50%;background:var(--signal);animation:blink 1.6s ease-in-out infinite}
@keyframes blink{50%{opacity:.35}}
.link{margin-top:14px;display:flex;gap:8px}
.link div{flex:1;background:#080a0e;border-radius:8px;padding:9px 10px;font:600 12px/1 var(--body);color:var(--signal)}
.link b{background:#262d39;border-radius:8px;padding:9px 12px;font:500 12px/1 var(--body)}
.meters{margin-top:16px;display:grid;gap:6px}
.meter{height:6px;border-radius:6px;background:#1c222c;overflow:hidden}
.meter i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--signal) 78%,#ffd45c 90%,var(--live));transform-origin:left;animation:lvl 1.15s cubic-bezier(.3,0,.2,1) infinite}
.meter:nth-child(2) i{animation-duration:.95s;animation-delay:-.4s}
@keyframes lvl{0%{transform:scaleX(.55)}12%{transform:scaleX(.9)}30%{transform:scaleX(.68)}48%{transform:scaleX(.84)}62%{transform:scaleX(.6)}80%{transform:scaleX(.93)}100%{transform:scaleX(.55)}}
.l-send{left:26px;right:26px;bottom:30px;display:flex;align-items:center;gap:14px;transform:translateZ(22px);font:700 11px/1 var(--display);letter-spacing:.14em;color:#8792a3}
.track{flex:1;height:5px;border-radius:5px;background:#232a35;position:relative}
.track::before{content:"";position:absolute;inset:0 38% 0 0;border-radius:5px;background:#21a989}
.track::after{content:"";position:absolute;left:62%;top:50%;width:15px;height:15px;margin:-7.5px 0 0 -7.5px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 4px rgba(47,243,195,.15)}
.l-send em{font-style:normal;color:var(--text);font-weight:500;letter-spacing:0}

/* chips + cable around the slab */
.chip{position:absolute;transform-style:preserve-3d;display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:12px;background:#12161d;border:1px solid #2a3342;font:700 12px/1 var(--display);letter-spacing:.1em;white-space:nowrap;box-shadow:0 20px 40px -20px rgba(0,0,0,.9)}
.chip.daw{left:-150px;top:120px;transform:translateZ(24px)}
.chip.live{right:-118px;top:118px;transform:translateZ(60px);border-color:rgba(255,59,92,.5)}
.chip.live i{width:8px;height:8px;border-radius:50%;background:var(--live);animation:onair 1.6s ease-out infinite}
.bars{display:flex;gap:2px;align-items:flex-end;height:14px}
.bars s{width:3px;background:var(--signal);border-radius:2px;transform-origin:bottom;animation:bar .9s ease-in-out infinite}
.bars s:nth-child(1){height:60%;animation-delay:-.2s}.bars s:nth-child(2){height:100%;animation-delay:-.5s}.bars s:nth-child(3){height:75%;animation-delay:-.1s}.bars s:nth-child(4){height:90%;animation-delay:-.7s}
@keyframes bar{50%{transform:scaleY(.35)}}
.cable{position:absolute;left:-40px;right:-60px;top:131px;height:24px;overflow:visible}
.cable path{fill:none;stroke-width:2;stroke-linecap:round}
.cable .base{stroke:#2a3342}
.cable .flow{stroke:var(--signal);stroke-dasharray:6 18;animation:flow 1.1s linear infinite}
@keyframes flow{to{stroke-dashoffset:-24}}
.floor{position:absolute;left:50%;top:79%;width:420px;height:70px;margin-left:-210px;border-radius:50%;background:radial-gradient(closest-side,rgba(47,243,195,.18),transparent);filter:blur(6px);animation:breathe 9s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(.9);opacity:.7}}

/* steps */
.steps{display:grid;grid-template-columns:1.3fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.step{padding:34px 28px 36px 0}
.step+.step{padding-left:28px;border-left:1px solid var(--line)}
.step b{display:block;font:700 clamp(2.4rem,4vw,3.4rem)/1 var(--display);color:var(--signal);letter-spacing:-.04em;margin-bottom:14px}
.step h2{font:700 1.2rem/1.2 var(--display);margin:0 0 6px}
.step p{margin:0;color:var(--muted);font-size:.95rem}
.works{display:flex;flex-wrap:wrap;gap:8px 22px;padding:22px 0 0;color:#7d8798;font-size:14px}
.works strong{color:var(--text);font-weight:500}

/* price */
.price{margin:72px 0 40px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:36px;padding:36px 40px;border-radius:28px;background:var(--signal);color:var(--signal-ink)}
.price .amt{font:700 clamp(3rem,6vw,4.75rem)/.9 var(--display);letter-spacing:-.05em}
.price p{margin:0;font-weight:500;max-width:36ch}
.price .btn{background:var(--signal-ink);color:var(--signal)}
.price .btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px -12px rgba(6,38,29,.7)}
footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:26px 0 40px;color:#6f7a8b;font-size:13px}
footer a{text-decoration:none;margin-right:16px}footer a:hover{color:var(--text)}

/* entrance */
.rise{opacity:0;transform:translateY(16px);animation:rise .7s cubic-bezier(.2,.8,.2,1) forwards}
.rise:nth-child(2){animation-delay:.06s}.rise:nth-child(3){animation-delay:.12s}.rise:nth-child(4){animation-delay:.18s}.rise:nth-child(5){animation-delay:.24s}
@keyframes rise{to{opacity:1;transform:none}}
.stage{opacity:0;animation:fade 1s .2s ease-out forwards}
@keyframes fade{to{opacity:1}}

@media (max-width:900px){
  .hero{grid-template-columns:1fr;min-height:0;padding-top:8px}
  .stage{height:400px;margin:0 -24px;order:2}
  .rig{transform-origin:center;scale:.74}
  .chip.daw{left:-6px;top:-50px}
  .chip.live{right:4px;top:auto;bottom:-56px}
  .cable{display:none}
  .steps{grid-template-columns:1fr}
  .step,.step+.step{padding:26px 0;border-left:0}
  .step+.step{border-top:1px solid var(--line)}
  .price{grid-template-columns:1fr;gap:18px;padding:30px 26px}
}
@media (max-width:420px){ .stage{height:330px} .rig{scale:.7} nav img{height:26px} }
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important}
  .rig{transform:rotateX(16deg) rotateY(-20deg) rotateZ(3deg)}
}

/* Data rain background (landing page). Variables from the owner's DataRain component. */
:root{
  --dr-bg-0:#020308; --dr-bg-1:#05070d; --dr-bg-2:#0a1020;
  --dr-calm:#22e6ff; --dr-mid:#8a5cff; --dr-hot:#ff3d9a; --dr-core:#eafcff;
  --dr-vignette:.62; --dr-grain:.05; --dr-bloom-blur:10px; --dr-bloom-opacity:.7;
}
body.rain{background:var(--dr-bg-0)}
body.rain > header, body.rain > main, body.rain > footer{position:relative;z-index:1}
.dr-root{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 0%,var(--dr-bg-2) 0%,var(--dr-bg-1) 45%,var(--dr-bg-0) 100%);
  animation:dr-fade-in 1.2s ease-out both}
.dr-root--contained{position:absolute}
.dr-root canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.dr-bloom{filter:blur(var(--dr-bloom-blur));opacity:var(--dr-bloom-opacity);mix-blend-mode:screen}
.dr-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,transparent 35%,rgba(2,3,8,var(--dr-vignette)) 100%)}
.dr-grain{position:absolute;inset:0;opacity:var(--dr-grain);mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes dr-fade-in{from{opacity:0}to{opacity:1}}

/* Wavrelay landing (2026-10-09): the brand mockup's layout and 3D header, the data rain behind it,
   real checkout forms, and the longer sections folded into details so the page reads short. */
body{background:var(--dr-bg-0,var(--ground))}
body > .wrap{position:relative;z-index:1}
form{margin:0;display:inline}
button.btn{border:0;cursor:pointer}
.works{display:block;padding:24px 0 0}
.works p{margin:0 0 10px;color:#9aa4b4;font-size:15px}
.works strong{display:inline-block;color:var(--text);font-weight:600;margin-right:10px}
.more{margin:56px 0 0;display:grid;gap:12px}
.more details{border:1px solid var(--line);border-radius:18px;background:rgba(18,22,29,.82);backdrop-filter:blur(6px)}
.more summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;font:700 1.15rem/1.2 var(--display)}
.more summary::-webkit-details-marker{display:none}
.more summary::after{content:"+";font:400 1.6rem/1 var(--body);color:var(--signal);transition:transform .25s}
.more details[open] > summary::after{transform:rotate(45deg)}
.more summary:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:18px}
.more .body{padding:0 24px 22px;color:var(--muted)}
.more ul{list-style:none;margin:0;padding:0}
.more li{padding:12px 0;border-top:1px solid var(--line)}
.more li b{color:var(--text)}
.more .qa{border-top:1px solid var(--line);padding:2px 0}
.more .qa summary{font:600 1rem/1.4 var(--body);padding:14px 0}
.more .qa summary::after{font-size:1.3rem}
.more .qa p{margin:0 0 14px}
.price .fine{color:rgba(6,38,29,.75);margin:8px 0 0;font-size:13px}
.price .fine a{color:var(--signal-ink);font-weight:700}
footer a{margin-right:16px}
@media (max-width:900px){ .more{margin-top:40px} .more summary{padding:18px 20px} .more .body{padding:0 20px 18px} }
.more details.qa{border:0;border-top:1px solid var(--line);border-radius:0;background:none;backdrop-filter:none}
.more details.qa summary{padding:14px 0}
.more .body ul,.more .body p,.more .qa{max-width:62ch}.works p{max-width:none}
/* Phones (owner 2026-10-09: "you can scroll outside of the actual page on mobile"): nothing may
   widen the page. The floor glow was a fixed 420px; iPhone Safari let the page drift sideways. */
html,body{overflow-x:hidden;overflow-x:clip;overscroll-behavior-x:none}
.floor{width:min(420px,92%);margin-left:0;left:50%;transform:translateX(-50%)}
@keyframes breathe{50%{transform:translateX(-50%) scale(.9);opacity:.7}}
.hero,.stage{overflow-x:clip}
