/* ============================================================
   catalog-redesign.css — category/catalog listing pages
   Loaded from catalog/listing/product-list.tpl, i.e. on every product
   listing (category, brand, search, new products, prices drop, best
   sales) and nowhere else — bare selectors here are safe without a
   page-scoping class.
   Palette --eg-* declared in header-redesign.css (loads earlier
   in <head>, in every page including this one).
   ============================================================ */

/* 1. Drop the sidebar category tree (ps_categorytree) — user
   confirmed 2026-09-10 it duplicates the main menu and is already
   disabled on mobile, so removing it loses nothing. Content column
   takes the full width instead of sharing it with a 3-col sidebar. */
#left-column {
  display: none !important;
}

#content-wrapper {
  width: 100% !important;
  max-width: 100% !important;
  flex: 0 0 100% !important;
}

/* 2. Category intro panel — was a plain white block, now matches
   the homepage hero's warm cream panel + terracotta heading. */
.block-category {
  background: var(--eg-stamp, #f0ece4);
  border-radius: 18px;
  padding: 28px 32px;
  margin-bottom: 18px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
}

.eg-cat-intro__text {
  flex: 1 1 480px;
  min-width: 0;
}

.block-category h1,
.block-category h1.h1,
.block-category #category-description h1 {
  font-family: "Poppins", sans-serif !important;
  font-weight: 800 !important;
  font-size: 3rem !important;
  line-height: 1.15;
  /* Matches egstartpage's hero heading color (modules/egstartpage/
     views/templates/hook/hero.tpl) — hardcoded there too, not a
     declared --eg-* token. */
  color: #7b4508;
  margin: 0 0 12px;
}

.block-category #category-description {
  background: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  color: #4c463c;
  font-size: 1.4rem;
  line-height: 1.65;
  max-width: 70ch;
}

/* Descriptions are authored in the BO with inline font-size:11px on
   most categories — that's what made the intro text unreadable. */
.block-category #category-description p,
.block-category #category-description li,
.block-category #category-description span {
  font-size: 1.4rem !important;
  line-height: 1.65 !important;
}

/* The description often opens with its own title — either a bolded
   paragraph or an <h1> authored in the BO (converted to
   p.eg-desc-heading on output so the page keeps a single <h1>).
   Either way it now duplicates the real heading above it. */
.block-category #category-description > p:first-child > strong:only-child,
.block-category #category-description > .eg-desc-heading:first-child {
  display: none;
}

.eg-cat-intro__stat {
  flex: none;
  text-align: right;
}

.eg-cat-intro__num {
  display: block;
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-size: 3.2rem;
  line-height: 1;
  color: var(--eg-ink, #1a1a1a);
}

.eg-cat-intro__lbl {
  display: block;
  margin-top: 4px;
  font-size: 1.1rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--eg-muted, #6b6a63);
}

.block-category a.btn.btn-category-description-long {
  background: none;
  color: var(--eg-ink, #1a1a1a);
  border: none;
  border-radius: 0;
  padding: 0;
  font-size: 1.3rem;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
  text-decoration: underline;
  text-underline-offset: 3px;
  display: inline-block;
  margin-top: 10px;
}

.block-category a.btn.btn-category-description-long::after {
  content: " →";
}

/* 2b. theme.css capitalizes every word of the page heading
   ("Hoodies Med Eget Tryck", "Sökresultat För «Hoodie»") — show the
   name as it is written in the back office. */
#main .block-category h1,
#main .block-category h1.h1 {
  text-transform: none;
}

/* 2c. Brand page heading (catalog/listing/manufacturer.tpl): small
   "Varumärke" label, the brand name big, the service line under it —
   one <h1>. The .block-category h1 rule above sets the size on the h1
   itself; the two spans carry their own. */
#main .eg-brand-intro__eyebrow {
  margin: 0 0 6px;
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--eg-muted, #6b6a63);
}

#main .block-category h1.eg-brand-intro__title {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0 0 12px;
}

#main .eg-brand-intro__name {
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-size: 4.2rem;
  line-height: 1.05;
  color: #7b4508;
}

#main .eg-brand-intro__service {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.8rem;
  line-height: 1.3;
  color: var(--eg-ink, #1a1a1a);
}

@media (max-width: 767px) {
  #main .eg-brand-intro__name {
    font-size: 3rem;
  }

  #main .eg-brand-intro__service {
    font-size: 1.5rem;
  }
}

/* 2d. Brand logo in the intro panel (manufacturer.tpl, when img/m/<id>.jpg
   exists): a white tile left of the heading. Brand logos are small
   originals (≈140–170px wide) on white, so they sit on white, not on the
   cream panel, and are never upscaled. */
#main .eg-brand-intro.has-logo {
  align-items: center;
}

#main .eg-brand-intro__logo {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 150px;
  height: 110px;
  padding: 14px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(26, 18, 10, .06);
}

#main .eg-brand-intro__logo img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

#main .eg-brand-intro.has-logo .eg-cat-intro__text {
  flex: 1 1 360px;
}

@media (max-width: 767px) {
  #main .eg-brand-intro__logo {
    width: 120px;
    height: 84px;
    padding: 10px;
  }
}

/* 2e. Links inside the intro description (category and brand texts link
   to related categories) — the theme draws them in the same muted grey as
   the text, so nobody sees them. Ink + underline. */
#main .block-category #category-description a {
  color: var(--eg-ink, #1a1a1a);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

#main .block-category #category-description a:hover {
  color: #7b4508;
}

/* 4. Product cards — shape matches the homepage bestseller/news
   cards (egstartpage .eg-prod-card: 12px radius, thin #eaeaea
   border, no shadow, flat white background); content stays the
   real listing markup (name/brand/price/stars/add-to-cart), just
   restyled and the brand moved onto the image as a pill. */
.product-miniature {
  background: #fff;
  border: 1px solid #eaeaea;
  border-radius: 12px;
  overflow: hidden;
  margin-top: 0;
  transition: box-shadow .15s ease;
}

.product-miniature:hover {
  box-shadow: 0 10px 24px -14px rgba(26, 18, 10, .22);
}

.thumbnail-container {
  aspect-ratio: 1 / 1;
  padding: 0;
  background: var(--eg-canvas, #f9f8f6);
}

/* The <a class="thumbnail"> needs its own box: without it the anchor
   collapses to 0px wide (img sized off the anchor, anchor sized off the
   img) and the fmm_sticker badge, which is absolutely positioned against
   that anchor, gets squeezed into a one-letter-per-line column. */
.thumbnail-container .thumbnail {
  display: block;
  position: relative;
  width: 100%;
  height: 100%;
}

/* contain, not cover: product photos are 260x322 portrait, a square
   cover crop cuts sleeves and hems off the garment. */
.thumbnail-container .thumbnail img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.fmm_sticker_base_span {
  top: 8px !important;
  right: 8px !important;
  left: auto !important;
  bottom: auto !important;
  width: auto !important;
  white-space: nowrap;
  z-index: 3;
}

/* Brand stays in its normal spot (shared miniature template also
   renders "Related products" on the product page — do not move it
   into .thumbnail-container, that would land there too and it has
   no matching overlay styles in product-redesign.css). */
.product-manufacturer {
  margin: 2px 0 4px;
}

.product-manufacturer span a {
  background: #f9f2e8;
  color: var(--eg-ink, #1a1a1a);
  font-size: 1rem;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 99px;
  display: inline-block;
}

.product-flags {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  background: var(--eg-yellow, #f5a623);
  color: var(--eg-ink, #1a1a1a);
  font-size: 1.1rem;
  font-weight: 800;
  padding: 3px 9px;
  border-radius: 99px;
}

.product-groups {
  padding: 12px 14px 14px;
}

.product-title a {
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--eg-ink, #1a1a1a);
  line-height: 1.35;
  text-decoration: none !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.product-title a:hover {
  text-decoration: underline;
}

/* Hover CTA over the image. Rendered from the existing thumbnail
   anchor (which already links to the product) via ::after — the
   miniature template is shared with the product page's related
   products block, so no markup is added for it. */
.thumbnail-container .thumbnail::after {
  content: "Designa nu";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  padding: 9px 0;
  border-radius: 99px;
  background: var(--eg-yellow, #f5a623);
  color: var(--eg-ink, #1a1a1a);
  font-family: "Poppins", sans-serif;
  font-size: 1.1rem;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
  text-align: center;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .16s ease, transform .16s ease;
  pointer-events: none;
  z-index: 4;
}

.product-miniature:hover .thumbnail-container .thumbnail::after {
  opacity: 1;
  transform: translateY(0);
}

@media (hover: none) {
  .thumbnail-container .thumbnail::after {
    display: none;
  }
}

.product-price-and-shipping .price {
  font-size: 1.55rem;
  font-weight: 800;
  color: var(--eg-ink, #1a1a1a);
}

.product-price-and-shipping .regular-price {
  font-size: 1.1rem;
  color: var(--eg-muted, #6b6a63);
}

/* Review stars — core markup/colors kept as-is (.star/.star_on,
   #FFCC00 filled / #DBDBDB empty from novproductcomments), just
   tightened up so they read as one compact row with the count. */
.product-comments {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 4px 0;
}

.product-comments .star_content {
  display: flex;
  gap: 1px;
}

.product-comments .star {
  width: 11px;
  height: 11px;
}

.product-comments span {
  font-size: 1.05rem;
  color: var(--eg-muted, #6b6a63);
}

.info-stock {
  font-size: 1.1rem;
  color: var(--eg-muted, #6b6a63);
}


/* This button carries the delivery-time text ("Leveranstid 1-2
   veckor"), not a call to action — keep it as a quiet info line and
   let the hover CTA on the image do the selling. */
.products.grid .product-buttons .add-to-cart {
  background: none !important;
  border: none !important;
  padding: 0 !important;
  font-size: 1.1rem !important;
  font-weight: 500 !important;
  color: var(--eg-muted, #6b6a63) !important;
  text-transform: none;
}

.products.grid .product-buttons .add-to-cart i,
.products.grid .product-buttons .add-to-cart .loading {
  display: none;
}

.group-buttons-des {
  margin-top: 8px;
}

/* 5. The theme draws a 1px grey rule over #js-product-list-bottom; the
   bottom toolbar (section 8) has its own border. */
#js-product-list-bottom::before {
  display: none !important;
}

/* 6. Closing CTA band — same warm panel as the intro, mirrors the
   B2B band on the homepage. */
.eg-cat-cta {
  background: var(--eg-stamp, #f0ece4);
  border-radius: 18px;
  padding: 30px 32px;
  margin: 30px 0 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  flex-wrap: wrap;
}

.eg-cat-cta__text h2 {
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-size: 2rem;
  color: var(--eg-ink, #1a1a1a);
  margin: 0;
}

.eg-cat-cta__text p {
  font-size: 1.3rem;
  color: var(--eg-muted, #6b6a63);
  margin: 6px 0 0;
  max-width: 60ch;
}

.eg-cat-cta__btn {
  flex: none;
  background: var(--eg-ink, #1a1a1a);
  color: #fff;
  font-size: 1.3rem;
  font-weight: 700;
  padding: 13px 24px;
  border-radius: 99px;
  white-space: nowrap;
}

.eg-cat-cta__btn:hover {
  color: #fff;
  opacity: .9;
}

@media (max-width: 767px) {
  .block-category {
    padding: 20px 18px;
  }

  .block-category h1,
  .block-category h1.h1,
  .block-category #category-description h1 {
    font-size: 2.2rem;
  }

  .eg-cat-intro__stat {
    text-align: left;
  }

  .eg-cat-cta {
    padding: 22px 18px;
  }
}

/* 6b. Empty listing (product-list.tpl, no products): brand without
   products in the shop, or a search with no hits. Replaces the theme's
   English "Sorry for the inconvenience" block and its old search field. */
#main .eg-empty-brand {
  max-width: 760px;
  margin: 22px 0 0;
  padding: 30px 34px;
  border: 1px solid var(--eg-border, #e2ddd8);
  border-radius: 18px;
  background: #fff;
}

#main .eg-empty-brand h2 {
  margin: 0 0 10px;
  font-family: "Poppins", sans-serif;
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1.25;
  color: var(--eg-ink, #1a1a1a);
  text-transform: none;
}

#main .eg-empty-brand p {
  max-width: 62ch;
  margin: 0;
  font-size: 1.45rem;
  line-height: 1.65;
  color: #4c463c;
}

#main .eg-empty-brand__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
}

#main .eg-empty-brand__btn {
  display: inline-flex;
  align-items: center;
  height: 44px;
  padding: 0 22px;
  border-radius: 99px;
  border: 1px solid var(--eg-border, #e2ddd8);
  background: #fff;
  font-family: "Poppins", sans-serif;
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--eg-ink, #1a1a1a);
  text-decoration: none !important;
}

#main .eg-empty-brand__btn:hover {
  border-color: var(--eg-ink, #1a1a1a);
  color: var(--eg-ink, #1a1a1a);
}

#main .eg-empty-brand__btn--primary,
#main .eg-empty-brand__btn--primary:hover {
  background: var(--eg-ink, #1a1a1a);
  border-color: var(--eg-ink, #1a1a1a);
  color: #fff;
}

@media (max-width: 767px) {
  #main .eg-empty-brand {
    padding: 22px 18px;
  }
}

/* 7. Subcategory chips — replaces the dropped sidebar tree (section 1).
   Markup in catalog/listing/category.tpl (.eg-cat-chips). */
.eg-cat-chips {
  display: flex;
  gap: 9px;
  overflow-x: auto;
  scrollbar-width: none;
  margin: 0 0 16px;
  padding-bottom: 2px;
}

.eg-cat-chips::-webkit-scrollbar {
  display: none;
}

.eg-chip {
  flex: none;
  padding: 8px 16px;
  border-radius: 99px;
  border: 1px solid var(--eg-border, #e2ddd8);
  background: #fff;
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--eg-ink, #1a1a1a);
  white-space: nowrap;
  text-decoration: none !important;
  transition: border-color .12s ease;
}

.eg-chip:hover,
.eg-chip:focus {
  border-color: var(--eg-ink, #1a1a1a);
  color: var(--eg-ink, #1a1a1a);
}

.eg-chip.is-active,
.eg-chip.is-active:hover {
  background: var(--eg-ink, #1a1a1a);
  border-color: var(--eg-ink, #1a1a1a);
  color: #fff;
}

/* 8. Toolbar above AND below the list (catalog/_partials/eg-toolbar.tpl):
   [grid/list] [Sortera ▾] ......... 86 produkter · visar 1–12  [Per sida 12 ▾]  ‹ 1 2 3 … 8 ›
   Left group = how the list is shown, right group = where you are in it.
   Selectors use #main .eg-toolbar (not #js-product-list-top) so both
   copies share them. */
#main .eg-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 16px;
  margin-left: 0;
  margin-right: 0;
  padding: 12px 0;
  border-top: 1px solid var(--eg-border, #e2ddd8);
}

#main .eg-toolbar--top {
  margin-bottom: 10px;
}

#main .eg-toolbar--bottom {
  margin-top: 26px;
}

#main .eg-toolbar .eg-toolbar__left,
#main .eg-toolbar .eg-toolbar__right {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

#main .eg-toolbar .eg-toolbar__right {
  margin-left: auto;
  gap: 10px 18px;
}

#main .eg-toolbar .total-products {
  background: none;
  padding: 0;
}

#main .eg-toolbar .total-products p {
  margin: 0;
  text-transform: none;
  font-size: 1.3rem;
}

#main .eg-toolbar .total-products strong {
  font-weight: 600;
  color: var(--eg-ink, #1a1a1a);
}

#main .eg-toolbar .total-products .eg-shown {
  font-weight: 400;
  color: var(--eg-muted, #6b6a63);
}

#main .eg-toolbar .change-type {
  display: inline-flex;
  margin: 0;
  border: 1px solid var(--eg-border, #e2ddd8);
  border-radius: 99px;
  overflow: hidden;
  background: #fff;
}

#main .eg-toolbar .change-type span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 32px;
  padding: 0;
  background: transparent;
  color: var(--eg-muted, #6b6a63);
  line-height: 1;
  cursor: pointer;
}

#main .eg-toolbar .change-type span i {
  width: auto;
  height: auto;
  font-size: 13px;
  line-height: 1;
}

#main .eg-toolbar .change-type span.active {
  background: var(--eg-ink, #1a1a1a);
  color: #fff;
}

#main .eg-toolbar .sort-by {
  display: none;
}

/* Sort + per-page: the same pill dropdown */
#main .eg-toolbar .products-sort-order.dropdown {
  position: relative;
  background: none;
  padding: 0;
  margin: 0;
  float: none;
  width: auto;
}

#main .eg-toolbar .products-sort-order .select-title {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 34px;
  padding: 0 10px 0 14px;
  border: 1px solid var(--eg-border, #e2ddd8);
  border-radius: 99px;
  background: #fff;
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--eg-ink, #1a1a1a);
  text-transform: none;
  cursor: pointer;
  white-space: nowrap;
}

#main .eg-toolbar .products-sort-order .select-title:hover {
  border-color: var(--eg-ink, #1a1a1a);
}

#main .eg-toolbar .products-sort-order .select-title .eg-sort-prefix {
  font-weight: 500;
  color: var(--eg-muted, #6b6a63);
}

#main .eg-toolbar .products-sort-order .select-title .material-icons {
  float: none;
  font-size: 18px;
  line-height: 1;
  color: var(--eg-muted, #6b6a63);
}

#main .eg-toolbar .products-sort-order .dropdown-menu {
  left: 0;
  right: auto;
  min-width: 190px;
  padding: 6px;
  border: 1px solid var(--eg-border, #e2ddd8);
  border-radius: 12px;
  box-shadow: 0 12px 28px -14px rgba(26, 18, 10, .25);
}

#main .eg-toolbar .products-sort-order .select-list {
  display: block;
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 1.25rem;
  color: var(--eg-ink, #1a1a1a);
  text-transform: none;
}

#main .eg-toolbar .products-sort-order .select-list:hover {
  background: var(--eg-stamp, #f0ece4);
}

#main .eg-toolbar .products-sort-order .select-list.current {
  font-weight: 700;
}

#main .eg-toolbar .eg-perpage {
  display: flex;
  align-items: center;
  gap: 8px;
}

#main .eg-toolbar .eg-perpage__label {
  font-size: 1.25rem;
  color: var(--eg-muted, #6b6a63);
  white-space: nowrap;
}

#main .eg-toolbar .eg-perpage .select-title {
  min-width: 68px;
  justify-content: space-between;
}

#main .eg-toolbar .eg-perpage .dropdown-menu {
  left: auto;
  right: 0;
  min-width: 96px;
}

/* Compact pager (same pages as before, now in the toolbar) */
#main .eg-toolbar .eg-toolbar-pager {
  display: flex;
  align-items: center;
  gap: 3px;
}

#main .eg-toolbar .eg-toolbar-pager a,
#main .eg-toolbar .eg-toolbar-pager__gap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 30px;
  padding: 0 8px;
  border-radius: 99px;
  border: 1px solid transparent;
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1;
  color: var(--eg-ink, #1a1a1a);
  text-decoration: none !important;
}

#main .eg-toolbar .eg-toolbar-pager__gap {
  min-width: 0;
  padding: 0 2px;
  color: var(--eg-muted, #6b6a63);
}

#main .eg-toolbar .eg-toolbar-pager a:hover {
  background: var(--eg-stamp, #f0ece4);
  color: var(--eg-ink, #1a1a1a);
}

#main .eg-toolbar .eg-toolbar-pager a.is-current,
#main .eg-toolbar .eg-toolbar-pager a.is-current:hover {
  background: var(--eg-ink, #1a1a1a);
  color: #fff;
  cursor: default;
}

#main .eg-toolbar .eg-toolbar-pager a.eg-toolbar-pager__step {
  width: 30px;
  padding: 0;
  border-color: var(--eg-border, #e2ddd8);
  background: #fff;
  font-size: 1.7rem;
}

#main .eg-toolbar .eg-toolbar-pager a.eg-toolbar-pager__step:hover {
  border-color: var(--eg-ink, #1a1a1a);
  background: #fff;
}

#main .eg-toolbar .eg-toolbar-pager a.disabled {
  opacity: .35;
  pointer-events: none;
}

@media (max-width: 767px) {
  #main .eg-toolbar .eg-toolbar__right {
    margin-left: 0;
  }

  /* On phones the pager lives only under the list. */
  #main .eg-toolbar--top .eg-toolbar-pager {
    display: none;
  }
}

/* 8b. theme.css greys out the text inside the dropdown toggles and
   uppercases everything in the pagination area (the bottom copy sits
   there). Value in ink, "Sortera:" / "Per sida" stay muted, no caps. */
#main .eg-toolbar,
#main .eg-toolbar .eg-perpage__label,
#main .eg-toolbar .total-products p {
  text-transform: none;
  letter-spacing: 0;
}

#main .eg-toolbar .products-sort-order .select-title > span:not(.eg-sort-prefix) {
  color: var(--eg-ink, #1a1a1a);
}

/* 9. Card grid details: equal-height cards per row, portrait image
   frame (photos are ~4:5, so no grey side bars), upright titles. */
.products.grid .item {
  display: flex;
  margin-bottom: 20px;
}

.products.grid .product-miniature {
  display: flex;
  flex-direction: column;
  width: 100%;
}

.products.grid .product-groups {
  flex: 1 1 auto;
}

.products.grid .thumbnail-container {
  aspect-ratio: 4 / 5;
  background: #fff;
}

.product-groups.pt-5 {
  padding-top: 13px !important;
}

.product-miniature .product-title a {
  font-style: normal;
}

/* 10. Long description (text after ===read_more===) — plain reading
   block between the grid and the CTA band. */
#category-description-long {
  margin: 38px 0 0;
  max-width: 80ch;
  color: #4c463c;
  font-size: 1.4rem;
  line-height: 1.65;
}

#category-description-long p,
#category-description-long li,
#category-description-long span {
  font-size: 1.4rem !important;
  line-height: 1.65 !important;
}

#category-description-long h2,
#category-description-long h3,
#category-description-long .eg-desc-heading {
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-size: 2rem !important;
  line-height: 1.25 !important;
  color: var(--eg-ink, #1a1a1a);
  margin: 0 0 10px;
}

#category-description-long a {
  color: var(--eg-ink, #1a1a1a);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* 11. #nav-top::before draws a second grey 1px rule above the toolbar. */
#nav-top::before {
  display: none !important;
}

/* 12. Grid rhythm like the mockup: 18px gutters both ways. theme.css
   (loaded async, after this file) gives every .item margin-bottom:30px
   but zeroes it on the last one — which made the last card in the
   bottom row visibly taller than its neighbours (the row stretches all
   items to the same outer height). */
#js-product-list .products.grid.row {
  margin-left: -9px;
  margin-right: -9px;
}

#js-product-list .products.grid .item {
  padding-left: 9px;
  padding-right: 9px;
  margin-bottom: 18px !important;
}

/* 13. Closing CTA as a full-width band (mockup), content still on the
   container grid: the background is painted by a spread box-shadow and
   clipped to the band's own height. */
.eg-cat-cta {
  border-radius: 0;
  padding-left: 0;
  padding-right: 0;
  margin-bottom: 0;
  box-shadow: 0 0 0 100vmax var(--eg-stamp, #f0ece4);
  clip-path: inset(0 -100vmax);
}

/* The band sits directly on the footer in the mockup — drop the 60px
   #main bottom margin + 85px footer top margin (theme.css) on category
   pages only; this file isn't loaded anywhere else. */
#main {
  margin-bottom: 0 !important;
}

#footer,
footer.footer {
  margin-top: 0 !important;
}

/* ============================================================
   14. Overrides that must beat vinova_teemax.
   theme.css and custom.css are appended AFTER this file (async
   loader), so any rule here with equal specificity loses to them.
   Everything below is prefixed with #main (section#main wraps the
   whole listing) to win on specificity instead of !important.
   ============================================================ */

/* Page ground like the mockup: warm off-white, white only on cards. */
body,
#main-site,
#wrapper-site {
  background: var(--eg-canvas, #f9f8f6);
}

/* Intro: mockup spacing (14px below breadcrumb, 30/34 padding). */
#main .block-category {
  margin-top: 6px;
  padding: 30px 34px;
}

/* Toolbar: theme fixes #nav-top at height:35px + margin-bottom:30px,
   so the 60px toolbar overflowed it and the grid slid 5px under the
   toolbar. Let it size to content; 22px from controls to cards. */
#main #nav-top {
  height: auto;
  margin-bottom: 0;
}

/* Card image edge to edge (theme: 4px inner padding). */
#main .product-miniature.item-one .thumbnail-container {
  padding: 0;
}

/* Card body like the mockup (13/14/15 padding, ~7px rhythm). theme
   adds 9px side padding to .product-description, 16/18px to the title,
   -15px/18px to the brand, 20px under the stars. */
#main .product-miniature .product-groups {
  padding: 13px 14px 15px;
}

#main .product-miniature .product-description {
  padding: 0;
}

#main .product-miniature .product-title {
  padding: 0;
  margin: 0 0 7px;
}

#main .product-miniature .product-manufacturer {
  margin: 0 0 9px;
}

#main .product-miniature .product-group-price {
  margin: 0 0 6px !important; /* .mb-10 utility is !important */
}

#main .product-miniature .product-comments {
  margin: 0;
}

/* Stars: .star is an 11px box with overflow:hidden, but its FontAwesome
   glyph (::after) inherited line-height 19.5px and sat low — the bottom
   of every star was clipped. Size the glyph to the box. */
#main .product-comments .star {
  width: 12px;
  height: 12px;
  float: none;
}

#main .product-comments .star::after {
  display: block;
  font-size: 12px;
  line-height: 12px;
}

#main .product-comments > span {
  margin-left: 0;
  font-size: 1.05rem;
  line-height: 1;
  color: var(--eg-muted, #6b6a63);
}

/* Long description spacing (custom.css sets margin-top:50px on the id). */
#main #category-description-long {
  margin-top: 40px;
}

/* Card text colours: theme.css tints the price teal; custom.css makes
   every link inside .product-description italic + underlined, which
   hit the brand pill too. */
#main .product-miniature .product-price-and-shipping .price {
  color: var(--eg-ink, #1a1a1a);
}

#main .product-miniature .product-manufacturer span a {
  font-style: normal;
  text-decoration: none;
}

/* 15. Brand pill on the image (grid view only): absolutely positioned against .product-miniature (top
     left of the image, like the mockup). theme.css makes
     .product-description position:relative, which would trap it. */
#main .products.grid .product-miniature .product-groups,
#main .products.grid .product-miniature .product-description {
  position: static;
}

#main .products.grid .product-miniature .product-manufacturer {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  margin: 0;
}

#main .products.grid .product-miniature .product-manufacturer span a {
  box-shadow: 0 1px 2px rgba(26, 18, 10, .08);
}

#main .products.grid .thumbnail-container .thumbnail::after {
  height: 36px;
  padding: 0;
  line-height: 36px;
}

/* theme.css slides the delivery-time "add to cart" link in at the card
   bottom on hover (position:absolute) — it overlapped the stars. The
   grid card doesn't need it (delivery time is on the product page). */
#main .products.grid .product-miniature .product-buttons .add-to-cart {
  display: none;
}

/* 18. Colour swatches (module egproductcolor, hook displayProductListColors).
   Every colour is rendered as a <button>; clicking one swaps the card's
   own cover photo (assets/js/catalog-list-colors.js). The first
   Egproductcolor::LIST_MAX_DOTS are visible, the rest carry .is-extra and
   show up when "+N" opens the palette (list view only — in the narrow
   grid card "+N" is just a count). */
.eg-list-colors {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  margin: 0 0 8px;
}

.eg-list-colors__count {
  display: none;
}

.eg-color-dot {
  display: block;
  width: 13px;
  height: 13px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, .14);
  box-shadow: inset 0 0 0 1.5px #fff;
  cursor: pointer;
  transition: transform .12s ease, box-shadow .12s ease;
}

.eg-color-dot:hover {
  transform: scale(1.12);
}

.eg-color-dot.is-active {
  box-shadow: inset 0 0 0 1.5px #fff, 0 0 0 2px var(--eg-ink, #1a1a1a);
}

.eg-color-dot.is-extra {
  display: none;
}

.eg-list-colors__more {
  margin-left: 2px;
  padding: 0;
  border: 0;
  background: none;
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--eg-muted, #6b6a63);
  pointer-events: none;
}

/* Quick view (magnifier) removed from cards in both views — its purpose
   was unclear; the card and "Designa nu" already lead to the product.
   Only the link is hidden: .group-buttons also holds the fmm stickers. */
#main .product-miniature a.quick-view {
  display: none;
}

/* List-only pieces rendered into every card (the grid/list toggle only
   swaps a class, the markup is the same): hidden unless in list view. */
.eg-list-methods,
.eg-list-perks,
.eg-list-viewlink {
  display: none;
}

/* 19. Action button label. The theme's "add to cart" link carries a bag
   icon and the delivery-time text as its label (duplicating the stock
   line), whatever it actually does. Label it by what it does instead —
   the markup branch tells us (catalog/_partials/miniatures/product.tpl):
   - designer product (for_customization): link to the product page;
   - simple in-stock product: real add-to-cart (data-button-action);
   - product with combinations: link to choose options (no .show_popup);
   - out of stock / no add_to_cart_url: plain link (.btn-link). */
#main .products.list .product-miniature .product-buttons .add-to-cart > span,
#main .products.list .product-miniature .product-buttons .add-to-cart > i {
  display: none;
}

#main .products.list .product-miniature .product-buttons .add-to-cart::after {
  content: "Visa produkt";
}

#main .products.list .product-miniature .product-buttons a.add-to-cart.show_popup:not([data-button-action]):not(.btn-link)::after {
  content: "Designa nu";
}

#main .products.list .product-miniature .product-buttons .add-to-cart[data-button-action="add-to-cart"]::after {
  content: "Lägg i varukorg";
}

#main .products.list .product-miniature .product-buttons a.add-to-cart:not(.show_popup)::after {
  content: "Välj alternativ";
}

/* The image-hover "Designa nu" would duplicate the buy-box CTA. */
#main .products.list .thumbnail-container .thumbnail::after {
  display: none;
}

/* 20. List view — three zones, per the approved mockup (variant A v2,
   https://claude.ai/code/artifact/21ccf57a-f246-4bb4-86c5-e370fbaefa3f):
     left   photo filling the column + colour palette under it;
     middle name, brand, rating, description, print methods;
     right  warm order box: price, delivery, perks, "Designa nu" + "Visa produkt".
   .product-groups / .product-description become display:contents so all
   their children sit on one grid. The two column panels (left border,
   right cream box) are the card's own ::before / ::after grid items, since
   the order-box pieces are separate elements. */
#main .products.list .product-miniature {
  display: grid;
  grid-template-columns: 270px minmax(0, 1fr) 270px;
  grid-template-rows: auto auto auto auto 1fr auto;
  border-radius: 18px;
  overflow: hidden;
  cursor: pointer;
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}

#main .products.list .product-miniature:hover {
  transform: translateY(-2px);
  border-color: #d6cfc7;
  box-shadow: 0 4px 10px rgba(26, 18, 10, .06), 0 22px 36px -20px rgba(26, 18, 10, .28);
}

#main .products.list .product-miniature::before,
#main .products.list .product-miniature::after {
  content: "";
  display: block;
  grid-row: 1 / -1;
  z-index: 0;
}

#main .products.list .product-miniature::before {
  grid-column: 1;
  border-right: 1px solid var(--eg-border, #e2ddd8);
}

#main .products.list .product-miniature::after {
  grid-column: 3;
  background: var(--eg-stamp, #f0ece4);
}

#main .products.list .product-miniature .product-groups,
#main .products.list .product-miniature .product-description {
  display: contents;
}

#main .products.list .product-miniature > *,
#main .products.list .product-miniature .product-description > *,
#main .products.list .product-miniature .product-groups > * {
  position: relative;
  z-index: 1;
}

/* -- left: photo + palette -- */
#main .products.list .product-miniature .thumbnail-container {
  grid-column: 1;
  grid-row: 1 / 6;
  display: block;
  float: none;
  flex: none;
  max-width: none;
  width: auto;
  height: 100%;
  min-height: 270px;
  aspect-ratio: auto;
  margin-right: 1px;
  background: #f3f2f0;
}

#main .products.list .product-miniature .thumbnail-container .thumbnail {
  position: absolute;
  inset: 0;
}

#main .products.list .product-miniature .thumbnail-container .thumbnail img.image-cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}

#main .products.list .product-miniature .eg-list-colors {
  grid-column: 1;
  grid-row: 6;
  align-self: end;
  gap: 6px;
  margin: 0 1px 0 0;
  padding: 12px 14px 14px;
  border-top: 1px solid var(--eg-border, #e2ddd8);
  background: #fff;
}

#main .products.list .eg-list-colors__count {
  display: block;
  flex: 0 0 100%;
  margin-bottom: 2px;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--eg-ink, #1a1a1a);
}

#main .products.list .eg-color-dot {
  width: 24px;
  height: 24px;
  box-shadow: inset 0 0 0 2px #fff;
}

#main .products.list .eg-color-dot.is-active {
  box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px var(--eg-ink, #1a1a1a);
}

#main .products.list .eg-list-colors.is-open .eg-color-dot.is-extra {
  display: block;
}

#main .products.list .eg-list-colors__more {
  height: 24px;
  padding: 0 9px;
  border: 1px dashed #cfc7bd;
  border-radius: 99px;
  background: #fff;
  font-size: 1.2rem;
  font-weight: 700;
  pointer-events: auto;
  cursor: pointer;
}

#main .products.list .eg-list-colors__more:hover,
#main .products.list .eg-list-colors__more[aria-expanded="true"] {
  border-style: solid;
  border-color: var(--eg-ink, #1a1a1a);
  color: var(--eg-ink, #1a1a1a);
}

/* -- middle: what helps to choose -- */
#main .products.list .product-miniature .product-title {
  grid-column: 2;
  grid-row: 1;
  margin: 22px 26px 0;
}

#main .products.list .product-miniature .product-title a {
  font-size: 2.1rem;
  line-height: 1.3;
  -webkit-line-clamp: 3;
}

#main .products.list .product-miniature .product-manufacturer {
  grid-column: 2;
  grid-row: 2;
  margin: 6px 26px 0;
}

#main .products.list .product-miniature .product-manufacturer span a {
  background: none;
  box-shadow: none;
  padding: 0;
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--eg-ink, #1a1a1a);
}

#main .products.list .product-miniature .product-manufacturer span a:hover {
  text-decoration: underline !important;
  text-underline-offset: 3px;
}

#main .products.list .product-miniature .product-comments {
  grid-column: 2;
  grid-row: 3;
  margin: 10px 26px 0;
}

#main .products.list .product-miniature .product-comments .star {
  width: 15px;
  height: 15px;
}

#main .products.list .product-miniature .product-comments .star::after {
  font-size: 15px;
  line-height: 15px;
}

#main .products.list .product-miniature .product-comments > span {
  font-size: 1.25rem;
}

#main .products.list .product-miniature .product-desc {
  display: block;
  grid-column: 2;
  grid-row: 4;
  margin: 12px 26px 0;
  max-height: 176px; /* ~7 lines: short descriptions fit whole, longer ones fade (20g) */
  overflow: hidden;
  font-size: 1.4rem;
  line-height: 1.6;
  color: #4c463c;
}

#main .products.list .product-miniature .product-desc p {
  margin: 0 0 6px;
}

#main .products.list .product-miniature .product-desc a {
  font-style: normal;
}

/* The description usually opens with the product name in bold — it is
   already the card title. */
#main .products.list .product-miniature .product-desc > p:first-child:has(> strong:only-child) {
  display: none;
}

#main .products.list .eg-list-methods {
  grid-column: 2;
  grid-row: 5 / 7;
  align-self: start;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin: 14px 26px 24px;
}

.eg-list-methods__label {
  margin-right: 2px;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--eg-muted, #6b6a63);
}

.eg-list-methods__chip {
  padding: 3px 10px;
  border-radius: 99px;
  border: 1px solid var(--eg-border, #e2ddd8);
  background: #fff;
  font-size: 1.2rem;
  color: var(--eg-ink, #1a1a1a);
}

/* -- right: the order box -- */
#main .products.list .product-miniature .product-group-price {
  grid-column: 3;
  grid-row: 1;
  margin: 22px 22px 0 !important;
}

#main .products.list .product-miniature .product-price-and-shipping .price {
  font-size: 2.7rem;
  line-height: 1.1;
}

#main .products.list .product-miniature .eg-vat-note {
  font-size: 1.2rem;
}

html.mode-b2b #main .products.list .product-miniature .eg-vat-note {
  color: var(--eg-green-dk, #245147);
  font-weight: 700;
}

#main .products.list .product-miniature .info-stock,
#main .products.list .eg-list-perks li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1.3rem;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
  color: #4c463c;
}

#main .products.list .product-miniature .info-stock {
  grid-column: 3;
  grid-row: 2;
  margin: 16px 22px 0;
  font-weight: 700;
  color: var(--eg-green-dk, #245147);
}

#main .products.list .product-miniature .info-stock i {
  display: none;
}

#main .products.list .eg-list-perks {
  grid-column: 3;
  grid-row: 3;
  display: grid;
  gap: 7px;
  margin: 7px 22px 0;
  padding: 0;
  list-style: none;
}

#main .products.list .product-miniature .info-stock::before,
#main .products.list .eg-list-perks li::before {
  content: "";
  flex: none;
  width: 17px;
  height: 17px;
  background: var(--eg-green, #2e7d5c);
  -webkit-mask: var(--eg-ico) center / contain no-repeat;
  mask: var(--eg-ico) center / contain no-repeat;
}

#main .products.list .product-miniature .info-stock {
  --eg-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 3h15v13H1z'/%3E%3Cpath d='M16 8h4l3 3v5h-7z'/%3E%3Ccircle cx='5.5' cy='18.5' r='2.5'/%3E%3Ccircle cx='18.5' cy='18.5' r='2.5'/%3E%3C/svg%3E");
}

#main .products.list .eg-list-perks .eg-perk-min {
  --eg-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}

#main .products.list .eg-list-perks .eg-perk-disc {
  --eg-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.6 13.4 13.4 20.6a2 2 0 0 1-2.8 0L2 12V2h10l8.6 8.6a2 2 0 0 1 0 2.8z'/%3E%3Ccircle cx='7' cy='7' r='1.5'/%3E%3C/svg%3E");
}

#main .products.list .product-miniature .product-buttons {
  grid-column: 3;
  grid-row: 5 / 7;
  align-self: end;
  display: grid;
  gap: 8px;
  height: auto;
  padding: 0;
  margin: 16px 22px 22px !important;
}

#main .products.list .product-miniature .product-buttons form {
  display: block;
  margin: 0;
}

#main .products.list .product-miniature .product-buttons .add-to-cart {
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 6px;
  position: static;
  width: 100%;
  height: 44px;
  padding: 0 18px !important;
  border: 0 !important;
  border-radius: 99px;
  background: var(--eg-ink, #1a1a1a) !important;
  color: #fff !important;
  font-family: "Poppins", sans-serif;
  font-size: 1.3rem !important;
  font-weight: 700 !important;
  letter-spacing: .02em;
  text-transform: uppercase;
  transform: none;
  opacity: 1;
  visibility: visible;
}

#main .products.list .product-miniature .product-buttons a.add-to-cart.show_popup:not([data-button-action]):not(.btn-link) {
  background: var(--eg-yellow, #f5a623) !important;
  color: var(--eg-ink, #1a1a1a) !important;
}

#main .products.list .product-miniature .product-buttons a.add-to-cart.show_popup:not([data-button-action]):not(.btn-link):hover {
  background: #e6951a !important;
}

#main .products.list .product-miniature .product-buttons a.add-to-cart.show_popup:not([data-button-action]):not(.btn-link)::before {
  content: "";
  width: 16px;
  height: 16px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E") center / contain no-repeat;
}

#main .products.list .eg-list-viewlink {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  border-radius: 99px;
  border: 1px solid var(--eg-border, #e2ddd8);
  background: #fff;
  color: var(--eg-ink, #1a1a1a);
  font-family: "Poppins", sans-serif;
  font-size: 1.3rem;
  font-weight: 700;
  letter-spacing: .02em;
  text-decoration: none !important;
}

#main .products.list .eg-list-viewlink:hover {
  border-color: var(--eg-ink, #1a1a1a);
  color: var(--eg-ink, #1a1a1a);
}

#main .products.list .product-miniature .group-buttons-des {
  display: none;
}

/* Narrower screens: photo column + everything else stacked in the second
   column, order box without its cream panel. */
@media (max-width: 991px) {
  #main .products.list .product-miniature {
    grid-template-columns: 230px minmax(0, 1fr);
    grid-template-rows: none;
  }

  #main .products.list .product-miniature::after {
    display: none;
  }

  #main .products.list .product-miniature .thumbnail-container {
    grid-row: 1 / span 8;
  }

  #main .products.list .product-miniature .eg-list-colors {
    grid-row: 9;
  }

  #main .products.list .product-miniature .product-title,
  #main .products.list .product-miniature .product-manufacturer,
  #main .products.list .product-miniature .product-comments,
  #main .products.list .product-miniature .product-desc,
  #main .products.list .eg-list-methods,
  #main .products.list .product-miniature .product-group-price,
  #main .products.list .product-miniature .info-stock,
  #main .products.list .eg-list-perks,
  #main .products.list .product-miniature .product-buttons {
    grid-column: 2;
    grid-row: auto;
    margin-left: 22px !important;
    margin-right: 22px !important;
  }

  #main .products.list .eg-list-methods {
    margin-bottom: 0;
  }

  #main .products.list .product-miniature .product-group-price {
    margin-top: 16px !important;
  }

  #main .products.list .product-miniature .product-buttons {
    grid-template-columns: 1fr 1fr;
    grid-row: span 2;
  }
}

@media (max-width: 767px) {
  #main .products.list .product-miniature {
    grid-template-columns: minmax(0, 1fr);
  }

  #main .products.list .product-miniature::before {
    display: none;
  }

  #main .products.list .product-miniature .thumbnail-container {
    grid-row: auto;
    height: auto;
    min-height: 0;
    aspect-ratio: 1 / 1;
    margin: 0;
  }

  #main .products.list .product-miniature .eg-list-colors {
    grid-row: auto;
    margin: 0;
  }

  #main .products.list .product-miniature .product-title,
  #main .products.list .product-miniature .product-manufacturer,
  #main .products.list .product-miniature .product-comments,
  #main .products.list .eg-list-methods,
  #main .products.list .product-miniature .product-group-price,
  #main .products.list .product-miniature .info-stock,
  #main .products.list .eg-list-perks,
  #main .products.list .product-miniature .product-buttons {
    grid-column: 1;
    margin-left: 16px !important;
    margin-right: 16px !important;
  }

  #main .products.list .product-miniature .product-desc {
    display: none;
  }
}

/* 20c. List view reading order on narrower screens. Below 992px the
   columns collapse and items flow in DOM order, which puts the price
   before the stars and (on phones) the palette between the name and the
   brand. Grid items can be reordered because .product-groups /
   .product-description are display:contents. */
@media (max-width: 991px) {
  #main .products.list .product-miniature .product-title { order: 1; }
  #main .products.list .product-miniature .product-manufacturer { order: 2; }
  #main .products.list .product-miniature .product-comments { order: 3; }
  #main .products.list .product-miniature .product-desc { order: 4; }
  #main .products.list .eg-list-methods { order: 5; }
  #main .products.list .product-miniature .product-group-price { order: 6; }
  #main .products.list .product-miniature .info-stock { order: 7; }
  #main .products.list .eg-list-perks { order: 8; }
  #main .products.list .product-miniature .product-buttons { order: 9; }
}

@media (max-width: 767px) {
  #main .products.list .product-miniature .thumbnail-container { order: -2; }
  #main .products.list .product-miniature .eg-list-colors { order: -1; }
  #main .products.list .product-miniature .product-title { margin-top: 16px; }
  #main .products.list .product-miniature .product-buttons { margin-bottom: 16px !important; }
}

/* 20d. Stars row sat ~25px below the brand: the reviews block
   (novproductcomments) is 39px tall for 15px stars, the extra coming
   from the theme's line-height on its children. */
#main .products.list .product-miniature .product-comments {
  height: auto;
  min-height: 0;
  line-height: 1;
  margin-top: 8px;
}

#main .products.list .product-miniature .product-comments > * {
  margin-top: 0;
  margin-bottom: 0;
  line-height: 1;
}

/* 20e. Items on the list grid default to align-self:stretch, so a short
   item takes the height of the tallest one in its row — the reviews block
   (row 3) grew to the perks list's 41px and centred its 15px stars in it. */
#main .products.list .product-miniature .product-title,
#main .products.list .product-miniature .product-manufacturer,
#main .products.list .product-miniature .product-comments,
#main .products.list .product-miniature .product-desc,
#main .products.list .product-miniature .product-group-price,
#main .products.list .product-miniature .info-stock,
#main .products.list .eg-list-perks {
  align-self: start;
}

/* 20f. List photo: "contain" with a little air, not "cover". Most
   product shots are square packshots on white — cover blew a flat-lay
   T-shirt up past its sleeves. Same fit as the grid card. */
#main .products.list .product-miniature .thumbnail-container {
  background: #fff;
}

#main .products.list .product-miniature .thumbnail-container .thumbnail img.image-cover {
  inset: 16px;
  width: calc(100% - 32px);
  height: calc(100% - 32px);
  object-fit: contain;
  object-position: center;
}

/* 20g. The description fade-out only where the text is actually cut
   (catalog-list-colors.js adds .is-clamped); a description that fits
   stays fully readable. */
#main .products.list .product-miniature .product-desc.is-clamped {
  -webkit-mask-image: linear-gradient(to bottom, #000 72%, transparent);
  mask-image: linear-gradient(to bottom, #000 72%, transparent);
}

/* 21. Image hover: no swap to the product's second photo (theme.css
   .two-image fades the cover out and the secondary in — a missing
   secondary file left the card blank). Instead: slow zoom of the cover
   + a translucent white veil; brand pill (z 3) and CTA (z 4) stay on top. */
#main .product-miniature .thumbnail-container {
  overflow: hidden;
}

#main .product-miniature .thumbnail-container .image-secondary {
  display: none;
}

#main .product-miniature .thumbnail-container .thumbnail .image-cover,
#main .product-miniature:hover .thumbnail-container .two-image .image-cover {
  opacity: 1;
  transition: transform .45s ease;
}

#main .product-miniature:hover .thumbnail-container .thumbnail .image-cover {
  transform: scale(1.06);
}

#main .product-miniature .thumbnail-container .thumbnail::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background: rgba(255, 255, 255, .3);
  opacity: 0;
  transition: opacity .2s ease;
  pointer-events: none;
}

#main .product-miniature:hover .thumbnail-container .thumbnail::before {
  opacity: 1;
}

/* 22. Card typography per the mockup (sizes/weights/colours; the site
   keeps its own Poppins/Roboto — the mockup's Inter isn't loaded
   anywhere on the site): name 13.5/600/1.35, price 15/800 + VAT note,
   small texts (brand pill, review count, "+N") 10.5px. */
#main .product-miniature .product-title a {
  font-size: 1.35rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--eg-ink, #1a1a1a);
}

#main .product-miniature .product-price-and-shipping {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px;
}

#main .product-miniature .product-price-and-shipping .price {
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1.2;
}

#main .product-miniature .product-manufacturer span a {
  font-size: 1.05rem;
  font-weight: 700;
  padding: 4px 10px;
}

#main .product-miniature .product-comments > span,
#main .product-miniature .eg-list-colors__more {
  font-size: 1.05rem;
}

/* "inkl. moms" in Privat, "exkl. moms" in Företag — both are rendered,
   html.mode-b2b (set by egmodeswitcher) picks one, same as the product
   page (.pgr-vat-b2c / .pgr-vat-b2b in product-redesign.css). */
.eg-vat-note {
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--eg-muted, #6b6a63);
}

.eg-vat-note.eg-vat-b2b {
  display: none;
}

html.mode-b2b .eg-vat-note.eg-vat-b2c {
  display: none;
}

html.mode-b2b .eg-vat-note.eg-vat-b2b {
  display: inline;
}

/* 23. Touch devices / phones: there is no hover, so the image-overlay
   "Designa nu" never shows (hidden under @media (hover: none) above).
   Show the card's own action link instead, as a permanent full-width
   pill at the bottom of the grid card, labelled by what it does (same
   branches as the list-view button, section 19). */
@media (hover: none), (max-width: 767px) {
  #main .products.grid .thumbnail-container .thumbnail::after {
    display: none;
  }

  #main .products.grid .product-miniature .product-groups {
    display: flex;
    flex-direction: column;
  }

  #main .products.grid .product-miniature .product-description {
    flex: 1 1 auto;
  }

  #main .products.grid .product-miniature .product-buttons {
    display: block;
    height: auto;
    margin-top: 10px;
  }

  #main .products.grid .product-miniature .product-buttons .add-to-cart {
    display: flex;
    align-items: center;
    justify-content: center;
    position: static;
    width: 100%;
    height: 36px;
    padding: 0 10px;
    border-radius: 99px;
    background: var(--eg-ink, #1a1a1a) !important;
    color: #fff !important;
    font-size: 1.1rem !important;
    font-weight: 800 !important;
    letter-spacing: .02em;
    text-transform: uppercase;
    transform: none;
    visibility: visible;
    opacity: 1;
  }

  #main .products.grid .product-miniature .product-buttons .add-to-cart > span,
  #main .products.grid .product-miniature .product-buttons .add-to-cart > i {
    display: none;
  }

  #main .products.grid .product-miniature .product-buttons .add-to-cart::after {
    content: "Visa produkt";
  }

  #main .products.grid .product-miniature .product-buttons a.add-to-cart.show_popup:not([data-button-action]):not(.btn-link) {
    background: var(--eg-yellow, #f5a623) !important;
    color: var(--eg-ink, #1a1a1a) !important;
  }

  #main .products.grid .product-miniature .product-buttons a.add-to-cart.show_popup:not([data-button-action]):not(.btn-link)::after {
    content: "Designa nu";
  }

  #main .products.grid .product-miniature .product-buttons .add-to-cart[data-button-action="add-to-cart"]::after {
    content: "Lägg i varukorg";
  }

  #main .products.grid .product-miniature .product-buttons a.add-to-cart:not(.show_popup)::after {
    content: "Välj alternativ";
  }
}

/* theme.css gives the card title a fixed min-height (65px on phones) to
   line cards up; our cards are equal-height via flex already, so it
   only left a gap between the name and the colour dots. */
#main .product-miniature .product-description .product-title {
  min-height: 0;
}
