/* 1401px and up — Full Desktop (also covers 1440 Laptop L, 1920, and 4K 2560): the base styles in this file are the Full Desktop CSS. Narrower sizes are overridden in the RESPONSIVE TIERS section at the bottom of this file. */
/** Yusaso Teal Shop presentation. Shop structure remains Module-owned. */
/* Oct 5 2026 - wrapper canon: the outer .premium_shop_section div was removed; sections are plain section.feature_wrapper now. */
.premium_shop_section_heading {
  text-align: center;
}
.premium_shop_section_heading > p {
  max-width: 48rem;
  margin-inline: auto;
}
.premium_shop_eyebrow {
  color: var(--yusaso-blue);}
/* Oct 6 2026 - the premium_avatar_collection_grid / premium_avatar_collection / premium_avatar_offer_grid wrappers were removed (not approved); shop.php uses the canon feature_wrapper > card_wrapper > catalog_mini_card_grid structure. */
/* RETIRED 2026-09-01: Avatar offers now use the shared catalog mini-card.
.premium_avatar_offer {
  min-width: 0;
  overflow: hidden;
  text-align: center;
}
.premium_avatar_offer > .card_wrapper {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.premium_avatar_offer h4 {
  color: var(--primary-font-color);
  margin: 0.75rem 0 0.35rem;
}
.premium_avatar_offer p {
  color: var(--tertiary-font-color);
  flex: 1;
  font-size: var(--font-sm);
  margin: 0.1rem 0 0.75rem;
}
.premium_avatar_offer_price {
  color: var(--yusaso-blue);
  display: block;
  margin-top: auto;
  text-align: center;
}
@media (max-width: 52rem) {
    .premium_avatar_offer > .card_wrapper {
    display: grid;
    gap: 0.35rem;
    grid-template-columns: minmax(7rem, 34%) 1fr;
  }
  .premium_avatar_offer h4,
  .premium_avatar_offer p,
  .premium_avatar_offer_price {
    text-align: left;
  }
  .premium_avatar_offer h4 {
    align-self: end;
    margin: 0.25rem 0;
  }
  .premium_avatar_offer p {
    margin: 0;
  }
  .premium_avatar_offer_price {
    align-self: start;
  }
}
@media (max-width: 32rem) {
  .premium_avatar_collection {
    padding: 0.7rem;
  }
  .premium_avatar_offer > .card_wrapper {
    display: flex;
  }
  .premium_avatar_offer h4,
  .premium_avatar_offer p,
  .premium_avatar_offer_price {
    text-align: center;
  }
}
*/
.premium_avatar_offer_price {
  color: var(--yusaso-blue);
  display: block;
  margin-top: auto;
  text-align: left;
}
.premium_shop_intro {
  margin-bottom: 1rem;
}
.premium_shop_center > .feature_wrapper,
.premium_shop_center :is(h3, h4)[id],
.premium_shop_section_heading h2 {
  scroll-margin-top: var(--premium-shop-sticky-top, 10rem);
}
.premium_shop_audience_note {
  border-left: 3px solid var(--yusaso-blue);
  margin: 0;
  min-height: 1.25rem;
  padding-left: 0.75rem;}
/* RETIRED 2026-09-01: Personal Theme prices use the shared mini-card alignment.
.premium_shop_custom_theme .premium_avatar_offer_price { text-align: left; }
*/
@media (max-width: 72rem) {
  #custom-theme {
    grid-column: 2;
  }
  /* UNUSED - disabled
.premium_shop_account {
    grid-row: auto;
  }
*/
}
@media (max-width: 767px) {
  #custom-theme {
    grid-column: auto;
  }
  /* RETIRED 2026-09-01: shared mini-card actions own responsive alignment.
  .premium_shop_custom_theme .premium_avatar_offer_price { text-align: center; }
  */
}
/* UNUSED - disabled
.premium_shop_feature_grid {
  margin-bottom: 1rem;
}
*/

/* Every Shop product uses the same two-column catalog card grid. */
/* Oct 5 2026 - her request: each card is 49% wide so two fit per row. */
/* Oct 6 2026 - her request: 3 columns on wide screens (about 32% each), 2 on tablet, 1 on phone. */
.premium_shop_center .catalog_mini_card_grid {
  grid-template-columns: repeat(3, 32%);
  justify-content: space-between;
}
@media (max-width: 64rem) {
  .premium_shop_center .catalog_mini_card_grid {
    grid-template-columns: repeat(2, 49%);
  }
}

/* Oct 5 2026 - her request: smaller card titles, inside their own fixed-height
   box (the grid's first row, 3rem) that always has room for two lines. */
.premium_shop_product .catalog_mini_card_title {
  grid-row: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 3rem;
  overflow: hidden;
}

@media (max-width: 40rem) {
  .premium_shop_center .catalog_mini_card_grid {
    grid-template-columns: minmax(0, 1fr);
    justify-content: stretch;
  }
}

/* RETIRED 2026-09-01: Glam features no longer have a separate mini-card style.
.premium_shop_glam_feature > .card_wrapper > img { max-width: none; }
.premium_shop_glam_feature .premium_avatar_offer_price { text-align: left; }
*/
/* Oct 6 2026 - premium_shop_product_group / premium_shop_product_grid wrappers removed with the avatar ones above. */
.premium_shop_product {
  min-width: 0;
  overflow: hidden;
  text-align: center;
}
/* RETIRED 2026-09-01: catalog_mini_card_content owns all Shop card rows.
.premium_shop_product > .card_wrapper {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
}
*/
.premium_shop_product .catalog_mini_card_details > img,
.premium_shop_pack_art,
.premium_shop_art_unavailable {
  aspect-ratio: 1;
  border-radius: var(--radius-large);
  display: block;
  overflow: hidden;
  width: 100%;
}
.premium_shop_product .catalog_mini_card_details > img {
  object-fit: cover;
  max-width: none;
}
/* Oct 6 2026 - her request: every product card in a grid row shares the SAME rows
   (title, image, description, See More, audience note, requirement, price, gift), so
   product info lines up horizontally across the cards even when a row is empty or a
   description is longer. Each card spans 8 rows of the shared grid and takes its rows
   from it (subgrid); the wrapper boxes inside the card use display:contents so their
   children land directly in those rows. Browsers without subgrid keep the stacked
   per-card layout from cards.css. */
.premium_shop_product .catalog_mini_card_description {
  display: -webkit-box;
  height: auto;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  line-clamp: 4;
}
.premium_shop_product .catalog_mini_card_description.is_expanded {
  display: block;
  -webkit-line-clamp: unset;
  line-clamp: unset;
  overflow: visible;
}
.premium_shop_description_toggle[hidden] {
  display: none;
}
/* Oct 6 2026 - her request: See More is a full-width button, the label with a full-width, short
   chevron strip below it (a simple V stretched wide). Colors and the chevron height come from the
   --shop-see-more-* tokens in css_visual_catalog.css so each theme can change them. */
.premium_shop_description_toggle {
  display: grid;
  gap: 0.15rem;
  justify-items: center;
  width: 100%;
  margin: 0;
  padding: 0.2rem 0 0;
  border: 1px solid var(--shop-see-more-border);
  border-radius: var(--radius-small);
  background: var(--shop-see-more-background);
  color: var(--shop-see-more-text);
  cursor: pointer;}
.premium_shop_description_toggle:hover,
.premium_shop_description_toggle:focus-visible {
  background: var(--shop-see-more-hover-background);
}
.premium_shop_description_toggle_chevron {
  display: block;
  width: 100%;
  height: 18px;
  background: var(--shop-see-more-chevron-color);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpolyline points='0,1 50,9 100,1' fill='none' stroke='black' stroke-width='2' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpolyline points='0,1 50,9 100,1' fill='none' stroke='black' stroke-width='2' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
.premium_shop_description_toggle[aria-expanded="true"] .premium_shop_description_toggle_chevron {
  transform: scaleY(-1);
}
@supports (grid-template-rows: subgrid) {
  .premium_shop_center .catalog_mini_card_grid > .premium_shop_product {
    display: grid;
    grid-row: span 8;
    grid-template-rows: subgrid;
    row-gap: 0.45rem;
    height: auto;
    box-sizing: border-box;
    padding: 0.65rem;
  }
  .premium_shop_center .catalog_mini_card_grid > .premium_shop_product > .nested_card_content,
  .premium_shop_product .catalog_mini_card_details,
  .premium_shop_product .catalog_mini_card_actions {
    display: contents;
  }
  .premium_shop_product .catalog_mini_card_title { grid-row: 1; }
  .premium_shop_product .catalog_mini_card_details > :is(img, .premium_shop_pack_art, .premium_shop_art_unavailable) { grid-row: 2; }
  .premium_shop_product .catalog_mini_card_description { grid-row: 3; }
  .premium_shop_product .premium_shop_description_toggle { grid-row: 4; }
  .premium_shop_product .premium_shop_audience_note { grid-row: 5; }
  .premium_shop_product .premium_shop_requirement { grid-row: 6; }
  .premium_shop_product .catalog_mini_card_status { grid-row: 7; }
  .premium_shop_product .shop_gift_line_item { grid-row: 8; }
}
.premium_shop_product h4 {
  margin: 0.65rem 0 0.3rem;
}
/* Oct 6 2026 - the product title is an h4 now (inside its fixed-height title box, so no extra margin). */
.premium_shop_product .catalog_mini_card_title h4 {
  margin: 0;
  text-align: center;
}
/* Oct 6 2026 - her request: the Gift This Item checkbox + label sit centered in the card. */
.premium_shop_product .shop_gift_toggle {
  display: flex;
  justify-content: center;
}
.premium_shop_product .shop_gift_toggle label {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.premium_shop_product .shop_gift_guest_note {
  margin: 0;
  text-align: center;}
.premium_shop_product > .card_wrapper > p {
  margin: 0.2rem 0;}
/* RETIRED 2026-09-01: catalog_mini_card_description owns description height.
.premium_shop_product > .card_wrapper > .premium_shop_description { flex: 1; }
*/
.premium_shop_product .premium_avatar_offer_price {
  text-align: center; /* Oct 8 2026 - her request: the $ amount is centered */
}
/* Oct 8 2026 - her request: the empty Audience / Requirement rows no longer leave a gap between See More and the price. */
.premium_shop_product .catalog_mini_card_empty_row {
  display: none;
}
.premium_shop_requirement {
  color: var(--yusaso-blue) !important;
  margin: 0;
  min-height: 1.25rem;}
.premium_shop_pack_art {
  position: relative;
}
.premium_shop_pack_art img {
  height: 100%;
  inset: 0;
  object-fit: cover;
  position: absolute;
  width: 100%;
}
.premium_shop_pack_art img + img {
  object-fit: contain;
}
.premium_shop_art_unavailable {
  background: var(--page-field-background);
}

@media (max-width: 767px) {
  #glam-posts {
    grid-column: auto;
  }
  .premium_shop_product .premium_avatar_offer_price {
    text-align: center;
  }
}

/* RETIRED 2026-08-30: Shop bookmarks use shared menu hierarchy. */
/* UNUSED - disabled
.premium_feature_card {
  display: grid;
  grid-template-rows: auto minmax(4.5em, 1fr) auto;
  align-content: start;
  gap: 0.65rem;
  min-width: 0;
  height: 100%;
  padding: 1rem;
  color: var(--page-card-text);
  background: var(--page-surface);
  border: 1px solid var(--page-card-border);
  border-radius: var(--radius-large);
}
*/
/* UNUSED - disabled
.premium_feature_card h3,
.premium_feature_card p {
  margin: 0;
}
*/
@media (max-width: 640px) {
  /* UNUSED - disabled
.premium_feature_card {
    grid-template-rows: auto auto auto;
  }
*/
}
/* ==========================================================================
   Canonical Shop feature cards migrated from new_base_aesthetics.css
   ========================================================================== */

.feature_card > img,
.premium_shop_transparent_art,
.premium_shop_pack_art,
.premium_shop_art_unavailable {
    box-sizing: border-box;
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    min-height: 0;
    overflow: hidden;
    border-radius: var(--radius-large);
}

.feature_card > img {
    height: auto;
    object-fit: cover;
}

.premium_shop_transparent_art img,
.premium_shop_pack_art img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}
  /* Account availability stands apart from the controls that follow it. */
/* UNUSED - disabled
.premium_status {
  display: block;
  margin: 0;
}
*/

/* ==========================================================================
   RESPONSIVE TIERS (Oct 11 2026)
   Mobile-first hardening for every device size in the canon (see the DevTools
   preset list). Everything above this line is the normal CSS; these blocks
   only refine it for narrower or wider screens. Add new size fixes here.
   ========================================================================== */

/* 320–428px — Mobile Small + Mobile Large (iPhone SE, iPhone 16, Pixel 9 / 9 Pro / 10, Galaxy A55, Galaxy Z Fold 6 cover, Pixel 9 Pro Fold cover) */
@media (max-width: 428px) {
    main.content :is(h2, h3, p, td, th) { overflow-wrap: anywhere; }
}

/* 768–1024px — Tablet (own tier): iPad Mini landscape (768), Galaxy Z Fold 6 unfolded (~884), Pixel 9 Pro Fold unfolded (~841), Surface Pro 10 / 13 (~912), 1024 */
@media (min-width: 768px) and (max-width: 1024px) {
    main.content :is(h2, h3, p, td, th) { overflow-wrap: anywhere; }
}

/* 1025–1400px — Narrow Desktop: any desktop browser window narrower than the full site width (Nest Hub Max 1280, laptops, resized windows); the three-column layout switches on at 1401 */
@media (min-width: 1025px) and (max-width: 1400px) {
    main.content :is(h2, h3, p, td, th) { overflow-wrap: anywhere; }
}
