/* ============================================================
   Testimonials — verified cadet stories
   The review cards are populated from /home/reviews (Alpine).
   Legacy hook .cadet-img is preserved.
   ============================================================ */

/* — review grid — */
.ts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:1120px;margin:0 auto}
.ts-card{position:relative;display:flex;flex-direction:column;padding:26px 26px 24px;border-radius:20px;
  border:1px solid var(--hb-border);background:linear-gradient(180deg,#FFFDF6,var(--hb-cream) 62%,#F6EEDB);
  box-shadow:0 22px 44px -28px rgba(29,22,28,.32),inset 0 1px 0 #fff;
  transition:transform .16s ease,border-color .16s ease}
.ts-card:hover{transform:translateY(-2px);border-color:#B08542}
.ts-quotemark{position:absolute;top:10px;right:22px;font:800 74px/1 var(--hb-display);
  color:rgba(226,177,93,.34);pointer-events:none;user-select:none}

/* — cadet identity — */
.ts-head{display:flex;gap:16px;align-items:center;margin-bottom:14px}
.ts-photo{flex:none;width:74px;height:74px;border-radius:50%;overflow:hidden;display:block;
  border:2.5px solid var(--hb-gold);background:#F0E6CE;
  box-shadow:0 10px 20px -12px rgba(74,55,20,.6),inset 0 1px 0 rgba(255,255,255,.5)}
.ts-photo img{width:100%;height:100%;object-fit:cover;display:block}
.ts-who{display:flex;flex-direction:column;gap:4px;min-width:0}
.ts-who b{font:800 16px/1.25 var(--hb-display);color:var(--hb-ink);text-transform:capitalize}
.ts-tag{display:inline-block;align-self:flex-start;padding:4px 11px;border-radius:999px;font-style:normal;
  font:700 9.4px/1 var(--hb-text);letter-spacing:.13em;text-transform:uppercase;color:#3F2F10;
  background:linear-gradient(180deg,#F0CE83,var(--hb-gold) 58%,#C89440);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -1px 0 rgba(0,0,0,.18)}
.ts-date{font:600 11.5px/1 var(--hb-text);color:var(--hb-muted)}

/* — stars — */
.ts-stars{letter-spacing:4px;font-size:15px;color:#C89440;margin-bottom:12px;
  text-shadow:0 1px 0 rgba(255,255,255,.6)}

/* — quote — */
.ts-review{margin:0;font:500 14.6px/1.8 var(--hb-text);font-style:italic;color:var(--hb-body);
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;
  word-break:break-word}
.ts-more{margin-top:12px;align-self:flex-start;padding:8px 16px;border:0;border-radius:999px;cursor:pointer;
  font:700 12px/1 var(--hb-text);color:#FCF7EA;
  background:linear-gradient(180deg,#8C3B32,var(--hb-burg) 58%,#5A1F1A);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 0 rgba(0,0,0,.28),
    0 8px 14px -9px rgba(90,31,26,.6);transition:transform .15s ease}
.ts-more:hover{transform:translateY(-1px)}
.ts-more:focus-visible{outline:3px solid rgba(226,177,93,.8);outline-offset:2px}

/* — question plates — */
.ts-qs{list-style:none;margin:0 auto;padding:0;max-width:940px;
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ts-qs li{position:relative;padding:15px 18px 15px 44px;border-radius:14px;
  border:1px solid var(--hb-border);background:linear-gradient(180deg,#FFFDF6,#F7EFDC);
  box-shadow:0 12px 24px -18px rgba(29,22,28,.28),inset 0 1px 0 #fff;
  font:600 13.6px/1.5 var(--hb-text);color:var(--hb-body)}
.ts-qs li::before{content:"?";position:absolute;left:15px;top:50%;transform:translateY(-50%);
  width:20px;height:20px;border-radius:50%;display:grid;place-items:center;
  font:800 11px/1 var(--hb-display);color:#3F2F10;
  background:radial-gradient(circle at 35% 30%,#F3D58C,var(--hb-gold) 55%,#B08542)}
.ts-qs--gold li{background:linear-gradient(180deg,#FBF3E0,#F2E4C2)}

/* — final lines — */
.ts-final{max-width:640px;margin:0 auto 24px;text-align:center}
.ts-final p{margin:0 0 12px;font:500 15px/1.8 var(--hb-text);color:rgba(252,247,234,.86)}

/* — CTA variants — */
.hb-btn.hbx-desk{color:#fff;background:linear-gradient(180deg,#35815B,#2C6A47 55%,#224F38);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -2px 0 rgba(0,0,0,.28),
    0 10px 18px -9px rgba(44,106,71,.55)}
.hb-btn.hbx-desk:hover{color:#fff;transform:translateY(-1px)}
.hb-btn.hbx-app{color:#FCF7EA;background:linear-gradient(180deg,#8A6A38,#6E5327 55%,#4A3714);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -2px 0 rgba(0,0,0,.3),
    0 10px 18px -9px rgba(74,55,20,.6)}
.hb-btn.hbx-app:hover{color:#FCF7EA;transform:translateY(-1px)}

/* — loading skeletons — */
.hb-skeleton{background:linear-gradient(90deg,#F2E9D4 25%,#F8F1E0 50%,#F2E9D4 75%);
  background-size:200% 100%;animation:hbShim 1.4s linear infinite;border-radius:8px}
.hb-skeleton--text{height:.95em;margin:8px 0}
@keyframes hbShim{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.hb-skeleton{animation:none}}

@media (max-width:960px){
  .ts-grid{grid-template-columns:1fr}
  .ts-qs{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:600px){
  .ts-qs{grid-template-columns:1fr}
  .ts-card{padding:22px 20px 20px}
  .ts-photo{width:62px;height:62px}
  .ts-quotemark{font-size:58px;top:6px;right:16px}
}
