/* La carte du royaume (carte.js, carte-dessin.js) : un vélin gravé posé sur la table sombre.
   Préfixe ca- pour la page, k- pour le dessin SVG. */
body.carte { height: 100dvh; overflow: hidden; overscroll-behavior: none; }

/* ——— La table et le vélin ——— */
.ca-vue {
  position: fixed; inset: 0; overflow: hidden; touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab;
  background: radial-gradient(ellipse 70% 60% at 50% 50%, #1E1513, #0B0809 75%);
}
.ca-vue:active { cursor: grabbing; }
.ca-vue:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--serment); }
.ca-plan { position: absolute; left: 0; top: 0; transform-origin: 0 0; }
.ca-plan.ca-bouge { will-change: transform; }
.k-svg { display: block; width: 1120px; height: 1300px; overflow: visible; }

/* Une lumière lente balaie le parchemin */
.ca-lumiere { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 2; }
.ca-lumiere::before {
  content: ""; position: absolute; top: -10%; bottom: -10%; left: -50%; width: 45%;
  background: linear-gradient(100deg, transparent, rgba(255, 236, 190, .04) 45%, rgba(255, 244, 214, .07) 50%, rgba(255, 236, 190, .04) 55%, transparent);
  transform: translateX(0) skewX(-8deg); animation: ca-balaie 16s ease-in-out 2s infinite;
}
@keyframes ca-balaie { 0% { transform: translateX(0) skewX(-8deg); } 55%, 100% { transform: translateX(380%) skewX(-8deg); } }

/* ——— En-tête, zoom, aide ——— */
.ca-tete {
  position: fixed; top: 0; left: 0; right: 0; z-index: 10; display: flex; align-items: center; gap: 8px;
  padding: max(8px, env(safe-area-inset-top)) 16px 8px; pointer-events: none;
  background: linear-gradient(180deg, rgba(11, 8, 9, .92), rgba(11, 8, 9, .55) 70%, transparent);
}
.ca-tete > * { pointer-events: auto; }
.ca-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 14px 0 10px;
  border: 1px solid rgba(242, 196, 107, .45); border-radius: 999px; background: rgba(20, 13, 11, .88); color: #F6D894;
  font: 600 1.05rem/1 var(--titre); text-decoration: none; box-shadow: 0 4px 14px rgba(0, 0, 0, .45);
}
.ca-btn svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ca-btn:hover { border-color: rgba(242, 196, 107, .8); }
.ca-rond { width: 44px; padding: 0; font: 500 1.6rem/1 var(--titre); }
.ca-signes-btn { margin-left: auto; }
.ca-menu { min-height: 44px; box-shadow: 0 4px 14px rgba(0, 0, 0, .45); }
.ca-signes-btn[aria-expanded="true"] { background: #F0D9A0; color: #1A0F0A; }

.ca-zoom { position: fixed; right: 16px; bottom: max(16px, env(safe-area-inset-bottom)); z-index: 10; display: grid; gap: 8px; }
.ca-aide {
  position: fixed; left: 50%; bottom: max(22px, env(safe-area-inset-bottom)); z-index: 9; margin: 0; transform: translateX(-50%);
  max-width: calc(100vw - 120px); padding: 8px 14px; border-radius: 999px; background: rgba(20, 13, 11, .85); color: var(--encre-att);
  font: italic 500 .95rem/1.2 var(--titre); text-align: center; pointer-events: none; transition: opacity .6s;
}
.ca-aide--partie { opacity: 0; }

/* ——— Parchemin commun : fiches et légende ——— */
.ca-fiche-corps, .ca-signes-corps {
  --encre-v: #2E1E12; --encre-p: #6A5440; --rubrique: #8E1E14;
  position: relative; color: var(--encre-v);
  background:
    radial-gradient(ellipse 60% 40% at 15% 10%, rgba(140, 100, 50, .16), transparent 70%),
    radial-gradient(ellipse 50% 30% at 85% 90%, rgba(120, 80, 40, .18), transparent 70%),
    radial-gradient(ellipse 120% 100% at 50% 50%, transparent 60%, rgba(90, 60, 25, .32)),
    linear-gradient(180deg, #F1E6CB, #E4D3AE);
  box-shadow: 0 0 0 1px #8A6A3E, 0 0 0 4px #2A1A10, 0 0 0 5px #6A4A22, 0 24px 60px rgba(0, 0, 0, .7);
}
.ca-fiche-corps, .ca-signes-corps { outline: 1px solid rgba(110, 70, 30, .32); outline-offset: -8px; }
.k-tourb { fill: #FFFFFF; stroke: #3A2616; stroke-width: 1; stroke-linejoin: round; }

/* ——— La fiche d'un lieu ——— */
.ca-fiche { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; padding: 0 8px max(8px, env(safe-area-inset-bottom)); pointer-events: none; }
.ca-fiche-corps {
  pointer-events: auto; max-height: min(62dvh, 560px); overflow-y: auto; overscroll-behavior: contain;
  padding: 22px 18px 20px; border-radius: 3px 3px 0 0;
}
@media (min-width: 860px) {
  .ca-fiche { left: auto; top: 72px; right: 16px; bottom: 16px; width: min(400px, 45vw); padding: 0; }
  .ca-fiche-corps { max-height: 100%; border-radius: 3px; padding: 26px 22px 22px; }
}
.ca-fiche--entree .ca-fiche-corps { animation: ca-monte .38s cubic-bezier(.2, .9, .3, 1) both; }
.ca-fiche--sortie .ca-fiche-corps { animation: ca-monte .22s ease-in reverse both; }
@keyframes ca-monte { from { opacity: 0; transform: translateY(40px); } }
@media (min-width: 860px) { @keyframes ca-monte { from { opacity: 0; transform: translateX(40px); } } }

.ca-fermer {
  position: sticky; top: -8px; float: right; z-index: 2; width: 44px; height: 44px; margin: -12px -8px 0 8px;
  border: 0; border-radius: 50%; background: rgba(46, 30, 18, .08); color: var(--encre-v); font: 300 2rem/1 var(--titre);
}
.ca-sur { margin: 0; font: 500 .74rem/1.2 var(--titre); letter-spacing: .22em; text-transform: uppercase; color: var(--encre-p); }
.ca-fiche h2 { margin: 4px 0 0; font: 600 clamp(1.7rem, 7vw, 2.1rem)/1.05 var(--titre); color: var(--encre-v); }
.ca-sous { margin: 2px 0 0; font: italic 500 1.08rem/1.25 var(--titre); color: var(--rubrique); }
.ca-texte { margin: 12px 0 0; font: 400 .98rem/1.55 var(--texte); color: var(--encre-v); text-wrap: pretty; }
.ca-region-tete { display: flex; align-items: center; gap: 12px; }
.ca-ecu { flex: none; width: 52px; height: 66px; filter: drop-shadow(0 3px 4px rgba(60, 30, 10, .35)); }
.ca-faits { margin: 14px 0 0; display: grid; gap: 0; border-top: 1px solid rgba(110, 70, 30, .35); }
.ca-faits div { display: grid; grid-template-columns: minmax(96px, 34%) 1fr; gap: 10px; padding: 7px 0; border-bottom: 1px solid rgba(110, 70, 30, .22); }
.ca-faits dt { font: 400 .8rem/1.3 var(--etiquette); letter-spacing: .04em; color: var(--rubrique); }
.ca-faits dd { margin: 0; font: italic 500 1rem/1.3 var(--titre); color: var(--encre-v); }

.ca-bloc { margin-top: 18px; }
.ca-bloc h3, .ca-signes-corps h3 {
  display: flex; align-items: center; gap: 10px; margin: 0 0 10px; font: 400 .9rem/1 var(--etiquette); letter-spacing: .08em; color: var(--rubrique);
}
.ca-bloc h3::after, .ca-signes-corps h3::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, rgba(110, 70, 30, .45), transparent); }
.ca-heros, .ca-sentences { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.ca-heros li, .ca-sentences li { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 14px; }
.ca-portrait { display: block; line-height: 0; }
.ca-heros-txt, .ca-sentences li > span:last-child { display: grid; gap: 2px; min-width: 0; }
.ca-heros b, .ca-sentences b { font: 600 1.25rem/1.1 var(--titre); color: var(--encre-v); }
.ca-heros i, .ca-sentences i { font: italic 500 .92rem/1.2 var(--titre); color: var(--encre-p); }
.ca-heros-txt > span { margin-top: 2px; font: 400 .86rem/1.4 var(--texte); color: var(--encre-v); }
.ca-sentences .ca-calamite i { color: #7A2E6E; }
.ca-sceau { display: grid; place-items: center; width: 58px; height: 78px; background: #1E1216; }
.ca-sceau .k-signe { width: 44px; height: 44px; }
.ca-quetes { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0; font: italic 500 1.02rem/1.3 var(--titre); color: var(--encre-v); }
.ca-quetes span::first-letter { color: var(--rubrique); }
.ca-lieux { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.ca-lieux button {
  min-height: 38px; padding: 0 12px; border: 1px solid rgba(110, 70, 30, .45); border-radius: 999px; background: rgba(255, 248, 230, .5);
  color: var(--encre-v); font: 600 1rem/1 var(--titre);
}
.ca-lieux button:hover { background: rgba(255, 248, 230, .9); }
.ca-lieux .ca-calamite { border-color: rgba(122, 46, 110, .55); color: #5A1A50; }
.ca-lien {
  display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; margin-top: 18px; padding: 6px 10px;
  border: 1px solid rgba(110, 70, 30, .4); background: rgba(255, 248, 230, .45); color: var(--encre-v); font: 600 1.08rem/1.1 var(--titre); text-align: left;
}
.ca-mini-ecu { flex: none; width: 26px; height: 34px; }
.ca-fiche :focus-visible, .ca-signes :focus-visible { outline: 2px solid var(--rubrique); outline-offset: 2px; }

/* ——— La légende des signes ——— */
.ca-signes { position: fixed; z-index: 20; top: calc(max(8px, env(safe-area-inset-top)) + 56px); left: 16px; right: 16px; max-width: 360px; margin-left: auto; }
.ca-signes-corps { max-height: calc(100dvh - 150px); overflow-y: auto; overscroll-behavior: contain; padding: 18px 18px 16px; }
.ca-signes-corps h2 { margin: 0 0 10px; font: 600 1.6rem/1 var(--titre); }
.ca-signes-corps h3 { margin-top: 16px; }
.ca-liste-signes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 10px; }
.ca-liste-signes li { display: flex; align-items: center; gap: 8px; min-height: 36px; font: 500 .98rem/1.15 var(--titre); }
.k-signe { flex: none; width: 34px; height: 34px; overflow: visible; }

/* ——— Le dessin ——— */
.k-velin { stroke: none; }
.k-bord { fill: none; stroke: #6A4A22; stroke-width: 2.5; stroke-opacity: .7; }
.k-echo { fill: none; stroke: #3A2616; stroke-linejoin: round; }
.k-echo--1 { stroke-width: 9; stroke-opacity: .2; }
.k-echo--2 { stroke-width: 22; stroke-opacity: .09; }
.k-echo--3 { stroke-width: 40; stroke-opacity: .05; }
.k-cote { fill: none; stroke: #3A2616; stroke-width: 2.3; stroke-linejoin: round; }
.k-egide { fill: none; stroke: #B8902E; stroke-width: 1.4; stroke-dasharray: 2 7; stroke-linecap: round; stroke-opacity: .8; }
.k-frontiere { fill: none; stroke: #7A2A22; stroke-width: 1.7; stroke-dasharray: 10 4 2 4; stroke-opacity: .6; }

.k-mt-f { fill: #EFE3C4; }
.k-mt--sombre .k-mt-f { fill: #D8C39C; }
.k-mt--fer .k-mt-f { fill: #E2D7C0; }
.k-mt-o { fill: url(#k-hach); }
.k-mt--sombre .k-mt-o { fill: url(#k-hach-x); opacity: .7; }
.k-mt-t { fill: none; stroke: #3A2616; stroke-width: 1.3; stroke-linejoin: round; stroke-linecap: round; }
.k-neige { fill: #FBF8F0; }
.k-arbre { fill: #E6D9B2; stroke: #3A2616; stroke-width: 1.05; stroke-linejoin: round; }
.k-mur { fill: #F4EBD3; stroke: #3A2616; stroke-width: .9; stroke-linejoin: round; }
.k-toit { fill: #6E3B22; stroke: #3A2616; stroke-width: .7; stroke-linejoin: round; }
.k-trait { fill: none; stroke: #3A2616; stroke-width: 1.2; }
.k-fanion { stroke: #3A2616; stroke-width: .7; }
.k-porte { fill: #3A2616; }
.k-temple { fill: #F4EBD3; stroke: #3A2616; stroke-width: 1; }
.k-or { fill: url(#k-or); stroke: #6A4A16; stroke-width: .5; }

.k-eau-f { fill: none; stroke: #9DBCC0; stroke-opacity: .45; stroke-linecap: round; stroke-linejoin: round; }
.k-eau { fill: none; stroke: #2B4550; stroke-linecap: round; stroke-linejoin: round; }
.k-eau--braise { stroke: #8A3A1E; }
.k-oued { fill: none; stroke: #6A5440; stroke-width: 2.2; stroke-dasharray: 2 6; stroke-linecap: round; }
.k-lac { fill: #BCD2D0; stroke: #2B4550; stroke-width: 1.4; }
.k-marais { fill: none; stroke: #3A5040; stroke-width: .9; stroke-linecap: round; stroke-opacity: .7; }
.k-ilot { fill: #F1E6CB; stroke: #3A2616; stroke-width: 1; }
.k-voie { fill: none; stroke: #7A4A22; stroke-width: 2; stroke-dasharray: 11 6; stroke-opacity: .75; stroke-linecap: round; }
.k-pourtour { fill: none; stroke: #7A4A22; stroke-width: 1.4; stroke-dasharray: 5 5; stroke-opacity: .6; }
.k-pourtour--gel { stroke: #4E6E86; }
.k-pourtour--coupe { stroke-dasharray: .5 7; stroke-width: 2; stroke-linecap: round; stroke-opacity: .55; }
.k-bruyere { fill: none; stroke: #6A3A66; stroke-width: .9; stroke-opacity: .55; stroke-linecap: round; }
.k-roses { fill: #B8323C; fill-opacity: .72; }
.k-dune { fill: none; stroke: #7A5A2A; stroke-width: 1.1; stroke-opacity: .7; stroke-linecap: round; }
.k-tertre { fill: none; stroke: #4A4440; stroke-width: 1.2; stroke-opacity: .8; stroke-linecap: round; }
.k-ruine { fill: none; stroke: #3A2616; stroke-width: 1.5; stroke-linecap: round; }
.k-verre { fill: url(#k-verre); stroke: #3A4A4A; stroke-width: 1.3; }
.k-eclats { stroke: #FFFFFF; stroke-width: 1.4; stroke-linecap: round; animation: k-scintille 3.2s ease-in-out infinite; }
.k-obsidienne { fill: #1A1014; stroke: #000; stroke-width: .8; stroke-linejoin: round; }
.k-obs-reflet { stroke: #9A88AC; stroke-width: .8; }
.k-fils { fill: none; stroke: #8A7A6A; stroke-width: .6; stroke-opacity: .5; }
.k-glace { fill: #F8FBFC; stroke: #6A8090; stroke-width: 1.2; }
.k-fentes { fill: none; stroke: #6A8090; stroke-width: .8; }
.k-ancien { fill: none; stroke: #4E5E6C; stroke-width: 2.2; stroke-opacity: .55; stroke-linecap: round; stroke-dasharray: 26 5 3 5; }
.k-chaine { fill: none; stroke: #2A2A2A; stroke-width: .6; }
.k-maillon { fill: none; stroke: #2A2A2A; stroke-width: 1.4; }
.k-ombre-ailee { fill: #2A1A22; fill-opacity: .26; }
.k-ombre-trait { fill: none; stroke: #2A1A22; stroke-width: 1.4; stroke-opacity: .75; stroke-linejoin: round; }
.k-hach-ailes { fill: url(#k-hach-x); opacity: .3; }
.k-toile { fill: none; stroke: #4E6E86; stroke-width: .9; }
.k-araignee { fill: #1A1014; }
.k-corbeaux { fill: none; stroke: #1A1014; stroke-width: 1.4; stroke-linecap: round; }
.k-lave { fill: none; stroke: #FF7A3A; stroke-width: 2; stroke-linecap: round; }
.k-fumee path { fill: none; stroke: #5A4E4E; stroke-width: 3; stroke-linecap: round; stroke-opacity: .32; }
.k-fumee { animation: k-fumee 9s ease-in-out infinite; }
.k-fumee--fer path { stroke: #2A2222; stroke-opacity: .45; stroke-width: 2.4; }

/* Les sentences */
.k-halo { fill: url(#k-pourpre); animation: k-pulse 4.5s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.k-pics { fill: #2A1420; stroke: #3A2616; stroke-width: .8; stroke-linejoin: round; }
.k-sceau-f { fill: #1E1216; stroke: #8E1E14; stroke-width: 2; }
.k-sceau--calamite .k-sceau-f { stroke: #7A2E6E; stroke-width: 2.4; }
.k-marque { fill: #C77BC0; }
.k-pupille { fill: #1E1216; }
.k-quete { fill: #8E1E14; stroke: #3A2616; stroke-width: .8; stroke-linejoin: round; }
.k-borne-f { fill: #FBF8F0; stroke: #3A2616; stroke-width: 1; stroke-linejoin: round; }

/* Aubemont et l'Œil */
.k-aube-lueur { animation: k-flamme 5s steps(1, end) infinite, k-respire 7s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.k-reflet { fill: #7A2E6E; fill-opacity: .16; }
.k-colline { fill: #FBF8F0; stroke: #3A2616; stroke-width: 1.4; }
.k-hach-colline { fill: none; stroke: #3A2616; stroke-width: .8; stroke-opacity: .7; }
.k-rempart { fill: none; stroke: #3A2616; stroke-width: 1.4; }
.k-tours { fill: #FFFFFF; stroke: #3A2616; stroke-width: 1.1; stroke-linejoin: round; }
.k-fenetres { fill: #3A2616; }
.k-verhal-halo { animation: k-pulse 6s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.k-rayons { fill: none; stroke: #7A2E6E; stroke-width: 1; stroke-opacity: .5; stroke-linecap: round; }
.k-oeil { fill: #F8F0E0; stroke: #3A2616; stroke-width: 1.6; }
.k-iris-f { fill: #7A2E6E; stroke: #3A1630; stroke-width: 1; }
.k-pupille-v { fill: #120A0E; }
.k-iris { animation: k-regard 14s ease-in-out infinite; }
.k-fissure { fill: none; stroke: #FFF4CF; stroke-width: 1.6; stroke-linejoin: round; }
.k-fissure-f { fill: none; stroke: #F2C46B; stroke-width: 6; stroke-opacity: .35; stroke-linejoin: round; }
.k-volcan-lueur { animation: k-flamme 3.4s steps(1, end) infinite; }

/* Les brumes */
.k-brume { animation: k-derive 38s ease-in-out infinite alternate; }
.k-brume--b { animation-duration: 52s; animation-delay: -18s; }
.k-brume--c { animation-duration: 44s; animation-delay: -9s; }

/* L'anneau du lieu choisi */
.k-choix { fill: none; stroke: #8E1E14; stroke-width: 2.6; stroke-dasharray: 7 5; animation: k-tourne 6s linear infinite; }

/* Les écus */
.k-ecu-or { fill: url(#k-or); stroke: #5A3A10; stroke-width: .8; }
.k-ecu-m { fill: none; stroke: #F4EBD6; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.k-ecu-plein { fill: #F4EBD6; }
.k-ecu-rose circle { fill: #F2C4C0; stroke: #5A1A1A; stroke-width: .6; }
.k-ecu-rose circle.k-or { fill: url(#k-or); }
.k-ecu-masque { fill: #F6EEDB; stroke: #3A2616; stroke-width: .8; }
.k-ecu-yeux { fill: #3A2616; stroke: #3A2616; stroke-width: 1; stroke-linecap: round; }

/* Cartouche, rose des vents, échelle */
.k-cart-rouleau { fill: #F4EAD0; stroke: #3A2616; stroke-width: 1.6; }
.k-cart-filet { fill: none; stroke: #8A6A3E; stroke-width: 1; }
.k-cart-or { fill: none; stroke: #C9A24A; stroke-width: 3; }
.k-cart-fleuron { fill: none; stroke: #3A2616; stroke-width: 1.4; stroke-linecap: round; }
.k-rose-cercle { fill: none; stroke: #3A2616; stroke-width: 1; }
.k-rose-fin { stroke-dasharray: 1 3; }
.k-rose-clair { fill: #F4EAD0; stroke: #3A2616; stroke-width: .8; stroke-linejoin: round; }
.k-rose-sombre { fill: url(#k-or); stroke: #3A2616; stroke-width: .8; stroke-linejoin: round; }
.k-rose-fleur { fill: url(#k-or); stroke: #3A2616; stroke-width: .6; }
.k-ech-sombre { fill: #3A2616; }
.k-ech-clair { fill: #F4EAD0; stroke: #3A2616; stroke-width: .8; }

/* Les écritures */
.k-svg text { text-anchor: middle; fill: #2E1E12; paint-order: stroke; stroke: #F1E6CB; stroke-width: 3.5; stroke-linejoin: round; transition: opacity .35s; }
.k-nom-region { font: 400 40px/1 "IM Fell English SC", Georgia, serif; letter-spacing: .14em; }
.k-nom-region--lande { font-size: 26px; fill: #4A4440; }
.k-sous-region { font: italic 500 18px/1 "Cormorant Garamond", Georgia, serif; fill: #6A5440; }
.k-nom-cite { font: 400 20px/1 "IM Fell English SC", Georgia, serif; letter-spacing: .05em; }
.k-nom-lieu.k-nom-capitale { fill: #2E1E12;  font: 400 26px/1 "IM Fell English SC", Georgia, serif; letter-spacing: .22em; }
.k-nom-lieu { font: italic 600 16px/1 "Cormorant Garamond", Georgia, serif; fill: #6A1A14; }
.k-nom-hameau { font: italic 500 14px/1 "Cormorant Garamond", Georgia, serif; fill: #4A3420; }
.k-nom-eau { font: italic 600 13px/1 "Cormorant Garamond", Georgia, serif; fill: #2B4550; letter-spacing: .1em; stroke-width: 2.6; }
.k-nom-mer { font: 400 22px/1 "IM Fell English SC", Georgia, serif; fill: #5A4630; letter-spacing: .4em; stroke: none; opacity: .75; }
.k-nom-relief { font: italic 500 15px/1 "Cormorant Garamond", Georgia, serif; fill: #4A3420; letter-spacing: .14em; }
.k-titre { font: 400 64px/1 "IM Fell English SC", Georgia, serif; letter-spacing: .16em; stroke: none !important; }
.k-titre-sur, .k-titre-sous { font: italic 500 21px/1 "Cormorant Garamond", Georgia, serif; fill: #6A5440; stroke: none; }
.k-rose-n { font: 400 22px/1 "IM Fell English SC", Georgia, serif; stroke: none; }
.k-ech-nom { font: italic 500 16px/1 "Cormorant Garamond", Georgia, serif; stroke: none; }
.k-ech-chiffre { font: 500 13px/1 "Cormorant Garamond", Georgia, serif; stroke: none; }

/* Niveaux de détail : de loin, seulement les terres ; de près, les lieux, les hameaux et les eaux */
.ca-plan[data-niveau="0"] :is(.k-nom-cite, .k-nom-lieu:not(.k-nom-capitale), .k-nom-hameau, .k-nom-eau, .k-nom-relief, .k-sous-region),
.ca-plan[data-niveau="1"] :is(.k-nom-hameau, .k-nom-eau) { opacity: 0; }

@keyframes k-pulse { 0%, 100% { opacity: .65; transform: scale(.94); } 50% { opacity: 1; transform: scale(1.06); } }
@keyframes k-respire { 0%, 100% { transform: scale(.96); } 50% { transform: scale(1.04); } }
@keyframes k-flamme { 0% { opacity: .9; } 13% { opacity: .72; } 21% { opacity: 1; } 38% { opacity: .82; } 47% { opacity: .95; } 61% { opacity: .7; } 70% { opacity: .92; } 86% { opacity: .8; } }
@keyframes k-regard { 0%, 30% { transform: translateX(0); } 40%, 55% { transform: translateX(-6px); } 65%, 80% { transform: translateX(5px) translateY(1px); } 90%, 100% { transform: translateX(0); } }
@keyframes k-derive { from { transform: translateX(-34px); } to { transform: translateX(34px); } }
@keyframes k-fumee { 0%, 100% { transform: translate(0, 0); opacity: 1; } 50% { transform: translate(6px, -5px); opacity: .7; } }
@keyframes k-scintille { 0%, 100% { opacity: .2; } 50% { opacity: 1; } }
@keyframes k-tourne { to { stroke-dashoffset: -120; } }

@media (prefers-reduced-motion: reduce) {
  .ca-lumiere::before, .k-eclats, .k-fumee, .k-halo, .k-aube-lueur, .k-verhal-halo, .k-iris, .k-volcan-lueur, .k-brume, .k-choix,
  .ca-fiche--entree .ca-fiche-corps, .ca-fiche--sortie .ca-fiche-corps { animation: none; }
  .ca-lumiere { display: none; }
}

/* Petits téléphones (320 px) : les boutons de l'en-tête passent en icônes, le libellé reste pour les lecteurs d'écran */
@media (max-width: 359px) {
  .ca-tete { gap: 6px; padding-inline: 10px; }
  .ca-retour, .ca-signes-btn { width: 44px; padding: 0; }
  .ca-retour span, .ca-signes-btn span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}

/* Le titre de la page, pour les moteurs et les lecteurs d'écran (la carte se montre d'elle-même) */
.ca-titre-cache { position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
