/* Gallery-specific overrides */
.gallery-title-bar {
  display: none;
}
.gallery-title-bar h1 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
}
.gallery-title-bar p {
  font-size: var(--text-sm);
  color: var(--color-text-muted);
  margin-top: var(--space-1);
}

/* Card image heights — only for placeholder cards without image */
.card-image.h-short { height: 140px; }
.card-image.h-medium { height: 180px; }
.card-image.h-tall { height: 220px; }
.card-image.h-xtall { height: 260px; }

/* Card with real uploaded image — full height, no crop */
.card-image.has-image {
  height: auto;
}
.card-image img {
  width: 100%;
  height: auto;
  display: block;
}

/* Halftone variations per category */
.card-image[data-cat="cesko"] { background: linear-gradient(135deg, #4B6A9B12, #4B6A9B08); }
.card-image[data-cat="zahranici"] { background: linear-gradient(135deg, #2D8B7A12, #2D8B7A08); }
.card-image[data-cat="sport"] { background: linear-gradient(135deg, #3D7B4F12, #3D7B4F08); }
.card-image[data-cat="celebrity"] { background: linear-gradient(135deg, #8B457212, #8B457208); }
.card-image[data-cat="ekonomika"] { background: linear-gradient(135deg, #A0752012, #A0752008); }
.card-image[data-cat="technologie"] { background: linear-gradient(135deg, #4178B512, #4178B508); }
.card-image[data-cat="kultura"] { background: linear-gradient(135deg, #B5674A12, #B5674A08); }

/* Decorative icon in card image */
.card-image-icon {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  color: var(--color-text-faint);
  opacity: 0.3;
}
.card-image-icon svg {
  width: 48px;
  height: 48px;
}

/* Mobile menu overlay */
.mobile-menu-overlay {
  display: none;
  position: fixed;
  inset: 0;
  top: 60px;
  background: var(--color-surface);
  z-index: 49;
  flex-direction: column;
  padding: var(--space-6) var(--space-4);
  gap: var(--space-4);
  overflow-y: auto;
}
.mobile-menu-overlay.active {
  display: flex;
}
.mobile-menu-overlay a {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--text-base);
  font-weight: 500;
  color: var(--color-text);
  text-decoration: none;
  transition: background var(--transition-interactive);
}
.mobile-menu-overlay a:hover,
.mobile-menu-overlay a:active {
  background: var(--color-surface-offset);
}
.mobile-menu-overlay a svg {
  width: 20px;
  height: 20px;
  color: var(--color-text-muted);
}
.mobile-menu-divider {
  height: 1px;
  background: var(--color-divider);
  margin: var(--space-2) 0;
}
.mobile-menu-social {
  display: flex;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
}
.mobile-menu-social a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-md);
  color: var(--color-text-muted);
  padding: 0;
}

/* ======================================
   COMIC MODAL — Instagram-style overlay
   ====================================== */
.comic-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: oklch(0.1 0 0 / 0.85);
  backdrop-filter: blur(4px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 300ms var(--ease-golden), visibility 0s 300ms;
  display: flex;
  align-items: center;
  justify-content: center;
}
.comic-modal-backdrop.open {
  opacity: 1;
  visibility: visible;
  transition: opacity 300ms var(--ease-golden), visibility 0s;
}

/* Modal container */
.comic-modal {
  position: relative;
  width: min(94vw, 860px);
  max-height: 92vh;
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 24px 80px oklch(0 0 0 / 0.4);
  transform: scale(0.95);
  transition: transform 300ms var(--ease-golden);
}
.comic-modal-backdrop.open .comic-modal {
  transform: scale(1);
}

/* Close button */
.modal-close {
  position: absolute;
  top: var(--space-3);
  right: var(--space-3);
  z-index: 10;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-full);
  background: oklch(from var(--color-surface) l c h / 0.85);
  backdrop-filter: blur(8px);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  cursor: pointer;
  transition: background var(--transition-interactive), transform var(--transition-interactive);
}
.modal-close:hover {
  background: var(--color-surface-offset);
  transform: scale(1.08);
}

/* Nav arrows — desktop only */
.modal-nav {
  position: fixed;
  top: 50%;
  transform: translateY(-50%);
  z-index: 101;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-full);
  background: oklch(from var(--color-surface) l c h / 0.9);
  backdrop-filter: blur(8px);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transition: opacity 300ms var(--ease-golden), visibility 0s 300ms,
              background var(--transition-interactive), transform var(--transition-interactive);
}
.comic-modal-backdrop.open .modal-nav {
  opacity: 1;
  visibility: visible;
  transition: opacity 300ms var(--ease-golden), visibility 0s,
              background var(--transition-interactive), transform var(--transition-interactive);
}
.modal-nav:hover {
  background: var(--color-surface);
  transform: translateY(-50%) scale(1.08);
}
.modal-nav:active {
  transform: translateY(-50%) scale(0.95);
}
.modal-nav.disabled {
  opacity: 0.3;
  pointer-events: none;
}
.modal-nav-prev { left: var(--space-4); }
.modal-nav-next { right: var(--space-4); }

/* Scrollable modal body */
.modal-scroll {
  overflow-y: auto;
  overscroll-behavior: contain;
  flex: 1;
  -webkit-overflow-scrolling: touch;
}

/* Image inside modal */
.modal-image {
  width: 100%;
  padding: var(--space-4);
}
.modal-image img {
  width: 100%;
  border-radius: var(--radius-md);
  display: block;
}

/* Panels inside modal */
.modal-panels {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-2);
  padding: var(--space-4);
  padding-top: var(--space-4);
}
@media (min-width: 768px) {
  .modal-panels {
    grid-template-columns: repeat(2, 1fr);
  }
}
.modal-panel {
  position: relative;
  border: 2px solid var(--panel-border);
  border-radius: var(--radius-sm);
  background: var(--panel-bg);
  overflow: hidden;
  aspect-ratio: 4 / 3;
}
.modal-panel .halftone-bg { z-index: 1; }
.modal-panel .card-image-icon {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.15;
  color: var(--color-text-faint);
}
.modal-panel .card-image-icon svg {
  width: 40px;
  height: 40px;
}

/* Modal content area */
.modal-content {
  padding: 0 var(--space-4) var(--space-4);
}
.modal-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.02em;
  margin-bottom: var(--space-2);
}
.modal-title {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 700;
  line-height: 1.25;
  margin-bottom: var(--space-3);
}
.modal-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-muted);
  margin-bottom: var(--space-4);
}
.modal-meta-sep {
  width: 3px;
  height: 3px;
  border-radius: var(--radius-full);
  background: var(--color-text-faint);
}
.modal-source {
  color: var(--color-primary);
  text-decoration: none;
  font-weight: 500;
}
.modal-source:hover {
  color: var(--color-primary-hover);
}

/* Interaction bar inside modal */
.modal-interaction {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) 0;
  border-top: 1px solid var(--color-divider);
}
.modal-share-btns {
  display: flex;
  gap: var(--space-2);
  margin-left: auto;
}
.modal-share-btn {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-full);
  color: var(--color-text-faint);
  cursor: pointer;
  background: none;
  border: none;
  transition: color var(--transition-interactive), background var(--transition-interactive);
}
.modal-share-btn:hover {
  color: var(--color-text);
  background: var(--color-surface-offset);
}
.modal-share-btn svg {
  width: 16px;
  height: 16px;
}

/* Full-page link */
.modal-fullpage {
  display: block;
  text-align: center;
  padding: var(--space-3) 0 var(--space-2);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-faint);
  text-decoration: none;
  transition: color var(--transition-interactive);
}
.modal-fullpage:hover {
  color: var(--color-primary);
}

/* ---- Mobile modal (slide-up) ---- */
@media (max-width: 767px) {
  .comic-modal-backdrop {
    align-items: flex-end;
  }
  .comic-modal {
    width: 100%;
    max-height: 96vh;
    border-radius: var(--radius-xl) var(--radius-xl) 0 0;
    transform: translateY(100%);
    transition: transform 350ms var(--ease-golden);
  }
  .comic-modal-backdrop.open .comic-modal {
    transform: translateY(0);
  }
  /* Swipe handle */
  .modal-swipe-handle {
    display: flex;
    justify-content: center;
    padding: var(--space-3) 0 var(--space-1);
    cursor: grab;
  }
  .modal-swipe-handle::after {
    content: '';
    width: 36px;
    height: 4px;
    border-radius: var(--radius-full);
    background: var(--color-surface-dynamic);
  }
  .modal-nav {
    display: none;
  }
  .modal-panels {
    grid-template-columns: 1fr;
    gap: var(--space-2);
    padding: var(--space-3);
  }
  .modal-panel {
    aspect-ratio: 16 / 10;
  }
}
@media (min-width: 768px) {
  .modal-swipe-handle {
    display: none;
  }
}

/* Infinite scroll loader */
.scroll-loader {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--space-8) var(--space-4) var(--space-12);
  gap: var(--space-3);
}
.scroll-loader-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid var(--color-border);
  border-top-color: var(--color-primary);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}
.scroll-loader-text {
  font-size: var(--text-sm);
  color: var(--color-text-muted);
  font-weight: 500;
}
.scroll-loader.hidden {
  display: none;
}
.scroll-end {
  text-align: center;
  padding: var(--space-8) var(--space-4) var(--space-12);
  font-size: var(--text-sm);
  color: var(--color-text-faint);
  display: none;
}
.scroll-end.visible {
  display: block;
}
