/*
Theme Name: I Heart Fans
Theme URI: https://iheartfans.me
Author: John Pernock
Description: Custom dark theme for iheartfans.me
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 8.0
License: Private
Text Domain: iheartfans
*/

/* ─── Reset & Base ─────────────────────────────────────────────────────────── */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg:        #0f0f0f;
  --surface:   #1a1a1a;
  --surface-2: #222222;
  --border:    #2a2a2a;
  --text:      #c8c8c8;
  --muted:     #888888;
  --heading:   #f0f0f0;
  --accent:    #3b8ef3;
  --accent-h:  #5fa3f5;
  --nav-bg:    rgba(15,15,15,.94);
  --font:      'Poppins', sans-serif;
  --nav-h:     64px;
  --max-w:     1100px;
}


html[data-theme="light"] {
  --nav-bg:    rgba(245,245,245,.96);
  --bg:        #f5f5f5;
  --surface:   #ffffff;
  --surface-2: #efefef;
  --border:    #dedede;
  --text:      #444444;
  --muted:     #777777;
  --heading:   #111111;
  --accent:    #2a7de0;
  --accent-h:  #1a6dcf;
}

html { font-size: 15px; scroll-behavior: smooth; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  font-weight: 400;
  line-height: 1.75;
  min-height: 100vh;
  padding-top: var(--nav-h);
}

img { max-width: 100%; height: auto; display: block; }
a { color: var(--accent); text-decoration: none; transition: color .2s; }
a:hover { color: var(--accent-h); }

h1, h2, h3, h4, h5, h6 { color: var(--heading); font-weight: 600; line-height: 1.3; }
h1 { font-size: 2rem; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.2rem; }

p { margin-bottom: 1.25rem; }
p:last-child { margin-bottom: 0; }

/* ─── Nav ──────────────────────────────────────────────────────────────────── */

.site-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: var(--nav-h);
  background: var(--nav-bg);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: 0 2.5rem;
  z-index: 200;
}

.nav-brand {
  display: flex; align-items: center; gap: .75rem;
  text-decoration: none; color: inherit;
}

.nav-logo { width: 34px; height: 34px; flex-shrink: 0; }
.nav-logo svg { width: 34px; height: 34px; }
.custom-logo-link { display: flex; align-items: center; }
.custom-logo { max-height: 36px; max-width: 140px; width: auto; height: auto; display: block; }

.nav-brand-name { font-size: 1rem; font-weight: 700; color: var(--heading); white-space: nowrap; }
.nav-brand-name span { color: var(--accent); }

/* Primary menu */
.nav-menu {
  display: flex; align-items: center; gap: .15rem;
  list-style: none; margin: 0 0 0 auto; padding: 0;
}

.nav-menu > li { position: relative; }

.nav-menu > li > a {
  display: block;
  padding: .45rem .9rem; border-radius: 6px;
  font-size: .84rem; font-weight: 500;
  color: var(--muted); text-decoration: none;
  transition: background .2s, color .2s;
  white-space: nowrap;
}

.nav-menu > li > a:hover              { background: var(--surface); color: var(--heading); }
.nav-menu > li.current-menu-item > a,
.nav-menu > li.current-menu-ancestor > a,
.nav-menu > li.current_page_item > a  { color: var(--accent); background: rgba(59,142,243,.08); }

/* Dropdown */
.nav-menu .sub-menu {
  display: none;
  position: absolute; top: calc(100% + 6px); left: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  min-width: 210px;
  padding: .5rem;
  list-style: none;
  z-index: 100;
  box-shadow: 0 8px 24px rgba(0,0,0,.4);
}

.nav-menu li:hover > .sub-menu { display: block; }

/* Bridge the gap between nav item and dropdown so hover isn't lost */
.nav-menu > li.menu-item-has-children::before {
  content: '';
  position: absolute;
  bottom: -6px; left: 0;
  width: 100%; height: 6px;
}

.nav-menu .sub-menu li a {
  display: block;
  padding: .5rem .85rem;
  border-radius: 6px;
  font-size: .83rem;
  color: var(--text);
  transition: background .2s, color .2s;
}

.nav-menu .sub-menu li a:hover { background: var(--surface-2); color: var(--accent); }

/* Has children indicator */
.nav-menu > li.menu-item-has-children > a::after {
  content: ' ▾';
  font-size: .6rem;
  opacity: .6;
  margin-left: 2px;
}

/* Submit button style */
.nav-menu > li.menu-item-submit > a {
  color: var(--accent);
  border: 1px solid rgba(59,142,243,.35);
  border-radius: 6px;
}
.nav-menu > li.menu-item-submit > a:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

.nav-toggle,
.theme-toggle {
  background: none; border: 1px solid var(--border);
  border-radius: 6px; color: var(--heading);
  width: 38px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; flex-shrink: 0;
}
.nav-toggle { display: none; }
.theme-toggle:hover { border-color: var(--accent); color: var(--accent); }

/* Icon visibility controlled by data-theme */
.icon-sun  { display: none; }
.icon-moon { display: block; }
html[data-theme="light"] .icon-sun  { display: block; }
html[data-theme="light"] .icon-moon { display: none; }

/* Admin bar offset */
.admin-bar .site-nav { top: 32px; }
@media screen and (max-width: 782px) {
  .admin-bar .site-nav { top: 46px; }
}

/* ─── Breadcrumbs ──────────────────────────────────────────────────────────── */

.breadcrumbs {
  max-width: var(--max-w); margin: 0 auto;
  padding: 1.25rem 2.5rem .5rem;
  display: flex; align-items: center; gap: .5rem;
  font-size: .78rem; color: var(--muted); flex-wrap: wrap;
}

.breadcrumbs a { color: var(--muted); }
.breadcrumbs a:hover { color: var(--accent); }
.breadcrumbs .sep { color: var(--border); }
.breadcrumbs .current { color: var(--text); }

/* ─── Page Header ──────────────────────────────────────────────────────────── */

.pg-head {
  max-width: var(--max-w); margin: 0 auto;
  padding: 1.5rem 2.5rem 2rem;
  border-bottom: 1px solid var(--border);
  margin-bottom: 2.5rem;
  display: flex; flex-wrap: wrap; align-items: center;
  justify-content: space-between; gap: .3rem 1rem;
}
.pg-count-badge {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 20px; padding: .35rem .9rem;
  font-size: .8rem; color: var(--muted); white-space: nowrap; flex-shrink: 0;
}

.pg-title { font-size: 1.85rem; flex: 1 1 auto; }
.pg-sub   { color: var(--muted); font-size: .88rem; flex: 0 0 100%; margin-top: .1rem; }

/* ─── Homepage Hero ────────────────────────────────────────────────────────── */

.hero {
  border-bottom: 1px solid var(--border);
  padding: 4rem 2.5rem;
  max-width: var(--max-w); margin: 0 auto;
}

.hero-label {
  font-size: .7rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--accent); margin-bottom: .75rem;
}

.hero-title {
  font-size: 2.6rem; font-weight: 700;
  color: var(--heading); line-height: 1.15;
  max-width: 680px; margin-bottom: .75rem;
}

.hero-sub {
  font-size: 1rem; color: var(--muted);
  max-width: 560px; margin-bottom: 2rem; line-height: 1.7;
}

.hero-actions { display: flex; gap: .75rem; flex-wrap: wrap; }

/* ─── Buttons ──────────────────────────────────────────────────────────────── */

.btn {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .6rem 1.25rem; border-radius: 6px;
  font-size: .84rem; font-weight: 600; font-family: var(--font);
  cursor: pointer; border: 1.5px solid transparent;
  text-decoration: none; transition: all .2s;
}

.btn-primary { background: var(--accent); color: #fff; border-color: var(--accent); }
.btn-primary:hover { background: var(--accent-h); color: #fff; border-color: var(--accent-h); }
.btn-outline { background: transparent; color: var(--text); border-color: var(--border); }
.btn-outline:hover { border-color: var(--accent); color: var(--accent); }

/* ─── Stats Bar ────────────────────────────────────────────────────────────── */

.stats-bar {
  max-width: var(--max-w); margin: 0 auto;
  padding: 1.5rem 2.5rem;
  display: flex; gap: 3rem; flex-wrap: wrap;
  border-bottom: 1px solid var(--border);
}

.stat-num   { font-size: 1.6rem; font-weight: 700; color: var(--heading); line-height: 1; }
.stat-label { font-size: .75rem; color: var(--muted); margin-top: .2rem; }

/* ─── Site Notice ──────────────────────────────────────────────────────────── */

.site-notice {
  max-width: var(--max-w); margin: 0 auto;
  padding: .85rem 2.5rem;
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: .75rem;
  font-size: .82rem; color: var(--text);
}

.site-notice-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--accent); flex-shrink: 0;
}

/* ─── Sections ─────────────────────────────────────────────────────────────── */

.section {
  max-width: var(--max-w); margin: 0 auto;
  padding: 2.5rem 2.5rem;
  border-top: 1px solid var(--border);
}

.sec-label {
  font-size: .7rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 1.2rem;
}

.sec-head {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 1.2rem;
}

.sec-head .sec-label { margin-bottom: 0; }
.sec-head a { font-size: .78rem; color: var(--muted); }
.sec-head a:hover { color: var(--accent); }

/* ─── Instagram Strip ──────────────────────────────────────────────────────── */

.ig-strip {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 4px;
}

.ig-strip > * { border-radius: 3px; overflow: hidden; }

/* ─── Category Cards ───────────────────────────────────────────────────────── */

.cat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}

.cat-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 8px; padding: 1.5rem;
  transition: border-color .2s;
  display: flex; align-items: center; gap: 1rem;
  text-decoration: none; color: inherit;
}

.cat-card:hover { border-color: var(--accent); color: inherit; }

.cat-icon {
  width: 44px; height: 44px; border-radius: 8px;
  background: rgba(59,142,243,.1);
  display: flex; align-items: center; justify-content: center;
  color: var(--accent); flex-shrink: 0;
}
.cat-icon svg { display: block; }

.cat-name  { font-size: .95rem; font-weight: 600; color: var(--heading); margin-bottom: .15rem; }
.cat-count { font-size: .78rem; color: var(--muted); }
.cat-card:hover .cat-name { color: var(--accent); }

/* ─── Recent Strip ─────────────────────────────────────────────────────────── */

.recent-strip {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1rem;
}

.recent-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden;
  transition: border-color .2s;
  text-decoration: none; color: inherit;
  display: flex; flex-direction: column;
}

.recent-card:hover { border-color: var(--accent); color: inherit; }

.recent-thumb {
  aspect-ratio: 3/4;
  background: var(--surface-2); overflow: hidden;
}

.recent-thumb img { width: 100%; height: 100%; object-fit: cover; }

.recent-body { padding: .65rem .85rem; }
.recent-cat  { font-size: .65rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--accent); margin-bottom: .25rem; }
.recent-title { font-size: .8rem; font-weight: 600; color: var(--heading); line-height: 1.3; }
.recent-card:hover .recent-title { color: var(--accent); }

/* ─── Album Grid ───────────────────────────────────────────────────────────── */

.album-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
}

.album-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden;
  transition: border-color .2s;
  text-decoration: none; color: inherit;
  display: flex; flex-direction: column;
}

.album-card:hover { border-color: var(--accent); color: inherit; }

.album-thumb {
  aspect-ratio: 3/4;
  background: var(--surface-2);
  position: relative; overflow: hidden;
}

.album-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }

.album-year {
  position: absolute; top: .6rem; right: .6rem;
  background: rgba(0,0,0,.8); color: var(--accent);
  font-size: .68rem; font-weight: 700;
  padding: .2rem .55rem; border-radius: 4px;
  letter-spacing: .04em;
}

.album-body {
  padding: .9rem 1rem 0;
  flex: 1; display: flex; flex-direction: column;
}
.album-title:last-child { padding-bottom: .9rem; }
.album-body:not(:has(.album-meta-footer)) { justify-content: center; }
.album-meta-footer {
  display: flex; align-items: center; justify-content: space-between;
  gap: .5rem; margin-top: auto; padding: .4rem 0 .75rem;
  font-size: .74rem; color: var(--muted);
}
.album-count { margin-left: auto; line-height: 1; display: flex; align-items: center; }

.album-title {
  font-size: .88rem; font-weight: 600;
  color: var(--heading); line-height: 1.35;
  margin-bottom: .35rem;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

.album-card:hover .album-title { color: var(--accent); }

.album-contrib {
  font-size: .74rem; color: var(--muted);
  display: flex; align-items: center; gap: .3rem;
  line-height: 1;
}

/* ─── Album Page ───────────────────────────────────────────────────────────── */

.album-header {
  max-width: var(--max-w); margin: 0 auto;
  padding: 1.5rem 2.5rem 2rem;
  border-bottom: 1px solid var(--border);
  margin-bottom: 2rem;
}

.album-header--split {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem;
}
.album-header-left { display: flex; flex-direction: column; }
.album-header--split .album-page-title { margin-bottom: 0; }
.album-header--split .album-meta-item { align-items: flex-end; }

.album-badges {
  display: flex; align-items: center; gap: .6rem;
  flex-wrap: wrap; margin-bottom: .75rem;
}

.badge {
  padding: .25rem .75rem; border-radius: 100px;
  font-size: .72rem; font-weight: 600;
  background: rgba(59,142,243,.1);
  color: var(--accent);
  border: 1px solid rgba(59,142,243,.2);
}

.badge-neutral {
  background: rgba(255,255,255,.04);
  color: var(--muted);
  border-color: var(--border);
}

.album-page-title { font-size: 2rem; margin-bottom: .85rem; line-height: 1.25; }

.album-meta-bar {
  display: flex; align-items: flex-start; gap: 2.5rem;
  flex-wrap: wrap;
}

.album-meta-item { display: flex; flex-direction: column; gap: .1rem; }

.album-meta-label {
  font-size: .65rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
  color: var(--muted);
}

.album-meta-val { font-size: .88rem; color: var(--text); font-weight: 500; }

.album-content-wrap {
  max-width: var(--max-w); margin: 0 auto;
  padding: 0 2.5rem 2rem;
}

.album-notes {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 6px; padding: 1rem 1.25rem;
  font-size: .85rem; color: var(--muted);
  margin-bottom: 1.75rem;
  display: flex; gap: .75rem; align-items: flex-start;
}

.album-footer {
  max-width: var(--max-w); margin: 0 auto;
  padding: 1.5rem 2.5rem 3rem;
  border-top: 1px solid var(--border);
  display: flex; align-items: center;
  justify-content: space-between;
  flex-wrap: wrap; gap: 1rem;
}

.back-link {
  font-size: .83rem; font-weight: 500;
  color: var(--muted);
  display: flex; align-items: center; gap: .4rem;
}

.back-link:hover { color: var(--accent); }

/* ─── Image Gallery Page ───────────────────────────────────────────────────── */

.gallery-wrap {
  max-width: var(--max-w); margin: 0 auto;
  padding: 0 2.5rem 4rem;
}

/* ─── 404 ──────────────────────────────────────────────────────────────────── */

.error-wrap { max-width: var(--max-w); margin: 0 auto; padding: 5rem 2.5rem; }
.error-code  { font-size: 6rem; font-weight: 700; color: var(--border); line-height: 1; margin-bottom: .5rem; }
.error-title { font-size: 1.5rem; margin-bottom: .75rem; }
.error-text  { color: var(--muted); margin-bottom: 1.5rem; }

/* ─── Site Footer ──────────────────────────────────────────────────────────── */

.site-footer {
  border-top: 1px solid var(--border);
  padding: 1.75rem 2.5rem;
  max-width: var(--max-w); margin: 0 auto;
  display: flex; align-items: center;
  justify-content: space-between;
  flex-wrap: wrap; gap: 1rem;
}

.site-footer span { font-size: .76rem; color: var(--muted); }

/* ─── Generic page content ─────────────────────────────────────────────────── */

.page-content { max-width: 720px; }
.page-content p   { color: var(--text); margin-bottom: 1.2rem; }
.page-content h2  { font-size: 1.3rem; margin: 2rem 0 .85rem; }
.page-content h3  { font-size: 1.1rem; margin: 1.5rem 0 .65rem; }
.page-content a   { text-decoration: underline; text-underline-offset: 3px; }
.page-content ul,
.page-content ol  { padding-left: 1.5rem; margin-bottom: 1.25rem; }

/* ─── WP alignment ─────────────────────────────────────────────────────────── */

.alignleft   { float: left; margin: .5rem 1.5rem 1rem 0; }
.alignright  { float: right; margin: .5rem 0 1rem 1.5rem; }
.aligncenter { margin: 1rem auto; display: block; }

/* ─── Responsive ───────────────────────────────────────────────────────────── */

@media (max-width: 1024px) {
  .album-grid { grid-template-columns: repeat(3, 1fr); }
  .recent-strip { grid-template-columns: repeat(4, 1fr); }
  .ig-strip { grid-template-columns: repeat(6, 1fr); }
}

@media (max-width: 860px) {
  /* Mobile menu panel */
  .nav-menu {
    display: none; flex-direction: column; align-items: stretch;
    position: absolute; top: var(--nav-h); left: 0; right: 0;
    background: var(--surface); border-bottom: 1px solid var(--border);
    padding: .5rem 0; gap: 0; z-index: 150;
  }
  .nav-menu.open { display: flex; }

  /* Top-level items — full-width touch targets */
  .nav-menu > li > a {
    display: flex; align-items: center; justify-content: space-between;
    padding: .85rem 1.5rem;
    font-size: 1rem; font-weight: 500;
    color: var(--text); border-radius: 0;
    background: none; min-height: 44px;
  }
  .nav-menu > li > a:hover,
  .nav-menu > li.current-menu-item > a,
  .nav-menu > li.current-menu-ancestor > a { background: var(--surface-2); color: var(--heading); }

  /* Submenu — flat indented list */
  .nav-menu .sub-menu {
    position: static; border: none; box-shadow: none;
    background: none; padding: 0; min-width: 0;
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    margin: 0;
  }
  .nav-menu li:hover > .sub-menu { display: none; }
  .nav-menu li.open > .sub-menu { display: block; }
  .nav-menu .sub-menu li a {
    display: flex; align-items: center;
    padding: .75rem 1.5rem .75rem 2.5rem;
    font-size: .95rem; color: var(--muted);
    min-height: 44px; border-radius: 0;
    background: var(--surface-2);
  }
  .nav-menu .sub-menu li a:hover { color: var(--accent); background: var(--surface-2); }

  /* Chevron on parent items */
  .nav-menu > li.menu-item-has-children > a::after {
    content: '›'; font-size: 1.1rem; color: var(--muted);
    transition: transform .2s; display: inline-block;
  }
  .nav-menu > li.menu-item-has-children.open > a::after { transform: rotate(90deg); }

  /* Submit Photos button — full width on mobile */
  .nav-menu > li.menu-item-submit > a {
    margin: .5rem 1rem; padding: .75rem 1rem;
    border-radius: 6px; min-height: 44px;
    justify-content: center;
  }

  /* Nav icon buttons */
  .nav-toggle { display: flex; margin-left: .4rem; }
  .custom-logo-link,
  .nav-brand { flex: unset; justify-content: unset; }
  .theme-toggle { margin-left: auto; }

  .hero-title { font-size: 1.85rem; }
  .album-grid { grid-template-columns: repeat(2, 1fr); }
  .cat-grid   { grid-template-columns: repeat(2, 1fr); }
  .recent-strip { grid-template-columns: repeat(3, 1fr); }
  .ig-strip { grid-template-columns: repeat(4, 1fr); }
  .stats-bar { gap: 1.5rem; }

  .breadcrumbs, .pg-head, .section, .album-header,
  .album-content-wrap, .album-footer, .gallery-wrap,
  .hero, .stats-bar, .site-footer, .error-wrap,
  .content-wrap { padding-left: 1.5rem; padding-right: 1.5rem; }

  .album-header--split { flex-direction: column; align-items: flex-start; gap: 1rem; }
  .album-header--split .album-page-title { margin-bottom: .85rem; }
  .album-header--split .album-meta-item { align-items: flex-start; }
}

@media (max-width: 640px) {
  .pg-head { flex-direction: column; align-items: flex-start; gap: .5rem; }
  .stats-bar { flex-wrap: wrap; gap: 1rem; }
  .stats-bar > div { flex: 1 1 40%; }
}

@media (max-width: 480px) {
  html { font-size: 14px; }

  .site-nav { padding: 0 1rem; gap: 0; }
  .nav-toggle { margin-left: .4rem; }

  .breadcrumbs, .pg-head, .section, .album-header,
  .album-content-wrap, .album-footer, .gallery-wrap,
  .hero, .stats-bar, .site-footer, .error-wrap,
  .content-wrap { padding-left: 1rem; padding-right: 1rem; }

  .hero-title   { font-size: 1.5rem; }
  .hero-actions { flex-wrap: wrap; gap: .5rem; }
  .hero-actions .btn { flex: 1 1 auto; text-align: center; }

  .stats-bar { flex-wrap: wrap; gap: .75rem; }
  .stats-bar > div { flex: 1 1 40%; }

  .album-grid   { grid-template-columns: repeat(2, 1fr); gap: .5rem; }
  .album-title  { font-size: .8rem; }
  .album-meta-footer { font-size: .65rem; }

  .cat-grid     { grid-template-columns: 1fr; gap: .75rem; }
  .recent-strip { grid-template-columns: repeat(2, 1fr); gap: .5rem; }
  .recent-strip .recent-card:nth-child(n+5) { display: none; }
  .ig-strip     { grid-template-columns: repeat(3, 1fr); }

  .album-meta-bar { flex-direction: row; flex-wrap: wrap; gap: 1rem 1.5rem; }

  .breadcrumbs  { font-size: .7rem; gap: .3rem; }

  .contributor-grid,
  .contributor-team-grid { grid-template-columns: 1fr !important; }

  .modula-album .modula-items .modula-item .figc *,
  .modula-album .modula-items .modula-item figcaption * {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
}

/* ─── Modula overrides ─────────────────────────────────────────────────────── */

/* Item wrapper */
.modula-album .modula-items .modula-item {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
}

/* Caption box — catch all possible Modula class combos */
.modula-album .modula-items .modula-item .figc,
.modula-album .modula-items .modula-item figcaption,
.modula-album .modula-items .modula-item .modula-item-title,
.modula-album .modula-items .modula-item .modula-item-description,
.modula-album .modula-items .modula-item > div:not(.modula-item-content),
.modula-album .modula-items .modula-item > figcaption {
  background: var(--surface) !important;
  border-top: 1px solid var(--border) !important;
  font-family: var(--font) !important;
  padding: .6rem .75rem !important;
}

/* All text inside caption — force dark theme colors */
.modula-album .modula-items .modula-item .figc *,
.modula-album .modula-items .modula-item figcaption *,
.modula-album .modula-items .modula-item > div:not(.modula-item-content) *,
.modula-album .modula-items .modula-item .jtg-title,
.modula-album .modula-items .modula-item h3,
.modula-album .modula-items .modula-item h4 {
  color: var(--heading) !important;
  font-size: .78rem !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Contributor / sent in by — muted color */
.modula-album .modula-items .modula-item .figc p,
.modula-album .modula-items .modula-item figcaption p,
.modula-album .modula-items .modula-item p.description,
.modula-album .modula-items .modula-item .modula-item-description,
.modula-album .modula-items .modula-item > div:not(.modula-item-content) p {
  color: var(--muted) !important;
  font-size: .72rem !important;
  font-weight: 400 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  margin: .2rem 0 0 !important;
}

/* Hide empty caption containers so they don't create space */
.modula-album .modula-items .modula-item .figc:empty,
.modula-album .modula-items .modula-item figcaption:empty,
.modula-album .modula-items .modula-item > div:not(.modula-item-content):empty {
  display: none !important;
}

/* ─── Utilities ────────────────────────────────────────────────────────────── */

.content-wrap {
  max-width: var(--max-w); margin: 0 auto; padding: 0 2.5rem 4rem;
}

.contributor-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem;
}
.contributor-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 8px; padding: 1rem 1.25rem;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem;
}
.contributor-team-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem;
}

@media (max-width: 860px) {
  .contributor-grid, .contributor-team-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ─── Submit Photos page ───────────────────────────────────────────────────── */

.submit-layout {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: 3rem;
  align-items: start;
}

.submit-sidebar { display: flex; flex-direction: column; gap: 1rem; }

.submit-info-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 8px; padding: 1.25rem;
}

.submit-info-label {
  font-size: .7rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--accent); margin-bottom: .85rem;
}

.submit-checklist,
.submit-tips {
  list-style: none; padding: 0;
  display: flex; flex-direction: column; gap: .6rem;
}

.submit-checklist li,
.submit-tips li {
  font-size: .83rem; color: var(--text);
  display: flex; gap: .6rem; align-items: flex-start;
}
.submit-checklist li span { color: var(--accent); flex-shrink: 0; }
.submit-tips li { color: var(--muted); }
.submit-tips li span { flex-shrink: 0; }

@media (max-width: 860px) {
  .submit-layout { grid-template-columns: 1fr; gap: 2rem; }
  .submit-sidebar { order: -1; }
}

/* ─── Contact Form 7 ───────────────────────────────────────────────────────── */

.wpcf7-form { max-width: 640px; }

/* Hide CF7 hidden fields container */
.hidden-fields-container { display: none !important; }

/* Hide CF7 screen reader response */
.wpcf7 .screen-reader-response,
.wpcf7-form .screen-reader-response,
.screen-reader-response,
[class*="screen-reader"] {
  position: absolute !important; width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important; overflow: hidden !important;
  clip: rect(0,0,0,0) !important; white-space: nowrap !important;
  border: 0 !important;
}

.cf7-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;
}

@media (max-width: 480px) {
  .cf7-grid { grid-template-columns: 1fr; }
  .wpcf7-form { max-width: 100%; }
  .wpcf7-form input[type="submit"] { width: 100%; }
  .drop-zone { padding: 1.25rem; }
  .drop-zone-icon { font-size: 1.2rem; }
}

.wpcf7-form p {
  display: flex; flex-direction: column; gap: .4rem;
  margin-bottom: 1.25rem;
}

.wpcf7-form > div,
.wpcf7-form .cf7-grid { margin-bottom: 1.25rem; }

.wpcf7-form label {
  font-size: .72rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted);
}

.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form select,
.wpcf7-form textarea {
  width: 100%;
  background: var(--surface-2); color: var(--text);
  border: 1px solid var(--border); border-radius: 6px;
  padding: .65rem .85rem; font-family: var(--font);
  font-size: .88rem; transition: border-color .2s;
  -webkit-appearance: none;
}

.wpcf7-form select { appearance: none; cursor: pointer; height: 44px; }

.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form select:focus,
.wpcf7-form textarea:focus {
  outline: none; border-color: var(--accent);
}

.wpcf7-form textarea { min-height: 120px; resize: vertical; }

/* File upload rows */
.wpcf7-form .wpcf7-file { width: 100%; }

.wpcf7-form span.wpcf7-form-control-wrap {
  display: flex; flex-direction: column; gap: .4rem;
}

/* Hide native file input — replaced by drop zone */
.wpcf7-form input[type="file"] { display: none; }

/* Drop zone */
.drop-zone {
  background: var(--surface-2); border: 2px dashed var(--border);
  border-radius: 8px; padding: 2rem; text-align: center;
  cursor: pointer; transition: border-color .2s, background .2s;
}
.drop-zone:hover, .drop-zone.drag-over {
  border-color: var(--accent); background: rgba(59,142,243,.05);
}
.drop-zone-icon { font-size: 1.5rem; margin-bottom: .5rem; }
.drop-zone-text { font-size: .88rem; color: var(--text); margin-bottom: .25rem; font-weight: 500; }
.drop-zone-sub { font-size: .76rem; color: var(--muted); }

/* Submit button */
.wpcf7-form input[type="submit"] {
  background: var(--accent); color: #fff;
  border: none; border-radius: 6px;
  padding: .8rem 2rem; font-family: var(--font);
  font-size: .9rem; font-weight: 600; cursor: pointer;
  transition: background .2s; margin-top: 1.5rem;
}
.wpcf7-form input[type="submit"]:hover { background: var(--accent-h); }

/* Validation messages */
.wpcf7-not-valid-tip { color: #e05; font-size: .78rem; margin-top: .2rem; }
.wpcf7-response-output {
  display: none;
  margin-top: 1rem; padding: .75rem 1rem;
  border-radius: 6px; font-size: .85rem; border: none;
}
.wpcf7-mail-sent-ok {
  display: block;
  border: 1px solid #2a9d5c; color: #2a9d5c; background: rgba(42,157,92,.08);
}
.wpcf7-validation-errors {
  display: block;
  border: 1px solid #e05; color: #e05; background: rgba(238,0,85,.08);
}

/* ─── Scrollbar ────────────────────────────────────────────────────────────── */

::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #444; }
