:root{
  --bg:#000000;
  --neon:#00ff9c;
  --neon2:#00cc88;
  --txt:#eaeaea;
  --muted:#9b9b9b;
  --glass: rgba(0, 0, 0, 0.55);
  --shadow: 0 0 14px rgba(0,255,156,.28), 0 0 42px rgba(0,255,156,.14);
  --shadowHard: 0 0 12px rgba(0,255,156,.55), 0 0 55px rgba(0,255,156,.22);
  --noiseOpacity: .05;
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  background:var(--bg);
  color:var(--txt);
  overflow:hidden;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, "Noto Sans", "Helvetica Neue", sans-serif;
}

canvas{
  position:fixed;
  inset:0;
  width:100%;
  height:100%;
  display:block;
}
#matrix{ z-index:0; }
#fx{ z-index:5; pointer-events:none; }

#noise{
  position:fixed;
  inset:0;
  z-index:6;
  pointer-events:none;
  opacity: var(--noiseOpacity);
  mix-blend-mode:soft-light;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  background-size: 240px 240px;
  animation: noiseShift var(--noiseSpeed,22s) steps(12,end) infinite;
}
@keyframes noiseShift{
  0%{ background-position:0 0; }
  100%{ background-position:240px 120px; }
}

#focusBubble{
  position:fixed;
  inset:0;
  z-index:3;
  pointer-events:none;
  background: radial-gradient(circle at var(--bx,50%) var(--by,50%), rgba(0,255,156,.08), rgba(0,0,0,0.0) 38%, rgba(0,0,0,0.45) 70%);
  opacity:0;
  transition: opacity 320ms ease, filter 320ms ease;
  mix-blend-mode:soft-light;
  filter: blur(12px);
}

.stage{
  position:relative;
  z-index:4;
  min-height:100%;
  display:grid;
  place-items:center;
  padding: clamp(18px, 3vw, 44px);
}

.frame{
  width:min(980px, 100%);
  padding: clamp(18px, 3.2vw, 44px);
  background:
    linear-gradient(180deg, rgba(0,255,156,.02), rgba(0,0,0,.0) 42%),
    radial-gradient(700px 260px at 40% 0%, rgba(0,255,156,.045), transparent 58%),
    var(--glass);
  border:1px solid rgba(0,255,156,.12);
  box-shadow: 0 0 0 1px rgba(0,0,0,.55), 0 20px 80px rgba(0,0,0,.75), 0 0 40px rgba(0,255,156,.08);
  backdrop-filter: blur(18px) saturate(1.05);
  position:relative;
  overflow:hidden;
}
.colliderWrap{
  position:absolute;
  right: clamp(6px, 3vw, 24px);
  top: 58%;
  transform: translateY(-50%);
  width: min(440px, 45vw);
  height: min(560px, 72vh);
  opacity:.96;
  filter: drop-shadow(0 0 28px rgba(0,255,156,.18));
  pointer-events:none;
}
#collider{
  width:100%;
  height:100%;
  display:block;
}
.frame::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  border:1px solid rgba(0,255,156,.06);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.65);
}

.topline{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:14px;
  margin-bottom: clamp(12px, 2vw, 18px);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
.statusDot{
  color: var(--neon);
  font-size:12px;
  letter-spacing:.08em;
  text-shadow: var(--shadow);
}
.status{
  color:rgba(234,234,234,.78);
  font-size:12px;
  opacity:.86;
}

.hero{ margin-top: 4px; }
.h1{
  margin: 0;
  line-height: 1.03;
  font-weight: 750;
  letter-spacing:-.01em;
  font-size: clamp(30px, 4.4vw, 56px);
}
.typed{
  color:var(--txt);
  text-shadow: 0 0 0 rgba(0,0,0,0);
}
.caret{
  color:var(--neon);
  margin-left: 6px;
  text-shadow: var(--shadowHard);
  animation: caretBlink .88s steps(1,end) infinite;
}
@keyframes caretBlink{ 50%{ opacity:.1; } }

.subheadline{
  margin: 14px 0 0 0;
  color: rgba(234,234,234,.86);
  max-width: 54ch;
  font-size: clamp(14px, 1.55vw, 18px);
  opacity:0;
  transform: translateY(8px);
  transition: opacity 720ms ease, transform 720ms ease;
}
.subheadline.reveal{
  opacity:1;
  transform: translateY(0);
}

.copy{
  margin-top: clamp(16px, 2.6vw, 24px);
}
.desc{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: clamp(13px, 1.35vw, 16px);
  color: rgba(234,234,234,.86);
}
.line{
  display:flex;
  gap:10px;
  align-items:flex-start;
  opacity:0;
  transform: translateY(6px);
}
.line.show{
  opacity:1;
  transform: translateY(0);
  transition: opacity 420ms ease, transform 420ms ease;
}
.line::before{
  content:">";
  color: rgba(0,255,156,.75);
  text-shadow: var(--shadow);
  flex:0 0 auto;
  transform: translateY(1px);
}
.line span{
  display:inline-block;
  white-space:pre-wrap;
}
.compileCaret{
  color: var(--neon);
  margin-left: 4px;
  text-shadow: var(--shadowHard);
}

.authority{
  margin-top: clamp(16px, 2.3vw, 22px);
  font-weight: 700;
  letter-spacing:.02em;
  color: var(--neon);
  font-size: clamp(14px, 1.5vw, 18px);
  opacity:.0;
  transform: translateY(6px);
  transition: opacity 520ms ease, transform 520ms ease;
}
.pressure{
  margin-top: 10px;
  color: rgba(234,234,234,.78);
  font-size: clamp(12px, 1.2vw, 15px);
  opacity:0;
  transform: translateY(6px);
  transition: opacity 520ms ease, transform 520ms ease;
}
.authority.reveal,.pressure.reveal{
  opacity:1;
  transform: translateY(0);
}
.glow{
  text-shadow: var(--shadowHard);
}

.cta{
  margin-top: clamp(18px, 3vw, 28px);
}
.ctaRow{
  display:flex;
  gap:14px;
  flex-wrap:wrap;
}

.channelsBlock{
  margin-top: 18px;
  opacity:0;
  transform: translateY(8px);
  transition: opacity 520ms ease, transform 520ms ease;
  pointer-events:none;
}
.channelsBlock.visible{
  opacity:1;
  transform: translateY(0);
  pointer-events:auto;
}
.channelLine{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  color: rgba(234,234,234,.72);
  font-size: 12px;
  letter-spacing:.03em;
  margin-bottom: 10px;
}
.channels{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.channel{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding: 10px 14px;
  border-radius: 10px;
  border:1px solid rgba(0,255,156,.12);
  background: rgba(0,0,0,.22);
  color: rgba(234,234,234,.9);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  text-decoration:none;
  letter-spacing:.01em;
  transition: transform 260ms ease, box-shadow 260ms ease, opacity 260ms ease, color 260ms ease;
  box-shadow: 0 0 0 1px rgba(0,0,0,.7);
}
.channels:hover .channel:not(:hover){
  opacity:.45;
}
.channel:hover{
  color: var(--txt);
  box-shadow: 0 0 0 1px rgba(0,0,0,.7), 0 0 18px rgba(0,255,156,.16);
  transform: translateY(-1px);
}

.btn{
  position:relative;
  min-width: min(360px, 100%);
  padding: 14px 18px;
  border-radius: 12px;
  background: transparent;
  border: 1px solid rgba(0,255,156,0);
  color: rgba(234,234,234,.92);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  letter-spacing:.02em;
  font-weight: 650;
  font-size: 14px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  box-shadow: 0 0 0 1px rgba(0,0,0,.75);
  outline:none;
  cursor:pointer;
  user-select:none;

  opacity:0;
  transform: translateY(8px);
  pointer-events:none;
  visibility:hidden;
}

.btn::before{
  content:"";
  position:absolute;
  inset:1px;
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(0,255,156,.12), rgba(0,255,156,.0));
  opacity:0;
  transform: scaleX(0.0);
  transform-origin: left center;
  transition: transform 520ms cubic-bezier(.2,.9,.2,1), opacity 520ms ease;
}
.btnCode{
  position:absolute;
  inset:0;
  border-radius: 12px;
  overflow:hidden;
  pointer-events:none;
  opacity:0;
  transition: opacity 360ms ease;
}
.btnCode::before{
  content:"";
  position:absolute;
  inset:-20%;
  background:
    repeating-linear-gradient(
      90deg,
      rgba(0,255,156,.0) 0 18px,
      rgba(0,255,156,.09) 18px 19px,
      rgba(0,255,156,.0) 19px 32px
    );
  opacity:.38;
  transform: translate3d(-18%,0,0);
  animation: codeFlow 7.5s linear infinite;
  filter: blur(.15px);
}
@keyframes codeFlow{
  0%{ transform: translate3d(-18%,0,0); }
  100%{ transform: translate3d(18%,0,0); }
}

.btnPrimary{
  min-width: min(420px, 100%);
  font-size: 15px;
}
.btnSecondary{
  min-width: min(320px, 100%);
  color: rgba(234,234,234,.80);
}

.btn.outlineIn{
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
  pointer-events: none;
  transition: opacity 520ms ease, transform 520ms ease, border-color 420ms ease, box-shadow 420ms ease;
}
.btn.outlineIn.btnPrimary{
  border-color: rgba(0,255,156,.34);
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 0 1px rgba(0,255,156,.06) inset;
}
.btn.outlineIn.btnSecondary{
  border-color: rgba(0,204,136,.22);
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 0 1px rgba(0,204,136,.05) inset;
}
.btn.fillIn::before{
  opacity:1;
  transform: scaleX(1);
}
.btn.fillIn.btnPrimary{
  background: rgba(0,255,156,.08);
}
.btn.fillIn.btnSecondary{
  background: rgba(0,0,0,.06);
}
.btn.ctaBreath{
  animation: ctaBreath 3.6s ease-in-out infinite;
}
@keyframes ctaBreath{
  0%{ transform: translateY(0) scale(1); box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 18px rgba(0,255,156,.12); }
  50%{ transform: translateY(0) scale(1.012); box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 24px rgba(0,255,156,.18); }
  100%{ transform: translateY(0) scale(1); box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 18px rgba(0,255,156,.12); }
}
.btn.armed{
  pointer-events:auto;
}
.btn.settled{
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 18px rgba(0,255,156,.18);
}
.btn.settled.btnSecondary{
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 14px rgba(0,204,136,.14);
}

.btn:hover{
  border-color: rgba(0,255,156,.52);
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 28px rgba(0,255,156,.22);
}
.btnSecondary:hover{
  border-color: rgba(0,204,136,.44);
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 22px rgba(0,204,136,.18);
}
.btn:hover .btnCode{ opacity: .55; }
.btn:hover::before{ opacity: 1; }
.btn:hover .btnText{
  text-shadow: 0 0 10px rgba(0,255,156,.35), 0 0 26px rgba(0,255,156,.15);
}
.btnSecondary:hover .btnText{
  text-shadow: 0 0 10px rgba(0,204,136,.28), 0 0 26px rgba(0,204,136,.12);
}

.btn:focus-visible{
  border-color: rgba(0,255,156,.62);
  box-shadow: 0 0 0 1px rgba(0,0,0,.75), 0 0 0 3px rgba(0,255,156,.16), 0 0 26px rgba(0,255,156,.18);
}

.btn:active{
  transform: translateY(1px);
}

.btnText{
  position:relative;
  z-index:2;
}

@media (max-width: 860px){
  .ctaRow{ flex-direction: column; }
  .btn{ min-width: 100%; }
  .colliderWrap{
    position:relative;
    top:auto;
    right:auto;
    transform:none;
    margin: 16px auto 0;
    width: min(280px, 80%);
    height: min(280px, 60vw);
    opacity:.7;
  }
}

@media (prefers-reduced-motion: reduce){
  #noise{ animation: none; }
  .caret{ animation: none; }
  .btnCode::before{ animation: none; }
}


