/* Thème « Kingmaker » : vert Pathfinder (#005924), olive (#6e951c), parchemin et brun des cadres du livre.
   Les variables --rz-* recolorent les composants Radzen (thème standard). */
:root {
    --km-vert: #005924;
    --km-vert-clair: #6e951c;
    --km-parchemin: #f6efdc;
    --km-parchemin-fonce: #ebdfc0;
    --km-encre: #2b2418;
    --km-encre-douce: #5d5340;
    --km-filet: #c9b98f;
    --km-or: #b88a2b;
    --km-rouge: #8e2a1f;
    --km-ombre: 0 2px 10px rgba(43, 36, 24, 0.12);

    --rz-primary: var(--km-vert);
    --rz-primary-light: #2d7a45;
    --rz-primary-lighter: rgba(0, 89, 36, 0.12);
    --rz-primary-dark: #003d18;
    --rz-secondary: var(--km-vert-clair);
    --rz-base-background-color: var(--km-parchemin);
    --rz-body-background-color: var(--km-parchemin);
    --rz-text-font-family: "Source Sans 3", system-ui, sans-serif;
    --rz-text-color: var(--km-encre);
}

html, body {
    background: var(--km-parchemin);
    color: var(--km-encre);
    font-family: "Source Sans 3", system-ui, sans-serif;
    font-size: 16px;
}

h1, h2, h3 {
    font-family: Cinzel, Georgia, serif;
    color: var(--km-vert);
    letter-spacing: 0.02em;
}

h1:focus { outline: none; }
a { color: var(--km-vert); }

/* ---- mise en page */
.km-header {
    background: var(--km-vert);
    color: #fff;
    padding: 0.4rem 1rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}
.km-header .rz-sidebar-toggle { color: #fff; }
.km-marque {
    font-family: Cinzel, Georgia, serif;
    font-weight: 700;
    font-size: 1.15rem;
    color: #fff;
    text-decoration: none;
}
.km-sidebar {
    background: var(--km-parchemin-fonce);
    border-right: 1px solid var(--km-filet);
}
.km-sidebar .rz-panel-menu { background: transparent; }
.km-sidebar .rz-navigation-item-link,
.km-sidebar .rz-navigation-item-icon { color: var(--km-encre); }
.km-sidebar .rz-navigation-item-link.active,
.km-sidebar .rz-navigation-item-wrapper-active { background: rgba(0, 89, 36, 0.12); color: var(--km-vert); }
.km-source { font-size: 0.8rem; color: var(--km-encre-douce); padding: 1rem; }
.km-body { background: var(--km-parchemin); }
.km-page { max-width: 1200px; margin: 0 auto; padding: 0 0 3rem; }

/* ---- bandeau illustré (ouvertures de chapitre) */
.km-bandeau {
    position: relative;
    min-height: 190px;
    border-radius: 10px;
    margin: 0.5rem 0 1.5rem;
    background: var(--km-vert) center 35% / cover no-repeat;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    box-shadow: var(--km-ombre);
}
.km-bandeau::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 20%, rgba(0, 30, 12, 0.85) 100%);
}
.km-bandeau-texte { position: relative; padding: 1.25rem 1.5rem; }
.km-bandeau h1 { color: #fff; margin: 0; font-size: 2rem; text-shadow: 0 2px 6px rgba(0, 0, 0, 0.6); }
.km-bandeau p { color: #f2e9cf; margin: 0.25rem 0 0; }

.km-intro { font-size: 1.05rem; max-width: 60rem; }

/* ---- accueil */
.km-tuiles-accueil {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1rem;
}
.km-rubrique {
    display: flex;
    gap: 0.9rem;
    align-items: center;
    padding: 0.9rem;
    border: 1px solid var(--km-filet);
    border-radius: 10px;
    background: #fbf6e9;
    text-decoration: none;
    color: inherit;
    box-shadow: var(--km-ombre);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.km-rubrique:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(43, 36, 24, 0.2); }
.km-rubrique img { width: 72px; height: 72px; object-fit: cover; border-radius: 6px; }
.km-rubrique h2 { margin: 0; font-size: 1.05rem; }
.km-rubrique p { margin: 0.2rem 0 0; color: var(--km-encre-douce); font-size: 0.9rem; }

/* ---- filtres */
.km-filtres { margin-bottom: 1.25rem; }
.km-curseur label { display: block; font-size: 0.85rem; color: var(--km-encre-douce); margin-bottom: 0.4rem; }
.km-compte { color: var(--km-encre-douce); font-size: 0.9rem; padding-bottom: 0.6rem; }

/* ---- cartes de structure */
.km-grille {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: 0.9rem;
}
.km-carte-structure {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--km-filet);
    border-radius: 10px;
    background: #fbf6e9;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    box-shadow: var(--km-ombre);
    transition: transform 0.15s ease;
}
.km-carte-structure:hover { transform: translateY(-2px); }
.km-tuile {
    height: 130px;
    padding: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: radial-gradient(circle at 50% 40%, #e3d8b6, #cbbd93);
}
.km-tuile img { height: 100%; max-width: 100%; object-fit: contain; border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35); }
.km-tuile .rzi { font-size: 3rem; color: var(--km-encre-douce); }
.km-carte-corps { padding: 0.6rem 0.75rem 0.75rem; display: flex; flex-direction: column; gap: 0.35rem; }
.km-carte-titre { display: flex; justify-content: space-between; align-items: baseline; gap: 0.5rem; font-weight: 700; }
.km-niveau {
    font-family: Cinzel, Georgia, serif;
    background: var(--km-vert);
    color: #fff;
    border-radius: 4px;
    padding: 0 0.45rem;
    font-size: 0.85rem;
}
.km-ligne { display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.85rem; color: var(--km-encre-douce); flex-wrap: wrap; }

/* ---- traits, coûts, badges */
.km-traits { display: flex; flex-wrap: wrap; gap: 0.25rem; margin: 0.15rem 0 0.35rem; }
.km-trait {
    background: var(--km-rouge);
    color: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    padding: 0.1rem 0.4rem;
    border-radius: 3px;
}
.km-cout { display: inline-flex; flex-wrap: wrap; gap: 0.25rem; align-items: center; }
.km-pres, .km-marchandise {
    border-radius: 999px;
    padding: 0 0.45rem;
    font-size: 0.78rem;
    font-weight: 600;
    background: #e6dcbc;
    color: var(--km-encre);
}
.km-pres { background: #f0d98a; }
.km-m-bois { background: #d7b98c; }
.km-m-pierre { background: #c9c6bd; }
.km-m-minerai { background: #b8b0a6; }
.km-m-luxe { background: #e0c3e6; }
.km-m-nourriture { background: #cfe2a6; }
.km-ou { font-size: 0.75rem; font-style: italic; color: var(--km-encre-douce); }
.km-badge {
    font-size: 0.7rem;
    background: var(--km-vert-clair);
    color: #fff;
    border-radius: 3px;
    padding: 0 0.35rem;
    font-weight: 600;
}

/* ---- fiches */
.km-fil { color: var(--km-encre-douce); font-size: 0.9rem; }
.km-fiche { display: grid; grid-template-columns: minmax(200px, 320px) 1fr; gap: 1.5rem; align-items: start; }
.km-fiche-images figure { margin: 0 0 0.75rem; }
.km-fiche-images img { width: 100%; border-radius: 10px; box-shadow: var(--km-ombre); }
.km-fiche-images figcaption { text-align: center; font-size: 0.85rem; color: var(--km-encre-douce); }
.km-fiche-corps, .km-fiche-texte {
    background: #fbf6e9;
    border: 1px solid var(--km-filet);
    border-radius: 10px;
    padding: 1.2rem 1.4rem;
    box-shadow: var(--km-ombre);
}
.km-fiche-texte { max-width: 52rem; }
.km-entete {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    border-bottom: 2px solid var(--km-vert);
    margin-bottom: 0.4rem;
}
.km-entete h1, .km-entete h2 { margin: 0; text-transform: uppercase; font-size: 1.35rem; }
.km-entete h2 { font-size: 1.1rem; }
.km-type { font-family: Cinzel, Georgia, serif; font-weight: 700; color: var(--km-vert); white-space: nowrap; }
.km-texte { margin: 0.45rem 0; line-height: 1.5; }
.km-stats { display: grid; grid-template-columns: max-content 1fr; gap: 0.3rem 0.9rem; margin: 0.8rem 0; }
.km-stats dt { font-weight: 700; }
.km-stats dd { margin: 0; }
.km-bonus { margin: 0; padding-left: 1.1rem; }
.km-precision { color: var(--km-encre-douce); font-style: italic; }
.km-page-livre { text-align: right; font-size: 0.8rem; color: var(--km-encre-douce); margin: 0.8rem 0 0; }

/* ---- activités */
.km-groupe {
    font-size: 1.2rem;
    border-bottom: 1px solid var(--km-filet);
    padding-bottom: 0.2rem;
    margin: 1.4rem 0 0.7rem;
}
.km-groupe small { font-family: "Source Sans 3", sans-serif; color: var(--km-encre-douce); font-size: 0.85rem; }
.km-liste-activites { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 0.6rem; }
.km-activite {
    border: 1px solid var(--km-filet);
    border-left: 4px solid var(--km-vert);
    border-radius: 6px;
    background: #fbf6e9;
    padding: 0.55rem 0.75rem;
    text-decoration: none;
    color: inherit;
}
.km-activite:hover { background: #fff9ea; }
.km-competences { font-size: 0.85rem; color: var(--km-encre-douce); margin-top: 0.2rem; }
.km-degres { display: flex; flex-direction: column; gap: 0.4rem; margin: 0.8rem 0; }
.km-degre { padding: 0.45rem 0.7rem; border-radius: 6px; line-height: 1.45; border-left: 4px solid; }
.km-sc { background: #e3efd2; border-color: #3f7d20; }
.km-s { background: #eef3e3; border-color: #7aa548; }
.km-e { background: #f7ead6; border-color: #c68a3c; }
.km-ec { background: #f4dcd6; border-color: var(--km-rouge); }

/* ---- dons, règles, quêtes */
.km-liste-dons, .km-liste-quetes { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 1rem; }
.km-don, .km-quete, .km-encart {
    background: #fbf6e9;
    border: 1px solid var(--km-filet);
    border-radius: 10px;
    padding: 0.9rem 1.1rem;
    box-shadow: var(--km-ombre);
}
.km-avantage { font-weight: 600; color: var(--km-encre-douce); margin: 0.3rem 0; }
.km-colonnes { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 0.9rem; margin-bottom: 1rem; }
.km-encart h3 { margin: 0 0 0.3rem; font-size: 1rem; }
.km-encart h3 small { font-family: "Source Sans 3", sans-serif; color: var(--km-vert-clair); margin-left: 0.4rem; }
.km-pastille {
    display: inline-block;
    margin: 0.1rem 0.25rem 0.1rem 0;
    padding: 0 0.45rem;
    border-radius: 999px;
    background: #e6dcbc;
    font-size: 0.85rem;
    text-decoration: none;
    color: var(--km-encre);
}
.km-quete { display: flex; gap: 1rem; align-items: flex-start; }
.km-quete img { width: 110px; flex: none; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3)); }
.km-pnj { font-family: Cinzel, Georgia, serif; color: var(--km-vert-clair); margin: 0.2rem 0; }

@media (max-width: 760px) {
    .km-fiche { grid-template-columns: 1fr; }
    .km-quete { flex-direction: column; }
    .km-bandeau h1 { font-size: 1.5rem; }
}

/* ---- erreurs Blazor */
.blazor-error-boundary { background: #b32121; padding: 1rem; color: white; }
.blazor-error-boundary::after { content: "Une erreur est survenue."; }

/* grilles Radzen : le texte des cellules passe à la ligne */
.km-grille-texte .rz-cell-data { white-space: normal; overflow: visible; text-overflow: clip; }

/* ================================================================ royaumes (M2) */
.km-import {
    display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer;
    border: 1px dashed var(--km-filet); border-radius: 6px; padding: 0.35rem 0.75rem; color: var(--km-vert);
}
.km-import input { display: none; }
.km-liste-royaumes { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; }
.km-carte-royaume {
    background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 10px; padding: 0.9rem 1.1rem;
    box-shadow: var(--km-ombre); display: flex; flex-direction: column; gap: 0.5rem;
}
.km-carte-royaume-lien { text-decoration: none; color: inherit; }

/* assistant */
.km-assistant { display: grid; grid-template-columns: 1fr 220px; gap: 1.25rem; align-items: start; }
.km-apercu {
    position: sticky; top: 1rem; background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 10px;
    padding: 0.9rem; box-shadow: var(--km-ombre);
}
.km-apercu h3 { margin: 0 0 0.5rem; font-size: 1rem; }
.km-apercu-carac { display: grid; grid-template-columns: 1fr auto 2.5rem; gap: 0.4rem; align-items: baseline; padding: 0.15rem 0; }
.km-apercu-carac strong { font-size: 1.2rem; font-family: Cinzel, Georgia, serif; }
.km-formulaire { display: flex; flex-direction: column; gap: 0.9rem; max-width: 34rem; margin: 0.75rem 0; }
.km-formulaire-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); max-width: none; align-items: end; }
.km-choix-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 0.7rem; margin: 0.75rem 0; }
.km-choix {
    text-align: left; font: inherit; color: inherit; cursor: pointer; background: #fbf6e9;
    border: 2px solid var(--km-filet); border-radius: 10px; padding: 0.7rem 0.9rem; display: flex; flex-direction: column; gap: 0.2rem;
}
.km-choix:hover { border-color: var(--km-vert-clair); }
.km-choix-actif { border-color: var(--km-vert); background: #eef3e3; box-shadow: 0 0 0 2px rgba(0, 89, 36, 0.15); }
.km-choix .km-texte { font-size: 0.88rem; }

/* tables */
.km-table { width: 100%; border-collapse: collapse; background: #fbf6e9; border-radius: 8px; overflow: hidden; margin: 0.5rem 0 1rem; }
.km-table th { background: var(--km-vert); color: #fff; text-align: left; font-weight: 600; padding: 0.4rem 0.6rem; font-size: 0.9rem; }
.km-table td { padding: 0.3rem 0.6rem; border-bottom: 1px solid #e6dcbc; vertical-align: middle; }
.km-table td small { color: var(--km-encre-douce); }
.km-num { text-align: right; }
.km-qualifie td:first-child { font-weight: 700; }
.km-absent td { color: var(--km-rouge); }
.km-vignette { width: 34px; height: 34px; object-fit: cover; border-radius: 4px; }

/* fiche du royaume */
.km-tableau { display: grid; grid-template-columns: repeat(auto-fill, minmax(165px, 1fr)); gap: 0.75rem; margin-bottom: 1rem; }
.km-stat {
    background: #fbf6e9; border: 1px solid var(--km-filet); border-top: 4px solid var(--km-vert);
    border-radius: 8px; padding: 0.6rem 0.8rem; display: flex; flex-direction: column; gap: 0.2rem; box-shadow: var(--km-ombre);
}
.km-stat-titre { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--km-encre-douce); }
.km-stat strong { font-family: Cinzel, Georgia, serif; font-size: 1.6rem; color: var(--km-vert); line-height: 1.1; }
.km-stat-detail { font-size: 0.8rem; color: var(--km-encre-douce); }
.km-caracs { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0.75rem; margin-bottom: 0.75rem; }
.km-carac, .km-agitation {
    background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 8px; padding: 0.6rem 0.8rem; box-shadow: var(--km-ombre);
}
.km-carac-tete { display: flex; align-items: baseline; gap: 0.6rem; }
.km-carac-tete span:first-child { font-weight: 700; flex: 1; }
.km-carac-tete strong { font-family: Cinzel, Georgia, serif; font-size: 1.5rem; color: var(--km-vert); }
.km-mod { color: var(--km-encre-douce); font-weight: 600; }
.km-ruine { display: flex; flex-direction: column; gap: 0.2rem; margin-top: 0.35rem; font-size: 0.85rem; }
.km-malus { color: var(--km-rouge); font-weight: 600; font-size: 0.85rem; }
.km-agitation { margin-bottom: 0.5rem; }
.km-jauge { position: relative; height: 12px; background: #e6dcbc; border-radius: 999px; margin: 0.6rem 0 1.2rem; }
.km-jauge-remplie { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #c68a3c, var(--km-rouge)); }
.km-jauge-repere {
    position: absolute; top: 14px; transform: translateX(-50%); font-size: 0.7rem; color: var(--km-encre-douce);
}
.km-jauge-repere::before {
    content: ""; position: absolute; top: -16px; left: 50%; width: 1px; height: 12px; background: rgba(43, 36, 24, 0.35);
}
.km-deux-colonnes { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.km-stock { display: grid; grid-template-columns: 9.5rem 1fr 3.5rem; gap: 0.6rem; align-items: center; margin: 0.3rem 0; }
.km-stock strong { text-align: right; }
.km-liste-communautes { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 0.9rem; }
.km-communaute {
    background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 10px; padding: 0.8rem 1rem; box-shadow: var(--km-ombre);
}
.km-communaute h3 { margin: 0; font-size: 1.05rem; }
.km-communaute-saisie { margin-bottom: 1rem; }
.km-mini-tuiles { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.4rem; }
.km-mini-tuiles img { width: 42px; height: 42px; object-fit: cover; border-radius: 4px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); }
.km-alertes { margin: 0; padding-left: 1.1rem; }
.km-frontieres { max-width: 34rem; }
.km-case { display: flex; align-items: center; gap: 0.45rem; flex-wrap: wrap; }
.km-case small { color: var(--km-encre-douce); flex-basis: 100%; padding-left: 1.7rem; }
.km-liste-cases { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 0.6rem; margin: 0.75rem 0; }
.km-ajout { margin-top: 0.5rem; }
.km-barre-saisie {
    position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
    flex-wrap: wrap; background: #efe5c9; border: 1px solid var(--km-filet); border-radius: 10px;
    padding: 0.6rem 1rem; margin-top: 1rem; box-shadow: 0 -2px 10px rgba(43, 36, 24, 0.12);
}
.km-barre-saisie summary { cursor: pointer; color: var(--km-rouge); font-weight: 600; }
.km-ok { color: var(--km-vert); font-weight: 600; }

@media (max-width: 860px) {
    .km-assistant, .km-deux-colonnes { grid-template-columns: 1fr; }
    .km-apercu { position: static; }
}

/* onglets : un tableau trop large défile dans son panneau, pas la page entière */
.km-page .rz-tabview { max-width: 100%; min-width: 0; }
.km-page .rz-tabview-panels { overflow-x: auto; }
.km-page { min-width: 0; }

/* ================================================================ tour de royaume (M3) */
.km-tour-entete { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.km-tour-entete h1 { margin: 0.2rem 0; }
.km-tour { display: grid; grid-template-columns: 190px minmax(0, 1fr) 250px; gap: 1rem; align-items: start; margin-top: 0.75rem; }
.km-tour-etapes {
    position: sticky; top: 0.5rem; background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 10px; padding: 0.6rem 0.8rem;
}
.km-tour-etapes h4 { margin: 0.5rem 0 0.2rem; font-family: Cinzel, Georgia, serif; color: var(--km-vert); font-size: 0.85rem; }
.km-tour-etapes ol { list-style: none; margin: 0; padding: 0; }
.km-tour-etapes li { font-size: 0.85rem; padding: 0.15rem 0 0.15rem 1.1rem; position: relative; color: var(--km-encre-douce); }
.km-tour-etapes li::before { content: "○"; position: absolute; left: 0; }
.km-etape-faite { color: var(--km-encre) !important; }
.km-etape-faite::before { content: "✓" !important; color: var(--km-vert-clair); }
.km-etape-en-cours { color: var(--km-vert) !important; font-weight: 700; }
.km-etape-en-cours::before { content: "▶" !important; color: var(--km-vert); }
.km-etape-sautee { text-decoration: line-through; opacity: 0.6; }
.km-tour-cote { position: sticky; top: 0.5rem; display: flex; flex-direction: column; gap: 0.6rem; }
.km-plateau {
    height: 200px; border-radius: 10px; border: 1px solid var(--km-filet); overflow: hidden;
    background: radial-gradient(circle at 50% 40%, #2d6b3f, #0f3a1d);
}
.km-plateau canvas { width: 100% !important; height: 100% !important; }
.km-historique-des { list-style: none; margin: 0; padding: 0; font-size: 0.85rem; }
.km-historique-des li { border-bottom: 1px dashed var(--km-filet); padding: 0.2rem 0; }
.km-historique-des li:first-child strong { color: var(--km-vert); font-size: 1rem; }
.km-etat-mini { background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 10px; padding: 0.6rem 0.8rem; font-size: 0.88rem; }
.km-etat-mini h4 { margin: 0.5rem 0 0.15rem; font-size: 0.8rem; text-transform: uppercase; color: var(--km-encre-douce); letter-spacing: 0.05em; }
.km-etat-ligne { display: flex; justify-content: space-between; gap: 0.5rem; }
.km-jauge-petite { height: 6px; margin: 0.2rem 0 0.4rem; }
.km-panneau-etape, .km-panneau-activite {
    background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 10px; padding: 0.9rem 1.1rem; box-shadow: var(--km-ombre);
}
.km-panneau-activite { border-left: 4px solid var(--km-vert); margin-top: 0.8rem; }
.km-panneau-activite h3 { margin: 0; text-transform: uppercase; font-size: 1.05rem; }
.km-cartes-activites { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.5rem; margin-top: 0.75rem; }
.km-carte-activite {
    text-align: left; font: inherit; color: inherit; cursor: pointer; background: #fff9ea; border: 1px solid var(--km-filet);
    border-left: 4px solid var(--km-vert); border-radius: 6px; padding: 0.45rem 0.65rem; display: flex; flex-direction: column; gap: 0.1rem;
}
.km-carte-activite:hover:not(:disabled) { background: #eef3e3; }
.km-carte-activite small { color: var(--km-encre-douce); }
.km-carte-activite em { color: var(--km-rouge); font-size: 0.78rem; font-style: normal; }
.km-carte-grisee { opacity: 0.55; cursor: not-allowed; border-left-color: var(--km-filet); }
.km-dirigeants { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.5rem 0; }
.km-dirigeants .km-choix { min-width: 9rem; }
.km-detail-test { font-size: 0.88rem; color: var(--km-encre-douce); }
.km-effets { list-style: none; padding: 0; margin: 0.3rem 0; display: flex; flex-direction: column; gap: 0.35rem; }
.km-effets li { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; padding: 0.3rem 0.5rem; border-radius: 6px; background: #eef3e3; }
.km-effets li small { flex-basis: 100%; color: var(--km-encre-douce); }
.km-effet-choix { background: #f7ead6 !important; }
.km-suite { margin: 0.75rem 0; padding: 0.6rem 0.8rem; border: 1px dashed var(--km-vert-clair); border-radius: 8px; }
.km-suite h4 { margin: 0 0 0.4rem; }
.km-etape-suivante { display: flex; justify-content: flex-end; align-items: center; gap: 0.75rem; flex-wrap: wrap; margin-top: 1rem; }
.km-saisie-des { background: #fff3cd; border: 1px solid #e0c36b; border-radius: 10px; padding: 0.6rem 0.8rem; }
.km-saisie-des h4 { margin: 0; font-size: 0.95rem; }
.km-ajustement-mj { margin-top: 0.8rem; background: #f4ecd6; border: 1px solid var(--km-filet); border-radius: 8px; padding: 0.5rem 0.8rem; }
.km-ajustement-mj summary { cursor: pointer; font-weight: 600; color: var(--km-vert); margin-bottom: 0.4rem; }
.km-journal { list-style: none; padding: 0; margin: 0.4rem 0 2rem; font-size: 0.9rem; }
.km-journal li { padding: 0.25rem 0.5rem; border-bottom: 1px solid #e6dcbc; }
.km-journal-important { font-weight: 600; }
.km-journal-etape { color: var(--km-vert); font-family: Cinzel, Georgia, serif; background: #eef3e3; }
.km-jet { display: inline-block; border-radius: 4px; padding: 0 0.35rem; margin-right: 0.35rem; font-size: 0.78rem; font-weight: 700; color: #fff; }
.km-jet-ok { background: var(--km-vert-clair); }
.km-jet-ko { background: var(--km-rouge); }
.km-chronique { background: #fbf6e9; border: 1px solid var(--km-filet); border-radius: 8px; padding: 0.4rem 0.8rem; margin: 0.4rem 0; }
.km-chronique summary { cursor: pointer; font-weight: 600; }

@media (max-width: 1100px) {
    .km-tour { grid-template-columns: 1fr; }
    .km-tour-etapes, .km-tour-cote { position: static; }
    .km-tour-etapes ol { display: flex; flex-wrap: wrap; gap: 0 1rem; }
}

/* événements */
.km-panneau-evenement.km-dangereux { border-left: 4px solid var(--km-rouge); }
.km-panneau-evenement.km-benefique { border-left: 4px solid var(--km-vert-clair); }

/* Scènes 3D : carte des Terres Volées, quartiers */
.km-carte {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 22rem;
    gap: 1rem;
    align-items: start;
}
@media (max-width: 1100px) {
    .km-carte { grid-template-columns: 1fr; }
}
.km-scene3d {
    position: relative;
    border: 1px solid var(--km-filet);
    border-radius: 6px;
    overflow: hidden;
    background: var(--km-encre);
    min-height: 22rem;
}
.km-scene3d-hote, .km-scene3d-hote canvas {
    width: 100%;
    height: 100%;
    display: block;
    touch-action: none;
}
.km-scene3d-absente {
    position: absolute;
    inset: 40% 1rem auto;
    text-align: center;
    color: var(--km-parchemin);
}
.km-carte-panneau {
    background: var(--km-parchemin);
    border: 1px solid var(--km-filet);
    border-radius: 6px;
    padding: 0.8rem 1rem;
    box-shadow: var(--km-ombre);
    max-height: 80vh;
    overflow-y: auto;
}
.km-carte-panneau h3 { margin-top: 0; }
.km-legende { list-style: none; padding: 0; margin: 0.4rem 0; }
.km-legende li { display: flex; align-items: center; gap: 0.5rem; margin: 0.2rem 0; }
.km-puce { width: 1rem; height: 1rem; border-radius: 3px; display: inline-block; border: 1px solid rgba(0, 0, 0, 0.2); }
.km-puce-royaume { background: var(--km-rouge); }
.km-puce-influence { background: transparent; border: 3px solid #e0b44a; }
.km-puce-revendicable { background: rgba(95, 191, 90, 0.4); border: 2px solid #7ee27a; }
.km-puce-brouillard { background: #15130f; opacity: 0.6; }
.km-structure-choisie { display: flex; gap: 0.6rem; align-items: center; }
.km-structure-choisie .km-vignette { width: 4rem; height: 4rem; }
.km-table-frontieres { border-collapse: collapse; width: 100%; }
.km-table-frontieres td, .km-table-frontieres th { padding: 0.15rem 0.3rem; text-align: left; }
.km-lien-titre { font-size: 0.8rem; font-family: var(--rz-text-font-family); margin-left: 0.5rem; }

.km-entree-livre { border-top: 1px solid var(--km-filet); padding-top: 0.4rem; margin-top: 0.4rem; }
.km-entree-livre .km-entete { display: flex; justify-content: space-between; gap: 0.5rem; }
.km-trait-clair { background: var(--km-parchemin-fonce); color: var(--km-encre); }
.km-table-rencontres { border-collapse: collapse; font-size: 0.85rem; }
.km-table-rencontres td { padding: 0.1rem 0.3rem; vertical-align: top; border-bottom: 1px solid var(--km-filet); }

/* Armées */
.km-armee { background: var(--km-parchemin); border: 1px solid var(--km-filet); border-radius: 6px; padding: 0.7rem 0.9rem; box-shadow: var(--km-ombre); }
.km-armee-vaincue { opacity: 0.7; border-color: var(--km-rouge); }
.km-armee .km-entete { display: flex; justify-content: space-between; align-items: baseline; }
.km-armee h3 { margin: 0; }
.km-bloc-armee { display: grid; grid-template-columns: max-content 1fr; gap: 0.1rem 0.6rem; margin: 0.4rem 0; }
.km-bloc-armee dt { font-weight: 700; }
.km-bloc-armee dd { margin: 0; }
.km-etat-armee { background: var(--km-rouge); }
.km-mini { border: none; background: rgba(255, 255, 255, 0.25); color: inherit; border-radius: 3px; padding: 0 0.3rem; margin-left: 0.15rem; cursor: pointer; }
.km-saisie-armee { margin-top: 0.5rem; }

/* Comptes (pages en rendu statique) */
.km-compte-page { min-height: 100vh; background: var(--km-parchemin); display: flex; flex-direction: column; align-items: center; }
.km-compte-entete { width: 100%; padding: 0.8rem 1.2rem; background: var(--km-vert); }
.km-compte-entete .km-marque { color: #fff; }
.km-compte { width: min(28rem, calc(100% - 2rem)); margin: 2rem auto; }
.km-compte-form { display: flex; flex-direction: column; gap: 0.7rem; margin: 1rem 0; }
.km-compte-form label { display: flex; flex-direction: column; gap: 0.25rem; font-weight: 600; }
.km-compte-form input[type=text], .km-compte-form input[type=password], .km-compte-form input:not([type]) {
    padding: 0.5rem 0.6rem; border: 1px solid var(--km-filet); border-radius: 4px; font: inherit; background: #fff;
}
.km-compte-case { flex-direction: row !important; align-items: center; font-weight: 400 !important; }
.km-bouton { background: var(--km-vert); color: #fff; border: none; border-radius: 4px; padding: 0.6rem 1rem; font: inherit; font-weight: 600; cursor: pointer; }
.km-bouton-clair { background: var(--km-parchemin-fonce); color: var(--km-encre); }
.km-compte-lien { margin-left: auto; margin-right: 1rem; color: #fff; text-decoration: none; display: inline-flex; align-items: center; gap: 0.3rem; }
.km-header { display: flex; align-items: center; }
