/*
Theme Name: DesignLuminy
Theme URI: https://github.com/designluminy
Author: DesignLuminy
Description: Thème WordPress minimal et éditorial. Typographie granulaire, couleurs et mise en page configurables.
Version: 1.2.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: designluminy
Tags: blog, minimal, editorial, magazine, customizable
*/

/* =========================================================
   VARIABLES CSS — injectées dynamiquement par le thème
   Valeurs par défaut
   ========================================================= */
:root {
  /* Couleurs */
  --color-bg:         #ffffff;
  --color-text:       #1a1a1a;
  --color-muted:      #767676;
  --color-accent:     #B89A45;
  --color-link:       #1a1a1a;
  --color-link-hover: #B89A45;
  --color-header-bg:  #ffffff;
  --color-footer-bg:  #ffffff;

  /* Mise en page */
  --content-width:  720px;
  --wide-width:     1100px;
  --header-height:  64px;
  --spacing-xs:     0.5rem;
  --spacing-sm:     1rem;
  --spacing-md:     2rem;
  --spacing-lg:     3rem;
  --spacing-xl:     5rem;

  /* ── Typographie : chaque rôle a ses propres variables ── */

  /* Corps (paragraphes, listes, blockquote) */
  --dl-body-family:   'Bodoni Moda', Georgia, serif;
  --dl-body-weight:   400;
  --dl-body-style:    normal;
  --dl-body-variant:  normal;
  --dl-body-size:     18px;
  --dl-body-lh:       1.7;

  /* Titres H1 */
  --dl-h1-family:     'Bodoni Moda', Georgia, serif;
  --dl-h1-weight:     700;
  --dl-h1-style:      normal;
  --dl-h1-variant:    normal;
  --dl-h1-size:       2.2rem;

  /* Titres H2 */
  --dl-h2-family:     'Bodoni Moda', Georgia, serif;
  --dl-h2-weight:     700;
  --dl-h2-style:      normal;
  --dl-h2-variant:    normal;
  --dl-h2-size:       1.4rem;

  /* Titres H3 */
  --dl-h3-family:     'Bodoni Moda', Georgia, serif;
  --dl-h3-weight:     700;
  --dl-h3-style:      normal;
  --dl-h3-variant:    normal;
  --dl-h3-size:       1.15rem;

  /* Titres H4–H6 */
  --dl-h4-family:     'Bodoni Moda', Georgia, serif;
  --dl-h4-weight:     700;
  --dl-h4-style:      normal;
  --dl-h4-size:       1rem;

  /* Navigation (menus) */
  --dl-nav-family:    system-ui, -apple-system, Arial, sans-serif;
  --dl-nav-weight:    400;
  --dl-nav-style:     normal;
  --dl-nav-size:      14px;

  /* Titre du site */
  --dl-site-title-family:  'Bodoni Moda', Georgia, serif;
  --dl-site-title-weight:  700;
  --dl-site-title-style:   normal;
  --dl-site-title-size:    1.2rem;

  /* Description du site */
  --dl-site-desc-family:   system-ui, -apple-system, Arial, sans-serif;
  --dl-site-desc-weight:   400;
  --dl-site-desc-style:    normal;
  --dl-site-desc-size:     12px;

  /* Méta (date, auteur, catégorie) */
  --dl-meta-family:   system-ui, -apple-system, Arial, sans-serif;
  --dl-meta-weight:   400;
  --dl-meta-style:    normal;
  --dl-meta-size:     12px;

  /* Extrait (excerpt) */
  --dl-excerpt-family:  'Bodoni Moda', Georgia, serif;
  --dl-excerpt-weight:  400;
  --dl-excerpt-style:   normal;
  --dl-excerpt-size:    0.9rem;

  /* Légendes (figcaption) */
  --dl-caption-family:  system-ui, -apple-system, Arial, sans-serif;
  --dl-caption-weight:  400;
  --dl-caption-style:   italic;
  --dl-caption-size:    12px;

  /* Pied de page */
  --dl-footer-family:   system-ui, -apple-system, Arial, sans-serif;
  --dl-footer-weight:   400;
  --dl-footer-style:    normal;
  --dl-footer-size:     12px;

  /* Widgets / sidebar */
  --dl-widget-family:   system-ui, -apple-system, Arial, sans-serif;
  --dl-widget-weight:   400;
  --dl-widget-style:    normal;
  --dl-widget-size:     14px;

  /* Lire la suite / boutons */
  --dl-btn-family:    system-ui, -apple-system, Arial, sans-serif;
  --dl-btn-weight:    600;
  --dl-btn-style:     normal;
  --dl-btn-size:      12px;
}

/* =========================================================
   RESET & BASE
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { font-size: var(--dl-body-size); scroll-behavior: smooth; }

body {
  background-color: var(--color-bg);
  color: var(--color-text);
  font-family: var(--dl-body-family);
  font-weight: var(--dl-body-weight);
  font-style: var(--dl-body-style);
  font-variant: var(--dl-body-variant);
  line-height: var(--dl-body-lh);
  -webkit-font-smoothing: antialiased;
}

img, video { max-width: 100%; height: auto; display: block; }

a { color: var(--color-link); text-decoration: none; transition: color 0.15s ease; }
a:hover { color: var(--color-link-hover); }

/* ── Titres globaux ── */
h1 {
  font-family: var(--dl-h1-family);
  font-weight: var(--dl-h1-weight);
  font-style: var(--dl-h1-style);
  font-variant: var(--dl-h1-variant);
  font-size: var(--dl-h1-size);
  line-height: 1.2;
}
h2 {
  font-family: var(--dl-h2-family);
  font-weight: var(--dl-h2-weight);
  font-style: var(--dl-h2-style);
  font-variant: var(--dl-h2-variant);
  font-size: var(--dl-h2-size);
  line-height: 1.3;
}
h3 {
  font-family: var(--dl-h3-family);
  font-weight: var(--dl-h3-weight);
  font-style: var(--dl-h3-style);
  font-variant: var(--dl-h3-variant);
  font-size: var(--dl-h3-size);
  line-height: 1.35;
}
h4, h5, h6 {
  font-family: var(--dl-h4-family);
  font-weight: var(--dl-h4-weight);
  font-style: var(--dl-h4-style);
  font-size: var(--dl-h4-size);
  line-height: 1.4;
}

figcaption {
  font-family: var(--dl-caption-family);
  font-weight: var(--dl-caption-weight);
  font-style: var(--dl-caption-style);
  font-size: var(--dl-caption-size);
  color: var(--color-muted);
  text-align: center;
  margin-top: 0.5rem;
}

/* =========================================================
   LAYOUT
   ========================================================= */
.site { display: flex; flex-direction: column; min-height: 100vh; }
.site-main { flex: 1; }

.container {
  width: 100%;
  max-width: var(--wide-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}

.content-area {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}

/* =========================================================
   EN-TÊTE
   ========================================================= */
.site-header {
  background-color: var(--color-header-bg);
  position: sticky;
  top: 0;
  z-index: 100;
}

.site-header .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: var(--header-height);
  gap: var(--spacing-md);
}

.site-branding { flex-shrink: 0; }

.site-title {
  font-family: var(--dl-site-title-family);
  font-weight: var(--dl-site-title-weight);
  font-style: var(--dl-site-title-style);
  font-size: var(--dl-site-title-size);
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.site-title a { color: var(--color-text); }
.site-title a:hover { color: var(--color-accent); }

.site-description {
  font-family: var(--dl-site-desc-family);
  font-weight: var(--dl-site-desc-weight);
  font-style: var(--dl-site-desc-style);
  font-size: var(--dl-site-desc-size);
  color: var(--color-muted);
  margin-top: 2px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

/* =========================================================
   NAVIGATION
   ========================================================= */
.main-navigation { display: flex; align-items: center; }

.main-navigation ul { display: flex; list-style: none; flex-wrap: wrap; }
.main-navigation ul li { position: relative; }

.main-navigation ul li a,
.main-navigation ul ul li a {
  display: block;
  padding: 0.2rem 0.75rem;
  font-family: var(--dl-nav-family);
  font-weight: var(--dl-nav-weight);
  font-style: var(--dl-nav-style);
  font-size: var(--dl-nav-size);
  color: var(--color-text);
  transition: color 0.15s;
  white-space: nowrap;
}

.main-navigation ul li a:hover,
.main-navigation ul li.current-menu-item > a,
.main-navigation ul li.current-menu-ancestor > a { color: var(--color-accent); }

.main-navigation ul ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: var(--color-bg);
  min-width: 200px;
  z-index: 200;
  flex-direction: column;
  box-shadow: 0 8px 24px rgba(0,0,0,.10);
}
.main-navigation ul li:hover > ul,
.main-navigation ul li:focus-within > ul { display: flex; }

.main-navigation ul li.menu-item-has-children > a::after {
  content: ' ▾';
  font-size: 0.7em;
  opacity: 0.6;
}

.menu-toggle {
  display: none;
  background: none;
  border: none;
  padding: 0.4rem 0.75rem;
  cursor: pointer;
  font-family: var(--dl-nav-family);
  font-size: var(--dl-nav-size);
  color: var(--color-text);
}

/* =========================================================
   RECHERCHE HEADER
   ========================================================= */
.header-search { display: flex; align-items: center; }
.header-search form { display: flex; align-items: center; gap: 0.25rem; }
.header-search input[type="search"] {
  border: none;
  border-bottom: 1px solid var(--color-muted);
  padding: 0.3rem 0.6rem;
  font-family: var(--dl-nav-family);
  font-size: var(--dl-nav-size);
  width: 160px;
  outline: none;
  background: transparent;
}
.header-search button {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0.3rem;
  color: var(--color-muted);
}

/* =========================================================
   BLOG — GRILLE MAGAZINE
   ========================================================= */
.blog-layout { padding: var(--spacing-lg) 0; }

.posts-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--spacing-lg) var(--spacing-md);
  max-width: var(--wide-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}

.post-card {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding-bottom: var(--spacing-md);
}


/* Miniature */
.post-thumbnail { overflow: hidden; aspect-ratio: 16/9; background: #f0f0f0; }
.post-thumbnail img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
.post-card:hover .post-thumbnail img { transform: scale(1.02); }

/* Méta */
.post-meta {
  font-family: var(--dl-meta-family);
  font-weight: var(--dl-meta-weight);
  font-style: var(--dl-meta-style);
  font-size: var(--dl-meta-size);
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}
.post-meta .sep { opacity: 0.4; }
.post-categories a { color: var(--color-accent); font-weight: 600; }
.post-categories a:hover { text-decoration: underline; }

/* Titre d'article (dans la liste) */
.entry-title {
  font-family: var(--dl-h2-family);
  font-weight: var(--dl-h2-weight);
  font-style: var(--dl-h2-style);
  font-variant: var(--dl-h2-variant);
  font-size: 1.15rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
}
.entry-title a { color: var(--color-text); }
.entry-title a:hover { color: var(--color-accent); }

/* Extrait */
.entry-summary {
  font-family: var(--dl-excerpt-family);
  font-weight: var(--dl-excerpt-weight);
  font-style: var(--dl-excerpt-style);
  font-size: var(--dl-excerpt-size);
  color: var(--color-muted);
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Lire la suite */
.read-more {
  font-family: var(--dl-btn-family);
  font-weight: var(--dl-btn-weight);
  font-style: var(--dl-btn-style);
  font-size: var(--dl-btn-size);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-accent);
  align-self: flex-start;
}
.read-more:hover { text-decoration: underline; }

/* =========================================================
   ARTICLE SIMPLE
   ========================================================= */
.single-post { padding: var(--spacing-lg) 0; }
.single-post .entry-header { margin-bottom: var(--spacing-md); }

.single-post .entry-title {
  font-family: var(--dl-h1-family);
  font-weight: var(--dl-h1-weight);
  font-style: var(--dl-h1-style);
  font-variant: var(--dl-h1-variant);
  font-size: clamp(1.5rem, 3vw, var(--dl-h1-size));
  line-height: 1.2;
  margin-bottom: var(--spacing-sm);
}

.single-post .featured-image { margin-bottom: var(--spacing-md); }
.single-post .featured-image img { width: 100%; }

.entry-content {
  font-family: var(--dl-body-family);
  font-weight: var(--dl-body-weight);
  font-style: var(--dl-body-style);
  font-size: 1rem;
  line-height: var(--dl-body-lh);
}
.entry-content > * + * { margin-top: 1.4em; }

.entry-content h1 {
  font-family: var(--dl-h1-family); font-weight: var(--dl-h1-weight);
  font-style: var(--dl-h1-style); font-size: var(--dl-h1-size);
  margin-top: 2em;
}
.entry-content h2 {
  font-family: var(--dl-h2-family); font-weight: var(--dl-h2-weight);
  font-style: var(--dl-h2-style); font-size: var(--dl-h2-size);
  margin-top: 2em;
}
.entry-content h3 {
  font-family: var(--dl-h3-family); font-weight: var(--dl-h3-weight);
  font-style: var(--dl-h3-style); font-size: var(--dl-h3-size);
  margin-top: 1.8em;
}
.entry-content h4, .entry-content h5, .entry-content h6 {
  font-family: var(--dl-h4-family); font-weight: var(--dl-h4-weight);
  font-size: var(--dl-h4-size); margin-top: 1.6em;
}

.entry-content p { margin-bottom: 0; }
.entry-content ul, .entry-content ol { padding-left: 1.4em; }
.entry-content blockquote {
  padding-left: 1.2em;
  font-style: italic;
  color: var(--color-muted);
}
.entry-content a { color: var(--color-accent); text-decoration: underline; }
.entry-content img { width: 100%; height: auto; margin: var(--spacing-md) 0; }
.entry-content figure { margin: var(--spacing-md) 0; }

/* Galeries WordPress */
.gallery { display: grid; gap: 8px; margin: var(--spacing-md) 0; }
.gallery-columns-2 { grid-template-columns: repeat(2, 1fr); }
.gallery-columns-3 { grid-template-columns: repeat(3, 1fr); }
.gallery-columns-4 { grid-template-columns: repeat(4, 1fr); }
.gallery-columns-5 { grid-template-columns: repeat(5, 1fr); }
.gallery-columns-6 { grid-template-columns: repeat(6, 1fr); }
.gallery-item { overflow: hidden; }
.gallery-item a { display: block; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; display: block; }
.gallery-item a:hover img { transform: scale(1.03); }
.gallery-caption {
  font-family: var(--dl-caption-family);
  font-size: var(--dl-caption-size);
  color: var(--color-muted);
  font-style: italic;
  text-align: center;
  margin-top: 4px;
}

/* Navigation article */
.post-navigation {
  margin-top: var(--spacing-lg);
  padding-top: var(--spacing-md);
  display: flex;
  justify-content: space-between;
  gap: var(--spacing-md);
}
.post-navigation a {
  font-family: var(--dl-nav-family);
  font-size: var(--dl-nav-size);
  color: var(--color-muted);
}
.post-navigation a:hover { color: var(--color-accent); }
.nav-label {
  display: block;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 0.25rem;
  opacity: 0.6;
}

/* =========================================================
   IMAGE SEULE (image.php — galerie)
   ========================================================= */
.image-attachment { padding: var(--spacing-lg) 0; }

.image-attachment .attachment-image-wrap {
  max-width: var(--wide-width);
  margin: 0 auto var(--spacing-md);
  padding: 0 var(--spacing-md);
}
.image-attachment .attachment-image-wrap img {
  width: 100%;
  height: auto;
  display: block;
}

.image-attachment .image-nav {
  max-width: var(--wide-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.image-attachment .image-nav a {
  font-family: var(--dl-nav-family);
  font-size: var(--dl-nav-size);
  color: var(--color-muted);
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.image-attachment .image-nav a:hover { color: var(--color-accent); }

.image-attachment .image-caption {
  max-width: var(--content-width);
  margin: var(--spacing-sm) auto 0;
  padding: 0 var(--spacing-md);
  font-family: var(--dl-caption-family);
  font-size: var(--dl-caption-size);
  font-style: var(--dl-caption-style);
  color: var(--color-muted);
  text-align: center;
}

.image-attachment .back-to-gallery {
  display: block;
  text-align: center;
  margin-top: var(--spacing-md);
  font-family: var(--dl-btn-family);
  font-size: var(--dl-btn-size);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-accent);
}

/* =========================================================
   PAGE STATIQUE
   ========================================================= */
.page-content { padding: var(--spacing-lg) 0; }
.page-content .entry-title {
  font-family: var(--dl-h1-family);
  font-size: clamp(1.4rem, 3vw, var(--dl-h1-size));
  margin-bottom: var(--spacing-md);
  padding-bottom: var(--spacing-sm);
}

/* =========================================================
   SIDEBAR / WIDGETS
   ========================================================= */
.has-sidebar .site-main {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: var(--spacing-lg);
  max-width: var(--wide-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
  align-items: start;
}
.widget-area { padding-top: var(--spacing-lg); }
.widget { margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-md); }
.widget-title {
  font-family: var(--dl-widget-family);
  font-weight: 600;
  font-size: var(--dl-widget-size);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-muted);
  margin-bottom: var(--spacing-sm);
}
.widget ul { list-style: none; }
.widget ul li { padding: 0.3rem 0; }
.widget ul li a {
  font-family: var(--dl-widget-family);
  font-size: var(--dl-widget-size);
}

/* =========================================================
   PAGINATION
   ========================================================= */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  padding: var(--spacing-lg) 0;
  font-family: var(--dl-nav-family);
  font-size: var(--dl-nav-size);
}
.pagination a, .pagination span { display: inline-block; padding: 0.4rem 0.8rem; color: var(--color-text); transition: color 0.15s; }
.pagination a:hover { color: var(--color-accent); }
.pagination .current { color: var(--color-accent); font-weight: 700; }

/* =========================================================
   PIED DE PAGE
   ========================================================= */
.site-footer {
  background: var(--color-footer-bg);
  padding: var(--spacing-md) 0;
  margin-top: var(--spacing-xl);
}
.site-footer .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-md);
  flex-wrap: wrap;
}
.footer-info {
  font-family: var(--dl-footer-family);
  font-weight: var(--dl-footer-weight);
  font-style: var(--dl-footer-style);
  font-size: var(--dl-footer-size);
  color: var(--color-muted);
}
.footer-nav ul { display: flex; list-style: none; gap: var(--spacing-sm); flex-wrap: wrap; }
.footer-nav ul li a {
  font-family: var(--dl-footer-family);
  font-size: var(--dl-footer-size);
  color: var(--color-muted);
}
.footer-nav ul li a:hover { color: var(--color-accent); }

/* =========================================================
   UTILITAIRES
   ========================================================= */
.screen-reader-text { clip: rect(1px,1px,1px,1px); position:absolute!important; height:1px; width:1px; overflow:hidden; }
.no-results { padding: var(--spacing-xl) 0; text-align: center; }

/* =========================================================
   RESPONSIVE
   ========================================================= */
/* ── Tablette ──────────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
  .posts-grid { grid-template-columns: 1fr; }
  .has-sidebar .site-main { grid-template-columns: 1fr; }
  .gallery-columns-4,
  .gallery-columns-5,
  .gallery-columns-6 { grid-template-columns: repeat(3, 1fr); }
}

/* ── Mobile ────────────────────────────────────────────────────────────────── */
@media (max-width: 600px) {
  :root {
    --dl-body-size: 16px;
    --spacing-md:   1rem;
    --spacing-lg:   1.75rem;
    --spacing-xl:   3rem;
    --header-height: auto;
    --wide-width:   100%;
  }

  /* Header */
  .site-header .container {
    flex-wrap: wrap;
    padding: .6rem 1rem;
    gap: .5rem;
  }
  .site-branding { flex: 1; }
  .menu-toggle { display: block; flex-shrink: 0; }

  /* Navigation déroulante */
  .main-navigation { width: 100%; order: 3; }
  .main-navigation.is-open ul  { display: flex; flex-direction: column; }
  .main-navigation:not(.is-open) ul { display: none; }
  .main-navigation ul li a    { padding: .4rem 0; }
  .main-navigation ul ul      { position: static; box-shadow: none; padding-left: 1rem; }

  /* Recherche */
  .header-search                           { width: 100%; order: 2; }
  .header-search input[type="search"]      { width: 100%; }

  /* Contenu */
  .container,
  .content-area,
  .posts-grid { padding-left: 1rem; padding-right: 1rem; }

  /* Galeries */
  .gallery-columns-2 { grid-template-columns: 1fr; }
  .gallery-columns-3,
  .gallery-columns-4,
  .gallery-columns-5,
  .gallery-columns-6 { grid-template-columns: repeat(2, 1fr); }

  /* Navigation article */
  .post-navigation { flex-direction: column; gap: 1rem; }

  /* Titres */
  .single-post .entry-title { font-size: 1.5rem; }
}
