/* ==========================================================================
   JASTAR — product detail / listing stylesheet
   Companion to assets/style.css (shares its :root variables); product-page styles only.
   ========================================================================== */

/* ---------- breadcrumb ---------- */
.crumb{padding:16px 0 0;font-size:13.5px;color:var(--gray)}
.crumb a{color:var(--teal);text-decoration:none}
.crumb a:hover{text-decoration:underline}
.crumb span{margin:0 7px;opacity:.6}

/* ---------- product overview (gallery left, info right) ---------- */
.pdp{padding:26px 0 66px;background:linear-gradient(180deg,#D9EBE2 0%,#CCE0D6 100%)}
.pdp-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:44px;align-items:start}

/* gallery */
.gal-main{position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}
.gal-main img{width:100%;height:auto;display:block;aspect-ratio:1/1;object-fit:cover}
.gal-badge{position:absolute;top:14px;left:14px;background:rgba(23,121,110,.94);color:#fff;font-size:12px;font-weight:600;letter-spacing:.04em;padding:6px 11px;border-radius:999px}
.gal-thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-top:12px}
.gal-thumbs button{padding:0;border:1.5px solid var(--line);background:#fff;border-radius:10px;overflow:hidden;cursor:pointer;transition:.2s;line-height:0}
.gal-thumbs button:hover{border-color:#9dc6bf}
.gal-thumbs button.on{border-color:var(--teal);box-shadow:0 0 0 2.5px rgba(23,121,110,.16)}
.gal-thumbs img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block}

/* info column */
.pdp-info h1{font-size:clamp(24px,2.9vw,36px);margin-bottom:12px}
.pdp-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.chip{font-size:12.5px;font-weight:600;letter-spacing:.03em;padding:5px 11px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--teal-dark)}
.chip.solid{background:var(--teal);border-color:var(--teal);color:#fff}
.chip.amber{background:#FDF2E3;border-color:#F0CE9E;color:#9A5F14}

.pdp-lead{color:var(--body);font-size:15.5px;line-height:1.65;margin-bottom:20px}

/* quick facts */
.quick{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:20px}
.quick dl{display:grid;grid-template-columns:auto 1fr;margin:0}
.quick dt,.quick dd{margin:0;padding:11px 16px;font-size:14px;border-bottom:1px solid #EDF3F1}
.quick dt{color:var(--gray);background:#FAFCFB;white-space:nowrap}
.quick dd{color:var(--ink);font-weight:500}
.quick dl>:nth-last-child(-n+2){border-bottom:0}

.pdp-cta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.pdp-cta .btn{flex:1 1 auto;min-width:170px;justify-content:center;text-align:center}
.pdp-note{font-size:13px;color:var(--gray);line-height:1.6}
.pdp-note b{color:var(--ink)}

/* certification badges */
.certs{display:flex;gap:10px;margin:18px 0 0;flex-wrap:wrap}
.certs span{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--teal-dark);background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 13px}
.certs svg{width:15px;height:15px;flex:none}

/* ---------- generic sections ---------- */
.psection{padding:66px 0;background:linear-gradient(180deg,#D9EBE2 0%,#CCE0D6 100%)}
.psection.alt{background:linear-gradient(180deg,#C6DED3 0%,#B6D1C5 100%)}
.psection.white{background:#fff}
.psection h2{font-size:clamp(22px,2.6vw,30px);margin-bottom:12px}
.psection .sub{color:var(--body);max-width:760px;margin-bottom:34px;font-size:15px}

/* feature grid */
.feats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
/* with 4 feature images only: centre them 2x2 instead of a 3+1 orphan row;
   narrow screens keep the single column */
@media (min-width:761px){.feats.f4{grid-template-columns:repeat(2,1fr);max-width:900px;margin:0 auto}}
.feat{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
.feat img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;border-bottom:1px solid #EDF3F1}
.feat-body{padding:16px 17px 18px}
.feat-body h3{font-size:15.5px;margin-bottom:7px}
.feat-body p{font-size:13.8px;color:var(--body);line-height:1.6;margin:0}

/* applications */
.scenes{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.scene{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#fff}
.scene img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.scene figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 16px 14px;background:linear-gradient(180deg,rgba(12,40,36,0) 0%,rgba(12,40,36,.82) 100%);color:#fff;font-size:14.5px;font-weight:600}

/* specification tables */
.spec-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;font-size:14.5px}
/* Do NOT remove the left padding on caption.
   The overflow:hidden on .spec-table exists so border-radius can clip the cell backgrounds
   (remove it and the rounded corners stop working entirely - measured). But Blink applies
   that radius to the whole table wrapper box, caption included, so the caption's top-left
   corner gets clipped as well: the first letter (E / W) loses a small notch at its top-left,
   1-5 px deep and worst near the top of the glyph. Leaving >= the corner radius (14px) of
   horizontal space clears it; 18px also lines the caption up with the cell content.
   Do not put this back to padding:0 0 12px. */
.spec-table caption{text-align:left;padding:0 0 12px 18px;color:var(--gray);font-size:13.5px}
.spec-table th,.spec-table td{padding:13px 18px;text-align:left;border-bottom:1px solid #EDF3F1;vertical-align:top}
.spec-table thead th{background:var(--teal-dark);color:#fff;font-size:13px;letter-spacing:.05em;text-transform:uppercase;font-weight:600}
.spec-table tbody th{width:44%;color:var(--gray);font-weight:500;background:#FAFCFB}
.spec-table tbody td{color:var(--ink);font-weight:500}
.spec-table tbody tr:nth-child(even) th{background:#F5F9F8}
.spec-table tbody tr:last-child th,.spec-table tbody tr:last-child td{border-bottom:0}

/* two-column spec layout */
.spec-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}

/* customisation / OEM note */
.oem-box{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.oem-item{background:#fff;border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:12px;padding:18px 20px}
.oem-item h3{font-size:15.5px;margin-bottom:8px}
.oem-item p{font-size:14px;color:var(--body);line-height:1.65;margin:0}
.oem-item .tag{display:inline-block;margin-top:10px;font-size:12.5px;font-weight:700;color:#9A5F14;background:#FDF2E3;border-radius:6px;padding:4px 9px}

/* samples & price protection */
.policy-box{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.policy-item{background:#fff;border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:12px;padding:18px 20px}
.policy-item h3{font-size:15.5px;margin-bottom:8px}
.policy-item p{font-size:14px;color:var(--body);line-height:1.65;margin:0}
.policy-item .tag{display:inline-block;margin-top:10px;font-size:12.5px;font-weight:700;color:#0E5F56;background:#E4F2EE;border-radius:6px;padding:4px 9px}
.policy-note{margin-top:22px;font-size:14px;color:var(--body)}

/* detail graphics */
.detail-wrap{max-width:790px;margin:0 auto}
.detail-wrap img{width:100%;height:auto;display:block;margin:0 auto}

/* enquiry bar */
.pdp-inquiry{background:linear-gradient(180deg,#B0CCC1 0%,#9FBEB2 100%);padding:60px 0;text-align:center}
.pdp-inquiry h2{margin-bottom:12px}
.pdp-inquiry p{color:#33484242;color:#31463F;max-width:640px;margin:0 auto 26px;font-size:15.5px}
.pdp-inquiry .btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* ---------- catalogue grid ---------- */
.plist{padding:30px 0 76px;background:linear-gradient(180deg,#D9EBE2 0%,#CCE0D6 100%);min-height:60vh}
/* 4 cards per row on desktop (16 models = 4 x 4). Card is intentionally compact:
   at ~270px width the long product titles need clamping so every row lines up. */
.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-items:stretch}
.gcard{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 1px 2px rgba(16,54,48,.05),0 10px 26px -18px rgba(16,54,48,.28);transition:box-shadow .25s,transform .25s}
.gcard:hover{box-shadow:0 20px 44px -20px rgba(23,121,110,.42);transform:translateY(-2px)}
.gcard-img{display:block;position:relative;aspect-ratio:1/1;background:#fff;border-bottom:1px solid #EDF3F1;overflow:hidden}
.gcard-img img{width:100%;height:100%;object-fit:cover;transition:transform .45s ease}
.gcard:hover .gcard-img img{transform:scale(1.05)}
.gcard-tag{position:absolute;top:9px;left:9px;background:rgba(23,121,110,.94);color:#fff;font-size:10.5px;font-weight:600;padding:4px 8px;border-radius:999px;letter-spacing:.02em}
.gcard-body{padding:13px 15px 15px;display:flex;flex-direction:column;flex:1}
.gcard-model{font-size:11.5px;font-weight:700;letter-spacing:.07em;color:var(--amber);margin-bottom:5px;text-transform:uppercase}
.gcard-body h3{font-size:14.5px;line-height:1.4;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.gcard-body h3 a{color:inherit;text-decoration:none}
.gcard-body h3 a:hover{color:var(--teal)}
.gcard-spec{font-size:12.5px;color:var(--body);line-height:1.55;margin-bottom:12px;flex:1;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.gcard-spec b{color:var(--ink);font-weight:600}
.gcard-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #EDF3F1;padding-top:11px}
.gcard-moq{font-size:11.5px;color:var(--gray);white-space:nowrap}
.gcard-moq b{display:block;color:var(--ink);font-size:12.5px;font-weight:600}
.gcard .btn{flex:none}
.gcard .btn-sm{padding:8px 12px;font-size:12.5px;white-space:nowrap}

/* placeholder card */
.gcard.placeholder{opacity:.62;border-style:dashed;box-shadow:none;background:#F6FAF9}
.gcard.placeholder .gcard-img{display:flex;align-items:center;justify-content:center;background:#EFF6F4}
.gcard.placeholder .gcard-img span{color:var(--gray);font-size:13px;font-weight:600;letter-spacing:.03em}

/* ---------- category groups on /products/ ---------- */
/* The catalogue mirrors the four categories on the homepage so the strips on the
   homepage cards can deep-link into the matching group. */
.plist-head{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;flex-wrap:wrap;margin-bottom:26px}
.plist-head h2{margin-bottom:8px}
.plist-head .sub{color:var(--body);font-size:15px;line-height:1.65;max-width:760px;margin:0}
.plist-count{
  font-size:12.5px;font-weight:600;color:var(--teal);background:var(--teal-light);
  border:1px solid #CBE3DE;padding:6px 14px;border-radius:999px;white-space:nowrap
}
.plist-hold{
  border:1.5px dashed #C4D6D2;border-radius:var(--r);background:#F5FAF9;
  padding:30px 30px;display:flex;align-items:center;justify-content:space-between;
  gap:26px;flex-wrap:wrap
}
.plist-hold p{font-size:14.5px;color:var(--body);line-height:1.65;max-width:660px;margin:0}
.plist-hold .btn{flex:0 0 auto}
.plist-group + .plist-group{margin-top:58px}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .pdp-grid{grid-template-columns:1fr;gap:30px}
  .feats{grid-template-columns:repeat(2,1fr)}
  .pgrid{grid-template-columns:repeat(3,1fr)}
  .gal-thumbs{grid-template-columns:repeat(6,1fr)}
}
@media (max-width:760px){
  .pdp{padding:18px 0 48px}
  .psection{padding:48px 0}
  .plist-head{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:20px}
  .plist-hold{padding:24px 20px}
  .plist-hold .btn{width:100%}
  .feats,.scenes,.oem-box,.policy-box,.spec-cols{grid-template-columns:1fr}
  .pgrid{grid-template-columns:repeat(2,1fr)}
  .gal-thumbs{grid-template-columns:repeat(4,1fr)}
  .quick dl{grid-template-columns:auto 1fr}
  .pdp-cta .btn{min-width:0;flex:1 1 100%}

  /* spec table -> cards on small screens (one card per row, label above value) */
  .spec-table thead{display:none}
  .spec-table,.spec-table tbody,.spec-table tr,.spec-table th,.spec-table td{display:block;width:auto}
  .spec-table{border:0;background:transparent}
  .spec-table tr{background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:12px;overflow:hidden}
  .spec-table tbody th{background:transparent;padding:12px 15px 4px;font-size:13px;color:var(--gray);border-bottom:0}
  .spec-table tbody td{padding:0 15px 13px;border-bottom:0;font-weight:500}
  .spec-table tbody tr:nth-child(even) th{background:transparent}
}
@media (max-width:560px){
  .pgrid{grid-template-columns:1fr}
  .gcard-body h3{-webkit-line-clamp:2}
  .gcard-spec{-webkit-line-clamp:3}
}

/* ---------- related models (added 2026-10-03) ---------- */
.related{padding:30px 0 4px}
.related h2{font-size:19px;margin:0 0 14px}
.rel-list{list-style:none;margin:0;padding:0;display:grid;
          grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:9px 16px}
.rel-list li{margin:0}
.rel-list a{display:block;padding:9px 13px;border:1px solid var(--line);border-radius:9px;
            text-decoration:none;color:var(--teal);font-size:13.5px;background:#fff;
            white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:.16s}
.rel-list a:hover{border-color:var(--teal);background:#F2F8F6}
.rel-list b{color:var(--ink);margin-right:7px}
.rel-list a.rel-all{border-style:dashed;color:var(--gray);background:transparent}
.rel-list a.rel-all:hover{color:var(--teal);border-color:var(--teal)}
@media (max-width:640px){.rel-list{grid-template-columns:1fr 1fr}}
@media (max-width:430px){.rel-list{grid-template-columns:1fr}}
