/* ============================================================================
   CHINESE PEPTIDE COMPANY IDENTITY — generated by site-factory/generate-identity.js
   pack: register · surface: light · primary: #E31E24
   Loaded LAST: this file owns the visual identity. It re-themes every page by
   overriding the base design tokens from global.css, then restyles the shared
   shop components (header/nav, buttons, flash, trending cards, FAQ, modals,
   mobile menu, footer) and patches per-page hard-coded hexes.
   Regenerate with: node site-factory/generate-identity.js <config.json>
   ============================================================================ */

:root {
    /* --- Primary ramp --- */
    --primary: #e31e24;
    --primary-dark: #c0181d;
    --primary-darker: #9c1318;
    --primary-light: #ea5459;
    --primary-lighter: #eab0b2;
    --primary-50: #f8f1f1;
    --primary-100: #f0e0e0;

    /* --- Semantic --- */
    --secondary-green: #3f7d54;
    --success-green: #3f7d54;
    --warning-yellow: #b07d12;
    --error-red: #b3382c;
    --accent-navy: #2c1112; /* legacy name — dark chip / heading ink */

    /* --- Accent (erp.css naming: data highlights, sparingly) --- */
    --amber: #1b3f8c;
    --amber-dim: #102654;

    /* --- Neutral ramp (hue-tinted from the primary) --- */
    --white: #fefbfb;
    --paper: #f7eeee;
    --porcelain: #fcf8f8;
    --gray-50: #f7eeee;
    --gray-100: #f0e0e1;
    --gray-200: #e5cdce;
    --gray-300: #d0a9aa;
    --gray-400: #ac6d6f;
    --gray-500: #7f484a;
    --gray-600: #5e3637;
    --gray-700: #442728;
    --gray-800: #2d1a1b;
    --gray-900: #201313;
    --ink: #201313;

    /* --- Borders / surfaces --- */
    --border-subtle: rgba(32, 19, 19, 0.09);
    --border-default: rgba(32, 19, 19, 0.16);
    --hairline: 1px solid rgba(32, 19, 19, 0.12);
    --surface-elevated: #fcf8f8;
    --surface-sunken: #f2e3e4;
    --grid-line: rgba(156, 19, 24, 0.045);

    /* --- Type: register pack --- */
    --font-family: 'Public Sans', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-display: 'Archivo', 'Public Sans', 'Songti SC', sans-serif;
    --font-mono: 'JetBrains Mono', 'SF Mono', Consolas, monospace;

    /* --- Radius character: register --- */
    --radius-sm: 0;
    --radius-md: 2px;
    --radius-lg: 3px;
    --radius-xl: 4px;

    /* --- Shadows (primary-tinted ink shadows) --- */
    --shadow-sm: 0 1px 2px rgba(156, 19, 24, 0.06);
    --shadow-md: 0 1px 2px rgba(156, 19, 24, 0.05), 0 6px 16px -8px rgba(156, 19, 24, 0.14);
    --shadow-lg: 0 2px 4px rgba(156, 19, 24, 0.05), 0 14px 30px -12px rgba(156, 19, 24, 0.2);
    --shadow-xl: 0 4px 10px rgba(156, 19, 24, 0.06), 0 26px 52px -18px rgba(156, 19, 24, 0.26);
    --shadow-jade: 0 8px 20px -8px rgba(227, 30, 36, 0.36);
}

/* === BASE ================================================================ */
html { background: var(--paper); }
body {
    font-family: var(--font-family);
    background: var(--paper);
    color: var(--gray-700);
}
h1, h2, h3, h4, .section-heading, .section-header h2 {
    font-family: var(--font-display);
    font-weight: 800;
    letter-spacing: -0.015em;
    color: var(--ink);
}
a { color: var(--primary); }
::selection { background: var(--primary); color: #fff; }
:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.cn-accent { font-family: 'Noto Serif SC', var(--font-display); }

/* === TOPLINE (flash banner) ============================================== */
.site-flash {
    background: var(--ink);
    color: var(--primary-lighter);
    border-bottom: 2px solid var(--primary);
    font-family: var(--font-mono);
    font-size: 0.67rem;
    font-weight: 500;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    padding: 8px 12px;
    text-align: center;
}
.site-flash strong { font-weight: 700; color: #fff; }

/* === HEADER / NAV ======================================================== */
.header {
    background: rgba(247, 238, 238, 0.92);
    backdrop-filter: blur(11px);
    border-bottom: 1px solid var(--border-subtle);
    box-shadow: none;
}
.header .logo-text, .logo-text {
    color: var(--ink);
    font-family: var(--font-display);
    font-weight: 900;
    letter-spacing: 0.01em;
}
.header .logo-text small, .logo-text small {
    color: var(--gray-500);
    font-family: var(--font-mono);
    font-weight: 400;
    font-size: 0.54rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    white-space: nowrap;
}
.nav-link {
    font-family: var(--font-family);
    font-size: 0.83rem;
    font-weight: 600;
    letter-spacing: 0.005em;
    text-transform: none;
    color: var(--gray-600);
    border-radius: var(--radius-sm);
    border-bottom: none;
    padding: 7px 11px;
    white-space: nowrap;
}
.nav-link:hover { color: var(--primary-darker); background: var(--primary-50); }
.nav-link.active {
    color: var(--primary-darker);
    background: var(--primary-50);
    box-shadow: inset 0 -2px 0 var(--primary);
}
.nav-link-secondary { color: var(--primary); }
.nav-link-secondary:hover { color: var(--primary-darker); }

.header .warehouse-btn, .warehouse-btn {
    background: var(--white);
    border: 1px solid var(--border-default);
    color: var(--gray-700);
    font-family: var(--font-mono);
    font-size: 0.72rem;
    border-radius: var(--radius-sm);
}
.header .warehouse-btn:hover, .warehouse-btn:hover { border-color: var(--primary); color: var(--primary-darker); }
.header .cart-btn, .cart-btn {
    background: var(--primary);
    color: #fff;
    border: none;
    border-radius: var(--radius-sm);
    font-family: var(--font-family);
    font-weight: 700;
    letter-spacing: 0.01em;
    text-transform: none;
    box-shadow: var(--shadow-jade);
}
.header .cart-btn:hover, .cart-btn:hover { background: var(--primary-dark); transform: none; }
.cart-count { background: var(--ink); color: #fff; font-family: var(--font-mono); font-weight: 700; }
.hamburger-line { background: var(--ink); }

/* Verified-On dropdown — panel on the identity surface */
.vo-dd-menu { background: var(--porcelain) !important; border-color: var(--border-default) !important; box-shadow: var(--shadow-lg) !important; border-radius: var(--radius-md) !important; }
.vo-dd-menu a { color: var(--gray-700) !important; }
.vo-dd-menu a:hover { background: var(--primary-50) !important; color: var(--primary-darker) !important; }
.vo-dd-menu i { color: var(--primary) !important; }

/* === BUTTONS ============================================================= */
.btn, .checkout-btn {
    font-family: var(--font-family);
    font-weight: 700;
    letter-spacing: 0.01em;
    text-transform: none;
    border-radius: var(--radius-sm);
}
.btn-primary, .checkout-btn {
    background: var(--primary);
    border: none;
    color: #fff;
    box-shadow: var(--shadow-jade);
}
.btn-primary:hover, .checkout-btn:hover { background: var(--primary-dark); transform: translateY(-1px); }
.btn-secondary {
    background: var(--white);
    border: 1px solid var(--border-default);
    color: var(--gray-700);
}
.btn-secondary:hover { border-color: var(--primary); color: var(--primary-darker); background: var(--white); }

/* === TRENDING CARDS (#trendingGrid children — style only) ================ */
.trending-card {
    background: var(--porcelain);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-lg);
    box-shadow: none;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
}
.trending-card:hover { border-color: var(--primary); box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.trending-card-image { background: #fff; border-radius: var(--radius-sm); }
.trending-category {
    font-family: var(--font-mono);
    letter-spacing: 0.09em;
    text-transform: uppercase;
    background: var(--primary-50);
    color: var(--primary-darker);
    border: none;
    border-radius: var(--radius-sm);
}
.trending-badge { border-radius: var(--radius-sm); font-family: var(--font-mono); letter-spacing: 0.04em; }
.trending-name { font-family: var(--font-display); font-weight: 800; color: var(--ink); }
.trending-spec { font-family: var(--font-mono); font-size: 0.72rem; color: var(--gray-400); }
.trending-price-value { font-family: var(--font-mono); font-weight: 700; color: var(--primary-darker); }
.trending-bulk { font-family: var(--font-mono); color: var(--gray-500); }
.trending-cta { font-family: var(--font-mono); font-size: 0.69rem; letter-spacing: 0.09em; text-transform: uppercase; color: var(--primary); }

/* === FAQ — two-column grid (classes consumed by JS: style only) ========== */
.faq-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; border-top: none; }
.faq-item {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md);
    background: var(--porcelain);
    box-shadow: none;
    margin-bottom: 0;
}
.faq-item.open { border-color: var(--primary); }
.faq-question {
    font-family: var(--font-family);
    font-weight: 700;
    font-size: 0.94rem;
    color: var(--ink);
    background: transparent;
}
.faq-question i { color: var(--primary); font-size: 0.7em; }
.faq-answer p { font-size: 0.87rem; line-height: 1.62; color: var(--gray-600); }
.faq-answer a, .faq-answer a[style] { color: var(--primary) !important; }

/* === MODALS / TOAST / INPUTS (#cartModal, #checkoutModal — style only) === */
.modal { background: rgba(32, 19, 19, 0.55); }
.modal-content {
    background: var(--porcelain);
    border-radius: var(--radius-xl);
    border: 1px solid var(--border-default);
    border-top: 3px solid var(--primary);
    box-shadow: var(--shadow-xl);
    color: var(--gray-700);
}
.modal-title { font-family: var(--font-display); font-weight: 800; color: var(--ink); }
.modal-close { color: var(--gray-500); }
.notification-toast {
    background: var(--porcelain);
    border-radius: var(--radius-lg);
    border: 1px solid var(--border-default);
    border-left: 3px solid var(--primary);
    box-shadow: var(--shadow-xl);
    color: var(--gray-700);
}
.step-number { font-family: var(--font-mono); border-radius: var(--radius-sm); }
input, textarea, select {
    background: var(--white);
    color: var(--gray-800);
    border-color: var(--gray-300);
    border-radius: var(--radius-sm);
}
input::placeholder, textarea::placeholder { color: var(--gray-400); }

/* === MOBILE MENU / BOTTOM NAV (#mobileMenu — style only) ================= */
.mobile-menu { background: var(--porcelain); color: var(--gray-700); }
.mobile-menu-title { font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem; color: var(--gray-500); }
.mobile-nav-link { color: var(--gray-700); border-radius: var(--radius-sm); }
.mobile-nav-link.active { background: var(--primary-50); color: var(--primary-darker); }
.mobile-nav-link i { color: var(--primary); }
.mobile-menu-footer a { color: var(--gray-600); }
.mobile-bottom-nav { background: rgba(247, 238, 238, 0.97) !important; border-top: 1px solid var(--border-default) !important; backdrop-filter: blur(10px); }
.bottom-nav-item { color: var(--gray-500); font-family: var(--font-mono); font-size: 0.6rem; }
.bottom-nav-item.active { color: var(--primary); }
.bottom-nav-item.active i { color: var(--primary); }
.bottom-nav-badge { background: var(--primary); color: #fff; font-family: var(--font-mono); }

/* === FOOTER ============================================================== */
.footer {
    background: var(--ink);
    color: var(--gray-300);
    border-top: 3px solid var(--primary);
}
.footer-logo { font-family: var(--font-display); font-weight: 900; color: #fff; }
.footer-logo small { font-family: var(--font-mono); font-size: 0.56rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gray-400); }
.footer-col h4 {
    font-family: var(--font-mono);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--gray-400);
    border-bottom: none;
}
.footer-col a, .footer-col p { color: var(--gray-300); }
.footer-col a:hover { color: var(--primary-light); }
.footer-bottom { border-top: 1px solid rgba(255, 255, 255, 0.12); }
.footer-bottom p { font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.04em; color: var(--gray-400); }
.footer-social a { color: var(--gray-300); border: 1px solid rgba(255, 255, 255, 0.14); border-radius: var(--radius-sm); }
.footer-social a:hover { color: var(--primary-light); border-color: var(--primary); }

/* === PAGE-CSS PATCHES ====================================================
   Per-page stylesheets hardcode a few of the template's jade-green (and
   light-surface) hexes. Repaint them from the identity tokens so no page
   leaks the template palette. */
.section-alt { background: var(--surface-sunken); }
.products-hero, .page-hero { background: var(--surface-sunken); }
.page-hero::before { background-image: none; }
.trustpilot-banner { background: var(--ink); }
.trustpilot-banner:hover { background: #160d0d; }

/* products page header — retint title + glow */
.products-page-header {
    background:
        radial-gradient(ellipse 60% 130% at 85% -20%, rgba(227, 30, 36, 0.07), transparent 60%),
        linear-gradient(180deg, var(--porcelain) 0%, var(--paper) 100%) !important;
}
.products-page-title { color: var(--ink) !important; font-weight: 800; }

/* product / products / pay page hard-coded buttons and chips */
.view-product-btn { background: var(--primary) !important; color: #fff !important; }
.view-product-btn:hover { background: var(--primary-dark) !important; box-shadow: var(--shadow-jade) !important; }
.janoshik-link, .cat-coa-btn {
    background: var(--primary-50) !important;
    color: var(--primary-darker) !important;
    border-color: var(--primary-100) !important;
}
.janoshik-link:hover, .cat-coa-btn:hover {
    background: var(--primary-100) !important;
    border-color: var(--primary-light) !important;
    color: var(--primary-darker) !important;
}
.badge-popular { background: var(--primary-50); color: var(--primary-darker); }
.badge-tested { background: var(--primary-50); color: var(--primary-darker); }
.view-test-report-btn { background: var(--primary-50); color: var(--primary-darker); }
.view-test-report-btn:hover { background: var(--primary-100); }

/* === SKIP LINK =========================================================== */
.skip-link { background: var(--primary-darker); }
.skip-link:focus { background: var(--primary); color: #fff; }

/* === MOTION DISCIPLINE =================================================== */
@media (prefers-reduced-motion: reduce) {
    * { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}

/* === RESPONSIVE ========================================================== */
@media (max-width: 960px) {
    .faq-list { grid-template-columns: 1fr; }
}

/* ============================================================================
   CPC IDENTITY LAYER — real CPC imagery + cpcscientific.com look
   (appended last; wins over global.css). Light surface, red primary + navy ink.
   ============================================================================ */
:root { --cpc-navy: #16223a; --cpc-blue: #1b3f8c; }

/* Header logo = the identical CPC horizontal lockup (not a square badge) */
.header .logo-img, .logo-img {
    width: auto !important; height: 54px !important; max-width: 190px;
    border-radius: 0 !important; box-shadow: none !important; object-fit: contain !important;
}
.header .logo { gap: 0; }
@media (max-width: 768px) { .header .logo-img, .logo-img { height: 42px !important; } }

/* Hero — CPC clinical CDMO tone: navy headline, red highlighted phrase, red kicker */
.hero-title { color: var(--cpc-navy); }
.hero-title span { color: var(--primary); }
.hero-eyebrow { background: rgba(227,30,36,.09); color: var(--primary); border-color: rgba(227,30,36,.22); }
.hero-title .cn-seal, .hero-subtitle .cn-accent { color: var(--primary); }

/* ---- CPC heritage band (factory cleanroom + Concept-to-Commercial + creds) ---- */
.cpc-heritage { background: linear-gradient(180deg, #f7f9fc 0%, #ffffff 100%); border-top: 1px solid var(--gray-200); border-bottom: 1px solid var(--gray-200); padding: 3.2rem 0; }
.cpc-heritage-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: 2.6rem; align-items: center; }
.cpc-heritage-photo { border-radius: 14px; overflow: hidden; box-shadow: 0 18px 44px rgba(22,34,58,.16); line-height: 0; }
.cpc-heritage-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpc-heritage-kicker { color: var(--primary); font-weight: 800; letter-spacing: .14em; text-transform: uppercase; font-size: .74rem; margin-bottom: .6rem; }
.cpc-heritage h2 { color: var(--cpc-navy); font-size: clamp(1.6rem, 3vw, 2.15rem); line-height: 1.12; margin: 0 0 .5rem; }
.cpc-heritage h2 em { color: var(--primary); font-style: normal; }
.cpc-heritage p { color: var(--gray-600); font-size: 1.02rem; line-height: 1.65; margin: 0 0 1.3rem; }
.cpc-cred-row { display: flex; flex-wrap: wrap; gap: .7rem; margin-bottom: 1.4rem; }
.cpc-cred { display: inline-flex; align-items: center; gap: .5rem; background: #fff; border: 1px solid var(--gray-200); border-radius: 999px; padding: .5rem .95rem; font-weight: 600; font-size: .86rem; color: var(--cpc-navy); box-shadow: 0 2px 8px rgba(22,34,58,.05); }
.cpc-cred i { color: var(--primary); }
.cpc-gmp-thumb { display: inline-flex; align-items: center; gap: .9rem; text-decoration: none; color: var(--cpc-blue); font-weight: 700; font-size: .92rem; }
.cpc-gmp-thumb img { width: 128px; height: auto; border-radius: 8px; border: 1px solid var(--gray-200); box-shadow: 0 6px 18px rgba(22,34,58,.12); }
@media (max-width: 860px) { .cpc-heritage-grid { grid-template-columns: 1fr; gap: 1.6rem; } .cpc-heritage-photo { order: -1; } }

/* ============================================================================
   CONTRAST REPAIR (appended last) — drives site-factory/contrast-audit.js to
   EXIT 0 after the dark->light theme flip. Rules grouped by root cause.
   ============================================================================ */

/* (1) Muted secondary text: the light-surface flip left --gray-400 (#ac6d6f) too
   light to read on white/porcelain (3.3-4.4:1). Darken the token itself — this
   fixes trending-spec, timer separators, review dates/meta, stepper, vl-prefix,
   CN accents, warehouse notes, etc. in one place. Footer (dark) is re-lit below. */
:root { --gray-400: #925254; }

/* (2) Red brand text on light tints failed 4.1-4.5:1. Keep #E31E24 for FILLS;
   use the palette's darker red (--primary-dark #c0181d, ~5-6:1) for red TEXT. */
.nav-link-secondary,
.mobile-nav-link.active,
.trending-cta,
.cpc-heritage-kicker,
.cert-link,
.spec-highlight,
.pl-price-contact,
.pl-price-contact.pl-mobile-card-price,
.pd-tag-category,
.pd-cat-badge,
.hero-eyebrow,
.hero-title .cn-seal,
.hero-subtitle .cn-accent,
.deal-contact a,
.deal-shop-now a,
.faq-answer a,
.faq-answer a[style],
.step.active,
.shipping-price-standard,
.shipping-price-express,
.change-warehouse-btn small { color: var(--primary-dark) !important; }

/* (3) False-dark gradient headers: the hero + products header paint a LIGHT
   gradient, but their `transparent`/low-alpha color stops are read by the
   auditor as opaque black/green, stranding the navy/red text. Repaint with
   light-only stops so the real (light) surface is what gets measured. */
.hero-section,
.products-page-header {
    background: linear-gradient(180deg, var(--porcelain) 0%, var(--paper) 100%) !important;
}

/* (4a) Sale bar is a genuinely DARK red gradient — its timer digits/labels were
   left dark (mauve). Force light text. */
.sale-bar .timer-num,
.sale-bar .timer-unit,
.sale-bar .timer-sep,
.sale-bar-timer { color: #fff !important; }

/* (4b) Footer sits on the dark ink panel; the flip left h4/copyright/logo-small
   on the now-darkened --gray-400. Re-light footer text to --gray-300 (~8.5:1). */
.footer p,
.footer small,
.footer h4,
.footer-col h4,
.footer-copyright,
.footer-bottom p,
.footer-logo small { color: var(--gray-300) !important; }

/* (4c) Review avatars: white initials on light pastel circles (2-4.4:1). Repaint
   the (inline-styled) circles with CPC navy so the initials read (~16:1). */
.review-avatar { background: var(--cpc-navy) !important; color: #fff !important; }

/* (4d) Trustpilot green on white failed (2.5-2.6:1). Use a darker green (~5:1). */
.tp-banner-btn,
.trust-score-label { color: #2e7d52 !important; }

/* (4e) WhatsApp/Telegram team buttons: white text on the brand green/blue
   gradients (2.0 / 3.9:1). Darken the (inline) gradients so white passes.
   WA links are stamped [data-wa-susp] by the suspend killswitch (which also
   re-serialises the inline style, so a colour-substring match won't hold);
   TG buttons keep their t.me href. Exclude the light .contact-card tiles. */
a[data-wa-susp][style*="rgb(255, 255, 255)"] { background: linear-gradient(135deg, #157a37, #126b31) !important; }
a[style*="linear-gradient(135deg,#0088cc"] { background: linear-gradient(135deg, #0077b3, #0069a3) !important; }

/* (4h) "Prices in USD ($)" + inline red mailto links use inline color:var(--primary)
   (JS-injected / hardcoded) — 4.1-4.5:1 on light. Darken to --primary-dark. */
[style*="color:var(--primary)"],
[style*="color: var(--primary)"] { color: var(--primary-dark) !important; }

/* (4i) "Save $X each" green on paper was 4.3:1 — use a darker green (~5.6:1). */
.price-save { color: #256b40 !important; }

/* (4f) About "quick replies" contact strip is a mid-slate panel (#525c55) — its
   text was left dark. Force light text (white passes ~7:1). */
.about-team-contact,
.about-team-contact strong,
.about-team-contact span { color: #fff !important; }

/* (4g) Gold "Fastest"/"TRACKED" badges: dark-brown text on gold only reached
   3.2:1. Use near-black brown (~6:1 on the darker gold stop). */
.about-team-badge-fastest,
.contact-team-badge-fastest,
span[style*="c08a1e" i] { color: #241a00 !important; }

/* (5) Remaining hardcoded muted greys the token change doesn't reach. */
.pd-detail-label,
.pd-section-subtitle,
.pd-price-label,
.pd-specification,
.pd-breadcrumb-link { color: var(--gray-600) !important; }
.pl-raw-sep { color: var(--gray-400) !important; }        /* was #d0a9aa, 1.9:1 */
span[style*="9ca3af" i] { color: var(--gray-600) !important; } /* header "Verified on" */

/* ============================================================================
   CPC VISUAL REFINEMENT v2 — clinical CDMO polish
   Cool crisp surfaces (de-pink), real cleanroom imagery in the hero, restrained
   monospace, calmer top strips, elevated cards. Appended last → wins the cascade.
   ============================================================================ */
:root {
    /* de-pink → cool neutral ramp (slate) */
    --white:#ffffff; --paper:#f3f6fb; --porcelain:#f8fafd;
    --gray-50:#f6f8fc; --gray-100:#eef2f8; --gray-200:#e2e8f1; --gray-300:#cbd5e1;
    --gray-400:#94a3b8; --gray-500:#64748b; --gray-600:#475569; --gray-700:#334155;
    --gray-800:#1e293b; --gray-900:#0f172a; --ink:#101a2e; --accent-navy:#101a2e;
    --amber:#1b3f8c; --amber-dim:#12275a; --cpc-navy:#101a2e; --cpc-blue:#1b3f8c;
    --border-subtle:rgba(16,26,46,.08); --border-default:rgba(16,26,46,.14);
    --hairline:1px solid rgba(16,26,46,.10);
    --surface-elevated:#ffffff; --surface-sunken:#eef2f8; --grid-line:rgba(27,63,140,.05);
    --shadow-sm:0 1px 2px rgba(16,26,46,.06);
    --shadow-md:0 2px 4px rgba(16,26,46,.05), 0 8px 20px -10px rgba(16,26,46,.16);
    --shadow-lg:0 4px 8px rgba(16,26,46,.06), 0 22px 44px -16px rgba(16,26,46,.22);
}
body { background:#fbfcfe; color:var(--ink); }

/* --- top strips: calm the stacked red --- */
.sale-bar { background:linear-gradient(90deg,#b3141a,#8d0e13) !important; }
.trust-bar { background:#ffffff !important; border-bottom:1px solid var(--border-subtle); box-shadow:none !important; }
.trust-bar-item, .trust-bar-item span { color:var(--gray-700) !important; font-weight:600; }
.trust-bar-item i { color:var(--primary) !important; }

/* --- header: crisp glass --- */
.header { background:rgba(255,255,255,.92) !important; backdrop-filter:saturate(1.1) blur(8px);
    border-bottom:1px solid var(--border-subtle); box-shadow:0 1px 0 rgba(16,26,46,.03); }

/* --- HERO: crisp cool-white + real cleanroom photo on the right --- */
.hero-section {
    background:
      linear-gradient(90deg,#fff 0%,#fff 43%,rgba(248,250,253,.92) 54%,rgba(248,250,253,.4) 72%,rgba(248,250,253,.06) 100%),
      url('/images/factory/mixing-solutions.png') 90% center / cover no-repeat,
      #f6f8fc !important;
    border-bottom:1px solid var(--border-subtle); padding:5rem 0 4.25rem !important;
}
.hero-section::before { display:none; }
.hero-eyebrow {
    font-family:var(--font-family) !important; font-weight:700; letter-spacing:.14em;
    background:#fff; border:1px solid var(--border-default); color:var(--primary-dark) !important;
    box-shadow:var(--shadow-sm); border-radius:999px; padding:.42rem .9rem;
}
.hero-eyebrow i { color:var(--primary); }
.hero-title { letter-spacing:-.02em; }
.hero-title .cn-seal {
    font-size:.4em; vertical-align:.55em; border:1px solid var(--border-default);
    color:var(--cpc-blue); background:#fff; border-radius:6px; padding:.05em .26em;
    box-shadow:var(--shadow-sm); -webkit-text-fill-color:var(--cpc-blue);
}
.hero-subtitle { color:var(--gray-600); max-width:34rem; }
.hero-subtitle .cn-accent { color:var(--cpc-blue); }

/* --- offer card: floats cleanly on the photo, navy header --- */
.deal-card { background:#fff !important; border:1px solid var(--border-subtle);
    box-shadow:var(--shadow-lg) !important; border-radius:12px; overflow:hidden; }
.deal-card-badge { background:linear-gradient(135deg,#16223a,#0f172a) !important; }
.deal-card-badge span, .deal-card-badge span:first-child { color:#fff !important; }
.deal-tier-label { font-family:var(--font-family) !important; color:var(--gray-700) !important;
    font-weight:600; letter-spacing:0; text-transform:none; }
.deal-tier-value { color:var(--primary-dark) !important; }

/* --- buttons --- */
.hero-cta-primary { border-radius:9px; box-shadow:0 10px 22px -10px rgba(227,30,36,.55); }
.hero-cta-secondary { border-radius:9px; background:#fff; border:1px solid var(--border-default); color:var(--cpc-navy); }
.hero-cta-secondary:hover { border-color:var(--primary); color:var(--primary-dark); }

/* --- product / trending cards --- */
.trending-card { border:1px solid var(--border-subtle); box-shadow:var(--shadow-sm); border-radius:12px; transition:transform .18s ease, box-shadow .18s ease; }
.trending-card:hover { box-shadow:var(--shadow-lg); transform:translateY(-3px); }
.trending-badge { background:#eaf0fb !important; color:var(--cpc-blue) !important; }
.section-header h2 { letter-spacing:-.015em; }

/* --- heritage band --- */
.cpc-heritage { background:linear-gradient(180deg,#f5f8fc,#fff) !important; }

/* --- mobile: drop the hero photo behind text --- */
@media (max-width:860px){
  .hero-section { background:linear-gradient(180deg,#f8fafd,#fff) !important; padding:2.25rem 0 2rem !important; }
}

/* --- refinement v2 contrast correction: darken cool text ramp for readability --- */
:root {
}
:root {
    --gray-400:#546072; --gray-500:#465468; --gray-600:#3a4658; --gray-700:#2b3444;
}
/* red seal glyph on DARK surfaces (footer, navy deal header) → lighter red */
.footer .cn-seal, .deal-card .cn-seal, .deal-card-badge .cn-seal {
    color:#f4a1a4 !important; -webkit-text-fill-color:#f4a1a4 !important;
    border-color:rgba(244,161,164,.5) !important;
}
/* muted specs/labels that sit on faint sunken panels — ensure ≥4.5 */
.trending-spec, .vl-prefix, .cn-accent, .timer-sep { color:var(--gray-500) !important; }
.deal-timer-label, .timer-unit, .trust-stat-label, .vl-head { color:var(--gray-600) !important; }
/* cn-accent inside the red sale bar must stay light (not the dark muted color) */
.sale-bar .cn-accent, .sale-bar-text .cn-accent, .sale-bar-inner .cn-accent { color:#fbe3d8 !important; -webkit-text-fill-color:#fbe3d8 !important; }

/* ============================================================================
   CPC LAYER v3 — "One Clinical System"  (CSS-only unification pass)
   Purges the three leftover WWB palettes hardcoded in page CSS (mint/forest
   green, purple, warm cream/gold), sets a single price/CTA hierarchy:
   navy ink for data, red reserved for the one primary action per surface.
   Colors/shadows/radii only — never display/visibility on JS-toggled states.
   ============================================================================ */
:root {
  --panel-cool:#f2f6fc; --panel-cool-border:#d8e2f0;
  --price-ink:#101a2e; --save-green:#256b40;
  --badge-gold-bg:#fff7e0; --badge-gold-ink:#7a5800;
}

/* ---------- 2. PRODUCT DETAIL (product.css: forest green → clinical) ---------- */
.pd-product-name, .pd-breadcrumb-current, .pd-section-title,
.pd-contact-pricing .pd-price-label, .pd-tag-subcategory { color:var(--cpc-navy); }
.pd-tag-subcategory:hover { background-color:var(--cpc-navy); border-color:var(--cpc-navy); color:#fff; }
.pd-price-amount, .pd-bulk-price { color:var(--price-ink); }
.pd-savings { background-color:var(--save-green); color:#fff; }
.pd-price-item:has(.pd-bulk-price) {
  background:var(--panel-cool); border:1px solid var(--panel-cool-border);
}
.pd-pricing-card {
  background:#fff; border:1px solid var(--border-subtle);
  box-shadow:var(--shadow-lg);
}
.pd-pricing-card:hover { box-shadow:var(--shadow-lg); }
.pd-header { background:linear-gradient(180deg,#ffffff 0%, var(--panel-cool) 100%); }
.pd-add-to-cart {
  background:linear-gradient(135deg,#e31e24,#b3141a);
  box-shadow:0 10px 22px -10px rgba(227,30,36,.55); border-radius:9px;
}
.pd-add-to-cart:hover { background:linear-gradient(135deg,#c0181d,#9c1318); }
.pd-badge-new, .pd-badge-best-value, .pd-mini-badge-new, .pd-mini-badge-best {
  background:#eaf0fb; color:var(--cpc-blue); border-color:var(--panel-cool-border);
}
.pd-badge-popular { background:var(--badge-gold-bg); color:var(--badge-gold-ink); }
.pd-tag-category { background:var(--panel-cool); color:var(--cpc-blue); }
.pd-detail-item:hover { background:var(--panel-cool); }
.pd-related-card:hover .pd-view-link, .pd-similar-card:hover .pd-view-link { color:var(--primary-dark); }
.pd-detail-label, .pd-price-label { color:var(--gray-500); }

/* ---------- 3. PRODUCTS GRID (products.css: cream tiles, purple, CTA hierarchy) ---------- */
.product-image { background:#ffffff; border-bottom:1px solid var(--border-subtle); }
.product-card { border:1px solid var(--border-subtle); transition:transform .18s ease, box-shadow .18s ease; }
.product-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-lg); }
.price-value { color:var(--price-ink); }
.bulk-tier { color:var(--cpc-blue); background:var(--panel-cool); }
.bulk-tier::before { background:var(--cpc-blue); }
/* one red CTA per card: View Details becomes a quiet navy outline */
.view-product-btn {
  background:#fff !important; color:var(--cpc-navy) !important;
  border:1px solid var(--border-default) !important; box-shadow:none !important;
}
.view-product-btn:hover { border-color:var(--cpc-blue) !important; color:var(--cpc-blue) !important; background:var(--panel-cool) !important; }
/* Test Report becomes a borderless text action */
.view-test-report-btn { background:transparent; border:none; color:var(--gray-600); }
.view-test-report-btn:hover { background:var(--panel-cool); color:var(--primary-dark); }
/* purple family → CPC navy/blue */
.pen-toggle-track.active { background:var(--cpc-blue); }
.pen-upgrade-title, .pen-upgrade-price, .pen-learn-more,
.pen-info-icon i, .pen-info-list li i, .pen-info-footer { color:var(--cpc-blue); }
.pen-upgrade-label:hover { background:var(--panel-cool); }
.bundle-item-pen, .bo-item-pen { border-left-color:var(--cpc-blue); background:rgba(27,63,140,.04); }
.bundle-pen-note, .bundle-section-pen { color:var(--cpc-blue); }
.bundle-tier-badge.bundle-premium, .bcc-tier-pro, .bo-tier-pro { background:var(--cpc-navy); color:#fff; }
.bo-card-pro { border-color:var(--cpc-blue); }
.bo-add-pro { background:var(--cpc-blue); }
.bo-add-pro:hover { background:var(--amber-dim); }
.badge-popular { background:var(--badge-gold-bg); color:var(--badge-gold-ink); }

/* ---------- 4. CART + CHECKOUT MODALS (cart.css: mint/gold → cool; colors only) ---------- */
#cartModal .modal-header, #checkoutModal .modal-header {
  background:linear-gradient(135deg,#16223a,#0f172a); border-bottom:none;
}
#cartModal .modal-header h2, #checkoutModal .modal-header h2,
#cartModal .modal-header h3, #checkoutModal .modal-header h3 { color:#fff; }
#cartModal .modal-close, #checkoutModal .modal-close { color:#cbd5e1; }
#cartModal .modal-close:hover, #checkoutModal .modal-close:hover { color:#fff; }
.checkout-steps { background:var(--panel-cool); border-color:var(--panel-cool-border); }
.change-warehouse-btn { background:var(--panel-cool); border-color:var(--panel-cool-border); }
.order-total { background:var(--panel-cool); border-color:var(--panel-cool-border); }
.checkout-item-price { color:var(--price-ink); }
.shipping-option.selected { background:#ffffff !important; }
.crypto-wallets-toggle:hover { background:var(--panel-cool); }

/* ---------- 5. ABOUT / CONTACT / PAY (mint + gold panels → cool) ---------- */
.contact-response-banner { background:var(--panel-cool); border-color:var(--panel-cool-border); }
.contact-response-banner > i { color:var(--cpc-blue); }

/* ---------- 6. PRICELIST (red band → navy system, zebra, sticky head) ---------- */
.pl-cat-header { background:var(--cpc-navy) !important; }
.pl-cat-header td { color:#fff; }
.pl-cat-header td i { color:#f4a1a4; }
.pl-sale-strip { background:var(--panel-cool); border-color:var(--panel-cool-border); }
.pl-table tbody tr:nth-child(even):not(.pl-cat-header) { background:var(--porcelain); }
.pl-table thead th { position:sticky; top:0; z-index:3; }

/* ---------- 7. MICRO-POLISH ---------- */
.pd-related-card, .pd-similar-card { transition:transform .18s ease, box-shadow .18s ease; }
.pd-related-card:hover, .pd-similar-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-lg); }
@media (prefers-reduced-motion: reduce) {
  .product-card, .product-card:hover, .trending-card, .trending-card:hover,
  .pd-related-card:hover, .pd-similar-card:hover { transform:none; transition:none; }
}
/* v3 addendum: detail-page image tile — cream → clean white */
.pd-product-image { background:#ffffff; border-color:var(--border-subtle); }
/* v3 addendum 2: last purple/mint/pink remnants on the products grid */
.pen-upgrade-label { background:var(--panel-cool); border-color:var(--panel-cool-border); }
.pen-upgrade-label:hover { background:#e8eefb; border-color:var(--cpc-blue); }
.badge-new { background:#eaf0fb; color:var(--cpc-blue); }
.janoshik-link {
  background:#fff; border-color:var(--border-default); color:var(--gray-600);
}
.janoshik-link:hover {
  background:var(--panel-cool); border-color:var(--cpc-blue); color:var(--primary-dark); box-shadow:none;
}
.pen-info-icon { background:var(--panel-cool); }
/* v3 addendum 3: modal chrome — soften the red outer border to match the navy header */
#cartModal .modal-content, #checkoutModal .modal-content {
  border:1px solid var(--border-subtle); box-shadow:var(--shadow-lg);
}
