/* ==========================================================================
   CTPL · product-page.css
   The shared template for every DECONTI product-range page.

   Load order on a product page:
     1. css/global.css        tokens, base elements, site chrome, RFQ band
     2. css/components.css    cross-page patterns + dark-hero furniture
     3. css/product-page.css  this file: the product-page template
     4. <page>.css            per-page accent and anything genuinely unique

   The template is deliberately rigid: a product page should only ever need to
   set --pp-accent and supply content. Anything a page adds beyond that is a
   signal the template should grow instead.

   Page skeleton
     <section class="pp-hero surface-dark">   breadcrumb, title, lead, pills, CTAs,
                                              plus the section-contents panel.
                                              No eyebrow: the breadcrumb already
                                              places the page, and the catalogue's
                                              section numbers are internal only.
     <section class="block pp-body">          one or more .pp-group blocks,
                                              on the paper tint so cards read
       <div class="pp-group">                 optional sub-category heading
         <div class="pgrid"> .pcard           card grid   (name + configuration)
         <table class="spec-table">           spec table  (product / indication / composition)
         <ul class="pp-list">                 plain list  (variants, options)
     <section class="block alt">              .range-nav: the sibling categories
     <div id="site-rfq">                      shared RFQ card

   Contents
     1. Per-page accent
     2. Hero
     3. Section groups
     4. Product card grid
     5. Spec table
     6. Plain list
     7. Breakpoints
   ========================================================================== */

/* --------------------------------------------------------------------------
   2. Hero

   Follows the Q-Raider / DECONTI standard: a two-column dark hero with the
   copy on the left and a glassy aside card on the right. The aside here is
   the section's contents, so it doubles as in-page navigation and stays
   meaningful on every product page.
   -------------------------------------------------------------------------- */
.pp-hero{border-bottom:1px solid rgba(255,255,255,.1)}
.pp-hero .wrap{position:relative;z-index:2;padding:64px 26px 78px}
.pp-hero .hero-glow{position:absolute;width:620px;height:620px;border-radius:50%;
  background:radial-gradient(circle,var(--pp-accent-soft),rgba(46,158,138,.10) 50%,transparent 70%);
  top:-220px;right:-120px;pointer-events:none;filter:blur(40px)}
.pp-hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}

/* Breadcrumb: spans the full width above the grid */
.crumb{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-family:var(--fm);
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#8fa2cd;margin-bottom:1.9rem}
.crumb a{color:#c3d0ee}
.crumb a:hover{color:var(--mint)}
.crumb .sep{opacity:.45}
.crumb .here{color:var(--mint)}

/* No eyebrow on product pages: the breadcrumb already says where you are, and
   the catalogue's section numbers are internal reference only. The h1 is the
   first thing under the breadcrumb. */
.pp-hero h1{color:#fff;font-size:2.75rem;font-weight:700;margin:0 0 1.2rem;letter-spacing:-.03em;line-height:1.14}
/* Dark hero: mint highlight, no underline (overrides .hl in components.css) */
.pp-hero h1 .hl{color:var(--mint)}
.pp-hero h1 .hl::after{content:none}
.pp-hero p.lead{font-size:1.14rem;color:#c4d3f2;line-height:1.68;max-width:38rem;margin-bottom:1.9rem}
.pp-hero p.lead b{color:#fff;font-weight:600}

/* --- Hero aside: what this page contains ------------------------------------
   Same glass treatment as the Q-Raider mission badge. The header runs the badge
   and figure on one line so the rows get the vertical space; each row is a
   two-line entry (group, what it covers, count) that links to the group below. */
.pp-panel{position:relative;background:linear-gradient(160deg,rgba(255,255,255,.09),rgba(255,255,255,.03));
  border:1px solid rgba(255,255,255,.16);border-radius:22px;padding:28px 30px;
  box-shadow:var(--shadow-lg);backdrop-filter:blur(6px);overflow:hidden}

/* Header: badge beside the figure rather than stacked above it */
.pp-panel .p-head{display:flex;align-items:center;gap:16px;margin-bottom:14px}
.pp-panel .p-badge{width:52px;height:52px;border-radius:14px;background:rgba(159,210,198,.14);
  border:1px solid rgba(159,210,198,.3);display:grid;place-items:center;color:var(--mint);flex:none}
.pp-panel .p-badge svg{width:26px;height:26px}
.pp-panel .t{font-family:var(--fm);font-size:.66rem;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mint)}
.pp-panel .v{font-family:var(--fd);font-weight:700;font-size:2.1rem;color:#fff;letter-spacing:-.03em;
  line-height:1;margin:.3rem 0 0;display:flex;align-items:baseline;gap:.5rem}
.pp-panel .v small{font-family:var(--fb);font-size:.9rem;font-weight:500;color:#c3d0ee;letter-spacing:0}
.pp-panel .d{font-size:.9rem;line-height:1.55;color:#c3d0ee}

/* Rows */
.pp-panel .rows{margin-top:16px;border-top:1px solid rgba(255,255,255,.14);padding-top:12px;display:grid;gap:2px}
.pp-panel .p-row{display:flex;align-items:center;gap:.8rem;padding:.62rem .6rem;margin:0 -.6rem;
  border-radius:11px;transition:.2s var(--ease)}
.pp-panel .p-row:hover{background:rgba(255,255,255,.07)}
.pp-panel .p-row .r-ic{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.12);display:grid;place-items:center;color:var(--mint);flex:none}
.pp-panel .p-row .r-ic svg{width:17px;height:17px}
.pp-panel .p-row .r-txt{display:flex;flex-direction:column;min-width:0}
.pp-panel .p-row strong{font-family:var(--fd);font-size:.92rem;font-weight:600;color:#eaf0ff;line-height:1.3}
.pp-panel .p-row em{font-style:normal;font-size:.76rem;color:#93a4cc;line-height:1.35}
.pp-panel .p-row:hover strong{color:#fff}
.pp-panel .p-row b{margin-left:auto;font-family:var(--fm);font-size:.9rem;font-weight:700;
  color:var(--mint);flex:none;padding-left:.5rem}

/* Footer: one line of provenance, closes the card off */
.pp-panel .p-foot{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.14);
  font-family:var(--fm);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:#8fa2cd}

/* --------------------------------------------------------------------------
   3. Product body and groups

   The body sits on the paper tint rather than plain white. White cards on a
   white page dissolve at rest and only appear on hover; against the tint they
   read as distinct surfaces without needing heavier borders or shadows.

   A product page is a sequence of groups. Pages with a single group simply
   omit the heading.
   -------------------------------------------------------------------------- */
.pp-body{background:var(--paper);border-bottom:1px solid var(--line)}

.pp-group{margin-bottom:54px;scroll-margin-top:96px}
.pp-group:last-child{margin-bottom:0}
.pp-group-head{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:22px;
  padding-bottom:14px;border-bottom:1px solid var(--border)}
.pp-group-head h3{font-size:1.35rem;font-weight:700;letter-spacing:-.02em}
/* Count tag, sits immediately after the group title */
.pp-group-head .count{flex:none;font-family:var(--fm);font-size:.66rem;font-weight:500;
  letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--blue);
  padding:.3rem .65rem;border-radius:99px;line-height:1.5}

/* --------------------------------------------------------------------------
   4. Product card grid
   Name + configuration. Used by CSSD Equipment and SS Furniture.
   -------------------------------------------------------------------------- */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
/* Resting state does the work: a defined edge and a tight contact shadow, so
   the card reads as a raised surface before any interaction. */
.pcard{position:relative;display:flex;flex-direction:column;gap:.7rem;background:#fff;
  border:1px solid var(--border);border-radius:18px;padding:24px 22px;
  box-shadow:0 1px 2px rgba(15,35,90,.06),0 6px 18px rgba(15,35,90,.05);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)}
.pcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:#b9cbe9}
.pcard .p-ic{width:42px;height:42px;border-radius:12px;background:var(--mint-soft);color:var(--teal);
  display:grid;place-items:center;flex:none}
.pcard .p-ic svg{width:21px;height:21px}
.pcard h4{font-family:var(--fd);font-size:1.02rem;font-weight:600;line-height:1.3;letter-spacing:-.01em}
.pcard p{font-size:.89rem;color:var(--ink-soft);line-height:1.58}
.pcard .p-meta{margin-top:auto;padding-top:.7rem;border-top:1px dashed #cfdaee;
  font-family:var(--fm);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--pp-accent)}

/* --------------------------------------------------------------------------
   5. Spec table
   Product / indication / composition. Used by Dialysis and Infection
   Prevention. Collapses into stacked cards below 720px, with each cell
   labelled from its data-label attribute.
   -------------------------------------------------------------------------- */
.spec-wrap{border:1px solid var(--border);border-radius:18px;overflow:hidden;background:#fff;
  box-shadow:0 1px 2px rgba(15,35,90,.06),0 6px 18px rgba(15,35,90,.05)}
.spec-table{width:100%;border-collapse:collapse;font-size:.9rem;table-layout:fixed}
/* Name stays narrow, composition takes the slack — it is always the longest cell. */
.spec-table th:nth-child(1),.spec-table td:nth-child(1){width:22%}
.spec-table th:nth-child(2),.spec-table td:nth-child(2){width:31%}
/* Colour carries the hierarchy: a tinted header, the product name in the page
   accent, the indication in full-strength ink, and only the composition — the
   reference data — held back in the muted tone. */
.spec-table thead th{background:var(--paper-2);font-family:var(--fm);font-size:.68rem;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink);text-align:left;
  padding:14px 20px;border-bottom:1px solid var(--border)}
.spec-table td{padding:16px 20px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink);line-height:1.55}
.spec-table tbody tr:last-child td{border-bottom:0}
/* No row hover: the table is reference data, not a set of targets. */
.spec-table .p-name{font-family:var(--fd);font-weight:700;font-size:.96rem;color:var(--pp-accent);white-space:nowrap}
.spec-table .p-comp{font-size:.84rem;color:var(--ink-soft)}

/* --------------------------------------------------------------------------
   6. Plain list
   Grouped variants and options that carry no separate description.
   -------------------------------------------------------------------------- */
.pp-list{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pp-list li{display:flex;align-items:flex-start;gap:.6rem;background:#fff;border:1px solid var(--border);
  border-radius:12px;padding:13px 16px;font-size:.92rem;color:var(--ink);
  box-shadow:0 1px 2px rgba(15,35,90,.05)}
.pp-list li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--teal);flex:none;margin-top:.55rem}

/* --------------------------------------------------------------------------
   7. Breakpoints
   -------------------------------------------------------------------------- */
@media(max-width:1024px){
  /* Hero collapses to one column, aside drops below the copy. */
  .pp-hero .wrap{padding:52px 26px 60px}
  .pp-hero-grid{grid-template-columns:1fr;gap:38px}
  .pp-hero h1{font-size:2.4rem}
  .pp-hero p.lead{max-width:none}
  .pgrid{grid-template-columns:repeat(2,1fr)}
  .pp-list{grid-template-columns:repeat(2,1fr)}
}

@media(max-width:720px){
  /* Spec table becomes stacked cards; each cell is labelled from data-label. */
  .spec-wrap{border:0;border-radius:0;box-shadow:none;background:transparent}
  .spec-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .spec-table{table-layout:auto}
  .spec-table,.spec-table tbody,.spec-table tr,.spec-table td{display:block;width:100%}
  .spec-table td:nth-child(1),.spec-table td:nth-child(2){width:100%}
  .spec-table tr{background:#fff;border:1px solid var(--border);border-radius:16px;
    padding:16px 18px;margin-bottom:12px;box-shadow:0 1px 2px rgba(15,35,90,.06),0 6px 18px rgba(15,35,90,.05)}
  .spec-table td{padding:0;border-bottom:0}
  .spec-table td+td{margin-top:.7rem}
  /* Stacked cards: the field labels take the page accent so they read as
     structure rather than more grey body text. */
  .spec-table td[data-label]::before{content:attr(data-label);display:block;font-family:var(--fm);
    font-size:.62rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
    color:var(--pp-accent);opacity:.75;margin-bottom:.25rem}
  .spec-table .p-name{white-space:normal;font-size:1.06rem}
  .spec-table .p-name::before{opacity:1}
}

@media(max-width:600px){
  .pp-hero .wrap{padding:38px 20px 48px}
  .pp-hero h1{font-size:1.95rem;letter-spacing:-.02em}
  .pp-hero h1 .hl{white-space:normal}
  .pp-hero p.lead{font-size:1rem}
  .pp-hero .hero-actions{flex-direction:column;align-items:stretch;gap:.65rem}
  .pp-hero .hero-actions .btn{width:100%;justify-content:center}
  .pp-panel{padding:26px 22px;border-radius:18px}
  .pp-panel .v{font-size:2.2rem}
  .pp-panel .d{max-width:none}
  .pgrid{grid-template-columns:1fr;gap:14px}
  .pcard{padding:18px 16px;border-radius:16px}
  .pp-list{grid-template-columns:1fr}
  .pp-group{margin-bottom:38px}
  .pp-group-head h3{font-size:1.15rem}
}
