section.product {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.product__abstract {
  display: flex;
  align-items: flex-end;
  column-gap: 16px;
  padding: 24px 18px;
  border-radius: 16px;
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a10);
}

.product__banner {
  display: flex;
  width: 100%;
  max-width: fit-content;
  height: fit-content;
}

.product__banner img {
  width: 100%;
  height: 100%;
  max-height: 250px;
  object-fit: cover;
  border-radius: 8px;
  vertical-align: top;
  aspect-ratio: 3 / 4;
  filter: var(--image-filter);
}

.product__child-abstract {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: flex-end;
  width: 100%;
}

.product__child-abstract .product__title {
  font-size: 1.6rem;
  font-weight: 600;
  margin: 1rem 0 0 0;
  width: fit-content;
  text-transform: uppercase;
}

.product__extra-info {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
  gap: 1rem;
  margin-top: 1rem;
  width: 100%;
}

.product__extra-info a.extra-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  border-radius: 8px;
  padding: 12px 8px;
  transition: 300ms ease;
  border: 2px solid var(--color-surface-a0);
  color: var(--on-surface-a0);
  background-color: var(--color-surface-a0);
}

.product__extra-info a.extra-info:hover {
  border: 2px solid var(--color-secondary-a0);
  color: var(--color-secondary-a0);
  background-color: var(--color-surface-a0);
}

a.extra-info .extra-info__title {
  font-size: 1rem;
  font-weight: 500;
  text-wrap: nowrap;
}

.product__badges {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: 1rem;
  width: 60%;
}

.product__badges .badge {
  display: flex;
  align-items: center;
  width: fit-content;
  padding: 8px 12px;
  border-radius: 18px;
  font-size: .75rem;
  color: var(--color-secondary-a0);
  background-color: var(--color-surface-a0);
}

.badge .badge__icon {
  font-size: .85rem;
}

.product__note {
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a10);
  border: none !important;
}

.product__meta-data {
  border-radius: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.product__meta-data .product__items {
  padding: 1.75rem 1rem;
  border-radius: 16px;
  flex-grow: 2;
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a10);
  height: fit-content;
}

.product__items .product__items-title {
  font-size: 1.4rem;
  font-weight: 500;
  width: fit-content;
  text-transform: uppercase;
  margin: 0.5rem 0;
  padding-left: 1rem;
}

.product__items .filters {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  width: 100%;
  padding-left: 1rem;
  margin-bottom: .5rem;
}

.filters .filter {
  display: flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  padding: 8px 12px;
  border-radius: 5px;
  font-size: .75rem;
  color: var(--color-secondary-a0);
  background-color: var(--color-surface-a0);
  border: 2px solid transparent;
  transition: 300ms ease;
}

.filters .filter:hover {
  background-color: var(--color-surface-a20);
}

.filter.active-filter {
  border: 2px solid var(--color-secondary-a0);
}

.filter.special {
  color: var(--on-any-surface-a0);
  border: 2px solid var(--color-surface-a10);
  background: linear-gradient(45deg, #ff4000, #ff5700, #ff6e00, #ff8500);
  transition: all 0.3s;
}

.filter.special:hover {
  border: 2px solid var(--color-secondary-a10);
  background: var(--color-surface-a0);
}

.filter.special.active-filter {
  color: var(--color-secondary-a0);
  background: var(--color-surface-a0) !important;
  border: 2px solid var(--color-secondary-a0);
}

.product__meta-data .product__user-info__coupon-code {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  gap: 1rem;
}

.product__meta-data .product__user-info,
.product__meta-data .product__coupon-code {
  padding: 1rem 1.75rem;
  border-radius: 16px;
  flex-grow: 1;
  height: fit-content;
  max-width: 25rem;
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a10);
}

.product__user-info .user-info__title,
.product__coupon-code .coupon-code__title {
  font-size: 1.4rem;
  font-weight: 500;
  width: fit-content;
  text-transform: uppercase;
  margin: 0.5rem 0;
}

.product__user-info .user-info__actions,
.product__coupon-code .coupon-code__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.5rem 0 0 0;
}

.payment-methods-container {
  width: 100%;
}

.user-info__actions .payment-methods {
  display: flex;
  gap: 0.5rem;
}

@media (max-width: 375px) {
  .user-info__actions .payment-methods {
    flex-direction: column;
  }
}

p.help-text span.material-icon,
p.error-text span.material-icon {
  font-size: 1.25rem;
}

.product__user-info p.help-text,
.product__coupon-code p.help-text {
  color: var(--on-surface-a10);
  display: flex;
  align-items: flex-start;
  margin-top: 12px;
  margin-left: 3px;
  max-width: unset;
  column-gap: 0.25rem;
  font-size: 0.9rem;
}

.product__user-info p#defaultHelpText,
.product__coupon-code p.defaultHelpText {
  color: var(--color-primary-a10) !important;
  margin-top: 8px;
  align-items: center;
}

.product__user-info p.error-text,
.product__coupon-code p.error-text {
  color: #d93025;
  display: none;
  align-items: flex-start;
  margin-top: 12px;
  margin-left: 3px;
  max-width: unset;
  column-gap: 0.25rem;
  font-size: 0.9rem;
}

.product__user-info p#defaultErrorText,
.product__coupon-code p#defaultErrorText {
  margin-top: 8px;
  align-items: center;
}

s {
  text-decoration: line-through !important;
}

/* Custom Radio Button */
.radio-tile-group {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
  gap: 1rem;
  justify-items: center;
  max-height: 25rem;
  overflow-y: auto;
  padding: 1rem;
}

.radio-tile-group .input-container {
  position: relative;
  width: 100%;
  height: 100%;
}

.input-container .price-info {
  display: flex;
  flex-direction: column;
  width: 100%;
  margin-top: 6px;
  column-gap: 6px;
  align-items: center;
}

.input-container .price-info:has(p.out-of-stock) {
  justify-content: center;
}

.input-container .price-info p.out-of-stock {
  font-size: small;
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a20);
  margin-top: 4px;
  padding: 6px 12px;
  border-radius: 4px;
  text-wrap: nowrap;
}

.input-container .price-info .actual-price.in-discount {
  font-weight: 400;
  font-size: 0.85rem;
  text-wrap: nowrap;
}

.input-container .price-info .discount-price {
  font-weight: 400;
  text-wrap: nowrap;
  color: var(--on-any-surface-a0);
}

.input-container .price-info .actual-price.no-discount {
  font-weight: 400;
  font-size: 0.85rem;
  text-wrap: nowrap;
}

.radio-tile-group .input-container .radio-button {
  opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  margin: 0;
  cursor: pointer;
}

.radio-tile-group .input-container .radio-tile {
  display: flex;
  width: 100%;
  height: 100%;
  padding: 1rem;
  transition: transform 300ms ease;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  border-radius: 5px;
  border: 2px solid var(--color-secondary-a0);
}

.radio-tile-group .input-container .radio-tile-label {
  font-size: 0.75rem;
  text-align: center;
  font-weight: 600;
  letter-spacing: 1px;
  color: var(--color-secondary-a0);
}

.radio-tile-group .input-container .radio-button:checked + .radio-tile {
  background-color: var(--color-secondary-a0);
  border: 2px solid var(--color-secondary-a0);
  color: var(--color-surface-a0);
  /* transform: scale(1.1, 1.1); */
}

.radio-tile-group .input-container .radio-button:checked + .radio-tile .radio-tile-label {
  color: var(--color-surface-a0);
  background-color: var(--color-secondary-a0);
}

.radio-tile-group .input-container .radio-button:checked + .radio-tile .price-info .discount-price {
  color: var(--color-surface-a0);
  font-weight: 500;
}

/* Custom Radio Button */

.product__note,
.product__description,
.product__guide {
  display: flex;
  flex-direction: column;
  padding: 1rem 1.75rem;
  border-radius: 16px;
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a10);
}

.product__note .content__title,
.product__description .content__title,
.product__guide .content__title {
  display: flex;
  align-items: center;
  font-size: 1.4rem;
  font-weight: 500;
  margin: 0.5rem 0 0 0;
  width: fit-content;
  text-transform: uppercase;
}

.product__note .content__heading,
.product__description .content__heading,
.product__guide .content__heading {
  font-size: 1.2rem;
  font-weight: 400;
  width: fit-content;
  margin: 8px 0;
}

.product__note .content__paragraph,
.product__description .content__paragraph,
.product__guide .content__paragraph {
  font-size: 0.9rem;
  font-weight: 400;
  width: fit-content;
  margin: 6px 0;
  hyphens: auto;
}

.product__note .content__link,
.product__description .content__link,
.product__guide .content__link {
  font-weight: 500;
  color: var(--color-secondary-a0);
}

.product__note .content__ordered_list,
.product__description .content__ordered_list,
.product__guide .content__ordered_list {
  list-style-type: decimal !important;
  margin-left: 1.5rem;
}

.product__note .content__ordered_list-item,
.product__description .content__ordered_list-item,
.product__guide .content__ordered_list-item {
  list-style-type: decimal !important;
  font-size: 0.9rem;
  font-weight: 400;
  width: fit-content;
  hyphens: auto;
}

.product__note .content__unordered_list,
.product__description .content__unordered_list,
.product__guide .content__unordered_list {
  list-style-type: disc !important;
  margin-left: 1.5rem;
}

.product__note .content__unordered_list-item,
.product__description .content__unordered_list-item,
.product__guide .content__unordered_list-item {
  list-style-type: disc !important;
  font-size: 0.9rem;
  font-weight: 400;
  width: fit-content;
  hyphens: auto;
}

.content__ordered_list-item__paragraph,
.content__unordered_list-item__paragraph {
  font-size: 0.9rem;
  font-weight: 400;
  width: fit-content;
  margin: 6px 0 6px -1.5rem;
  hyphens: auto;
}

.product__note .content__table,
.product__description .content__table,
.product__guide .content__table {
  margin: 8px 0;
  text-align: left;
  width: fit-content;
  border-collapse: collapse;
  border: 1px solid var(--on-surface-a10);
  background: var(--color-surface-a10);
}

.product__note .content__table-header,
.product__description .content__table-header,
.product__guide .content__table-header {
  font-size: 0.9rem;
  font-weight: 500;
  margin: 8px 0;
  padding: 12px;
  border: 1px solid var(--on-surface-a10);
  text-align: center;
}

.product__note .content__table-cell,
.product__description .content__table-cell,
.product__guide .content__table-cell {
  font-size: 0.85rem;
  font-weight: 400;
  padding: 12px;
  border: 1px solid var(--on-surface-a10);
  text-align: center;
}

@media screen and (max-width: 768px) {
  .product__abstract {
    flex-direction: column;
    align-items: center;
  }

  .product__child-abstract {
    align-items: center;
  }

  .product__badges {
    width: 100%;
  }
}

/*=============== MODAL ===============*/
.modal {
  height: 100vh;
  display: grid;
  place-items: center;
}

.modal__container {
  position: absolute;
  top: 0;
  left: 0;
  background-color: rgba(var(--color-rgba-surface-a0), 0.8);
  width: 100%;
  height: 100%;
  display: grid;
  align-items: flex-end;
  overflow: hidden;
  transition: all 0.3s;
  z-index: 1000;
  visibility: hidden;
  opacity: 0;
  pointer-events: all;
}

.modal__content {
  position: relative;
  padding: 2rem;
  border-radius: 1rem 1rem 0 0;
  transition: all 0.3s;

  /*=== Effect 1 ===*/
  transform: translateY(10%);
}

.modal__content .modal-title-text h4 {
  color: var(--on-surface-a0);
  width: fit-content;
  font-weight: 600;
  font-size: 1.25rem;
  margin-bottom: .75rem;
}

.modal__content .modal-title-text p {
  width: fit-content;
  font-weight: 400;
  font-size: 1rem;
}

.modal__content .modal__order-info {
  padding: .5rem;
  border: 1px solid var(--color-surface-a50);
  border-radius: 4px;
  margin: 1rem 0;
}

.item-info h5.product-name,
.user-info h5.title,
.price-info h5.title {
  color: var(--on-surface-a0);
  font-weight: 500;
  font-size: 1rem;
  width: fit-content;
}

.item-info p.item-name,
.price-info p.sub-text {
  font-weight: 400;
  font-size: .95rem;
  width: fit-content;
}

.price-info .note {
  display: flex;
  font-weight: 500;
  font-size: .75rem;
  width: fit-content;
  align-items: flex-start;
  border-radius: 4px;
  padding: .25rem .5rem;
  background: var(--color-surface-a0);
  margin-top: 4px;
}

.modal__order-info hr.order-info-separator {
  margin: 6px 0;
  border: 1px solid var(--on-surface-a10);
  border-radius: 50%;
}

.modal__order-info .user-info p {
  font-weight: 400;
  font-size: .95rem;
  width: fit-content;
}

.modal__content .modal-actions {
  display: flex;
  justify-content: flex-end;
  column-gap: 1rem;
}

.show-modal {
  visibility: visible;
  opacity: 1;
}

.show-modal .modal__content {
  /*=== Effect 1 ===*/
  transform: translateY(0);
  color: var(--on-surface-a10);
  background-color: var(--color-surface-a10);
}

#modal-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  pointer-events: none;
}

/*=============== BREAKPOINTS ===============*/
/* For small devices */
@media screen and (min-width: 576px) {
  .modal__content {
    margin: auto;
    width: 380px;
    border-radius: 6px;
  }
}
