/* ============================================================
   nslabs — LinkUp Section (Section 4)
   Theme tokens expected: --bg-deep, --bg-surface, --bg-elevated,
   --bg-elevated-2, --accent, --accent-2, --text-primary,
   --text-secondary, --text-dim, --border, --border-strong,
   --radius-sm/md/lg, --shadow-lg, --shadow-glow
   ============================================================ */

/* ============ SECTION SHELL ============ */
.ns-linkup{
  position:relative;
  padding: 160px 24px 180px;
  background:
    radial-gradient(900px 500px at 90% 0%, rgba(34,211,167,.08), transparent 60%),
    radial-gradient(1100px 700px at -10% 100%, rgba(79,125,245,.14), transparent 60%),
    linear-gradient(180deg, #0d1324 0%, #0a0e1a 100%);
  overflow:hidden;
  isolation:isolate;
}

/* subtle grid backdrop */
.ns-linkup::before{
  content:"";
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(140,160,220,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(140,160,220,.05) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: radial-gradient(ellipse at 60% 50%, black 30%, transparent 80%);
  pointer-events:none;
  z-index:0;
}

.ns-linkup__wrap{
  position:relative; z-index:1;
  max-width: 1280px; margin: 0 auto;
  display:grid;
  grid-template-columns: 1fr 1.15fr;
  gap: 100px;
  align-items: center;
}

/* ============ LEFT CONTENT ============ */
.ns-linkup__content{ max-width: 540px; }

.lk-badge{
  display:inline-flex; align-items:center; gap:10px;
  padding: 7px 14px;
  background: linear-gradient(135deg, rgba(79,125,245,.14), rgba(34,211,167,.10));
  border: 1px solid rgba(79,125,245,.28);
  color: var(--lk-accent);
  border-radius: 999px;
  font-size: .74rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600;
}
.lk-badge .dot{
  width:6px; height:6px; border-radius:50%;
  background: var(--lk-accent-2);
  box-shadow: 0 0 0 4px rgba(34,211,167,.18);
  animation: lkPulse 2.4s ease-in-out infinite;
}
@keyframes lkPulse{ 50%{ box-shadow: 0 0 0 8px rgba(34,211,167,.04);} }

.ns-linkup__content h2{
  font-size: clamp(2.4rem, 5vw, 3.6rem);
  line-height: 1.08;
  letter-spacing: -.02em;
  font-weight: 680;
  margin: 22px 0 22px;
  color: var(--lk-text);
}
.ns-linkup__content h2 .grad{
  background: linear-gradient(110deg, var(--lk-accent) 0%, var(--lk-accent-2) 70%, #b9c7ff 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

.ns-linkup__content p.lead{
  font-size: 1.08rem; line-height: 1.75;
  color: var(--lk-text-2);
  margin: 0 0 28px;
}

/* feature mini-list */
.lk-features{
  display:flex; flex-direction:column; gap: 12px;
  margin: 4px 0 32px;
  padding: 0; list-style:none;
}
.lk-features li{
  display:flex; align-items:center; gap: 12px;
  color: var(--lk-text-2); font-size: .96rem;
}
.lk-features svg{
  flex:0 0 18px; width:18px; height:18px;
  color: var(--lk-accent-2);
}

/* CTA group */
.lk-cta-row{ display:flex; align-items:center; gap: 18px; flex-wrap: wrap; }

.lk-btn{
  position:relative;
  display:inline-flex; align-items:center; gap: 12px;
  padding: 15px 28px;
  background: linear-gradient(135deg, var(--lk-accent), var(--lk-accent-2));
  color:#fff;
  border-radius: 14px;
  font-weight: 600; font-size: .98rem;
  text-decoration:none;
  box-shadow: 0 12px 30px rgba(79,125,245,.35), inset 0 1px 0 rgba(255,255,255,.18);
  transition: transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s;
  overflow:hidden;
}
.lk-btn::before{
  content:""; position:absolute; inset:0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.25) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform .8s ease;
}
.lk-btn:hover{ transform: translateY(-3px); box-shadow: 0 20px 44px rgba(79,125,245,.45); }
.lk-btn:hover::before{ transform: translateX(120%); }
.lk-btn .arrow{ transition: transform .3s; }
.lk-btn:hover .arrow{ transform: translateX(5px); }

.lk-link{
  color: var(--lk-text-2); text-decoration:none; font-size:.95rem;
  display:inline-flex; align-items:center; gap:6px;
  border-bottom:1px solid transparent; padding-bottom:2px;
  transition: color .25s, border-color .25s;
}
.lk-link:hover{ color: var(--lk-text); border-color: var(--lk-accent); }

/* ============ RIGHT: 3D APP MOCK ============ */
.ns-linkup__preview{
  position:relative;
  perspective: 1600px;
  display:flex; justify-content:center;
}

.lk-stage{
  position:relative;
  width: 100%; max-width: 620px;
  transform-style: preserve-3d;
  transform: rotateX(6deg) rotateY(-14deg);
  transition: transform .8s cubic-bezier(.2,.8,.2,1);
  will-change: transform;
}
.lk-stage:hover{ transform: rotateX(2deg) rotateY(-4deg) scale(1.02); }

/* glow under app */
.lk-stage::after{
  content:""; position:absolute;
  left:8%; right:8%; bottom:-40px; height:60px;
  background: radial-gradient(ellipse at center, rgba(79,125,245,.55), transparent 70%);
  filter: blur(20px); opacity:.6; z-index:-1;
}

/* ---- App window ---- */
.lk-app{
  position:relative;
  background: linear-gradient(180deg, var(--lk-elevated), var(--lk-surface));
  border: 1px solid var(--lk-border-2);
  border-radius: 22px;
  overflow:hidden;
  box-shadow:
    0 50px 100px rgba(0,0,0,.6),
    0 0 0 1px rgba(79,125,245,.15),
    inset 0 1px 0 rgba(255,255,255,.04);
}

.lk-app__bar{
  display:flex; align-items:center; gap: 14px;
  padding: 12px 18px;
  background: linear-gradient(180deg, #1a2240, #141b32);
  border-bottom: 1px solid var(--lk-border);
}
.lk-dots{ display:flex; gap: 7px; }
.lk-dots span{
  width: 11px; height: 11px; border-radius: 50%;
  background: #2a3552;
}
.lk-dots span:nth-child(1){ background:#ff5f57; opacity:.85;}
.lk-dots span:nth-child(2){ background:#febc2e; opacity:.85;}
.lk-dots span:nth-child(3){ background:#28c840; opacity:.85;}

.lk-tab{
  display:inline-flex; align-items:center; gap:8px;
  margin-left: 10px;
  padding: 6px 12px;
  background: rgba(79,125,245,.12);
  border: 1px solid rgba(79,125,245,.25);
  border-radius: 8px;
  color: var(--lk-text); font-size: .82rem;
}
.lk-tab .live{
  width:6px; height:6px; border-radius:50%;
  background: var(--lk-accent-2);
  box-shadow: 0 0 0 3px rgba(34,211,167,.2);
  animation: lkPulse 2s ease-in-out infinite;
}
.lk-search{
  margin-left:auto;
  display:flex; align-items:center; gap:8px;
  padding: 6px 12px; min-width: 180px;
  background: rgba(255,255,255,.04);
  border: 1px solid var(--lk-border);
  border-radius: 8px;
  color: var(--lk-text-3); font-size: .82rem;
}
.lk-search svg{ width:14px; height:14px; }

/* ---- App body grid ---- */
.lk-app__body{
  display:grid;
  grid-template-columns: 64px 200px 1fr;
  height: 460px;
}

/* sidebar nav */
.lk-nav{
  display:flex; flex-direction:column; align-items:center; gap: 10px;
  padding: 16px 8px;
  background: #0d1424;
  border-right: 1px solid var(--lk-border);
}
.lk-nav__logo{
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg, var(--lk-accent), var(--lk-accent-2));
  display:grid; place-items:center;
  color:#fff; font-weight:800; font-size:.9rem;
  box-shadow: 0 6px 18px rgba(79,125,245,.45);
  margin-bottom: 8px;
}
.lk-nav__item{
  width: 44px; height: 44px; border-radius: 12px;
  display:grid; place-items:center;
  color: var(--lk-text-3);
  background: transparent; border: 1px solid transparent;
  cursor:pointer;
  transition: all .25s ease;
}
.lk-nav__item svg{ width: 20px; height: 20px; }
.lk-nav__item:hover{ color: var(--lk-text); background: rgba(79,125,245,.08); }
.lk-nav__item.is-active{
  color: #fff;
  background: linear-gradient(135deg, rgba(79,125,245,.35), rgba(34,211,167,.18));
  border-color: rgba(79,125,245,.45);
  box-shadow: 0 0 18px rgba(79,125,245,.35);
}

/* channels column */
.lk-channels{
  background: #0f1729;
  border-right: 1px solid var(--lk-border);
  padding: 16px 12px;
  display:flex; flex-direction:column; gap: 4px;
  overflow:hidden;
}
.lk-channels__title{
  font-size: .68rem; letter-spacing: .18em; text-transform: uppercase;
  color: var(--lk-text-3);
  padding: 6px 8px 10px;
}
.lk-ch{
  display:flex; align-items:center; gap:10px;
  padding: 8px 10px;
  border-radius: 8px;
  color: var(--lk-text-2);
  font-size: .85rem;
  cursor:pointer;
  transition: background .2s, color .2s;
}
.lk-ch:hover{ background: rgba(255,255,255,.04); color: var(--lk-text); }
.lk-ch.is-active{
  background: linear-gradient(90deg, rgba(79,125,245,.18), transparent);
  color: var(--lk-text);
  position:relative;
}
.lk-ch.is-active::before{
  content:""; position:absolute; left:0; top:6px; bottom:6px;
  width: 2px; border-radius: 2px;
  background: linear-gradient(180deg, var(--lk-accent), var(--lk-accent-2));
}
.lk-ch .hash{ color: var(--lk-text-3); font-weight:600; }
.lk-ch .badge{
  margin-left:auto;
  font-size:.65rem; padding: 2px 7px; border-radius: 999px;
  background: rgba(34,211,167,.15); color: var(--lk-accent-2);
}

/* main panel */
.lk-main{
  position:relative;
  padding: 18px 20px;
  overflow:hidden;
  background:
    radial-gradient(600px 200px at 80% -10%, rgba(79,125,245,.12), transparent 60%),
    var(--lk-surface);
}
.lk-main__head{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom: 18px;
}
.lk-main__title{
  font-size: 1.02rem; font-weight: 620; color: var(--lk-text);
  display:flex; align-items:center; gap: 10px;
}
.lk-main__title .pill{
  font-size: .65rem; padding: 3px 9px; border-radius: 999px;
  background: rgba(34,211,167,.14); color: var(--lk-accent-2);
  border: 1px solid rgba(34,211,167,.28); letter-spacing: .08em;
}
.lk-avatars{ display:flex; }
.lk-avatars span{
  width: 26px; height: 26px; border-radius: 50%;
  display:grid; place-items:center;
  font-size:.7rem; font-weight:700; color:#fff;
  border: 2px solid var(--lk-surface);
  margin-left: -8px;
}
.lk-avatars span:nth-child(1){ background:#4f7df5; margin-left:0;}
.lk-avatars span:nth-child(2){ background:#22d3a7; }
.lk-avatars span:nth-child(3){ background:#a06cff; }
.lk-avatars span:nth-child(4){
  background: var(--lk-elevated-2); color: var(--lk-text-2); font-size:.65rem;
}

/* message thread */
.lk-thread{ display:flex; flex-direction:column; gap: 12px; }
.lk-msg{
  display:flex; gap: 12px;
  opacity: 0; transform: translateY(8px);
  animation: lkRise .6s ease-out forwards;
}
.lk-msg:nth-child(1){ animation-delay:.1s; }
.lk-msg:nth-child(2){ animation-delay:.35s; }
.lk-msg:nth-child(3){ animation-delay:.6s; }
@keyframes lkRise{ to{ opacity:1; transform:translateY(0);} }

.lk-msg__avatar{
  width: 32px; height: 32px; border-radius: 10px; flex-shrink:0;
  display:grid; place-items:center;
  font-size:.75rem; font-weight:700; color:#fff;
}
.lk-msg:nth-child(1) .lk-msg__avatar{ background: linear-gradient(135deg,#4f7df5,#22d3a7); }
.lk-msg:nth-child(2) .lk-msg__avatar{ background: linear-gradient(135deg,#a06cff,#4f7df5); }
.lk-msg:nth-child(3) .lk-msg__avatar{ background: linear-gradient(135deg,#22d3a7,#69e7c1); }

.lk-msg__bubble{
  flex:1;
  background: rgba(255,255,255,.035);
  border: 1px solid var(--lk-border);
  border-radius: 12px;
  padding: 10px 14px;
}
.lk-msg__meta{
  display:flex; align-items:center; gap:8px;
  margin-bottom: 4px;
}
.lk-msg__name{ color: var(--lk-text); font-weight:600; font-size:.82rem; }
.lk-msg__time{ color: var(--lk-text-3); font-size:.7rem; }
.lk-msg__text{ color: var(--lk-text-2); font-size:.86rem; line-height:1.5; margin:0;}
.lk-msg__text b{ color: var(--lk-text); font-weight:600;}

/* attached card inside message */
.lk-attach{
  margin-top: 10px;
  display:flex; align-items:center; gap: 12px;
  padding: 10px 12px;
  background: linear-gradient(135deg, rgba(79,125,245,.10), rgba(34,211,167,.06));
  border: 1px solid rgba(79,125,245,.25);
  border-radius: 10px;
}
.lk-attach__icon{
  width: 32px; height: 32px; border-radius: 8px;
  background: rgba(79,125,245,.2); color: var(--lk-accent);
  display:grid; place-items:center;
}
.lk-attach__icon svg{ width:16px; height:16px;}
.lk-attach__info strong{ display:block; color: var(--lk-text); font-size:.82rem;}
.lk-attach__info span{ color: var(--lk-text-3); font-size:.72rem;}

/* compose input */
.lk-compose{
  margin-top: 14px;
  display:flex; align-items:center; gap: 10px;
  padding: 10px 14px;
  background: rgba(255,255,255,.04);
  border: 1px solid var(--lk-border-2);
  border-radius: 12px;
}
.lk-compose__caret{
  width: 2px; height: 16px;
  background: var(--lk-accent);
  animation: lkBlink 1s steps(1) infinite;
}
@keyframes lkBlink{ 50%{ opacity: 0;} }
.lk-compose__placeholder{
  color: var(--lk-text-3); font-size:.85rem; flex:1;
}
.lk-compose__send{
  width: 30px; height: 30px; border-radius: 8px;
  display:grid; place-items:center;
  background: linear-gradient(135deg, var(--lk-accent), var(--lk-accent-2));
  color:#fff;
}
.lk-compose__send svg{ width:14px; height:14px;}

/* ---- Floating notification card ---- */
.lk-float{
  position:absolute;
  top: 78px; right: -38px;
  width: 230px;
  padding: 14px;
  background: linear-gradient(180deg, rgba(20,28,52,.95), rgba(15,21,40,.95));
  border: 1px solid rgba(34,211,167,.4);
  border-radius: 14px;
  backdrop-filter: blur(14px);
  box-shadow: 0 20px 50px rgba(0,0,0,.5), 0 0 0 1px rgba(34,211,167,.15);
  transform: translateZ(60px);
  animation: lkFloat 6s ease-in-out infinite;
  z-index: 2;
}
@keyframes lkFloat{
  0%,100%{ transform: translateZ(60px) translateY(0);}
  50%{ transform: translateZ(60px) translateY(-12px);}
}
.lk-float__head{
  display:flex; align-items:center; gap: 8px;
  font-size:.72rem; color: var(--lk-accent-2);
  letter-spacing: .14em; text-transform: uppercase; font-weight:700;
  margin-bottom: 10px;
}
.lk-float__head .live-dot{
  width:7px; height:7px; border-radius:50%;
  background: var(--lk-accent-2);
  box-shadow: 0 0 0 4px rgba(34,211,167,.18);
  animation: lkPulse 1.8s ease-in-out infinite;
}
.lk-float__row{
  display:flex; align-items:center; justify-content:space-between;
  font-size:.78rem; color: var(--lk-text-2); margin-bottom: 6px;
}
.lk-float__row strong{ color: var(--lk-text); }
.lk-float__bar{
  height: 6px; border-radius: 999px; background: rgba(255,255,255,.06);
  overflow:hidden; margin-bottom: 10px;
}
.lk-float__bar i{
  display:block; height:100%; width:0%;
  background: linear-gradient(90deg, var(--lk-accent), var(--lk-accent-2));
  border-radius: 999px;
  animation: lkFill 3.5s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes lkFill{
  0%{ width: 10%;}
  60%{ width: 84%;}
  100%{ width: 96%;}
}
.lk-float__foot{
  font-size:.7rem; color: var(--lk-text-3);
}

/* ---- Floating call card (left top) ---- */
.lk-call{
  position:absolute;
  top: -28px; left: -34px;
  display:flex; align-items:center; gap: 10px;
  padding: 10px 14px;
  background: linear-gradient(180deg, rgba(20,28,52,.95), rgba(15,21,40,.95));
  border: 1px solid rgba(79,125,245,.4);
  border-radius: 999px;
  backdrop-filter: blur(14px);
  box-shadow: 0 14px 40px rgba(0,0,0,.5);
  transform: translateZ(40px);
  animation: lkFloat 7s ease-in-out infinite reverse;
  z-index: 2;
}
.lk-call__icon{
  width: 28px; height: 28px; border-radius: 50%;
  display:grid; place-items:center;
  background: linear-gradient(135deg, var(--lk-accent), var(--lk-accent-2));
  color:#fff;
}
.lk-call__icon svg{ width:14px; height:14px; }
.lk-call__txt{ font-size:.78rem; color: var(--lk-text); font-weight: 500;}
.lk-call__txt span{ display:block; color: var(--lk-text-3); font-size:.68rem;}

/* data flow line across app */
.lk-flow{
  position:absolute; left: 0; right:0; top: 60px; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(34,211,167,.6), transparent);
  opacity:.45;
  animation: lkFlow 3.5s linear infinite;
}
@keyframes lkFlow{ 0%{ transform: translateX(-60%);} 100%{ transform: translateX(60%);} }

/* ============ RESPONSIVE ============ */
@media (max-width: 1080px){
  .lk-app__body{ grid-template-columns: 60px 170px 1fr; height: 440px; }
  .lk-float{ right: -10px; width: 200px; }
  .lk-call{ left: -10px; }
}
@media (max-width: 960px){
  .ns-linkup{ padding: 110px 20px 130px; }
  .ns-linkup__wrap{ grid-template-columns: 1fr; gap: 80px; text-align:center; }
  .ns-linkup__content{ margin: 0 auto; }
  .lk-features{ display:inline-flex; align-items:flex-start; text-align:left; }
  .lk-cta-row{ justify-content:center; }
  .lk-stage{ transform: rotateX(4deg) rotateY(-6deg); }
}
@media (max-width: 640px){
  .lk-app__body{ grid-template-columns: 56px 1fr; height: 420px; }
  .lk-channels{ display:none; }
  .lk-float{ right: -6px; width: 180px; top: 92px; }
  .lk-call{ left: -6px; top: -18px; }
  .lk-search{ display:none; }
  .lk-stage{ transform: none; }
  .lk-stage:hover{ transform: none; }
}
