/* CAD Marketplace. Builds on site.css's .course-card/.course-grid/.cat-chip
   system for brand consistency, but this file carries real visual weight
   of its own — shadows, hover states, proper spacing — rather than leaning
   on those base classes alone. */

/* ---------------- Listing page ---------------- */

.mkt-hero{
  background:linear-gradient(180deg, var(--blue-tint) 0%, var(--paper) 100%);
  padding:56px 0 40px;border-bottom:1px solid var(--line);
}
.mkt-hero .wrap{text-align:center}
.mkt-hero .eyebrow{justify-content:center}
.mkt-hero h1{font-size:38px;margin:14px 0 12px}
.mkt-hero p{font-size:16px;color:var(--ink-soft);max-width:560px;margin:0 auto}

.mkt-toolbar{
  display:flex;gap:16px;align-items:center;flex-wrap:wrap;
  margin:32px 0 22px;
}
.mkt-search-wrap{position:relative;flex:1;min-width:220px;max-width:360px}
.mkt-search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-soft)}
.mkt-search{
  width:100%;box-sizing:border-box;padding:11px 14px 11px 40px;border-radius:12px;
  border:1.5px solid var(--line-strong);font-size:14px;background:var(--paper-raised);
  transition:border-color .15s,box-shadow .15s;
}
.mkt-search:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-tint)}

.mkt-cat-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.mkt-chip{
  padding:8px 16px;border-radius:20px;border:1.5px solid var(--line-strong);
  background:var(--paper-raised);font-size:13.5px;font-weight:600;color:var(--ink-soft);
  cursor:pointer;transition:all .15s;white-space:nowrap;
}
.mkt-chip:hover{border-color:var(--blue);color:var(--blue)}
.mkt-chip.active{background:var(--blue);border-color:var(--blue);color:#fff}

.mkt-result-count{font-size:13px;color:var(--ink-soft);margin:0 0 20px;font-weight:500}

.mkt-grid{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(270px, 1fr));gap:24px;
  margin-bottom:60px;
}

.mkt-card{
  display:flex;flex-direction:column;background:var(--paper-raised);
  border:1px solid var(--line);border-radius:16px;overflow:hidden;
  text-decoration:none;color:inherit;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.mkt-card:hover{
  transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:transparent;
}
.mkt-card-thumb{
  position:relative;aspect-ratio:4/3;background:var(--paper);overflow:hidden;
}
.mkt-card-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.mkt-card:hover .mkt-card-thumb img{transform:scale(1.05)}
.mkt-card-badge{
  position:absolute;left:12px;top:12px;
  background:rgba(255,255,255,.94);color:var(--ink);
  font-size:10.5px;font-weight:700;padding:5px 11px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.04em;box-shadow:var(--shadow-sm);
}
.mkt-card-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--amber-deep)}
.mkt-card-body{padding:18px 18px 20px;display:flex;flex-direction:column;gap:8px;flex:1}
.mkt-card-title{font-family:var(--font-display);font-size:16.5px;font-weight:700;line-height:1.35;color:var(--ink)}
.mkt-card-desc{font-size:13px;color:var(--ink-soft);line-height:1.55;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mkt-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.mkt-card-price{font-family:var(--font-mono);font-weight:700;font-size:17px;color:var(--ink)}
.mkt-card-cta{font-size:12.5px;font-weight:700;color:var(--blue)}

/* ---------------- Detail page ---------------- */

.mkt-detail{max-width:1120px;margin:0 auto;padding:36px 24px 0}
.mkt-breadcrumb{font-size:13px;color:var(--ink-soft);margin-bottom:22px}
.mkt-breadcrumb a{color:var(--ink-soft);text-decoration:none}
.mkt-breadcrumb a:hover{color:var(--blue)}

.mkt-layout{display:grid;grid-template-columns:1.25fr 1fr;gap:40px;align-items:start;margin-bottom:56px}
@media (max-width:860px){.mkt-layout{grid-template-columns:1fr;gap:28px}}

.mkt-gallery-main{
  width:100%;aspect-ratio:4/3;border-radius:18px;overflow:hidden;
  background:var(--paper-raised);border:1px solid var(--line);box-shadow:var(--shadow-md);
  margin-bottom:14px;
}
.mkt-gallery-main img{width:100%;height:100%;object-fit:cover;display:block}
.mkt-gallery-thumbs{display:flex;gap:10px;flex-wrap:wrap}
.mkt-gallery-thumb{
  width:80px;height:60px;border-radius:10px;overflow:hidden;cursor:pointer;
  border:2px solid transparent;opacity:.6;transition:opacity .15s,border-color .15s,transform .15s;
  padding:0;background:none;
}
.mkt-gallery-thumb:hover{opacity:.9;transform:translateY(-2px)}
.mkt-gallery-thumb.active{opacity:1;border-color:var(--blue)}
.mkt-gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}

.mkt-info-card{
  background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:32px;box-shadow:var(--shadow-md);
}
.mkt-cat-label{
  display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--blue);margin-bottom:10px;
}
.mkt-title{font-family:var(--font-display);font-size:26px;font-weight:800;line-height:1.25;margin:0 0 14px}
.mkt-desc{font-size:14.5px;line-height:1.7;color:var(--ink-soft);white-space:pre-line;margin-bottom:24px}

.mkt-price-row{display:flex;align-items:baseline;gap:10px;margin-bottom:20px}
.mkt-price{font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--ink)}
.mkt-price-compare{font-family:var(--font-mono);font-size:16px;font-weight:600;color:var(--ink-soft);text-decoration:line-through}

.mkt-secure-note{font-size:12.5px;color:var(--ink-soft);margin-top:14px;text-align:center}

.mkt-unlocked-box{
  background:#EAFBF2;border:1.5px solid var(--green);border-radius:var(--radius-md);
  padding:20px;margin-bottom:24px;
}
.mkt-unlocked-box h3{font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--green);margin:0 0 4px}
.mkt-unlocked-box p{font-size:13.5px;color:var(--ink-soft);margin:0 0 16px}

.mkt-spec-table{border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;margin-top:24px}
.mkt-spec-row{display:flex;justify-content:space-between;gap:16px;padding:12px 16px;font-size:13.5px}
.mkt-spec-row:nth-child(odd){background:var(--paper)}
.mkt-spec-row:nth-child(even){background:var(--paper-raised)}
.mkt-spec-label{color:var(--ink-soft)}
.mkt-spec-value{font-weight:700;color:var(--ink);text-align:right}

/* Error state on the detail page uses this badge — kept here instead of
   pulling in order.css, whose body{display:flex} rule broke this page's
   whole layout (header/gallery/footer were becoming flex-row siblings
   instead of stacking). */
.order-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:8px;font-size:13px;font-weight:600;margin-bottom:16px}
.order-badge.ok{background:#EAFBF2;color:var(--green)}
.order-badge.err{background:#FDEDEA;color:#C4392C}

@media (max-width:600px){
  .mkt-hero{padding:40px 0 28px}
  .mkt-hero h1{font-size:28px}
  .mkt-hero p{font-size:14.5px}
  .mkt-detail{padding:24px 16px 0}
  .mkt-info-card{padding:22px}
  .mkt-title{font-size:22px}
  .mkt-price{font-size:24px}
  .mkt-grid{grid-template-columns:1fr;gap:18px}
}
