/**
 * Smart Content Recommender — Public Styles
 * Mobile-first, modern, app-like UI.
 * All classes namespaced with .scr- prefix.
 */

/* ============================================================
   CSS Variables
   ============================================================ */
:root {
  --scr-primary:      #2563eb;
  --scr-primary-dark: #1d4ed8;
  --scr-accent:       #f97316;
  --scr-success:      #16a34a;
  --scr-text:         #111827;
  --scr-text-muted:   #6b7280;
  --scr-bg:           #ffffff;
  --scr-bg-muted:     #f9fafb;
  --scr-border:       #e5e7eb;
  --scr-radius:       12px;
  --scr-radius-sm:    6px;
  --scr-shadow:       0 2px 12px rgba(0,0,0,.08);
  --scr-shadow-hover: 0 8px 30px rgba(0,0,0,.14);
  --scr-font:         -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --scr-gap:          1rem;
  --scr-card-cols:    3;
}

/* ============================================================
   Section Wrapper
   ============================================================ */
.scr-section,
.scr-block {
  margin: 2.5rem 0;
  font-family: var(--scr-font);
  color: var(--scr-text);
  box-sizing: border-box;
}

.scr-section *,
.scr-block * {
  box-sizing: border-box;
}

.scr-section__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.25rem;
  gap: 1rem;
}

.scr-section__title {
  font-size: 1.35rem !important;
  font-weight: 700 !important;
  color: var(--scr-text) !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.3 !important;
}

.scr-section__more {
  font-size: .875rem;
  font-weight: 600;
  color: var(--scr-primary);
  text-decoration: none;
  white-space: nowrap;
  transition: color .2s;
}
.scr-section__more:hover { color: var(--scr-primary-dark); }

/* ============================================================
   Card Grid / List / Slider Layouts
   ============================================================ */
.scr-cards {
  display: grid;
  gap: var(--scr-gap);
}

.scr-cards--grid {
  grid-template-columns: repeat(var(--scr-card-cols), 1fr);
}

.scr-cards--list {
  grid-template-columns: 1fr;
}

.scr-cards--slider {
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding-bottom: .5rem;
}
.scr-cards--slider::-webkit-scrollbar { display: none; }

/* ============================================================
   Post Card
   ============================================================ */
.scr-card {
  background: var(--scr-bg);
  border: 1px solid var(--scr-border);
  border-radius: var(--scr-radius);
  overflow: hidden;
  box-shadow: var(--scr-shadow);
  transition: transform .22s ease, box-shadow .22s ease;
}
.scr-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--scr-shadow-hover);
}

.scr-card__link {
  display: flex;
  flex-direction: column;
  text-decoration: none !important;
  color: inherit !important;
  height: 100%;
}

/* List layout: side-by-side */
.scr-card--list .scr-card__link {
  flex-direction: row;
  align-items: center;
  gap: .875rem;
  padding: .75rem;
}
.scr-card--list .scr-card__thumb {
  width: 100px;
  min-width: 100px;
  height: 75px;
  border-radius: var(--scr-radius-sm);
  overflow: hidden;
  flex-shrink: 0;
}
.scr-card--list .scr-card__body { padding: 0; }

/* Thumbnail */
.scr-card__thumb {
  position: relative;
  aspect-ratio: 16/10;
  overflow: hidden;
  background: var(--scr-bg-muted);
}

.scr-card__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s ease;
}
.scr-card:hover .scr-card__thumb img { transform: scale(1.04); }

.scr-card__thumb-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--scr-bg-muted);
}
.scr-card__thumb-placeholder svg { width: 60px; height: auto; }

/* Badge */
.scr-badge {
  position: absolute;
  top: .5rem;
  left: .5rem;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .03em;
  padding: .2rem .55rem;
  border-radius: 99px;
  z-index: 2;
}
.scr-badge--trending {
  background: #fef3c7;
  color: #92400e;
}

/* Card Body */
.scr-card__body {
  padding: .875rem 1rem 1rem;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  flex: 1;
}

.scr-card__cat {
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--scr-primary);
}

.scr-card__title {
  font-size: .95rem !important;
  font-weight: 700 !important;
  color: var(--scr-text) !important;
  line-height: 1.4 !important;
  margin: 0 !important;
  padding: 0 !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.scr-card__excerpt {
  font-size: .82rem;
  color: var(--scr-text-muted);
  line-height: 1.5;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.scr-card__meta {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-top: auto;
  padding-top: .4rem;
}

.scr-card__date {
  font-size: .73rem;
  color: var(--scr-text-muted);
}

/* ============================================================
   Skeleton Loader
   ============================================================ */
.scr-loading {
  display: grid;
  grid-template-columns: repeat(var(--scr-card-cols), 1fr);
  gap: var(--scr-gap);
}

.scr-skeleton {
  border-radius: var(--scr-radius);
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: scr-shimmer 1.5s infinite;
}

.scr-skeleton--card {
  aspect-ratio: 4/3;
}

@keyframes scr-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ============================================================
   Feed / Infinite Scroll
   ============================================================ */
.scr-feed {
  font-family: var(--scr-font);
}

.scr-feed__header {
  margin-bottom: 1.25rem;
}

.scr-feed__loader {
  display: none;
  justify-content: center;
  padding: 2rem 0;
}

.scr-spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--scr-border);
  border-top-color: var(--scr-primary);
  border-radius: 50%;
  animation: scr-spin .75s linear infinite;
}

@keyframes scr-spin {
  to { transform: rotate(360deg); }
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 1024px) {
  :root { --scr-card-cols: 2; }
}

@media (max-width: 640px) {
  :root { --scr-card-cols: 1; }

  .scr-section__title { font-size: 1.1rem !important; }
  .scr-loading { grid-template-columns: 1fr; }
  .scr-cards--grid { grid-template-columns: 1fr; }
  .scr-cards--slider { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
  .scr-card__body { padding: .75rem; }
}

/* ============================================================
   Dark Mode (auto)
   ============================================================ */
@media (prefers-color-scheme: dark) {
  :root {
    --scr-text:       #f9fafb;
    --scr-text-muted: #9ca3af;
    --scr-bg:         #1f2937;
    --scr-bg-muted:   #111827;
    --scr-border:     #374151;
    --scr-shadow:     0 2px 12px rgba(0,0,0,.4);
    --scr-shadow-hover: 0 8px 30px rgba(0,0,0,.55);
  }
  .scr-card__title { color: var(--scr-text) !important; }
  .scr-skeleton {
    background: linear-gradient(90deg, #2d3748 25%, #374151 50%, #2d3748 75%);
    background-size: 200% 100%;
  }
}
