/* Dokan store page. Loaded on top of catalog.css, which already styles the
   product cards inside .tr-catalog-results. Only page frame and producer
   header rules belong here. */

.tr-vendor-store .site-content {
  background:var(--tr-paper);
}

.tr-vendor-store .site-content > .ast-container {
  width:100%;
  max-width:1600px;
  padding-inline:clamp(1rem, 2.5vw, 2.5rem);
}

.tr-vendor-store #primary {
  margin-top:0;
}

/* Dokan ships its own page heading; ours replaces it. */
.tr-vendor-store .ast-archive-description,
.tr-vendor-store .woocommerce-products-header,
.tr-vendor-store .dokan-store-page-heading {
  display:none;
}

/* --- Producer header ---------------------------------------------------- */

.tr-store-intro {
  margin:0 0 2.5rem;
  padding:clamp(2rem, 4vw, 3.25rem) 0 clamp(1.5rem, 3vw, 2.25rem);
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(0, 1.1fr);
  gap:clamp(1.5rem, 4vw, 4rem);
  align-items:end;
  border-bottom:1px solid var(--tr-line);
}

.tr-store-intro__head > p {
  margin:0 0 .5rem;
  color:#948b80;
  font-size:.6rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
}

.tr-store-intro h1 {
  margin:0;
  color:var(--tr-ink);
  font-family:var(--tr-font-display);
  font-size:clamp(1.9rem, 4vw, 2.9rem);
  font-weight:400;
  line-height:1.05;
}

.tr-store-intro__meta {
  margin:.75rem 0 0;
  color:var(--tr-muted);
  font-size:.8rem;
}

.tr-store-intro__about {
  margin:0;
  max-width:52ch;
  color:var(--tr-muted);
  font-size:.95rem;
  line-height:1.6;
}

/* --- Dokan store profile frame ------------------------------------------ */

.tr-vendor-store .dokan-store-wrap {
  margin:0;
}

.tr-vendor-store .profile-info-box {
  margin:0 0 1.25rem;
  padding:0 0 1.25rem;
  border-bottom:1px solid var(--tr-line);
  background:transparent;
}

/* Dokan renders the banner at full natural height, which pushed the products
   below the fold. Capped and cropped instead. */
.tr-vendor-store .profile-info-img {
  width:100%;
  max-height:clamp(9rem, 22vw, 15rem);
  display:block;
  object-fit:cover;
  object-position:center;
}

.tr-vendor-store .profile-info-summery-wrapper {
  padding:0;
  background:transparent;
  color:var(--tr-ink);
}

/* Logo and name sit on one line so the header stays shallow. */
.tr-vendor-store .profile-info-summery {
  padding:1rem 0 0;
  display:flex;
  gap:1.25rem;
  align-items:center;
}

.tr-vendor-store .profile-info-head {
  margin:0;
  flex:none;
}

/* Dokan sizes this at 100px through a five-class selector, so the override
   has to match its depth. */
.tr-vendor-store .dokan-single-store .profile-frame .profile-info-box.profile-layout-layout1 .profile-info-summery-wrapper .profile-info-head .profile-img img {
  width:clamp(3.25rem, 7vw, 4.5rem);
  height:clamp(3.25rem, 7vw, 4.5rem);
  max-width:none;
  display:block;
  border-radius:0;
  object-fit:contain;
}

.tr-vendor-store .profile-info {
  min-width:0;
  flex:1;
}

.tr-vendor-store ul.dokan-store-info {
  margin:.35rem 0 0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:.2rem 1.25rem;
  list-style:none;
}

.tr-vendor-store ul.dokan-store-info li {
  margin:0;
  color:var(--tr-muted);
  font-size:.8rem;
}

.tr-vendor-store ul.dokan-store-info li i {
  margin-right:.35rem;
  color:#a89f92;
}

.tr-vendor-store .profile-info-summery-wrapper .store-name,
.tr-vendor-store .profile-info-summery-wrapper h1,
.tr-vendor-store .profile-info-summery-wrapper h2 {
  margin:0;
  color:var(--tr-ink);
  font-family:var(--tr-font-display);
  font-size:clamp(1.9rem, 4vw, 2.9rem);
  font-weight:400;
  line-height:1.05;
  text-transform:none;
}

.tr-vendor-store .profile-info-img {
  border-radius:0;
}

/* Dokan's tab strip. Two tabs today: Produse and Reviews. */
.tr-vendor-store .dokan-store-tabs ul.dokan-list-inline {
  margin:0 0 1.5rem;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:.25rem 1.75rem;
  border-bottom:1px solid var(--tr-line);
  list-style:none;
}

.tr-vendor-store .dokan-store-tabs ul.dokan-list-inline li {
  margin:0;
  padding:0;
}

.tr-vendor-store .dokan-store-tabs ul.dokan-list-inline li a {
  padding:.85rem 0;
  display:block;
  border-bottom:2px solid transparent;
  background:transparent;
  color:var(--tr-muted);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.1em;
  text-decoration:none;
  text-transform:uppercase;
}

.tr-vendor-store .dokan-store-tabs ul.dokan-list-inline li.active a,
.tr-vendor-store .dokan-store-tabs ul.dokan-list-inline li a:hover {
  border-bottom-color:var(--tr-gold);
  color:var(--tr-ink);
}

/* Dokan's own search and sort strip above the grid. */
.tr-vendor-store .dokan-store-products-filter-area {
  margin:0 0 1.5rem;
  padding:0;
  border:0;
  background:transparent;
}

.tr-vendor-store .dokan-store-products-filter-area select.orderby,
.tr-vendor-store .dokan-store-products-filter-area input.product-name-search {
  padding:.6rem .75rem;
  border:1px solid var(--tr-line);
  border-radius:0;
  background:var(--tr-surface);
  color:var(--tr-ink);
  font-size:.85rem;
}

/* The star rating has no reviews behind it yet, so an empty widget would
   misrepresent the marketplace. */
.tr-vendor-store .dokan-store-rating,
.tr-vendor-store .profile-info-summery-wrapper .store-rating,
.tr-vendor-store .dokan-follow-store-button {
  display:none;
}

/* --- Add to cart -------------------------------------------------------- */

/* The catalog rule needs a .tr-catalog-layout ancestor, which only the shop
   page builds, so Astra's gold button won here. Same declarations, same
   specificity, scoped to the store page. */
body.woocommerce.tr-vendor-store .site-content .tr-catalog-results ul.products.products li.product a.button,
body.woocommerce.tr-vendor-store .site-content .tr-catalog-results ul.products.products li.product a.button.add_to_cart_button {
  width:100%;
  min-height:2.75rem;
  margin:.8rem 0 0;
  margin-inline:0;
  margin-bottom:0;
  padding:.7rem .8rem;
  display:flex;
  align-self:stretch;
  align-items:center;
  justify-content:center;
  border:1px solid var(--tr-ink);
  border-radius:0;
  background:var(--tr-ink);
  color:#fff;
  font-size:.67rem;
  font-weight:800;
  letter-spacing:.07em;
  text-align:center;
  text-transform:uppercase;
  transition:background .16s ease, color .16s ease;
}

/* --- Info tabs ----------------------------------------------------------- */

.tr-store-info {
  margin:clamp(2.5rem, 5vw, 4rem) 0 0;
}

.tr-store-info__tabs {
  margin:0 0 1.5rem;
  display:flex;
  flex-wrap:wrap;
  gap:.25rem 1.75rem;
  border-bottom:1px solid var(--tr-line);
}

.tr-store-info__tabs button {
  padding:.85rem 0;
  border:0;
  border-bottom:2px solid transparent;
  background:none;
  color:var(--tr-muted);
  font-family:var(--tr-font-body);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  cursor:pointer;
}

.tr-store-info__tabs button[aria-selected='true'] {
  border-bottom-color:var(--tr-gold);
  color:var(--tr-ink);
}

.tr-store-info__tabs button:focus-visible {
  outline:2px solid var(--tr-gold);
  outline-offset:2px;
}

/* The tab label already names the panel. */
.tr-store-info.is-tabbed .tr-store-legal h2,
.tr-store-info.is-tabbed .tr-store-policies h2 {
  display:none;
}

.tr-store-info.is-tabbed .tr-store-policies,
.tr-store-info.is-tabbed .tr-store-legal {
  margin-top:0;
}

/* --- Company details ----------------------------------------------------- */

.tr-store-legal {
  margin:clamp(2.5rem, 5vw, 4rem) 0 0;
  padding:clamp(1.75rem, 3vw, 2.5rem);
  border:1px solid var(--tr-line);
  background:var(--tr-surface);
}

.tr-store-legal h2 {
  margin:0 0 1.5rem;
  color:#948b80;
  font-family:var(--tr-font-body);
  font-size:.6rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
}

.tr-store-legal__list {
  margin:0;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(15rem, 1fr));
  gap:1.1rem clamp(1.5rem, 4vw, 3.5rem);
}

.tr-store-legal__list > div {
  min-width:0;
}

.tr-store-legal__list dt {
  margin:0 0 .3rem;
  color:var(--tr-muted);
  font-size:.68rem;
  font-weight:600;
}

.tr-store-legal__list dd {
  margin:0;
  color:var(--tr-ink);
  font-size:.92rem;
  font-weight:600;
  line-height:1.4;
  overflow-wrap:anywhere;
}

.tr-store-legal__note {
  margin:1.75rem 0 0;
  padding-top:1.25rem;
  border-top:1px solid var(--tr-line);
  color:var(--tr-muted);
  font-size:.78rem;
  line-height:1.55;
}

/* --- Policy accordion ---------------------------------------------------- */

.tr-store-policies {
  margin:clamp(2rem, 4vw, 3rem) 0 0;
}

.tr-store-policies h2 {
  margin:0 0 1rem;
  color:var(--tr-ink);
  font-family:var(--tr-font-display);
  font-size:clamp(1.4rem, 3vw, 2rem);
  font-weight:400;
  line-height:1.1;
  text-transform:none;
}

.tr-store-policy {
  border-bottom:1px solid var(--tr-line);
}

.tr-store-policy > summary {
  padding:1.1rem .25rem;
  display:flex;
  gap:.9rem;
  align-items:center;
  cursor:pointer;
  list-style:none;
}

.tr-store-policy > summary::-webkit-details-marker {
  display:none;
}

.tr-store-policy > summary:focus-visible {
  outline:2px solid var(--tr-gold);
  outline-offset:2px;
}

.tr-store-policy > summary > span {
  width:1.75rem;
  height:1.75rem;
  flex:none;
  display:grid;
  place-items:center;
  border:1px solid var(--tr-line);
  border-radius:50%;
  color:var(--tr-muted);
  font-size:.8rem;
  font-weight:700;
}

.tr-store-policy > summary > strong {
  flex:1;
  color:var(--tr-ink);
  font-size:1rem;
  font-weight:600;
}

.tr-store-policy > summary > i {
  width:.55rem;
  height:.55rem;
  flex:none;
  border-right:2px solid var(--tr-muted);
  border-bottom:2px solid var(--tr-muted);
  transform:rotate(45deg) translate(-2px, -2px);
  transition:transform .18s ease;
}

.tr-store-policy[open] > summary > i {
  transform:rotate(-135deg) translate(-2px, -2px);
}

.tr-store-policy__body {
  padding:0 .25rem 1.4rem 3.4rem;
  color:var(--tr-muted);
  font-size:.9rem;
  line-height:1.6;
}

.tr-store-policy__body p {
  margin:0 0 .75rem;
}

.tr-store-policy__body p:last-child {
  margin-bottom:0;
}

@media (max-width:768px) {
  .tr-store-policy__body {
    padding-left:.25rem;
  }
}

/* The store grid sits in .seller-items, outside the .tr-catalog-results
   wrapper's own margins, so the spacing is reset here. */
.tr-vendor-store .seller-items {
  margin:0;
}

.tr-vendor-store .tr-store-results {
  margin:0;
}

@media (max-width:768px) {
  .tr-store-intro {
    grid-template-columns:minmax(0, 1fr);
    gap:1.25rem;
    align-items:start;
  }

  .tr-store-legal__list {
    grid-template-columns:minmax(0, 1fr);
  }

  /* The contact list is the tallest part of the header on a phone. */
  .tr-vendor-store ul.dokan-store-info {
    gap:.15rem;
  }

  .tr-vendor-store ul.dokan-store-info li {
    width:100%;
    font-size:.72rem;
    line-height:1.35;
  }

  .tr-vendor-store .profile-info-summery {
    padding-top:.85rem;
    gap:.85rem;
  }

  .tr-vendor-store .profile-info-box {
    margin-bottom:1rem;
    padding-bottom:1rem;
  }

  .tr-vendor-store .dokan-store-tabs ul.dokan-list-inline {
    margin-bottom:1rem;
  }
}
