/* =====================================================================================
 * My World MC — habillage « Enchantement et Nether », l'option 4 de la maquette du site
 * (/admin/maquette-site.php). JM, 2026-10-12 : « l'option 4 est vraiment bien… on choisit
 * celle-là c'est certain », puis « commence par l'accueil », et le 2026-10-13 « tu peux
 * modifier le site avec notre nouveau skin ». Tout le site le prend par le réglage site_theme
 * (/admin/settings.php ; vide = habillage d'origine), lu par templates/page-header.php : la
 * feuille est chargée après style.css et <body> reçoit la classe theme-nether. Une page peut
 * l'écarter en posant $page_theme = '' avant d'inclure le gabarit.
 *
 * L'identité du site (nuit profonde et or) refaite en blocs : fond d'obsidienne en pixels,
 * or des lingots pour tout ce qui est principal, lueur violette des objets enchantés au
 * survol et au focus, titres de carte en infobulle d'objet, en-tête de tableau en briques
 * du Nether, coulée de lave au pied de page, héros encadré d'obsidienne comme un portail.
 *
 * Aucune ressource externe : textures en PNG 16 x 16 (et 16 x 8) en data:, agrandies sans
 * lissage ; quelques SVG en data: (étincelles, flèche, météo de la barre du haut). Police :
 * pile système monospace. Aucun arrondi.
 * ===================================================================================== */

/* ---------- <body class="theme-nether"> ---------- */
.theme-nether {
  /* Textures (PNG en base64, agrandies x2 ou x3, image-rendering: pixelated) */
  --theme-nether-obsidian: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABuElEQVR42k1Sy27bMBAckyvSYi3bSlLbORgtkAIB2j/oD/TPe+ovFCjgQxMDtRCplkiaS/awsFGdqJ3Z2cfsbOUeAZC2FblhfAUwN42PA2lD2vo4zE2TOCSOApFEAQh2e0iwcVsAABJHQQnX78uHbz9/f08cSBsApM1dsxfovtkD+DMcptDN3tl7Sa3ITaG7iUmHUkq6krb10m0BJA5AUYqUIgC5cGKvlLZmmfMlpulh9fHsT0BRwq5te01D4pg4krakrdTcrJ/68SjT0q59BjCG7pJGyWncVniyvV37/Ov1h0y1WT/Ndu1nALJQ2ckUutq2lzRW5GqzOA2H2+8UOl1KVjMFQCkNlNGfTOVGfwKQ2E+xr207hU4pyvmiFGlDTkrLuDKxqZxSlAuLdi4s0ycO2tm1uJgLCyOxj2kSiXj5mwsD8LEXXb2YP9wqyDbvmj3nJM5UVFdU+9jPTWPNcjFvaek2/Xj83//3q0/9ePRxkBMibcQ4H4cpdFqrauk2b+cXYScOpfDb+UWOL3GUlsSWXJgqcqfhcIUDaXtzQM5TzJH7TRyVwLVthf30+PV24WK8RBq3FYl/nq8dkaIsxc4AAAAASUVORK5CYII=");
  --theme-nether-portal: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABuklEQVR42k1SPW/bMBA980iasiUzhOEEAiJAQ4AubZcO+fmdO3jx6gARqiHSYKsypFKixbLDAUS2A458797H6nHzfY07I0sAaOxpjTuFOkHTuUqhnnxvZNnYk5YFAAAA07IwskzFvnNVfN3YE62NLDtXaVkkaBI0k+/xefvauep2/1Co883X6/wOEBTqTOSX+XwPFgAykTf2hExyprj1nUINAAmaejwSA51HwPHUBE0q9rgVT5yp3tXD0h7UlyVMBJyKR7rtHixna1IyLldebH/U4zHqnnwfga3vSNVBvbzdftKMsBIKNWdqWNrJ/6H17/HXPdhM5AChd7UP3siSZmZkeVAvvasVapqJUKFOxb53NRmaiv3k+zXuMKzABw8AnKnLfPbBc6YykQ9Le7t/cLYmu65zRUo4AXz2OxX7ejwCQEwwqupchc/bV7reyJIs8sFnIk/wYVhagJCJXLCkcxXNjCoQLYp+N/ZEDFQCCgoA8GnzjfxGJpcwR78ph85V7t9fzhQpRCY5vY5toUYRIZFHVaQWJd9FMLoywQcKmCpzmc/jcqWfw9IyI8tYz2iFlgUl2Lv6c+EB4D+YfQlBTzA5egAAAABJRU5ErkJggg==");
  --theme-nether-gold: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABzklEQVR42k1SMWvbQBh9EqYCyabccVWHyoNBp81gKBRvXTx571/oj/APyJJ/kKl7lgxZCp2LCAQOuhjZkEEKBEXc4doWKJikw6PCxw13x3fve+99z3vb37we7k4747abUIq6qADEWRJI5bYbAKEUo+nq5fGqzE2cJV63Xna2qYtqqCIAAA7NcTyf8X80WQB4vr8OpQDQWue77SaQajyfhVLwdTyfdbYhMKsBBFLVRSVSPQDQ2Ya/2YFXAK+HO1aLVHe2GaqozI0fShFI1Vp3aI6hFCLVgVQAosnitDMi1SLVZW5INc4SH0CZG5HqOEvYxG03rXWnnSlz09nGbTfj+awuqjhLAPitdTwFUolUv/v0nWAAhiqqiyqUorMNfQPgdesl7QPw4fO3h58/ertCKVrr6ASrO9t4T7e6l8Uh0ChyE6mmv3wfTVfe399fAqkG72fHh1/4v3rg/hxNFs/31yLVfl1U5F0XFc0mmUAqbg6EcGVuvLf9zf7PBcFIlFwDqcrcDFX08eslB0IU/+XxqrWu18RNAbQBwGlnejivWy971NY6qifv0XTFXPYFdVEN+kieexVnCYN02hk2pLyhirynW92jMqfEO/ftPMv/AFp6HuMDjY60AAAAAElFTkSuQmCC");
  --theme-nether-brick: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABBUlEQVR42qWSsU7DMBCG/ybXxo4IahgyIMFQ8RA8A0+ep2DokMFLURPFbnKWGH7JdWFAwA3xH/ss/9/dbd6eXpyfrUiz3Tk/h6jPd/e9Gw7NHkBna2TRu0GcnwGcLuF0Cdw9TmcAISq1KYW/FIUVsSJMbSsDgAf5l5cZm4fq5tEfQ167R7p6Hz+SJgmRhnk6NPurJe7S1Rf3yVIuCi5e9TtDiJq7/wfDuC5etbP1cTq3lWm2u94N5OlsnU5v+hCiMtursiHjuuQkRAVQcKFvkuRUppS2MiwJc/7ah1RvDhUAAjg/p/7wSMZ1SaORZok1JR4vJ1F41WQ992rK64xReNUQ9dcMn+MfxRSlpy8bAAAAAElFTkSuQmCC");
  --theme-nether-gravel: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAB/klEQVR42k2SQWsTURSFTyZX5tlM4kAfeHFhZipjUJtdG2o3kjaLUoJUpP46EX9BCXXjIiFrFVRIK5FIJ2papnSYhXmRCTzQxa2DdzHMge+ed+59r3T47CCKoiRJAABg5u7+XpZlAI56x8xsrSWiAqBmc721uZFlWX8w1For5RY0AGutfKUTgANACKk8Xx71joWez+dEtNN+kqap0ETk5PmyPxj2B0PRSrnM/OLwOYAoiqy1WZZ1dttpmnpexVrrbG+1AARBPQjqYiOpOrttyS1eUgdPu478GbO4U1NalabT73Lm9YhEQVAv5MtXr8vKVQBWVla+xj91rZL++q2Uury8PD+/AGCM8X1fqZue5xGR7/sEQGtNRMw8niUAPK8ShiGANE3F2FrreZXOTjvLMhJC9iOdkkQGy/OlMQuRskwSVClXKdcYq5Qr0pgF4Iq3DCm7Lr1905PW/mBY3OtkMmk218VbKVdMZYFOQYuO4zhJkjAMR6MTSW/MorW5sf7oQZIko9FJ+VatdhZPi8T3bvu6VjmdxFEUOf/q3fsPa2vhWTxtNO47WmtmZuY8X1prx7MrANVqtbu/9/+LlAh5viw3okjr1e3HW9Wqd3L6JQjq335cAPj46TMArVeJiIge3uXKDUc5f65vunh/xiyYWWs9n8+Z2ZiFGAswnl39BaMwFb+oZtt4AAAAAElFTkSuQmCC");
  --theme-nether-bedrock: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAB3ElEQVR42l1SscryMBS9n/2WUDqkIYUuBUsJOOmkS8ciLg4O3+oT9HF8C19ApE/QrYNLoCJCqVhCBm3JFP/hQpE/Q7jc3Jx7zzn3Z7PZAAAAdF0HAJzz/wKtNQAIIbBmIqWUUgZBoLXOsmysHu80TSmlACCl1Fr/CiHm8zkA/P39IZ4Qous6BE7TdOwmhJBSOtZa3/eTJOn7HgB83+/73nVdxphS6vV6AUAQBFJKay0hxKGUrlarvu/btvU873Q6KaWUUowxxtgwDMMwAIC1FltNhBDH47GqqufziewppZRSJIZFOD2SdpIksdY2TWOtvV6vURQ1TWOMEUK4rtt1XdM0iMI5H4ZhgqioGmJgB4THpzzPtdbr9Vpr7VhrjTFKKUIIDjAMA+e87/vb7QYAu90OAJbLJQCUZfmLGo8G4Z8gCC6Xy5gZT57nDiGEEMI5t9Zut9s4jj+fTxiGcRy3bWuMKcsS4fFMvl3E1GKxaNu2KIqRw+FwwPh8PjuEkCiKZrPZ/X73ff/9fj8ejzAMkZK1Fk2s67quaynlz36/BwA0QUpJKc2yrKoqVExrPZIEgCzLJmEYfgvKOS+KAldwlP9bEscYM4IZY3AFtNaMMdd1cTU454yx6XTqed4/YGgkVozLdwMAAAAASUVORK5CYII=");
  --theme-nether-grass: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACXUlEQVR42k1RTU/bQBAdNuuw608cJ8ZJ60BIgANSQy8cuFVV+R/9Bf1FlfoPeuq1J9Qei0BIhSI+kiamNrZZbGcdxyE9bIuYy4w07715M7P04ctbAMiTEgCIhq9OAwAwaiqL0s5OA/5HnpTeIG62TZwnJdGwN4gFrrPTuDoNZFWSVTPyOADIqjRJZ7UmNWrqJJ3hSTqbpDOjpsqq5A1iFqVCkmiYaPhJ+ImMwst7WZXCy/vhcdBsm52dxpvLF0TD8ie+970hJnuDWP/Ma006PA4q77uv/ny93eTm5tRkvUf4eF+Wc/4tqa/ov72wPMmW94zMm6wlmnRUbk7NyssaaVmmptBREN0sPawl2sOE91znxgtcp45gqdyVOodV2zIyPi1mJWpZpm0ZScZ7rtP/taIptOc6fsh6rnN0fr3RXh0eB5pCAcC2DNsykFjRtgyeFxvtVQCw64amUJ4XB/v9wx8/30VroyASMFUhlX6nXpZzRSYxSyWMy3JeFKWEKzFL/ZB1XccPWX1Fl3CF58ViscApz3WZPj0oyXiScdsyNIUmGfdDBgCjINJlOg5jlRJ0sN8HgIvh7UZ7leeFsAsAlFQFbRzGPdexLWN3ax0AkH/HBCjNckqq8Cz8kFFS3W63/JDxvOB5ocsUCxuibVvG2WAMAJpCBZnnxXMVTaFIpP3X25pCj86vAWB3a/1sMOZ5YVvGKIguhreCMwqiURD9O6t/xxqWvt1utSzTD5lYjOeFOImqkCTjoq44urSMMUJowqeUVBFCdyx5nC8oqcYs7bqOIpNiVmZ82nUdhNBffsgtneeaQYMAAAAASUVORK5CYII=");
  --theme-nether-dirt: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACO0lEQVR42j2Sz27aQBDGJ+s/eG3sJawxLqlpSmi4RIJeeuDSQ6VIfZO+TV+q9+ZSqUmriiRAkM1iLbZZszF1D5sylx3tzjea+X178vXLZ/gfvx9XZ502ACySjWfjgJLAJ/fzJCvEkqVNbOWi1D5evTkL2+tNlvLcb3nYMqvq0KWk22nNV0yUMitEQElIW1V1qAG0D+9eiVJiy+x2WjuxT3neMI2U54auF2I/WyW9TvvHn0cEJwDQMAzkOjgrhChlwrYd6gEAtkwAiBm/GvUnl+dZIa6n4+1ObHcCALRPk8FslTR0vWEadV07thUzvt0Jv+XNn9iv+cq1MQBU1aFhGK6Dtddtq0dPXQcvkk2bNFX1MArvn5Io9BGcBJTEjAeUFGIvnyvUo6cBJVkhhlEYM+46WCXDKLy5mw36XXUJAAElASVIAQ0oEaUc9LsAEPjEdbAo5fV0/O37z4CSRbJRZU3H0sZv/ao6OLalyFTVQcrK0LWU5zHjF1EYM+63PEPXRCnrutZzUXo2PnqXFUKBV/Rixo8+Ku/Q9XSsPB70u6KUalwFV8mWLB1GYUDJ5PIcAFC8ftkpL0rlwDFixrFljvq9mHFRSlFKz8a6GkM9B5TcPiwBwHWwEqtPcGzhOhipY/p+5Dr45m4GAJPL89uHpSil4vP7caU0i2SzSDYvWOM171Bv1O/16GnMuFpMlFIhaTpWVgiVa6FnNHQdIbQTe2yZCKE1z/4eamyZKc8votCxLflcFWJ/EYUIoX/BGC8mFd70UQAAAABJRU5ErkJggg==");
  --theme-nether-lava: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAIAAAB/FOjAAAAA90lEQVR42mWPrU7EQBRGT5cVCJIZAcmoZiqgCFKBobJrICEIHmEVAofkVVBIEgwWzFZWblZtBdnJqpF3EgSoRdxSg73fzz1ftnut2GxTEOPt+4t4R9nYvpWysRQ5my0ApCBA15HJPTEAOA9gvE1BzKwarUDfSoh4BzCNAeeJAeMtRZ4WK3X3rTiPvq1rAP05BTQDDK1/3TEA4h3GWxCKnOPzbH09RNNipUiAtv7HS0Gy3XKenp5Het1TNlZlczfn4228h8jew2Sp848OvruOixt7ODtBEkW+zw+fa3U7z5dwesZEWeuaGLh6rIYNl7dKqGqIw07j7S8QvoAGQqP4lQAAAABJRU5ErkJggg==");
  --theme-nether-sparks: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' shape-rendering='crispEdges'%3E%3Cg fill='%23e2c6ff'%3E%3Crect x='6' y='10' width='3' height='3' opacity='.7'/%3E%3Crect x='40' y='4' width='2' height='2' opacity='.55'/%3E%3Crect x='22' y='34' width='3' height='3' opacity='.45'/%3E%3Crect x='54' y='28' width='2' height='2' opacity='.7'/%3E%3Crect x='12' y='52' width='2' height='2' opacity='.6'/%3E%3Crect x='46' y='50' width='3' height='3' opacity='.35'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='3' shape-rendering='crispEdges'%3E%3Cpath fill='%23ffcc33' d='M0 0h5v1H0zM1 1h3v1H1zM2 2h1v1H2z'/%3E%3C/svg%3E");
  /* Météo de la barre du haut (.meteo-ciel.meteo-<nom>, en fin de feuille). SVG en data:,
     shape-rendering crispEdges, en pixels d'art agrandis x1, x2 ou x3. */
  /* Pluie : les gouttes d'origine (proches 128 px, fond 64 px), reprises telles quelles. */
  --theme-nether-meteo-pluie-proche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='128' height='128' shape-rendering='crispEdges'%3E%3Cg fill='%23a9c8ff'%3E%3Crect x='30' y='33' width='2' height='12' opacity='0.54'/%3E%3Crect x='76' y='121' width='2' height='12' opacity='0.61'/%3E%3Crect x='76' y='-7' width='2' height='12' opacity='0.61'/%3E%3Crect x='8' y='3' width='2' height='12' opacity='0.68'/%3E%3Crect x='60' y='66' width='2' height='12' opacity='0.59'/%3E%3Crect x='24' y='120' width='2' height='12' opacity='0.59'/%3E%3Crect x='24' y='-8' width='2' height='12' opacity='0.59'/%3E%3Crect x='70' y='121' width='2' height='12' opacity='0.55'/%3E%3Crect x='70' y='-7' width='2' height='12' opacity='0.55'/%3E%3Crect x='110' y='38' width='2' height='12' opacity='0.51'/%3E%3Crect x='18' y='99' width='2' height='12' opacity='0.64'/%3E%3Crect x='84' y='16' width='2' height='12' opacity='0.49'/%3E%3Crect x='122' y='10' width='2' height='12' opacity='0.53'/%3E%3Crect x='2' y='68' width='2' height='12' opacity='0.57'/%3E%3Crect x='92' y='99' width='2' height='12' opacity='0.63'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-meteo-pluie-loin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' shape-rendering='crispEdges'%3E%3Cg fill='%238fb2f0'%3E%3Crect x='54' y='50' width='1' height='6' opacity='0.4'/%3E%3Crect x='16' y='46' width='1' height='6' opacity='0.27'/%3E%3Crect x='62' y='27' width='1' height='6' opacity='0.3'/%3E%3Crect x='38' y='53' width='1' height='6' opacity='0.35'/%3E%3Crect x='48' y='44' width='1' height='6' opacity='0.36'/%3E%3Crect x='28' y='43' width='1' height='6' opacity='0.39'/%3E%3Crect x='2' y='35' width='1' height='6' opacity='0.45'/%3E%3Crect x='20' y='41' width='1' height='6' opacity='0.44'/%3E%3Crect x='12' y='27' width='1' height='6' opacity='0.38'/%3E%3C/g%3E%3C/svg%3E");
  /* Soleil : disque carré (10 x 10, x2). */
  --theme-nether-meteo-soleil-disque: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' shape-rendering='crispEdges'%3E%3Cg fill='%23e99a2c'%3E%3Crect x='0' y='0' width='10' height='10' opacity='.8'/%3E%3C/g%3E%3Cg fill='%23ffcf4f'%3E%3Crect x='1' y='1' width='8' height='8' opacity='.8'/%3E%3C/g%3E%3Cg fill='%23ffe48c'%3E%3Crect x='2' y='2' width='6' height='6' opacity='.8'/%3E%3C/g%3E%3Cg fill='%23fff2c2'%3E%3Crect x='3' y='3' width='4' height='4' opacity='.8'/%3E%3C/g%3E%3Cg fill='%23fffbe9'%3E%3Crect x='2' y='2' width='2' height='1' opacity='.8'/%3E%3Crect x='2' y='3' width='1' height='1' opacity='.8'/%3E%3C/g%3E%3C/svg%3E");
  /* Nuages : deux rangs de nuages plats en blocs, les petits au fond (x2), les grands devant (x3). */
  --theme-nether-meteo-nuages-loin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='70' shape-rendering='crispEdges'%3E%3Cg fill='%23ffffff'%3E%3Crect x='14' y='5' width='18' height='1' opacity='.09'/%3E%3Crect x='6' y='7' width='8' height='1' opacity='.09'/%3E%3Crect x='32' y='7' width='10' height='1' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23ece8f7'%3E%3Crect x='14' y='6' width='18' height='2' opacity='.09'/%3E%3Crect x='8' y='8' width='32' height='2' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23b9b1d4'%3E%3Crect x='6' y='8' width='2' height='1' opacity='.09'/%3E%3Crect x='40' y='8' width='2' height='1' opacity='.09'/%3E%3Crect x='8' y='10' width='32' height='1' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23ffffff'%3E%3Crect x='108' y='15' width='14' height='1' opacity='.09'/%3E%3Crect x='104' y='17' width='4' height='1' opacity='.09'/%3E%3Crect x='122' y='17' width='6' height='1' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23ece8f7'%3E%3Crect x='108' y='16' width='14' height='2' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23b9b1d4'%3E%3Crect x='104' y='18' width='24' height='1' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23ffffff'%3E%3Crect x='170' y='42' width='12' height='1' opacity='.09'/%3E%3Crect x='164' y='44' width='6' height='1' opacity='.09'/%3E%3Crect x='182' y='44' width='10' height='1' opacity='.09'/%3E%3Crect x='160' y='46' width='4' height='1' opacity='.09'/%3E%3Crect x='192' y='46' width='4' height='1' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23ece8f7'%3E%3Crect x='170' y='43' width='12' height='2' opacity='.09'/%3E%3Crect x='164' y='45' width='28' height='2' opacity='.09'/%3E%3Crect x='166' y='47' width='18' height='2' opacity='.09'/%3E%3C/g%3E%3Cg fill='%23b9b1d4'%3E%3Crect x='160' y='47' width='6' height='1' opacity='.09'/%3E%3Crect x='184' y='47' width='12' height='1' opacity='.09'/%3E%3Crect x='166' y='49' width='18' height='1' opacity='.09'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-meteo-nuages-pres: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='224' height='46' shape-rendering='crispEdges'%3E%3Cg fill='%23ffffff'%3E%3Crect x='20' y='3' width='20' height='1' opacity='.14'/%3E%3Crect x='10' y='5' width='10' height='1' opacity='.14'/%3E%3Crect x='40' y='5' width='18' height='1' opacity='.14'/%3E%3Crect x='8' y='7' width='2' height='1' opacity='.14'/%3E%3Crect x='58' y='7' width='2' height='1' opacity='.14'/%3E%3C/g%3E%3Cg fill='%23ece8f7'%3E%3Crect x='20' y='4' width='20' height='2' opacity='.14'/%3E%3Crect x='10' y='6' width='48' height='2' opacity='.14'/%3E%3Crect x='16' y='8' width='30' height='2' opacity='.14'/%3E%3C/g%3E%3Cg fill='%23b9b1d4'%3E%3Crect x='8' y='8' width='8' height='1' opacity='.14'/%3E%3Crect x='46' y='8' width='14' height='1' opacity='.14'/%3E%3Crect x='16' y='10' width='30' height='1' opacity='.14'/%3E%3C/g%3E%3Cg fill='%23ffffff'%3E%3Crect x='144' y='29' width='18' height='1' opacity='.14'/%3E%3Crect x='138' y='31' width='6' height='1' opacity='.14'/%3E%3Crect x='162' y='31' width='8' height='1' opacity='.14'/%3E%3C/g%3E%3Cg fill='%23ece8f7'%3E%3Crect x='144' y='30' width='18' height='2' opacity='.14'/%3E%3Crect x='142' y='32' width='22' height='2' opacity='.14'/%3E%3C/g%3E%3Cg fill='%23b9b1d4'%3E%3Crect x='138' y='32' width='4' height='1' opacity='.14'/%3E%3Crect x='164' y='32' width='6' height='1' opacity='.14'/%3E%3Crect x='142' y='34' width='22' height='1' opacity='.14'/%3E%3C/g%3E%3C/svg%3E");
  /* Vent : traînées à deux distances, deux feuilles et un brin de paille (une tuile très large = un passage rare). */
  --theme-nether-meteo-vent-trainees: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='256' height='70' shape-rendering='crispEdges'%3E%3Cg fill='%23dfe7ff'%3E%3Crect x='10' y='9' width='7' height='1' opacity='.04'/%3E%3Crect x='17' y='9' width='7' height='1' opacity='.08'/%3E%3Crect x='24' y='9' width='6' height='1' opacity='.13'/%3E%3Crect x='30' y='9' width='5' height='1' opacity='.17'/%3E%3Crect x='35' y='9' width='5' height='1' opacity='.2'/%3E%3Crect x='150' y='17' width='5' height='1' opacity='.036'/%3E%3Crect x='155' y='17' width='5' height='1' opacity='.072'/%3E%3Crect x='160' y='17' width='4' height='1' opacity='.117'/%3E%3Crect x='164' y='17' width='4' height='1' opacity='.153'/%3E%3Crect x='168' y='17' width='4' height='1' opacity='.18'/%3E%3Crect x='66' y='31' width='9' height='1' opacity='.032'/%3E%3Crect x='75' y='31' width='8' height='1' opacity='.064'/%3E%3Crect x='83' y='31' width='7' height='1' opacity='.104'/%3E%3Crect x='90' y='31' width='6' height='1' opacity='.136'/%3E%3Crect x='96' y='31' width='6' height='1' opacity='.16'/%3E%3Crect x='196' y='45' width='4' height='1' opacity='.036'/%3E%3Crect x='200' y='45' width='4' height='1' opacity='.072'/%3E%3Crect x='204' y='45' width='4' height='1' opacity='.117'/%3E%3Crect x='208' y='45' width='3' height='1' opacity='.153'/%3E%3Crect x='211' y='45' width='3' height='1' opacity='.18'/%3E%3Crect x='112' y='57' width='7' height='1' opacity='.04'/%3E%3Crect x='119' y='57' width='6' height='1' opacity='.08'/%3E%3Crect x='125' y='57' width='6' height='1' opacity='.13'/%3E%3Crect x='131' y='57' width='5' height='1' opacity='.17'/%3E%3Crect x='136' y='57' width='4' height='1' opacity='.2'/%3E%3Crect x='26' y='65' width='4' height='1' opacity='.032'/%3E%3Crect x='30' y='65' width='4' height='1' opacity='.064'/%3E%3Crect x='34' y='65' width='3' height='1' opacity='.104'/%3E%3Crect x='37' y='65' width='3' height='1' opacity='.136'/%3E%3Crect x='40' y='65' width='2' height='1' opacity='.16'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-meteo-vent-trainees-loin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='384' height='140' shape-rendering='crispEdges'%3E%3Cg fill='%23c9d4f2'%3E%3Crect x='40' y='22' width='11' height='1' opacity='.028'/%3E%3Crect x='51' y='22' width='10' height='1' opacity='.056'/%3E%3Crect x='61' y='22' width='9' height='1' opacity='.091'/%3E%3Crect x='70' y='22' width='8' height='1' opacity='.119'/%3E%3Crect x='78' y='22' width='8' height='1' opacity='.14'/%3E%3Crect x='250' y='48' width='7' height='1' opacity='.024'/%3E%3Crect x='257' y='48' width='7' height='1' opacity='.048'/%3E%3Crect x='264' y='48' width='6' height='1' opacity='.078'/%3E%3Crect x='270' y='48' width='5' height='1' opacity='.102'/%3E%3Crect x='275' y='48' width='5' height='1' opacity='.12'/%3E%3Crect x='150' y='74' width='13' height='1' opacity='.024'/%3E%3Crect x='163' y='74' width='12' height='1' opacity='.048'/%3E%3Crect x='175' y='74' width='11' height='1' opacity='.078'/%3E%3Crect x='186' y='74' width='10' height='1' opacity='.102'/%3E%3Crect x='196' y='74' width='10' height='1' opacity='.12'/%3E%3Crect x='320' y='100' width='8' height='1' opacity='.028'/%3E%3Crect x='328' y='100' width='7' height='1' opacity='.056'/%3E%3Crect x='335' y='100' width='7' height='1' opacity='.091'/%3E%3Crect x='342' y='100' width='6' height='1' opacity='.119'/%3E%3Crect x='348' y='100' width='6' height='1' opacity='.14'/%3E%3Crect x='90' y='122' width='10' height='1' opacity='.024'/%3E%3Crect x='100' y='122' width='9' height='1' opacity='.048'/%3E%3Crect x='109' y='122' width='8' height='1' opacity='.078'/%3E%3Crect x='117' y='122' width='7' height='1' opacity='.102'/%3E%3Crect x='124' y='122' width='6' height='1' opacity='.12'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-meteo-vent-feuille-verte: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='6' shape-rendering='crispEdges'%3E%3Cg fill='%232e6a22'%3E%3Crect x='3' y='2' width='1' height='1' opacity='.6'/%3E%3Crect x='2' y='3' width='1' height='1' opacity='.6'/%3E%3Crect x='1' y='4' width='1' height='1' opacity='.6'/%3E%3Crect x='0' y='5' width='1' height='1' opacity='.6'/%3E%3C/g%3E%3Cg fill='%235aa23b'%3E%3Crect x='3' y='0' width='2' height='1' opacity='.6'/%3E%3Crect x='2' y='1' width='1' height='1' opacity='.6'/%3E%3Crect x='4' y='1' width='2' height='1' opacity='.6'/%3E%3Crect x='1' y='2' width='2' height='1' opacity='.6'/%3E%3Crect x='4' y='2' width='2' height='1' opacity='.6'/%3E%3Crect x='0' y='3' width='2' height='1' opacity='.6'/%3E%3Crect x='3' y='3' width='2' height='1' opacity='.6'/%3E%3Crect x='2' y='4' width='2' height='1' opacity='.6'/%3E%3C/g%3E%3Cg fill='%238fcf5c'%3E%3Crect x='3' y='1' width='1' height='1' opacity='.6'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-meteo-vent-feuille-rousse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='6' shape-rendering='crispEdges'%3E%3Cg fill='%238a4718'%3E%3Crect x='3' y='2' width='1' height='1' opacity='.6'/%3E%3Crect x='2' y='3' width='1' height='1' opacity='.6'/%3E%3Crect x='1' y='4' width='1' height='1' opacity='.6'/%3E%3Crect x='0' y='5' width='1' height='1' opacity='.6'/%3E%3C/g%3E%3Cg fill='%23d47f2c'%3E%3Crect x='3' y='0' width='2' height='1' opacity='.6'/%3E%3Crect x='2' y='1' width='1' height='1' opacity='.6'/%3E%3Crect x='4' y='1' width='2' height='1' opacity='.6'/%3E%3Crect x='1' y='2' width='2' height='1' opacity='.6'/%3E%3Crect x='4' y='2' width='2' height='1' opacity='.6'/%3E%3Crect x='0' y='3' width='2' height='1' opacity='.6'/%3E%3Crect x='3' y='3' width='2' height='1' opacity='.6'/%3E%3Crect x='2' y='4' width='2' height='1' opacity='.6'/%3E%3C/g%3E%3Cg fill='%23f2b450'%3E%3Crect x='3' y='1' width='1' height='1' opacity='.6'/%3E%3C/g%3E%3C/svg%3E");
  --theme-nether-meteo-vent-brin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='4' shape-rendering='crispEdges'%3E%3Cg fill='%23dccb91'%3E%3Crect x='3' y='0' width='1' height='1' opacity='.65'/%3E%3Crect x='2' y='1' width='1' height='1' opacity='.65'/%3E%3Crect x='1' y='2' width='1' height='1' opacity='.65'/%3E%3Crect x='0' y='3' width='1' height='1' opacity='.65'/%3E%3C/g%3E%3C/svg%3E");
  /* Orage : pluie penchée par le vent (pente 1/3), nuages en blocs, éclair en pixels de 2 px. */
  --theme-nether-meteo-orage-pluie-proche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='128' height='128' shape-rendering='crispEdges'%3E%3Cpath fill='%23aebfe8' opacity='0.4' d='M82 38h2v6h-2zM84 44h2v6h-2zM86 50h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.36' d='M100 12h2v6h-2zM102 18h2v6h-2zM104 24h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.43' d='M18 24h2v6h-2zM20 30h2v6h-2zM22 36h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.42' d='M54 8h2v6h-2zM56 14h2v6h-2zM58 20h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.45' d='M22 110h2v6h-2zM24 116h2v6h-2zM26 122h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.51' d='M30 56h2v6h-2zM32 62h2v6h-2zM34 68h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.47' d='M74 106h2v6h-2zM76 112h2v6h-2zM78 118h2v6h-2zM42 86h2v6h-2zM44 92h2v6h-2zM46 98h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.44' d='M108 80h2v6h-2zM110 86h2v6h-2zM112 92h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.46' d='M118 116h2v6h-2zM120 122h2v6h-2zM122 0h2v6h-2z'/%3E%3Cpath fill='%23aebfe8' opacity='0.37' d='M124 46h2v6h-2zM126 52h2v6h-2zM0 58h2v6h-2z'/%3E%3C/svg%3E");
  --theme-nether-meteo-orage-pluie-loin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' shape-rendering='crispEdges'%3E%3Cpath fill='%238c9fd0' opacity='0.28' d='M50 50h1v3h-1zM51 53h1v3h-1zM52 56h1v3h-1zM51 7h1v3h-1zM52 10h1v3h-1zM53 13h1v3h-1z'/%3E%3Cpath fill='%238c9fd0' opacity='0.3' d='M13 61h1v3h-1zM14 0h1v3h-1zM15 3h1v3h-1zM62 59h1v3h-1zM63 -2h1v3h-1zM63 62h1v3h-1zM0 1h1v3h-1z'/%3E%3Cpath fill='%238c9fd0' opacity='0.24' d='M24 8h1v3h-1zM25 11h1v3h-1zM26 14h1v3h-1z'/%3E%3Cpath fill='%238c9fd0' opacity='0.33' d='M9 26h1v3h-1zM10 29h1v3h-1zM11 32h1v3h-1zM43 33h1v3h-1zM44 36h1v3h-1zM45 39h1v3h-1z'/%3E%3Cpath fill='%238c9fd0' opacity='0.26' d='M32 44h1v3h-1zM33 47h1v3h-1zM34 50h1v3h-1z'/%3E%3C/svg%3E");
  --theme-nether-meteo-orage-nuages: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='20' shape-rendering='crispEdges'%3E%3Cpath fill='%23423a5f' opacity='0.45' d='M4 0h4v4h-4zM8 0h4v4h-4zM12 0h4v8h-4zM16 0h4v8h-4zM20 0h4v8h-4zM24 0h4v12h-4zM28 0h4v12h-4zM32 0h4v12h-4zM36 0h4v12h-4zM40 0h4v8h-4zM44 0h4v8h-4zM48 0h4v8h-4zM52 0h4v8h-4zM56 0h4v12h-4zM60 0h4v12h-4zM64 0h4v12h-4zM68 0h4v16h-4zM72 0h4v16h-4zM76 0h4v12h-4zM80 0h4v12h-4zM84 0h4v8h-4zM88 0h4v8h-4zM92 0h4v4h-4zM96 0h4v4h-4zM100 0h4v4h-4zM144 0h4v4h-4zM148 0h4v4h-4zM152 0h4v8h-4zM156 0h4v8h-4zM160 0h4v8h-4zM164 0h4v8h-4zM168 0h4v4h-4zM172 0h4v4h-4zM176 0h4v4h-4zM180 0h4v8h-4zM184 0h4v8h-4zM188 0h4v8h-4zM192 0h4v4h-4zM196 0h4v4h-4z'/%3E%3Cpath fill='%232e2747' opacity='0.55' d='M0 0h4v4h-4zM4 4h4v4h-4zM8 4h4v4h-4zM12 8h4v4h-4zM16 8h4v4h-4zM20 8h4v4h-4zM24 12h4v4h-4zM28 12h4v4h-4zM32 12h4v4h-4zM36 12h4v4h-4zM40 8h4v4h-4zM44 8h4v4h-4zM48 8h4v4h-4zM52 8h4v4h-4zM56 12h4v4h-4zM60 12h4v4h-4zM64 12h4v4h-4zM68 16h4v4h-4zM72 16h4v4h-4zM76 12h4v4h-4zM80 12h4v4h-4zM84 8h4v4h-4zM88 8h4v4h-4zM92 4h4v4h-4zM96 4h4v4h-4zM100 4h4v4h-4zM104 0h4v4h-4zM108 0h4v4h-4zM136 0h4v4h-4zM140 0h4v4h-4zM144 4h4v4h-4zM148 4h4v4h-4zM152 8h4v4h-4zM156 8h4v4h-4zM160 8h4v4h-4zM164 8h4v4h-4zM168 4h4v4h-4zM172 4h4v4h-4zM176 4h4v4h-4zM180 8h4v4h-4zM184 8h4v4h-4zM188 8h4v4h-4zM192 4h4v4h-4zM196 4h4v4h-4zM200 0h4v4h-4zM204 0h4v4h-4z'/%3E%3C/svg%3E");
  --theme-nether-meteo-orage-eclair: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='31' shape-rendering='crispEdges'%3E%3Cpath fill='%239d8fff' opacity='0.32' d='M8 0h1v1h-1zM11 0h1v1h-1zM7 1h2v1h-2zM11 1h1v1h-1zM7 2h1v1h-1zM10 2h2v1h-2zM6 3h2v1h-2zM10 3h1v1h-1zM6 4h1v1h-1zM9 4h2v1h-2zM5 5h2v1h-2zM9 5h1v1h-1zM5 6h1v1h-1zM8 6h2v1h-2zM4 7h2v1h-2zM8 7h4v1h-4zM4 8h1v1h-1zM11 8h1v1h-1zM4 9h5v1h-5zM11 9h1v1h-1zM7 10h1v1h-1zM10 10h2v1h-2zM6 11h2v1h-2zM11 11h2v1h-2zM6 12h1v1h-1zM9 12h2v1h-2zM12 12h2v1h-2zM5 13h2v1h-2zM9 13h3v1h-3zM13 13h1v1h-1zM5 14h1v1h-1zM8 14h2v1h-2zM11 14h3v1h-3zM4 15h2v1h-2zM8 15h1v1h-1zM4 16h1v1h-1zM7 16h2v1h-2zM3 17h2v1h-2zM7 17h4v1h-4zM3 18h1v1h-1zM10 18h1v1h-1zM3 19h5v1h-5zM10 19h1v1h-1zM6 20h1v1h-1zM9 20h2v1h-2zM5 21h2v1h-2zM9 21h1v1h-1zM5 22h1v1h-1zM8 22h2v1h-2zM4 23h2v1h-2zM8 23h1v1h-1zM4 24h1v1h-1zM7 24h2v1h-2zM3 25h2v1h-2zM6 25h2v1h-2zM3 26h1v1h-1zM6 26h1v1h-1zM2 27h2v1h-2zM5 27h2v1h-2zM2 28h1v1h-1zM4 28h2v1h-2zM2 29h1v1h-1zM4 29h1v1h-1zM2 30h3v1h-3z'/%3E%3Cpath fill='%23e6deff' opacity='0.6' d='M10 11h1v1h-1zM11 12h1v1h-1zM12 13h1v1h-1z'/%3E%3Cpath fill='%23fffbe6' opacity='0.95' d='M9 0h2v1h-2zM9 1h2v1h-2zM8 2h2v1h-2zM8 3h2v1h-2zM7 4h2v1h-2zM7 5h2v1h-2zM6 6h2v1h-2zM6 7h2v1h-2zM5 8h6v1h-6zM9 9h2v1h-2zM8 10h2v1h-2zM8 11h2v1h-2zM7 12h2v1h-2zM7 13h2v1h-2zM6 14h2v1h-2zM6 15h2v1h-2zM5 16h2v1h-2zM5 17h2v1h-2zM4 18h6v1h-6zM8 19h2v1h-2zM7 20h2v1h-2zM7 21h2v1h-2zM6 22h2v1h-2zM6 23h2v1h-2zM5 24h2v1h-2zM5 25h1v1h-1z'/%3E%3Cpath fill='%23fffbe6' opacity='0.82' d='M4 26h2v1h-2z'/%3E%3Cpath fill='%23fffbe6' opacity='0.69' d='M4 27h1v1h-1z'/%3E%3Cpath fill='%23fffbe6' opacity='0.56' d='M3 28h1v1h-1z'/%3E%3Cpath fill='%23fffbe6' opacity='0.43' d='M3 29h1v1h-1z'/%3E%3C/svg%3E");
  /* Nuit : étoiles fixes, étoiles qui scintillent (4 vignettes de 144 px), lune carrée, étoile filante. */
  --theme-nether-meteo-nuit-etoiles: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='236' height='140' shape-rendering='crispEdges'%3E%3Cpath fill='%23dfe4ff' opacity='0.27' d='M114 120h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.22' d='M114 74h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.35' d='M156 110h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.33' d='M152 60h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.24' d='M50 76h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.28' d='M198 68h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.24' d='M48 32h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.3' d='M226 98h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.41' d='M8 34h2v2h-2z'/%3E%3C/svg%3E");
  --theme-nether-meteo-nuit-scintille: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='576' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff4d6' opacity='0.88' d='M64 2h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.34' d='M62 2h2v2h-2zM66 2h2v2h-2zM64 0h2v2h-2zM64 4h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.6' d='M64 146h2v2h-2zM64 434h2v2h-2zM150 40h2v2h-2zM262 52h2v2h-2zM262 484h2v2h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.3' d='M64 290h2v2h-2zM150 184h2v2h-2zM150 472h2v2h-2zM262 196h2v2h-2zM262 340h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.3' d='M214 10h2v2h-2zM26 8h2v2h-2zM26 440h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.6' d='M214 154h2v2h-2zM214 442h2v2h-2zM26 152h2v2h-2zM26 296h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.88' d='M214 298h2v2h-2z'/%3E%3Cpath fill='%23dfe4ff' opacity='0.34' d='M212 298h2v2h-2zM216 298h2v2h-2zM214 296h2v2h-2zM214 300h2v2h-2z'/%3E%3C/svg%3E");
  --theme-nether-meteo-nuit-lune: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' shape-rendering='crispEdges'%3E%3Cpath fill='%23cfcab6' opacity='0.82' d='M1 0h8v1h-8zM0 1h1v1h-1zM9 1h1v1h-1zM0 2h1v1h-1zM9 2h1v1h-1zM0 3h1v1h-1zM9 3h1v1h-1zM0 4h1v1h-1zM9 4h1v1h-1zM0 5h1v1h-1zM9 5h1v1h-1zM0 6h1v1h-1zM9 6h1v1h-1zM0 7h1v1h-1zM9 7h1v1h-1zM0 8h1v1h-1zM9 8h1v1h-1zM1 9h8v1h-8z'/%3E%3Cpath fill='%23eeeadc' opacity='0.82' d='M1 1h4v1h-4zM6 1h3v1h-3zM1 2h1v1h-1zM4 2h4v1h-4zM1 3h1v1h-1zM4 3h4v1h-4zM1 4h8v1h-8zM1 5h3v1h-3zM5 5h4v1h-4zM1 6h6v1h-6zM2 7h4v1h-4zM8 7h1v1h-1zM1 8h8v1h-8z'/%3E%3Cpath fill='%23c4bfaa' opacity='0.82' d='M5 1h1v1h-1zM2 2h2v1h-2zM2 3h2v1h-2zM7 6h2v1h-2zM6 7h2v1h-2z'/%3E%3Cpath fill='%23d9d4c2' opacity='0.82' d='M8 2h1v1h-1zM8 3h1v1h-1zM4 5h1v1h-1zM1 7h1v1h-1z'/%3E%3C/svg%3E");
  --theme-nether-meteo-nuit-filante: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff4d6' opacity='0.05' d='M0 0h4v1h-4z'/%3E%3Cpath fill='%23fff4d6' opacity='0.1' d='M4 1h3v1h-3z'/%3E%3Cpath fill='%23fff4d6' opacity='0.15' d='M7 1h1v1h-1zM8 2h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.2' d='M9 2h2v1h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.25' d='M11 2h1v1h-1zM12 3h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.3' d='M13 3h1v1h-1zM27 5h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.35' d='M14 3h2v1h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.4' d='M16 4h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.45' d='M17 4h2v1h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.5' d='M19 4h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.55' d='M20 5h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.6' d='M21 5h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.65' d='M22 5h2v1h-2z'/%3E%3Cpath fill='%23fff4d6' opacity='0.7' d='M24 6h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.75' d='M25 6h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.8' d='M26 6h1v1h-1z'/%3E%3Cpath fill='%23fff4d6' opacity='0.85' d='M27 6h1v1h-1z'/%3E%3C/svg%3E");
  /* Neige : flocons proches (boules de 4 ou 3 px aux coins pâles, carrés de 2 px ; tuile de 160) et flocons du
     fond (carrés de 2 px, tuile de 96). */
  --theme-nether-meteo-neige-proche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' shape-rendering='crispEdges'%3E%3Cpath fill='%23f4f7ff' opacity='0.32' d='M96 84h1v1h-1zM99 84h1v1h-1zM96 87h1v1h-1zM99 87h1v1h-1zM58 42h1v1h-1zM60 42h1v1h-1zM58 44h1v1h-1zM60 44h1v1h-1zM98 146h1v1h-1zM100 146h1v1h-1zM98 148h1v1h-1zM100 148h1v1h-1zM62 4h1v1h-1zM65 4h1v1h-1zM62 7h1v1h-1zM65 7h1v1h-1zM112 38h1v1h-1zM114 38h1v1h-1zM112 40h1v1h-1zM114 40h1v1h-1zM38 80h1v1h-1zM40 80h1v1h-1zM38 82h1v1h-1zM40 82h1v1h-1zM32 142h1v1h-1zM35 142h1v1h-1zM32 145h1v1h-1zM35 145h1v1h-1zM56 110h1v1h-1zM58 110h1v1h-1zM56 112h1v1h-1zM58 112h1v1h-1zM158 96h1v1h-1zM0 96h1v1h-1zM158 98h1v1h-1zM0 98h1v1h-1z'/%3E%3Cpath fill='%23f4f7ff' opacity='0.68' d='M97 84h1v1h-1zM98 84h1v1h-1zM96 85h1v1h-1zM99 85h1v1h-1zM96 86h1v1h-1zM99 86h1v1h-1zM97 87h1v1h-1zM98 87h1v1h-1zM59 42h1v1h-1zM58 43h1v1h-1zM60 43h1v1h-1zM59 44h1v1h-1zM99 146h1v1h-1zM98 147h1v1h-1zM100 147h1v1h-1zM99 148h1v1h-1zM63 4h1v1h-1zM64 4h1v1h-1zM62 5h1v1h-1zM65 5h1v1h-1zM62 6h1v1h-1zM65 6h1v1h-1zM63 7h1v1h-1zM64 7h1v1h-1zM113 38h1v1h-1zM112 39h1v1h-1zM114 39h1v1h-1zM113 40h1v1h-1zM39 80h1v1h-1zM38 81h1v1h-1zM40 81h1v1h-1zM39 82h1v1h-1zM33 142h1v1h-1zM34 142h1v1h-1zM32 143h1v1h-1zM35 143h1v1h-1zM32 144h1v1h-1zM35 144h1v1h-1zM33 145h1v1h-1zM34 145h1v1h-1zM57 110h1v1h-1zM56 111h1v1h-1zM58 111h1v1h-1zM57 112h1v1h-1zM159 96h1v1h-1zM158 97h1v1h-1zM0 97h1v1h-1zM159 98h1v1h-1z'/%3E%3Cpath fill='%23f4f7ff' opacity='0.92' d='M97 85h1v1h-1zM98 85h1v1h-1zM97 86h1v1h-1zM98 86h1v1h-1zM59 43h1v1h-1zM99 147h1v1h-1zM63 5h1v1h-1zM64 5h1v1h-1zM63 6h1v1h-1zM64 6h1v1h-1zM113 39h1v1h-1zM39 81h1v1h-1zM33 143h1v1h-1zM34 143h1v1h-1zM33 144h1v1h-1zM34 144h1v1h-1zM57 111h1v1h-1zM159 97h1v1h-1z'/%3E%3Cpath fill='%23f4f7ff' opacity='0.7' d='M146 2h2v2h-2z'/%3E%3Cpath fill='%23f4f7ff' opacity='0.63' d='M14 30h2v2h-2z'/%3E%3Cpath fill='%23f4f7ff' opacity='0.72' d='M130 132h2v2h-2z'/%3E%3C/svg%3E");
  --theme-nether-meteo-neige-loin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' shape-rendering='crispEdges'%3E%3Cpath fill='%23cdd8f2' opacity='0.37' d='M8 4h2v2h-2zM80 24h2v2h-2z'/%3E%3Cpath fill='%23cdd8f2' opacity='0.41' d='M64 84h2v2h-2z'/%3E%3Cpath fill='%23cdd8f2' opacity='0.38' d='M44 26h2v2h-2z'/%3E%3Cpath fill='%23cdd8f2' opacity='0.33' d='M86 50h2v2h-2zM12 64h2v2h-2z'/%3E%3Cpath fill='%23cdd8f2' opacity='0.31' d='M18 32h2v2h-2z'/%3E%3Cpath fill='%23cdd8f2' opacity='0.36' d='M50 62h2v2h-2z'/%3E%3Cpath fill='%23cdd8f2' opacity='0.34' d='M40 84h2v2h-2z'/%3E%3C/svg%3E");
  --theme-nether-font: ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, "DejaVu Sans Mono",
               "Liberation Mono", "Noto Sans Mono", "Droid Sans Mono", monospace;

  /* Teintes propres au thème */
  --theme-nether-ink: #050309;          /* noir d'obsidienne, cases creuses */
  --theme-nether-edge-hi: #3a2a5e;      /* arête claire d'un biseau */
  --theme-nether-edge-lo: #07040c;      /* arête sombre d'un biseau */
  --theme-nether-purple: #a46bff;       /* enchantement */
  --theme-nether-purple-light: #e2c6ff; /* anneau de focus */
  --theme-nether-glow: rgba(164, 107, 255, 0.55);
  --theme-nether-gold-ink: #2b1700;     /* texte posé sur l'or */
  --theme-nether-hover-text: #ffff7a;   /* jaune des boutons survolés, comme en jeu */
  --theme-nether-quartz: #f3ead8;       /* quartz du Nether */
  --theme-nether-tooltip: #100010;      /* fond des infobulles d'objet */

  /* Variables du site, redéfinies : les styles en ligne du HTML (var(--dim),
     var(--accent), var(--green-soft) et var(--red) employés en COULEUR DE TEXTE dans le
     tableau de bord...) suivent le thème. */
  --bg-deep: #0b0713;
  --bg: #0f0a19;
  --bg-soft: #1d1430;
  --bg-card: #170f26;
  --bg-card-hover: #21163a;
  --border: #34245a;
  --border-strong: #5a3f94;
  --text: #efe8f7;
  --text-soft: #cfc4e3;
  --dim: #a99bc4;
  --bright: #fff4d6;
  --accent: #ffcc33;
  --accent-soft: #d99a14;
  --accent-glow: rgba(164, 107, 255, 0.45);
  --red: #ff6a5f;
  --red-bright: #ff6a5f;
  --red-pale: #ffb8b3;
  --red-soft: #2c0b10;
  --green: #2fbf5f;
  --green-bright: #6dff9a;
  --green-soft: #3fdc74;
  --blue: #4aedd9;
  --blue-bright: #a6fbf0;
  --warn: #ff8a1f;
  --warn-bright: #ffc98a;
  --warn-soft: #2c1404;
  --radius: 0;
  --radius-lg: 0;
  --shadow-sm: 2px 2px 0 rgba(0, 0, 0, 0.55);
  --shadow: 4px 4px 0 rgba(0, 0, 0, 0.5);
  --shadow-lg: 6px 6px 0 rgba(0, 0, 0, 0.55);
  --font-sans: var(--theme-nether-font);
  --font-mono: var(--theme-nether-font);
  --font-serif: var(--theme-nether-font);

  display: flex;
  flex-direction: column;
  min-height: 100vh;
  position: relative;
  isolation: isolate;
  /* Barres de défilement (tableau), liste déroulante et icônes natives des champs en
     version sombre, assorties au thème. */
  color-scheme: dark;
  font-family: var(--theme-nether-font);
  font-size: 15px;
  line-height: 1.65;
  color: var(--text);
  text-align: left;
  overflow-wrap: break-word;
  image-rendering: pixelated;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(164, 107, 255, 0.10) 0%, transparent 55%),
    radial-gradient(ellipse at 50% 100%, rgba(255, 110, 20, 0.07) 0%, transparent 60%),
    var(--theme-nether-obsidian) 0 0 / 48px 48px repeat,
    var(--bg);
}

/* ---------- TYPOGRAPHIE ---------- */
.theme-nether h1, .theme-nether h2, .theme-nether h3, .theme-nether h4 {
  font-family: var(--theme-nether-font);
  color: var(--bright);
  font-weight: 800;
  letter-spacing: 0.01em;
  line-height: 1.25;
  text-shadow: 2px 2px 0 #2a1745;
}
.theme-nether h1 { font-size: 30px; margin: 0 0 18px; }
.theme-nether h2 { font-size: 22px; margin: 0 0 12px; }
.theme-nether h3 {
  font-size: 18px;
  margin: 0 0 10px;
  color: var(--accent);
  text-shadow: 2px 2px 0 #3f2a00;
}
.theme-nether p { color: var(--text-soft); margin: 0 0 12px; }
.theme-nether p:last-child { margin-bottom: 0; }
.theme-nether strong, .theme-nether b { color: var(--bright); font-weight: 800; }
.theme-nether li::marker { color: var(--accent); font-weight: 800; }

.theme-nether a {
  color: var(--accent);
  text-decoration: none;
  transition: color 0.12s ease, text-shadow 0.12s ease, background-color 0.12s ease;
}
.theme-nether a:hover { color: var(--theme-nether-hover-text); }

/* Un lien dans une phrase se repère autrement que par sa couleur : souligné épais. */
.theme-nether p a:not(.btn),
.theme-nether li a:not(.btn),
.theme-nether td a:not(.btn),
.theme-nether .stat-label a,
.theme-nether .alert a {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether p a:not(.btn):hover,
.theme-nether li a:not(.btn):hover,
.theme-nether td a:not(.btn):hover,
.theme-nether .stat-label a:hover,
.theme-nether .alert a:hover {
  text-decoration-color: currentColor;
  text-shadow: 0 0 8px var(--theme-nether-glow);
}
/* Une rangée de liens seuls (« Liens rapides ») : chaque lien devient une cible de 40. */
.theme-nether p:has(> a + a):not(:has(> :not(a))) { line-height: 1.4; }
.theme-nether p:has(> a + a):not(:has(> :not(a))) > a:not(.btn) {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 2px;
}

.theme-nether code {
  background: var(--theme-nether-ink);
  border: 2px solid #000;
  border-radius: 0;
  padding: 1px 6px;
  color: var(--accent);
  font-family: var(--theme-nether-font);
}
.theme-nether pre {
  background: var(--theme-nether-ink);
  border: 2px solid #000;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #000, inset -2px -2px 0 #1d1430;
  font-family: var(--theme-nether-font);
}
.theme-nether pre code { background: transparent; border: 0; padding: 0; }
.theme-nether hr { border: 0; border-top: 2px solid var(--border); box-shadow: 0 2px 0 #000; margin: 24px 0; }
.theme-nether ::selection { background: #6a2bc0; color: #ffffff; }

/* Focus clavier : l'anneau violet pâle de l'enchantement, toujours distinct du survol. */
.theme-nether a:focus-visible,
.theme-nether button:focus-visible,
.theme-nether summary:focus-visible,
.theme-nether [tabindex]:focus-visible {
  outline: 3px solid var(--theme-nether-purple-light);
  outline-offset: 2px;
}

/* ---------- EN-TÊTE ---------- */
/* L'en-tête reste collant en haut de l'écran, comme sur le reste du site. */
.theme-nether header.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  padding: 12px 24px 16px;
  gap: 10px 18px;
  border-bottom: 0;
  background:
    linear-gradient(180deg, rgba(5, 3, 9, 0.55) 0%, rgba(5, 3, 9, 0.8) 100%),
    var(--theme-nether-obsidian) 0 0 / 48px 48px repeat,
    var(--bg-deep);
  box-shadow: 0 6px 0 rgba(0, 0, 0, 0.45);
}
/* Liseré de lingots d'or en pixels sous l'en-tête. */
.theme-nether header.site-header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 4px;
  background: repeating-linear-gradient(90deg,
    #fde77a 0 6px, #f2c636 6px 14px, #d99a14 14px 18px, #f9d84a 18px 26px, #a8720c 26px 28px);
  box-shadow: 0 -2px 0 #000, 0 2px 0 #000;
  pointer-events: none;
}
.theme-nether header.site-header .logo {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  min-height: 40px;
  font-family: var(--theme-nether-font);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 0.02em;
  color: var(--bright);
  text-shadow: 2px 2px 0 #2a1745;
}
.theme-nether header.site-header .logo:hover { color: var(--bright); }
/* L'épée du logo est « enchantée » : elle luit en violet. */
.theme-nether header.site-header .logo .accent {
  color: var(--accent);
  text-shadow: 2px 2px 0 #3f2a00, 0 0 8px rgba(164, 107, 255, 0.6);
  animation: theme-nether-enchant 2.8s ease-in-out infinite;
}

/* Horloge : l'horloge du jeu est en or. */
.theme-nether .horloge {
  align-items: center;
  min-height: 34px;
  margin-left: 0;
  padding: 4px 10px;
  border: 2px solid #000;
  border-radius: 0;
  background: var(--theme-nether-ink);
  box-shadow: inset 2px 2px 0 #2b1e47, inset -2px -2px 0 #000, 2px 2px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .horloge-h {
  font-family: var(--theme-nether-font);
  font-size: 15px;
  font-weight: 800;
  color: #ffd84a;
  text-shadow: 2px 2px 0 #3f3000;
}
.theme-nether .horloge-z {
  font-size: 11px;
  font-weight: 700;
  color: var(--dim);
  text-shadow: 1px 1px 0 #000;
}

/* Menu : chaque entrée est une case de la barre d'objets. */
.theme-nether header.site-header nav {
  gap: 4px;
  align-items: center;
  justify-content: flex-end;
}
.theme-nether header.site-header nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 6px 12px;
  border: 2px solid transparent;
  border-radius: 0;
  color: var(--text-soft);
  font-size: 14px;
  font-weight: 700;
  text-shadow: 2px 2px 0 #000;
  transition: background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease;
}
.theme-nether header.site-header nav a:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  border-color: #000;
  box-shadow: inset 2px 2px 0 #3d2c63, inset -2px -2px 0 #0a0611, 0 0 10px rgba(164, 107, 255, 0.35);
}
.theme-nether header.site-header nav a:active {
  box-shadow: inset 2px 2px 0 #0a0611, inset -2px -2px 0 #3d2c63;
}
/* Page courante : un lingot d'or, traversé de temps en temps par le reflet violet. */
.theme-nether header.site-header nav a.active {
  color: var(--theme-nether-gold-ink);
  font-weight: 800;
  text-shadow: 1px 1px 0 rgba(255, 243, 176, 0.55);
  border-color: #000;
  background-color: #f2c636;
  background-image:
    linear-gradient(105deg, transparent 35%, rgba(176, 108, 255, 0.55) 47%, rgba(255, 255, 255, 0.35) 50%, rgba(176, 108, 255, 0.55) 53%, transparent 65%),
    var(--theme-nether-gold);
  background-size: 300% 100%, 32px 32px;
  background-repeat: no-repeat, repeat;
  background-position: 150% 0, 0 0;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -2px 0 #9a6300, 0 0 12px rgba(164, 107, 255, 0.45);
  animation: theme-nether-glint-slow 5s linear infinite;
}
.theme-nether header.site-header nav a.active:hover { color: var(--theme-nether-gold-ink); }

/* Cloche et sa pastille : une braise de lave. */
.theme-nether header.site-header nav a.bell {
  position: relative;
  min-width: 44px;
  padding: 6px 10px;
  font-size: 18px;
  text-shadow: none;
}
.theme-nether header.site-header nav a.bell .badge {
  position: absolute;
  top: -7px;
  right: -7px;
  min-width: 22px;
  padding: 1px 4px;
  border: 2px solid #000;
  border-radius: 0;
  background: linear-gradient(180deg, #ffc23d 0%, #ff7a00 100%);
  color: #200800;
  font: 800 11px/14px var(--theme-nether-font);
  letter-spacing: 0;
  text-transform: none;
  text-align: center;
  text-shadow: none;
  box-shadow: inset 1px 1px 0 #ffe9a8, 0 0 6px rgba(255, 120, 0, 0.6);
  animation: theme-nether-braise 2.4s ease-in-out infinite;
}

/* Enveloppes des petits formulaires du menu (bouton admin, langue). */
.theme-nether header.site-header nav > div,
.theme-nether header.site-header nav > form,
.theme-nether .lang-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0;
}

/* Bouton « Admin ON / OFF » : il arrive avec un style en ligne, d'où les !important.
   On le reconnaît à sa teinte en ligne : vert = ON (bloc d'émeraude), gris = OFF (pierre). */
.theme-nether header.site-header nav button:not([name="lang"]) {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
  min-height: 40px !important;
  margin: 0 !important;
  padding: 6px 12px !important;
  border: 2px solid #000 !important;
  border-radius: 0 !important;
  font: 800 13px/1.2 var(--theme-nether-font) !important;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: filter 0.1s ease;
}
.theme-nether header.site-header nav button[style*="#2d7a3f"] {
  background: linear-gradient(180deg, #5dff95 0%, #17c95a 55%, #12a84b 100%) !important;
  color: #03230f !important;
  text-shadow: none;
  box-shadow: inset 2px 2px 0 #b8ffd0, inset -2px -2px 0 #0a6b2e, 2px 2px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether header.site-header nav button[style*="#444"] {
  background: linear-gradient(180deg, #6b6b6b 0%, #4a4a4a 100%) !important;
  color: #ffffff !important;
  text-shadow: 2px 2px 0 #1e1e1e;
  box-shadow: inset 2px 2px 0 #9a9a9a, inset -2px -2px 0 #2a2a2a, 2px 2px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether header.site-header nav button:not([name="lang"]):hover {
  filter: brightness(1.08) drop-shadow(0 0 6px rgba(164, 107, 255, 0.85));
}
.theme-nether header.site-header nav button:not([name="lang"]):active {
  filter: brightness(0.92);
  transform: translate(1px, 1px);
}

/* Langue : deux cases creuses ; la langue choisie a le cadre d'or de la case active. */
.theme-nether .lang-toggle button,
.theme-nether header.site-header nav button[name="lang"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 40px;
  padding: 4px 8px;
  margin: 0;
  border: 2px solid #000;
  border-radius: 0;
  background: var(--theme-nether-ink);
  color: var(--text-soft);
  font: 800 13px/1 var(--theme-nether-font);
  letter-spacing: 0.04em;
  text-shadow: 2px 2px 0 #000;
  opacity: 1;
  cursor: pointer;
  box-shadow: inset 2px 2px 0 #000, inset -2px -2px 0 #2b1e47;
  transition: background-color 0.1s ease, color 0.1s ease;
}
.theme-nether .lang-toggle button:hover,
.theme-nether header.site-header nav button[name="lang"]:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  opacity: 1;
  box-shadow: inset 2px 2px 0 #000, inset -2px -2px 0 #3d2c63, 0 0 8px rgba(164, 107, 255, 0.4);
}
.theme-nether .lang-toggle button.lang-active,
.theme-nether header.site-header nav button[name="lang"].lang-active {
  background: #2e2205;
  color: #ffd84a;
  border-color: var(--accent);
  box-shadow: inset 0 0 0 2px #000, 0 0 0 2px #000, 0 0 10px rgba(255, 204, 51, 0.35);
  text-shadow: 2px 2px 0 #3f3000;
}
.theme-nether .lang-toggle button:active,
.theme-nether header.site-header nav button[name="lang"]:active {
  transform: translate(1px, 1px);
}

/* Bandeau d'avertissement (mot de passe par défaut) : briques du Nether. */
.theme-nether .banner-warn {
  background: var(--theme-nether-brick) 0 0 / 32px 32px repeat, #2c1116;
  color: var(--theme-nether-quartz);
  border-bottom: 2px solid #000;
  box-shadow: inset 0 -3px 0 #ff4d4d;
  text-shadow: 2px 2px 0 #12070a;
}
.theme-nether .banner-warn a { color: #ffd84a; }

/* ---------- SOUS-MENU ADMIN (pages /admin) ---------- */
.theme-nether .admin-subnav {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  background: linear-gradient(180deg, #1a1029 0%, #120b1e 100%);
  border-bottom: 2px solid #000;
  box-shadow: 0 2px 0 #2b1e47;
  gap: 4px;
  padding: 6px 16px;
}
.theme-nether .admin-subnav-label {
  color: var(--accent);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-shadow: 2px 2px 0 #3f2a00;
  border-right: 2px solid #3c2a60;
}
.theme-nether .admin-subnav a,
.theme-nether .admin-grp > summary {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 4px 10px;
  border: 2px solid transparent;
  border-radius: 0;
  color: var(--text-soft);
  font-weight: 700;
  text-shadow: 2px 2px 0 #000;
}
.theme-nether .admin-subnav a:hover,
.theme-nether .admin-grp > summary:hover,
.theme-nether .admin-grp[open] > summary {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  border-color: #000;
  box-shadow: inset 2px 2px 0 #3d2c63, inset -2px -2px 0 #0a0611;
}
.theme-nether .admin-grp-ici > summary { color: var(--accent); }
.theme-nether .admin-subnav a.active {
  background: var(--theme-nether-gold) 0 0 / 32px 32px repeat, #f2c636;
  color: var(--theme-nether-gold-ink);
  border-color: #000;
  text-shadow: none;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -2px 0 #9a6300;
}
/* Le panneau d'un groupe : une infobulle d'objet enchanté. */
.theme-nether .admin-grp-liste {
  border-radius: 0;
  background: var(--theme-nether-tooltip);
  border: 2px solid #4a00c0;
  border-image: linear-gradient(180deg, #6a2bff 0%, #2a0080 100%) 1;
  box-shadow: 0 0 0 2px var(--theme-nether-tooltip), 6px 6px 0 2px rgba(0, 0, 0, 0.55);
}
.theme-nether .admin-grp-liste::before {
  background: var(--theme-nether-tooltip);
  border-left: 2px solid #6a2bff;
  border-top: 2px solid #6a2bff;
}
.theme-nether .admin-grp-liste a { border-radius: 0; }

/* ---------- CONTENU ---------- */
.theme-nether main.site-main {
  max-width: 1080px;
  margin: 28px auto;
  padding: 0 24px;
  animation: theme-nether-rise 0.35s ease-out both;
}
/* Cadre large ($page_large, templates/page-header.php) : toute la largeur de l'écran, pour
   admin/users.php et admin/logement.php seulement (JM, 2026-10-13). Le thème redéfinit les
   1080 px : il faut le redire ici, pas seulement dans style.css. */
.theme-nether main.site-main.site-main-large { max-width: none; }

/* ---------- HÉROS : un portail du Nether encadré d'obsidienne ---------- */
.theme-nether .hero {
  position: relative;
  overflow: hidden;
  text-align: center;
  padding: 44px 24px;
  margin-bottom: 32px;
  border: 10px solid transparent;
  border-radius: 0;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(190, 120, 255, 0.22) 0%, transparent 60%) padding-box,
    linear-gradient(180deg, rgba(10, 5, 20, 0.35) 0%, rgba(10, 5, 20, 0.65) 100%) padding-box,
    var(--theme-nether-portal) 0 0 / 48px 48px repeat padding-box,
    var(--theme-nether-obsidian) 0 0 / 32px 32px repeat border-box;
  box-shadow: 0 0 0 2px #000, inset 0 0 0 2px #000, inset 0 0 40px rgba(120, 50, 220, 0.35), 8px 8px 0 2px rgba(0, 0, 0, 0.55);
}
/* Reflet qui ondule en diagonale dans le portail. */
.theme-nether .hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    linear-gradient(45deg,
      transparent 38%, rgba(196, 140, 255, 0.08) 38%, rgba(196, 140, 255, 0.08) 46%, transparent 46%,
      transparent 88%, rgba(196, 140, 255, 0.08) 88%, rgba(196, 140, 255, 0.08) 96%, transparent 96%)
    0 0 / 120px 120px;
  animation: theme-nether-portail 9s linear infinite;
}
/* Particules violettes qui montent, comme autour d'un portail. */
.theme-nether .hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  /* Deuxième couche à 128 et non 96 : agrandissement entier, pixels nets.
     Opacité 0.5 et non 0.8 : une étincelle pleine passant sous le titre le tombait à
     2,9 contre 1 ; à 0.5 le pire cas reste au-dessus de 4 contre 1 (titre en gros gras). */
  background:
    var(--theme-nether-sparks) 0 0 / 64px 64px repeat,
    var(--theme-nether-sparks) 32px 20px / 128px 128px repeat;
  opacity: 0.5;
  animation: theme-nether-particules 7s linear infinite;
}
.theme-nether .hero > * { position: relative; z-index: 1; }
.theme-nether .hero .crest {
  width: 88px;
  height: 88px;
  margin: 0 auto 14px;
  filter: drop-shadow(4px 4px 0 rgba(0, 0, 0, 0.6)) drop-shadow(0 0 8px rgba(164, 107, 255, 0.6));
  animation: theme-nether-crest 3.2s ease-in-out infinite;
}
.theme-nether .hero .crest path { shape-rendering: crispEdges; }
.theme-nether .hero h1 {
  font-size: clamp(26px, 7.2vw, 54px);
  margin: 0 0 12px;
  color: var(--bright);
  letter-spacing: 0.02em;
  text-shadow: 3px 3px 0 #2a1745;
}
.theme-nether .hero h1 .accent {
  color: var(--accent);
  text-shadow: 3px 3px 0 #3f2a00, 0 0 10px rgba(164, 107, 255, 0.6);
  animation: theme-nether-enchant-grand 2.8s ease-in-out infinite;
}
/* Le sous-titre est du texte courant posé sur le portail animé : une étincelle qui passe
   dessous le faisait tomber à 2,2 contre 1. Il reçoit un aplat sombre, comme la ligne
   d'état juste en dessous (une entrée de la liste des serveurs). */
.theme-nether .hero .motd {
  display: block;
  width: fit-content;
  max-width: 100%;
  margin: 0 auto 22px;
  padding: 3px 12px;
  background: rgba(13, 8, 24, 0.8);
  color: #ddd2f0;
  font-family: var(--theme-nether-font);
  font-size: 15px;
  font-style: italic;
  text-shadow: 2px 2px 0 #1a0d2e;
}
/* La ligne d'état : une entrée de la liste des serveurs, sur aplat noir. */
.theme-nether .hero .status-line {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px 12px;
  max-width: 100%;
  margin: 18px 0 8px;
  padding: 8px 14px;
  font-size: 15px;
  background: #0d0818;
  border: 2px solid #000;
  box-shadow: inset 2px 2px 0 #2b1e47, inset -2px -2px 0 #000, 4px 4px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .hero .players {
  color: #ffe066;
  font-weight: 800;
  font-family: var(--theme-nether-font);
  text-shadow: 2px 2px 0 #3f3000;
}

.theme-nether .hero-compact {
  border: 2px solid #000;
  border-radius: 0;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(164, 107, 255, 0.18) 0%, transparent 70%),
    var(--bg-card);
  box-shadow: inset 0 4px 0 #d99a14, inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 4px 4px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .hero-compact .subtitle { color: var(--text-soft); font-family: var(--theme-nether-font); }

/* ---------- GRILLES ---------- */
/* min(…, 100%) : sous 375 de large, une colonne ne réclame jamais plus que la place. */
.theme-nether .grid-3 {
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  gap: 18px;
  margin-bottom: 24px;
}
.theme-nether .grid-2 {
  grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
  gap: 18px;
  margin-bottom: 24px;
}
.theme-nether .grid-2 > *, .theme-nether .grid-3 > * { min-width: 0; }
.theme-nether .grid-2 > .card, .theme-nether .grid-3 > .card { margin-bottom: 0; }

/* ---------- CARTES : dalles d'obsidienne biseautées ---------- */
.theme-nether .card {
  background: var(--bg-card);
  border: 2px solid #000;
  border-radius: 0;
  padding: 22px 24px;
  margin-bottom: 20px;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 4px 4px 0 rgba(0, 0, 0, 0.5);
  transition: box-shadow 0.15s ease;
}
.theme-nether .card:hover {
  border-color: #000;
  box-shadow: inset 2px 2px 0 #4a3678, inset -2px -2px 0 #0a0611, 4px 4px 0 rgba(0, 0, 0, 0.5), 0 0 14px rgba(164, 107, 255, 0.2);
}
/* Le titre d'une carte : l'infobulle d'un objet enchanté. */
.theme-nether .card-title {
  display: flex;
  width: fit-content;
  max-width: 100%;
  align-items: center;
  gap: 10px;
  margin: 0 0 16px 2px;
  padding: 5px 12px 5px 10px;
  background: var(--theme-nether-tooltip);
  border: 2px solid #4a00c0;
  border-image: linear-gradient(180deg, #6a2bff 0%, #2a0080 100%) 1;
  box-shadow: 0 0 0 2px var(--theme-nether-tooltip), 4px 4px 0 2px rgba(0, 0, 0, 0.45);
  color: var(--accent);
  font-family: var(--theme-nether-font);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-shadow: 2px 2px 0 #2a1a00;
  text-shadow: 2px 2px 0 color-mix(in srgb, currentColor 25%, #000);
}
/* Étincelle d'enchantement en pixels, à la place du petit trait. */
.theme-nether .card-title::before {
  content: "";
  flex: 0 0 auto;
  display: block;
  width: 2px;
  height: 2px;
  margin: 0 5px 0 4px;
  background: #ffffff;
  box-shadow:
    2px 0 0 #e2c6ff, -2px 0 0 #e2c6ff, 0 2px 0 #e2c6ff, 0 -2px 0 #e2c6ff,
    4px 0 0 rgba(164, 107, 255, 0.85), -4px 0 0 rgba(164, 107, 255, 0.85),
    0 4px 0 rgba(164, 107, 255, 0.85), 0 -4px 0 rgba(164, 107, 255, 0.85);
  animation: theme-nether-scintille 2.2s steps(2, jump-none) infinite;
}

/* ---------- TUILES DE STATISTIQUE ---------- */
.theme-nether .card.stat-tile {
  text-align: center;
  background:
    radial-gradient(ellipse at 50% 45%, rgba(164, 107, 255, 0.10) 0%, transparent 70%),
    var(--bg-card);
}
.theme-nether .stat-tile .stat-value {
  margin: 6px 0;
  font-family: var(--theme-nether-font);
  font-size: 34px;
  font-weight: 800;
  line-height: 1.2;
  color: var(--bright);
  text-shadow: 3px 3px 0 #2a1745;
  overflow-wrap: anywhere;
}
.theme-nether .stat-tile .stat-label {
  color: var(--dim);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-shadow: 1px 1px 0 #000;
}
/* Un lien seul dans une tuile (« non lues ») : texte de 11, cible portée à 40 de haut. */
.theme-nether .stat-tile .stat-label a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 8px;
}

/* ---------- FORMULAIRES : champs creusés comme en jeu ---------- */
.theme-nether label {
  color: var(--text-soft);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-shadow: 1px 1px 0 #000;
}
.theme-nether label.checkbox { font-weight: 600; min-height: 40px; align-items: center; }
.theme-nether input[type="checkbox"],
.theme-nether input[type="radio"] { accent-color: var(--accent); width: 20px; height: 20px; }
.theme-nether input[type="text"],
.theme-nether input[type="email"],
.theme-nether input[type="password"],
.theme-nether input[type="number"],
.theme-nether input[type="search"],
.theme-nether textarea,
.theme-nether select {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  background: var(--theme-nether-ink);
  border: 2px solid #7d6aa3;
  border-radius: 0;
  color: var(--text);
  caret-color: var(--accent);
  font-family: var(--theme-nether-font);
  font-size: 16px;
  box-shadow: inset 2px 2px 0 #000;
  transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.theme-nether input::placeholder,
.theme-nether textarea::placeholder { color: #9c8fb8; opacity: 1; }
.theme-nether input:not([type="checkbox"]):not([type="radio"]):hover,
.theme-nether textarea:hover,
.theme-nether select:hover { border-color: #a08bd0; }
/* Focus d'un champ : bord d'or et halo violet (assez visible pour se passer d'anneau). */
.theme-nether input:not([type="checkbox"]):not([type="radio"]):focus,
.theme-nether textarea:focus,
.theme-nether select:focus {
  outline: none;
  border-color: var(--accent);
  background-color: #0b0713;
  box-shadow: inset 2px 2px 0 #000, 0 0 0 3px rgba(164, 107, 255, 0.55);
}
.theme-nether input[type="checkbox"]:focus-visible,
.theme-nether input[type="radio"]:focus-visible {
  outline: 3px solid var(--theme-nether-purple-light);
  outline-offset: 2px;
}
.theme-nether textarea { min-height: 120px; resize: vertical; line-height: 1.5; }
.theme-nether select {
  -webkit-appearance: none;
  appearance: none;
  padding-right: 42px;
  background-image: var(--theme-nether-arrow);
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 15px 9px;
  cursor: pointer;
}
.theme-nether select option { background: var(--theme-nether-ink); color: var(--text); }
.theme-nether .field { margin-bottom: 18px; }
.theme-nether .field .help { color: var(--dim); font-size: 12px; }

/* ---------- BOUTONS ---------- */
/* Principal : un lingot d'or biseauté. Survol : le reflet violet d'un objet enchanté
   passe dessus. Appui : le biseau s'inverse, le bouton s'enfonce. */
.theme-nether .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
  min-height: 44px;
  padding: 10px 20px;
  border: 2px solid #000;
  border-radius: 0;
  color: var(--theme-nether-gold-ink);
  font-family: var(--theme-nether-font);
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  text-shadow: 1px 1px 0 rgba(255, 243, 176, 0.5);
  vertical-align: middle;
  cursor: pointer;
  background-color: #f2c636;
  background-image: var(--theme-nether-gold);
  background-size: 32px 32px;
  background-repeat: repeat;
  background-position: 0 0;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -3px 0 #9a6300, 3px 3px 0 rgba(0, 0, 0, 0.55);
  filter: none;
  transform: none;
  transition: box-shadow 0.1s ease, transform 0.05s ease;
}
.theme-nether .btn:hover {
  color: var(--theme-nether-gold-ink);
  filter: none;
  transform: none;
  background-image:
    linear-gradient(105deg, transparent 35%, rgba(176, 108, 255, 0.5) 46%, rgba(255, 255, 255, 0.3) 50%, rgba(176, 108, 255, 0.5) 54%, transparent 65%),
    var(--theme-nether-gold);
  background-size: 300% 100%, 32px 32px;
  background-repeat: no-repeat, repeat;
  background-position: 150% 0, 0 0;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -3px 0 #9a6300, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 14px rgba(164, 107, 255, 0.7);
  animation: theme-nether-glint 1.4s linear infinite;
}
.theme-nether .btn:active {
  transform: translate(2px, 2px);
  box-shadow: inset 2px 2px 0 #9a6300, inset -2px -2px 0 #fff3b0, 1px 1px 0 rgba(0, 0, 0, 0.55);
}

/* Secondaire : une dalle d'obsidienne au texte de quartz. */
.theme-nether .btn-secondary {
  color: var(--theme-nether-quartz);
  text-shadow: 2px 2px 0 #1a0d2e;
  background-color: #1d1430;
  background-image: var(--theme-nether-obsidian);
  background-size: 32px 32px;
  border: 2px solid #000;
  box-shadow: inset 2px 2px 0 #5a3f94, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether .btn-secondary:hover,
.theme-nether a.btn-secondary:hover {
  color: var(--theme-nether-hover-text);
  background-image:
    linear-gradient(105deg, transparent 35%, rgba(176, 108, 255, 0.35) 46%, rgba(220, 190, 255, 0.2) 50%, rgba(176, 108, 255, 0.35) 54%, transparent 65%),
    var(--theme-nether-obsidian);
  background-size: 300% 100%, 32px 32px;
  box-shadow: inset 2px 2px 0 #8a5cd6, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 14px rgba(164, 107, 255, 0.6);
}
/* a.btn-x:hover pèse plus lourd que .btn-x:active : sans la variante « a. », un lien
   habillé en bouton ne s'enfonçait pas à l'appui (le biseau restait celui du survol). */
.theme-nether .btn-secondary:active,
.theme-nether a.btn-secondary:active {
  box-shadow: inset 2px 2px 0 #050309, inset -2px -2px 0 #5a3f94, 1px 1px 0 rgba(0, 0, 0, 0.55);
}

/* Attention : la lave. */
.theme-nether .btn-warn {
  color: #2a0e00;
  text-shadow: 1px 1px 0 rgba(255, 224, 160, 0.5);
  background-color: #ff9a2a;
  background-image: linear-gradient(180deg, #ffb84d 0%, #ff8a1f 100%);
  background-size: auto;
  box-shadow: inset 2px 2px 0 #ffe0a0, inset -2px -3px 0 #a8400a, 3px 3px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether .btn-warn:hover,
.theme-nether a.btn-warn:hover {
  color: #2a0e00;
  background-image:
    linear-gradient(105deg, transparent 35%, rgba(176, 108, 255, 0.4) 46%, rgba(255, 255, 255, 0.25) 50%, rgba(176, 108, 255, 0.4) 54%, transparent 65%),
    linear-gradient(180deg, #ffb84d 0%, #ff8a1f 100%);
  background-size: 300% 100%, auto;
  box-shadow: inset 2px 2px 0 #ffe0a0, inset -2px -3px 0 #a8400a, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 14px rgba(255, 138, 31, 0.6);
}
.theme-nether .btn-warn:active,
.theme-nether a.btn-warn:active {
  box-shadow: inset 2px 2px 0 #a8400a, inset -2px -2px 0 #ffe0a0, 1px 1px 0 rgba(0, 0, 0, 0.55);
}

/* Danger : la brique rouge du Nether, texte blanc. */
.theme-nether .btn-danger {
  color: #ffffff;
  text-shadow: 2px 2px 0 #3a0306;
  background-color: #a3161c;
  background-image: linear-gradient(180deg, #c4222a 0%, #8e1218 100%);
  background-size: auto;
  box-shadow: inset 2px 2px 0 #ff6b6b, inset -2px -3px 0 #4a0508, 3px 3px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether .btn-danger:hover,
.theme-nether a.btn-danger:hover {
  color: #ffffff;
  background-image:
    linear-gradient(105deg, transparent 35%, rgba(176, 108, 255, 0.3) 46%, rgba(255, 255, 255, 0.12) 50%, rgba(176, 108, 255, 0.3) 54%, transparent 65%),
    linear-gradient(180deg, #c4222a 0%, #8e1218 100%);
  background-size: 300% 100%, auto;
  box-shadow: inset 2px 2px 0 #ff6b6b, inset -2px -3px 0 #4a0508, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 14px rgba(255, 80, 60, 0.55);
}
.theme-nether .btn-danger:active,
.theme-nether a.btn-danger:active {
  box-shadow: inset 2px 2px 0 #4a0508, inset -2px -2px 0 #ff6b6b, 1px 1px 0 rgba(0, 0, 0, 0.55);
}

/* Un lien habillé en bouton garde la couleur de sa variante au survol. */
.theme-nether a.btn:hover { color: var(--theme-nether-gold-ink); }
.theme-nether a.btn-secondary:hover { color: var(--theme-nether-hover-text); }
.theme-nether a.btn-danger:hover { color: #ffffff; }
.theme-nether a.btn-warn:hover { color: #2a0e00; }

.theme-nether .btn-small { min-height: 40px; padding: 6px 14px; font-size: 13px; }
.theme-nether .btn-block { display: flex; width: 100%; }

/* Boutons et pastilles alignés dans un paragraphe : au téléphone ils passent à la ligne, et
   sans marge verticale les rangées se touchaient (l'ombre de l'une mordait l'autre). */
.theme-nether p > .btn,
.theme-nether p > .btn-copy { margin-block: 4px; }
.theme-nether p > .badge { margin-block: 3px; }

/* Bouton « Copier » de l'adresse du serveur. */
.theme-nether .btn-copy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35em;
  min-height: 40px;
  padding: 6px 14px;
  border: 2px solid #000;
  border-radius: 0;
  color: var(--theme-nether-gold-ink);
  font-family: var(--theme-nether-font);
  font-size: 13px;
  font-weight: 800;
  background-color: #f2c636;
  background-image: var(--theme-nether-gold);
  background-size: 32px 32px;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -2px 0 #9a6300, 3px 3px 0 rgba(0, 0, 0, 0.55);
  transition: box-shadow 0.1s ease, transform 0.05s ease;
}
.theme-nether .btn-copy:hover {
  background-color: #f2c636;
  background-image:
    linear-gradient(105deg, transparent 35%, rgba(176, 108, 255, 0.5) 46%, rgba(255, 255, 255, 0.3) 50%, rgba(176, 108, 255, 0.5) 54%, transparent 65%),
    var(--theme-nether-gold);
  background-size: 300% 100%, 32px 32px;
  background-repeat: no-repeat, repeat;
  background-position: 150% 0, 0 0;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -2px 0 #9a6300, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 12px rgba(164, 107, 255, 0.7);
  animation: theme-nether-glint 1.4s linear infinite;
}
.theme-nether .btn-copy:active {
  transform: translate(2px, 2px);
  box-shadow: inset 2px 2px 0 #9a6300, inset -2px -2px 0 #fff3b0, 1px 1px 0 rgba(0, 0, 0, 0.55);
}
/* Copié : un bloc d'émeraude. */
.theme-nether .btn-copy.copied,
.theme-nether .btn-copy.copied:hover {
  color: #03230f;
  animation: none;
  background-color: #17c95a;
  background-image: linear-gradient(180deg, #5dff95 0%, #17c95a 100%);
  background-size: auto;
  box-shadow: inset 2px 2px 0 #b8ffd0, inset -2px -2px 0 #0a6b2e, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 12px rgba(63, 220, 116, 0.6);
}
/* Échec : brique rouge. */
.theme-nether .btn-copy.copy-fail,
.theme-nether .btn-copy.copy-fail:hover {
  color: #ffffff;
  text-shadow: 2px 2px 0 #3a0306;
  animation: none;
  background-color: #a3161c;
  background-image: linear-gradient(180deg, #c4222a 0%, #8e1218 100%);
  background-size: auto;
  box-shadow: inset 2px 2px 0 #ff6b6b, inset -2px -2px 0 #4a0508, 3px 3px 0 rgba(0, 0, 0, 0.55);
}

/* Boutons-icônes des tableaux d'administration. */
.theme-nether .btn-ico {
  width: 34px;
  height: 32px;
  border: 2px solid #000;
  border-radius: 0;
  background: var(--bg-soft);
  color: var(--text-soft);
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #07040c;
}
.theme-nether .btn-ico:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  border-color: #000;
  box-shadow: inset 2px 2px 0 #4a3678, inset -2px -2px 0 #07040c, 0 0 8px var(--theme-nether-glow);
}
.theme-nether .btn-ico:active { box-shadow: inset 2px 2px 0 #07040c, inset -2px -2px 0 #2e2148; }
.theme-nether .btn-ico-danger:hover { background: #3a0d12; color: #ffb8b3; border-color: #000; }
.theme-nether a.btn-ico:hover { color: var(--theme-nether-hover-text); }
.theme-nether .btn-ico::after {
  background: var(--theme-nether-tooltip);
  color: var(--text);
  border: 2px solid #4a00c0;
  border-radius: 0;
  font-family: var(--theme-nether-font);
}

/* ---------- PASTILLES : petites étiquettes carrées ---------- */
.theme-nether .badge {
  display: inline-block;
  padding: 3px 9px;
  border: 2px solid;
  border-radius: 0;
  font-family: var(--theme-nether-font);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.4;
  text-transform: uppercase;
  text-shadow: 1px 1px 0 #000;
  box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.12), 2px 2px 0 rgba(0, 0, 0, 0.5);
}
/* Vert émeraude : en ligne, approuvé. */
.theme-nether .badge-online,
.theme-nether .badge-approved  { background: #0a3a1c; color: #6dff9a; border-color: #17c95a; }
/* Rouge redstone : hors ligne, refusé, révoqué, suspendu. */
.theme-nether .badge-offline,
.theme-nether .badge-denied,
.theme-nether .badge-revoked,
.theme-nether .badge-suspended { background: #3a0a0e; color: #ff8a80; border-color: #d0252d; }
/* Or : en attente. */
.theme-nether .badge-pending   { background: #3a2a00; color: #ffd84a; border-color: #e0a800; }
/* Lave : avertissement. */
.theme-nether .badge-warn      { background: #3a1800; color: #ffb066; border-color: #ff7a1a; }
/* Pierre : retiré. */
.theme-nether .badge-withdrawn { background: #241d2e; color: #c4b8d8; border-color: #5a4d6e; }
/* Barreaux de fer : en prison, dans le jeu (membre de guilde emprisonné). */
.theme-nether .badge-prison {
  color: #ececec;
  border-color: #8a8a8a;
  background:
    repeating-linear-gradient(90deg, #2a2a2a 0 5px, #3a3a3a 5px 7px),
    #2a2a2a;
}
/* Pierre grise, sans barreaux : compte du site archivé. Ce n'est pas la prison du jeu. */
.theme-nether .badge-archive   { background: #2a2a2a; color: #cfcfcf; border-color: #6a6a6a; }
/* Suppression en attente : ambre, cadre en tirets (en sursis). */
.theme-nether .badge-pending-del { background: #4a2f05; color: #ffd180; border: 2px dashed #e0a800; }

/* ---------- ALERTES : panneaux à bord coloré, icône dans une case ---------- */
.theme-nether .alert {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px 10px 10px;
  margin-bottom: 14px;
  border: 2px solid #000;
  border-left-width: 6px;
  border-radius: 0;
  font-family: var(--theme-nether-font);
  font-size: 14px;
  font-weight: 600;
  text-shadow: 1px 1px 0 #000;
  box-shadow: inset 2px 2px 0 rgba(255, 255, 255, 0.06), 3px 3px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .alert::before {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 2px solid currentColor;
  background: rgba(0, 0, 0, 0.4);
  font-size: 16px;
  font-weight: 800;
  line-height: 1;
  box-shadow: inset 2px 2px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .alert-success { background: #0c2616; border-color: #000; border-left-color: #3fdc74; color: #8dffb0; }
.theme-nether .alert-info    { background: #0a2229; border-color: #000; border-left-color: #4aedd9; color: #a6fbf0; }
.theme-nether .alert-warning { background: #2c1404; border-color: #000; border-left-color: #ff8a1f; color: #ffc98a; }
.theme-nether .alert-error {
  background: var(--theme-nether-brick) 0 0 / 32px 32px repeat, #2c1116;
  border-color: #000;
  border-left-color: #ff4d4d;
  color: #ffb8b3;
  text-shadow: 2px 2px 0 #12070a;
}
.theme-nether .alert-error::before { background: rgba(18, 7, 10, 0.85); }

/* ---------- TABLEAUX : en-tête en briques du Nether, texte de quartz ---------- */
.theme-nether .table-defile {
  border: 2px solid #000;
  background: var(--bg-deep);
  box-shadow: inset 2px 2px 0 #000, 4px 4px 0 rgba(0, 0, 0, 0.45);
}
.theme-nether table { width: 100%; border-collapse: collapse; font-size: 14px; }
.theme-nether th,
.theme-nether td { padding: 12px 14px; text-align: left; }
.theme-nether th {
  background: var(--theme-nether-brick) 0 0 / 32px 32px repeat, #2c1116;
  color: var(--theme-nether-quartz);
  font-family: var(--theme-nether-font);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-shadow: 2px 2px 0 #12070a;
  white-space: nowrap;
  border-bottom: 3px solid #d99a14;
}
.theme-nether td {
  color: var(--text);
  border-bottom: 2px solid #241838;
  background: var(--bg-deep);
}
.theme-nether tbody tr:nth-child(even) td { background: #120c1e; }
/* Bandeau de gravier de la page Serveur : il sépare ce que les outils ouvrent de ce que fait le greffon
   (JM, 2026-10-13 : « est-ce que tu peux simuler du gravier pour ce bandeau ? »). */
.theme-nether tr.bandeau-gravier > th {
  background: var(--theme-nether-gravel) 0 0 / 32px 32px repeat, #7a7675;
  border-bottom-color: #4f4b4a;
}
/* Terre et gazon en haut du même tableau (JM, 2026-10-13 : « tu peux essayer de mettre de la dirt avec son
   gazon vert ») : le côté du bloc d'herbe sur une rangée, puis la terre seule en dessous. */
.theme-nether tr.bandeau-gazon > th {
  background:
    var(--theme-nether-grass) 0 0 / 32px 32px repeat-x,
    var(--theme-nether-dirt) 0 32px / 32px 32px repeat,
    #866043;
  border-bottom-color: #4a3322;
}
/* Bedrock sous la dernière ligne du même tableau (JM, 2026-10-13 : « sous la prison, tu peux mettre de la bedrock ? »). */
.theme-nether tr.bandeau-bedrock > th {
  background: var(--theme-nether-bedrock) 0 0 / 32px 32px repeat, #2a2a2a;
  border-bottom: 0;
}
.theme-nether tbody tr:hover td,
.theme-nether tr:hover td { background: var(--bg-card-hover); }
.theme-nether tr:last-child td { border-bottom: 0; }
/* Tableau resserré (admin/users.php, puis les actes de propriété de admin/logement.php) : 6 px
   de marge sur les côtés au lieu de 14, et l'en-tête peut passer sur deux lignes, en 11 px
   comme au téléphone. Sur users.php, insécables, « PSEUDO MINECRAFT » et
   « DERNIÈRE CONNEXION » réclamaient à eux deux près de 300 px en chasse fixe : le tableau
   défilait de côté. Mesuré dans Chromium le 2026-10-13, avec un nom et un pseudo de
   16 caractères : plus de barre dès 1280 px de large, même avec une barre verticale classique. */
.theme-nether .table-serree th,
.theme-nether .table-serree td { padding: 8px 6px; }
.theme-nether .table-serree th { white-space: normal; font-size: 11px; letter-spacing: 0.04em; }

/* ---------- NOTIFICATIONS : messages du chat ---------- */
.theme-nether .notif-item {
  padding: 12px 14px;
  margin-bottom: 10px;
  border: 2px solid #000;
  border-left: 6px solid #7d6aa3;
  border-radius: 0;
  background: var(--bg-soft);
  color: var(--text);
  box-shadow: inset 2px 2px 0 rgba(255, 255, 255, 0.04), 3px 3px 0 rgba(0, 0, 0, 0.45);
  transition: background-color 0.12s ease, border-color 0.12s ease;
}
.theme-nether .notif-item:hover { background: var(--bg-card-hover); border-left-color: var(--theme-nether-purple); }
/* Non lue : bord d'or et léger halo violet, comme un objet enchanté. */
.theme-nether .notif-item.unread {
  border-left-color: var(--accent);
  background:
    linear-gradient(90deg, rgba(164, 107, 255, 0.14) 0%, transparent 60%),
    #1a1230;
  box-shadow: inset 0 0 0 1px rgba(164, 107, 255, 0.35), 3px 3px 0 rgba(0, 0, 0, 0.45);
}
.theme-nether .notif-item.unread:hover {
  background:
    linear-gradient(90deg, rgba(164, 107, 255, 0.22) 0%, transparent 70%),
    #21163a;
}
.theme-nether .notif-item .notif-title {
  color: var(--bright);
  font-weight: 800;
  font-size: 15px;
  text-shadow: 2px 2px 0 #1a0d2e;
}
.theme-nether .notif-item .notif-title.notif-success { color: #8dffb0; }
.theme-nether .notif-item .notif-title.notif-warning { color: #ffc98a; }
.theme-nether .notif-item .notif-title.notif-danger  { color: #ffb8b3; }
.theme-nether .notif-item .notif-meta { color: var(--dim); font-size: 12px; }
.theme-nether .notif-item .notif-body { color: var(--text-soft); font-size: 14px; }

/* ---------- DÉPLIANTS ---------- */
.theme-nether details summary { min-height: 40px; cursor: pointer; }
.theme-nether details summary::before { color: var(--accent); text-shadow: 1px 1px 0 #3f2a00; }
.theme-nether details > summary.btn::before,
.theme-nether details > summary.btn-ico::before { content: none; display: none; }
.theme-nether .pilier-carte { border-radius: 0; }
.theme-nether .pilier-carte { border: 2px solid #000; border-left: 4px solid #3fdc74; background: var(--bg-soft); }
.theme-nether .pilier-carte.pilier-rouge { border-left-color: var(--warn); }

/* ---------- PIED DE PAGE : une coulée de lave ---------- */
.theme-nether footer.site-footer {
  position: relative;
  margin-top: 48px;
  padding: 30px 16px 22px;
  border-top: 0;
  background:
    linear-gradient(180deg, rgba(255, 100, 0, 0.08) 0%, transparent 44px),
    var(--theme-nether-ink);
  color: var(--dim);
  font-size: 13px;
  text-align: center;
  text-shadow: 1px 1px 0 #000;
}
.theme-nether footer.site-footer::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 10px;
  background: var(--theme-nether-lava) 0 0 / 32px 16px repeat-x;
  box-shadow: 0 2px 0 #000, 0 -4px 14px rgba(255, 110, 0, 0.35);
  animation: theme-nether-lave 8s linear infinite;
  pointer-events: none;
}
.theme-nether footer.site-footer a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 6px;
  margin: 0 2px;
  color: var(--text-soft);
  font-weight: 700;
  text-shadow: 2px 2px 0 #000;
}
.theme-nether footer.site-footer a:hover {
  color: var(--accent);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}

/* ---------- ANIMATIONS ---------- */
@keyframes theme-nether-rise {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}
/* Reflet d'enchantement : la première couche (le reflet) traverse, la seconde (la
   texture) reste en place. */
@keyframes theme-nether-glint {
  from { background-position: 150% 0, 0 0; }
  to   { background-position: -50% 0, 0 0; }
}
@keyframes theme-nether-glint-slow {
  0%        { background-position: 150% 0, 0 0; }
  40%, 100% { background-position: -50% 0, 0 0; }
}
@keyframes theme-nether-enchant {
  0%, 100% { text-shadow: 2px 2px 0 #3f2a00, 0 0 5px rgba(164, 107, 255, 0.45); }
  50%      { text-shadow: 2px 2px 0 #3f2a00, 0 0 14px rgba(196, 140, 255, 0.95); }
}
@keyframes theme-nether-enchant-grand {
  0%, 100% { text-shadow: 3px 3px 0 #3f2a00, 0 0 6px rgba(164, 107, 255, 0.45); }
  50%      { text-shadow: 3px 3px 0 #3f2a00, 0 0 18px rgba(196, 140, 255, 0.95); }
}
@keyframes theme-nether-crest {
  0%, 100% { filter: drop-shadow(4px 4px 0 rgba(0, 0, 0, 0.6)) drop-shadow(0 0 6px rgba(164, 107, 255, 0.45)); }
  50%      { filter: drop-shadow(4px 4px 0 rgba(0, 0, 0, 0.6)) drop-shadow(0 0 16px rgba(200, 150, 255, 0.95)); }
}
@keyframes theme-nether-portail {
  to { background-position: 120px -120px; }
}
@keyframes theme-nether-particules {
  to { background-position: 0 -64px, 32px -108px; }
}
@keyframes theme-nether-braise {
  0%, 100% { box-shadow: inset 1px 1px 0 #ffe9a8, 0 0 4px rgba(255, 120, 0, 0.5); }
  50%      { box-shadow: inset 1px 1px 0 #ffe9a8, 0 0 12px rgba(255, 140, 0, 0.95); }
}
@keyframes theme-nether-scintille {
  50% { opacity: 0.35; }
}
@keyframes theme-nether-lave {
  to { background-position: 64px 0; }
}

/* ---------- TÉLÉPHONE ---------- */
@media (max-width: 720px) {
  .theme-nether header.site-header { padding: 10px 12px 14px; gap: 8px 10px; }
  .theme-nether header.site-header .logo { font-size: 19px; }
  .theme-nether .horloge { margin-left: auto; }
  /* Le menu passe à la ligne, en rangées pleines de cases, sans défilement horizontal. */
  .theme-nether header.site-header nav {
    width: 100%;
    margin-left: 0;
    padding-bottom: 0;
    overflow: visible;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 4px;
  }
  .theme-nether header.site-header nav > a,
  .theme-nether header.site-header nav > div,
  .theme-nether header.site-header nav > form { flex: 1 1 auto; }
  .theme-nether header.site-header nav > div > button,
  .theme-nether header.site-header nav > form > button { flex: 1 1 auto; }
  .theme-nether header.site-header nav a { padding: 6px 10px; font-size: 13px; white-space: nowrap; }
  .theme-nether header.site-header nav a.bell { padding: 6px 10px; font-size: 18px; }
  .theme-nether main.site-main { padding: 0 12px; margin: 18px auto; }
  .theme-nether h1 { font-size: 24px; }
  .theme-nether h2 { font-size: 20px; }
  .theme-nether .card { padding: 16px; }
  .theme-nether .hero { padding: 26px 12px; border-width: 8px; margin-bottom: 24px; }
  .theme-nether .hero h1 { text-shadow: 2px 2px 0 #2a1745; }
  .theme-nether .hero .status-line { font-size: 14px; padding: 8px 10px; gap: 6px 10px; }
  .theme-nether .grid-3, .theme-nether .grid-2 { gap: 12px; }
  .theme-nether .stat-tile .stat-value { font-size: 28px; }
  .theme-nether th, .theme-nether td { padding: 10px 8px; }
  .theme-nether th { font-size: 11px; letter-spacing: 0.04em; }
  .theme-nether .admin-subnav { padding: 6px 10px; }
}
@media (max-width: 640px) {
  .theme-nether .horloge { padding: 3px 8px; }
  .theme-nether .admin-grp-liste { box-shadow: none; }
}

/* Sans survol (téléphone) : les boutons-icônes montrent leur mot, en cible de 40. */
@media (hover: none) {
  .theme-nether .btn-ico { width: auto; height: auto; min-height: 40px; padding: 5px 10px; }
}

/* Mouvements réduits : plus aucune animation ni transition. */
@media (prefers-reduced-motion: reduce) {
  .theme-nether,
  .theme-nether *,
  .theme-nether *::before,
  .theme-nether *::after {
    animation: none !important;
    transition: none !important;
  }
  /* Le reflet ne défile plus : il reste posé au milieu du bouton survolé. */
  .theme-nether .btn:hover,
  .theme-nether .btn-copy:hover { background-position: 50% 0, 0 0; }
  .theme-nether .btn:active,
  .theme-nether .btn-copy:active,
  .theme-nether .lang-toggle button:active,
  .theme-nether header.site-header nav button:not([name="lang"]):active,
  .theme-nether header.site-header nav button[name="lang"]:active { transform: none; }
}


/* =====================================================================================
 * CORRECTIONS PAGE PAR PAGE (2026-10-13)
 * Tout le site passe à l'habillage (réglage site_theme). Six relectures l'ont passé page
 * par page : visiteur, joueur, guide, administration des comptes, du jeu, du contenu. Leurs
 * corrections suivent, une section par relecture, précédées des règles que plusieurs
 * relectures avaient écrites chacune de leur côté (section 1, fusionnées).
 *
 * Cascade. Ces règles viennent après le reste de la feuille : quelques-unes gagnent sur le
 * thème à spécificité égale par leur place. Les <style> que plusieurs pages écrivent dans le
 * <body> viennent, eux, APRÈS cette feuille : les règles qui les corrigent pèsent plus
 * qu'eux, aucune ne compte sur sa place pour ça.
 * Les règles en :has() sont ignorées par un navigateur qui ne le connaît pas : il garde le
 * rendu d'avant, rien de pire. Les sélecteurs [style*=…] lisent un style en ligne : si le
 * PHP change, ils cessent simplement de s'appliquer.
 * ===================================================================================== */


/* ---------- 1. COMMUN À PLUSIEURS PAGES ---------- */

/* En-tête, toutes les pages. Le formulaire du bouton « Admin ON / OFF » arrive avec
   style="display:inline" : au téléphone sa case s'étirait sans que le bouton la remplisse
   (la maquette validée avait un bloc inline-flex). */
.theme-nether header.site-header nav > form:not(.lang-toggle) {
  display: inline-flex !important;
  align-items: center;
}
/* Le choix de langue arrive avec margin-left:8px en ligne : au téléphone, sa rangée était
   décalée de 8 px. L'écart vient déjà du gap du menu. */
.theme-nether header.site-header nav > form.lang-toggle { margin-left: 0 !important; }

/* Ancres (#password, #delete, #deeds, #portes, sommaire #s1…) : le titre visé tombait sous
   l'en-tête collant, ~70 px sur grand écran, ~120 px de 1240 à 1600, ~160 px en dessous,
   ~245 px au téléphone (menu admin sur quatre rangées). :where() garde la règle au poids
   d'une classe : une page qui règle elle-même son scroll-margin (guide.php) garde le sien. */
.theme-nether :where(.site-main [id]) { scroll-margin-top: 134px; }
@media (min-width: 1700px) {
  .theme-nether :where(.site-main [id]) { scroll-margin-top: 84px; }
}
@media (min-width: 721px) and (max-width: 1239px) {
  .theme-nether :where(.site-main [id]) { scroll-margin-top: 178px; }
}
@media (max-width: 720px) {
  .theme-nether :where(.site-main [id]) { scroll-margin-top: 300px; }
}

/* Barre latérale collante du guide (.gp-side). Collée à 16 px du haut, elle passait sous
   l'en-tête collant : son titre et les premiers sujets restaient cachés dès qu'on faisait
   défiler. Même échelle que les ancres ci-dessus et que le sommaire de plugin-reference
   (section 6). Sous 801 px, la page la rend statique : ces règles ne s'y appliquent pas.
   L'aperçu « pilule » du guide (guide-skin.css) règle lui-même sa barre : il n'est pas
   touché. (Le wiki et sa révision, qui avaient aussi les leurs, sont retirés du site
   depuis le 2026-10-13.) */
@media (min-width: 801px) {
  .theme-nether:not(:has(link[href*="guide-skin"])) .gp-side { top: 134px; }
}
@media (min-width: 801px) and (max-width: 1239px) {
  .theme-nether:not(:has(link[href*="guide-skin"])) .gp-side { top: 178px; }
}
@media (min-width: 1600px) {
  .theme-nether:not(:has(link[href*="guide-skin"])) .gp-side { top: 84px; }
}

/* Alertes. .alert est en flex : chaque bout de texte, <strong>, <a>, <br> ou <ul> devenait
   une colonne, centrée en hauteur par le thème (suspended, dashboard, account, appeals,
   reports, applications, bandeaux de users). Une alerte qui contient des balises redevient
   un bloc ; son icône garde sa case dans la marge gauche. Les messages en texte seul (tous
   les messages flash) ne changent pas. Marge de 56 px : la case fait 34 px avec son cadre
   (box-sizing n'atteint pas ::before), plus 10 avant et 12 après, comme en flex. */
.theme-nether div.alert:has(> *) { display: block; }
.theme-nether div.alert:is(.alert-success, .alert-info, .alert-warning, .alert-error):has(> *) {
  position: relative;
  min-height: 56px;
  padding: 14px 14px 14px 56px;
}
.theme-nether div.alert:is(.alert-success, .alert-info, .alert-warning, .alert-error):has(> *)::before {
  position: absolute;
  left: 10px;
  top: 11px;
}
/* Un long courriel (« Email renvoyé à … ») ne se coupait pas en chasse fixe et sortait de
   l'alerte au téléphone. */
.theme-nether .alert { overflow-wrap: anywhere; }

/* Tableaux posés directement dans une carte, hors de .table-defile (server-info, account,
   history, vacances, admin.php, applications, messages, notifications, settings, console,
   economy, prisons, logement, guildes, plugins, plugin-dev, audit…). Le cadre noir de
   .table-defile, en ombre : la mise en page ne bouge pas. */
.theme-nether .card > table,
.theme-nether .card > form > table {
  box-shadow: 0 0 0 2px #000, 4px 4px 0 2px rgba(0, 0, 0, 0.45);
}
@media (max-width: 720px) {
  /* En-têtes insécables du thème : « LOYER PAR JOUR » réclamait 115 px à lui seul. */
  .theme-nether .card > table th,
  .theme-nether .card > form > table th { white-space: normal; }
  /* Monospace et en-têtes insécables : ces tableaux réclamaient de 340 à 960 px pour 315 :
     toute la page défilait de côté. C'est la carte qui défile. Sauf une carte à infobulle
     (.btn-ico, [data-lbl]), que le défilement couperait. */
  .theme-nether .card:has(> table, > form > table, > details > table):not(:has(.btn-ico, [data-lbl])) {
    overflow-x: auto;
  }
}

/* Lignes teintées par un style en ligne sur <tr> : le thème peint un fond opaque sur chaque
   <td>, qui recouvrait la teinte. Elle est reposée en image par-dessus le fond de la
   cellule : zébrure et survol restent. */
/* vacances.php : le gel en cours. */
.theme-nether tbody > tr[style*="rgba(212,175,55"] > td:nth-child(n) {
  background-image: linear-gradient(rgba(255, 204, 51, 0.1), rgba(255, 204, 51, 0.1));
}
.theme-nether tbody > tr[style*="rgba(212,175,55"]:hover > td:nth-child(n) {
  background-image: linear-gradient(rgba(255, 204, 51, 0.14), rgba(255, 204, 51, 0.14));
}
.theme-nether tbody > tr[style*="rgba(212,175,55"] > td:first-child { box-shadow: inset 4px 0 0 var(--accent); }
/* users.php : compte en suppression (ambre), compte archivé (gris, texte éteint #999). */
.theme-nether tbody > tr[style*="rgba(212,160,23"] > td:nth-child(n) {
  background-image: linear-gradient(rgba(212, 160, 23, 0.10), rgba(212, 160, 23, 0.10));
}
.theme-nether tbody > tr[style*="rgba(120,120,120"] > td:nth-child(n) {
  background-image: linear-gradient(rgba(120, 120, 120, 0.12), rgba(120, 120, 120, 0.12));
}
.theme-nether tbody > tr[style*=";color:#999"] > td:nth-child(n),
.theme-nether tbody > tr[style*=";color:#999"] strong { color: inherit; }
/* console.php : chat de guilde (vert). */
.theme-nether tbody > tr[style*="rgba(129,199,132"] > td:nth-child(n) {
  background-image: linear-gradient(rgba(129, 199, 132, 0.08), rgba(129, 199, 132, 0.08));
}
/* guildes.php : guilde marquée griefer (rouge). */
.theme-nether tbody > tr[style*="rgba(229,115,115"] > td:nth-child(n) {
  background-image: linear-gradient(rgba(229, 115, 115, 0.14), rgba(229, 115, 115, 0.14));
}

/* Boutons hors paragraphe qui passent à la ligne au téléphone (suspended, apply, dashboard,
   report, applications, reports, appeals, console, audit…) : sans marge les rangées se
   touchaient et l'ombre de l'une mordait l'autre, le cas que le thème règle pour p > .btn.
   Le <div> sans classe est pris dans une carte seulement : l'accueil validé n'en a qu'un,
   dans le héros, et il ne bouge pas. */
.theme-nether .card > .btn,
.theme-nether form > .btn,
.theme-nether td > .btn,
.theme-nether .card div:not([class]):not([style*="flex"]) > .btn { margin-block: 4px; }
/* Sauf dans une rangée d'icônes (users.php) et dans les filtres alignés par le bas
   (economy, prisons, clemence, logement) : le bouton s'y décalerait de ses voisins. */
.theme-nether .btn-rangee > form > .btn,
.theme-nether form[style*="align-items:flex-end"] > .btn { margin-block: 0; }

/* Bouton désactivé (VIP sans UUID dans users, « Geler 0 terrain(s) » dans guildes) : rien
   ne le distinguait d'un bouton actif, et le reflet animé du survol invitait à cliquer. */
.theme-nether .btn:disabled,
.theme-nether .btn:disabled:hover {
  opacity: 0.55;
  cursor: not-allowed;
  animation: none;
  transform: none;
}

/* Champs que le thème ne visait pas : <input> sans type (console, guildes), type="url"
   (settings), type="tel". Ils restaient en champ natif gris et arrondi. Pas de largeur
   imposée : les largeurs en ligne sont gardées. Survol et focus : ceux du thème. */
.theme-nether input:not([type]),
.theme-nether input[type="url"],
.theme-nether input[type="tel"] {
  min-height: 44px;
  padding: 10px 12px;
  background: var(--theme-nether-ink);
  border: 2px solid #7d6aa3;
  border-radius: 0;
  color: var(--text);
  caret-color: var(--accent);
  font-family: var(--theme-nether-font);
  font-size: 16px;
  box-shadow: inset 2px 2px 0 #000;
  transition: border-color 0.12s ease, box-shadow 0.12s ease;
}

/* Coins arrondis en ligne (server-info, users, whitelist, backups, applications, contacts,
   messages, plugins, plugin-dev) : le thème n'en a aucun. Ce sont toutes les valeurs posées
   en ligne dans le contenu, sauf la barre de vacances (99px) et la croix ronde de
   plugin-dev (50 %), traitées plus bas. */
.theme-nether .site-main [style*="border-radius:3px"],
.theme-nether .site-main [style*="border-radius:4px"],
.theme-nether .site-main [style*="border-radius:6px"],
.theme-nether .site-main [style*="border-radius:0 6px 6px 0"] { border-radius: 0 !important; }

/* Formulaires de confirmation dans un dépliant (users, whitelist, backups, plugins,
   plugin-dev) : aplats sans bord, ou filet doré de 1 px de l'ancien thème. Dalles
   biseautées comme les cartes. */
.theme-nether .site-main details > form[style*="background:var(--bg-soft)"],
.theme-nether .site-main details > form[style*="background:var(--bg-card)"] {
  border: 2px solid #000 !important;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 3px 3px 0 rgba(0, 0, 0, 0.5);
}

/* Motivation (applications), message (contacts), bulles du fil (messages.php côté joueur
   et côté admin) : aplats sans cadre, la bulle du joueur se fondait dans la carte. Même
   dalle que les notifications. */
.theme-nether .site-main div[style*="white-space:pre-wrap"][style*="background:var(--bg-soft)"],
.theme-nether .site-main div[style^="margin-bottom:14px;padding:10px;background:"] {
  border: 2px solid #000;
  box-shadow: inset 2px 2px 0 rgba(255, 255, 255, 0.04), 3px 3px 0 rgba(0, 0, 0, 0.45);
}
/* Côté joueur, le liseré de 3 px dit qui parle : or pour le joueur, cyan pour l'admin. */
.theme-nether .site-main div[style^="margin-bottom:14px;padding:10px;background:"][style*="border-left:3px solid var(--accent)"] {
  border-left: 6px solid var(--accent) !important;
}
.theme-nether .site-main div[style^="margin-bottom:14px;padding:10px;background:"][style*="border-left:3px solid var(--blue)"] {
  border-left: 6px solid var(--blue) !important;
}

/* Point ● de la pastille Serveur (admin.php, plugins.php) : admin-live.js le peint en
   #c92a2a, 3,1 contre 1 sur la pastille rouge du thème. Le rouge clair de la pastille. */
.theme-nether .badge-offline > [data-mc-status="dot"] { color: #ff8a80 !important; }


/* ---------- 2. PAGES DES VISITEURS ---------- */

/* index.php : la ligne « Joueurs en ligne : … » (quand quelqu'un joue) est du texte gris
   posé sur le portail animé ; une étincelle dessous la tombait à 2,5 contre 1. Même aplat
   que le sous-titre (6,7 contre 1 au pire). */
.theme-nether .hero > div[style*="--dim"] {
  width: fit-content;
  max-width: 100%;
  margin-inline: auto !important;
  padding: 3px 12px;
  background: rgba(13, 8, 24, 0.8);
}

/* server-info.php : la marge de 18 px du h1 du thème s'ajoutait aux 8 px du sous-titre. */
.theme-nether .hero-compact h1 { margin: 0; }
/* server-info.php : l'adresse du serveur en 18 px dépassait la carte sous 360 px. */
.theme-nether code[style*="inline-block"] { max-width: 100%; overflow-wrap: anywhere; }

/* register.php (et account.php) : label.checkbox est en flex, chaque lien et chaque bout de
   phrase devenait une colonne. En bloc, la phrase coule ; la case reste devant. */
.theme-nether form label.checkbox {
  display: block;
  position: relative;
  padding: 10px 0 10px 30px;
  line-height: 1.5;
}
.theme-nether form label.checkbox > input[type="checkbox"] {
  position: absolute;
  left: 0;
  top: 10px;
  margin: 0;
}
/* L'aide sous « Auto-supprimer » s'aligne sur le texte de la case (30 px, plus 24). */
.theme-nether .field > label.checkbox + .help[style*="margin-left"] { margin-left: 30px !important; }
/* Liens dans une étiquette (CGU, confidentialité) : l'or et le lavande ont la même clarté
   (1,1 contre 1) ; soulignés comme les liens de phrase. */
.theme-nether label a:not(.btn) {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether label a:not(.btn):hover { text-decoration-color: currentColor; }

/* Panneau de comparaison de admin/guide.php (.gd-comp .wiki-content) : le seul .wiki-content
   restant depuis le retrait du wiki (2026-10-13). Ses en-têtes de tableau sont des phrases :
   ils reviennent à la ligne. Panneau arrondi au milieu de dalles carrées. */
.theme-nether .wiki-content th { white-space: normal; }
.theme-nether .wiki-content {
  border: 2px solid #000;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 4px 4px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .wiki-content code,
.theme-nether .wiki-content pre { border-radius: 0; }
/* Titre en or : ombre brune des titres dorés, pas violette. */
.theme-nether .wiki-content h1 { text-shadow: 2px 2px 0 #3f2a00; }
/* Une phrase avec deux liens était prise pour une rangée de « liens rapides » : liens en
   cases de 40 px au milieu du texte. Dans le panneau, un lien reste un lien de texte. */
.theme-nether .wiki-content p:has(> a + a) { line-height: inherit; }
.theme-nether .wiki-content p:has(> a + a) > a:not(.btn) {
  display: inline;
  min-height: 0;
  padding: 0;
}

/* error/404.html : sans effet tant que cette page statique ne charge pas la feuille et ne
   pose pas la classe theme-nether (non fait) ; prêt pour ce jour-là. */
.theme-nether .err-wrap .err-code {
  margin: 0 0 8px;
  opacity: 1;
  color: var(--accent);
  text-shadow: 4px 4px 0 #3f2a00;
}
.theme-nether .err-wrap .err-msg { margin: 0 0 28px; }
.theme-nether .err-wrap .err-back {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 10px 20px;
  border: 2px solid #000;
  border-radius: 0;
  color: var(--theme-nether-quartz);
  font-weight: 800;
  text-shadow: 2px 2px 0 #1a0d2e;
  background: var(--theme-nether-obsidian) 0 0 / 32px 32px repeat, #1d1430;
  box-shadow: inset 2px 2px 0 #5a3f94, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether .err-wrap .err-back:hover { color: var(--theme-nether-hover-text); }


/* ---------- 3. PAGES DU JOUEUR ---------- */

/* vacances.php : barre du quota, pilule arrondie dont la piste ressortait à 1,05 contre 1
   (invisible à 0 jour consommé). Barre d'expérience en pixels : piste creuse cadrée,
   remplissage en lingot d'or. Styles en ligne, d'où les !important. */
.theme-nether .card div[style*="border-radius:99px"] {
  height: 16px !important;
  border: 2px solid #7d6aa3;
  border-radius: 0 !important;
  background: var(--theme-nether-ink) !important;
  box-shadow: inset 2px 2px 0 #000, 2px 2px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .card div[style*="border-radius:99px"] > div {
  background: linear-gradient(180deg, #fde77a 0 3px, #f2c636 3px calc(100% - 3px), #a8720c calc(100% - 3px)) !important;
  box-shadow: 2px 0 0 #000;
}

/* account.php : l'aide sous « Demander le changement » est hors d'un .field, sans style :
   texte clair pleine taille collé au bouton. Même aspect que l'aide d'un champ. */
.theme-nether form > .help {
  margin-top: 10px;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.5;
}

/* notifications.php : le lien « Voir » ne se distinguait du texte gris voisin que par la
   teinte (1,71 contre 1). Souligné, et cible agrandie sans bouger la ligne. */
.theme-nether .notif-item .notif-meta a {
  padding: 6px 2px;
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether .notif-item .notif-meta a:hover {
  text-decoration-color: currentColor;
  text-shadow: 0 0 8px var(--theme-nether-glow);
}

/* dashboard.php : « (port 25565) », la classe dim n'était définie nulle part. */
.theme-nether .dim { color: var(--dim); }


/* ---------- 4. GUIDE DU JOUEUR (guide.php, admin/guide-admin.php, admin/guide.php) ----------
   L'aperçu « pilule » (admin/maquette-skin.php) charge guide-skin.css : les règles de forme
   l'écartent par :not(:has(link[href*="guide-skin"])), pour ne pas défaire son dessin. */

/* Barre latérale : les 23 sous-titres étaient soulignés d'or (li a du thème), les sujets non. */
.theme-nether .gp-side li a:not(.btn) { text-decoration: none; }

/* Cinq phrases (« Codex en main, debout dans tes piliers… ») n'ont que des liens pour enfants :
   la règle « Liens rapides » du thème en faisait une rangée de cases de 40 px. */
.theme-nether .gp-regles li p,
.theme-nether .gp-intro p { line-height: inherit; }
.theme-nether .gp-regles li p > a:not(.btn),
.theme-nether .gp-intro p > a:not(.btn) {
  display: inline;
  min-height: 0;
  padding: 0;
}

/* Tableau des gestes : en-têtes insécables et chasse fixe, il dépassait la colonne à 360-375 px. */
.theme-nether .gp-regles li .gp-gestes th { white-space: normal; }
.theme-nether .gp-regles li .gp-gestes th,
.theme-nether .gp-regles li .gp-gestes td { overflow-wrap: anywhere; }

/* La ligne fine « --- » (JM : « pas une ligne trop prononcée ») recevait l'ombre du <hr> du thème. */
.theme-nether .gp-regles li hr.gp-sep { box-shadow: none; }

/* Barre latérale et colonne : seules formes rondes de la page. Dalles biseautées, en ombre :
   aucune largeur ne change. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-side,
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-content {
  border-radius: 0;
  box-shadow: 0 0 0 2px #000, inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 6px 6px 0 2px rgba(0, 0, 0, 0.5);
}
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-side .suj > a,
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-side li a { border-radius: 0; }

/* Titre de sujet : le filet de 1 px (1,3 contre 1) est remplacé par l'infobulle d'objet des titres de carte, plus bas. */

/* Arbre des menus : soulignement du thème + pointillé de la page = deux traits. Le pointillé reste. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-arbre a:not(.btn) { text-decoration: none; }

/* « Pour le greffon » (admin) : le thème dorait sa flèche, voulue discrète. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-greffon > summary::before { color: var(--dim); }

/* Pastilles nouveau / corrigé / déplacé / retiré (admin) : pilules au texte blanc (corrigé à
   3,1 contre 1). Étiquettes carrées du thème, texte clair sur fond sombre, mots inchangés. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-pastille {
  padding: 0 6px;
  border: 2px solid;
  border-radius: 0;
  font-family: var(--theme-nether-font);
  font-weight: 800;
  line-height: 1.35;
  text-shadow: 1px 1px 0 #000;
  box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-p-nouveau { background: #0a3a1c; color: #6dff9a; border-color: #17c95a; }
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-p-corrige { background: #3a1800; color: #ffb066; border-color: #ff7a1a; }
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-p-deplace { background: #141a3a; color: #a9bdff; border-color: #5468a8; }
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-p-retire  { background: #3a0a0e; color: #ff8a80; border-color: #d0252d; }

/* Case « lu et approuvé » (admin) : bord à 2,2 contre 1, coins ronds. Case creusée carrée. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-coche button {
  border-color: #7d6aa3;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #000;
}
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-coche button.on {
  border-color: #17c95a;
  box-shadow: inset 2px 2px 0 #b8ffd0, inset -2px -2px 0 #0a6b2e;
}

/* Cahier du greffon (admin) : champ arrondi au bord à 1,3 contre 1. Champ creusé du thème,
   survol et focus redits. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-greffon-form textarea {
  border: 2px solid #7d6aa3;
  border-radius: 0;
}
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-greffon-form textarea:hover { border-color: #a08bd0; }
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-greffon-form textarea:focus { border-color: var(--accent); }

/* Pastille d'état du serveur : seul rond de la page ; bloc carré cerclé de noir (le rouge
   d'avant était à 2,9 contre 1). guide.js pose toujours les mêmes classes. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-etat-point {
  width: 10px;
  height: 10px;
  border-radius: 0;
  box-shadow: 0 0 0 2px #000;
}
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-etat-en-ligne .gp-etat-point {
  background: #17c95a;
  box-shadow: 0 0 0 2px #000, 0 0 6px rgba(63, 220, 116, 0.6);
}
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-etat-hors-ligne .gp-etat-point {
  background: #ff4d4d;
  box-shadow: 0 0 0 2px #000, 0 0 6px rgba(255, 77, 77, 0.5);
}

/* Derniers arrondis : bandeau !!…!!, bloc de code, cases du schéma de l'eau. */
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-imp,
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-regles li pre,
.theme-nether:not(:has(link[href*="guide-skin"])) .gp-regles .eau .b { border-radius: 0; }

/* Bouton « Copier » de la barre de connexion (et ses options dans admin/maquette-copier.php) :
   le thème éclaircit --green et --red, le blanc posé dessus tombait à 2,4 et 2,8 contre 1.
   L'aperçu « pilule » garde le sien (guide-skin.css, chargée plus tard, même poids). */
.theme-nether .gp-copier-btn.copied { color: #03230f; }
.theme-nether .gp-copier-btn.copy-fail,
.theme-nether .mq-c1 .mq-c1-btn.copy-fail,
.theme-nether .mq-c2 .mq-c2-btn.copy-fail {
  background: linear-gradient(180deg, #c4222a 0%, #8e1218 100%);
  color: #ffffff;
}

/* admin/guide.php (édition) : en-têtes insécables ; « MOT ET DÉFINITION, CÔTÉ FRANÇAIS »
   réclamait 286 px et le tableau du lexique sortait de sa carte de 701 à ~880 px. */
.theme-nether .gd-table th { white-space: normal; }

/* admin/guide.php : champs au bord de 1 px à 1,4 contre 1, coins ronds. Ceux du thème, survol
   et focus redits ; le champ « référence d'approbation » retrouve son bord d'or. */
.theme-nether .gd-form input[type="text"],
.theme-nether .gd-form textarea,
.theme-nether .gd-form select {
  border: 2px solid #7d6aa3;
  border-radius: 0;
}
.theme-nether .gd-form input[type="text"]:hover,
.theme-nether .gd-form textarea:hover,
.theme-nether .gd-form select:hover { border-color: #a08bd0; }
.theme-nether .gd-form input[type="text"].ref { border-color: var(--accent); }
.theme-nether .gd-form input[type="text"]:focus,
.theme-nether .gd-form textarea:focus,
.theme-nether .gd-form select:focus { border-color: var(--accent); }

/* admin/guide.php : le « background: » de la page effaçait la flèche dessinée du thème (qui
   retire la native) : les listes ressemblaient à des champs de texte. */
.theme-nether .gd-form select {
  padding-right: 42px;
  background-image: var(--theme-nether-arrow);
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 15px 9px;
}

/* admin/guide.php : « Règle numéro un », panneau de comparaison, étiquette de genre. */
.theme-nether .gd-regle-un {
  border: 2px solid #000;
  border-left: 6px solid var(--accent);
  border-radius: 0;
  box-shadow: inset 2px 2px 0 rgba(255, 255, 255, 0.06), 3px 3px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .gd-comp .wiki-content {
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #000, inset -2px -2px 0 #2e2148;
}
.theme-nether .gd-etat {
  border: 2px solid var(--border-strong);
  border-radius: 0;
}

/* ----- 4 bis. Le guide habillé comme le reste du site (JM, 2026-10-13 : « on met le guide en ligne et on
   enlève le wiki, on applique notre thème au guide ») -----
   La mise en page du wiki reste (JM, 2026-10-03 : « qu'elle ressemble à un wiki ») : barre latérale à gauche,
   contenu à droite, mêmes textes. Seul l'habillage change, celui de l'accueil et de la page Serveur : dalles de
   carte, titres de sujet en or dans l'infobulle d'objet des titres de carte, sous-titres en rangées qui
   s'enfoncent au survol, « Comment ça marche » en petite dalle, arbres à traits de 2 px, tableau des gestes aux
   briques des tableaux du site, état du serveur en étiquette carrée.
   guide.php écrit son <style> APRÈS cette feuille : chaque règle pèse une classe de plus que la sienne.
   L'aperçu « pilule » (admin/maquette-skin.php) pose $page_theme = '' : il n'a jamais la classe theme-nether. */

/* Barre latérale et colonne : le fond des cartes. */
.theme-nether .gp-side,
.theme-nether .gp-content { background: var(--bg-card); }

/* Le titre de la barre latérale : celui d'une carte (infobulle d'objet, or, capitales). La barre défile dans son
   cadre au-dessus de 800 px (plus bas) : 2 px de moins que sa largeur, pour la marge de gauche. Sinon un titre
   long (« Guide de l'administrateur » remplit la ligne) dépasse de 2 px et, selon le navigateur, fait paraître
   une barre de défilement horizontale dans la barre. */
.theme-nether .gp-side-title {
  display: flex;
  width: fit-content;
  max-width: calc(100% - 2px);
  align-items: center;
  gap: 10px;
  margin: 0 0 16px 2px;
  padding: 5px 12px 5px 10px;
  background: var(--theme-nether-tooltip);
  border: 2px solid #4a00c0;
  border-image: linear-gradient(180deg, #6a2bff 0%, #2a0080 100%) 1;
  box-shadow: 0 0 0 2px var(--theme-nether-tooltip), 4px 4px 0 2px rgba(0, 0, 0, 0.45);
  color: var(--accent);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-shadow: 2px 2px 0 #2a1a00;
}

/* Titre de sujet : la même infobulle, en or, à la taille d'un titre et sans capitales (« lisible »). Le filet
   de 1 px qui séparait les sujets est remplacé par la dalle et un écart plus grand. */
.theme-nether .gp-content h2 {
  width: fit-content;
  max-width: 100%;
  margin: 40px 0 14px 2px;
  padding: 6px 14px 6px 10px;
  border: 2px solid #4a00c0;
  border-image: linear-gradient(180deg, #6a2bff 0%, #2a0080 100%) 1;
  background: var(--theme-nether-tooltip);
  box-shadow: 0 0 0 2px var(--theme-nether-tooltip), 4px 4px 0 2px rgba(0, 0, 0, 0.45);
  color: var(--accent);
  font-size: 20px;
  text-shadow: 2px 2px 0 #3f2a00;
}
/* L'étincelle d'enchantement des titres de carte, devant les deux. */
.theme-nether .gp-side-title::before,
.theme-nether .gp-content h2::before {
  content: "";
  flex: 0 0 auto;
  display: block;
  width: 2px;
  height: 2px;
  margin: 0 5px 0 4px;
  background: #ffffff;
  box-shadow:
    2px 0 0 #e2c6ff, -2px 0 0 #e2c6ff, 0 2px 0 #e2c6ff, 0 -2px 0 #e2c6ff,
    4px 0 0 rgba(164, 107, 255, 0.85), -4px 0 0 rgba(164, 107, 255, 0.85),
    0 4px 0 rgba(164, 107, 255, 0.85), 0 -4px 0 rgba(164, 107, 255, 0.85);
  animation: theme-nether-scintille 2.2s steps(2, jump-none) infinite;
}
/* Le lien « Éditer » de l'administrateur, dans le titre : un lien de texte, pas un second titre doré. */
.theme-nether .gp-content h2 > a {
  color: var(--text-soft);
  letter-spacing: 0;
  text-shadow: 1px 1px 0 #000;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether .gp-content h2 > a:hover { color: var(--theme-nether-hover-text); text-decoration-color: currentColor; }
/* Le titre de la page : en or (guide.php), avec l'ombre brune des titres dorés, pas la violette. */
.theme-nether .gp-content h1 { text-shadow: 2px 2px 0 #3f2a00; }

/* Barre latérale : sujets en crème, sous-titres sur un rail ; au survol, la case s'enfonce comme au menu. */
.theme-nether .gp-side .suj > a {
  color: var(--bright);
  font-weight: 800;
  text-shadow: 2px 2px 0 #000;
}
.theme-nether .gp-side ul {
  margin-left: 6px;
  padding-left: 4px;
  border-left: 2px solid var(--border-strong);
}
.theme-nether .gp-side li a {
  color: var(--text-soft);
  text-shadow: 1px 1px 0 #000;
}
.theme-nether .gp-side .suj > a:hover,
.theme-nether .gp-side li a:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  box-shadow: inset 2px 2px 0 #3d2c63, inset -2px -2px 0 #0a0611;
}
/* La barre ne défile plus dans son cadre (JM, 2026-10-13 : la barre de défilement lui déplaisait) : elle ne montre que
   les sujets, plus les sous-titres du sujet lu, et tient à l'écran (public/guide.php, .gp-menu-replie). */

/* Sous-titre replié : une rangée qui s'enfonce au survol, comme une case du menu ; filet dessous une fois ouverte. */
.theme-nether .gp-st > summary {
  padding: 6px 10px 6px 30px;
  border: 2px solid transparent;
  transition: background-color 0.12s ease, box-shadow 0.12s ease;
}
.theme-nether .gp-st[open] > summary { border-bottom-color: var(--border); }
.theme-nether .gp-st > summary:hover {
  background: var(--bg-card-hover);
  border-color: #000;
  box-shadow: inset 2px 2px 0 #3d2c63, inset -2px -2px 0 #0a0611;
}
/* « Comment ça marche » (et, pour l'administrateur, « Pour le greffon ») : une petite dalle d'obsidienne. */
.theme-nether .gp-meca > summary {
  display: flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  padding: 4px 14px 4px 28px;
  border: 2px solid #000;
  background: var(--bg-soft);
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 2px 2px 0 rgba(0, 0, 0, 0.5);
  color: var(--text-soft);
  font-weight: 700;
  text-shadow: 1px 1px 0 #000;
}
.theme-nether .gp-greffon > summary { background: var(--bg-deep); color: var(--dim); }
.theme-nether .gp-meca > summary:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  box-shadow: inset 2px 2px 0 #4a3678, inset -2px -2px 0 #0a0611, 2px 2px 0 rgba(0, 0, 0, 0.5), 0 0 8px var(--theme-nether-glow);
}
/* Le triangle (▸ fermé, ▾ ouvert), centré sur sa rangée. style.css fait aussi tourner de 90° la flèche d'un
   dépliant ouvert : le ▾ que le guide dessine déjà se couchait vers la gauche. */
.theme-nether .gp-st > summary::before,
.theme-nether .gp-meca > summary::before {
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
}
.theme-nether .gp-meca > summary::before { font-size: 12px; }
.theme-nether .gp-st[open] > summary::before,
.theme-nether .gp-meca[open] > summary::before { transform: translateY(-50%); }

/* Arbre des menus : lignes de guidage de 2 px, du lavande des bords de champ (3,9 contre 1 sur la carte ; le
   violet d'avant, 2,3, s'effaçait), premier niveau en crème ombré, liens au pointillé d'or. */
.theme-nether .gp-arbre ul { border-left: 2px solid #7d6aa3; }
.theme-nether .gp-arbre ul > li::before { border-top: 2px solid #7d6aa3; }
.theme-nether .gp-arbre > li > span {
  color: var(--bright);
  font-weight: 800;
  text-shadow: 2px 2px 0 #000;
}
.theme-nether .gp-arbre a { border-bottom: 2px dotted rgba(255, 204, 51, 0.65); }
.theme-nether .gp-arbre a:hover { color: var(--theme-nether-hover-text); border-bottom-style: solid; }

/* Mot du lexique : le texte reste du texte, souligné d'un pointillé d'or de 2 px ; or au survol. */
.theme-nether .gp-regles li a.gp-lex { border-bottom: 2px dotted rgba(255, 204, 51, 0.7); }
.theme-nether .gp-regles li a.gp-lex:hover { color: var(--theme-nether-hover-text); border-bottom-style: solid; }

/* Bloc de code d'une règle : le creux d'obsidienne du thème, pas le voile gris de la page. */
.theme-nether .gp-regles li pre { background: var(--theme-nether-ink); }

/* Tableau des gestes : cadré de noir comme les tableaux des cartes ; en-tête en briques, texte de quartz, liseré
   d'or ; chaque groupe (Piliers, Coffres) en bandeau sombre au titre doré. */
.theme-nether .gp-regles li .gp-gestes { box-shadow: 0 0 0 2px #000, 4px 4px 0 2px rgba(0, 0, 0, 0.45); }
.theme-nether .gp-regles li .gp-gestes thead th {
  padding: 8px 10px;
  color: var(--theme-nether-quartz);
  font-size: 12px;
  font-weight: 800;
  border-bottom: 3px solid #d99a14;
}
.theme-nether .gp-regles li .gp-gestes tr.grp th {
  background: var(--bg-soft);
  color: var(--accent);
  font-size: 14px;
  font-weight: 800;
  text-shadow: 2px 2px 0 #3f2a00;
  border-bottom: 2px solid var(--border-strong);
}
.theme-nether .gp-regles li .gp-gestes tr.grp th a {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether .gp-regles li .gp-gestes tr.grp th a:hover { color: var(--theme-nether-hover-text); text-decoration-color: currentColor; }
.theme-nether .gp-regles li .gp-gestes td { border-bottom: 2px solid #241838; }

/* État du serveur : une étiquette carrée comme les pastilles du site ; pierre en attendant, émeraude en ligne,
   redstone hors ligne (guide.js pose gp-etat-en-ligne ou gp-etat-hors-ligne sur l'étiquette). */
.theme-nether .gp-etat {
  padding: 1px 8px;
  border: 2px solid #5a4d6e;
  background: #241d2e;
  color: #c4b8d8;
  font-size: 13px;
  line-height: 1.4;
  letter-spacing: 0.04em;
  text-shadow: 1px 1px 0 #000;
  box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.12), 2px 2px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .gp-etat.gp-etat-en-ligne { background: #0a3a1c; color: #6dff9a; border-color: #17c95a; }
.theme-nether .gp-etat.gp-etat-hors-ligne { background: #3a0a0e; color: #ff8a80; border-color: #d0252d; }

@media (max-width: 720px) {
  .theme-nether .gp-content h2 { margin-top: 32px; font-size: 18px; }
}


/* ---------- 5. ADMINISTRATION : COMPTES ET PANNEAU (sous-menu, admin.php, users, settings,
   backups, whitelist, console…) ---------- */

/* Sous-menu admin : en monospace la barre mesure ~820 à 860 px et restait sur une ligne
   jusqu'à 640 px : entre 641 et 863 px elle sortait de l'écran. */
.theme-nether .admin-subnav { flex-wrap: wrap; }
/* Au téléphone l'étiquette « ADMIN » prend toute la ligne : filet dessous plutôt qu'à droite. */
@media (max-width: 720px) {
  .theme-nether .admin-subnav > .admin-subnav-label {
    border-right: 0;
    border-bottom: 2px solid #3c2a60;
  }
}
/* Les deux derniers groupes (Contenu, Serveur) : leur panneau sortait par la droite entre
   721 et 770 px. Il s'ouvre vers la gauche. */
@media (min-width: 641px) {
  .theme-nether .admin-subnav .admin-grp:nth-last-of-type(-n+2) > .admin-grp-liste { left: auto; right: 0; }
  .theme-nether .admin-subnav .admin-grp:nth-last-of-type(-n+2) > .admin-grp-liste::before { left: auto; right: 14px; }
}

/* settings.php : la clé collée au bord de sa bande sombre (padding-left 0 en ligne). Le
   sélecteur exact n'existe que sur cette page. */
.theme-nether table[style="width:100%"] > tbody > tr > td { padding: 10px 12px !important; }
/* settings.php au téléphone : la clé (16em) et le champ ne tenaient pas côte à côte. */
@media (max-width: 720px) {
  .theme-nether table[style="width:100%"] > tbody > tr > td { display: block; width: auto !important; }
  .theme-nether table[style="width:100%"] > tbody > tr > td:first-child { padding-bottom: 2px !important; border-bottom: 0; }
  .theme-nether table[style="width:100%"] > tbody > tr > td + td { padding-top: 4px !important; }
}

/* users.php : la ligne des notes admin gardait le bleu marine (#1a1a40) de l'ancien thème. */
.theme-nether td[style*="background:#1a1a40"] { background: #1a1230 !important; }

/* users.php : « ✉ Écrire » est un <a> dans un <td>, souligné comme un lien de texte. */
.theme-nether td a.btn-ico:not(.btn),
.theme-nether td a.btn-ico:not(.btn):hover { text-decoration: none; text-shadow: none; }
/* users.php : rangée d'icônes de hauteurs inégales (34, 40, 32). Sur appareil à survol
   seulement : au téléphone, la version avec libellé du thème reste. */
@media (hover: hover) {
  .theme-nether .btn-rangee .btn-ico { height: 40px; }
}

/* users.php : bandeaux « suppression en cours » et « archives », cadre en ligne de 1 px. Forme
   des alertes du thème, couleurs gardées. */
.theme-nether .alert[style*="background:#5d3d0a"] {
  border: 2px solid #000 !important;
  border-left: 6px solid #e0a800 !important;
}
.theme-nether .alert[style*="background:#2a2a2a"] {
  border: 2px solid #000 !important;
  border-left: 6px solid #6a6a6a !important;
}

/* users.php, purge : l'avertissement rouge est tout entier dans un <strong>, passé en crème. */
.theme-nether p[style*="color:#ff4444"] > strong { color: inherit; }

/* users.php et logement.php (actes de propriété) : la fenêtre des actions
   (assets/fenetre-action.js ; mise en page dans style.css). Une dalle d'obsidienne biseautée
   comme les cartes, sur un fond assombri ; le titre est un h2 du thème, séparé du formulaire
   par un filet noir ; la croix a l'allure des boutons-icônes du tableau, en cible de 40. */
.theme-nether dialog.fenetre {
  background: var(--bg-card);
  color: var(--text);
  border: 2px solid #000;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 6px 6px 0 rgba(0, 0, 0, 0.55),
              0 0 24px rgba(164, 107, 255, 0.25);
  font-family: var(--theme-nether-font);
}
.theme-nether dialog.fenetre::backdrop { background: rgba(5, 3, 9, 0.78); }
.theme-nether .fenetre-tete { border-bottom: 2px solid #000; box-shadow: 0 2px 0 #241838; }
.theme-nether .fenetre-titre { font-size: 18px; margin: 0; }
.theme-nether .fenetre-fermer {
  width: 40px;
  height: 40px;
  border: 2px solid #000;
  border-radius: 0;
  background: var(--bg-soft);
  color: var(--text-soft);
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #07040c;
  font-family: var(--theme-nether-font);
}
.theme-nether .fenetre-fermer:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  border-color: #000;
  box-shadow: inset 2px 2px 0 #4a3678, inset -2px -2px 0 #07040c, 0 0 8px var(--theme-nether-glow);
}
.theme-nether .fenetre-fermer:active { box-shadow: inset 2px 2px 0 #07040c, inset -2px -2px 0 #2e2148; }
@media (max-width: 720px) {
  .theme-nether .fenetre-titre { font-size: 16px; }
}

/* whitelist.php, console.php : champ court suivi d'un bouton, décalés de quelques pixels. */
.theme-nether :is(form, label) > input[style*="width:"]:not([style*="100%"]) { vertical-align: middle; }

/* admin.php : lien « Voir → » de la tuile des demandes, cible de 20 px portée à 40. */
.theme-nether .stat-tile > a:not(.btn) {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 8px;
}
/* admin.php, alerte des terrains : lien dans une phrase, repérable autrement qu'à la couleur. */
.theme-nether .card[style*="#ff5454"] a:not(.btn) {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}

/* backups.php : les descriptions des portées de restauration, en gras 800 comme un intitulé. */
.theme-nether label[style*="display:block"] > span[style*="color:var(--dim)"] { font-weight: 500; }


/* ---------- 6. ADMINISTRATION : LE JEU (logement, economy, prisons, guildes, clemence,
   plugins, plugin-dev, plugin-reference, essais, chantier, rangement) ---------- */

/* clemence.php : les deux tableaux sont posés dans la page, sans carte. */
@media (max-width: 720px) {
  .theme-nether .site-main > h2 + table { display: block; overflow-x: auto; }
}

/* economy, prisons, logement (file) : la charge JSON est un seul mot insécable (~370 px), le
   tableau d'economy dépassait sa carte de ~75 px sur ordinateur. */
.theme-nether td[style*="font-family:monospace;font-size:11px"] {
  width: 22em;
  overflow-wrap: anywhere;
}

/* guildes.php : bouton collé sous le champ pleine largeur, ou sous la zone de texte. */
.theme-nether form[style*="min-width:250px"] > .btn,
.theme-nether form > textarea[style*="width:100%"] ~ .btn { margin-top: 8px; }

/* economy, prisons, clemence, logement : label { margin-bottom: 6px } de style.css dans une
   rangée alignée en bas : les champs finissaient 6 px plus haut que le bouton voisin. */
.theme-nether form[style*="align-items:flex-end"] > label { margin-bottom: 0; }

/* plugin-dev (statut) : padding en ligne de 4 px, la flèche dessinée du thème mordait le
   texte. Flèche à l'échelle 2 (10 x 6), réservée à droite. */
.theme-nether select[style*="padding:"] {
  padding-right: 22px !important;
  background-position: right 6px center;
  background-size: 10px 6px;
}

/* plugins.php : champ fichier. Bouton natif gris arrondi ; dalle d'obsidienne des boutons
   secondaires. La forme -webkit- (Safari d'avant 14.1) est une règle à part : un sélecteur
   inconnu dans une liste annulerait toute la règle. */
.theme-nether input[type="file"] {
  max-width: 100%;
  color: var(--text-soft);
  font-family: var(--theme-nether-font);
  font-size: 14px;
}
.theme-nether input[type="file"]::-webkit-file-upload-button {
  min-height: 40px;
  margin-right: 12px;
  padding: 6px 14px;
  border: 2px solid #000;
  border-radius: 0;
  color: var(--theme-nether-quartz);
  font: 800 13px/1.2 var(--theme-nether-font);
  text-shadow: 2px 2px 0 #1a0d2e;
  background: var(--theme-nether-obsidian) 0 0 / 32px 32px repeat, #1d1430;
  box-shadow: inset 2px 2px 0 #5a3f94, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55);
  cursor: pointer;
}
.theme-nether input[type="file"]::file-selector-button {
  min-height: 40px;
  margin-right: 12px;
  padding: 6px 14px;
  border: 2px solid #000;
  border-radius: 0;
  color: var(--theme-nether-quartz);
  font: 800 13px/1.2 var(--theme-nether-font);
  text-shadow: 2px 2px 0 #1a0d2e;
  background: var(--theme-nether-obsidian) 0 0 / 32px 32px repeat, #1d1430;
  box-shadow: inset 2px 2px 0 #5a3f94, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55);
  cursor: pointer;
}
.theme-nether input[type="file"]::file-selector-button:hover {
  color: var(--theme-nether-hover-text);
  box-shadow: inset 2px 2px 0 #8a5cd6, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 14px rgba(164, 107, 255, 0.6);
}

/* plugin-dev.php : grille des modules en minmax(380px), plus large que la carte au téléphone. */
.theme-nether .card > div[style*="minmax(380px,1fr)"] {
  grid-template-columns: repeat(auto-fit, minmax(min(380px, 100%), 1fr)) !important;
}
/* plugin-dev.php : en-tête d'un module, la pastille « 🚧 EN CONSTRUCTION » passe sous le nom. */
.theme-nether .card[style*="padding:14px;border-left:4px solid"] > div[style^="display:flex;align-items:flex-start"] {
  flex-wrap: wrap;
}
.theme-nether .card[style*="padding:14px;border-left:4px solid"] > div > div[style="text-align:right"] {
  margin-left: auto;
}
/* plugin-dev.php : la croix ronde du formulaire d'édition devient une case carrée creusée. */
.theme-nether button[data-close-details][style*="border-radius:50%"] {
  border-radius: 0 !important;
  border: 2px solid #000 !important;
  background: var(--theme-nether-ink) !important;
  color: var(--text-soft) !important;
  box-shadow: inset 2px 2px 0 #000, inset -2px -2px 0 #2b1e47;
}
.theme-nether button[data-close-details][style*="border-radius:50%"]:hover {
  color: var(--theme-nether-hover-text) !important;
  box-shadow: inset 2px 2px 0 #000, inset -2px -2px 0 #3d2c63, 0 0 8px var(--theme-nether-glow);
}
/* plugin-dev.php : carte « Statut actuel », filet doré de 1 px de l'ancien thème. */
.theme-nether .card[style*="border:1px solid rgba(212,175,55,0.3)"] { border: 2px solid #000 !important; }

/* plugin-reference.php : sommaire collant à 1em du haut, il passait sous l'en-tête collant
   et ses premières entrées restaient cachées. */
.theme-nether .site-main .card[style*="position:sticky"] {
  top: 134px !important;
  max-height: calc(100vh - 150px) !important;
}
@media (min-width: 1600px) {
  .theme-nether .site-main .card[style*="position:sticky"] {
    top: 84px !important;
    max-height: calc(100vh - 100px) !important;
  }
}
@media (min-width: 721px) and (max-width: 1239px) {
  .theme-nether .site-main .card[style*="position:sticky"] {
    top: 178px !important;
    max-height: calc(100vh - 194px) !important;
  }
}
/* Au téléphone le sommaire passe au-dessus du texte : collant, il glissait par-dessus la doc. */
@media (max-width: 720px) {
  .theme-nether .site-main .card[style*="position:sticky"] {
    position: static !important;
    flex: 1 1 100% !important;
    min-width: 0 !important;
    max-height: 50vh !important;
  }
}
/* plugin-reference.php : carte du document en min-width 22em, débordait sous 354 px. */
.theme-nether .site-main .card[style*="min-width:22em"] { min-width: min(22em, 100%) !important; }
/* plugin-reference.php : le <style> de la page remplaçait les briques par un gris translucide
   et le <pre> d'obsidienne par un gris arrondi. */
.theme-nether .pdoc th,
.theme-nether .pdoc td { border-color: var(--border); }
.theme-nether .pdoc th {
  background: var(--theme-nether-brick) 0 0 / 32px 32px repeat, #2c1116;
  border-bottom: 3px solid #d99a14;
  font-weight: 800;
}
.theme-nether .pdoc pre {
  background: var(--theme-nether-ink);
  border-radius: 0;
}

/* logement.php : panneau des piliers d'un acte (dépliant 🧱). Sans JavaScript il s'ouvre dans
   la case : même dalle biseautée que les formulaires de confirmation voisins. Dans la fenêtre
   d'action, style.css lui retire cadre et ombre (.fenetre-corps > *). */
.theme-nether .pilier-panneau {
  border: 2px solid #000;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 3px 3px 0 rgba(0, 0, 0, 0.5);
}

/* essais-en-jeu.php (aussi dans audit-management) : compteurs du bilan, texte de 2,3 à 3,5
   contre 1 sur fond translucide. Pastilles carrées, fond opaque, teintes claires du thème. */
.theme-nether .ej-bilan span {
  border: 2px solid currentColor;
  border-radius: 0;
  background: #120c1e;
  text-shadow: 1px 1px 0 #000;
  box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .ej-bilan span[style*="#d97706"] { color: #ffb066 !important; }
.theme-nether .ej-bilan span[style*="#16a34a"] { color: #6dff9a !important; }
.theme-nether .ej-bilan span[style*="#dc2626"] { color: #ff8a80 !important; }
.theme-nether .ej-bilan span[style*="#64748b"] { color: #c4b8d8 !important; }
/* Un essai : dalle opaque sans arrondi ; « bloqué » à 0,6 tombait à 2,6 contre 1. */
.theme-nether .ej-essai {
  background: var(--bg-card);
  border: 2px solid #000;
  border-left: 4px solid #64748b;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, 3px 3px 0 rgba(0, 0, 0, 0.45);
}
.theme-nether .ej-essai.bloque { opacity: 0.8; }
.theme-nether .ej-deux { border-radius: 0; }
.theme-nether .ej-form select,
.theme-nether .ej-form input[type="text"] {
  border-radius: 0;
  padding: 9px 12px;
  font-size: 16px;
}
.theme-nether .ej-form select { padding-right: 42px; }
/* Titre de domaine : le h2 du thème (marge haute nulle) collait chaque domaine au précédent. */
.theme-nether h2.ej-dom {
  font-size: 18px;
  margin: 26px 0 10px;
  border-bottom: 2px solid var(--border);
}

/* chantier-proprietes.php (aussi dans audit-management) : légende à 2,6 contre 1 (bleu) et
   ~4 (vert, orange). Teintes claires ; les bords des décisions suivent. */
.theme-nether .cp-legend span[style*="#16a34a"] { color: #3fdc74 !important; }
.theme-nether .cp-legend span[style*="#2563eb"] { color: #6e9aea !important; }
.theme-nether .cp-legend span[style*="#d97706"] { color: #ff8a1f !important; }
.theme-nether .cp-decision {
  background: var(--bg-card);
  border: 2px solid #000;
  border-left: 4px solid #6e9aea;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, 3px 3px 0 rgba(0, 0, 0, 0.45);
}
.theme-nether .cp-decision.final { border-left-color: #3fdc74; }
.theme-nether .cp-decision.open { border-left-color: #ff8a1f; }
.theme-nether .cp-phase th {
  background: var(--theme-nether-brick) 0 0 / 32px 32px repeat, #2c1116;
  border-bottom: 3px solid #d99a14;
}

/* rangement-decisions.php (aussi dans audit-management). */
.theme-nether .dec-q textarea { border-radius: 0; }
.theme-nether .dec-barre {
  background: var(--theme-nether-obsidian) 0 0 / 48px 48px repeat, var(--bg-deep);
  border-top: 2px solid #000;
  box-shadow: 0 -2px 0 #2b1e47;
}
/* « p { color: text-soft } » du thème pesait plus que la classe : les textes secondaires
   (contexte, notes, légende) n'étaient plus atténués. */
.theme-nether p:is(.dec-ctx, .cp-note, .cp-legend) { color: var(--dim); }


/* ---------- 7. ADMINISTRATION : CONTENU ET SUIVI (audit, audit-code, audit-management,
   brainstormings, maquette-copier) ----------
   Le wiki et ses pages d'administration (révision, décisions, corrections) sont retirés du
   site depuis le 2026-10-13 : leurs règles sont parties avec eux. */

/* Onglets (audit-management) : ils pèsent moins que « .theme-nether a » ; les inactifs
   passaient en or et l'actif en blanc, souligné de bleu hors palette. */
.theme-nether .am-onglet {
  color: var(--dim);
  text-shadow: 1px 1px 0 #000;
}
.theme-nether .am-onglet:hover { color: var(--theme-nether-hover-text); }
.theme-nether .am-onglet.on {
  color: var(--bright);
  border-bottom-color: var(--accent);
}
.theme-nether .am-onglets { border-bottom-color: var(--border); }
.theme-nether .am-badge { border-radius: 0; background: var(--bg-card); color: var(--text-soft); }
.theme-nether .am-onglet.on .am-badge {
  background: var(--accent);
  color: var(--theme-nether-gold-ink);
}

/* audit.php : la colonne Cible (62 signes insécables) dépassait la carte même sur ordinateur.
   Cible, IP et Data se coupent s'il le faut ; la date reste insécable. (Au téléphone, la
   carte défile : section 1.) */
.theme-nether .card > table td[style^="font-size:11px"] { overflow-wrap: anywhere; }
/* audit.php : un <code> vide devenait une petite case noire bordée à chaque ligne. */
.theme-nether td > code:empty { display: none; }

/* audit-management.php : liens du pied de page en bleu, 2,3 contre 1 sur l'obsidienne. */
.theme-nether .am-journal a {
  color: var(--accent);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether .am-journal a:hover {
  color: var(--theme-nether-hover-text);
  text-decoration-color: currentColor;
}

/* audit-code.php : compteurs et légende en voiles blancs sur la texture (gris à 4,2 contre 1). */
.theme-nether .ac-stat,
.theme-nether .ac-legend {
  background: var(--bg-card);
  border: 2px solid #000;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 3px 3px 0 rgba(0, 0, 0, 0.5);
}
.theme-nether .ac-legend { border-left: 4px solid var(--border-strong); }
/* audit-code (filtres) et brainstormings (catégories) : pilules translucides (3,8 contre 1),
   l'actif en bleu hors palette. Cases du thème, l'actif en or. */
.theme-nether .ac-filtres a,
.theme-nether .bs-filtres .bs-filtre-btn {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  border: 2px solid #000;
  border-radius: 0;
  background: var(--bg-card);
  color: var(--text-soft);
  text-shadow: 1px 1px 0 #000;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611;
}
.theme-nether .ac-filtres a:hover,
.theme-nether .bs-filtres .bs-filtre-btn:hover {
  background: var(--bg-card-hover);
  color: var(--theme-nether-hover-text);
  box-shadow: inset 2px 2px 0 #4a3678, inset -2px -2px 0 #0a0611, 0 0 8px var(--theme-nether-glow);
}
.theme-nether .ac-filtres a.on,
.theme-nether .ac-filtres a.on:hover,
.theme-nether .bs-filtres .bs-filtre-btn.active,
.theme-nether .bs-filtres .bs-filtre-btn.active:hover {
  background: var(--theme-nether-gold) 0 0 / 32px 32px repeat, #f2c636;
  color: var(--theme-nether-gold-ink);
  font-weight: 800;
  text-shadow: none;
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -2px 0 #9a6300;
}
.theme-nether .ac-pill,
.theme-nether .bs-pill { border-radius: 0; }
/* audit-code : champs arrondis ; le padding de la page effaçait la place de la flèche. */
.theme-nether .ac-form select,
.theme-nether .ac-form input[type=text],
.theme-nether .ac-form textarea { border-radius: 0; }
.theme-nether .ac-form select { padding: 10px 42px 10px 12px; }
.theme-nether .ac-form textarea { padding: 10px 12px; }

/* brainstormings.php : numéro et total en bleu, 2,0 à 2,1 contre 1. */
.theme-nether .bs-numero,
.theme-nether .bs-stat-num { color: var(--accent); }
.theme-nether .bs-stat-box {
  background: var(--bg-card);
  border: 2px solid #000;
  border-left: 4px solid var(--accent);
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, 3px 3px 0 rgba(0, 0, 0, 0.5);
}
/* 137 fiches en 11 à 13 px sur un voile blanc à 4 %, à même la texture : dalles opaques. */
.theme-nether .bs-item {
  background: var(--bg-card);
  border: 2px solid #000;
  border-left: 4px solid var(--border-strong);
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 3px 3px 0 rgba(0, 0, 0, 0.45);
}

/* maquette-copier.php : légendes passées du gris au texte courant, marge doublée ; cadres
   d'options arrondis à filet fin. (Les boutons Copier : section 4.) */
.theme-nether p.mq-legende { color: var(--dim); margin: 0 0 6px; }
.theme-nether .mq-option {
  border: 2px solid #000;
  border-radius: 0;
  box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #0a0611, 4px 4px 0 rgba(0, 0, 0, 0.5);
}

/* ---------- PAGE RÈGLES : le portail de l'accueil ----------
   JM, 2026-10-13 : « tu peux mettre la même animation dans les règles ? sans briser ? ». Le même cadre d'obsidienne,
   le même violet de portail, le même reflet qui glisse en diagonale et les mêmes particules qui montent que .hero.
   Pas de boîte autour des règles (JM, même jour : « enlève les boîtes de chaque règle ») : le texte garde une ombre
   sombre, comme les titres posés sur le portail, pour rester lisible quand une étincelle passe dessous. */
.theme-nether .card.carte-portail,
.theme-nether .card.carte-portail:hover {
  position: relative;
  overflow: hidden;
  border: 10px solid transparent;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(190, 120, 255, 0.22) 0%, transparent 60%) padding-box,
    linear-gradient(180deg, rgba(10, 5, 20, 0.35) 0%, rgba(10, 5, 20, 0.65) 100%) padding-box,
    var(--theme-nether-portal) 0 0 / 48px 48px repeat padding-box,
    var(--theme-nether-obsidian) 0 0 / 32px 32px repeat border-box;
  box-shadow: 0 0 0 2px #000, inset 0 0 0 2px #000, inset 0 0 40px rgba(120, 50, 220, 0.35), 8px 8px 0 2px rgba(0, 0, 0, 0.55);
}
.theme-nether .card.carte-portail::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    linear-gradient(45deg,
      transparent 38%, rgba(196, 140, 255, 0.08) 38%, rgba(196, 140, 255, 0.08) 46%, transparent 46%,
      transparent 88%, rgba(196, 140, 255, 0.08) 88%, rgba(196, 140, 255, 0.08) 96%, transparent 96%)
    0 0 / 120px 120px;
  animation: theme-nether-portail 9s linear infinite;
}
.theme-nether .card.carte-portail::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    var(--theme-nether-sparks) 0 0 / 64px 64px repeat,
    var(--theme-nether-sparks) 32px 20px / 128px 128px repeat;
  opacity: 0.5;
  animation: theme-nether-particules 7s linear infinite;
}
.theme-nether .card.carte-portail > * { position: relative; z-index: 1; }
.theme-nether .card.carte-portail h1 { text-shadow: 3px 3px 0 #2a1745; }
.theme-nether .carte-portail .regle-titree p,
.theme-nether .carte-portail .maj { text-shadow: 2px 2px 0 #12081f, 0 0 6px #12081f; }

/* ---------- LA MÉTÉO DE LA BARRE DU HAUT ----------
   JM, 2026-10-13 : « tu peux faire un effet de pluie ? », d'abord dans l'en-tête « Infos serveur » de la page Serveur,
   puis « on peut mettre plusieurs animations du genre ? pluie, soleil, vent, nuages etc etc ? par contre je veux pas
   trop noyer le site » : une seule à la fois. Puis, devant la barre des menus : « je la voudrais dans ce bandeau en haut
   complètement pour l'avoir sur le site au complet... pas juste dans un endroit ». La page Serveur n'en a plus. Enfin :
   « tu peux ajouter de la neige.. on est au Québec ici. je voudrais tout les barres, selon la météo local de
   Montréal.. » : toutes les météos, plus la neige, et c'est le temps qu'il fait à Montréal qui choisit.
   La météo est une couche posée en premier enfant de l'en-tête : <span class="meteo-ciel meteo-<nom>"
   aria-hidden="true">, avec <nom> parmi soleil, nuages, vent, pluie, orage, nuit, neige. templates/page-header.php la
   pose sur toutes les pages, d'après lib/meteo.php (le relevé d'Environnement Canada pour Montréal) ;
   /admin/maquette-meteo.php montre les sept, sur sept copies de la barre.
   La couche couvre la barre, sauf le liseré d'or, en z-index -1 : l'en-tête collant (z-index 100) forme son propre
   contexte d'empilement, elle se peint donc sur son fond et sous le logo, l'horloge et le menu, sans rien déplacer.
   Les boutons gardent leur fond ; le texte des liens a déjà son ombre noire. La barre ne mesure que 64 px de haut sur un
   grand écran (plus quand le menu passe à la ligne) : le soleil et la lune se tiennent dans le coin haut droit, dans la
   marge ; l'éclair de l'orage dans les marges de gauche et de droite ; les feuilles du vent en haut et en bas ; la
   neige tombe partout, lentement.
   Discret avant tout : opacités basses, mouvements lents. Deux couches au plus (::before et ::after), une seule
   animation par couche, une tuile entière par tour : aucun saut. Textures : les variables --theme-nether-meteo-<nom>-…,
   en tête de feuille. Mouvements réduits : la règle globale du thème arrête tout ; l'image fixe qui reste est prévue
   pour chaque météo. */

/* Socle commun : la couche, et ses deux pseudo-éléments sur toute sa surface. */
.theme-nether .site-header > .meteo-ciel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 4px;
  left: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}
.theme-nether .site-header > .meteo-ciel::before,
.theme-nether .site-header > .meteo-ciel::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

/* SOLEIL : un petit disque carré en pixels (20 px) dans le coin haut droit, dans la marge de la barre, entouré d'une
   lueur dorée qui respire lentement (opacité, 7 s à l'aller, 7 s au retour) ; une lueur chaude très légère s'étale
   depuis le coin. Pas de rayons : collés au bord, cinq sur huit sortaient de la barre et le bouton EN cachait les
   autres. Le disque ne bouge pas. Au téléphone, le coin de l'horloge passe devant un coin du disque. */
.theme-nether .meteo-ciel.meteo-soleil::before {
  background: radial-gradient(circle 90px at calc(100% - 11px) 11px, rgba(255, 210, 110, 0.28), rgba(255, 210, 110, 0));
  opacity: 0.7;
  animation: theme-nether-meteo-soleil 7s ease-in-out infinite alternate;
}
.theme-nether .meteo-ciel.meteo-soleil::after {
  background:
    var(--theme-nether-meteo-soleil-disque) right 1px top 1px / 20px 20px no-repeat,
    radial-gradient(circle 260px at calc(100% - 11px) 11px, rgba(255, 190, 90, 0.1), rgba(255, 190, 90, 0));
}
@keyframes theme-nether-meteo-soleil {
  from { opacity: 0.45; }
  to { opacity: 0.95; }
}

/* NUAGES : deux rangs de nuages plats en blocs, façon Minecraft, qui glissent vers la droite d'un pixel à la fois.
   Derrière, les petits et pâles (en x1, 3 px par seconde) ; devant, les grands (en x2, 7 px par seconde). Dans les
   64 px de la barre, les deux rangs tiennent presque en entier. Voile froid très léger. */
.theme-nether .meteo-ciel.meteo-nuages::before {
  background:
    var(--theme-nether-meteo-nuages-loin) 0 0 / 240px 70px repeat-x,
    linear-gradient(180deg, rgba(150, 160, 205, 0.05) 0%, rgba(150, 160, 205, 0) 100%);
  animation: theme-nether-meteo-nuages-loin 80s steps(240) infinite;
}
.theme-nether .meteo-ciel.meteo-nuages::after {
  background: var(--theme-nether-meteo-nuages-pres) 0 -4px / 448px 92px repeat-x;
  animation: theme-nether-meteo-nuages-pres 64s steps(448) infinite;
}
@keyframes theme-nether-meteo-nuages-loin {
  to { background-position: 240px 0, 0 0; }
}
@keyframes theme-nether-meteo-nuages-pres {
  to { background-position: 448px -4px; }
}

/* VENT : de fines traînées horizontales, plus vives à la tête, qui filent vers la droite (deux vitesses) ; trois
   passagers rares : une feuille verte et un brin de paille dans la marge du haut, une feuille rousse dans celle du bas,
   juste au-dessus du liseré d'or, qui avancent en ondulant. Une de chaque par tuile (1 200, 960 et 1 440 px) : au
   téléphone, souvent aucune ; sur un grand écran, deux ou trois à la fois. */
.theme-nether .meteo-ciel.meteo-vent::before {
  background:
    var(--theme-nether-meteo-vent-trainees) 0 0 / 512px 140px repeat,
    var(--theme-nether-meteo-vent-trainees-loin) 0 0 / 384px 140px repeat;
  animation: theme-nether-meteo-vent-trainees 12s linear infinite;
}
.theme-nether .meteo-ciel.meteo-vent::after {
  background:
    var(--theme-nether-meteo-vent-feuille-verte) 96px 3px / 1200px 12px repeat-x,
    var(--theme-nether-meteo-vent-feuille-rousse) right 120px bottom 0 / 960px 12px repeat-x,
    var(--theme-nether-meteo-vent-brin) 260px 3px / 1440px 8px repeat-x;
  animation: theme-nether-meteo-vent-feuilles 24s linear infinite;
}
@keyframes theme-nether-meteo-vent-trainees {
  to { background-position: 1024px 0, 384px 0; }
}
@keyframes theme-nether-meteo-vent-feuilles {
  0% { background-position: 0 3px, 0 100%, 0 3px; }
  4.167% { background-position: 50px 6px, 80px calc(100% - 1px), 60px 6px; }
  8.333% { background-position: 100px 6px, 160px calc(100% - 4px), 120px 3px; }
  12.5% { background-position: 150px 3px, 240px calc(100% - 7px), 180px 0px; }
  16.667% { background-position: 200px 0px, 320px calc(100% - 10px), 240px 3px; }
  20.833% { background-position: 250px 0px, 400px calc(100% - 9px), 300px 6px; }
  25% { background-position: 300px 3px, 480px calc(100% - 6px), 360px 3px; }
  29.167% { background-position: 350px 6px, 560px calc(100% - 3px), 420px 0px; }
  33.333% { background-position: 400px 6px, 640px 100%, 480px 3px; }
  37.5% { background-position: 450px 3px, 720px calc(100% - 1px), 540px 6px; }
  41.667% { background-position: 500px 0px, 800px calc(100% - 4px), 600px 3px; }
  45.833% { background-position: 550px 0px, 880px calc(100% - 7px), 660px 0px; }
  50% { background-position: 600px 3px, 960px calc(100% - 10px), 720px 3px; }
  54.167% { background-position: 650px 6px, 1040px calc(100% - 9px), 780px 6px; }
  58.333% { background-position: 700px 6px, 1120px calc(100% - 6px), 840px 3px; }
  62.5% { background-position: 750px 3px, 1200px calc(100% - 3px), 900px 0px; }
  66.667% { background-position: 800px 0px, 1280px 100%, 960px 3px; }
  70.833% { background-position: 850px 0px, 1360px calc(100% - 1px), 1020px 6px; }
  75% { background-position: 900px 3px, 1440px calc(100% - 4px), 1080px 3px; }
  79.167% { background-position: 950px 6px, 1520px calc(100% - 7px), 1140px 0px; }
  83.333% { background-position: 1000px 6px, 1600px calc(100% - 10px), 1200px 3px; }
  87.5% { background-position: 1050px 3px, 1680px calc(100% - 9px), 1260px 6px; }
  91.667% { background-position: 1100px 0px, 1760px calc(100% - 6px), 1320px 3px; }
  95.833% { background-position: 1150px 0px, 1840px calc(100% - 3px), 1380px 0px; }
  100% { background-position: 1200px 3px, 1920px 100%, 1440px 3px; }
}

/* PLUIE : la pluie d'origine. Deux couches de gouttes qui tombent tout droit : les proches, plus grandes et plus
   rapides ; celles du fond, plus fines et plus lentes. Une tuile entière par tour. */
.theme-nether .meteo-ciel.meteo-pluie::before {
  background:
    var(--theme-nether-meteo-pluie-proche) 0 0 / 128px 128px repeat,
    var(--theme-nether-meteo-pluie-loin) 30px 0 / 64px 64px repeat,
    linear-gradient(180deg, rgba(40, 60, 110, 0.18) 0%, rgba(40, 60, 110, 0) 100%);
  animation: theme-nether-meteo-pluie 0.9s linear infinite;
}
@keyframes theme-nether-meteo-pluie {
  to { background-position: 0 128px, 30px 64px, 0 0; }
}

/* ORAGE : ciel assombri, nuages d'orage en blocs collés en haut de la barre, pluie penchée par le vent.
   ::before : tout glisse ensemble en 24 s ; en un tour, les gouttes proches font 11 tuiles de côté et 33 vers le
   bas (176 px par seconde vers le bas), celles du fond 12 et 36 tuiles (96 px par seconde), les nuages une tuile
   (10 px par seconde) : tout retombe sur une tuile entière, sans saut.
   ::after : l'éclair, sa lueur et un voile pâle. Deux éclairs par tour de 22 s, à 11 s d'écart, l'un dans la marge
   de gauche puis l'autre dans celle de droite, de toute la hauteur de la barre ; chacun monte en 0,13 s et s'éteint
   en 0,7 s, un seul éclat, voile à 0,15 au plus. L'éclair change de côté pendant qu'il est éteint ; sa lueur
   (220 x 170) reste centrée sur lui. Mouvements réduits : la pluie s'arrête ; l'éclair de gauche reste dessiné, à
   demi-teinte (opacité 0,5 de la couche), pour qu'on lise encore « orage ». */
.theme-nether .meteo-ciel.meteo-orage::before {
  background:
    var(--theme-nether-meteo-orage-nuages) 0 0 / 240px 20px repeat-x,
    var(--theme-nether-meteo-orage-pluie-proche) 0 0 / 128px 128px repeat,
    var(--theme-nether-meteo-orage-pluie-loin) 30px 0 / 64px 64px repeat,
    linear-gradient(180deg, rgba(6, 4, 14, 0.42) 0%, rgba(30, 36, 70, 0.1) 100%);
  animation: theme-nether-meteo-orage 24s linear infinite;
}
@keyframes theme-nether-meteo-orage {
  to { background-position: 240px 0, 1408px 4224px, 798px 2304px, 0 0; }
}
.theme-nether .meteo-ciel.meteo-orage::after {
  background:
    var(--theme-nether-meteo-orage-eclair) 0 1px / 28px 62px no-repeat,
    radial-gradient(closest-side, rgba(200, 190, 255, 0.3), rgba(200, 190, 255, 0)) -96px -53px / 220px 170px no-repeat,
    linear-gradient(180deg, rgba(200, 192, 255, 0.15) 0%, rgba(200, 192, 255, 0.05) 100%);
  opacity: 0.5;
  animation: theme-nether-meteo-orage-eclair 22s ease infinite;
}
/* Sur grand écran, la marge de gauche a 24 px et la branche de l'éclair finissait à 2 px de l'épée du logo : la boîte
   recule de 6 px. Sa lueur, dans la même boîte, reste centrée sur lui ; l'éclair de droite (100 %) ne bouge pas. */
@media (min-width: 721px) {
  .theme-nether .meteo-ciel.meteo-orage::after { left: -6px; }
}
@keyframes theme-nether-meteo-orage-eclair {
  0% { opacity: 0; background-position: 0 1px, -96px -53px, 0 0; }
  13.6% { opacity: 0; }
  14.2% { opacity: 1; animation-timing-function: ease-out; }
  17.5% { opacity: 0; }
  49.9% { opacity: 0; background-position: 0 1px, -96px -53px, 0 0; }
  50% { opacity: 0; background-position: 100% 1px, calc(100% + 96px) -53px, 0 0; }
  63.6% { opacity: 0; }
  64.2% { opacity: 1; animation-timing-function: ease-out; }
  67.5% { opacity: 0; }
  100% { opacity: 0; background-position: 100% 1px, calc(100% + 96px) -53px, 0 0; }
}
/* Au téléphone, la marge n'a que 12 px : l'éclair passe en x1 (14 x 31) et sa lueur en 206 x 139. Les positions de
   l'animation ne changent pas : avec ces tailles, ses décalages (-96 px, -53 px) la centrent encore sur l'éclair. */
@media (max-width: 720px) {
  .theme-nether .meteo-ciel.meteo-orage::after { background-size: 14px 31px, 206px 139px, auto; }
}

/* NUIT : ciel bleu nuit, étoiles pâles fixes, une petite lune carrée (20 px) dans le coin haut droit, à la place du
   soleil, avec un halo très doux. ::before : seules les étoiles qui scintillent bougent, par sauts (steps) d'une
   vignette à l'autre toutes les 1,5 s : chaque étoile garde sa place et change seulement d'éclat (point pâle, point,
   petite croix). Les deux petites croix sont dans la marge du haut, les trois points dans les 64 px de la barre.
   ::after : une étoile filante, une seule par tour de 28 s, visible moins d'une seconde, vers le tiers de la largeur ;
   elle file dans la marge du haut, au-dessus du texte du menu, avec la pente de sa traînée (1 pour 4).
   Mouvements réduits : le ciel reste tel quel, avec la première vignette ; pas d'étoile filante. */
.theme-nether .meteo-ciel.meteo-nuit::before {
  background:
    var(--theme-nether-meteo-nuit-lune) right 1px top 1px / 20px 20px no-repeat,
    var(--theme-nether-meteo-nuit-scintille) 0 0 / 300px 576px repeat,
    var(--theme-nether-meteo-nuit-etoiles) 60px -28px / 236px 140px repeat,
    radial-gradient(closest-side, rgba(225, 228, 255, 0.12), rgba(225, 228, 255, 0)) right -39px top -39px / 100px 100px no-repeat,
    linear-gradient(180deg, rgba(4, 8, 32, 0.5) 0%, rgba(4, 8, 32, 0.12) 100%);
  animation: theme-nether-meteo-nuit 6s steps(4) infinite;
}
@keyframes theme-nether-meteo-nuit {
  to { background-position: right 1px top 1px, 0 576px, 60px -28px, right -39px top -39px, 0 0; }
}
.theme-nether .meteo-ciel.meteo-nuit::after {
  background: var(--theme-nether-meteo-nuit-filante) 35% -8px / 56px 14px no-repeat;
  opacity: 0;
  animation: theme-nether-meteo-nuit-filante 28s linear infinite;
}
@keyframes theme-nether-meteo-nuit-filante {
  0%, 62% { opacity: 0; background-position: 35% -8px; }
  62.4% { opacity: 1; }
  63.6% { opacity: 0.85; }
  64.4% { opacity: 0; background-position: calc(35% + 64px) 8px; }
  100% { opacity: 0; background-position: calc(35% + 64px) 8px; }
}

/* NEIGE : des flocons en pixels, façon Minecraft, qui tombent lentement en flottant de gauche à droite. Les flocons
   proches sont surtout des boules pleines aux coins pâles, pour ne pas ressembler aux étoiles en croix de la nuit.
   ::before : les flocons du fond, petits carrés de 2 px bleutés (8 px par seconde, 3 px de chaque côté), et un voile
   froid très léger en haut. ::after : les flocons proches, boules de 4 ou 3 px et carrés de 2 px (20 px par seconde,
   6 px de chaque côté, en sens contraire au départ). Deux tours de durées différentes (24 s et 16 s) : les deux rangs ne flottent pas ensemble. Chaque tour
   descend de deux tuiles entières et finit à sa place de départ sur le côté : aucun saut. Mouvements réduits : les
   flocons restent posés là où ils sont. */
.theme-nether .meteo-ciel.meteo-neige::before {
  background:
    var(--theme-nether-meteo-neige-loin) 0 0 / 96px 96px repeat,
    linear-gradient(180deg, rgba(200, 212, 245, 0.07) 0%, rgba(200, 212, 245, 0) 100%);
  animation: theme-nether-meteo-neige-loin 24s linear infinite;
}
@keyframes theme-nether-meteo-neige-loin {
  0% { background-position: 0 0, 0 0; }
  6.25% { background-position: 2px 12px, 0 0; }
  12.5% { background-position: 3px 24px, 0 0; }
  18.75% { background-position: 2px 36px, 0 0; }
  25% { background-position: 0 48px, 0 0; }
  31.25% { background-position: -2px 60px, 0 0; }
  37.5% { background-position: -3px 72px, 0 0; }
  43.75% { background-position: -2px 84px, 0 0; }
  50% { background-position: 0 96px, 0 0; }
  56.25% { background-position: 2px 108px, 0 0; }
  62.5% { background-position: 3px 120px, 0 0; }
  68.75% { background-position: 2px 132px, 0 0; }
  75% { background-position: 0 144px, 0 0; }
  81.25% { background-position: -2px 156px, 0 0; }
  87.5% { background-position: -3px 168px, 0 0; }
  93.75% { background-position: -2px 180px, 0 0; }
  100% { background-position: 0 192px, 0 0; }
}
.theme-nether .meteo-ciel.meteo-neige::after {
  background: var(--theme-nether-meteo-neige-proche) 0 0 / 160px 160px repeat;
  animation: theme-nether-meteo-neige-proche 16s linear infinite;
}
@keyframes theme-nether-meteo-neige-proche {
  0% { background-position: 0 0; }
  6.25% { background-position: -4px 20px; }
  12.5% { background-position: -6px 40px; }
  18.75% { background-position: -4px 60px; }
  25% { background-position: 0 80px; }
  31.25% { background-position: 4px 100px; }
  37.5% { background-position: 6px 120px; }
  43.75% { background-position: 4px 140px; }
  50% { background-position: 0 160px; }
  56.25% { background-position: -4px 180px; }
  62.5% { background-position: -6px 200px; }
  68.75% { background-position: -4px 220px; }
  75% { background-position: 0 240px; }
  81.25% { background-position: 4px 260px; }
  87.5% { background-position: 6px 280px; }
  93.75% { background-position: 4px 300px; }
  100% { background-position: 0 320px; }
}

/* ---------- Les vacances : le calendrier (style.css), sans arrondi comme le reste de l'habillage ---------- */
.theme-nether .vac-mois { border-radius: 0; border: 2px solid #000; box-shadow: inset 2px 2px 0 #2e2148, inset -2px -2px 0 #07040c; }
.theme-nether .vac-cal .vac-jour { border-radius: 0; font-family: var(--theme-nether-font); }
.theme-nether .vac-jour-ex { border-radius: 0; }
.theme-nether .vac-alerte { border-radius: 0; }
.theme-nether .vac-barre { border-top: 2px solid #000; }
.theme-nether .vac-etapes { border-radius: 0; }
/* La phrase rouge de la fenêtre « Répondre » (Clémence) : « .theme-nether p » la remettait dans la couleur des notes. */
.theme-nether p.vac-impaye { color: var(--red-bright); }

/* ---------- La fiche du joueur (admin/joueur.php ; style.css) ---------- */
/* Les paragraphes du thème (couleur, marges) passaient devant ceux de la fiche. */
.theme-nether .fiche-rien,
.theme-nether .fiche-meta { color: var(--dim); }
.theme-nether .fiche-suite { margin: 12px 0 0; }
.theme-nether .fiche-sous-titre { font-size: 16px; margin: 18px 0 8px; }
.theme-nether .fiche-liste > li { border-top: 2px solid #241838; }
.theme-nether .fiche-liste > li:first-child { border-top: 0; }
/* Les montants des émeraudes : la couleur des cases du thème passait devant. */
.theme-nether td.fiche-montant-plus { color: var(--green-bright); }
.theme-nether td.fiche-montant-moins { color: var(--red-bright); }
/* Le sommaire : des liens soulignés comme dans une phrase, chacun une cible de 40 au téléphone. */
.theme-nether .fiche-sommaire a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(255, 204, 51, 0.5);
}
.theme-nether .fiche-sommaire a:hover { text-decoration-color: currentColor; }

/* ---------- La prison (style.css) : tuiles d'obsidienne, la tuile choisie en or ---------- */
.theme-nether .choix-tuiles legend { color: var(--text-soft); font-weight: 800; text-shadow: 1px 1px 0 #000; }
.theme-nether .choix-tuiles .choix-tuile {
  border: 2px solid #000;
  border-radius: 0;
  color: var(--theme-nether-quartz);
  font-family: var(--theme-nether-font);
  font-weight: 700;
  letter-spacing: 0;
  text-shadow: 2px 2px 0 #1a0d2e;
  background-color: #1d1430;
  background-image: var(--theme-nether-obsidian);
  background-size: 32px 32px;
  box-shadow: inset 2px 2px 0 #5a3f94, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55);
}
.theme-nether .choix-tuiles .choix-tuile:hover {
  box-shadow: inset 2px 2px 0 #8a5cd6, inset -2px -2px 0 #050309, 3px 3px 0 rgba(0, 0, 0, 0.55), 0 0 14px rgba(164, 107, 255, 0.6);
}
.theme-nether .choix-tuiles .choix-tuile-txt small { color: #c9bde0; text-shadow: none; }
.theme-nether .choix-tuiles .choix-tuile:has(input:checked) {
  color: var(--theme-nether-gold-ink);
  text-shadow: 1px 1px 0 rgba(255, 243, 176, 0.5);
  background-color: #f2c636;
  background-image: var(--theme-nether-gold);
  box-shadow: inset 2px 2px 0 #fff3b0, inset -2px -3px 0 #9a6300, 3px 3px 0 rgba(0, 0, 0, 0.55);
}
/* « .theme-nether strong » (couleur claire) passait devant la couleur de la tuile : le « 4 h » d'une tuile
   d'or était blanc sur or. */
.theme-nether .choix-tuiles .choix-tuile-txt strong { color: inherit; }
.theme-nether .choix-tuiles .choix-tuile:has(input:checked) small { color: var(--theme-nether-gold-ink); }
.theme-nether .choix-tuiles .choix-tuile:has(input:focus-visible) { outline: 3px solid var(--theme-nether-purple-light); outline-offset: 2px; }
.theme-nether .choix-tuiles-note,
.theme-nether .prison-note,
.theme-nether .prison-compte,
.theme-nether .report-prison-note { color: var(--dim); }
.theme-nether .prison-avis { border-radius: 0; color: var(--warn-bright); }
.theme-nether .prison-item { border-top: 2px solid #241838; }
.theme-nether .prison-item:first-child { border-top: 0; }
.theme-nether .prison-form textarea { min-height: 96px; }
/* Signalements : les phrases gardées avec la plainte, dans un cadre d'obsidienne comme les lignes de la prison. */
.theme-nether .report-chat { border: 2px solid #241838; border-radius: 0; }
.theme-nether .report-chat legend { font-weight: 800; text-shadow: 1px 1px 0 #000; }
.theme-nether .report-chat-liste li + li { border-top: 2px solid #241838; }
.theme-nether .report-chat-heure { color: var(--dim); text-shadow: none; }
.theme-nether .report-chat-texte { color: var(--text); font-weight: 500; }
/* « .theme-nether p » (couleur et marges) passait devant la ligne d'historique du plaignant. */
.theme-nether .report-historique { color: var(--dim); margin: -8px 0 12px; }
