/* =========================
   Reset & base
   ========================= */

*,
*::before,
*::after {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    padding: 0;
}

/* =========================
   Thèmes clair / sombre
   ========================= */

:root {
    /* Thème par défaut = sombre */
    color-scheme: dark;
    --font-main: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

    /* Palette sombre par défaut */
    --bg-color: #111827;
    --bg-alt:   #020617;
    --bg-header:#020617;
    --border:   #1f2937;
    --accent:   #60a5fa;
    --accent-soft: rgba(96, 165, 250, 0.2);
    --text:     #e5e7eb;
    --muted:    #9ca3af;
    --danger:   #f87171;
    --radius:   4px;
    --shadow:   0 2px 8px rgba(0, 0, 0, 0.6);

    /* Nouveaux tokens pour les éléments qui changent beaucoup entre thèmes */
    --input-bg: #020617;
    --table-header-bg: #020617;
    --table-stripe-bg: #111827;
}

/* Si l’utilisateur préfère un thème clair au niveau OS */
@media (prefers-color-scheme: light) {
    :root {
        color-scheme: light;
        /* Thème clair plus gris et moins “blanc vif” */
        --bg-color: #e5e7eb;   /* gris clair */
        --bg-alt:   #f3f4f6;   /* gris très clair */
        --bg-header:#e5e7eb;
        --border:   #cbd5e1;
        --accent:   #3b82f6;
        --accent-soft: rgba(59, 130, 246, 0.12);
        --text:     #0f172a;
        --muted:    #6b7280;
        --danger:   #b91c1c;
        --shadow:   0 1px 5px rgba(15, 23, 42, 0.18);

        --input-bg: #f9fafb;
        --table-header-bg: #e5e7eb;
        --table-stripe-bg: #e5e7eb;
    }
}

/* OVERRIDE explicite via data-theme sur <html>
   (prioritaire sur le thème du système) */

:root[data-theme="dark"] {
    color-scheme: dark;
    --bg-color: #111827;
    --bg-alt:   #020617;
    --bg-header:#020617;
    --border:   #1f2937;
    --accent:   #60a5fa;
    --accent-soft: rgba(96, 165, 250, 0.2);
    --text:     #e5e7eb;
    --muted:    #9ca3af;
    --danger:   #f87171;
    --shadow:   0 2px 8px rgba(0, 0, 0, 0.6);

    --input-bg: #020617;
    --table-header-bg: #020617;
    --table-stripe-bg: #111827;
}

:root[data-theme="light"] {
    color-scheme: light;
    --bg-color: #e5e7eb;
    --bg-alt:   #f3f4f6;
    --bg-header:#e5e7eb;
    --border:   #cbd5e1;
    --accent:   #3b82f6;
    --accent-soft: rgba(59, 130, 246, 0.12);
    --text:     #0f172a;
    --muted:    #6b7280;
    --danger:   #b91c1c;
    --shadow:   0 1px 5px rgba(15, 23, 42, 0.18);

    --input-bg: #f9fafb;
    --table-header-bg: #e5e7eb;
    --table-stripe-bg: #e5e7eb;
}


body {
    background: var(--bg-color);
    color: var(--text);
    font-family: var(--font-main);
    line-height: 1.5;
    min-height: 100vh;
}

/* Conteneur principal*/
main,
.content {
    max-width: 1500px;
    margin: 1.5rem auto;
    padding: 0 1rem 2rem;
}

/* =========================
   Liens & typographie
   ========================= */

/* Liens : thème clair */
:root[data-theme="light"] a,
:root[data-theme="light"] a:visited {
    color: #2563eb; /* bleu lisible */
    text-decoration: none;
}

:root[data-theme="light"] a:hover,
:root[data-theme="light"] a:focus-visible {
    color: #1d4ed8;           /* bleu un peu plus foncé au survol */
    text-decoration: underline;
}

/* Liens : thème sombre */
:root[data-theme="dark"] a,
:root[data-theme="dark"] a:visited {
    color: #93c5fd; /* bleu clair */
    text-decoration: none;
}

:root[data-theme="dark"] a:hover,
:root[data-theme="dark"] a:focus-visible {
    color: #ffffff;
    text-decoration: underline;
}

h1, h2, h3, h4 {
    color: var(--text);
    margin-top: 0;
    margin-bottom: 0.75rem;
    font-weight: 600;
}

.scene{
    scroll-margin-top: 60px;
}

p {
    margin: 0 0 0.75rem;
    color: var(--text);
}

small,
.muted {
    color: var(--muted);
    font-size: 0.85rem;
}

/* =========================
   Header & navigation
   ========================= */

/* Header toujours en haut, sobre et sombre */

header {
    position: sticky;        /* reste en haut au scroll */
    top: 0;
    z-index: 100;
    background: var(--bg-header);
    box-shadow: var(--shadow);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 1.25rem;
    gap: 0.75rem;
}

/* Liens du header (par défaut : tous les <a> sauf ceux explicitement stylés) */
header a {
    color: var(--text);
    font-weight: 500;
    margin-right: 0.8rem;
    white-space: nowrap;
}

header a:last-child {
    margin-right: 0;
}

header a:hover,
header a:focus {
    color: var(--accent);
}

/* Le formulaire de déconnexion est normalement le dernier enfant du header.
   On le pousse à droite pour qu'il soit à l'opposé des autres liens. */
header form {
    margin-left: auto;
}

/* Bouton de déconnexion */
header button,
button,
input[type="submit"],
input[type="button"] {
    background: transparent;
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 0.35rem 0.8rem;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.9rem;
    transition: background-color 0.15s ease, border-color 0.15s ease,
                color 0.15s ease, transform 0.05s ease;
}

header button:hover,
button:hover,
input[type="submit"]:hover,
input[type="button"]:hover {
    background: var(--accent-soft);
    border-color: var(--accent);
    transform: translateY(-1px);
}

/* Variante "dangereux" pour la déconnexion (optionnel si tu veux le différencier) */
header form button {
    border-color: var(--danger);
}

header form button:hover {
    background: var(--danger);
    color: #fff;
}

/* Bouton de changement de thème dans le header */
.theme-toggle {
    padding: 0.25rem 0.6rem;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: var(--bg-alt);
    color: var(--text);
    font-size: 0.8rem;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    cursor: pointer;
    transition: background-color 0.15s ease,
                border-color 0.15s ease,
                color 0.15s ease,
                transform 0.05s ease;
}

.theme-toggle:hover {
    background: var(--accent-soft);
    border-color: var(--accent);
    transform: translateY(-1px);
}

/* Petit point indicateur */
.theme-toggle-indicator {
    width: 10px;
    height: 10px;
    border-radius: 999px;
    background: var(--accent);
}

/* Pour réduire un peu sur mobile */
@media (max-width: 700px) {
    .theme-toggle span.theme-toggle-label {
        display: none; /* ne garder que le rond indicateur sur petit écran */
    }
}

/* --- Thème sombre explicite --- */
:root[data-theme="dark"] .theme-toggle {
    border-color: #1f2937;
    background: #020617;
    color: #e5e7eb;
}

:root[data-theme="dark"] .theme-toggle-indicator {
    background: #60a5fa; /* bleu vif */
}

/* --- Thème clair explicite --- */
:root[data-theme="light"] .theme-toggle {
    border-color: #3b82f6;
    background: #e5e7eb;
    color: #0f172a;
}

:root[data-theme="light"] .theme-toggle-indicator {
    background: #facc15; /* jaune soleil */
}

/* =========================
   Layout générique
   ========================= */

.page-wrapper {
    max-width: 1100px;
    margin: 1.5rem auto;
    padding: 0 1rem 2rem;
}

/* Centrage des pages 400  */
.page-400 {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
}

/* =========================
   Tables
   ========================= */

table {
    width: 100%;
    border-collapse: collapse;
    background: var(--bg-alt);
    color: var(--text);
    margin-bottom: 1.5rem;
    font-size: 0.9rem;
}

th, td {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--border);       /* ne supprime pas les border="1" HTML */
    vertical-align: top;
}

th {
    background: var(--table-header-bg);  /* s’adapte au thème */
    font-weight: 600;
}

/* Zébrage pour lisibilité (ne s’applique qu’aux lignes de données) */
tbody tr:nth-child(even) {
    background: var(--table-stripe-bg);  /* s’adapte au thème */
}

/* Wrapper pour les tableaux très larges :
   Dans tes templates, tu peux entourer les <table> d’un <div class="table-container"> */
.table-container {
    width: 100%;
    overflow-x: auto;
}

/* =========================
   Formulaires & champs
   ========================= */

label {
    display: block;
    margin-bottom: 0.25rem;
    font-weight: 500;
}

input[type="text"],
input[type="email"],
input[type="number"],
input[type="password"],
input[type="search"],
select,
textarea {
    width: 100%;
    max-width: 100%;
    padding: 0.4rem 0.55rem;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: var(--input-bg);  /* <--- utilise la variable de thème */
    color: var(--text);
    font-family: inherit;
    font-size: 0.9rem;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease,
                background-color 0.15s ease;
    margin-bottom: 0.7rem;
}

input:focus,
select:focus,
textarea:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px var(--accent-soft);
}

/* Boutons primaires (si tu veux en distinguer) */
.btn-primary {
    background: var(--accent);
    color: #000;
    border-color: var(--accent);
}

.btn-primary:hover {
    background: #74c0fc;
}

/* =========================
   Page d’édition (editer.html)
   ========================= */

/* Le tableau contenant la colonne d’explication et la colonne d’exemple */
#oeuvre-form > table {
    width: 100%;
    background: var(--bg-alt);
}

/* Réduire légèrement l’espace dans cette table pour que ça passe mieux sur mobile */
#oeuvre-form > table td {
    border-color: var(--border);
}

/* =========================
   Page d'analyse (analyser.html)
   ========================= */

h1 + p {
    margin-top: -0.25rem;
    color: var(--muted);
}

/* =========================
   Responsivité & menu burger
   ========================= */

/* Option : si tu modifies les templates pour ajouter les classes ci-dessous.
   Elles n’auront pas d’effet négatif si elles ne sont pas présentes. */

/* Conteneur des liens à gauche */
.nav-left {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

/* Conteneur spécifique pour le bloc déconnexion, si tu veux l’isoler */
.nav-right {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Burger caché en grand écran */
.burger-toggle {
    display: none;
}

/* Icône burger (label lié au checkbox) */
.burger-label {
    display: none;
    cursor: pointer;
    padding: 0.25rem 0.4rem;
    border-radius: var(--radius);
    border: 1px solid transparent;
}

.burger-label span {
    display: block;
    width: 20px;
    height: 2px;
    background: var(--text);
    margin: 4px 0;
    transition: transform 0.15s ease, opacity 0.15s ease;
}

/* Layout spécifique pour la page d'affichage :
   sommaire à gauche, personnages à droite */
.layout-sommaire-personnages {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 2rem;
}

.layout-sommaire-personnages .sommaire {
    flex: 2;
    margin-bottom: 0; /* déjà géré par le parent */
}

.layout-sommaire-personnages .personnages-list {
    flex: 1.2;
    background: var(--bg-alt);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 0.9rem 1.1rem;
    box-shadow: var(--shadow);
}

.personnages-list {
    min-width: 45%;
}

.personnages-list h2 {
    margin-top: 0;
    margin-bottom: 0.6rem;
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--muted);
}

.personnages-list ul {
    list-style: none;
    padding-left: 0;
    margin: 0;
}

.personnages-list li + li {
    margin-top: 0.25rem;
}

.personnage-item ul{
    list-style-type: none;
    margin-left: 30px;
}


/* =========================
   Media queries
   ========================= */

@media (max-width: 900px) {
    main,
    .content,
    .page-wrapper {
        padding: 0 0.75rem 1.5rem;
    }
    .layout-sommaire-personnages {
        flex-direction: column;
    }
    th, td{
        padding:0.5rem 0rem;
    }
    .th-fin{
        display: none;
    }
    .td-fin{
        width:10px;
    }

}

@media (max-width: 700px) {
    header {
        flex-wrap: wrap;
        padding-inline: 0.75rem;
    }

    /* Activation du burger :
       - on masque les liens de nav
       - les liens ne s’afficheront que lorsque la checkbox .burger-toggle est cochée
       (si tu implémentes cette structure dans tes templates) */
    .burger-label {
        display: block;
    }

    .nav-left {
        display: none;
        flex-direction: column;
        align-items: flex-start;
        width: 100%;
        margin-top: 0.5rem;
        padding-top: 0.5rem;
        border-top: 1px solid var(--border);
        gap: 0.4rem;
    }

    /* Quand le checkbox est coché, on affiche le menu */
    .burger-toggle:checked ~ .nav-left {
        display: flex;
    }

    /* Sur petit écran, on ne force pas le bouton de déconnexion à être au bout :
       il peut être dans le menu burger. */
    header form {
        margin-left: 0;
    }

    /* Tables : autoriser un scroll horizontal plus naturellement */
    .table-container {
        -webkit-overflow-scrolling: touch;
    }
}