/* HD Product Cards — 16 Centurion. Scoped .hd-ct; tokens printed by plugin. */
.hd-ct{--hd-ct-bg:#ffffff;--hd-ct-border:#e4e2dd;--hd-ct-ink:#1c1c1a;--hd-ct-ink-dim:#4a4c4f;--hd-ct-accent:#5a6b3b;--hd-ct-cta-bg:#111111;--hd-ct-cta-ink:#ffffff;--hd-ct-img-bg:#ffffff;--hd-ct-font-display:'Inter',sans-serif;--hd-ct-font-body:'Inter',sans-serif;--hd-ct-font-mono:'JetBrains Mono',monospace;
background:var(--hd-ct-bg);border:1px solid var(--hd-ct-border);font-family:var(--hd-ct-font-body);color:var(--hd-ct-ink);transition:box-shadow .25s ease,transform .25s ease}
.hd-ct:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(28,28,26,.10)}
.hd-ct__img{position:relative;display:block;aspect-ratio:4/3;background:var(--hd-ct-img-bg);overflow:hidden}
.hd-ct__img img{transition:transform .4s ease}
/* contain, not cover: distributor feed images arrive in every orientation
   and scale; cover-cropping zoomed them into abstract close-ups. This
   outranks shared.css's .hd-card img cover. */
.hd-ct .hd-ct__img img{object-fit:contain;padding:0}
/* white, always: hard-set rather than the --hd-ct-img-bg var, so inline
   theme overrides and site presets cannot tint the media box */
.hd-ct .hd-ct__img{background:#ffffff}
.hd-ct:hover .hd-ct__img img{transform:scale(1.04)}
.hd-ct__body{padding:20px 22px 22px;display:flex;flex-direction:column;flex-grow:1}
.hd-ct__brand{display:block;font-family:var(--hd-ct-font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--hd-ct-ink-dim);margin:0 0 8px;text-decoration:none;transition:color .15s ease}
a.hd-ct__brand:hover,a.hd-ct__brand:focus-visible{color:var(--hd-ct-accent)}
.hd-ct__title{font-family:var(--hd-ct-font-display);font-size:20px;font-weight:700;letter-spacing:-.01em;line-height:1.3;margin:0 0 6px;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hd-ct__title a{color:var(--hd-ct-ink);text-decoration:none}
.hd-ct__title a:hover{text-decoration:underline;text-underline-offset:3px}
.hd-ct__spec{font-size:14.5px;color:var(--hd-ct-ink-dim);margin:0 0 10px;height:1.5em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.hd-ct__spec:empty{height:0;margin:0}
.hd-ct__stock{font-family:var(--hd-ct-font-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--hd-ct-accent);margin:0 0 14px}
.hd-ct__stock.is-oos{color:#9a4b3f}
.hd-ct__price{font-family:var(--hd-ct-font-display);font-size:24px;font-weight:800;letter-spacing:-.01em;line-height:1.2;margin:0 0 16px}
.hd-ct__price del{font-size:15px;font-weight:500;color:#a6a8ab;margin-right:8px}
.hd-ct__price del .amount{color:inherit}.hd-ct__price ins{text-decoration:none}
.hd-ct__footer{margin-top:auto}
.hd-ct .hd-ct__btn,.hd-ct .hd-ct__btn.button{display:block;width:100%;text-align:center;font-family:var(--hd-ct-font-body);font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--hd-ct-cta-ink);background:var(--hd-ct-cta-bg);border:none;border-radius:0;padding:15px 18px;line-height:1.2;cursor:pointer;text-decoration:none;transition:opacity .2s ease;white-space:nowrap;box-sizing:border-box}
.hd-ct .hd-ct__btn:hover{opacity:.82}
.hd-ct .hd-ct__btn.is-oos{background:transparent;color:var(--hd-ct-ink);border:1px solid var(--hd-ct-border)}
.hd-ct a:focus-visible,.hd-ct .hd-ct__btn:focus-visible{outline:2px solid var(--hd-ct-accent);outline-offset:2px}

.hd-ct .hd-rating{--hd-rating-color:var(--hd-ct-accent);color:var(--hd-ct-ink-dim)}
