/* ============================================================
   TESTIMONIALS — light terminal world · verified review wall
   ============================================================ */
.s-testi{background:#e9f1fe}
.testi{position:relative;max-width:1240px;margin:0 auto;padding:84px 24px 84px;overflow:hidden}
#testiRain{position:absolute;inset:0;z-index:0;pointer-events:none}
.ts-scan{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.55;
  background:repeating-linear-gradient(0deg,rgba(37,99,235,.028) 0 1px,transparent 1px 3px)}
.testi > *{position:relative;z-index:1}

/* shell */
.ts-shell{display:flex;align-items:center;gap:2px;margin:-24px 0 36px;padding:0 2px 14px;
  font-family:ui-monospace,Menlo,monospace;font-size:12.5px;font-weight:700;letter-spacing:.02em;
  border-bottom:1px solid rgba(37,99,235,.18);
  mask-image:linear-gradient(90deg,#000 82%,transparent);
  -webkit-mask-image:linear-gradient(90deg,#000 82%,transparent)}
.ts-shell .hu{color:#0f766e}
.ts-shell .hs{color:#64748b}
.ts-shell .hp{color:#1d4ed8}
.ts-caret{display:inline-block;width:8px;height:15px;margin-left:9px;background:#2563eb;
  box-shadow:0 0 10px rgba(37,99,235,.5);animation:caretBlink 1.1s steps(1) infinite}
.ts-prog{margin-left:18px;font-size:10.5px;font-weight:800;letter-spacing:.1em;color:#0f766e}
.ts-shell .hr{margin-left:auto;font-size:10.5px;color:#00b67a;letter-spacing:.14em}

/* head */
.testi-head{text-align:center;margin-bottom:42px}
.ts-h2{font-family:var(--font-d);font-size:clamp(30px,3.4vw,44px);font-weight:800;letter-spacing:-.024em;color:#0b1730}
.ts-h2 .rot{font-size:clamp(24px,2.9vw,38px)}
.ts-h2 .bt{color:#2563eb}
.ts-h2 .ts-word{font-family:ui-monospace,Menlo,monospace;font-weight:800;color:#1d4ed8;
  background:linear-gradient(180deg,transparent 58%,rgba(56,189,248,.3) 58%)}
.ts-h2 .rot-caret{display:inline-block;width:9px;height:26px;margin-left:5px;vertical-align:-3px;background:#2563eb;
  box-shadow:0 0 10px rgba(37,99,235,.5);animation:caretBlink 1.1s steps(1) infinite}
.ts-sub{margin:14px auto 0;max-width:520px;font-size:16px;line-height:1.6;color:#40557e}
.ts-log{margin:22px auto 0;display:inline-flex;align-items:center;gap:8px;
  font-family:ui-monospace,Menlo,monospace;font-size:12.5px;font-weight:700;color:#1d4ed8}
.ts-log .pr{color:#2563eb;font-weight:800}
.ts-ct{display:inline-block;width:7px;height:13px;background:#2563eb;box-shadow:0 0 8px rgba(37,99,235,.5);
  animation:caretBlink 1.1s steps(1) infinite}
.ts-log b{margin-left:10px;color:#059669;opacity:0;transition:opacity .4s ease}
.ts-log b.in{opacity:1}

/* open-air drifting streams */
.tstream{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:8px 44px;
  height:min(76vh,780px);overflow:hidden;
  mask-image:linear-gradient(180deg,transparent 0%,#000 9%,#000 91%,transparent 100%);
  -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 9%,#000 91%,transparent 100%)}
@media (max-width:1020px){.tstream{grid-template-columns:repeat(2,1fr)}.tcol.c3{display:none}}
@media (max-width:640px){.tstream{grid-template-columns:1fr}.tcol.c2{display:none}}
.tcol{position:relative;overflow:visible}
.tdrift{display:flex;flex-direction:column;will-change:transform}
.tcol.c1 .tdrift{animation:tDrift 46s linear infinite}
.tcol.c2 .tdrift{animation:tDrift 58s linear infinite reverse}
.tcol.c3 .tdrift{animation:tDrift 52s linear infinite}
.tcol:hover .tdrift{animation-play-state:paused}
@keyframes tDrift{to{transform:translateY(-50%)}}

.titem{position:relative;padding:27px 4px 27px 23px;transition:transform .3s var(--ease-pop)}
.titem::before{content:"";position:absolute;left:0;top:26px;bottom:26px;width:2px;border-radius:2px;
  background:linear-gradient(180deg,#38bdf8,rgba(37,99,235,.06));opacity:.65;transition:opacity .3s ease}
.titem:hover{transform:translateX(4px)}
.titem:hover::before{opacity:1;box-shadow:0 0 12px rgba(56,189,248,.5)}
.ti-path{font-family:ui-monospace,Menlo,monospace;font-size:10px;font-weight:700;color:#5b74a4;margin-bottom:9px}
.ti-path b{color:#059669;margin-left:4px}
.tc-stars{display:flex;gap:4px;margin-bottom:10px}
.tc-stars svg{width:15px;height:15px;overflow:visible}
.tc-stars path{fill:url(#starGrad);fill-opacity:.95;stroke:url(#starGrad);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
  filter:drop-shadow(0 2px 6px rgba(37,99,235,.35))}
.ti-q{font-size:15.25px;line-height:1.7;color:#2a3a58;margin:0 0 14px}
.ti-q em{font-style:normal;font-weight:800;color:#0b1730;
  background:linear-gradient(180deg,transparent 60%,rgba(56,189,248,.32) 60%)}
.ti-who{display:flex;align-items:center;gap:10px}
.ti-who img{width:36px;height:36px;border-radius:50%;object-fit:cover;flex:none;
  border:1px solid rgba(37,99,235,.25);box-shadow:0 0 0 3px rgba(37,99,235,.08)}
.ti-who span{display:flex;flex-direction:column;gap:1px;min-width:0}
.ti-who b{font-size:12.5px;font-weight:800;color:#0b1730}
.ti-who i{font-style:normal;font-size:10.5px;color:#5b6b8c}
.ti-who u{margin-left:auto;text-decoration:none;font-family:ui-monospace,Menlo,monospace;
  font-size:9.5px;font-weight:800;color:#00b67a;flex:none;padding-right:6px}

@media (prefers-reduced-motion:reduce){
  .ts-caret,.ts-ct,.ts-h2 .rot-caret{animation:none}
  .tdrift{animation:none!important}
  .tstream{height:auto;mask-image:none;-webkit-mask-image:none}
  .tdrift > .titem:nth-child(n+4){display:none}
  .ts-log b{opacity:1}
}

/* ---------- machine layer: receipts · beam · raw flicker ---------- */
.ts-receipts{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin:0 0 20px;min-height:30px}
.tr-label{font-family:ui-monospace,Menlo,monospace;font-size:11px;font-weight:800;color:#3b5b94;padding-top:5px;flex:none}
.tr-label i{font-style:normal;color:#2563eb}
.tr-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tr-chip{font-family:ui-monospace,Menlo,monospace;font-size:10.5px;font-weight:800;color:#0f766e;
  padding:5px 11px;border-radius:99px;white-space:nowrap;
  border:1px solid rgba(5,150,105,.35);
  background:linear-gradient(180deg,rgba(209,250,229,.6),rgba(236,253,245,.3));
  opacity:0;transform:translateY(14px) scale(.8)}
.tr-chip.in{animation:trPop .5s var(--ease-pop) forwards}
@keyframes trPop{0%{opacity:0;transform:translateY(14px) scale(.8)}60%{opacity:1;transform:translateY(-2px) scale(1.05)}100%{opacity:1;transform:none}}
.tr-chip b{color:#059669;margin-right:4px}

.titem.flash em{background:linear-gradient(180deg,transparent 55%,rgba(56,189,248,.65) 55%);
  color:#04263f;text-shadow:0 0 14px rgba(56,189,248,.5);transition:background .25s ease,color .25s ease}
.titem.flash .ti-who img{box-shadow:0 0 0 3px rgba(5,150,105,.35),0 0 16px rgba(5,150,105,.5);
  border-color:rgba(5,150,105,.6);transition:box-shadow .3s ease,border-color .3s ease}
.titem.flash .ti-path b{text-shadow:0 0 10px rgba(5,150,105,.8)}

.ti-raw{position:absolute;inset:0;z-index:2;display:none;padding:20px 6px 20px 22px;
  font-family:ui-monospace,Menlo,monospace;font-size:10.75px;line-height:1.7;color:#1d4ed8;
  background:#e9f1fe;white-space:pre-wrap;overflow:hidden}
.ti-raw b{color:#059669;font-weight:800}
.titem.raw .ti-raw{display:block;animation:rawGlitch .38s steps(3) both}
@keyframes rawGlitch{
  0%{clip-path:inset(0 0 62% 0);transform:translateX(-3px)}
  33%{clip-path:inset(30% 0 18% 0);transform:translateX(2px)}
  66%{clip-path:inset(8% 0 0 0);transform:translateX(-1px)}
  100%{clip-path:inset(0 0 0 0);transform:none}}

@media (prefers-reduced-motion:reduce){
  .tr-chip{opacity:1;transform:none}
  .tr-chip.in{animation:none}
  .titem.raw .ti-raw{display:none}
}
