/* ===== Product & privacy pages =====
   Layers on top of styles.css (reuses its tokens, header, .pill-btn,
   .section-inner, .footer). Absolute-path linked so it works at any depth. */

.page-main {
  min-height: calc(100vh - var(--header-height));
}

/* Breadcrumb / back link */
.breadcrumb {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 28px 24px 0;
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.breadcrumb a {
  color: var(--text-secondary);
  text-decoration: none;
  transition: color var(--transition);
}
.breadcrumb a:hover { color: var(--text-primary); }
.breadcrumb .sep { margin: 0 8px; color: var(--text-tertiary); }

/* ===== Product hero ===== */
.product-hero {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 56px 24px 24px;
  text-align: center;
}
.product-icon {
  width: 88px;
  height: 88px;
  border-radius: 22px;
  margin: 0 auto 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.4rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.product-name {
  font-size: clamp(2rem, 5vw, 3rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--text-primary);
}
.product-tagline {
  margin-top: 10px;
  font-size: clamp(1rem, 2.2vw, 1.25rem);
  color: var(--text-secondary);
}
.status-badge {
  display: inline-block;
  margin-top: 18px;
  padding: 5px 14px;
  border-radius: var(--radius-pill);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--accent);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
}
.product-actions {
  margin-top: 28px;
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
}
.pill-btn.disabled {
  opacity: 0.55;
  pointer-events: none;
}

/* ===== Generic blocks ===== */
.block {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 40px 24px;
}
.block-title {
  font-size: 1.4rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text-primary);
  margin-bottom: 20px;
}
.lead {
  font-size: 1.05rem;
  color: var(--text-secondary);
  max-width: 60ch;
}

/* ===== Feature grid ===== */
.feature-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 16px;
}
.feature-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: 20px;
  transition: transform 0.2s, box-shadow var(--transition), border-color var(--transition);
}
.feature-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}
.feature-card .fc-icon { font-size: 1.5rem; }
.feature-card h3 {
  margin: 10px 0 6px;
  font-size: 1rem;
  color: var(--text-primary);
}
.feature-card p {
  font-size: 0.88rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

/* Tag pills (reuses look of .project-tech span) */
.tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.tags span {
  font-size: 0.75rem;
  padding: 5px 12px;
  border-radius: var(--radius-pill);
  background: var(--bg-card);
  color: var(--text-secondary);
  border: 1px solid var(--border);
  font-weight: 500;
}

/* Callout (e.g. privacy / disclaimer) */
.callout {
  max-width: var(--max-width);
  margin: 8px auto 0;
  padding: 18px 24px;
  border-radius: var(--radius-card);
  background: var(--bg-card);
  border: 1px solid var(--border);
  color: var(--text-secondary);
  font-size: 0.9rem;
}
.callout a { color: var(--accent); text-decoration: none; }
.callout a:hover { text-decoration: underline; }

/* ===== Products landing grid ===== */
.products-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 18px;
}
.product-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: 24px;
  text-decoration: none;
  transition: transform 0.2s, box-shadow var(--transition), border-color var(--transition);
}
.product-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: color-mix(in srgb, var(--accent) 40%, var(--border));
}
.product-card .pc-icon {
  width: 56px; height: 56px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.7rem; background: var(--bg); border: 1px solid var(--border);
}
.product-card h3 { font-size: 1.15rem; color: var(--text-primary); }
.product-card p { font-size: 0.9rem; color: var(--text-secondary); flex: 1; }
.product-card .pc-more { font-size: 0.85rem; font-weight: 600; color: var(--accent); }

/* ===== Prose (privacy policy) ===== */
.prose {
  max-width: 720px;
  margin: 0 auto;
  padding: 12px 24px 40px;
  color: var(--text-secondary);
}
.prose h1 {
  font-size: clamp(1.8rem, 4vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text-primary);
  margin-bottom: 6px;
}
.prose .updated { font-size: 0.85rem; color: var(--text-tertiary); margin-bottom: 28px; }
.prose h2 {
  font-size: 1.2rem;
  color: var(--text-primary);
  margin: 32px 0 10px;
}
.prose p, .prose li { font-size: 0.95rem; line-height: 1.7; }
.prose p { margin-bottom: 12px; }
.prose ul { margin: 0 0 12px 1.2em; }
.prose li { margin-bottom: 6px; }
.prose a { color: var(--accent); text-decoration: none; }
.prose a:hover { text-decoration: underline; }
.prose strong { color: var(--text-primary); }

/* ===== ui-ux-pro-max pass: SVG icon treatment ===== */
.product-icon svg,
.pc-icon svg {
  color: var(--accent);
  display: block;
}
/* For a product shown by its real app icon rather than a glyph. The artwork
   carries its own background, so the card frame is dropped — a full-bleed
   icon sitting inside a white tile reads as a screenshot of an icon rather
   than the icon. The 22px radius and shadow stay, so the tile still matches
   the glyph-based product pages beside it. */
.product-icon--app {
  background: none;
  border: 0;
  overflow: hidden;
}
.product-icon--app svg {
  width: 100%;
  height: 100%;
}
/* Same, for a card in the products grid. Scoped to .product-card so it
   overrides that rule's background and border rather than losing to it. */
.product-card .pc-icon--app {
  background: none;
  border: 0;
  overflow: hidden;
}
.pc-icon--app svg {
  width: 100%;
  height: 100%;
}
.product-icon,
.pc-icon {
  display: flex;
  align-items: center;
  justify-content: center;
}
.fc-icon {
  color: var(--accent);
  display: inline-flex;
}
.callout-icon {
  vertical-align: -3px;
  margin-right: 4px;
  color: var(--accent);
}
@media (prefers-reduced-motion: no-preference) {
  .product-card:hover,
  .feature-card:hover {
    transform: translateY(-3px) scale(1.02);
  }
}
