/* ============================================================
PaperRolls-N-More — "Modern Navy" Redesign
Drop-in override stylesheet for the PaperRollsnMore theme.
Load LAST (after style.css / deputy / response / gradient)
so it wins the cascade. Touches NO merge codes — it only
restyles the theme's existing classes.
Pattern & palette match the Foundation "Modern Navy" redesign.
============================================================ */

/* Fonts (Archivo for headings, IBM Plex Sans for body) */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap');

/* ---------- 1. THEME TOKENS ------------------------------- */
:root {
  /* Remap the theme's brand blue to the refined navy palette */
  --prnm-blue: #2C4690;            /* deep action navy                 */
  --primary: #2C4690;
  --primary-light: #A8BAE4;
  --primary-dark: #111111;         /* deep ink navy                    */
  --primary-hover: #2C4690;        /* brighter action blue on hover    */
  --muted: #8a93a3;
  --lite-text: #5c6677;
  --accent: #f4f7fc;
  --light: #f6f8fb;
  --border: #e6e9f0;
  --control-border: #d4d9e3;
  --font-sans-serif: "IBM Plex Sans", system-ui, sans-serif;
  --font-heading: "Archivo", system-ui, sans-serif;
  /* --prnm-red is left red on purpose: it also colors error states.  */
}

/* ---------- 2. BASE TYPE ---------------------------------- */
body,
.LayoutMiddle,
table {
  font-family: var(--font-sans-serif) !important;
  color: #111111;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.ProductDetails h1.ProductDetailsProductName,
.ProductDetails .ProductDetailsProductName small {
  font-family: var(--font-heading) !important;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: #111111;
}
p { color: #333c4d; }
a { color: #2C4690; }
a:hover, a:focus { color: #1E3268; text-decoration: none; }

/* ---------- 3. BUTTONS ------------------------------------ */
.ThemeButton,
body input.ThemeButton,
.btn-primary {
  background: #2C4690 !important;
  border: 1px solid #2C4690 !important;
  border-radius: 10px !important;
  box-shadow: none !important;
  text-shadow: none !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: .01em;
  transition: background-color .15s, border-color .15s, transform .12s, box-shadow .15s;
}
.ThemeButton:hover, .ThemeButton:focus,
body input.ThemeButton:hover,
.btn-primary:hover, .btn-primary:focus {
  background: #2C4690 !important;
  border-color: #2C4690 !important;
  box-shadow: 0 8px 20px rgba(44,70,144,.22) !important;
}
.ThemeButton:active { transform: translateY(1px); }
.AddToCartThemeButton, .SignInThemeButton, .PlaceOrderThemeButton,
.OnePageCheckoutPlaceOrderThemeButton, .CheckoutThemeButton,
.ShoppingCartCheckoutThemeButton, #btnPlaceOrder {
  background: #2C4690 !important;
  border: 1px solid #2C4690 !important;
  border-radius: 10px !important;
  box-shadow: none !important;
  text-shadow: none !important;
  font-family: var(--font-heading);
  font-weight: 700;
}
.AddToCartThemeButton:hover, .SignInThemeButton:hover,
.PlaceOrderThemeButton:hover, .OnePageCheckoutPlaceOrderThemeButton:hover,
.CheckoutThemeButton:hover, .ShoppingCartCheckoutThemeButton:hover,
#btnPlaceOrder:hover {
  background: #2C4690 !important;
  border-color: #2C4690 !important;
  box-shadow: 0 8px 20px rgba(44,70,144,.22) !important;
}
.FacebookButton { background-color: #2C4690; }
.FacebookButton:hover { background-color: #2C4690; }

/* ---------- 4. FORM CONTROLS ------------------------------ */
input[type=text], input[type=password], input[type=email], select, textarea {
  border: 1.5px solid var(--control-border);
  border-radius: 8px;
  color: #111111;
}
input[type=text]:focus, input[type=password]:focus,
input[type=email]:focus, select:focus, textarea:focus {
  border-color: #2C4690 !important;
  box-shadow: 0 0 0 3px rgba(44,70,144,.15) !important;
}

/* ---------- 5. HEADER ------------------------------------- */
.topgrey { background: #ffffff; border-bottom: 1px solid var(--border); }
.LayoutTopTop { background: #fff; }
.LayoutTopTop.scrolled { box-shadow: 0 6px 20px rgba(17,17,17,.14); }
.calltext { font-family: var(--font-sans-serif); color: #111111; }
.calltext a { color: #2C4690; font-family: var(--font-heading); }
.calltext a:hover { color: #2C4690; }
/* Search box */
.h-search #txtRedirectSearchBox {
  border: 1.5px solid var(--control-border);
  border-radius: 10px 0 0 10px;
  padding: 8px 14px;
}
.h-search #btnSearchBox1, .h-search .ThemeButton {
  border-radius: 0 10px 10px 0 !important;
}

/* Utility top bar (added in HeaderPage) */
.mn-topbar {
  background: #111111;
  color: #C6CCDE;
  font-size: 12.5px;
  letter-spacing: .02em;
}
.mn-topbar-inner {
  max-width: 1500px;
  margin: 0 auto;
  padding: 8px 30px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.mn-topbar a { color: #C6CCDE; text-decoration: none; }
.mn-topbar a:hover { color: #fff; }
.mn-topbar .mn-topbar-links { display: flex; gap: 22px; align-items: center; }
@media screen and (max-width: 599px) { .mn-topbar { display: none; } }

/* ---------- 6. PRIMARY NAV -------------------------------- */
.navbar.navbar-default {
  background: #111111 !important;
  border: none;
  border-radius: 0;
}
.navbar-default .navbar-nav > li > a {
  color: #d3dbe9 !important;
  font-family: var(--font-sans-serif);
  font-weight: 500;
  font-size: 14px;
  letter-spacing: .01em;
  border-bottom: 2px solid transparent;
  transition: color .15s, border-color .15s, background .15s;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus,
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover {
  color: #ffffff !important;
  background: rgba(255,255,255,.04) !important;
  border-bottom-color: #2C4690;
}
.navbar-default .navbar-brand { color: #fff !important; font-family: var(--font-heading); }
.navbar-default .navbar-toggle { border-color: rgba(255,255,255,.3); }
.navbar-default .navbar-toggle .icon-bar { background-color: #fff; }
.navbar .dropdown-menu {
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 18px 40px rgba(17,17,17,.16);
  padding: 6px;
}
.navbar .dropdown-menu > li > a { border-radius: 8px; padding: 8px 12px; color: #111111; }
.navbar .dropdown-menu > li > a:hover { background: #F1F4FB; color: #2C4690; }
.badge { background-color: #2C4690 !important; font-weight: 700; }

/* ---------- 7. HOMEPAGE ----------------------------------- */
/* H1 under hero banner */
.Control_29435 h1 { color: #111111; }
.h1-subline { color: #5c6677; }

/* Value / trust bar (FreeShippingFlex) */
.FreeShippingFlex { margin-top: 20px; }
.FreeShippingFlex div {
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: 14px;
  height: auto;
  padding: 18px 14px 14px;
  transition: border-color .18s, box-shadow .18s, transform .18s;
}
.FreeShippingFlex div:hover {
  border-color: #2C4690;
  box-shadow: 0 12px 28px rgba(44,70,144,.12);
  transform: translateY(-2px);
}
.FreeShippingFlex h3 {
  color: #111111;
  font-family: var(--font-heading) !important;
  font-weight: 700;
  font-size: 15px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.FreeShippingFlex p { color: #5c6677; }

/* Category tiles */
h2.CategoryFlexTitle, h2.BlogFlexTitle, h2.ResourceFlexTitle {
  color: #111111;
  font-weight: 800;
}
.CategoryFlex div.CategoryBox,
.CategoryFlex div.CategoryBox.BlueBack,
.CategoryFlex div.CategoryBox.GreenBack,
.CategoryFlex div.CategoryBox.RedBack {
  background: #f6f8fb;
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: none;
  transition: all .18s;
}
.CategoryFlex div.CategoryBox:hover {
  background: #ffffff;
  border-color: #2C4690;
  box-shadow: 0 12px 28px rgba(44,70,144,.12);
  transform: translateY(-2px);
}
.CategoryFlex h3 {
  color: #111111;
  font-family: var(--font-heading) !important;
  font-weight: 700;
  font-size: 18px;
}
.CategoryFlex p { color: #5c6677; }
.CategoryFlexButton,
.CategoryFlexButton.GreenBack,
.CategoryFlexButton.GrayBack,
.CategoryFlexButton.RedBack,
.BlogFlexButton, .ResourceFlexButton, .TwoColumnFlexButton {
  background-color: #2C4690;
  border-radius: 8px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  padding: 10px 14px;
  line-height: 1;
  transition: background-color .15s;
}
.CategoryFlexButton:hover,
.CategoryFlexButton.GreenBack:hover,
.CategoryFlexButton.GrayBack:hover,
.CategoryFlexButton.RedBack:hover,
.BlogFlexButton:hover, .ResourceFlexButton:hover, .TwoColumnFlexButton:hover {
  background-color: #2C4690;
}

/* Carousel product cards */
.Carousel h2, .ControlHeader { color: #111111; }
.Carousel li {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 12px;
  transition: box-shadow .18s, border-color .18s, transform .18s;
}
.Carousel li:hover {
  box-shadow: 0 16px 34px rgba(17,17,17,.11);
  border-color: #d4dbe8;
  transform: translateY(-3px);
}
.Carousel li a { font-family: var(--font-heading); font-weight: 600; color: #111111; }
.Carousel li a:hover { color: #2C4690; }

/* Price emphasis — navy instead of red */
.AsLowAsPrice { color: #5c6677; font-family: var(--font-sans-serif); }
.AsLowAsPriceEmphasis {
  color: #111111;
  font-family: var(--font-heading);
  font-weight: 800;
}
.lblPrice, .CategoryProductPrice {
  color: #111111;
  font-family: var(--font-heading);
  font-weight: 800;
}

/* ---------- 8. PRODUCT CARDS (grid/category) --------------- */
.homepage-product, .category-product {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  transition: box-shadow .18s, border-color .18s, transform .18s;
}
.homepage-product:hover, .category-product:hover {
  box-shadow: 0 16px 34px rgba(17,17,17,.11);
  border-color: #d4dbe8;
  transform: translateY(-3px);
}
.homepage-product .thumbnail, .category-product .thumbnail {
  background: linear-gradient(135deg,#f2f5fa,#e7edf6);
  border: none;
  border-radius: 0;
  margin-bottom: 0;
}
.quick-view {
  background: #111111;
  border-radius: 8px;
  font-family: var(--font-heading);
  font-weight: 700;
}
.quick-view:hover { background: #2C4690; }
.product-flag { border: none; box-shadow: none; }
.product-flag span {
  background: #2C4690;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: 5px 0;
}

/* Pagination */
.Pagination li > a, .pagination > li > a, .pagination > li > span {
  color: #2C4690;
  border-color: var(--border);
  border-radius: 8px;
}
.pagination > .active > a { background-color: #2C4690; border-color: #2C4690; }

/* ---------- 9. PRODUCT DETAILS ----------------------------- */
.ProductDetails h1.ProductDetailsProductName { letter-spacing: -.02em; }
.ProductDetails #lblPriceLabel {
  font-family: var(--font-heading);
  font-weight: 800;
  color: #111111;
}
.ProductDetailsQuantityPriceTable td:nth-child(even) {
  background-color: #2C4690;
  border-radius: 4px;
}
.ProductDetailsAvailability, #lblProductStatus { color: #2C4690; font-weight: 600; }
.varpicmax_img { border-radius: 8px; }
.ProductDetailsSelectedVariant {
  border-color: #2C4690;
  box-shadow: 0 0 0 3px rgba(44,70,144,.2);
}
/* jQuery-UI tabs on product page */
.ui-tabs .ui-tabs-panel { border: 1px solid var(--border); border-radius: 0 12px 12px 12px; }
.ui-state-active, .ui-widget-content .ui-state-active { background: #2C4690; }
.ui-state-active:hover, .ui-widget-content .ui-state-active:hover { background: #2C4690; }
.ui-state-default, .ui-widget-content .ui-state-default { background: #eef1f6; border-radius: 8px 8px 0 0; }

/* ---------- 10. CART / CHECKOUT ---------------------------- */
.well {
  background: #f6f8fb;
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: none;
}
.panel {
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: 0 10px 30px rgba(17,17,17,.05);
}
.SmallCartItem img { border-radius: 8px; }
.checkout label { font-weight: 600; color: #333c4d; }

/* ---------- 11. FOOTER ------------------------------------- */
.LayoutBottom {
  background: #111111;
  color: #9aa7bd;
}
.LayoutBottom p, .LayoutBottom span, .LayoutBottom li { color: #9aa7bd; }
.LayoutBottom .h4, .LayoutBottom .nav-header {
  font-family: var(--font-heading) !important;
  font-weight: 700;
  font-size: 13px !important;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #ffffff !important;
}
.LayoutBottom .h4 em, .LayoutBottom .nav-header em { font-style: normal; }
.LayoutBottom a { color: #9aa7bd; font-size: 14px; }
.LayoutBottom a:hover { color: #ffffff; }
.LayoutBottom a[href^="tel:"], .LayoutBottom a[href^="mailto:"] { color: #A8BAE4; }
.LayoutBottom .icon-facebook, .LayoutBottom .icon-twitter,
.LayoutBottom .icon-youtube, .LayoutBottom .icon-instagram,
.LayoutBottom .icon-pinterest, .LayoutBottom .icon-tumblr { color: #C6CCDE; }
.LayoutBottom hr { border-color: rgba(255,255,255,.08); }

/* ---------- 12. MISC --------------------------------------- */
.CategoryHeader, .page-header {
  border-bottom: none;
}
.breadcrumb { background: #f5f5f5; font-size: 13px; padding-left: 20px; }
.breadcrumb a { color: #5c6677; }
.breadcrumb a:hover { color: #2C4690; }
::selection { background: #2C4690; color: #fff; }

/* ============================================================
12. MODERN NAVY COMPONENT SYSTEM
Ported 1:1 from the approved "Storefront Redesign" mockup.
Values below are the mockup's literal values — do not round.
============================================================ */

:root {
  /* Ink */
  --mn-ink:          #111111;   /* deepest navy — utility bar, footer   */
  --mn-navy:         #111111;   /* heading / hero / nav navy            */
  --mn-action:       #2C4690;   /* action navy — secondary buttons      */
  --mn-blue:         #2C4690;   /* bright blue — primary CTA, accents   */
  --mn-blue-hover:   #1E3268;
  --mn-blue-soft:    #A8BAE4;   /* on-dark accent text                  */

  /* Text */
  --mn-text:         #111111;
  --mn-text-2:       #3c4657;
  --mn-text-3:       #5c6677;
  --mn-text-4:       #8a93a3;
  --mn-on-dark:      #C2CBE2;
  --mn-on-dark-2:    #9aa7bd;
  --mn-on-dark-3:    #C6CCDE;

  /* Lines & surfaces */
  --mn-border:       #e6e9f0;
  --mn-border-input: #d4d9e3;
  --mn-hairline:     #eef1f6;
  --mn-surface:      #ffffff;
  --mn-surface-2:    #f6f8fb;
  --mn-surface-3:    #F1F4FB;
  --mn-surface-4:    #F7F9FD;
  --mn-icon-well:    #EEF1F9;
  --mn-page:         #eef1f6;

  /* Status */
  --mn-green:        #2C4690;
  --mn-green-bg:     #FBE9EA;
  --mn-star:         #CB252B;
  --mn-danger:       #c0392b;

  /* Product image placeholder */
  --mn-ph:           linear-gradient(135deg,#f2f5fa,#e7edf6);
  --mn-ph-icon:      #b9c6dc;

  /* Geometry */
  --mn-container:    1400px;   /* v4: listing pages need room for a 4-up grid beside the filter rail */
  --mn-gutter:       28px;
  --mn-r-sm:         8px;
  --mn-r:            10px;
  --mn-r-md:         12px;
  --mn-r-lg:         14px;
  --mn-r-xl:         16px;
  --mn-r-2xl:        18px;
  --mn-r-pill:       100px;

  /* Elevation */
  --mn-shadow-card:  0 10px 30px rgba(17,17,17,.05);
  --mn-shadow-hover: 0 16px 34px rgba(17,17,17,.11);
  --mn-shadow-tile:  0 12px 28px rgba(44,70,144,.12);
  --mn-shadow-cta:   0 8px 20px rgba(44,70,144,.22);
}

/* ---------- 12.1 Layout primitives ------------------------- */
.mn-wrap {
  max-width: var(--mn-container);
  margin: 0 auto;
  padding-left: var(--mn-gutter);
  padding-right: var(--mn-gutter);
}
.mn-section { padding-top: 44px; padding-bottom: 20px; }
.mn-section--lead { padding-top: 56px; }

.mn-sec-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 20px;
  margin-bottom: 26px;
}
.mn-eyebrow {
  display: block;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--mn-blue);
}
.mn-sec-title {
  font-family: var(--font-heading);
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--mn-navy);
  margin-top: 8px;
}
.mn-sec-link {
  font-size: 14px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

/* ---------- 12.2 Buttons ----------------------------------- */
.mn-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--font-heading);
  font-weight: 700;
  border: none;
  cursor: pointer;
  border-radius: var(--mn-r);
  transition: background-color .15s, color .15s, border-color .15s, box-shadow .15s;
  text-decoration: none;
}
.mn-btn--primary { background: var(--mn-blue); color: #fff; font-size: 15px; padding: 15px 30px; }
.mn-btn--primary:hover, .mn-btn--primary:focus { background: var(--mn-blue-hover); color: #fff; }
.mn-btn--navy { background: var(--mn-action); color: #fff; font-size: 14px; padding: 13px 24px; border-radius: 9px; }
.mn-btn--navy:hover, .mn-btn--navy:focus { background: var(--mn-blue); color: #fff; }
.mn-btn--light { background: #fff; color: var(--mn-navy); font-size: 14px; padding: 13px 24px; border-radius: 9px; }
.mn-btn--ghost {
  background: rgba(255,255,255,.08);
  color: #fff;
  font-size: 15px;
  padding: 15px 28px;
  border: 1px solid rgba(255,255,255,.18);
}
.mn-btn--ghost:hover { background: rgba(255,255,255,.14); color: #fff; }
.mn-btn--outline {
  border: 1.5px solid var(--mn-action);
  background: none;
  color: var(--mn-action);
  padding: 11px;
  font-weight: 600;
  font-size: 14px;
  font-family: var(--font-sans-serif);
}
.mn-btn--outline:hover { background: var(--mn-icon-well); color: var(--mn-action); }
.mn-btn--block { width: 100%; }

/* ---------- 12.3 Utility bar ------------------------------- */
.mn-util {
  background: #CB252B !important;
  color: #FFF !important;
  font-size: 12.5px;
  letter-spacing: .02em;
}
.mn-util__inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding-top: 7px;
  padding-bottom: 7px;
}
.mn-util__group { display: flex; gap: 22px; align-items: center; }
.mn-util a { color: var(--mn-on-dark-3); }
.mn-util a:hover { color: #fff; }
.mn-util__hours { opacity: .85; }

/* ---------- 12.4 Header ------------------------------------ */
.mn-head { background: #fff; border-bottom: 1px solid var(--mn-border); }
.mn-head__inner {
  display: flex;
  align-items: center;
  gap: 34px;
  padding-top: 0px;
  padding-bottom: 0px;
  margin-bottom: 0px;
}
.mn-head__logo { display: flex; align-items: center; flex-shrink: 0; }
.mn-head__logo img { height: 56px; width: auto; object-fit: contain; display: block; }

.mn-head__search { flex: 1; max-width: 600px; }
/* ##SEARCHBOX## renders its own input + button; these rules re-skin it. */
.mn-head__search .h-search,
.mn-head__search > div {
  display: flex;
  border: 1.5px solid var(--mn-border-input);
  border-radius: var(--mn-r);
  overflow: hidden;
  transition: border-color .15s;
}
.mn-head__search:focus-within > div,
.mn-head__search:focus-within .h-search { border-color: var(--mn-blue); }
.mn-head__search input[type=text] {
  flex: 1;
  border: none !important;
  outline: none;
  padding: 13px 16px;
  font-size: 14.5px;
  font-family: inherit;
  color: var(--mn-text);
  background: transparent;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.mn-head__search input[type=submit],
.mn-head__search button,
.mn-head__search .ThemeButton {
  border: none !important;
  background: var(--mn-action) !important;
  color: #fff !important;
  padding: 0 22px !important;
  font-size: 15px;
  cursor: pointer;
  border-radius: 0 !important;
  display: flex;
  align-items: center;
  gap: 8px;
}
.mn-head__search button:hover, .mn-head__search .ThemeButton:hover { background: var(--mn-blue) !important; }

.mn-head__actions { display: flex; align-items: center; gap: 26px; flex-shrink: 0; }
.mn-act { display: flex; align-items: center; gap: 9px; color: var(--mn-text); position: relative; }
.mn-act:hover { color: var(--mn-text); }
.mn-act > i { font-size: 19px; color: var(--mn-action); }
.mn-act__stack { line-height: 1.2; }
.mn-act__label { display: block; font-size: 11px; color: var(--mn-text-4); }
.mn-act__value { display: block; font-size: 13.5px; font-weight: 600; }
.mn-act__icon { position: relative; display: inline-flex; }
.mn-act__count {
  position: absolute;
  top: -9px; right: -11px;
  background: var(--mn-blue);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
}

/* ---------- 12.5 Primary nav ------------------------------- */
.mn-nav { background: #2C4690 !important; }
.mn-nav__inner { display: flex; align-items: stretch; padding-left: var(--mn-gutter); padding-right: var(--mn-gutter); }
.mn-nav .navbar { flex: 1 1 auto; min-width: 0; }
.mn-nav__all, .mn-nav__deals { flex: 0 0 auto; }
.mn-nav__all {
  display: flex;
  align-items: center;
  gap: 11px;
  background: var(--mn-blue);
  color: #fff;
  border: none;
  padding: 0 22px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  letter-spacing: .01em;
  white-space: nowrap;
}
.mn-nav__all:hover, .mn-nav__all:focus { background: var(--mn-blue-hover); color: #fff; }
.mn-nav__all i { font-size: 13px; }
.mn-nav__deals {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 4px;
  color: var(--mn-blue-soft);
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
}
.mn-nav__deals:hover { color: #fff; }

/* MenuBar widget renders a Bootstrap navbar — reskin it in place. */
.mn-nav .navbar,
.mn-nav .navbar.navbar-default {
  background: transparent !important;
  border: none !important;
  margin: 0;
  min-height: 0;
  border-radius: 0;
}
.mn-nav .navbar-collapse { padding: 0; border: none; box-shadow: none; }
.mn-nav .navbar-nav {
  margin: 0;
  padding: 0;
  display: flex;
  gap: 2px;
  flex-wrap: nowrap;
  list-style: none;   /* don't rely on Bootstrap's .nav reset */
}
.mn-nav .navbar-nav > li { flex: 0 0 auto; list-style: none; }
.mn-nav .navbar-nav > li > a {
  display: flex;
  align-items: center;
  white-space: nowrap;
  padding: 14px 9px;
  color: #d3dbe9 !important;
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: .01em;
  background: transparent !important;
  border-bottom: 2px solid transparent;
}
.mn-nav .navbar-nav > li > a:hover,
.mn-nav .navbar-nav > .open > a {
  color: #fff !important;
  background: rgba(255,255,255,.05) !important;
  border-bottom-color: var(--mn-blue);
}

/* ---------- 12.6 Announcement bar -------------------------- */
.mn-announce {
  background: var(--mn-surface-3);
  border-bottom: 1px solid var(--mn-border);
  color: var(--mn-action);
  font-size: 13px;
  font-weight: 600;
  text-align: center;
  padding: 5px 20px;
  letter-spacing: .01em;
}
.mn-announce i { margin-right: 8px; }

/* ---------- 12.7 Hero -------------------------------------- */
.mn-hero { position: relative; background: var(--mn-navy); overflow: hidden; }
.mn-hero__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 40px;
  min-height: 460px;
}
.mn-hero__copy { padding: 56px 0; position: relative; z-index: 2; }
.mn-hero__badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(44,70,144,.16);
  color: var(--mn-blue-soft);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 7px 14px;
  border-radius: var(--mn-r-pill);
}
.mn-hero__title {
  color: #fff;
  font-family: var(--font-heading);
  font-size: 52px;
  line-height: 1.04;
  font-weight: 800;
  letter-spacing: -.02em;
  margin: 22px 0 0;
}
.mn-hero__lede { color: var(--mn-on-dark); font-size: 17px; line-height: 1.6; margin: 20px 0 0; max-width: 440px; }
.mn-hero__cta { display: flex; gap: 14px; margin-top: 32px; flex-wrap: wrap; }
.mn-hero__stats { display: flex; gap: 26px; margin-top: 38px; }
.mn-hero__stat-n { font-family: var(--font-heading); font-weight: 800; font-size: 22px; color: #fff; }
.mn-hero__stat-l { font-size: 12.5px; color: #8a97b3; }
.mn-hero__rule { width: 1px; background: rgba(255,255,255,.12); }
.mn-hero__art { align-self: stretch; position: relative; }
.mn-hero__art-img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.mn-hero__art-fade {
  position: absolute; inset: 0;
  background: linear-gradient(90deg,#111111 0%,rgba(17,17,17,.35) 30%,rgba(17,17,17,0) 60%);
}

/* ---------- 12.8 Value bar --------------------------------- */
.mn-value { background: #fff; border-bottom: 1px solid var(--mn-border); }
.mn-value__grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 12px;
  padding-top: 22px;
  padding-bottom: 22px;
}
.mn-value__item { display: flex; align-items: center; gap: 14px; padding: 6px 8px; }
.mn-value__icon {
  width: 44px; height: 44px; flex-shrink: 0;
  border-radius: 11px;
  background: var(--mn-icon-well);
  display: flex; align-items: center; justify-content: center;
}
.mn-value__icon i { color: var(--mn-blue); font-size: 18px; }
.mn-value__title { font-family: var(--font-heading); font-weight: 700; font-size: 14.5px; color: var(--mn-navy); }
.mn-value__sub { font-size: 12.5px; color: var(--mn-text-3); }

/* ---------- 12.9 Category tiles ---------------------------- */
.mn-tiles { display: grid; grid-template-columns: repeat(4,1fr); gap: 16px; }
.mn-tile {
  display: block;
  background: var(--mn-surface-2);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  padding: 22px;
  transition: all .18s;
}
.mn-tile:hover {
  border-color: var(--mn-blue);
  background: #fff;
  box-shadow: var(--mn-shadow-tile);
}
.mn-tile__icon {
  width: 52px; height: 52px;
  border-radius: var(--mn-r-md);
  background: var(--mn-navy);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 16px;
}
.mn-tile__icon i { color: var(--mn-blue-soft); font-size: 21px; }
.mn-tile__name { font-family: var(--font-heading); font-weight: 700; font-size: 15.5px; color: var(--mn-navy); }
.mn-tile__count { font-size: 12.5px; color: var(--mn-text-4); margin-top: 4px; }

/* ---------- 12.10 Product card ----------------------------- */
.mn-grid-4 { display: grid; grid-template-columns: repeat(4,1fr); gap: 40px; }
.mn-grid-3 { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; }

.mn-card {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: all .18s;
}
.mn-card:hover {
  box-shadow: var(--mn-shadow-hover);
  border-color: #d4dbe8;
  transform: translateY(-3px);
}
.mn-card__media {
  position: relative;
  aspect-ratio: 1/1;
  background: var(--mn-ph);
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: 1px solid var(--mn-hairline);
}
.mn-card__media img { max-width: 100%; max-height: 100%; object-fit: contain; mix-blend-mode: multiply; }
.mn-card__badge {
  position: absolute; top: 12px; left: 12px;
  background: var(--mn-navy);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: 6px;
  z-index: 2;
}
.mn-card__wish {
  position: absolute; top: 10px; right: 10px;
  width: 34px; height: 34px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--mn-border);
  color: var(--mn-text-4);
  cursor: pointer;
  z-index: 2;
  display: flex; align-items: center; justify-content: center;
}
.mn-card__wish:hover { color: var(--mn-blue); border-color: var(--mn-blue); }
.mn-card__sku {
  position: absolute; bottom: 10px;
  font-family: monospace;
  font-size: 10px;
  color: #9aa7bd;
  letter-spacing: .03em;
}
.mn-card__body { padding: 16px 16px 18px; display: flex; flex-direction: column; flex: 1; }
.mn-card__cat {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--mn-blue);
  letter-spacing: .03em;
  text-transform: uppercase;
}
.mn-card__name {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 15px;
  color: var(--mn-navy);
  line-height: 1.3;
  margin: 6px 0 0;
  min-height: 39px;
  display: block;
}
.mn-card__name:hover { color: var(--mn-blue); }
.mn-card__rating { display: flex; align-items: center; gap: 6px; margin-top: 8px; }
.mn-card__stars { color: var(--mn-star); font-size: 12px; letter-spacing: 1px; }
.mn-card__reviews { font-size: 11.5px; color: var(--mn-text-4); }
.mn-card__foot {
  margin-top: auto;
  padding-top: 14px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px;
}
.mn-card__price { font-family: var(--font-heading); font-weight: 800; font-size: 20px; color: var(--mn-navy); }
.mn-card__unit { font-size: 11px; color: var(--mn-text-4); }
.mn-card__was { font-size: 12px; color: var(--mn-text-4); text-decoration: line-through; }
/* Add-to-cart square. $$ADDTOCARTBUTTON$$ renders an <input>; both are covered. */
.mn-card__add,
.mn-card__addwrap input[type=submit],
.mn-card__addwrap input[type=image] {
  width: 42px; height: 42px;
  border-radius: 11px;
  background: var(--mn-action) !important;
  color: #fff !important;
  border: none !important;
  cursor: pointer;
  font-size: 15px;
  transition: background .15s;
  display: flex; align-items: center; justify-content: center;
  padding: 0 !important;
}
.mn-card__add:hover,
.mn-card__addwrap input[type=submit]:hover { background: var(--mn-blue) !important; }

/* ---------- 12.11 Breadcrumb + page head ------------------- */
.mn-crumb {
  font-size: 13px;
  color: var(--mn-text-3);
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding-top: 16px;
}
.mn-crumb a { color: var(--mn-text-3); }
.mn-crumb a:hover { color: var(--mn-blue); }
.mn-crumb > *:not(:last-child):not(a)::after { color: #c3ccd9; }
.mn-crumb .mn-crumb__sep { color: #c3ccd9; }
.mn-crumb .mn-crumb__here { color: var(--mn-navy); font-weight: 600; }

.mn-pagehead { padding: 18px 0 8px; }
.mn-pagehead h1 {
  font-family: var(--font-heading);
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--mn-navy);
  margin-top: 8px;
}
.mn-pagehead p { color: var(--mn-text-3); font-size: 14.5px; max-width: 640px; margin: 10px 0 0; line-height: 1.6; }

/* ---------- 12.12 Category layout + filters ---------------- */
.mn-cat-layout {
  display: grid;
  grid-template-columns: 250px 1fr;
  gap: 28px;
  align-items: start;
  padding: 22px 0 56px;
}
.mn-filters { display: flex; flex-direction: column; gap: 14px; }
.mn-filter {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  padding: 20px;
}
.mn-filter__title {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--mn-navy);
  margin-bottom: 14px;
}
.mn-filter__list { display: flex; flex-direction: column; gap: 11px; }
.mn-filter__list label,
.mn-filter__list .AttributeNavigationItem {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13.5px;
  color: var(--mn-text-2);
  cursor: pointer;
  font-weight: 400;
  margin: 0;
}
.mn-filter__list a { color: var(--mn-text-2); }
.mn-filter__list a:hover { color: var(--mn-blue); }
.mn-filter__count { color: var(--mn-text-4); font-size: 12px; }

.mn-promo-card {
  background: var(--mn-navy);
  border-radius: var(--mn-r-lg);
  padding: 20px;
  color: #fff;
}
.mn-promo-card__title { font-family: var(--font-heading); font-weight: 800; font-size: 16px; }
.mn-promo-card p { color: var(--mn-on-dark); font-size: 13px; line-height: 1.6; margin: 8px 0 14px; }
.mn-promo-card a {
  display: inline-block;
  background: var(--mn-blue);
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  padding: 10px 18px;
  border-radius: var(--mn-r-sm);
}
.mn-promo-card a:hover { background: var(--mn-blue-hover); color: #fff; }

.mn-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  background: var(--mn-surface-2);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  padding: 12px 18px;
  margin-bottom: 20px;
  font-size: 13.5px;
  color: var(--mn-text-3);
}
.mn-toolbar strong { color: var(--mn-navy); }
.mn-toolbar__right { display: flex; align-items: center; gap: 10px; }
.mn-toolbar select {
  background: #fff;
  border: 1px solid var(--mn-border-input);
  border-radius: var(--mn-r-sm);
  padding: 8px 14px;
  font-weight: 600;
  color: var(--mn-navy);
  font-family: inherit;
  font-size: 13.5px;
}

/* ---------- 12.13 Pagination ------------------------------- */
.mn-pager { display: flex; justify-content: center; gap: 8px; margin-top: 32px; flex-wrap: wrap; }
.mn-pager a, .mn-pager span, .mn-pager li > a {
  width: 40px; height: 40px;
  border-radius: var(--mn-r);
  border: 1px solid var(--mn-border);
  color: var(--mn-navy);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
}
.mn-pager a:hover { border-color: var(--mn-blue); color: var(--mn-blue); }
.mn-pager .current, .mn-pager .active > a, .mn-pager .active > span {
  background: var(--mn-action);
  border-color: var(--mn-action);
  color: #fff;
  font-weight: 700;
}

/* ---------- 12.14 Product detail --------------------------- */
.mn-pdp { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-items: start; padding: 20px 0 8px; }
.mn-pdp__stage {
  position: relative;
  background: var(--mn-ph);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-xl);
  aspect-ratio: 1/.92;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.mn-pdp__stage img { max-width: 92%; max-height: 92%; object-fit: contain; mix-blend-mode: multiply; }
.mn-pdp__ship-flag {
  position: absolute; top: 14px; left: 14px;
  background: var(--mn-blue);
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: var(--mn-r-pill);
  z-index: 2;
}
.mn-pdp__thumbs { display: flex; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.mn-pdp__thumbs a, .mn-pdp__thumbs img, .mn-pdp__thumb {
  width: 84px; height: 84px;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r);
  background: var(--mn-ph);
  display: flex; align-items: center; justify-content: center;
  object-fit: contain;
  overflow: hidden;
}
.mn-pdp__thumbs a:hover, .mn-pdp__thumbs .selected { border: 2px solid var(--mn-blue); }

.mn-buybox {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-xl);
  box-shadow: var(--mn-shadow-card);
  padding: 28px;
}
.mn-buybox h1 {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 26px;
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--mn-navy);
  margin: 0 0 6px;
}
.mn-buybox__meta {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 6px 12px;
  color: var(--mn-text-4);
  font-size: 13px;
  margin-bottom: 8px;
}
.mn-buybox__meta .mn-sep { color: #c3ccd9; }
.mn-pill-green {
  background: var(--mn-green-bg);
  color: var(--mn-green);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 3px 10px;
  border-radius: var(--mn-r-pill);
}
.mn-buybox__rating { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; font-size: 13px; }
.mn-buybox__rating .mn-card__stars { font-size: 13px; letter-spacing: 2px; }

.mn-priceblock {
  background: var(--mn-surface-4);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  padding: 16px 18px;
  margin-bottom: 14px;
}
.mn-priceblock__row { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.mn-priceblock__now { font-family: var(--font-heading); font-weight: 800; font-size: 30px; color: var(--mn-navy); }
.mn-priceblock__unit { color: var(--mn-text-3); font-size: 14px; }
.mn-priceblock__unit strong { color: var(--mn-navy); }
.mn-priceblock__was { color: var(--mn-text-4); font-size: 14px; text-decoration: line-through; }
.mn-priceblock__stock { display: flex; gap: 16px; margin-top: 8px; font-size: 13px; flex-wrap: wrap; }
.mn-instock { color: var(--mn-green); font-weight: 600; }
.mn-ships { color: var(--mn-text-3); }

/* Volume tiers — wraps $$QTYBREAKS$$ / $$DISCOUNTLIST$$ output */
.mn-tiers { border: 1px solid var(--mn-border); border-radius: var(--mn-r-md); overflow: hidden; margin-bottom: 16px; }
.mn-tiers__head {
  background: var(--mn-navy);
  color: #fff;
  padding: 10px 16px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.mn-tiers__head-l {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 12.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.mn-tiers__head-l i { color: var(--mn-blue-soft); margin-right: 8px; }
.mn-tiers__head-r { font-size: 12px; color: var(--mn-blue-soft); font-weight: 600; }
.mn-tiers__body,
.mn-tiers table {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 1px;
  background: var(--mn-border);
  width: 100%;
}
.mn-tier {
  background: #fff;
  border-top: 2px solid transparent;
  padding: 12px 8px;
  text-align: center;
}
.mn-tier--best { background: var(--mn-surface-3); border-top-color: var(--mn-blue); }
.mn-tier__range { font-size: 11px; font-weight: 700; color: var(--mn-text-4); letter-spacing: .03em; text-transform: uppercase; }
.mn-tier--best .mn-tier__range { color: var(--mn-blue); }
.mn-tier__price { font-family: var(--font-heading); font-weight: 800; font-size: 17px; color: var(--mn-navy); margin-top: 4px; }
.mn-tier__unit { font-size: 11px; color: var(--mn-text-4); margin-top: 2px; }
.mn-tier__save { font-size: 11px; font-weight: 700; color: var(--mn-green); margin-top: 3px; min-height: 13px; }

.mn-buyrow { display: flex; gap: 12px; margin-bottom: 12px; }
.mn-qty {
  display: flex;
  align-items: center;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r);
  background: #fff;
  overflow: hidden;
  flex-shrink: 0;
}
.mn-qty button, .mn-qty .QtySpinnerBtn {
  padding: 12px 16px;
  color: var(--mn-text-3);
  font-size: 18px;
  border: none;
  background: none;
  cursor: pointer;
  line-height: 1;
}
.mn-qty button:first-child { border-right: 1px solid var(--mn-border); }
.mn-qty button:last-child  { border-left: 1px solid var(--mn-border); }
.mn-qty input[type=text] {
  width: 62px;
  padding: 12px 8px;
  font-weight: 600;
  color: var(--mn-navy);
  text-align: center;
  border: none !important;
  outline: none;
  box-shadow: none !important;
  border-radius: 0 !important;
  font-family: inherit;
}
.mn-atc,
.mn-atc input[type=submit],
.mn-atc input[type=image] {
  flex: 1;
  background: var(--mn-blue) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--mn-r) !important;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 16px;
  cursor: pointer;
  padding: 15px !important;
  width: 100%;
}
.mn-atc:hover, .mn-atc input[type=submit]:hover { background: var(--mn-blue-hover) !important; }
.mn-buybox__secondary { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.mn-assurance {
  display: flex; flex-wrap: wrap;
  gap: 8px 22px;
  font-size: 13px;
  color: var(--mn-text-3);
  border-top: 1px solid var(--mn-hairline);
  padding-top: 14px;
}
.mn-assurance i { color: var(--mn-blue); margin-right: 6px; }

/* Accordion panels */
.mn-panels { display: flex; flex-direction: column; gap: 12px; padding: 20px 0 8px; }
.mn-panel {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  padding: 18px 22px;
}
.mn-panel--tint { background: var(--mn-surface-3); }
.mn-panel__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-heading);
  font-weight: 700;
  color: var(--mn-navy);
  font-size: 15px;
  cursor: pointer;
}
.mn-panel--tint .mn-panel__head { color: var(--mn-action); }
.mn-panel__head i { color: var(--mn-text-4); transition: transform .18s; }
.mn-panel--tint .mn-panel__head i { color: var(--mn-action); }
.mn-panel.is-collapsed .mn-panel__body { display: none; }
.mn-panel.is-collapsed .mn-panel__head i { transform: rotate(180deg); }
.mn-panel__body { margin-top: 12px; }
.mn-panel__body p { color: var(--mn-text-2); font-size: 14px; line-height: 1.65; margin: 0; max-width: 900px; }

.mn-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.mn-chip {
  background: #fff;
  border: 1px solid #d9e2f2;
  border-radius: var(--mn-r-pill);
  padding: 6px 14px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--mn-action);
}
.mn-chip i { font-size: 11px; margin-right: 5px; }
.mn-chip--plain { background: var(--mn-surface-2); border-color: var(--mn-border); color: var(--mn-text-2); }
.mn-chip--more { border: 1px dashed var(--mn-ph-icon); background: none; color: var(--mn-blue); }

.mn-crossbar {
  background: linear-gradient(90deg,#2C4690,#111111);
  border-radius: var(--mn-r-md);
  padding: 16px 22px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.mn-crossbar__text { color: #fff; font-size: 14px; }
.mn-crossbar__text strong { font-family: var(--font-heading); font-weight: 800; }
.mn-crossbar__text span { color: var(--mn-on-dark); }

.mn-specs {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 1px;
  background: var(--mn-hairline);
  border: 1px solid var(--mn-hairline);
  border-radius: var(--mn-r);
  overflow: hidden;
  margin-top: 14px;
}
.mn-spec { background: #fff; padding: 12px 16px; }
.mn-spec__label { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--mn-text-4); }
.mn-spec__value { font-size: 14px; font-weight: 600; color: var(--mn-navy); margin-top: 3px; }

/* ---------- 12.15 Cart ------------------------------------- */
.mn-cart-title { font-family: var(--font-heading); font-size: 32px; font-weight: 800; letter-spacing: -.02em; color: var(--mn-navy); }
.mn-cart-title span { color: var(--mn-text-4); font-weight: 600; font-size: 18px; }
.mn-cart-layout { display: grid; grid-template-columns: 1fr 360px; gap: 28px; align-items: start; margin-top: 24px; }
.mn-cart-items { display: flex; flex-direction: column; gap: 14px; }
.mn-cart-item {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  padding: 18px;
  display: grid;
  grid-template-columns: 88px 1fr auto auto auto;
  gap: 18px;
  align-items: center;
}
.mn-cart-item__media {
  width: 88px; height: 88px;
  border-radius: var(--mn-r);
  background: var(--mn-ph);
  border: 1px solid var(--mn-hairline);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.mn-cart-item__media img { max-width: 100%; max-height: 100%; object-fit: contain; mix-blend-mode: multiply; }
.mn-cart-item__name { font-family: var(--font-heading); font-weight: 600; font-size: 15px; color: var(--mn-navy); line-height: 1.3; }
.mn-cart-item__meta { font-size: 12.5px; color: var(--mn-text-4); margin-top: 5px; }
.mn-cart-item__stock { font-size: 12.5px; color: var(--mn-green); font-weight: 600; margin-top: 5px; }
.mn-cart-item__total { font-family: var(--font-heading); font-weight: 800; font-size: 17px; color: var(--mn-navy); min-width: 76px; text-align: right; }
.mn-cart-item__remove { border: none; background: none; color: var(--mn-text-4); cursor: pointer; font-size: 15px; }
.mn-cart-item__remove:hover { color: var(--mn-danger); }
.mn-qty--sm { border-radius: 9px; }
.mn-qty--sm button { padding: 9px 13px; font-size: 15px; }
.mn-qty--sm input[type=text] { padding: 9px 8px; width: 52px; font-size: 14px; }

.mn-cart-actions { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 6px; flex-wrap: wrap; }
.mn-coupon { display: flex; gap: 10px; }
.mn-coupon input[type=text] {
  border: 1px solid var(--mn-border-input);
  border-radius: 9px;
  padding: 11px 14px;
  font-size: 13.5px;
  font-family: inherit;
  outline: none;
  width: 160px;
}
.mn-coupon input[type=submit], .mn-coupon button {
  background: var(--mn-navy) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 9px !important;
  padding: 0 18px !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
}
.mn-coupon input[type=submit]:hover { background: var(--mn-action) !important; }

.mn-summary {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-xl);
  box-shadow: var(--mn-shadow-card);
  padding: 24px;
}
.mn-summary--sticky { position: sticky; top: 66px; }
.mn-summary__title { font-family: var(--font-heading); font-weight: 800; font-size: 18px; color: var(--mn-navy); margin-bottom: 18px; }
.mn-summary__lines { display: flex; flex-direction: column; gap: 12px; font-size: 14px; color: var(--mn-text-2); }
.mn-summary__line { display: flex; justify-content: space-between; gap: 12px; }
.mn-summary__line span:last-child { font-weight: 600; color: var(--mn-navy); }
.mn-summary__free { font-weight: 700; color: var(--mn-green) !important; }
.mn-summary__total {
  border-top: 1px solid var(--mn-hairline);
  margin: 16px 0;
  padding-top: 16px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.mn-summary__total-l { font-family: var(--font-heading); font-weight: 700; font-size: 15px; color: var(--mn-navy); }
.mn-summary__total-v { font-family: var(--font-heading); font-weight: 800; font-size: 26px; color: var(--mn-navy); }
.mn-checkout-btn,
.mn-checkout-btn input[type=submit],
.mn-checkout-btn input[type=image] {
  width: 100%;
  background: var(--mn-blue) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--mn-r) !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 15.5px;
  cursor: pointer;
}
.mn-checkout-btn:hover, .mn-checkout-btn input[type=submit]:hover { background: var(--mn-blue-hover) !important; }
.mn-secure {
  display: flex; justify-content: center; gap: 8px;
  margin-top: 14px;
  font-size: 12.5px;
  color: var(--mn-text-4);
  align-items: center;
}
.mn-secure i { color: var(--mn-green); }

/* ---------- 12.16 Checkout --------------------------------- */
.mn-co-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.mn-co-head h1 { font-family: var(--font-heading); font-size: 32px; font-weight: 800; letter-spacing: -.02em; color: var(--mn-navy); }
.mn-co-head__secure { font-size: 13px; color: var(--mn-text-4); display: inline-flex; align-items: center; gap: 7px; }
.mn-co-head__secure i { color: var(--mn-green); }
.mn-co-layout { display: grid; grid-template-columns: 1fr 380px; gap: 28px; align-items: start; margin-top: 24px; }
.mn-co-forms { display: flex; flex-direction: column; gap: 16px; }
.mn-co-card {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-xl);
  padding: 26px;
}
.mn-co-card__head { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; justify-content: space-between; }
.mn-co-card__head-l { display: flex; align-items: center; gap: 12px; }
.mn-step {
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--mn-navy);
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.mn-co-card__title { font-family: var(--font-heading); font-weight: 800; font-size: 17px; color: var(--mn-navy); }
.mn-co-cards { display: flex; gap: 8px; color: #7d8aa3; font-size: 24px; }

/* Field skin — applied broadly inside checkout so control-rendered
inputs pick it up without restructuring the form markup. */
.mn-co-card input[type=text],
.mn-co-card input[type=email],
.mn-co-card input[type=tel],
.mn-co-card input[type=password],
.mn-co-card select,
.mn-co-card textarea {
  border: 1px solid var(--mn-border-input);
  border-radius: 9px;
  padding: 13px 14px;
  font-size: 14px;
  font-family: inherit;
  outline: none;
  width: 100%;
  color: var(--mn-text);
  background: #fff;
  box-shadow: none;
}
.mn-co-card input:focus, .mn-co-card select:focus, .mn-co-card textarea:focus {
  border-color: var(--mn-blue);
  box-shadow: 0 0 0 3px rgba(44,70,144,.15);
}
.mn-co-card label { font-size: 13.5px; color: var(--mn-text-2); font-weight: 600; }

/* Shipping method radio cards */
.mn-ship-opts { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; }
.mn-ship-opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--mn-border);
  border-radius: 11px;
  padding: 14px 16px;
  cursor: pointer;
  font-weight: 400;
  margin: 0;
}
.mn-ship-opt:hover { border-color: var(--mn-border-input); }
.mn-ship-opt.is-selected,
.mn-ship-opt:has(input:checked) {
  border: 1.5px solid var(--mn-blue);
  background: var(--mn-surface-3);
}
.mn-ship-opt__l { display: flex; align-items: center; gap: 12px; font-size: 14px; color: var(--mn-navy); }
.mn-ship-opt__price { font-weight: 600; color: var(--mn-navy); font-size: 14px; }
.mn-ship-opt__price--free { font-weight: 700; color: var(--mn-green); }

/* Order summary line items */
.mn-co-item { display: flex; gap: 12px; align-items: center; }
.mn-co-item__media {
  position: relative;
  width: 52px; height: 52px;
  border-radius: 9px;
  background: var(--mn-ph);
  border: 1px solid var(--mn-hairline);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  overflow: visible;
}
.mn-co-item__media img { max-width: 84%; max-height: 84%; object-fit: contain; mix-blend-mode: multiply; }
.mn-co-item__qty {
  position: absolute; top: -7px; right: -7px;
  background: var(--mn-navy);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  min-width: 18px; height: 18px;
  border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
}
.mn-co-item__name { flex: 1; font-size: 13px; color: var(--mn-navy); font-weight: 600; line-height: 1.35; }
.mn-co-item__total { font-family: var(--font-heading); font-weight: 700; font-size: 13.5px; color: var(--mn-navy); }
.mn-co-terms { font-size: 12px; color: var(--mn-text-4); text-align: center; margin: 12px 0 0; line-height: 1.5; }

/* Validation errors must stay legible — they are the only
surface for server-side checkout failures. */
.mn-co-card .ErrorText,
.mn-co-card .error,
.mn-co-card [id*="Error"] {
  color: var(--mn-danger);
  font-size: 12.5px;
  font-weight: 600;
  display: block;
  margin-top: 5px;
}

/* ---------- 12.17 Promo split ------------------------------ */
.mn-split { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.mn-split__panel {
  border-radius: var(--mn-r-2xl);
  padding: 40px;
  position: relative;
  overflow: hidden;
}
.mn-split__panel--dark { background: linear-gradient(135deg,#2C4690,#111111); color: #fff; }
.mn-split__panel--light { background: var(--mn-surface-2); border: 1px solid var(--mn-border); }
.mn-split__eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.mn-split__panel--dark  .mn-split__eyebrow { color: var(--mn-blue-soft); }
.mn-split__panel--light .mn-split__eyebrow { color: var(--mn-blue); }
.mn-split__title {
  font-family: var(--font-heading);
  font-size: 27px;
  font-weight: 800;
  letter-spacing: -.01em;
  margin: 12px 0 0;
  max-width: 320px;
  line-height: 1.1;
}
.mn-split__panel--light .mn-split__title { color: var(--mn-navy); }
/* Section 2 sets a dark colour on every h1-h6; headings that sit on a
dark surface must win it back or they render navy-on-navy. */
.mn-split__panel--dark .mn-split__title,
.mn-split__panel--dark h1, .mn-split__panel--dark h2,
.mn-split__panel--dark h3, .mn-split__panel--dark h4,
.mn-promo-card h1, .mn-promo-card h2, .mn-promo-card h3, .mn-promo-card h4,
.mn-crossbar h1, .mn-crossbar h2, .mn-crossbar h3, .mn-crossbar h4,
.mn-hero h1, .mn-hero h2, .mn-hero h3,
.mn-news h1, .mn-news h2, .mn-news h3,
.prnm-hero h1, .prnm-hero h2, .prnm-hero h3,
.prnm-newsletter h1, .prnm-newsletter h2, .prnm-newsletter h3,
.mn-foot h1, .mn-foot h2, .mn-foot h3, .mn-foot h4,
.mn-tiers__head h1, .mn-tiers__head h2, .mn-tiers__head h3 { color: #fff; }
.mn-split__panel p { font-size: 14.5px; line-height: 1.6; margin: 14px 0 26px; max-width: 320px; }
.mn-split__panel--dark  p { color: var(--mn-on-dark); }
.mn-split__panel--light p { color: var(--mn-text-3); }

/* ---------- 12.18 Newsletter ------------------------------- */
.mn-news { background: var(--mn-navy); }
.mn-news__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: center;
  padding-top: 48px;
  padding-bottom: 48px;
}
.mn-news__title { font-family: var(--font-heading); color: #fff; font-size: 26px; font-weight: 800; letter-spacing: -.01em; }
.mn-news__sub { color: var(--mn-blue-soft); font-size: 14.5px; margin-top: 10px; }
.mn-news__form { display: flex; gap: 12px; }
.mn-news__form input[type=text], .mn-news__form input[type=email] {
  flex: 1;
  border: 1px solid rgba(255,255,255,.18) !important;
  background: rgba(255,255,255,.06) !important;
  color: #fff !important;
  border-radius: var(--mn-r) !important;
  padding: 15px 18px !important;
  font-size: 14.5px;
  font-family: inherit;
  outline: none;
}
.mn-news__form input::placeholder { color: #8fa2c4; }
.mn-news__form input[type=submit], .mn-news__form button {
  background: var(--mn-blue) !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14.5px;
  padding: 0 28px !important;
  border: none !important;
  border-radius: var(--mn-r) !important;
  cursor: pointer;
}
.mn-news__form input[type=submit]:hover { background: var(--mn-blue-hover) !important; }

/* ---------- 12.19 Footer ----------------------------------- */
.mn-foot { background: #2C4690 !important; color: var(--mn-on-dark-2); }
.mn-foot__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: 36px;
  padding-top: 56px;
  padding-bottom: 30px;
}
.mn-foot__brand { font-family: var(--font-heading); font-weight: 900; font-size: 22px; color: #fff; }
.mn-foot__brand em { color: var(--mn-blue); font-style: normal; }
.mn-foot__about { font-size: 13.5px; line-height: 1.7; margin: 16px 0 20px; max-width: 280px; color: var(--mn-on-dark-2); }
.mn-foot__social { display: flex; gap: 12px; flex-wrap: wrap; padding-top: 20px; }
.mn-foot__social a {
  width: 38px; height: 38px;
  border-radius: 9px;
  background: rgba(255,255,255,.07);
  display: flex; align-items: center; justify-content: center;
  color: var(--mn-on-dark-3);
  font-size: 16px;
}
.mn-foot__social a:hover { background: var(--mn-blue); color: #fff; }
.mn-foot__coltitle,
.mn-foot .nav-header,
.mn-foot .h4 {
  font-family: var(--font-heading) !important;
  font-weight: 700;
  font-size: 13px !important;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #fff !important;
  margin-bottom: 16px;
  padding: 0;
}
.mn-foot ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.mn-foot ul > li > a {
  color: var(--mn-on-dark-2);
  font-size: 13.5px;
  padding: 0;
  background: none;
  display: inline;
}
.mn-foot ul > li > a:hover { color: #fff; background: none; }
.mn-foot__bar { border-top: 1px solid rgba(255,255,255,.08); }
.mn-foot__bar-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
  padding-top: 20px;
  padding-bottom: 20px;
  font-size: 12.5px;
}
.mn-foot__pay { display: flex; gap: 10px; align-items: center; }
.mn-foot__pay i { font-size: 26px; color: #7d8aa3; }
.mn-foot__pay-label { opacity: .6; margin-right: 4px; }

/* ---------- 12.20 Responsive ------------------------------- */
@media (max-width: 1100px) {
  .mn-grid-4 { grid-template-columns: repeat(3,1fr); }
  .mn-tiles  { grid-template-columns: repeat(3,1fr); }
  .mn-cat-layout { grid-template-columns: 210px 1fr; gap: 20px; }
  .mn-cart-layout, .mn-co-layout { grid-template-columns: 1fr 320px; }
}
@media (max-width: 900px) {
  .mn-hero__grid { grid-template-columns: 1fr; min-height: 0; }
  .mn-hero__art { display: none; }
  .mn-hero__title { font-size: 40px; }
  .mn-value__grid { grid-template-columns: repeat(2,1fr); }
  .mn-pdp { grid-template-columns: 1fr; }
  .mn-split, .mn-news__grid { grid-template-columns: 1fr; }
  .mn-cat-layout { grid-template-columns: 1fr; }
  .mn-cart-layout, .mn-co-layout { grid-template-columns: 1fr; }
  .mn-summary--sticky { position: static; }
  .mn-foot__grid { grid-template-columns: 1fr 1fr; }
  .mn-specs { grid-template-columns: repeat(2,1fr); }
  .mn-head__inner { flex-wrap: wrap; gap: 16px; }
  .mn-head__search { order: 3; flex-basis: 100%; max-width: none; }
}
@media (max-width: 680px) {
  :root { --mn-gutter: 16px; }
  .mn-grid-4, .mn-grid-3, .mn-tiles { grid-template-columns: repeat(2,1fr); }
  .mn-hero__title { font-size: 32px; }
  .mn-hero__stats { flex-wrap: wrap; gap: 16px; }
  .mn-hero__rule { display: none; }
  .mn-sec-title { font-size: 24px; }
  .mn-sec-head { flex-direction: column; align-items: flex-start; gap: 10px; }
  .mn-util__inner { flex-direction: column; gap: 8px; text-align: center; }
  .mn-util__group { flex-wrap: wrap; justify-content: center; gap: 14px; }
  .mn-cart-item { grid-template-columns: 64px 1fr; gap: 12px; }
  .mn-cart-item__media { width: 64px; height: 64px; }
  .mn-cart-item__total { text-align: left; }
  .mn-tiers__body, .mn-tiers table { grid-template-columns: repeat(2,1fr); }
  .mn-specs { grid-template-columns: 1fr; }
  .mn-foot__grid { grid-template-columns: 1fr; }
  .mn-buybox { padding: 20px; }
  .mn-buybox h1 { font-size: 22px; }
  .mn-co-card { padding: 18px; }
}

/* ---------- 12.21 Header widget slots ----------------------
The header row is composed of two Cart.com widget areas
(LeftMiddleHeaderWidgets / RightMiddleHeaderWidgets). These
wrappers let them behave as flex children without touching
the widget markup itself. */
.mn-head__logo-slot { flex-shrink: 0; display: flex; align-items: center; }
.mn-head__main-slot { flex: 1; display: flex; align-items: center; gap: 34px; min-width: 0; }
.mn-head__main-slot > div { display: contents; }
.mn-head__dd { position: relative; }
.mn-head__dd .dropdown-menu {
  left: auto; right: 0;
  min-width: 300px;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  box-shadow: 0 18px 40px rgba(17,17,17,.16);
  padding: 6px;
  margin-top: 10px;
}
.mn-gtm { display: none; }
@media (max-width: 900px) {
  .mn-head__main-slot { flex-wrap: wrap; gap: 16px; }
}

/* ---------- 12.22 Footer contact + payment ----------------- */
.mn-foot__contact { list-style: none; margin: 0 0 20px; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.mn-foot__contact a { color: var(--mn-on-dark-2); font-size: 13.5px; }
.mn-foot__contact a:hover { color: #fff; }
.mn-foot__contact i { color: var(--mn-blue-soft); width: 16px; margin-right: 8px; }
.mn-foot__paylogos { display: inline-flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.mn-foot__paylogos img { height: 34px; width: auto; opacity: .85; }
.mn-foot__paylogos img:hover { opacity: 1; }
.mn-foot__legal { display: none; }   /* Olark loader only — no visual output */

/* ---------- 12.23 Category page specifics ------------------
Overrides the theme's Bootstrap-era category markup so the
control-rendered output matches the Modern Navy card. */
.mn-crumb.breadcrumb {
  background: none;
  padding: 16px 0 0;
  margin: 0;
  border-radius: 0;
}
.mn-crumb.breadcrumb a { color: var(--mn-text-3); }
.mn-crumb.breadcrumb a:hover { color: var(--mn-blue); }
.mn-crumb.breadcrumb > *:last-child { color: var(--mn-navy); font-weight: 600; }

.mn-pagehead.page-header { border-bottom: none; margin: 0; padding: 18px 0 8px; }
.mn-pagehead__desc { color: var(--mn-text-3); font-size: 14.5px; max-width: 640px; margin-top: 10px; line-height: 1.6; }
.mn-pagehead__desc p { color: var(--mn-text-3); margin: 0 0 8px; }
.mn-cat-image { margin: 0 0 8px; }
.mn-cat-image img { max-width: 100%; height: auto; border-radius: var(--mn-r-lg); }
.mn-cat-footer { color: var(--mn-text-3); font-size: 14px; line-height: 1.7; margin-top: 32px; }

/* Child category chips */
.mn-subcats { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 20px; }
.mn-subcat {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--mn-surface-2);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-pill);
  padding: 6px 16px 6px 6px;
  transition: all .18s;
}
.mn-subcat:hover { border-color: var(--mn-blue); background: #fff; }
.mn-subcat__thumb { width: 34px; height: 34px; border-radius: 50%; overflow: hidden; background: var(--mn-ph); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.mn-subcat__thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }
.mn-subcat__thumb:empty { display: none; }
.mn-subcat__name a { font-size: 13.5px; font-weight: 600; color: var(--mn-navy); }
.mn-subcat__name a:hover { color: var(--mn-blue); }

/* Toolbar — control renders bare <select>s and a count string */
.mn-toolbar__count strong, .mn-toolbar__count b { color: var(--mn-navy); }
.mn-toolbar__label { color: var(--mn-text-3); }
.mn-toolbar select {
  background: #fff;
  border: 1px solid var(--mn-border-input);
  border-radius: var(--mn-r-sm);
  padding: 8px 14px;
  font-weight: 600;
  color: var(--mn-navy);
  font-size: 13.5px;
  height: auto;
  box-shadow: none;
}

/* Flags render as images/spans from shared content — normalise them */
.mn-card__badge img { max-height: 18px; width: auto; display: block; }
.mn-card__badge--alt { background: var(--mn-blue); }
.mn-card__badge:empty { display: none; }

/* The category control renders $$THUMBNAIL$$ as an <img> */
.mn-card__media img { max-width: 88%; max-height: 88%; object-fit: contain; mix-blend-mode: multiply; }

.mn-card__pricecol { display: flex; flex-direction: column; gap: 2px; }
.mn-card__pricecol .mn-card__price > * { font: inherit; color: inherit; }
.mn-card__extra { margin-top: 12px; }
.mn-card__blurb { font-size: 13px; color: var(--mn-text-3); line-height: 1.6; margin: 10px 0 0; }

/* Quantity box is required for add-to-cart to post a quantity,
but the design shows only the + button. Keep it in the form,
out of the layout. Do NOT use display:none — some browsers
skip serialising fields inside display:none containers in
older ASP.NET postback paths. */
.mn-qty-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* $$ADDTOCARTBUTTON$$ renders <input type=submit|image> */
.mn-card__addwrap { display: flex; align-items: center; position: relative; }
.mn-card__addwrap input[type=submit],
.mn-card__addwrap input[type=button],
.mn-card__addwrap .AddToCartThemeButton {
  width: 42px; height: 42px;
  border-radius: 11px !important;
  background: var(--mn-action) !important;
  border: none !important;
  color: #fff !important;
  font-size: 0 !important;          /* hide the control's own label   */
  cursor: pointer;
  padding: 0 !important;
  position: relative;
  transition: background .15s;
}
/* <input> is a replaced element — it cannot host ::after. The glyph
lives on the wrapper and is overlaid, click-through. */
.mn-card__addwrap { position: relative; }
.mn-card__addwrap::after {
  content: "\f067";                  /* fa-plus */
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 15px;
  color: #fff;
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.mn-card__addwrap input[type=submit]:hover,
.mn-card__addwrap .AddToCartThemeButton:hover { background: var(--mn-blue) !important; }

/* Pagination — control renders <li> children into $$PAGES$$ */
.mn-pager.pagination { display: flex; justify-content: center; gap: 8px; margin: 32px 0 0; padding: 0; }
.mn-pager.pagination > li { display: block; }
.mn-pager.pagination > li > a,
.mn-pager.pagination > li > span {
  width: 40px; height: 40px;
  border-radius: var(--mn-r) !important;
  border: 1px solid var(--mn-border);
  color: var(--mn-navy);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 14px;
  margin: 0;
  padding: 0;
  float: none;
}
.mn-pager.pagination > li > a:hover { border-color: var(--mn-blue); color: var(--mn-blue); background: #fff; }
.mn-pager.pagination > li.active > a,
.mn-pager.pagination > li.active > span,
.mn-pager.pagination > li > a.current {
  background: var(--mn-action);
  border-color: var(--mn-action);
  color: #fff;
  font-weight: 700;
}
.mn-pager.pagination > li:empty { display: none; }

/* Left column filter rail (AttributeNavigationLinks widget) */
.LayoutLeftColumnInner { display: flex; flex-direction: column; gap: 14px; }
.LayoutLeftColumnInner .well,
.LayoutLeftColumnInner .panel {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  padding: 20px;
  box-shadow: none;
}

/* ---------- 12.24 Filter rail ------------------------------ */
.mn-filters .mn-filter { padding: 20px; }
.mn-filters ul.nav.mn-filter__list { display: flex; flex-direction: column; gap: 0; margin: 0; padding: 0; }
.mn-filters .mn-filter__list > li { display: block; padding: 0; }

/* Each group header restarts a visual card block */
.mn-filter__title {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--mn-navy);
  margin: 18px 0 14px;
  padding-top: 18px;
  border-top: 1px solid var(--mn-hairline);
}
.mn-filter__list > li:first-child .mn-filter__title,
.mn-filter__title:first-child { margin-top: 0; padding-top: 0; border-top: none; }

.mn-filter__row { margin-bottom: 11px; }
.mn-filter__check {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13.5px;
  color: var(--mn-text-2);
  cursor: pointer;
  font-weight: 400;
  margin: 0;
  padding: 0;
}
.mn-filter__check input[type=checkbox] { margin: 0; }
.mn-filter__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 13.5px;
  color: var(--mn-text-2);
  padding: 0;
  background: none;
}
.mn-filter__link:hover { color: var(--mn-blue); background: none; }
.mn-filter__count {
  background: var(--mn-surface-2);
  color: var(--mn-text-4);
  border-radius: var(--mn-r-pill);
  font-size: 11.5px;
  font-weight: 600;
  padding: 2px 9px;
}
.mn-filter__apply { margin-top: 16px; }
.mn-filter__apply input[type=submit],
.mn-filter__apply .ThemeButton {
  width: 100%;
  background: var(--mn-action) !important;
  border: none !important;
  border-radius: var(--mn-r-sm) !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  padding: 10px 18px !important;
}
.mn-filter__apply input[type=submit]:hover { background: var(--mn-blue) !important; }

.mn-filters__toggle .navbar-brand {
  color: var(--mn-navy) !important;
  font-family: var(--font-heading);
  font-weight: 700;
}
@media screen and (min-width: 992px) {
  .mn-filters__body.navbar-collapse.collapse { display: block !important; height: auto !important; padding: 0; border: none; box-shadow: none; overflow: visible !important; }
}
@media screen and (max-width: 991px) {
  .mn-filters .mn-filter { padding: 16px; }
}

/* ---------- 12.25 Product page specifics ------------------- */
.mn-pdp__gallery { position: relative; }
.mn-pdp__stage.main-product-photo { display: flex; }
.mn-pdp__carousel { margin-top: 14px; }
.mn-pdp__thumbs { list-style: none; padding: 0; margin: 14px 0 0; }
.mn-pdp__thumbs > li { list-style: none; }
.mn-pdp__thumb img { max-width: 90%; max-height: 90%; object-fit: contain; }
.mn-pdp__flags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.mn-pdp__flags img { max-height: 22px; width: auto; }
.mn-pdp__flags > *:empty { display: none; }
.mn-pdp__share { margin-top: 16px; }

.mn-buybox__status { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; font-size: 13px; margin-bottom: 12px; }
.mn-buybox__status .mn-instock { font-weight: 700; }
.mn-buybox__status .mn-ships { color: var(--mn-text-3); }
.mn-buybox__writereview { font-size: 13px; }
.mn-buybox__bullets { font-size: 13.5px; color: var(--mn-text-2); line-height: 1.65; margin-bottom: 14px; }
.mn-buybox__bullets ul { padding-left: 18px; margin: 0; }
.mn-priceblock__now { font-family: var(--font-heading); font-weight: 800; font-size: 30px; color: var(--mn-navy); }
.mn-priceblock__now .AsLowAsPrice { font-size: 14px; font-weight: 400; color: var(--mn-text-3); }
.mn-priceblock__map { font-size: 13px; }
.mn-buybox__subscription:empty { display: none; }
.mn-buybox__subscription { margin-bottom: 12px; }

/* $$QUANTITY$$ renders an <input class="ProductDetailsQuantityTextBox">;
QtySpinner.js injects the - / + buttons around it. */
.mn-qty .ProductDetailsQuantityTextBox,
.mn-qty input[type=text] {
  width: 62px;
  padding: 12px 8px;
  text-align: center;
  font-weight: 600;
  color: var(--mn-navy);
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  background: transparent;
}
.mn-qty .qty-btn, .mn-qty .btn {
  border: none !important;
  background: none !important;
  color: var(--mn-text-3) !important;
  font-size: 18px;
  padding: 12px 16px !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.mn-atc { flex: 1; display: flex; }
.mn-atc input[type=submit],
.mn-atc input[type=image],
.mn-atc .AddToCartThemeButton {
  flex: 1;
  width: 100%;
  background: var(--mn-blue) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--mn-r) !important;
  font-family: var(--font-heading) !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  padding: 15px !important;
  cursor: pointer;
  text-shadow: none !important;
  box-shadow: none !important;
}
.mn-atc input[type=submit]:hover,
.mn-atc .AddToCartThemeButton:hover { background: var(--mn-blue-hover) !important; }

/* $$ADDTOWISHLIST$$ renders its own button — skin it to the outline style */
.mn-btn--outline-wrap input[type=submit],
.mn-btn--outline-wrap input[type=image],
.mn-btn--outline-wrap .ThemeButton {
  width: 100%;
  border: 1.5px solid var(--mn-action) !important;
  background: none !important;
  color: var(--mn-action) !important;
  border-radius: var(--mn-r) !important;
  padding: 11px !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  font-family: var(--font-sans-serif) !important;
  text-shadow: none !important;
  box-shadow: none !important;
}
.mn-btn--outline-wrap input[type=submit]:hover { background: var(--mn-icon-well) !important; }

/* $$DISCOUNTLIST$$ renders a <table> of quantity breaks.
Re-lay it out as the mockup's 4-up tier strip. */
.mn-tiers__body table {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  width: 100%;
  margin: 0;
  border: none;
  background: var(--mn-border);
}
/* Promote cells to grid items so the tier strip spans the full width
regardless of how many rows the control emits. */
.mn-tiers__body table thead,
.mn-tiers__body table tbody,
.mn-tiers__body table tr { display: contents; background: none; }
.mn-tiers__body table td,
.mn-tiers__body table th {
  background: #fff;
  border: none !important;
  border-top: 2px solid transparent !important;
  padding: 12px 8px !important;
  text-align: center;
  font-size: 12px;
  color: var(--mn-text-4);
  vertical-align: middle;
}
.mn-tiers__body table th {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.mn-tiers__body table td {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 17px;
  color: var(--mn-navy);
}
.mn-tiers__body table tr:last-child td:last-child,
.mn-tiers__body table td:last-child {
  background: var(--mn-surface-3);
  border-top-color: var(--mn-blue) !important;
}
.mn-tiers__body:empty, .mn-tiers:has(.mn-tiers__body:empty) { display: none; }
/* Control output path: body is a plain block, the table is the grid. */
.mn-tiers__body:has(table) { display: block; background: none; gap: 0; }

.mn-variant { margin-bottom: 14px; }
.mn-variant__label { font-size: 13.5px; color: var(--mn-navy); margin-bottom: 6px; }
.mn-variant__swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.mn-variant select, .mn-variant input[type=text] {
  border: 1px solid var(--mn-border-input);
  border-radius: var(--mn-r-sm);
  padding: 10px 12px;
  font-size: 14px;
  color: var(--mn-navy);
}

/* Product group grid */
.mn-groupgrid { overflow-x: auto; }
.mn-groupgrid table.ProductGroup { width: 100%; margin: 0; }
.mn-groupgrid .ProductGroupHeader th {
  background: var(--mn-navy);
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: .04em;
  text-transform: uppercase;
  border: none;
  padding: 12px 14px;
  white-space: nowrap;
}
.mn-groupgrid table.ProductGroup td {
  border-top: 1px solid var(--mn-hairline);
  padding: 12px 14px;
  font-size: 13.5px;
  color: var(--mn-text-2);
  vertical-align: middle;
}
.mn-groupgrid .ProductGroupAlternatingItem { background: var(--mn-surface-2); }
.mn-groupgrid__status { font-size: 12px; margin-top: 4px; }
.mn-groupgrid__total { text-align: right; font-family: var(--font-heading); font-weight: 800; font-size: 18px; color: var(--mn-navy); padding: 14px 0 0; }
.mn-groupgrid__atc { display: flex; justify-content: flex-end; margin-top: 14px; }

/* Reviews */
.mn-reviews__summary {
  background: var(--mn-surface-2);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  padding: 16px 18px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.mn-reviews__overall { font-family: var(--font-heading); font-weight: 700; font-size: 15px; color: var(--mn-navy); }
.mn-reviews__actions { display: flex; gap: 16px; font-size: 13.5px; }
.mn-reviews__list { display: flex; flex-direction: column; gap: 16px; }
.mn-review { border: 1px solid var(--mn-border); border-radius: var(--mn-r-md); padding: 16px 18px; }
.mn-review__head { display: flex; justify-content: space-between; gap: 12px; font-size: 12.5px; color: var(--mn-text-4); }
.mn-review__author { font-weight: 700; color: var(--mn-navy); }
.mn-review__stars { margin: 8px 0 6px; color: var(--mn-star); }
.mn-review__title { font-family: var(--font-heading); font-weight: 700; font-size: 15px; color: var(--mn-navy); }
.mn-review__body { font-size: 14px; color: var(--mn-text-2); line-height: 1.65; margin-top: 6px; }
.mn-review__body blockquote { border: none; padding: 0; margin: 0; font-size: inherit; }

/* Related items grid rendered by $$RELATED$$ */
#related .thumbnail, #related .homepage-product {
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  overflow: hidden;
}

/* ---------- 12.26 Cart page specifics ---------------------- */
.mn-cart-messages { margin: 0 0 16px; }
.mn-cart-messages:empty { display: none; }
.mn-cart-selectall { font-size: 13px; color: var(--mn-text-3); }
.mn-cart-purchased-head { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--mn-text-4); }
.mn-cart-item__info > div:empty { display: none; }
.mn-cart-item__meta > span:empty { display: none; }
.mn-cart-item__price { font-size: 13px; color: var(--mn-text-3); margin-top: 5px; }
.mn-cart-item__price del { color: var(--mn-text-4); margin-right: 6px; }
.mn-cart-item__price del:empty { display: none; }
.mn-cart-item__links { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 7px; font-size: 12.5px; }
.mn-cart-item__links a { color: var(--mn-text-4); }
.mn-cart-item__links a:hover { color: var(--mn-danger); }
.mn-cart-item__wishbtns { margin-top: 8px; display: flex; gap: 8px; flex-wrap: wrap; }
.mn-cart-item__qtycol { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.mn-cart-item__update input[type=submit],
.mn-cart-item__update .ThemeButton {
  background: none !important;
  border: none !important;
  color: var(--mn-blue) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  padding: 0 !important;
  text-shadow: none !important;
  box-shadow: none !important;
  text-decoration: underline;
}
.mn-cart-item__sub:empty { display: none; }
.mn-cart-item__sub { font-size: 11.5px; color: var(--mn-text-4); }
.mn-cart-item__total del { display: block; font-size: 12px; color: var(--mn-text-4); font-weight: 400; }
.mn-cart-item__total del:empty { display: none; }
.mn-cart-item__sflqty { font-size: 13px; color: var(--mn-text-3); }
.mn-cart-item__purchased { font-size: 13px; color: var(--mn-text-3); }

.mn-cart-buttons__row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.mn-cart-buttons input[type=submit],
.mn-cart-buttons .ThemeButton,
.mn-cart-buttons a {
  background: none !important;
  border: none !important;
  color: var(--mn-blue) !important;
  font-family: var(--font-sans-serif) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  padding: 0 !important;
  text-shadow: none !important;
  box-shadow: none !important;
}

/* Restore "Remove All Items" + "Save This Cart" actions in the cart button row */
body.ShoppingCart .mn-cart-buttons input.ShoppingCartClearCartThemeButton,
body.ShoppingCart .mn-cart-buttons input.ShoppingCartSaveCartThemeButton {
  display: inline-block !important;
  width: auto !important;
  height: auto !important;
}
.mn-cart-buttons input[type=submit]:hover { color: var(--mn-blue-hover) !important; }
.mn-cart-couponerror:empty { display: none; }
.mn-cart-couponerror { color: var(--mn-danger); font-size: 12.5px; font-weight: 600; margin-bottom: 6px; }
.mn-coupon__label { font-size: 13.5px; color: var(--mn-text-3); align-self: center; margin-right: 2px; }
.mn-coupon input[type=text] {
  border: 1px solid var(--mn-border-input) !important;
  border-radius: 9px !important;
  padding: 11px 14px !important;
  font-size: 13.5px;
  width: 160px;
  box-shadow: none !important;
}

.mn-rewards {
  background: var(--mn-green-bg);
  color: var(--mn-green);
  border-radius: var(--mn-r-md);
  padding: 12px 16px;
  font-size: 13.5px;
  font-weight: 600;
  margin-top: 12px;
}
.mn-rewards em { font-style: normal; font-weight: 800; }

.mn-summary__line--discount span:last-child { color: var(--mn-green) !important; }
.mn-summary__error { color: var(--mn-danger); font-size: 12.5px; font-weight: 600; }
.mn-summary .LineItemPrice { float: none; }

/* Shipping estimator inside the summary card */
.mn-shipcalc { border-top: 1px solid var(--mn-hairline); margin-top: 18px; padding-top: 18px; }
.mn-shipcalc__title {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 12.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--mn-navy);
  margin-bottom: 12px;
}
.mn-shipcalc__field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 10px; }
.mn-shipcalc__field .ShippingCalcFieldLabel { font-size: 12px; color: var(--mn-text-4); font-weight: 600; }
.mn-shipcalc__field input[type=text],
.mn-shipcalc__field select {
  border: 1px solid var(--mn-border-input) !important;
  border-radius: var(--mn-r-sm) !important;
  padding: 10px 12px !important;
  font-size: 13.5px;
  width: 100%;
  box-shadow: none !important;
}
.mn-shipcalc__field input[type=submit],
.mn-shipcalc__apply input[type=submit] {
  background: var(--mn-action) !important;
  border: none !important;
  border-radius: var(--mn-r-sm) !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px !important;
  padding: 10px 16px !important;
  margin-top: 6px;
  text-shadow: none !important;
  box-shadow: none !important;
}
.mn-shipcalc__methods { margin-top: 12px; font-size: 13.5px; }
.mn-shipcalc__note { font-size: 12px; color: var(--mn-text-4); margin: 10px 0 0; line-height: 1.5; }

.mn-freeship {
  border-top: 1px solid var(--mn-hairline);
  margin-top: 18px;
  padding-top: 18px;
}
.mn-freeship__title {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 12.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--mn-navy);
  margin-bottom: 8px;
}
.mn-freeship ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.mn-freeship li { font-size: 13px; color: var(--mn-text-3); display: flex; align-items: center; gap: 8px; }
.mn-freeship li::before {
  content: "\f058";                 /* fa-circle-check */
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  color: var(--mn-green);
  font-size: 12px;
}

.mn-cart-empty { text-align: center; padding: 40px 0; color: var(--mn-text-3); }
.mn-cart-empty:not(:has(*)) { display: none; }
.mn-sfl { margin-top: 48px; }
.mn-sfl .mn-sec-title span { color: var(--mn-text-4); font-weight: 600; font-size: 16px; }

/* Carousel (bxSlider) items */
.mn-carousel { list-style: none; margin: 0; padding: 0; }
.mn-carousel__item {
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  padding: 14px;
  text-align: center;
  transition: all .18s;
}
.mn-carousel__item:hover { box-shadow: var(--mn-shadow-hover); border-color: #d4dbe8; }
.mn-carousel__media img { max-width: 100%; height: auto; mix-blend-mode: multiply; }
.mn-carousel__name { font-family: var(--font-heading); font-weight: 600; font-size: 13.5px; color: var(--mn-navy); line-height: 1.3; }
.mn-carousel__name a { color: var(--mn-navy); }
.mn-carousel__price { font-family: var(--font-heading); font-weight: 800; font-size: 16px; color: var(--mn-navy); }

/* ---------- 12.27 Checkout (restyle-only) ------------------
OnePageCheckOutPage keeps its original form markup — 16 layout
areas, 58 visibility areas, a PCI-scoped hosted card iframe and
a paired $$...ERROR$$ code for every field. Nothing is
restructured here; this section only re-skins what the control
already renders. */
.mn-co.well.checkout {
  background: none;
  border: none;
  box-shadow: none;
  padding: 0;
  margin: 0;
}
.mn-co > .row {
  display: flex;
  align-items: flex-start;
  gap: 28px;
  margin: 24px 0 0;
}
.mn-co > .row > .col-sm-9,
.mn-co > .row > .col-sm-3 {
  float: none;
  padding: 0;
  width: auto;
}
.mn-co > .row > .col-sm-9 { flex: 1; min-width: 0; }
.mn-co > .row > .col-sm-3 { flex: 0 0 380px; position: sticky; top: 96px; }

/* Step cards */
.mn-co .panel {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-xl);
  padding: 15px;
  margin-bottom: 16px;
  box-shadow: none;
}
.mn-co .panel .panel { padding: 18px; border-radius: var(--mn-r-md); margin-bottom: 12px; }
.mn-co .panel-body { padding: 0; }
.mn-co .panel-heading {
  background: none;
  border: none;
  padding: 0 0 18px;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 17px;
  color: var(--mn-navy);
}

/* Numbered step badge — data-step is set by the page script,
so only top-level cards are numbered. */
.mn-co-card[data-step]::before {
  content: attr(data-step);
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--mn-navy);
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Float so the step title sits beside the badge without needing
  the control's heading markup to change. */
  float: left;
  margin: 0 12px 14px 0;
}
.mn-co-card[data-step] > h2:first-of-type,
.mn-co-card[data-step] > h3:first-of-type,
.mn-co-card[data-step] > h4:first-of-type,
.mn-co-card[data-step] > .panel-heading:first-of-type { line-height: 30px; }
.mn-co-card[data-step]::after { content: ""; display: table; clear: both; }

.mn-co h2, .mn-co h3, .mn-co h4, .mn-co .h2, .mn-co .h3, .mn-co .h4 {
  font-family: var(--font-heading);
  font-weight: 800;
  color: var(--mn-navy);
  letter-spacing: -.01em;
}
.mn-co h3, .mn-co .h3 { font-size: 17px; margin: 0 0 14px; }
.mn-co h4, .mn-co .h4 { font-size: 15px; margin: 0 0 10px; }

/* Fields */
.mn-co input[type=text],
.mn-co input[type=email],
.mn-co input[type=tel],
.mn-co input[type=password],
.mn-co input[type=number],
.mn-co select,
.mn-co textarea {
  border: 1px solid var(--mn-border-input) !important;
  border-radius: 9px !important;
  padding: 13px 14px !important;
  font-size: 14px !important;
  font-family: inherit;
  color: var(--mn-text);
  background: #fff;
  box-shadow: none !important;
  height: auto !important;
  width: 100%;
}
.mn-co input:focus, .mn-co select:focus, .mn-co textarea:focus {
  border-color: var(--mn-blue) !important;
  box-shadow: 0 0 0 3px rgba(44,70,144,.15) !important;
}
.mn-co label {
  font-size: 13px;
  color: var(--mn-text-3);
  font-weight: 600;
  margin-bottom: 5px;
}
.mn-co .checkbox label, .mn-co .radio label { font-weight: 400; color: var(--mn-text-2); font-size: 13.5px; }
.mn-co [class^="col-sm-"], .mn-co [class*=" col-sm-"] { margin-bottom: 12px; }

/* Validation output — the only surface for server-side failures.
Deliberately loud. */
.mn-co .ErrorText,
.mn-co .error,
.mn-co .alert-danger,
.mn-co span[id*="Error"],
.mn-co div[id*="Error"] {
  color: var(--mn-danger) !important;
  font-size: 12.5px;
  font-weight: 600;
  display: block;
  margin-top: 5px;
}
.mn-co .alert-danger {
  background: #fdeeec;
  border: 1px solid #f3c9c3;
  border-radius: var(--mn-r-md);
  padding: 12px 16px;
  font-size: 13.5px;
}
.mn-co .ErrorText:empty, .mn-co span[id*="Error"]:empty { display: none; }
.mn-co input.error, .mn-co select.error,
.mn-co .has-error input, .mn-co .has-error select { border-color: var(--mn-danger) !important; }

/* Shipping method radios rendered by $$SHIPPINGMETHODS$$ */
.mn-co .ShippingMethods label,
.mn-co .shipping-method label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--mn-border);
  border-radius: 11px;
  padding: 14px 16px;
  cursor: pointer;
  font-weight: 400;
  font-size: 14px;
  color: var(--mn-navy);
  margin: 0 0 10px;
  width: 100%;
}
.mn-co .ShippingMethods input[type=radio]:checked + label,
.mn-co .ShippingMethods label:has(input:checked) {
  border: 1.5px solid var(--mn-blue);
  background: var(--mn-surface-3);
}

/* Payment: never restyle the hosted card iframe's internals —
only its container. */
.mn-co .payment-method-select { padding: 20px; }
.mn-co iframe { border: none; border-radius: 9px; max-width: 100%; }
.mn-co .cc-logos img, .mn-co .CreditCardLogos img { height: 26px; width: auto; margin-right: 6px; }

/* Order summary column */
.mn-co-summary-panel,
.mn-co > .row > .col-sm-3 .panel {
  border-radius: var(--mn-r-xl);
  box-shadow: var(--mn-shadow-card);
  padding: 24px;
}
.mn-co > .row > .col-sm-3 .well {
  background: var(--mn-surface-2);
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  box-shadow: none;
}
.mn-co .OrderTotal, .mn-co .SubTotal {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 14px;
  color: var(--mn-text-2);
}
.mn-co .OrderTotal {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 18px;
  color: var(--mn-navy);
  border-top: 1px solid var(--mn-hairline);
  padding-top: 14px;
  margin-top: 14px;
}
.mn-co .LineItemPrice { float: none; font-weight: 600; color: var(--mn-navy); }

/* Place Order */
.mn-co #btnPlaceOrder,
.mn-co .OnePageCheckoutPlaceOrderThemeButton,
.mn-co .PlaceOrderThemeButton {
  width: 100%;
  background: var(--mn-blue) !important;
  border: none !important;
  border-radius: var(--mn-r) !important;
  color: #fff !important;
  font-family: var(--font-heading) !important;
  font-weight: 700 !important;
  font-size: 15.5px !important;
  padding: 16px !important;
  text-shadow: none !important;
  box-shadow: none !important;
  cursor: pointer;
}
.mn-co #btnPlaceOrder:hover,
.mn-co .OnePageCheckoutPlaceOrderThemeButton:hover { background: var(--mn-blue-hover) !important; }

.mn-co .ThemeButton,
.mn-co input[type=submit] {
  border-radius: 9px !important;
  font-family: var(--font-heading);
  font-weight: 700;
  text-shadow: none !important;
  box-shadow: none !important;
}

@media (max-width: 1100px) {
  .mn-co > .row > .col-sm-3 { flex: 0 0 330px; }
}
@media (max-width: 900px) {
  .mn-co > .row { flex-direction: column; }
  .mn-co > .row > .col-sm-3 { flex: 1 1 auto; width: 100%; position: static; }
  .mn-co .panel { padding: 18px; }
}

/* ---------- 12.28 Home page (prnm-* bridge) ----------------
DefaultPage.html was already rebuilt with prnm-* section
classes and its widgets are admin-managed, so rather than
re-authoring that markup this maps those classes onto the
mockup's exact values. */
.prnm-home { display: block; }

/* Hero */
.prnm-hero {
  position: relative;
  background: var(--mn-navy);
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 40px;
  min-height: 460px;
  max-width: none;
  margin: 0 calc(50% - 50vw);
  padding: 0 max(28px, calc(50vw - var(--mn-container) / 2 + 28px));
}
.prnm-hero-copy { padding: 56px 0; position: relative; z-index: 2; }
.prnm-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(44,70,144,.16);
  color: var(--mn-blue-soft);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 7px 14px;
  border-radius: var(--mn-r-pill);
}
.prnm-hero-title {
  color: #fff;
  font-family: var(--font-heading);
  font-size: 52px;
  line-height: 1.04;
  font-weight: 800;
  letter-spacing: -.02em;
  margin: 22px 0 0;
}
.prnm-hero-sub { color: var(--mn-on-dark); font-size: 17px; line-height: 1.6; margin: 20px 0 0; max-width: 440px; }
.prnm-hero-btns { display: flex; gap: 14px; margin-top: 32px; flex-wrap: wrap; }
.prnm-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 15px;
  border-radius: var(--mn-r);
  padding: 15px 30px;
  transition: background-color .15s, box-shadow .15s;
}
.prnm-btn-primary { background: var(--mn-blue); color: #fff; }
.prnm-btn-primary:hover { background: var(--mn-blue-hover); color: #fff; }
.prnm-btn-outline {
  background: rgba(255,255,255,.08);
  color: #fff;
  border: 1px solid rgba(255,255,255,.18);
  padding: 15px 28px;
}
.prnm-btn-outline:hover { background: rgba(255,255,255,.14); color: #fff; }
.prnm-hero-stats { display: flex; gap: 26px; margin-top: 15px; flex-wrap: wrap; }
.prnm-hero-stats > div { display: flex; flex-direction: column; }
.prnm-hero-stats > div + div { border-left: 1px solid rgba(255,255,255,.12); padding-left: 26px; }
.prnm-hero-stats strong { font-family: var(--font-heading); font-weight: 800; font-size: 22px; color: #fff; }
.prnm-hero-stats span { font-size: 12.5px; color: #8a97b3; }
.prnm-hero-media { align-self: stretch; position: relative; display: flex; align-items: center; justify-content: center; }
.prnm-hero-media img { max-width: 100%; height: auto; }

/* Trust / value bar */
.prnm-trustbar {
  background: #fff;
  border-bottom: 1px solid var(--mn-border);
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 12px;
  padding: 15px 0;
  margin: 0 0 8px;
}
.prnm-trust-item { display: flex; align-items: center; gap: 14px; padding: 6px 8px; }
.prnm-trust-item > .prnm-trust-ico,
.prnm-trust-ico {
  width: 44px; height: 44px;
  flex-shrink: 0;
  border-radius: 11px;
  background: var(--mn-icon-well);
  display: flex; align-items: center; justify-content: center;
  color: var(--mn-blue);
  font-size: 18px;
}
.prnm-trust-item > div > strong { display: block; font-family: var(--font-heading); font-weight: 700; font-size: 14.5px; color: var(--mn-navy); }
/* Scoped to the label span only — .prnm-trust-ico is also a <span>
and a bare `.prnm-trust-item span` was overriding its display,
colour and size, dropping the icon out of its tile. */
.prnm-trust-item > div > span { display: block; font-size: 12.5px; color: var(--mn-text-3); }

/* Section headers */
.prnm-section { padding: 44px 0 20px; }
.prnm-section.prnm-cats { padding-top: 50px; }
.prnm-sec-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 15px; }
.prnm-eyebrow { display: block; font-size: 12.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--mn-blue); }
.prnm-sec-title { font-family: var(--font-heading); font-size: 30px; font-weight: 800; letter-spacing: -.02em; color: var(--mn-navy); margin-top: 8px; }
.prnm-sec-link { font-size: 14px; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.prnm-section.prnm-best { padding: 10px 0 20px; }

/* The widgets inside these sections carry their own <h2>; the
section header above already states the title, so hide the
duplicate rather than editing admin-managed widget content. */
.prnm-cats h2.CategoryFlexTitle,
.prnm-best .Carousel > h2,
.prnm-extras .Carousel > h2 { display: none; }

/* Newsletter */
.prnm-newsletter { background: var(--mn-navy); margin: 44px calc(50% - 50vw) 0; }
.prnm-newsletter__inner {
  max-width: var(--mn-container);
  margin: 0 auto;
  padding: 48px var(--mn-gutter);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: center;
}
.prnm-newsletter__title { font-family: var(--font-heading); color: #fff; font-size: 26px; font-weight: 800; letter-spacing: -.01em; margin: 0; }
.prnm-newsletter__sub { color: var(--mn-blue-soft); font-size: 14.5px; margin-top: 10px; }
.prnm-newsletter form, .prnm-newsletter__form { display: flex; gap: 12px; }
.prnm-newsletter input[type=text], .prnm-newsletter input[type=email] {
  flex: 1;
  border: 1px solid rgba(255,255,255,.18) !important;
  background: rgba(255,255,255,.06) !important;
  color: #fff !important;
  border-radius: var(--mn-r) !important;
  padding: 15px 18px !important;
  font-size: 14.5px;
  outline: none;
  box-shadow: none !important;
}
.prnm-newsletter input::placeholder { color: #8fa2c4; }
.prnm-newsletter button, .prnm-newsletter input[type=submit] {
  background: var(--mn-blue) !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14.5px;
  padding: 0 28px !important;
  border: none !important;
  border-radius: var(--mn-r) !important;
  cursor: pointer;
}
.prnm-newsletter button:hover { background: var(--mn-blue-hover) !important; }

@media (max-width: 900px) {
  .prnm-hero { grid-template-columns: 1fr; min-height: 0; }
  .prnm-hero-media { display: none; }
  .prnm-hero-title { font-size: 40px; }
  .prnm-trustbar { grid-template-columns: repeat(2,1fr); }
  .prnm-newsletter__inner { grid-template-columns: 1fr; }
  .prnm-sec-head { flex-direction: column; align-items: flex-start; gap: 10px; }
}
@media (max-width: 680px) {
  .prnm-hero-title { font-size: 32px; }
  .prnm-sec-title { font-size: 24px; }
  .prnm-hero-stats > div + div { border-left: none; padding-left: 0; }
  .prnm-newsletter form, .prnm-newsletter__form { flex-direction: column; }
}

/* ---------- 12.29 Nav density ------------------------------
PaperRolls-N-More runs 7+ top-level categories. Tighten link
padding before the row overflows rather than letting the
Deals link clip off the right edge. */
/* Shop-All button and Deals link sized to match the tightened strip. */
.mn-nav__all { padding: 0 14px; font-size: 13px; }
.mn-nav__deals { padding: 0 2px 0 10px; font-size: 12.5px; }
@media (max-width: 1500px) {
  .mn-nav .navbar-nav > li > a { padding: 14px 9px; font-size: 12.5px; }
  .mn-nav__all span, .mn-nav__all { font-size: 13px; }
}

/* ---------- 12.30 Mobile nav (Bootstrap-independent) --------
The category strip previously relied on Bootstrap's .navbar-collapse
being hidden under 768px. That left 768–991px overflowing off-screen,
and broke entirely if Bootstrap's CSS load order changed. Below the
desktop breakpoint the strip becomes a swipeable scroller instead. */
@media (max-width: 1100px) {
  .mn-nav__inner {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-left: 0;
    padding-right: 0;
  }
  .mn-nav__inner::-webkit-scrollbar { display: none; }

  /* Keep the links reachable regardless of Bootstrap's collapse state. */
  .mn-nav .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    padding: 0;
    border: none;
    box-shadow: none;
  }
  .mn-nav .navbar-header { display: none !important; }
  /* Inside the scroller the navbar must not shrink — with flex-shrink it
  collapsed and its overflowing links painted over the Deals link. */
  .mn-nav .navbar { flex: 0 0 auto; width: auto; min-width: 0; }
  .mn-nav .navbar-collapse.collapse { width: auto; }
  .mn-nav__all { padding: 0 14px; font-size: 12.5px; }
  .mn-nav__all span { display: none; }
  .mn-nav .navbar-nav > li > a { padding: 13px 12px; font-size: 13px; }
  .mn-nav__deals { padding: 0 14px 0 8px; }
}

/* ---------- 12.31 Mobile refinements ----------------------- */
@media (max-width: 767px) {
  /* Header: logo + actions on one row, search full width beneath. */
  .mn-head__inner { flex-wrap: wrap; gap: 12px; padding-top: 0px; padding-bottom: 0px; margin:0px; }
  .mn-head__logo-slot { order: 1; flex: 0 1 auto; min-width: 0; }
  .mn-head__logo-slot img { max-width: 100%; }
  .mn-head__logo img { height: 44px; }
  /* Promote search + actions to direct children of the header row so the
  actions can sit beside the logo instead of claiming their own row.
  (They live in a separate Cart.com widget area, so this is done with
  display:contents rather than by moving markup.) */
  .mn-head__main-slot { display: contents; }
  .mn-head__search { order: 3; flex: 1 1 100%; max-width: none; }
  .mn-head__actions { order: 2; gap: 20px; margin-left: auto; flex: 0 0 auto; }
  .mn-act__stack { display: none; }          /* icons only — labels eat the row */
  .mn-act > i, .mn-act__icon i { font-size: 22px; }
  .mn-head__search input[type=text] { font-size: 16px; }  /* 16px stops iOS zoom-on-focus */

  .mn-util__inner { font-size: 12px; }
  .mn-announce { font-size: 12px; padding: 9px 14px; }

  /* Sticky header eats too much height on a phone. */
  .LayoutTopTop.scrolled .mn-util,
  .LayoutTopTop.scrolled .mn-announce { display: none; }

  /* Cart line item: image + details, then a controls row. */
  .mn-cart-item { grid-template-columns: 72px 1fr; grid-auto-rows: min-content; gap: 12px 14px; padding: 14px; }
  .mn-cart-item__media { width: 72px; height: 72px; }
  .mn-cart-item__qtycol { grid-column: 1 / -1; flex-direction: row; justify-content: flex-start; gap: 14px; }
  .mn-cart-item__total { grid-column: 1 / -1; text-align: left; font-size: 18px; }
  .mn-cart-actions { flex-direction: column; align-items: stretch; gap: 14px; }
  .mn-coupon { width: 100%; }
  .mn-coupon input[type=text] { flex: 1; width: auto; }

  /* Product buy box */
  .mn-buyrow { flex-wrap: wrap; }
  .mn-qty { flex: 0 0 auto; }
  .mn-atc { flex: 1 1 160px; }
  .mn-buybox__secondary { grid-template-columns: 1fr; }
  .mn-pdp__thumbs a, .mn-pdp__thumb { width: 64px; height: 64px; }
  .mn-tiers__body table { grid-template-columns: repeat(2, 1fr); }

  /* Any control-rendered table stays swipeable instead of blowing out. */
  .mn-groupgrid, .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* Checkout: single column, no sticky summary. */
  .mn-co > .row { flex-direction: column; gap: 16px; }
  .mn-co > .row > .col-sm-3 { position: static; width: 100%; flex: 1 1 auto; }
  .mn-co .panel { padding: 16px; }
  .mn-co input, .mn-co select, .mn-co textarea { font-size: 16px !important; }

  /* Filters collapse above the grid. */
  .mn-cat-layout { grid-template-columns: 1fr; gap: 18px; }
  .mn-toolbar { gap: 10px; }
  .mn-toolbar__right { flex-wrap: wrap; }

  .mn-summary { padding: 18px; }
  .mn-sec-title, .prnm-sec-title { font-size: 22px; }
  .mn-cart-title, .mn-co-head h1 { font-size: 26px; }
  .mn-pagehead h1 { font-size: 26px; }
}

@media (max-width: 480px) {
  .mn-grid-4, .mn-grid-3, .mn-tiles { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .mn-card__body { padding: 12px 12px 14px; }
  .mn-card__name { font-size: 13.5px; min-height: 36px; }
  .mn-card__price { font-size: 17px; }
  .mn-card__addwrap input[type=submit] { width: 36px; height: 36px; }
  .mn-specs { grid-template-columns: 1fr; }
  .mn-foot__grid { grid-template-columns: 1fr; gap: 26px; }
  .mn-foot__bar-inner { flex-direction: column; align-items: flex-start; gap: 12px; }
  .prnm-hero-btns .prnm-btn { flex: 1 1 100%; justify-content: center; }
}

/* Nothing may cause a horizontal scrollbar on a phone. */
@media (max-width: 991px) {
  html, body { overflow-x: hidden; max-width: 100%; }
  img, table, iframe { max-width: 100%; }
}

/* ============================================================
13. LIVE-CONTROL RECONCILIATION
Corrections made after inspecting the real rendered DOM on the
live store. The Cart.com controls emit different wrappers than
a static mockup implies; these rules bind the design to what
the platform actually renders.
============================================================ */

/* 13.1 ##SEARCHBOX## emits <input type=text> + <input type=submit>
as DIRECT children — there is no inner wrapper div, so the pill
was never drawn and the field collapsed to its default width. */
.mn-head__search {
  display: flex;
  align-items: stretch;
  border: 1.5px solid var(--mn-border-input);
  border-radius: var(--mn-r);
  overflow: hidden;
  background: #fff;
  transition: border-color .15s;
}
.mn-head__search:focus-within { border-color: var(--mn-blue); }
.mn-head__search > input[type=text],
.mn-head__search input.SearchBox1[type=text] {
  flex: 1 1 auto;
  min-width: 0;
  border: none !important;
  outline: none;
  padding: 13px 16px !important;
  font-size: 14.5px;
  font-family: inherit;
  color: var(--mn-text);
  background: transparent;
  border-radius: 0 !important;
  box-shadow: none !important;
  height: auto !important;
}
.mn-head__search > input[type=submit],
.mn-head__search input.GoThemeThemeButton,
.mn-head__search input.GoThemeButton {
  flex: 0 0 auto;
  border: none !important;
  background: var(--mn-action) !important;
  color: #fff !important;
  padding: 0 22px !important;
  font-size: 15px !important;
  border-radius: 0 !important;
  cursor: pointer;
  text-shadow: none !important;
  box-shadow: none !important;
  height: auto !important;
}
.mn-head__search > input[type=submit]:hover { background: var(--mn-blue) !important; }
/* Autocomplete dropdown should follow the field, not the old theme. */
.ui-autocomplete { border: 1px solid var(--mn-border); border-radius: var(--mn-r-md); box-shadow: 0 18px 40px rgba(17,17,17,.16); z-index: 99999; }

/* 13.2 <ac:visibilityarea id="dvControl"> renders a real
<div class="Control MenuBar Control_NNNN"> wrapper, so the nav's
three parts were block-stacked instead of forming the flex row. */
.mn-nav__inner > .Control,
.mn-nav__inner > div[id$="dvControl"] { display: contents; }
.mn-nav .navbar-collapse { width: auto; }

/* 13.3 Product flags come from ##SHAREDCONTENT[Flag - …]## and render
as <div class="abs product-flag left …"><span>Text</span></div>.
Nesting that inside a badge span produced a 20px box containing a
255px absolutely-positioned child. Let the flag BE the badge. */
.mn-card__badge { display: contents; }
.mn-card__media .product-flag {
  position: absolute !important;
  top: 12px !important;
  left: 12px !important;
  right: auto !important;
  bottom: auto !important;
  width: auto !important;
  height: auto !important;
  max-width: calc(100% - 24px);
  transform: none !important;
  border: none !important;
  box-shadow: none !important;
  background: none !important;
  z-index: 3;
  line-height: 1;
}
.mn-card__media .product-flag span,
.mn-card__media .product-flag b {
  display: inline-block;
  background: var(--mn-navy) !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-size: 10.5px !important;
  font-weight: 700 !important;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: 5px 10px !important;
  border-radius: 6px;
  line-height: 1.4 !important;
  position: static !important;
  white-space: nowrap;
}
/* Free-shipping flag reads as the accent colour, like the mockup. */
.mn-card__media .product-flag.flag1 span,
.mn-card__media .product-flag[class*="free"] span { background: var(--mn-blue) !important; }

/* 13.4 $$THUMBNAIL$$ renders a plain <img>; keep it inside the tile. */
.mn-card__media > img,
.mn-card__media img {
  max-width: 86%;
  max-height: 86%;
  width: auto;
  height: auto;
  object-fit: contain;
  mix-blend-mode: multiply;
}

/* 13.5 Home "best sellers" carousel — the Carousel widget emits a
<ul> of <li>. Present them as the mockup's card grid, and stop
bxSlider's inline widths from squashing the cards if it inits. */
.mn-carousel-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.mn-carousel-grid > li { list-style: none; float: none !important; }
.mn-card--carousel {
  display: flex;
  flex-direction: column;
  width: auto !important;
  margin: 0 !important;
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  overflow: hidden;
  transition: all .18s;
}
.mn-card--carousel:hover {
  box-shadow: var(--mn-shadow-hover);
  border-color: #d4dbe8;
  transform: translateY(-3px);
}
.mn-card--carousel .mn-card__media {
  aspect-ratio: 1/1;
  background: var(--mn-ph);
  border-bottom: 1px solid var(--mn-hairline);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px;
}
.mn-card--carousel .mn-card__media a { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }
.mn-card--carousel .mn-card__name { display: block; }
.mn-card--carousel .mn-card__name a {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 15px;
  color: var(--mn-navy);
  line-height: 1.3;
}
.mn-card--carousel .mn-card__name a:hover { color: var(--mn-blue); }
.mn-card--carousel .mn-card__price { font-size: 20px; }
.mn-card--carousel .mn-card__unit { text-transform: none; letter-spacing: 0; }
/* bxSlider adds a viewport wrapper; neutralise it when we grid. */
.prnm-best .bx-wrapper, .prnm-extras .bx-wrapper { border: none; box-shadow: none; background: none; margin: 0; }
.prnm-best .bx-viewport, .prnm-extras .bx-viewport { height: auto !important; }

/* 13.6 The category left rail is the AttributeNavigationLinks widget
rendered through the template's LeftColumn; its group headers come
through as .nav-header, which style.css draws as a grey bar. */
.mn-filters .nav-header,
.LayoutLeftColumnInner .nav-header {
  background: none !important;
  border: none !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--mn-navy) !important;
  padding: 0 0 12px !important;
  margin: 18px 0 0 !important;
}

@media (max-width: 1100px) { .mn-carousel-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px)  { .mn-carousel-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .mn-carousel-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; } }

/* 13.7 Nav overflow, desktop.
Real category names ("Ink & Toner Cartridges", "Wide Format Media")
push the strip past the container measure, and because the menu is a
shrinkable flex item its <ul> spilled over the Deals link. Let the
menu shrink and scroll its own overflow instead of painting over a
sibling — no clipping, Deals always reachable. */
@media (min-width: 1101px) {
  .mn-nav .navbar { flex: 1 1 auto; min-width: 0; }
  .mn-nav .navbar-collapse {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .mn-nav .navbar-collapse::-webkit-scrollbar { display: none; }
}

/* ============================================================
14. HOME PAGE — single source of truth
DefaultPage.html previously carried ~11.7 KB of inline <style>
that re-implemented this design and, being inline, overrode
modern-navy.css (eyebrow rendered 12px/#3b6fd4 instead of
12.5px/#2C4690). Those blocks are gone; the equivalents live
here so the tokens are defined once.
============================================================ */

/* 14.1 Promo split — the Ad3 widget uses .prnm-card markup.
Mapped to the mockup's split-panel spec. */
.prnm-promo-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.prnm-card {
  border-radius: var(--mn-r-2xl);
  padding: 40px;
  position: relative;
  overflow: hidden;
  transition: box-shadow .18s, transform .18s;
}
.prnm-card--dark  { background: linear-gradient(135deg,#2C4690,#111111); color: #fff; }
.prnm-card--light { background: var(--mn-surface-2); border: 1px solid var(--mn-border); }
.prnm-card:hover, .prnm-card:focus-within { box-shadow: 0 16px 34px rgba(17,17,17,.11); transform: translateY(-2px); }
.prnm-card .prnm-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.prnm-card--dark  .prnm-eyebrow { color: var(--mn-blue-soft); }
.prnm-card--light .prnm-eyebrow { color: var(--mn-blue); }
.prnm-card .prnm-title {
  font-family: var(--font-heading);
  font-size: 27px;
  font-weight: 800;
  letter-spacing: -.01em;
  margin: 12px 0 0;
  max-width: 320px;
  line-height: 1.1;
}
.prnm-card--dark  .prnm-title { color: #fff; }
.prnm-card--light .prnm-title { color: var(--mn-navy); }
.prnm-card .prnm-desc { font-size: 14.5px; line-height: 1.6; margin: 14px 0 26px; max-width: 320px; }
.prnm-card--dark  .prnm-desc { color: var(--mn-on-dark); }
.prnm-card--light .prnm-desc { color: var(--mn-text-3); }
.prnm-btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  padding: 13px 24px;
  border-radius: 9px;
  transition: background-color .15s, color .15s;
}
.prnm-btn--white { background: #fff; color: var(--mn-navy); }
.prnm-btn--white:hover, .prnm-btn--white:focus { background: var(--mn-surface-2); color: var(--mn-navy); }
.prnm-btn--blue { background: var(--mn-action); color: #fff; }
.prnm-btn--blue:hover, .prnm-btn--blue:focus { background: var(--mn-blue); color: #fff; }

/* 14.2 Home best-sellers grid.
bxSlider is disabled on these two carousels, but guard against any
leftover inline width / wrapper so the grid can never blow out. */
.mn-carousel-grid { width: auto !important; max-width: 100% !important; transform: none !important; }
.prnm-best .bx-wrapper, .prnm-extras .bx-wrapper,
.prnm-best .bx-viewport, .prnm-extras .bx-viewport {
  width: auto !important;
  max-width: 100% !important;
  height: auto !important;
  border: none;
  box-shadow: none;
  background: none;
  margin: 0;
  left: 0 !important;
}
/* The widget returns more products than the design shows; the approved
layout is two rows of four. */
.mn-carousel-grid > li:nth-child(n+9) { display: none; }

/* 14.3 Typography fallback.
The theme's base stack names "Noto Sans" first, and that webfont has
been removed (nothing in the design uses it). Without this, ~750
elements would fall back to Century Gothic / system. The design calls
for IBM Plex Sans body + Archivo headings, so state it explicitly. */
body, body div, body p, body span, body li, body td, body th,
body label, body input, body select, body textarea, body button, body a {
  font-family: var(--font-sans-serif);
}
body h1, body h2, body h3, body h4, body h5, body h6,
.mn-sec-title, .prnm-sec-title, .mn-card__name, .mn-card__price,
.mn-nav__all, .mn-btn, .prnm-btn, .mn-foot__coltitle {
  font-family: var(--font-heading);
}
/* Icon fonts must never be overridden by the rules above. */
body .fa, body .fas, body .far, body .fab, body .fal, body .fad,
body [class^="icon-"], body [class*=" icon-"], body .glyphicon {
  font-family: inherit;
}
body .fa, body .fas, body .far, body .fab { font-family: "Font Awesome 6 Free", "Font Awesome 6 Brands"; }
body [class^="icon-"], body [class*=" icon-"] { font-family: FontAwesome; }
body .glyphicon { font-family: "Glyphicons Halflings"; }

/* 14.4 Search field border is 1.5px in the design; the theme's own
input rules were winning at 1px. */
.mn-head__search.mn-head__search { border-width: 1.5px; }

@media (max-width: 900px) { .prnm-promo-cards { grid-template-columns: 1fr; } }

/* ============================================================
15. HOME — exact wireframe parity
The best-seller rows now use the ProductDisplay widget, which
exposes the photo, item number, price, flags and an add-to-cart
URL — everything the wireframe card shows. The Carousel widget
could not supply a badge, SKU or add-to-cart action.
============================================================ */

/* 15.1 Hero art — right half, gradient fade into the navy, per the
wireframe. Uses a product image already shipped with the theme. */
.prnm-hero-art {
  position: absolute;
  inset: 0;
  /* Relative to this stylesheet (CSS/ -> images/). Merge codes such as
  ##THEMEDIR## are NOT processed inside static .css files. */
  background-image: url("../images/phenol-free-thermal-paper-rolls-box-bpa-free-transparent.png");
  background-size: contain;
  background-position: center right;
  background-repeat: no-repeat;
}
.prnm-hero-media { position: relative; overflow: hidden; }

.prnm-hero-media img { position: relative; z-index: 2; max-width: 100%; height: auto; }

/* 15.2 Add-to-cart control on the home card. ##ADDTOCARTURL## is a link,
so this is an <a> rather than a submit button. */
.mn-card__add {
  width: 42px;
  height: 42px;
  flex: 0 0 auto;
  border-radius: 11px;
  background: var(--mn-action);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  transition: background .15s;
}
.mn-card__add:hover { background: var(--mn-blue); color: #fff; }

/* 15.3 ProductDisplay emits $$PHOTO$$ as a bare <img>. */
.mn-card__media > img { max-width: 86%; max-height: 86%; object-fit: contain; mix-blend-mode: multiply; }
/* Rating is empty when a product has no reviews — don't reserve space. */
.mn-card__rating:empty, .mn-card__stars:empty { display: none; }
.mn-card__sku:empty { display: none; }


/* ============================================================
16. BRAND PALETTE v2
#2C4690 carries structure (nav category button, category tiles,
volume-pricing header, links, icons). #CB252B is reserved for
action + urgency (Shop Paper Rolls, Add to Cart, Checkout, cart
badge, sale/savings, stars). #000/#111 anchors the utility bar,
nav, newsletter and footer. Green is retired.
============================================================ */
:root {
  --mn-accent:       #CB252B;   /* action + urgency          */
  --mn-accent-hover: #A81E23;
  --mn-accent-tint:  #FBE9EA;
  --mn-deep:         #223772;   /* deep brand blue           */
  --mn-brand:        #2C4690;
}
body { color: #111111; }
a { color: var(--mn-brand); }
a:hover, a:focus { color: #1E3268; }
::selection { background: var(--mn-brand); color: #fff; }

/* ---- Action + urgency: red ---- */
.mn-btn--primary,
.prnm-btn-primary,
.mn-atc input[type=submit], .mn-atc input[type=image], .mn-atc .AddToCartThemeButton,
.mn-checkout-btn, .mn-checkout-btn input[type=submit], .mn-checkout-btn input[type=image],
.mn-co #btnPlaceOrder, .mn-co .OnePageCheckoutPlaceOrderThemeButton, .mn-co .PlaceOrderThemeButton,
.prnm-newsletter button, .prnm-newsletter input[type=submit],
.mn-news__form input[type=submit], .mn-news__form button,
.SmallCartCheckoutButton input[type=submit],
.CheckoutThemeButton, .ShoppingCartCheckoutThemeButton {
  background: var(--mn-accent) !important;
  border-color: var(--mn-accent) !important;
  color: #fff !important;
}
.mn-btn--primary:hover, .prnm-btn-primary:hover,
.mn-atc input[type=submit]:hover, .mn-checkout-btn input[type=submit]:hover,
.mn-co #btnPlaceOrder:hover, .prnm-newsletter button:hover,
.mn-news__form input[type=submit]:hover {
  background: var(--mn-accent-hover) !important;
  border-color: var(--mn-accent-hover) !important;
}
.prnm-btn-primary, .mn-btn--primary { box-shadow: 0 10px 26px -10px rgba(203,37,43,.9); }
.mn-act__count { background: var(--mn-accent); }
.mn-card__stars, .mn-buybox__rating .mn-card__stars, .mn-review__stars { color: var(--mn-accent); }
.mn-tier__save, .mn-summary__free, .mn-card__was + .mn-card__save { color: var(--mn-accent); }
.mn-pill-green { background: var(--mn-accent-tint); color: var(--mn-accent); }

/* ---- Status: brand blue, not green ---- */
.mn-instock, .mn-cart-item__stock, .mn-secure i, .mn-co-head__secure i,
.mn-freeship li::before { color: var(--mn-brand); }
.mn-summary__free { color: var(--mn-accent) !important; }

/* ---- Structure: brand blue ---- */
.mn-nav__all { background: var(--mn-brand); }
.mn-nav__all:hover, .mn-nav__all:focus { background: #1E3268; }
.mn-tile__icon { background: var(--mn-brand); }
.mn-tile__icon i { color: #A8BAE4; }
.mn-eyebrow, .prnm-eyebrow, .mn-card__cat { color: var(--mn-brand); }
.mn-announce { background: #F1F4FB; color: var(--mn-deep); }
.mn-util { background: #111111; color: #C6CCDE; }
.mn-util i { color: #8D9BC4; }
.mn-nav { background: #111111; }
.mn-foot, .mn-news, .prnm-newsletter { background: #111111; }
.mn-value__icon { background: #EEF1F9; }
.mn-value__icon i { color: var(--mn-brand); }

/* ---- Deep brand blue: secondary controls ---- */
.mn-card__add, .mn-card__addwrap input[type=submit], .mn-card__addwrap .AddToCartThemeButton {
  background: var(--mn-deep) !important;
}
.mn-card__add:hover, .mn-card__addwrap input[type=submit]:hover { background: var(--mn-brand) !important; }
.mn-btn--outline, .mn-btn--outline-wrap input[type=submit] {
  border-color: var(--mn-deep) !important;
  color: var(--mn-deep) !important;
}
.mn-tiers__head { background: var(--mn-deep); }
.mn-tiers__head-r, .mn-tiers__head-l i { color: #A8BAE4; }
.mn-card__media .product-flag span { background: #111111 !important; }
.mn-card__media .product-flag.flag1 span { background: var(--mn-accent) !important; }
.mn-split__panel--dark, .mn-promo-card, .prnm-card--dark {
  background: linear-gradient(135deg,#223772,#111111);
}

/* ---- Hero: brand-blue -> black gradient with a red glow ---- */
.prnm-hero, .mn-hero {
  background: linear-gradient(135deg,#2C4690 0%,#1E3268 52%,#111111 100%);
  position: relative;
  padding-bottom: 56px;              /* v2: hero had no bottom padding */
}
.prnm-hero::before, .mn-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 72% 42%, rgba(203,37,43,.30) 0%, rgba(203,37,43,0) 68%);
  pointer-events: none;
  z-index: 0;
}
.prnm-hero-copy, .prnm-hero-media, .mn-hero__grid { position: relative; z-index: 2; }
.prnm-pill {
  background: rgba(0,0,0,.24);
  border: 1px solid rgba(255,255,255,.24);
  color: #EDF1FA;
}
.prnm-btn-outline, .mn-btn--ghost {
  background: rgba(255,255,255,.07);
  border-color: rgba(255,255,255,.2);
}
.prnm-hero-media::after { content: none; }
.mn-hero__art-fade { background: none; }

/* ============================================================
17. SPECIFICITY GUARD — theme link colours
style.css declares `.LayoutTop a { color: <brand blue> }`.
That is specificity (0,1,1) and outranks single-class component
selectors like .mn-nav__all (0,1,0), so header/nav links were
repainted brand blue — leaving "Shop All Categories" blue-on-blue
(contrast 1.00) and "Deals" at 2.15 on the black bar.
These declarations are deliberately !important: the losing
selector cannot be raised without coupling the component to the
template's wrapper class.
============================================================ */
.mn-nav__all,
.mn-nav__all:hover,
.mn-nav__all:focus            { color: #fff !important; }
.mn-nav__deals,
.mn-nav__deals:visited        { color: #A8BAE4 !important; }
.mn-nav__deals:hover,
.mn-nav__deals:focus          { color: #fff !important; }
.mn-nav .navbar-nav > li > a  { color: #d3dbe9 !important; }
.mn-nav .navbar-nav > li > a:hover,
.mn-nav .navbar-nav > .open > a { color: #fff !important; }

/* Header account / cart block: dark value, muted label — not link blue. */
.mn-act,
.mn-act:hover,
.mn-act__value                { color: #111111 !important; }
.mn-act__label                { color: #8A93A3 !important; }
.mn-act > i,
.mn-act__icon i               { color: #2C4690 !important; }
.mn-act__count                { color: #fff !important; }

/* Utility bar links stay on the light-on-black treatment. */
.mn-util a, .mn-util a:visited { color: #C6CCDE !important; }
.mn-util a:hover               { color: #fff !important; }

/* Footer links likewise sit inside .LayoutBottom. */
.mn-foot a, .mn-foot a:visited        { color: #9AA7BD !important; }
.mn-foot a:hover                      { color: #fff !important; }
.mn-foot__coltitle                    { color: #fff !important; }
.mn-foot__contact a                   { color: #9AA7BD !important; }
.mn-foot__contact a:hover             { color: #fff !important; }

/* On-dark headings and CTAs must not inherit the link colour either. */
.prnm-hero-title, .mn-hero__title,
.prnm-newsletter__title, .mn-news__title,
.mn-split__panel--dark .mn-split__title,
.prnm-card--dark .prnm-title          { color: #fff !important; }
.prnm-btn-primary, .mn-btn--primary,
.prnm-btn-outline, .mn-btn--ghost,
.mn-btn--light                        { color: inherit; }
.prnm-btn-primary, .mn-btn--primary   { color: #fff !important; }
.prnm-btn-outline, .mn-btn--ghost     { color: #fff !important; }
.mn-btn--light                        { color: #111111 !important; }

/* ============================================================
18. PAGE CONTAINER — the site measure (v3: 1380px)
The templates render .LayoutMiddle with no max-width, so page
content filled the whole viewport (1905px at a 1920 window)
while the header, nav and footer sat on the container measure.
Constraining the content wrapper aligns every page — home,
category, product, cart, checkout — to the design measure.
============================================================ */
.LayoutMiddle {
  max-width: 1400px;
  width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding-left: 12px;
  padding-right: 12px;
  box-sizing: border-box;
  float: none;
}
/* Bootstrap's negative row gutters would push content past the measure. */
.LayoutMiddle > .row { margin-left: 0; margin-right: 0; }

/* Sections that are meant to bleed edge-to-edge escape the measure.
Using 100vw would include the scrollbar and cause a few px of
horizontal overflow, so the escape is paired with a guard below. */
.prnm-hero, .mn-hero, .prnm-newsletter, .mn-news {
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}
html, body { overflow-x: hidden; }

/* Sections already inside .LayoutMiddle don't need their own measure. */
.prnm-trustbar, .prnm-section, .mn-tiles, .mn-split, .mn-grid-4, .mn-grid-3 {
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

/* ============================================================
19. PRODUCT FLAGS — flat badge, not a corner ribbon
style.css renders .product-flag as a 45deg ribbon
(transform:rotate(45deg); top:-90px; left:-70px; width:255px).
Section 13.3 only reset it inside .mn-card__media, so the
product page kept the ribbon. Reset wherever it appears in a
Modern Navy surface.
============================================================ */
.mn-card__media .product-flag,
.mn-pdp__ship-flag .product-flag,
.mn-pdp__flags .product-flag,
.mn-pdp__stage .product-flag,
.mn-card__badge .product-flag {
  position: absolute !important;
  top: 14px !important;
  left: 14px !important;
  right: auto !important;
  bottom: auto !important;
  width: auto !important;
  height: auto !important;
  max-width: calc(100% - 28px);
  transform: none !important;
  rotate: none !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  text-align: left !important;
  text-indent: 0 !important;
  overflow: visible !important;
  z-index: 3;
  line-height: 1;
}
.mn-card__media .product-flag > span,
.mn-pdp__ship-flag .product-flag > span,
.mn-pdp__flags .product-flag > span,
.mn-pdp__stage .product-flag > span,
.mn-card__badge .product-flag > span {
  display: inline-block !important;
  position: static !important;
  transform: none !important;
  background: #111111 !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-size: 10.5px !important;
  font-weight: 700 !important;
  letter-spacing: .05em !important;
  text-transform: uppercase !important;
  padding: 5px 10px !important;
  border-radius: 6px !important;
  line-height: 1.4 !important;
  white-space: nowrap;
  width: auto !important;
  text-indent: 0 !important;
}
/* Free-shipping / promo flags take the accent, per the design. */
.mn-pdp__ship-flag .product-flag > span,
.product-flag.flag1 > span { background: var(--mn-accent) !important; }
/* The PDP wrapper is only a positioning anchor — it must not draw. */
.mn-pdp__ship-flag { position: static !important; background: none !important; padding: 0 !important; }

/* ============================================================
20. NAV OVERFLOW — beat Bootstrap's !important
Bootstrap 3 sets `.navbar-collapse { overflow: visible !important }`
above 768px, which overrode the scroll container in section 13.7.
The menu then spilled ~315px over the Deals link. With the real
category labels the strip needs 1165px but only ~935px is free,
so it must scroll rather than paint over its sibling.
============================================================ */
@media (min-width: 1101px) {
  .mn-nav .navbar-collapse {
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .mn-nav .navbar-collapse::-webkit-scrollbar { display: none; }
  .mn-nav .navbar { flex: 1 1 auto !important; min-width: 0 !important; }
}

/* ============================================================
21. PRODUCT PAGE — slider + empty-state corrections
============================================================ */

/* 21.1 The thumbnail strip was being picked up by bxSlider, which sets
an inline width in the thousands of percent (3215% = 8520px) plus a
translate3d transform, and wraps the <ul> in .bx-viewport. The design
has three static thumbs and no carousel, so the slider is unwound in
JS (ProductDetailsPage.html) and overridden here for the moment
before that script runs — inline styles need !important to beat. */
.mn-pdp__thumbs,
.mn-pdp__thumbs.product-thumbnails,
.bx-viewport .mn-pdp__thumbs {
  display: flex !important;
  flex-wrap: wrap;
  gap: 12px;
  width: auto !important;
  transform: none !important;
  position: static !important;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}
.mn-pdp__thumbs > li {
  float: none !important;
  margin: 0 !important;
  width: auto !important;
  list-style: none;
}
.mn-pdp__gallery .bx-wrapper {
  margin: 14px 0 0 !important;
  border: none; box-shadow: none; background: none;
  max-width: none !important;
}
.mn-pdp__gallery .bx-viewport {
  height: auto !important;
  overflow: visible !important;
  border: none; box-shadow: none; background: none; left: 0;
}
.mn-pdp__gallery .bx-controls,
.mn-pdp__gallery .bx-pager { display: none !important; }

/* 21.2 $$DISCOUNTLIST$$ renders nothing for products without quantity
breaks, which left an empty "Buy more, save more" box. Hidden at
runtime by the script in ProductDetailsPage.html. */
.mn-tiers.is-empty { display: none; }

/* ============================================================
22. PRODUCT PAGE — symmetry pass against the approved spec
The two columns are 1fr 1fr / gap 28px, so on a 1124px container
each is 548px. What made them look lopsided was vertical, not
horizontal: the buy box measured 1317px against a 640px gallery.
Three causes, all addressed here and in ProductDetailsPage.html.
============================================================ */

/* 22.1 $$BULLETS$$ moved out of the buy box into its own Highlights
panel below the fold line, which is where the spec puts descriptive
copy. That single change removes the bulk of the height difference.
The old in-box rule is retired; the panel styling takes over. */
.mn-highlights .mn-buybox__bullets { max-height: none; overflow: visible; }
.mn-highlights .mn-buybox__bullets ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 28px;
  padding-left: 18px;
  margin: 0;
}
.mn-highlights .mn-buybox__bullets li { font-size: 14px; line-height: 1.65; color: var(--mn-text-2); }
.mn-highlights .mn-buybox__bullets:empty,
.mn-highlights:has(.mn-panel__body:empty) { display: none; }

/* 22.2 The gallery column is shorter than the buy box by design, so it
must not stretch — and the stage must keep its 1:.92 ratio rather
than growing with the row. align-items:start on .mn-pdp handles the
row; these guard the child. */
.mn-pdp__gallery { align-self: start; }
.mn-pdp__stage { width: 100%; }
.mn-pdp__flags:empty, .mn-pdp__share:empty { display: none; }

/* 22.3 Empty platform-rendered blocks still carry their bottom margin,
which pushed the trust row down and broke the visual balance. */
.mn-buybox__variants:empty,
.mn-buybox__subscription:empty,
.mn-buybox__rating:empty,
.mn-buybox__meta:empty { display: none !important; }
.mn-buybox > *:last-child { margin-bottom: 0; }

/* 22.4 Spec values the earlier pass approximated.
Volume header is #2C4690 (brand), not the deeper #223772. */
.mn-tiers__head { background: var(--mn-brand); }
.mn-assurance {
  border-top: 1px solid #eef1f6;
  padding-top: 14px;
  margin-top: 0;
  display: flex; flex-wrap: wrap;
  gap: 8px 22px;
  font-size: 13px;
  color: var(--mn-text-3);
}
.mn-buybox__secondary { margin-bottom: 16px; }
.mn-buyrow { align-items: stretch; }
.mn-qty { flex: 0 0 auto; }

/* 22.5 Specification tables inside the accordion panels: the spec shows
a 3-column grid of label/value cells, hairline-separated. The
platform renders $$TAB…$$ content as a table, so it is regridded. */
.mn-panel__body > table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border: 1px solid #eef1f6;
  border-radius: var(--mn-r);
  overflow: hidden;
  margin-top: 14px;
}
.mn-panel__body > table td, .mn-panel__body > table th {
  padding: 12px 16px;
  border-bottom: 1px solid #eef1f6;
  font-size: 14px;
  vertical-align: top;
}
.mn-panel__body > table tr:last-child td { border-bottom: none; }
.mn-panel__body > table td:first-child, .mn-panel__body > table th:first-child {
  font-size: 11px; font-weight: 700; letter-spacing: .05em;
  text-transform: uppercase; color: var(--mn-text-4);
  width: 34%;
}
.mn-panel__body > table td:last-child { font-weight: 600; color: var(--mn-navy); }

@media (max-width: 640px) {
  .mn-highlights .mn-buybox__bullets ul { grid-template-columns: 1fr; }
  .mn-pdp__thumbs > li { flex: 0 0 auto; }
}

/* ============================================================
23. CHECKOUT — structural parity with the approved spec
The live page renders three children inside .mn-co > .row:
the forms column (.col-sm-9), the summary (.col-sm-3) and a
third full-width .col-sm-9.right holding Place Order. Under
flexbox that third column stole width from the forms column,
which is why the forms measured 332px against a 380px summary.
Explicit grid placement fixes it.
============================================================ */
.mn-co > .row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 380px;
  gap: 28px;
  align-items: start;
  margin: 24px 0 0;
}
.mn-co > .row > .col-sm-9,
.mn-co > .row > .col-sm-3 {
  float: none;
  padding: 0;
  width: auto;
  min-width: 0;
}
.mn-co > .row > .col-sm-9:not(.right) { grid-column: 1; grid-row: 1; }
.mn-co > .row > .col-sm-3 { grid-column: 2; grid-row: 1; }
/* Place Order is moved into the summary by the page script; this is
the fallback position if that move is ever skipped. */
.mn-co > .row > .col-sm-9.right {
  grid-column: 2;
  grid-row: 2;
  text-align: left !important;
  padding-bottom: 0 !important;
}
.mn-co > .row > .col-sm-9.right > br { display: none; }
.mn-co > .row > .col-sm-9.right:empty,
.mn-co > .row > .col-sm-9.right:not(:has(.placeorder-button)) { display: none; }

/* 23.1 Sticky summary. checkout.js positions .floating-totals with
inline position/top/width, so these need !important to win —
an !important declaration outranks a non-important inline style. */
.mn-co .floating-totals {
  position: static !important;
  bottom: auto !important;
}
.mn-co .floating-totals > .panel {
  position: sticky !important;
  top: 66px !important;
  width: auto !important;
  margin-top: 0 !important;
  box-shadow: var(--mn-shadow-card);
  border-radius: var(--mn-r-xl);
  padding: 24px;
}

/* 23.2 Step chips. Three numbered steps, injected by the page script
from the .mn-co-step wrappers — not one per rendered panel. */
.mn-co-card__head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 18px;
}
.mn-co-card__num {
  width: 30px; height: 30px;
  flex: 0 0 30px;
  border-radius: 50%;
  background: #111111;
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  display: flex; align-items: center; justify-content: center;
}
.mn-co-card__title {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 17px;
  color: #111111;
}
/* Retire the old ::before numbering so no card is numbered twice. */
.mn-co-card[data-step]::before { content: none; }
.mn-co-step.is-empty { display: none; }
/* The control still emits its own header text inside a stepped card;
demote it so the chip row is the heading. */
.mn-co-card--step .h3.bold,
.mn-co-card--step .h3 { font-size: 15px; color: var(--mn-text-3); font-weight: 700; }

/* 23.3 Shipping method rows. */
.mn-co .mn-ship-methods { text-align: left !important; }
.mn-co .mn-ship-method {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--mn-border);
  border-radius: 11px;
  padding: 14px 16px;
  margin: 0 0 10px;
  cursor: pointer;
  font-weight: 400;
  font-size: 14px;
  color: #111111;
  width: 100%;
}
.mn-co .mn-ship-method.is-selected {
  border: 1.5px solid var(--mn-brand);
  background: #EDF1FA;
}
.mn-co .mn-ship-method input[type=radio] { margin: 0 10px 0 0; flex: 0 0 auto; }

/* 23.4 Order summary interior, per spec. */
.mn-summary__title {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 18px;
  color: #111111;
  margin-bottom: 18px;
}
.mn-summary__totals table { width: 100%; border-collapse: collapse; }
.mn-summary__totals td {
  padding: 5px 0;
  font-size: 14px;
  color: var(--mn-text-2);
  border: none;
  background: none;
}
.mn-summary__totals td:last-child {
  text-align: right;
  font-weight: 600;
  color: #111111;
  white-space: nowrap;
}
.mn-summary__totals tr:first-child td { border-top: 1px solid var(--mn-hairline); padding-top: 16px; }
.mn-summary__totals #trTotal td,
.mn-summary__totals tr[id*="Total"]:last-child td {
  border-top: 1px solid var(--mn-hairline);
  padding-top: 14px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 15px;
  color: #111111;
}
.mn-summary__totals #trTotal td:last-child,
.mn-summary__totals tr[id*="Total"]:last-child td:last-child {
  font-weight: 800;
  font-size: 26px;
}
.mn-summary__cta { margin-top: 16px; }
.mn-summary__cta:empty { display: none; }
.mn-summary__cta .placeorder-button,
.mn-co .placeorder-button { width: 100%; }
.mn-summary__cta input[type=submit],
.mn-summary__cta input[type=image],
.mn-summary__cta .ThemeButton { width: 100%; }
.mn-summary__freeship {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--mn-hairline);
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  font-size: 12px;
  color: var(--mn-text-3);
}
.mn-summary__freeship-h {
  width: 100%;
  font-weight: 700;
  color: #111111;
  text-transform: uppercase;
  letter-spacing: .05em;
  font-size: 11px;
}
.mn-summary__freeship span:not(.mn-summary__freeship-h)::before {
  content: "\f058";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  color: var(--mn-brand);
  margin-right: 5px;
  font-size: 10px;
}

/* 23.5 Full-width helpers that were stretching the forms column. */
.mn-co .col-sm-9.right .placeorder-button > div:empty { display: none; }
.mn-co [style*="width: 50%"] { width: 100% !important; float: none !important; display: block !important; }

@media (max-width: 900px) {
  .mn-co > .row { grid-template-columns: 1fr; }
  .mn-co > .row > .col-sm-9:not(.right),
  .mn-co > .row > .col-sm-3,
  .mn-co > .row > .col-sm-9.right { grid-column: 1; grid-row: auto; }
  .mn-co .floating-totals > .panel { position: static !important; }
}

/* ============================================================
24. ADD-TO-CART WRAPPER
.mn-atc is only a flex wrapper around the platform's submit
control, but section 5 gave it the button's own background and
padding — so the red button rendered inside a navy slab. The
button styling belongs to the control, not the wrapper.
============================================================ */
.mn-atc {
  background: none !important;
  border: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  flex: 1;
  display: flex;
  min-width: 0;
}
.mn-atc:hover { background: none !important; }
.mn-atc > input[type=submit],
.mn-atc > input[type=image],
.mn-atc > .AddToCartThemeButton,
.mn-atc > .ProductDetailsAddToCartThemeButton {
  flex: 1;
  width: 100%;
  padding: 15px !important;
  border-radius: var(--mn-r) !important;
}
/* Same shape on the category / home card add buttons. */
.mn-card__addwrap { background: none !important; padding: 0 !important; border: none !important; }

/* ============================================================
25. CHECKOUT — chip row, field labels, alignment
============================================================ */

/* 25.1 Section 12 set justify-content:space-between on the card head
(it was written for the payment card, which has card logos on the
right). On the step cards that pushed the title to the far edge. */
.mn-co-card__head { justify-content: flex-start !important; }
.mn-co-card--step .mn-co-card__ownhead { display: none; }

/* 25.2 The platform emits <label><input …><span>Field name</span></label>,
i.e. the caption AFTER the control. Untouched, that renders every
caption underneath its box. column-reverse puts the caption back on
top without altering a single control. */
.mn-co label {
  display: flex;
  flex-direction: column-reverse;
  align-items: stretch;
  gap: 5px;
  width: 100%;
  margin: 0 0 12px;
}
.mn-co label > span {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--mn-text-3);
  order: 2;
}
.mn-co label > input[type=text],
.mn-co label > input[type=email],
.mn-co label > input[type=tel],
.mn-co label > input[type=password],
.mn-co label > select,
.mn-co label > textarea { order: 1; width: 100%; }
/* Checkbox / radio captions stay inline. */
.mn-co label.checkbox,
.mn-co label.radio,
.mn-co .checkbox label,
.mn-co .radio label,
.mn-co .mn-ship-method,
.mn-co label:has(> input[type=checkbox]),
.mn-co label:has(> input[type=radio]) {
  flex-direction: row;
  align-items: center;
  gap: 10px;
}
.mn-co label:has(> input[type=checkbox]) > span,
.mn-co label:has(> input[type=radio]) > span { order: 0; font-weight: 400; color: var(--mn-text-2); }

/* 25.3 Several panels carry align="center" from the original export;
the design is left-aligned throughout. */
.mn-co .panel[align="center"],
.mn-co [align="center"] { text-align: left; }
.mn-co .mn-co-card__head,
.mn-co .placeorder-button { text-align: left; }

/* 25.4 Bootstrap's float grid is left in place for the field rows.
An earlier attempt replaced each .row with a CSS grid; the export
mixes col-sm-12 / col-sm-6 / col-sm-3 / col-sm-push6 inside the same
rows, and forcing a uniform two-column grid staggered the fields
instead of aligning them. Only the gutters are normalised. */
.mn-co-card .row { margin-left: -6px; margin-right: -6px; }
.mn-co-card .row > [class^="col-sm-"],
.mn-co-card .row > [class*=" col-sm-"] { padding-left: 6px; padding-right: 6px; }
.mn-co-card .row::after { content: ""; display: table; clear: both; }

/* 25.5 Headings inside checkout cards are left-aligned; several
inherit centring from the export's align="center" containers. */
.mn-co .h2, .mn-co .h3, .mn-co .h4,
.mn-co h2, .mn-co h3, .mn-co h4,
.mn-co .panel, .mn-co .panel > div { text-align: left; }
.mn-co .panel .center, .mn-co .panel center { text-align: center; }

/* 25.6 Shipping row interior: caption left, price right. */
.mn-co .mn-ship-method { text-align: left; justify-content: flex-start; }
.mn-co .mn-ship-method > *:not(input) { flex: 1 1 auto; min-width: 0; }
.mn-co .mn-ship-method > *:last-child:not(input) {
  flex: 0 0 auto;
  margin-left: auto;
  text-align: right;
  font-weight: 600;
  color: #111111;
  white-space: nowrap;
}
.mn-co .mn-ship-method.is-selected > *:last-child:not(input) { color: var(--mn-brand); font-weight: 700; }

/* 22.6 ##SHAREDCONTENT[Flag - Free Shipping]## emits div.abs.product-flag
> span, and .abs is position:absolute in the platform's own sheet.
Inside .mn-pdp__ship-flag that would re-anchor the badge to the stage
corner it happens to inherit. Neutralise the wrapper, keep the pill. */
.mn-pdp__ship-flag .product-flag,
.mn-pdp__ship-flag .abs {
  position: static !important;
  top: auto !important; left: auto !important; right: auto !important; bottom: auto !important;
  display: contents;
}
.mn-pdp__ship-flag .product-flag span,
.mn-pdp__ship-flag .abs span {
  background: none !important;
  color: inherit !important;
  padding: 0 !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  box-shadow: none !important;
}
.mn-pdp__ship-flag:empty { display: none; }

/* ============================================================
26. CHECKOUT — stray <i> resilience (no-JS fallback)
An unclosed <i> in an admin-managed string makes the parser
re-open <i> around every following block, so the summary column
lands at .row > i > i > .col-sm-3 and stops being a grid item.
The page script unwraps them; this keeps the grid correct in the
moment before that runs, and if scripting is unavailable.
============================================================ */
.mn-co > .row > i,
.mn-co > .row > i > i,
.mn-co > .row > i > i > i,
.mn-co > .row > i > i > i > i,
.mn-co .panel > i:has(> div),
.mn-co .panel > div > i:has(> div) {
  display: contents;
  font-style: normal;
}

/* 26.1 The summary panel carries .pad-20, whose padding and the
platform's 15px side margins were insetting it to 350px inside a
380px column. The spec is a flush 380 with 24px padding. */
.mn-co .floating-totals { padding: 0 !important; }
.mn-co .floating-totals > .panel {
  margin: 0 !important;
  padding: 24px !important;
  width: auto !important;
  max-width: none !important;
}
/* The outer column no longer needs to be sticky — the panel is. Two
nested sticky contexts fight each other on short pages. */
.mn-co > .row > .col-sm-3 { position: static; top: auto; }

/* ============================================================
27. NAV SIZING AT THE 1380 CONTAINER
style.css carries `.MenuBar .navbar ul.nav > li > a { font-size:16px }`
at specificity (0,3,3), which outranks `.mn-nav .navbar-nav > li > a`
(0,2,3) — so the strip was rendering at 16px and "Restaurant Supplies"
overflowed the row by 21px with Deals sitting on top of it. Matched
here at equal specificity plus !important, the same approach used in
sections 17 and 20 for the other style.css collisions.

The design specifies 13.5px / 14px 16px. Horizontal padding is 13px
instead of 16px because the live catalogue runs eight categories with
longer names than the seven short ones in the mockup ("Wide Format
Media" vs "Wide Format", "Ink & Toner Cartridges" vs "Ink & Toner").
Font size, colour and weight are the design's.
============================================================ */
.mn-nav .MenuBar .navbar ul.nav > li > a,
.mn-nav .navbar-nav > li > a,
.mn-nav div.HorizontalNavItem a {
  font-size: 13.5px !important;
  padding: 14px 11px !important;
  font-weight: 500 !important;
  letter-spacing: .01em !important;
}
.mn-nav__all { padding: 0 18px !important; font-size: 14px !important; }
.mn-nav__deals { padding: 0 4px 0 12px; font-size: 13px; margin-left: auto; }

/* Bootstrap puts 30px of left padding on .navbar plus its own collapse
gutters, which pushed the strip 47px right and clipped the last
category. The strip is inside .mn-nav__inner, which already carries
the container gutter. */
.mn-nav .navbar { padding: 0 !important; margin: 0 !important; }
.mn-nav .navbar-collapse { padding: 0 !important; margin: 0 !important; }
.mn-nav .navbar-nav { margin: 0 !important; float: none !important; }

@media (max-width: 1500px) {
  .mn-nav .MenuBar .navbar ul.nav > li > a,
  .mn-nav .navbar-nav > li > a,
  .mn-nav div.HorizontalNavItem a {
    font-size: 12.5px !important;
    padding: 14px 9px !important;
  }
  .mn-nav__all { padding: 0 14px; font-size: 13px; }
  .mn-nav__deals { padding: 0 2px 0 10px; font-size: 12.5px; }
}

/* ============================================================
28. CATEGORY PAGE — usable width, 4-up grid, wider filter rail

The LeftAndRightColumns template splits the row col-md-2 /
col-md-9 / col-md-1. On a 1380 container that is a 221px filter
rail, a 993px content column and — because nothing is ever
assigned to it — 110px of dead space on the right. The filter
list itself came out at 147px, which is why attribute names like
"Custom Thermal Paper Roll" were wrapping.

The row becomes a two-column grid. The right column is parked in
row 2 rather than hidden, so it costs nothing while empty but
still renders (below the products) if a widget is ever dropped
into it — hiding it outright would silently swallow that widget.
============================================================ */
:root { --mn-rail: 272px; }

.LayoutMiddle:has(> .LayoutLeftColumn) {
  display: grid;
  grid-template-columns: var(--mn-rail) minmax(0, 1fr);
  column-gap: 32px;
  align-items: start;
}
.LayoutMiddle > .LayoutLeftColumn,
.LayoutMiddle > .LayoutContent,
.LayoutMiddle > .LayoutRightColumn {
  float: none;
  width: auto;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
  min-width: 0;
}
.LayoutMiddle > .LayoutLeftColumn  { grid-column: 1; grid-row: 1; }
.LayoutMiddle > .LayoutContent     { grid-column: 2; grid-row: 1; }
.LayoutMiddle > .LayoutRightColumn { grid-column: 2; grid-row: 2; }
.LayoutMiddle > .LayoutContent > .LayoutContentInner { min-width: 0; }

/* 28.1 Four products per row, matching the home page and the design. */
.product-list.mn-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
/* The control emits a hidden <input class="CategoryListItemInfo"> beside
every card; keep it out of the grid flow explicitly rather than relying
on it always being type=hidden. */
.product-list > input { display: none; }

/* 28.2 The category description was capped at 640px, which looked like a
narrow ribbon inside a 1076px column. Let it use the measure, with a
readable ceiling rather than a fixed one. */
.mn-pagehead p,
.mn-pagehead__desc { max-width: 100%; }
.mn-cat-footer { max-width: none; }

/* 28.3 Filter rail at the wider measure. */
.mn-filters .mn-filter { padding: 20px 18px; }
.mn-filter__link, .mn-filter__check { line-height: 1.35; }
.mn-filter__link > span:first-child { min-width: 0; overflow-wrap: anywhere; }

@media (max-width: 1200px) {
  :root { --mn-rail: 232px; }
  .product-list.mn-grid-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 991px) {
  .LayoutMiddle:has(> .LayoutLeftColumn) { display: block; }
  .LayoutMiddle > .LayoutLeftColumn,
  .LayoutMiddle > .LayoutContent,
  .LayoutMiddle > .LayoutRightColumn { grid-column: auto; grid-row: auto; }
  .product-list.mn-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .product-list.mn-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
}

/* ============================================================
29. MEASURE PER PAGE TYPE

The container is sized for listing pages: a 272px filter rail
plus a four-up product grid needs roughly 1440 of usable width.
Detail and form pages do not benefit from that — a buy box or a
checkout form stretched to 700px+ per column reads as sparse, and
long form rows get harder to scan, not easier. Those two keep the
measure they were designed and verified at and centre inside the
wider container.
============================================================ */
.mn-pdp,
.mn-co,
.mn-co-head,
.mn-cart-layout,
.mn-panels,
.mn-crumb,
.mn-highlights {
  max-width: 1324px;
  margin-left: auto;
  margin-right: auto;
}

/* ============================================================
30. FILTER RAIL — match the spec's card
The AttributeNavigationLinks widget renders its group headers as
<li> inside a Bootstrap .nav, which was giving them a grey bar and
centring the text. The spec is a plain left-aligned small-caps
label on a white card.
============================================================ */
.mn-filters .mn-filter {
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-lg);
  padding: 20px;
}
.mn-filters .mn-filter__title,
.mn-filters li.mn-filter__title {
  display: block;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  text-align: left !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #111111;
  margin: 22px 0 14px;
  padding: 16px 0 0;
  border-top: 1px solid var(--mn-hairline) !important;
}
.mn-filters .mn-filter__list > li:first-child .mn-filter__title,
.mn-filters .mn-filter__title:first-child {
  margin-top: 0; padding-top: 0; border-top: none !important;
}
.mn-filters .mn-filter__row { margin: 0 0 11px; }
.mn-filters .mn-filter__link,
.mn-filters .mn-filter__check {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  padding: 0;
  background: none !important;
  font-size: 13.5px;
  font-weight: 400;
  color: var(--mn-text-2);
  text-align: left;
}
.mn-filters .mn-filter__link > span:first-child { flex: 1 1 auto; }
.mn-filters .mn-filter__count {
  flex: 0 0 auto;
  margin-left: auto;
  color: var(--mn-text-4);
  font-size: 12px;
  background: var(--mn-surface-3);
  border-radius: var(--mn-r-pill);
  padding: 1px 8px;
}
.mn-filters .mn-filter__apply { margin-top: 14px; }

/* 30.1 Child-category chips. The control emits a thumbnail that is
often missing or 1px; show it only when it is a real image. */
.mn-subcats {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 18px 0 6px;
}
.mn-subcat {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-pill);
  padding: 8px 16px;
  font-size: 13.5px;
  font-weight: 600;
  transition: border-color .16s, box-shadow .16s;
}
.mn-subcat:hover { border-color: var(--mn-brand); box-shadow: var(--mn-shadow-card); }
.mn-subcat__name a { color: var(--mn-deep); }
.mn-subcat__thumb { flex: 0 0 auto; line-height: 0; }
.mn-subcat__thumb img { width: 22px; height: 22px; object-fit: contain; border-radius: 4px; }
.mn-subcat__thumb:not(:has(img)) { display: none; }

/* ============================================================
31. HOME HERO — exact spec

The hero was carrying a warehouse photograph on the right. The
approved design has a glass "best seller" panel with three volume
tiers, plus two smaller stat cards beneath it. Grid is 1.22fr
.78fr at 44px gap, 60/28/56 padding, over a 64px grid-line wash
and a red radial glow off the top-right corner.
============================================================ */
.prnm-hero, .mn-hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg,#2C4690 0%,#1E3268 52%,#111111 100%);
}
.prnm-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px);
  background-size: 64px 64px;
  pointer-events: none;
  z-index: 0;
}
.prnm-hero::before {
  content: "";
  position: absolute;
  top: -180px; right: -120px;
  width: 640px; height: 640px;
  inset: auto -120px auto auto;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(203,37,43,.30) 0%, rgba(203,37,43,0) 68%);
  pointer-events: none;
  z-index: 1;
}
.prnm-hero {
  display: grid;
  grid-template-columns: 1.22fr .78fr;
  align-items: center;
  gap: 44px;
  padding: 25px max(28px, calc(50vw - var(--mn-container) / 2 + 28px)) 30px;
  min-height: 0;
}
.prnm-hero-copy, .prnm-hero-media { position: relative; z-index: 2; padding: 0; }

.prnm-pill { gap: 9px; padding: 7px 15px 7px 12px; font-size: 11.5px; letter-spacing: .1em; }
.prnm-pill__dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--mn-accent);
  box-shadow: 0 0 0 3px rgba(203,37,43,.22);
  flex: 0 0 auto;
}
.prnm-hero-title {
  color: #fff;
  font-size: 56px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: -.035em;
  margin: 24px 0 0;
}
.prnm-hero-title__alt { color: #A8BAE4; }
.prnm-hero-sub { color: #C2CBE2; font-size: 16.5px; line-height: 1.65; margin: 22px 0 0; max-width: 460px; }
.prnm-hero-btns { margin-top: 15px; gap: 12px; }
.prnm-hero-stats {
  display: flex; align-items: center; gap: 28px;
  margin-top: 15px; padding-top: 15px;
  border-top: 1px solid rgba(255,255,255,.12);
}
.prnm-hero-stats > div + div { border-left: 1px solid rgba(255,255,255,.14); padding-left: 28px; }
.prnm-hero-stats strong {
  display: block; font-family: var(--font-heading);
  font-weight: 800; font-size: 21px; color: #fff; line-height: 1.1;
}
.prnm-hero-stats span { display: block; font-size: 12.5px; color: #98A3C0; margin-top: 3px; }

/* ---- Card stack ---- */
.prnm-hero-cards { display: grid; gap: 12px; }
.prnm-hcard {
  display: block;
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: var(--mn-r-xl);
  padding: 20px 22px;
  backdrop-filter: blur(6px);
  transition: border-color .18s, background .18s;
}
.prnm-hcard:hover { border-color: rgba(255,255,255,.28); background: rgba(255,255,255,.08); }
.prnm-hcard__top { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; }
.prnm-hcard__eyebrow {
  font-size: 11px; font-weight: 700; letter-spacing: .09em;
  text-transform: uppercase; color: #A8BAE4;
}
.prnm-hcard__name {
  font-family: var(--font-heading); font-weight: 700; font-size: 16.5px;
  color: #fff; margin-top: 6px; line-height: 1.3;
}
.prnm-hcard__name span { color: #C2CBE2; font-weight: 600; font-size: 14px; }
a.prnm-hcard__name { display: block; color: #fff !important; }
a.prnm-hcard__name:hover { color: #A8BAE4 !important; }
.prnm-hcard__info { min-width: 0; }
.prnm-hcard__sku { font-size: 12px; color: #98A3C0; margin-top: 6px; }
.prnm-hcard__thumb {
  flex: 0 0 auto;
  width: 92px; height: 92px;
  border-radius: var(--mn-r-md);
  background: rgba(255,255,255,.06);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.prnm-hcard__thumb img { max-width: 84%; max-height: 84%; object-fit: contain; }
.prnm-hcard__thumb:not(:has(img)) { display: none; }
.prnm-hcard__foot {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 14px; margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.12);
}
.prnm-hcard__pricecol { flex: 1 1 auto; min-width: 0; }
.prnm-hcard__price { font-family: var(--font-heading); font-weight: 800; font-size: 26px; color: #fff; line-height: 1; }
.prnm-hcard__unit { font-size: 12px; color: #98A3C0; margin-top: 4px; }
.prnm-hcard__rating { margin-top: 6px; color: var(--mn-accent); font-size: 13px; letter-spacing: 2px; }
.prnm-hcard__rating img { height: 14px; width: auto; }
.prnm-hcard__cta {
  flex: 0 0 auto;
  background: var(--mn-accent);
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  padding: 11px 20px;
  border-radius: var(--mn-r);
  box-shadow: 0 10px 26px -12px rgba(203,37,43,.9);
}
.prnm-hcard__cta:hover { background: var(--mn-accent-hover); }

/* The widget renders a real card; the static fallback then stands down.
:has() on the shared parent keeps this to CSS — no script needed. */
.prnm-hero-cards:has(.prnm-hero-live .prnm-hcard) .prnm-hcard--fallback { display: none; }
.prnm-hero-live { display: grid; gap: 12px; }
.prnm-hero-live:empty { display: none; }

.prnm-hero-mini { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.prnm-hmini {
  background: rgba(255,255,255,.035);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: var(--mn-r-lg);
  padding: 15px 18px;
}
.prnm-hmini i { color: #A8BAE4; font-size: 15px; }
.prnm-hmini strong { display: block; font-family: var(--font-heading); font-weight: 700; font-size: 14px; color: #fff; margin-top: 9px; }
.prnm-hmini span { display: block; font-size: 12px; color: #98A3C0; margin-top: 2px; }

/* The slideshow widget stays bound but the approved hero has no banner. */
.prnm-hero-banner { display: none; }
.prnm-hero-art { display: none; }

@media (max-width: 991px) {
  .prnm-hero { grid-template-columns: 1fr; gap: 32px; padding-top: 44px; padding-bottom: 44px; }
  .prnm-hero-title { font-size: 40px; }
  .prnm-hero-sub { max-width: none; }
}
@media (max-width: 560px) {
  .prnm-hero-title { font-size: 32px; }
  .prnm-hero-stats { gap: 16px; flex-wrap: wrap; }
  .prnm-hero-stats > div + div { padding-left: 16px; }
  .prnm-hero-mini { grid-template-columns: 1fr; }
}


/* ==========================================================================
HEADER CENTERING + MULTI-LEVEL PRODUCT MENU  (added 2026-07-31)
Self-contained block: 1) centres the logo / search / account / cart cluster
in the global header, 2) makes the primary category menu reveal its
sub-categories and any sub-categories beneath those.
========================================================================== */

/* ---------- 1. CENTRE THE HEADER CLUSTER --------------------------------- */
/* The row was left aligned, so every pixel of slack piled up on the right.
Stop the slots from flex-growing and centre the whole group instead.      */
@media (min-width: 992px) {
  .mn-head__inner { justify-content: center; }

  .mn-head__main-slot { flex: 0 1 auto; min-width: 0; }

  /* The search box no longer grows, so it needs an explicit width. */
  .mn-head__search { flex: 0 0 600px; width: 600px; max-width: 600px; }
}

@media (min-width: 992px) and (max-width: 1279px) {
  .mn-head__search { flex-basis: 420px; width: 420px; max-width: 420px; }
}

/* ---------- 2. PRIMARY NAV: SUB-CATEGORIES + NESTED SUB-CATEGORIES ------- */
/* The nav strip carried "overflow-x:auto; overflow-y:hidden" for horizontal
scrolling, which clipped every dropdown panel, so no sub-category menu
could ever be seen. Unclip it and let the bar wrap instead of scroll.     */
@media (min-width: 1101px) {

  .mn-nav,
  .mn-nav__inner,
  .mn-nav .navbar,
  .mn-nav .navbar.navbar-default,
  .mn-nav .navbar-collapse,
  .mn-nav .navbar-collapse.collapse {
    overflow: visible !important;
  }

  /* No scrolling any more, so wrap rather than hide overflowing categories. */
  .mn-nav .navbar-nav { flex-wrap: wrap; }

  .mn-nav { position: relative; z-index: 900; }
  .mn-nav .navbar-nav > li { position: relative; }

  /* --- Level 1: top-level category -> its sub-categories --- */
  .mn-nav .navbar-nav > li.dropdown > .dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: auto;
    margin: 0;
    min-width: 268px;
    max-width: 330px;
    padding: 6px;
    background: var(--mn-surface, #ffffff);
    border: 1px solid var(--mn-border, #e6e9f0);
    border-radius: var(--mn-r-md, 12px);
    box-shadow: 0 18px 40px rgba(17, 17, 17, .16);
    z-index: 1000;
  }
  .mn-nav .navbar-nav > li.dropdown:hover > .dropdown-menu,
  .mn-nav .navbar-nav > li.dropdown:focus-within > .dropdown-menu {
    display: block;
  }

  /* --- Level 2, 3, 4 ...: sub-category -> its own sub-categories --- */
  .mn-nav .dropdown-menu li { position: relative; list-style: none; }

  .mn-nav .dropdown-menu .dropdown-submenu > .dropdown-menu {
    display: none;
    position: absolute;
    top: -7px;
    left: 100%;
    right: auto;
    margin: 0;
    min-width: 254px;
    max-width: 330px;
    padding: 6px;
    background: var(--mn-surface, #ffffff);
    border: 1px solid var(--mn-border, #e6e9f0);
    border-radius: var(--mn-r-md, 12px);
    box-shadow: 0 18px 40px rgba(17, 17, 17, .16);
    z-index: 1001;
  }
  .mn-nav .dropdown-menu .dropdown-submenu:hover > .dropdown-menu,
  .mn-nav .dropdown-menu .dropdown-submenu:focus-within > .dropdown-menu {
    display: block;
  }

  /* Invisible bridge so the pointer can travel to a flyout without
  dropping out of the parent item. */
  .mn-nav .dropdown-menu .dropdown-submenu > .dropdown-menu::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: -8px;
    width: 8px;
  }

  /* --- Link styling shared by every level --- */
  .mn-nav .dropdown-menu > li > a {
    display: block;
    position: relative;
    padding: 8px 12px;
    font-size: 13px;
    line-height: 1.35;
    font-weight: 500;
    white-space: normal;
    border-radius: 8px;
    color: var(--mn-text, #111111) !important;
    background: transparent !important;
  }
  .mn-nav .dropdown-menu > li > a:hover,
  .mn-nav .dropdown-menu > li > a:focus {
    background: var(--mn-surface-3, #f1f4fb) !important;
    color: var(--mn-blue, #2c4690) !important;
  }

  /* --- Affordance: chevron on any sub-category that has children --- */
  .mn-nav .dropdown-menu .dropdown-submenu > a { padding-right: 26px; }
  .mn-nav .dropdown-menu .dropdown-submenu > a::after {
    content: "\f105";
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 11px;
    position: absolute;
    top: 50%;
    right: 11px;
    transform: translateY(-50%);
    opacity: .5;
  }
  .mn-nav .dropdown-menu .dropdown-submenu:hover > a::after { opacity: 1; }

  /* --- Sub-category flyouts always open to the RIGHT (left: 100%, set in the
  base rule above). For the right-hand categories the first panel is
  pulled back to the item’s right edge so the rightward chain still
  has room on screen. --- */
  .mn-nav .navbar-nav > li:nth-last-child(-n+4) > .dropdown-menu {
    left: auto;
    right: 0;
  }
}


/* ==============================================================
24. PRODUCT PAGE - PARITY WITH THE APPROVED PRODUCT SCREEN
(added 2026-07-31)

Section 12.14 / 21 / 22 already port the component system. What
was still off against the mockup, measured on a live product:

a. the thumbnail strip showed 12 tiles in two rows because
bxSlider clones each photo - now one row (clones removed in
ProductDetailsPage.html);
b. volume pricing sat in the bullet copy far below the fold
instead of inside the buy box;
c. the primary CTA used the secondary navy, not the accent;
d. the category trail was indented and ended in a separator;
e. the compatibility list ran hundreds of rows in one column.

Self-contained: delete this whole section to revert.
============================================================== */

/* ---------- 24.1 Breadcrumb -------------------------------- */
.mn-crumb.breadcrumb {
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0;
  font-size: 13px;
  color: var(--mn-text-3);
}
.mn-crumb.breadcrumb ul,
.mn-crumb.breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* ---------- 24.2 Gallery: one static row of thumbnails ------
The clones are removed at runtime; nowrap keeps the strip a
single 84px row even on products with a dozen real photos. */
.mn-pdp__thumbs {
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  padding: 0 0 2px;
  margin-top: 14px;
}
.mn-pdp__thumbs > li { flex: 0 0 auto; list-style: none; }
.mn-pdp__thumbs > li.bx-clone { display: none !important; }
.mn-pdp__carousel .bx-controls,
.mn-pdp__carousel .bx-pager,
.mn-pdp__carousel .bx-controls-direction { display: none !important; }

/* ---------- 24.3 Primary CTA -------------------------------
The mockup puts Add to Cart on the red accent so it reads as
the single primary action in the buy box. Scoped to .mn-atc so
sign-in / place-order buttons keep the brand navy. */
.mn-atc input[type=submit],
.mn-atc input[type=image],
.mn-atc input.AddToCartThemeButton,
.mn-atc input.ProductDetailsAddToCartButton {
  background: #CB252B !important;
  border: 1px solid #CB252B !important;
  box-shadow: 0 10px 26px -10px rgba(203, 37, 43, .55) !important;
}
.mn-atc input[type=submit]:hover,
.mn-atc input[type=submit]:focus,
.mn-atc input.AddToCartThemeButton:hover,
.mn-atc input.ProductDetailsAddToCartButton:hover {
  background: #1E3268 !important;
  border-color: #1E3268 !important;
  box-shadow: 0 8px 20px rgba(30, 50, 104, .28) !important;
}

/* ---------- 24.4 Secondary buttons -------------------------
The mockup shows two outline buttons on one row. Wishlist is
off in Basic Settings, so the remaining button spans the row
instead of sitting in a half-width column. */
.mn-buybox__secondary > *:only-child { grid-column: 1 / -1; }
.mn-buybox__secondary .mn-btn--outline,
.mn-buybox__secondary .mn-btn--outline-wrap input {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  width: 100%;
  border: 1.5px solid var(--mn-action) !important;
  background: none !important;
  color: var(--mn-action) !important;
  border-radius: var(--mn-r) !important;
  padding: 11px !important;
  font-family: inherit;
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
}
.mn-buybox__secondary .mn-btn--outline:hover,
.mn-buybox__secondary .mn-btn--outline-wrap input:hover {
  background: var(--mn-icon-well) !important;
  color: var(--mn-action) !important;
}

/* ---------- 24.5 Subscription select ----------------------- */
.mn-buybox__subscription { margin-bottom: 12px; }
.mn-buybox__subscription .ac-store-text-label p {
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--mn-text-2);
}
.mn-buybox__subscription select {
  width: 100%;
  height: auto;
  border: 1px solid var(--mn-border-input);
  border-radius: var(--mn-r-sm);
  padding: 11px 14px;
  font-size: 14px;
  font-family: inherit;
  color: var(--mn-navy);
  background: #fff;
  box-shadow: none;
}

/* ---------- 24.6 Volume pricing ---------------------------
Two sources feed the same panel: the discount list control
and the platform quantity price table. The page script
rebuilds the table into .mn-tier cells and sets an inline
column count, so the grid here only needs a sane default and
a readable fallback for the raw table. */
.mn-tiers { margin-bottom: 16px; }
.mn-tiers__body { grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); }
.mn-tiers__body > ul { display: contents; margin: 0; padding: 0; list-style: none; }
.mn-tiers__body > ul > li {
  background: #fff;
  padding: 12px 8px;
  text-align: center;
  font-size: 12.5px;
  color: var(--mn-text-3);
  list-style: none;
}
.mn-tier__range { white-space: nowrap; }
.mn-tier__price { white-space: nowrap; }
.mn-tiers.is-adopted .mn-tier__price { font-size: 16px; }

/* Fallback skin for the raw control table wherever it renders. */
.mn-panel__body table.ProductDetailsQuantityPriceTable {
  width: auto;
  max-width: 100%;
  margin: 14px auto 0;
  border: 1px solid var(--mn-border);
  border-radius: var(--mn-r-md);
  border-collapse: collapse;
  overflow: hidden;
  background: #fff;
}
.mn-panel__body table.ProductDetailsQuantityPriceTable td {
  border: 1px solid var(--mn-hairline);
  padding: 9px 14px;
  font-size: 13.5px;
  text-align: center;
}
.mn-panel__body .ProductDetailsQuantityPriceQuantityLabel p,
.mn-panel__body .ProductDetailsQuantityPricePriceLabel p {
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--mn-text-4);
  text-align: right;
}
.mn-panel__body .ProductDetailsQuantityPriceQuantity {
  background: var(--mn-surface-3);
  font-weight: 700;
  color: var(--mn-navy);
}
.mn-panel__body .ProductDetailsQuantityPricePrice {
  font-family: var(--font-heading);
  font-weight: 800;
  color: var(--mn-navy);
}

/* ---------- 24.7 Panel content ----------------------------
Bullet and tab copy is merchant-authored HTML with inline
styles, so a few rules normalise it into the mockup rhythm. */
.mn-panel__body img { max-width: 100%; height: auto; }
.mn-panel__body hr {
  border: none;
  border-top: 1px solid var(--mn-hairline);
  margin: 16px 0;
}
.mn-panel__body > p:last-child { margin-bottom: 0; }

/* Cross-sell links are authored as a 30px block of colour. The
mockup uses a compact pill button, so the inline styles are
overridden rather than edited product by product. */
.mn-panel__body a.prod_view {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: var(--mn-action) !important;
  color: #fff !important;
  font-family: var(--font-heading);
  font-weight: 700 !important;
  font-size: 14px !important;
  line-height: 1.2 !important;
  padding: 12px 22px !important;
  border-radius: var(--mn-r-sm) !important;
  text-decoration: none !important;
}
.mn-panel__body a.prod_view:hover { background: var(--mn-blue-hover) !important; }

/* Compatibility lists run to hundreds of rows. Columns keep the
panel roughly the height the mockup allows for it. */
@media (min-width: 992px) {
  .mn-panels .mn-panel__body > ul,
  .mn-panels .mn-panel__body > div > ul {
    columns: 3;
    column-gap: 34px;
    padding-left: 18px;
    margin: 12px 0 0;
  }
  .mn-panels #relatedpanel .mn-panel__body ul,
  .mn-panels .mn-reviews__list ul { columns: auto; }
}
.mn-panels .mn-panel__body > ul > li {
  break-inside: avoid;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--mn-text-2);
  margin-bottom: 4px;
}

/* ---------- 24.8 Related items ---------------------------- */
#relatedpanel .mn-panel__body { margin-top: 16px; }
#relatedpanel table { width: 100%; }
#relatedpanel td { vertical-align: top; padding: 0 10px 10px 0; }

/* ---------- 24.9 Narrow screens --------------------------- */
@media (max-width: 900px) {
  .mn-pdp__thumbs { margin-top: 12px; }
  .mn-buybox__secondary { grid-template-columns: 1fr; }
}

/* ---------- 24.10 Beating the legacy body.ProductDetails block
style.css still carries the pre-Modern-Navy product restyle
(29 rules under body.ProductDetails). Those selectors outrank a
bare class, so the few that still fight the mockup are answered
here at matching specificity. */
body.ProductDetails .mn-crumb.breadcrumb {
  max-width: 1324px;  /* matches the .mn-pdp row width */
  margin: 0 auto;
  padding: 16px 0 0;
  color: var(--mn-text-3);
}
body.ProductDetails #btnAddToCart.AddToCartThemeButton,
body.ProductDetails .mn-atc input.AddToCartThemeButton,
body.ProductDetails .mn-atc input.ProductDetailsAddToCartThemeButton,
body.ProductDetails .mn-atc input.ProductDetailsAddToCartButton {
  background: #CB252B !important;
  border: 1px solid #CB252B !important;
  border-radius: var(--mn-r) !important;
  box-shadow: 0 10px 26px -10px rgba(203, 37, 43, .55) !important;
  padding: 15px !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 16px;
}
body.ProductDetails #btnAddToCart.AddToCartThemeButton:hover,
body.ProductDetails #btnAddToCart.AddToCartThemeButton:focus,
body.ProductDetails .mn-atc input.AddToCartThemeButton:hover {
  background: #1E3268 !important;
  border-color: #1E3268 !important;
  box-shadow: 0 8px 20px rgba(30, 50, 104, .28) !important;
}

/* ---------- 24.11 Saving badge on each quantity break ------ */
.mn-tier__save { font-size: 11px; font-weight: 700; color: var(--mn-blue); margin-top: 3px; min-height: 13px; }
.mn-tier--best .mn-tier__save { color: var(--mn-action); }

/* ---------- 24.12 Specification grid ----------------------
Merchant spec tables are plain 2-column label/value tables.
The page script tags them .mn-spectable; this regrids them into
the 3-up hairline grid the mockup shows, without touching the
authored HTML. Tables with three or more columns are untagged
and keep the table rules from section 22.5. */
.mn-panel__body table.mn-spectable {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  width: 100%;
  max-width: none;
  margin: 14px 0 0;
  background: var(--mn-hairline);
  border: 1px solid var(--mn-hairline) !important;
  border-radius: var(--mn-r);
  overflow: hidden;
  border-collapse: collapse;
}
.mn-panel__body table.mn-spectable > tbody,
.mn-panel__body table.mn-spectable > thead { display: contents; }
.mn-panel__body table.mn-spectable tr {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  background: #fff !important;
  padding: 12px 16px;
}
.mn-panel__body table.mn-spectable td,
.mn-panel__body table.mn-spectable th {
  display: block;
  border: none !important;
  background: none !important;
  padding: 0 !important;
  width: auto !important;
  text-align: left !important;
  white-space: normal;
}
.mn-panel__body table.mn-spectable td:first-child,
.mn-panel__body table.mn-spectable th:first-child {
  font-family: var(--font-sans-serif);
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--mn-text-4) !important;
}
.mn-panel__body table.mn-spectable td:last-child,
.mn-panel__body table.mn-spectable th:last-child {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--mn-navy) !important;
  margin-top: 3px;
}
@media (max-width: 900px) {
  .mn-panel__body table.mn-spectable { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .mn-panel__body table.mn-spectable { grid-template-columns: 1fr; }
}

/* =========================================================================
25. PROP 65 NOTICE - bottom of the product detail page (added 2026-07-31)
The markup comes from the ContentOnly page template:
<div><p style="display:none">##PRODUCTCUSTOMFIELD[Prop65Warning]##
<a ...p65-warnings-ca-gov-label.png>...</a></p></div>
A small script in the Product Details template (mountProp65) lifts the
warning + label link into .mn-p65 > .mn-p65__inner so it can be styled and
aligned with the rest of the page. Products without a Prop65Warning custom
field are left alone by that script and stay hidden.
Self-contained: delete this block to revert the appearance.
========================================================================= */
body.ProductDetails .mn-p65 {
  max-width: 1324px;            /* matches the .mn-pdp row width */
  margin: 6px auto 34px;
  padding: 0 4px;
}

body.ProductDetails .mn-p65__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px 20px;
  background: #fffbf0;
  border: 1px solid #f0dca8;
  border-radius: 12px;
  padding: 14px 20px;
}

body.ProductDetails .mn-p65 .Prop65Warning {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 0;
  text-align: left;
}

body.ProductDetails .mn-p65 .Prop65Warning p {
  margin: 0;
  font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: 0;
  color: #111111;
}

body.ProductDetails .mn-p65 .Prop65Warning img {
  flex: 0 0 auto;
  width: 22px;
  height: auto;
  margin: 0;
}

/* The "?" tooltip badge: shrink it and pull it onto the baseline. */
body.ProductDetails .mn-p65 .question-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  margin: 0;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1;
}

body.ProductDetails .mn-p65 .question-mark {
  margin: 0;
  font-size: 13px;
  line-height: 1;
}

body.ProductDetails .mn-p65 .tooltip { text-align: left; }

/* Label download link -> Modern Navy outline pill. */
body.ProductDetails a.mn-p65__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 18px;
  border: 1.5px solid #223772;
  border-radius: 100px;
  background: #ffffff;
  color: #223772 !important;
  font-family: Archivo, "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  text-decoration: none !important;
  transition: background-color .15s ease, color .15s ease;
}

body.ProductDetails a.mn-p65__link:hover,
body.ProductDetails a.mn-p65__link:focus {
  background: #223772;
  color: #ffffff !important;
  text-decoration: none !important;
}

@media (max-width: 640px) {
  body.ProductDetails .mn-p65__inner {
    flex-direction: column;
    text-align: center;
  }
  body.ProductDetails a.mn-p65__link { width: 100%; justify-content: center; }
}


/* ================================================================
NEWSLETTER BAND - light tint to complement the #2C4690 brand navy
================================================================ */
div.prnm-newsletter {
  background: #EAEEF8 !important;
  border-top: 1px solid #D3DBEE;
  border-bottom: 1px solid #D3DBEE;
}
div.prnm-newsletter .prnm-newsletter__title { color: #2C4690 !important; }
div.prnm-newsletter .prnm-newsletter__sub   { color: #55618A !important; }
div.prnm-newsletter input[type=text],
div.prnm-newsletter input[type=email] {
  background: #FFFFFF !important;
  color: #1F2A44 !important;
  border: 1px solid #B4C1E0 !important;
  box-shadow: 0 1px 2px rgba(44,70,144,.06) !important;
}
div.prnm-newsletter input::placeholder { color: #8892B0 !important; }
div.prnm-newsletter input[type=text]:focus,
div.prnm-newsletter input[type=email]:focus {
  border-color: #2C4690 !important;
  box-shadow: 0 0 0 3px rgba(44,70,144,.15) !important;
}
