/* Novatein Biosciences: child of classic. Design tokens from the approved concept. */
/* Fonts are self-hosted (latin subset) for speed and privacy */
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 400 700; font-display: swap; src: url('../fonts/IBMPlexSans-var.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/IBMPlexMono-400.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/IBMPlexMono-500.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  --nb-ink: #0F2430;
  --nb-navy: #0C3440;
  --nb-teal: #2A6F7B;
  --nb-teal-dark: #1F5964;
  --nb-teal-tint: #E4F0F2;
  --nb-accent: #C8283F;
  --nb-accent-dark: #A81F34;
  --nb-bg: #F5F8F9;
  --nb-line: #D5E0E4;
  --nb-muted: #4C6370;
}

body, input, select, textarea, button, .h1, .h2, .h3, h1, h2, h3, h4, h5, .btn { font-family: 'IBM Plex Sans', system-ui, sans-serif; }
body { background: var(--nb-bg); color: var(--nb-ink); }
#wrapper { background: transparent; box-shadow: none; padding-top: 1.5rem; }
a { color: var(--nb-teal); }
a:hover { color: var(--nb-teal-dark); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ---------- buttons ---------- */
.btn-primary { background: var(--nb-teal); border-color: var(--nb-teal); color: #fff; border-radius: 8px; font-weight: 600; text-transform: none; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active { background: var(--nb-teal-dark) !important; border-color: var(--nb-teal-dark) !important; color: #fff; }
.btn-secondary { background: #fff; border: 1.5px solid var(--nb-line); color: var(--nb-ink); border-radius: 8px; }
.btn-tertiary, .btn-tertiary-outline { border-radius: 8px; }
.nb-quote-btn { display: inline-flex; align-items: center; height: 48px; box-sizing: border-box; padding: 0 20px; border: 1.5px solid var(--nb-accent); border-radius: 8px; color: var(--nb-accent-dark); font-weight: 600; white-space: nowrap; background: #fff; }
.nb-quote-btn:hover { background: #FDECEF; color: var(--nb-accent-dark); }
.nb-quote-btn--solid { background: var(--nb-accent); color: #fff; border-color: var(--nb-accent); height: 52px; font-size: 1rem; }
.nb-quote-btn--solid:hover { background: var(--nb-accent-dark); color: #fff; }

/* ---------- header ---------- */
.header-banner { display: none; }
#header { box-shadow: none; background: #fff; border-bottom: 1px solid var(--nb-line); }
#header .header-nav { background: var(--nb-navy); color: #CFE3E8; border: 0; max-height: none; margin-bottom: 0; }
#header .header-nav a, #header .header-nav .user-info a, #header .header-nav .blockcart, #header .header-nav #contact-link a { color: #CFE3E8; }
#header .header-nav a:hover { color: #fff; }
#header .header-nav .material-icons { color: #CFE3E8; }
#header .header-nav .cart-preview.inactive .shopping-cart, #header .header-nav .blockcart .shopping-cart { color: #CFE3E8; }
#header .header-top { padding: 14px 0 0; }
#header .header-top .nb-logo img { display: block; max-width: 100%; height: auto; }
#header .header-top h1 { margin: 0; font-size: 0; }
#header .header-top-right { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
#header .header-top-right #search_widget { order: 1; flex: 1 1 360px; float: none; min-width: 0; margin: 0; }
#header .header-top-right .nb-quote-btn { order: 2; }
#header .header-top-right #_desktop_top_menu { order: 3; flex: 1 0 100%; margin: 0; }
#header .header-top-right #search_widget { width: auto; min-width: 0; }
#search_widget form { position: relative; display: block; width: 100%; }
#search_widget form input[type=text] { width: 100% !important; height: 48px; box-sizing: border-box; padding: 0 56px 0 16px; background: #fff; border: 1.5px solid #9DB3BC; border-radius: 8px; color: var(--nb-ink); font-size: 15px; }
#search_widget form input[type=text]:focus { border-color: var(--nb-teal); outline: 2px solid var(--nb-teal-tint); }
#search_widget form button[type=submit] { position: absolute; right: 0; top: 0; height: 48px; width: 52px; border-radius: 0 8px 8px 0; background: var(--nb-teal); color: #fff; }
#search_widget form button[type=submit] .material-icons { color: #fff; }
.search-widget .ui-autocomplete { border-radius: 8px; }

/* main menu */
#_desktop_top_menu .top-menu[data-depth="0"] { display: flex; flex-wrap: wrap; gap: 0 2px; }
#_desktop_top_menu .top-menu a[data-depth="0"] { color: var(--nb-ink); font-weight: 500; font-size: 14px; text-transform: none; padding: 12px 7px; }
#_desktop_top_menu .top-menu a[data-depth="0"]:hover { color: var(--nb-teal); }
#_desktop_top_menu .popover.sub-menu { border-radius: 0 0 12px 12px; border: 1px solid var(--nb-line); box-shadow: 0 12px 24px rgba(12, 52, 64, .12); }

/* ---------- home ---------- */
.nb-hero { background: var(--nb-navy); color: #fff; border-radius: 16px; padding: 56px 40px; margin-bottom: 40px; }
.nb-eyebrow { margin: 0 0 14px; font-family: 'IBM Plex Mono', monospace; font-size: 13px; letter-spacing: .08em; color: #8FD0D8; }
.nb-hero-title { margin: 0; max-width: 760px; font-size: 44px; line-height: 1.1; letter-spacing: -.02em; font-weight: 700; color: #fff; text-transform: none; }
.nb-hero-sub { margin: 18px 0 28px; max-width: 620px; font-size: 18px; line-height: 1.5; color: #CFE3E8; }
.nb-hero-search { display: flex; max-width: 760px; }
.nb-hero-search input { flex: 1; min-width: 0; height: 60px; padding: 0 20px; border: 0; border-radius: 10px 0 0 10px; font-size: 17px; color: var(--nb-ink); }
.nb-hero-search button { height: 60px; padding: 0 28px; border: 0; border-radius: 0 10px 10px 0; background: var(--nb-accent); color: #fff; font-size: 17px; font-weight: 600; cursor: pointer; }
.nb-hero-search button:hover { background: var(--nb-accent-dark); }
.nb-section { margin: 0 0 40px; }
.nb-section h2, .featured-products h2, .products-section-title { font-size: 28px; letter-spacing: -.01em; text-transform: none; color: var(--nb-ink); margin: 0 0 20px; font-weight: 700; }
.nb-type-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 16px; }
@media (min-width: 992px) { .nb-type-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } .nb-type-grid--6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.nb-type-card { display: flex; flex-direction: column; gap: 8px; background: #fff; border: 1px solid var(--nb-line); border-radius: 12px; padding: 22px; color: var(--nb-ink); }
.nb-type-card:hover { border-color: var(--nb-teal); color: var(--nb-ink); box-shadow: 0 6px 16px rgba(12, 52, 64, .08); }
.nb-type-card strong { font-size: 19px; }
.nb-type-card span { font-size: 14px; line-height: 1.5; color: var(--nb-muted); }
.nb-chips { display: flex; flex-wrap: wrap; gap: 12px; }
.nb-chips a { padding: 12px 20px; background: var(--nb-teal-tint); border-radius: 999px; font-weight: 500; font-size: 15px; color: #1F5964; }
.nb-chips a:hover { background: #cfe3e6; }
.nb-quote-band { background: var(--nb-navy); color: #fff; border-radius: 16px; padding: 36px 40px; margin: 40px 0 0; display: flex; flex-wrap: wrap; gap: 20px 40px; align-items: center; justify-content: space-between; }
.nb-quote-band > div { flex: 1 1 380px; }
.nb-quote-band h2 { margin: 0 0 8px; font-size: 26px; color: #fff; text-transform: none; }
.nb-quote-band p { margin: 0; color: #CFE3E8; line-height: 1.5; }

/* ---------- catalog ---------- */
#js-product-list-header h1, .page-header h1, #main h1 { font-size: 34px; letter-spacing: -.02em; text-transform: none; color: var(--nb-ink); font-weight: 700; }
.breadcrumb { background: transparent; font-size: 14px; }
.breadcrumb a { color: var(--nb-muted); }
.block-category { background: #fff; border: 1px solid var(--nb-line); border-radius: 12px; box-shadow: none; }
#search_filters { background: #fff; border: 1px solid var(--nb-line); border-radius: 12px; padding: 12px 16px; }
#search_filters .facet-title { color: var(--nb-ink); font-weight: 600; text-transform: none; }
.product-miniature .thumbnail-container { background: #fff; border: 1px solid var(--nb-line); border-radius: 12px; box-shadow: none; }
.product-miniature .thumbnail-container:hover { box-shadow: 0 6px 16px rgba(12, 52, 64, .1); }
.product-miniature .product-title a { color: var(--nb-ink); font-weight: 600; font-size: 16px; text-transform: none; line-height: 1.35; }
.product-miniature .product-title a:hover { color: var(--nb-teal); }
.product-miniature .price, .product-price, .current-price { color: var(--nb-ink); font-weight: 700; }
.product-miniature .product-description { padding: 14px 16px; }
.product-flags li.product-flag { background: var(--nb-teal); border-radius: 999px; }
.product-flags li.product-flag.discount, .product-flags li.product-flag.on-sale { background: var(--nb-accent); }
.pagination .current a { color: var(--nb-teal); font-weight: 700; }

/* ---------- product page ---------- */
#product h1.h1, #main .page-header h1, .product-detail-name { font-size: 30px; line-height: 1.2; }
.product-reference span, .product-reference label { font-family: 'IBM Plex Mono', monospace; font-size: 14px; color: var(--nb-muted); }
.product-information .current-price, .product-prices .current-price span { font-size: 30px; }
.product-add-to-cart .add-to-cart { width: 100%; height: 52px; font-size: 16px; }
.product-variants > .product-variants-item select { height: 44px; border-radius: 8px; border: 1.5px solid #9DB3BC; }
.tabs { border: 1px solid var(--nb-line); border-radius: 12px; box-shadow: none; background: #fff; }
.tabs .nav-tabs .nav-link.active { color: var(--nb-teal); border-bottom: 3px solid var(--nb-teal); }
.data-sheet dt.name, .data-sheet dd.value { background: transparent; border-bottom: 1px solid #E6EDF0; padding: 10px 12px; }
.card, .card-block { border-radius: 12px; }

/* ---------- footer ---------- */
#footer, .footer-container { background: var(--nb-navy); color: #CFE3E8; box-shadow: none; }
.footer-container { margin-top: 3rem; padding-top: 2.5rem; }
.footer-container .h3, .footer-container .h4, .footer-container h3, .footer-container h4, .footer-container .block-contact .block-contact-title { color: #fff; text-transform: none; font-weight: 600; }
.footer-container a, .footer-container li a { color: #CFE3E8; }
.footer-container a:hover { color: #fff; }
.footer-container .myaccount-title a, .footer-container .myaccount-title a.text-uppercase { color: #fff !important; text-transform: none; }
.nb-ruo { margin: 1.5rem 0 1rem; font-size: 14px; color: #9DB3BC; }

@media (max-width: 767px) {
  .nb-hero { padding: 32px 20px; }
  .nb-hero-title { font-size: 30px; }
  .nb-hero-search { flex-direction: column; gap: 10px; }
  .nb-hero-search input, .nb-hero-search button { border-radius: 10px; width: 100%; }
  .nb-quote-band { padding: 28px 20px; }
}

/* ---------- product rows (category, search, featured) ---------- */
.product-miniature.nb-card .thumbnail-container { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; padding: 18px 20px; min-height: 0; height: auto; }
.product-miniature.nb-card .nb-thumb { flex: 0 0 72px; }
.product-miniature.nb-card .nb-thumb img { width: 72px; height: auto; border-radius: 8px; }
.product-miniature.nb-card .nb-main { flex: 1 1 280px; min-width: 0; padding: 0; text-align: left; }
.product-miniature.nb-card .product-title { margin: 0; text-align: left; }
.product-miniature.nb-card .product-title a { white-space: normal; text-overflow: clip; overflow: visible; font-size: 16px; }
.nb-ref { margin-top: 4px; font-family: 'IBM Plex Mono', monospace; font-size: 13px; color: var(--nb-muted); }
.nb-tags { margin-top: 8px; }
.nb-tags span { display: inline-block; font-size: 12px; padding: 3px 10px; border-radius: 999px; background: #EEF3F5; color: #314A57; }
.nb-buy { flex: 0 0 auto; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-left: auto; }
.nb-buy .product-price-and-shipping { margin: 0; }
.nb-buy .price { font-size: 18px; }
.nb-buy .nb-quote-btn { height: 44px; font-size: 14px; }
.nb-quote-only { font-weight: 600; font-size: 15px; color: var(--nb-accent-dark); }
.nb-btn-view { height: 44px; display: inline-flex; align-items: center; }
#products .products > .js-product, .featured-products .products > .js-product { flex: 0 0 100%; max-width: 100%; width: 100%; }
#products .products, .featured-products .products { display: flex; flex-wrap: wrap; gap: 12px 0; }
.product-miniature.nb-card .thumbnail-container:hover { box-shadow: none; border-color: var(--nb-teal); }

/* header: hide the single-currency selector; keep icons readable */
#_desktop_currency_selector, #_mobile_currency_selector, .currency-selector { display: none !important; }
#header .header-nav .blockcart.cart-preview.inactive { background: transparent; }
#header .header-nav .blockcart .header, #header .header-nav .blockcart .shopping-cart, #header .header-nav .blockcart span { color: #CFE3E8 !important; }

/* newsletter block in the footer */
.block_newsletter { background: transparent; color: #CFE3E8; }
.block_newsletter p, .block_newsletter #block-newsletter-label, .block_newsletter .h3 { color: #fff; font-size: 18px; text-transform: none; }
.block_newsletter form input[type=email] { background: #fff; border-radius: 8px 0 0 8px; }
.block_newsletter p.alert, .block_newsletter .conditions { color: #9DB3BC; font-size: 12px; }

/* layout fixes: full-width rows, wide search box */
#header .header-top-right #search_widget { flex: 1 1 420px !important; width: auto !important; max-width: none !important; float: none !important; }
#header .header-top-right #search_widget form, #header .header-top-right #search_widget input[type=text] { width: 100% !important; max-width: none !important; }
#header .header-top-right #search_widget i.material-icons.search { position: absolute; left: 14px; top: 12px; z-index: 2; color: var(--nb-muted); }
#header .header-top-right #search_widget input[type=text] { padding-left: 46px !important; padding-right: 16px !important; }
.product-miniature.nb-card { width: 100% !important; max-width: none !important; margin: 0 !important; }
#products .products > .js-product, .featured-products .products > .js-product { padding: 0 !important; margin: 0 !important; }
#products .js-product.product, .featured-products .js-product.product, #js-product-list .js-product.product { flex: 0 0 100% !important; max-width: 100% !important; width: 100% !important; }
#js-product-list .products, #products .products { align-items: stretch !important; justify-content: flex-start !important; flex-direction: row !important; margin-left: 0; margin-right: 0; }
.product-miniature.nb-card { display: block !important; }
.product-miniature.nb-card, .product-miniature.nb-card .thumbnail-container { width: 100% !important; max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; box-sizing: border-box; float: none !important; }



/* mobile: readable logo on the dark bar, and a properly sized hero search */
@media (max-width: 767px) {
  #_mobile_logo .nb-logo { display: inline-block; background: #fff; border-radius: 8px; padding: 3px 8px; }
  #_mobile_logo .nb-logo img { height: 34px; width: auto; display: block; }
  .nb-hero-search input, .nb-hero-search button { flex: none; height: 56px; }
}

/* logo sizing (SVG keeps its own proportions) */
#header .header-top .nb-logo img { height: 58px; width: auto; max-width: 100%; }
#_mobile_logo .nb-logo img { height: 30px; width: auto; }
.nb-tagline { margin: 0 0 6px; text-align: center; color: #CFE3E8; font-weight: 500; letter-spacing: .02em; }

/* product without a photo: show nothing, and let the product details use the full width */
.nb-noimg { display: none; }
.product-container > .col-md-6:has(.nb-noimg) { display: none; }
.product-container > .col-md-6:has(.nb-noimg) + .col-md-6 { float: none; width: 100%; max-width: 100%; flex: 0 0 100%; }

/* nb-hide-placeholders: no "No image available" pictures anywhere (cart, checkout, order pages); no card-network logos (the Stripe module ships a French CB logo) */
img[src*="/img/p/"][src*="-default-"] { display: none !important; }
.payment-option label img { display: none; }

/* nb-cms: imported CMS pages (/content/...). Old Word/HTML content: readable body text, tidy tables, images never overflow */
.page-cms #content, .page-cms .page-content { color: var(--nb-ink); line-height: 1.65; overflow-wrap: break-word; }
.page-cms #content table td a { overflow-wrap: anywhere; }
.page-cms #content table th:first-child, .page-cms #content table td:first-child { min-width: 5.5em; }
.page-cms #content p, .page-cms #content li, .page-cms #content td, .page-cms #content th { text-align: left !important; text-justify: auto; }
.page-cms #content h1, .page-cms #content h2, .page-cms #content h3, .page-cms #content h4 { color: var(--nb-navy); margin: 1.6em 0 .6em; line-height: 1.25; }
.page-cms #content img { max-width: 100%; height: auto; }
.page-cms #content a { color: var(--nb-teal); }
.page-cms #content a:hover { color: var(--nb-teal-dark); }
.page-cms #content ul, .page-cms #content ol { padding-left: 1.4em; margin-bottom: 1em; }
.page-cms #content table { width: 100%; max-width: 100%; border-collapse: collapse; margin: 1.2em 0; font-size: .95rem; display: block; overflow-x: auto; }
.page-cms #content table th, .page-cms #content table td { border: 1px solid var(--nb-line); padding: 8px 12px; vertical-align: top; }
.page-cms #content table tr:first-child td, .page-cms #content table th { background: var(--nb-teal-tint); color: var(--nb-navy); font-weight: 600; }
.page-cms #content table tbody tr:nth-child(even) td { background: #FAFCFC; }
.page-cms #content table p { margin: 0; }

/* nb-home-cms: CMS pages shown on the home page (Featured Research, Featured Service) */
.nb-home-cms { background: #fff; border: 1px solid var(--nb-line); border-radius: 16px; padding: 28px 32px; }
.nb-home-cms h2 { margin-top: 0; }
.nb-home-cms-body { overflow: hidden; line-height: 1.6; }
.nb-home-cms-body .left-img { float: left; margin: 0 24px 12px 0; max-width: 260px; }
.nb-home-cms-body img { max-width: 100%; height: auto; }
.nb-home-cms-body h1 { font-size: 1.25rem; margin: 0 0 .5em; color: var(--nb-navy); }
.nb-home-cms-body h2 { font-size: 1.05rem; margin: 1em 0 .4em; }
.nb-home-cms-body p, .nb-home-cms-body li { text-align: left; }
.nb-home-cms-more { margin: 14px 0 0; }
.nb-home-cms-more a { color: var(--nb-teal); font-weight: 600; }
@media (max-width: 575px) { .nb-home-cms { padding: 20px; } .nb-home-cms-body .left-img { float: none; margin: 0 0 12px; } }

/* nb-category-banner: banner picture above the category title (old "scenes") */
.nb-category-banner { margin: -4px 0 18px; border-radius: 12px; overflow: hidden; line-height: 0; }
.nb-category-banner .nb-category-banner-img { width: 100%; height: auto; max-height: 280px; object-fit: cover; display: block; }

/* nb-product-extras: catalog number + print link under the product title; every product is new, so the Condition row is noise */
.nb-catalog-no { margin: -4px 0 6px; font-family: 'IBM Plex Mono', monospace; font-size: 15px; color: var(--nb-muted); }
.nb-catalog-no span { color: var(--nb-teal); font-weight: 600; font-family: inherit; margin-right: 4px; }
.nb-print { margin: 0 0 10px; font-size: 14px; }
.nb-print a { color: var(--nb-muted); }
.product-condition { display: none; }
@media print { header, footer, .nb-print, #_desktop_top_menu, .nb-quote-band, .product-add-to-cart, .breadcrumb { display: none !important; } }
/* nb-callus: phone number in the top bar */
.nb-callus { color: #fff; font-size: 14px; margin-right: 16px; }
.nb-callus a { color: #fff; font-weight: 600; }

/* nb-contact-help: the selected department's instructions (e.g. what a purchase order must include) */
.nb-contact-help { margin: 8px 0 0; font-size: 14px; color: var(--nb-muted); white-space: pre-line; }
.nb-contact-help:empty { display: none; }

/* product texts from the old store have fixed-width tables and pictures: they scroll inside the tab instead of widening the page on a phone */
.product-description, #product .tab-content .tab-pane, .product-features, .product-attachments { max-width: 100%; overflow-x: auto; }
.product-description img { max-width: 100%; height: auto; }
.product-description table { max-width: 100%; }
