@charset "utf-8";

/* =========================================================
   File: electpress-carousel.css
   Electpress HTML-Only Carousel System
   Namespace: epU

   BEHAVIOR:
   - Shows all cards when they fit
   - Scrolls horizontally only when necessary
   - First card aligns with left carousel margin
   - Cards retain a consistent usable width
========================================================= */


/* =========================================================
   OUTER CAROUSEL WRAPPER
========================================================= */

.ep-carousel-wrap {
  width: 100%;
  max-width: 1290px;

  margin: 0 auto;

  padding: 10px 16px 20px;

  box-sizing: border-box;

  overflow: visible;
}


/* =========================================================
   CAROUSEL
========================================================= */

.epU {
  position: relative;

  width: 100%;
  max-width: 100%;

  margin: 0;

  box-sizing: border-box;

  overflow: visible;
}


/* =========================================================
   CAROUSEL VIEWPORT

   Cards remain in one horizontal row.

   If they fit:
   All cards are displayed.

   If they do not fit:
   Viewport scrolls horizontally.
========================================================= */

.epU-viewport {
  display: flex;

  flex-direction: row;

  flex-wrap: nowrap;

  justify-content: flex-start;

  align-items: stretch;

  width: 100%;

  max-width: 100%;

  min-width: 0;

  gap: 16px;

  margin: 0;

  padding: 10px 0 18px;

  overflow-x: auto;

  overflow-y: visible;

  scroll-behavior: smooth;

  scroll-snap-type: x proximity;

  scroll-padding-left: 0;

  overscroll-behavior-x: contain;

  box-sizing: border-box;

  -webkit-overflow-scrolling: touch;

  /* Visible horizontal scrollbar */
  scrollbar-width: auto;
  scrollbar-color: #8a8a8a #e8e8e8;
}


/* =========================================================
   HORIZONTAL SCROLLBAR
   Chrome / Edge / Safari
========================================================= */

.epU-viewport::-webkit-scrollbar {
  height: 12px;
}

.epU-viewport::-webkit-scrollbar-track {
  background: #e8e8e8;
  border-radius: 6px;
}

.epU-viewport::-webkit-scrollbar-thumb {
  background: #8a8a8a;
  border-radius: 6px;
  border: 2px solid #e8e8e8;
}

.epU-viewport::-webkit-scrollbar-thumb:hover {
  background: #555555;
}


/* Keyboard focus */

.epU-viewport:focus {
  outline: 2px solid #0099ff;
  outline-offset: 3px;
}


/* =========================================================
   CAROUSEL CARD

   Cards keep a practical width.

   They do NOT stretch to artificially fill the viewport.

   If all cards fit:
   They all remain visible.

   If they exceed available width:
   Horizontal scrolling automatically occurs.
========================================================= */

.epU-card {
  flex: 0 0 220px;

  width: 220px;

  max-width: 220px;

  min-width: 220px;

  display: flex;

  flex-direction: column;

  align-items: center;

  justify-content: flex-start;

  margin: 0;

  padding: 12px;

  background: #ffffff;

  border: 1px solid #d8d8d8;

  border-radius: 8px;

  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.18);

  text-align: center;

  box-sizing: border-box;

  scroll-snap-align: start;
}


/* =========================================================
   CARD IMAGE LINK
========================================================= */

.epU-card > a {
  display: block;

  width: 100%;

  text-align: center;
}


/* =========================================================
   BOOK IMAGE
========================================================= */

.epU-card img {
  display: block;

  width: 100%;

  max-width: 100%;

  height: auto;

  margin: 0 auto;

  border: 0;

  object-fit: contain;
}


/* =========================================================
   CARD TITLE
========================================================= */

.epU-title {
  width: 100%;

  margin: 12px 0 4px;

  padding: 0;

  font-size: 15px;

  font-weight: 700;

  line-height: 1.35;

  text-align: center;
}


/* =========================================================
   CARD TITLE LINKS
========================================================= */

.epU-title a,
.epU-title a:link,
.epU-title a:visited {
  color: #0066cc;

  text-decoration: none;
}

.epU-title a:hover,
.epU-title a:focus {
  color: #f39c12;

  text-decoration: underline;
}


/* =========================================================
   CAROUSEL DOTS
========================================================= */

.epU-dots {
  display: flex;

  flex-direction: row;

  justify-content: center;

  align-items: center;

  flex-wrap: wrap;

  gap: 8px;

  width: 100%;

  margin: 10px 0 0;

  padding: 4px 0;

  box-sizing: border-box;
}


/* =========================================================
   INDIVIDUAL DOT
========================================================= */

.epU-dot {
  display: block;

  width: 11px;

  height: 11px;

  margin: 0;

  padding: 0;

  border: 0;

  border-radius: 50%;

  background: #b5b5b5;

  cursor: pointer;

  appearance: none;

  -webkit-appearance: none;

  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}


/* Active dot */

.epU-dot.is-active {
  background: #0099ff;

  transform: scale(1.2);
}


/* Hover dot */

.epU-dot:hover {
  background: #f39c12;
}


/* Keyboard focus */

.epU-dot:focus-visible {
  outline: 2px solid #000000;

  outline-offset: 3px;
}


/* =========================================================
   TABLET
========================================================= */

@media screen and (max-width: 768px) {

  .ep-carousel-wrap {
    padding-left: 12px;
    padding-right: 12px;
  }

  .epU-viewport {
    gap: 14px;
  }

  .epU-card {
    flex-basis: 200px;

    width: 200px;

    min-width: 200px;

    max-width: 200px;
  }

}


/* =========================================================
   PHONE
========================================================= */

@media screen and (max-width: 480px) {

  .ep-carousel-wrap {
    padding-left: 8px;
    padding-right: 8px;
  }

  .epU-viewport {
    gap: 12px;
  }

  .epU-card {
    flex-basis: 180px;

    width: 180px;

    min-width: 180px;

    max-width: 180px;
  }

  .epU-title {
    font-size: 14px;
  }

}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {

  .epU-viewport {
    scroll-behavior: auto;
  }

  .epU-dot {
    transition: none;
  }

}