/* Bourg-Laguet — thème « Bois et laiton » (table de jeu sombre). Pas de build : servi tel quel (hébergement OVH).
   Polices hébergées par le site (public/fonts, licence SIL OFL : OFL-cinzel.txt, OFL-alegreya-sans.txt). */
@font-face { font-family: 'Cinzel'; font-style: normal; font-weight: 400 600; font-display: swap; src: url('/fonts/cinzel-latin.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/alegreya-sans-latin-400.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/alegreya-sans-latin-500.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/alegreya-sans-latin-700.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url('/fonts/alegreya-sans-latin-400-italic.woff2') format('woff2'); }

[hidden] { display: none !important; }
:root {
    --fond: #1a120c;
    --surface: #241910;
    --surface-2: #2a1d13;
    --bordure: #5a4128;
    --texte: #ead9b8;
    --texte-doux: #a8916c;
    --accent: #b08d57;
    --accent-texte: #1a120c;
    --danger: #d9775a;
    --succes: #9cbf72;
    --info: #7fa9cf;
    --rayon: 6px;
    /* Laiton et bois */
    --laiton-clair: #e2c48a;
    --laiton-sombre: #6e5530;
    --matiere-laiton: linear-gradient(180deg, #d6b679 0%, var(--accent) 45%, #9c7c48 100%);
    /* Cadre laiton à coins gravés (border-image : coins de 12 px, filets étirés entre eux) */
    --cadre-laiton: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Crect x='1.5' y='1.5' width='33' height='33' fill='none' stroke='%23b08d57' stroke-width='3'/%3E%3Crect x='4.5' y='4.5' width='27' height='27' fill='none' stroke='%236e5530' stroke-width='1'/%3E%3Cg fill='%23e2c48a' stroke='%236e5530' stroke-width='.6'%3E%3Cpath d=%22M6 1.5l4.5 4.5-4.5 4.5-4.5-4.5z%22/%3E%3Cpath d=%22M30 1.5l4.5 4.5-4.5 4.5-4.5-4.5z%22/%3E%3Cpath d=%22M6 25.5l4.5 4.5-4.5 4.5-4.5-4.5z%22/%3E%3Cpath d=%22M30 25.5l4.5 4.5-4.5 4.5-4.5-4.5z%22/%3E%3C/g%3E%3C/svg%3E") 12 / 12px stretch;
    --police-titres: 'Cinzel', Georgia, 'Times New Roman', serif;
    --police-texte: 'Alegreya Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

* { box-sizing: border-box; }

/* Table de noyer : fibres irrégulières, quelques nœuds et trous (SVG en ligne, généré une fois : grand motif, peu répété).
   La couleur de fond reste celle de --fond si le motif ne se charge pas. */
body {
    margin: 0;
    background: var(--fond) url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%221400%22 height=%22900%22%3E%3Cdefs%3E%3Cfilter id=%22f%22 x=%220%22 y=%220%22 width=%22100%25%22 height=%22100%25%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%22.0022 .11%22 numOctaves=%223%22 seed=%224%22 stitchTiles=%22stitch%22/%3E%3CfeColorMatrix values=%220 0 0 0 .04  0 0 0 0 .025  0 0 0 0 .015  1.6 0 0 0 -.62%22/%3E%3C/filter%3E%3Cfilter id=%22c%22 x=%220%22 y=%220%22 width=%22100%25%22 height=%22100%25%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%22.0015 .035%22 numOctaves=%222%22 seed=%229%22 stitchTiles=%22stitch%22/%3E%3CfeColorMatrix values=%220 0 0 0 .26  0 0 0 0 .18  0 0 0 0 .11  1.4 0 0 0 -.6%22/%3E%3C/filter%3E%3CradialGradient id=%22halo%22%3E%3Cstop offset=%220%22 stop-color=%22%234a2c18%22 stop-opacity=%22.75%22/%3E%3Cstop offset=%22.55%22 stop-color=%22%233a2414%22 stop-opacity=%22.35%22/%3E%3Cstop offset=%221%22 stop-color=%22%233a2414%22 stop-opacity=%220%22/%3E%3C/radialGradient%3E%3CradialGradient id=%22coeur%22%3E%3Cstop offset=%220%22 stop-color=%22%23050302%22/%3E%3Cstop offset=%22.7%22 stop-color=%22%23140c07%22/%3E%3Cstop offset=%221%22 stop-color=%22%23140c07%22 stop-opacity=%220%22/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect width=%22100%25%22 height=%22100%25%22 fill=%22%231a120c%22/%3E%3Crect width=%22100%25%22 height=%22100%25%22 filter=%22url(%23c)%22 opacity=%22.5%22/%3E%3Crect width=%22100%25%22 height=%22100%25%22 filter=%22url(%23f)%22/%3E%3Cg transform=%22translate(90 230) rotate(-2)%22%3E%3Cellipse rx=%22105.8%22 ry=%2248.3%22 fill=%22url(%23halo)%22/%3E%3Cpath d=%22M-322 -5.3 C-138 -6.4 -101 -21.3 0 -21.3 S138 -6.4 322 -5.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 5.3 C-138 6.4 -101 21.3 0 21.3 S138 6.4 322 5.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 -7.2 C-138 -8.7 -101 -29.0 0 -29.0 S138 -8.7 322 -7.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 7.2 C-138 8.7 -101 29.0 0 29.0 S138 8.7 322 7.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 -9.7 C-138 -11.6 -101 -38.6 0 -38.6 S138 -11.6 322 -9.7%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 9.7 C-138 11.6 -101 38.6 0 38.6 S138 11.6 322 9.7%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 -12.6 C-138 -15.1 -101 -50.2 0 -50.2 S138 -15.1 322 -12.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 12.6 C-138 15.1 -101 50.2 0 50.2 S138 15.1 322 12.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 -15.9 C-138 -19.1 -101 -63.8 0 -63.8 S138 -19.1 322 -15.9%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cpath d=%22M-322 15.9 C-138 19.1 -101 63.8 0 63.8 S138 19.1 322 15.9%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cellipse rx=%2213.8%22 ry=%226.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.66%22 stroke-width=%222.1%22/%3E%3Cellipse rx=%2220.7%22 ry=%229.9%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.37%22 stroke-width=%222.0%22/%3E%3Cellipse rx=%2228.5%22 ry=%2213.7%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.57%22 stroke-width=%221.9%22/%3E%3Cellipse rx=%2236.8%22 ry=%2217.7%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.31%22 stroke-width=%221.8%22/%3E%3Cellipse rx=%2246.0%22 ry=%2222.1%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.46%22 stroke-width=%221.7%22/%3E%3Cellipse rx=%2257.5%22 ry=%2227.6%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.23%22 stroke-width=%221.6%22/%3E%3Cellipse rx=%2269.0%22 ry=%2233.1%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221.5%22/%3E%3Cellipse rx=%2282.8%22 ry=%2239.7%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.14%22 stroke-width=%221.3%22/%3E%3Cellipse rx=%2298.9%22 ry=%2247.5%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.13%22 stroke-width=%221.1%22/%3E%3Cellipse rx=%2213.8%22 ry=%226.9%22 fill=%22url(%23coeur)%22/%3E%3C/g%3E%3Cg transform=%22translate(1050 560) rotate(3)%22%3E%3Cellipse rx=%2287.4%22 ry=%2239.9%22 fill=%22url(%23halo)%22/%3E%3Cpath d=%22M-266 -4.4 C-114 -5.3 -84 -17.6 0 -17.6 S114 -5.3 266 -4.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 4.4 C-114 5.3 -84 17.6 0 17.6 S114 5.3 266 4.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 -6.0 C-114 -7.2 -84 -23.9 0 -23.9 S114 -7.2 266 -6.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 6.0 C-114 7.2 -84 23.9 0 23.9 S114 7.2 266 6.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 -8.0 C-114 -9.6 -84 -31.9 0 -31.9 S114 -9.6 266 -8.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 8.0 C-114 9.6 -84 31.9 0 31.9 S114 9.6 266 8.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 -10.4 C-114 -12.4 -84 -41.5 0 -41.5 S114 -12.4 266 -10.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 10.4 C-114 12.4 -84 41.5 0 41.5 S114 12.4 266 10.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 -13.2 C-114 -15.8 -84 -52.7 0 -52.7 S114 -15.8 266 -13.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cpath d=%22M-266 13.2 C-114 15.8 -84 52.7 0 52.7 S114 15.8 266 13.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cellipse rx=%2211.4%22 ry=%225.5%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.66%22 stroke-width=%222.1%22/%3E%3Cellipse rx=%2217.1%22 ry=%228.2%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.37%22 stroke-width=%222.0%22/%3E%3Cellipse rx=%2223.6%22 ry=%2211.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.57%22 stroke-width=%221.9%22/%3E%3Cellipse rx=%2230.4%22 ry=%2214.6%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.31%22 stroke-width=%221.8%22/%3E%3Cellipse rx=%2238.0%22 ry=%2218.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.46%22 stroke-width=%221.7%22/%3E%3Cellipse rx=%2247.5%22 ry=%2222.8%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.23%22 stroke-width=%221.6%22/%3E%3Cellipse rx=%2257.0%22 ry=%2227.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221.5%22/%3E%3Cellipse rx=%2268.4%22 ry=%2232.8%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.14%22 stroke-width=%221.3%22/%3E%3Cellipse rx=%2281.7%22 ry=%2239.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.13%22 stroke-width=%221.1%22/%3E%3Cellipse rx=%2211.4%22 ry=%225.7%22 fill=%22url(%23coeur)%22/%3E%3C/g%3E%3Cg transform=%22translate(560 780) rotate(0)%22%3E%3Cellipse rx=%2269.0%22 ry=%2231.5%22 fill=%22url(%23halo)%22/%3E%3Cpath d=%22M-210 -3.5 C-90 -4.2 -66 -13.9 0 -13.9 S90 -4.2 210 -3.5%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 3.5 C-90 4.2 -66 13.9 0 13.9 S90 4.2 210 3.5%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 -4.7 C-90 -5.7 -66 -18.9 0 -18.9 S90 -5.7 210 -4.7%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 4.7 C-90 5.7 -66 18.9 0 18.9 S90 5.7 210 4.7%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 -6.3 C-90 -7.6 -66 -25.2 0 -25.2 S90 -7.6 210 -6.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 6.3 C-90 7.6 -66 25.2 0 25.2 S90 7.6 210 6.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 -8.2 C-90 -9.8 -66 -32.8 0 -32.8 S90 -9.8 210 -8.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 8.2 C-90 9.8 -66 32.8 0 32.8 S90 9.8 210 8.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 -10.4 C-90 -12.5 -66 -41.6 0 -41.6 S90 -12.5 210 -10.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cpath d=%22M-210 10.4 C-90 12.5 -66 41.6 0 41.6 S90 12.5 210 10.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cellipse rx=%229.0%22 ry=%224.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.66%22 stroke-width=%222.1%22/%3E%3Cellipse rx=%2213.5%22 ry=%226.5%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.37%22 stroke-width=%222.0%22/%3E%3Cellipse rx=%2218.6%22 ry=%228.9%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.57%22 stroke-width=%221.9%22/%3E%3Cellipse rx=%2224.0%22 ry=%2211.5%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.31%22 stroke-width=%221.8%22/%3E%3Cellipse rx=%2230.0%22 ry=%2214.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.46%22 stroke-width=%221.7%22/%3E%3Cellipse rx=%2237.5%22 ry=%2218.0%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.23%22 stroke-width=%221.6%22/%3E%3Cellipse rx=%2245.0%22 ry=%2221.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221.5%22/%3E%3Cellipse rx=%2254.0%22 ry=%2225.9%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.14%22 stroke-width=%221.3%22/%3E%3Cellipse rx=%2264.5%22 ry=%2231.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.13%22 stroke-width=%221.1%22/%3E%3Cellipse rx=%229.0%22 ry=%224.5%22 fill=%22url(%23coeur)%22/%3E%3C/g%3E%3Cg transform=%22translate(1290 170) rotate(-4)%22%3E%3Cellipse rx=%2255.2%22 ry=%2225.2%22 fill=%22url(%23halo)%22/%3E%3Cpath d=%22M-168 -2.8 C-72 -3.3 -53 -11.1 0 -11.1 S72 -3.3 168 -2.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 2.8 C-72 3.3 -53 11.1 0 11.1 S72 3.3 168 2.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 -3.8 C-72 -4.5 -53 -15.1 0 -15.1 S72 -4.5 168 -3.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 3.8 C-72 4.5 -53 15.1 0 15.1 S72 4.5 168 3.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 -5.0 C-72 -6.0 -53 -20.2 0 -20.2 S72 -6.0 168 -5.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 5.0 C-72 6.0 -53 20.2 0 20.2 S72 6.0 168 5.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 -6.6 C-72 -7.9 -53 -26.2 0 -26.2 S72 -7.9 168 -6.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 6.6 C-72 7.9 -53 26.2 0 26.2 S72 7.9 168 6.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 -8.3 C-72 -10.0 -53 -33.3 0 -33.3 S72 -10.0 168 -8.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cpath d=%22M-168 8.3 C-72 10.0 -53 33.3 0 33.3 S72 10.0 168 8.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cellipse rx=%227.2%22 ry=%223.5%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.66%22 stroke-width=%222.1%22/%3E%3Cellipse rx=%2210.8%22 ry=%225.2%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.37%22 stroke-width=%222.0%22/%3E%3Cellipse rx=%2214.9%22 ry=%227.1%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.57%22 stroke-width=%221.9%22/%3E%3Cellipse rx=%2219.2%22 ry=%229.2%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.31%22 stroke-width=%221.8%22/%3E%3Cellipse rx=%2224.0%22 ry=%2211.5%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.46%22 stroke-width=%221.7%22/%3E%3Cellipse rx=%2230.0%22 ry=%2214.4%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.23%22 stroke-width=%221.6%22/%3E%3Cellipse rx=%2236.0%22 ry=%2217.3%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221.5%22/%3E%3Cellipse rx=%2243.2%22 ry=%2220.7%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.14%22 stroke-width=%221.3%22/%3E%3Cellipse rx=%2251.6%22 ry=%2224.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.13%22 stroke-width=%221.1%22/%3E%3Cellipse rx=%227.2%22 ry=%223.6%22 fill=%22url(%23coeur)%22/%3E%3C/g%3E%3Cg transform=%22translate(780 330) rotate(2)%22%3E%3Cellipse rx=%2241.4%22 ry=%2218.9%22 fill=%22url(%23halo)%22/%3E%3Cpath d=%22M-126 -2.1 C-54 -2.5 -40 -8.3 0 -8.3 S54 -2.5 126 -2.1%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 2.1 C-54 2.5 -40 8.3 0 8.3 S54 2.5 126 2.1%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 -2.8 C-54 -3.4 -40 -11.3 0 -11.3 S54 -3.4 126 -2.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 2.8 C-54 3.4 -40 11.3 0 11.3 S54 3.4 126 2.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.27%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 -3.8 C-54 -4.5 -40 -15.1 0 -15.1 S54 -4.5 126 -3.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 3.8 C-54 4.5 -40 15.1 0 15.1 S54 4.5 126 3.8%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.22%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 -4.9 C-54 -5.9 -40 -19.7 0 -19.7 S54 -5.9 126 -4.9%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 4.9 C-54 5.9 -40 19.7 0 19.7 S54 5.9 126 4.9%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.17%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 -6.2 C-54 -7.5 -40 -24.9 0 -24.9 S54 -7.5 126 -6.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cpath d=%22M-126 6.2 C-54 7.5 -40 24.9 0 24.9 S54 7.5 126 6.2%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.12%22 stroke-width=%221%22/%3E%3Cellipse rx=%225.4%22 ry=%222.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.66%22 stroke-width=%222.1%22/%3E%3Cellipse rx=%228.1%22 ry=%223.9%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.37%22 stroke-width=%222.0%22/%3E%3Cellipse rx=%2211.2%22 ry=%225.4%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.57%22 stroke-width=%221.9%22/%3E%3Cellipse rx=%2214.4%22 ry=%226.9%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.31%22 stroke-width=%221.8%22/%3E%3Cellipse rx=%2218.0%22 ry=%228.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.46%22 stroke-width=%221.7%22/%3E%3Cellipse rx=%2222.5%22 ry=%2210.8%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.23%22 stroke-width=%221.6%22/%3E%3Cellipse rx=%2227.0%22 ry=%2213.0%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.32%22 stroke-width=%221.5%22/%3E%3Cellipse rx=%2232.4%22 ry=%2215.6%22 fill=%22none%22 stroke=%22%235a3d24%22 stroke-opacity=%220.14%22 stroke-width=%221.3%22/%3E%3Cellipse rx=%2238.7%22 ry=%2218.6%22 fill=%22none%22 stroke=%22%230b0705%22 stroke-opacity=%220.13%22 stroke-width=%221.1%22/%3E%3Cellipse rx=%225.4%22 ry=%222.7%22 fill=%22url(%23coeur)%22/%3E%3C/g%3E%3Cellipse cx=%22470%22 cy=%2296.1%22 rx=%223.7%22 ry=%222.4%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22470%22 cy=%2295%22 rx=%223.2%22 ry=%222.1%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22480%22 cy=%22103.8%22 rx=%222.6%22 ry=%221.7%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22480%22 cy=%22103%22 rx=%222.3%22 ry=%221.5%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22880%22 cy=%22301.3%22 rx=%224.1%22 ry=%222.7%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22880%22 cy=%22300%22 rx=%223.6%22 ry=%222.3%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22150%22 cy=%22641.0%22 rx=%223.4%22 ry=%222.2%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22150%22 cy=%22640%22 rx=%223.0%22 ry=%222.0%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%221180%22 cy=%22420.9%22 rx=%223.0%22 ry=%222.0%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%221180%22 cy=%22420%22 rx=%222.6%22 ry=%221.7%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22720%22 cy=%22521.2%22 rx=%223.9%22 ry=%222.5%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22720%22 cy=%22520%22 rx=%223.4%22 ry=%222.2%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22729%22 cy=%22530.8%22 rx=%222.5%22 ry=%221.7%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22729%22 cy=%22530%22 rx=%222.2%22 ry=%221.4%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22390%22 cy=%22470.9%22 rx=%222.9%22 ry=%221.9%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22390%22 cy=%22470%22 rx=%222.5%22 ry=%221.6%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%221340%22 cy=%22761.1%22 rx=%223.7%22 ry=%222.4%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%221340%22 cy=%22760%22 rx=%223.2%22 ry=%222.1%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3Cellipse cx=%22300%22 cy=%22860.8%22 rx=%222.8%22 ry=%221.8%22 fill=%22%233a2a1b%22 fill-opacity=%22.35%22/%3E%3Cellipse cx=%22300%22 cy=%22860%22 rx=%222.4%22 ry=%221.6%22 fill=%22%23070403%22 fill-opacity=%22.85%22/%3E%3C/svg%3E") 0 0 / 1400px 900px;
    color: var(--texte);
    font: 16px/1.5 var(--police-texte);
}

a { color: var(--laiton-clair); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3 { font-family: var(--police-titres); font-weight: 400; letter-spacing: .03em; margin: 0 0 .6em; }
h1 { font-size: 1.6rem; color: var(--laiton-clair); }
h2 { font-size: 1.25rem; color: var(--laiton-clair); }
h3 { font-size: 1.02rem; }

.entete {
    display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap;
    padding: .7rem 1.2rem; background: linear-gradient(180deg, #2c1f14, #20160e); border-bottom: 2px solid var(--accent);
    box-shadow: 0 2px 0 var(--laiton-sombre), 0 6px 18px rgba(0, 0, 0, .45);
}
.entete .logo { font-family: var(--police-titres); font-weight: 600; font-size: 1.3rem; letter-spacing: .08em; color: var(--laiton-clair); }
.entete nav { display: flex; gap: 1rem; flex-wrap: wrap; flex: 1; }
.entete nav a { color: var(--texte-doux); padding-bottom: .1rem; border-bottom: 2px solid transparent; }
.entete nav a.actif, .entete nav a:hover { color: var(--texte); text-decoration: none; border-bottom-color: var(--accent); }
.entete form { margin: 0; }
.entete-menu { display: none; }
/* Back-office : menus déroulants de l'en-tête (survol, clic ou clavier) */
.entete nav { align-items: center; }
.menu { position: relative; }
.menu-titre { background: none; border: 0; padding: 0; font: inherit; color: var(--texte-doux); cursor: pointer; }
.menu-titre.actif, .menu:hover .menu-titre, .menu:focus-within .menu-titre { color: var(--texte); }
.menu-liens { display: none; position: absolute; top: 100%; left: -.6rem; z-index: 50; min-width: 12rem; padding: .4rem 0;
    background: var(--surface); border: 1px solid var(--accent); border-radius: var(--rayon); box-shadow: 0 6px 18px rgba(0, 0, 0, .5); }
.menu:hover .menu-liens, .menu:focus-within .menu-liens { display: block; }
.menu-liens a { display: block; padding: .3rem .8rem; white-space: nowrap; }
.menu-liens a.actif { color: var(--laiton-clair); }

main { max-width: 1100px; margin: 0 auto; padding: 1.5rem 1rem 3rem; }

.titre-page { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.titre-page h1 { margin: 0; }
/* Onglets d'une famille de pages du Back-office (admin/_onglets) */
.onglets-admin { display: flex; flex-wrap: wrap; gap: .2rem; margin: -.4rem 0 1.1rem; border-bottom: 1px solid var(--accent); }
.onglets-admin a { padding: .4rem .9rem; border: 1px solid transparent; border-bottom: 0; border-radius: var(--rayon) var(--rayon) 0 0;
    color: var(--texte-doux); font-family: var(--police-titres); font-size: .88rem; letter-spacing: .03em; text-decoration: none; }
.onglets-admin a:hover { color: var(--texte); }
.onglets-admin a.actif { color: var(--laiton-clair); background: var(--surface); border-color: var(--accent); margin-bottom: -1px; }

.carte { background: rgba(36, 25, 16, .92); border: 1px solid var(--bordure); border-radius: var(--rayon); padding: 1.2rem; margin-bottom: 1.2rem;
    box-shadow: inset 0 1px 0 rgba(255, 220, 170, .05), 0 4px 14px rgba(0, 0, 0, .35); }
.grille { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.grille-3 { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }

.alerte { padding: .7rem 1rem; border-radius: var(--rayon); margin-bottom: 1rem; border: 1px solid; }
.alerte.succes { border-color: var(--succes); color: var(--succes); background: rgba(156, 191, 114, .08); }
.alerte.erreur { border-color: var(--danger); color: var(--danger); background: rgba(217, 119, 90, .08); }
.alerte ul { margin: 0; padding-left: 1.2rem; }

table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: .5rem .6rem; border-bottom: 1px solid var(--bordure); vertical-align: top; }
th { color: var(--laiton-clair); font-family: var(--police-titres); font-weight: 400; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em;
    border-bottom: 1px solid var(--accent); }
tbody tr:nth-child(even) td { background: rgba(255, 220, 170, .025); }
.table-defilante { overflow-x: auto; }
td.actions { white-space: nowrap; text-align: right; }
td.actions form { display: inline; }

label { display: block; font-size: .85rem; color: var(--texte-doux); margin-bottom: .25rem; }
input[type=text], input[type=email], input[type=password], input[type=number], select, textarea {
    width: 100%; padding: .5rem .6rem; background: #1d140d; color: var(--texte);
    border: 1px solid var(--bordure); border-radius: var(--rayon); font: inherit;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, .45);
}
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--accent); box-shadow: inset 0 2px 4px rgba(0, 0, 0, .45), 0 0 0 1px var(--accent); }
textarea { min-height: 80px; resize: vertical; }
textarea.code { font-family: Consolas, monospace; font-size: .85rem; }
.champ { margin-bottom: .9rem; }
/* Placement sur la Carte (Back-office) : libellé sans champ, points de passage retirables, lecture de la position */
.label-statique { display: block; font-size: .85rem; color: var(--texte-doux); margin-bottom: .25rem; }
.points-passage { margin: 0; padding-left: 1.4rem; display: flex; flex-wrap: wrap; gap: .15rem 1.4rem; font-size: .88rem; }
.points-passage .lien-discret { color: var(--danger); margin-left: .15rem; }
.placement-point { margin-bottom: .9rem; }
.champ .aide { font-size: .8rem; color: var(--texte-doux); margin-top: .2rem; }
.champs { display: grid; gap: 0 1rem; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.champs > * { min-width: 0; }
.case { display: flex; align-items: center; gap: .5rem; color: var(--texte); font-size: .95rem; }
fieldset { border: 1px solid var(--bordure); border-radius: var(--rayon); padding: 1rem; margin: 0 0 1rem; min-width: 0; }
legend { color: var(--laiton-clair); font-family: var(--police-titres); padding: 0 .4rem; }

.bouton {
    display: inline-block; padding: .5rem 1rem; border-radius: var(--rayon); border: 1px solid var(--laiton-sombre);
    background: var(--matiere-laiton); color: var(--accent-texte); font: inherit; font-weight: 500; cursor: pointer;
    box-shadow: inset 0 1px 0 rgba(255, 240, 200, .45), 0 2px 4px rgba(0, 0, 0, .4); text-shadow: 0 1px 0 rgba(255, 235, 190, .35);
}
.bouton:hover { filter: brightness(1.08); text-decoration: none; }
.bouton:active { box-shadow: inset 0 2px 4px rgba(0, 0, 0, .45); transform: translateY(1px); }
.bouton:focus-visible { outline: 2px solid var(--laiton-clair); outline-offset: 2px; }
.bouton.secondaire { background: rgba(0, 0, 0, .15); color: var(--laiton-clair); border-color: var(--accent); text-shadow: none; box-shadow: none; }
.bouton.danger { background: rgba(0, 0, 0, .15); border-color: var(--danger); color: var(--danger); text-shadow: none; box-shadow: none; }
.bouton:disabled { filter: grayscale(.7); opacity: .55; cursor: not-allowed; }
.bouton.petit { padding: .2rem .6rem; font-size: .85rem; }
.lien-bouton { background: none; border: 0; color: var(--danger); cursor: pointer; font: inherit; padding: 0; }
.lien-discret { background: none; border: 0; color: var(--texte-doux); cursor: pointer; font: inherit; padding: 0; }

.badge { display: inline-block; padding: .05rem .5rem; border-radius: 99px; font-size: .78rem; border: 1px solid var(--laiton-sombre); color: var(--texte-doux); }
.badge.danger { border-color: var(--danger); color: var(--danger); }
.badge.accent { border-color: var(--accent); color: var(--laiton-clair); }
.badge.info { border-color: var(--info); color: var(--info); }
.badge.succes { border-color: var(--succes); color: var(--succes); }
.texte-succes { color: var(--succes); }
.texte-danger { color: var(--danger); }
.doux { color: var(--texte-doux); }

.stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: .5rem; text-align: center; }
.stat { background: #1d140d; border-radius: var(--rayon); padding: .5rem .2rem; box-shadow: inset 0 2px 4px rgba(0, 0, 0, .4); }
.stat .abr { font-size: .75rem; color: var(--texte-doux); }
.stat .val { font-size: 1.4rem; }
.stat .detail { font-size: .75rem; color: var(--danger); min-height: 1em; }
@media (max-width: 560px) { .stats { grid-template-columns: repeat(3, 1fr); } }

.jauge { height: 8px; background: var(--surface-2); border-radius: 99px; overflow: hidden; margin: .25rem 0 .6rem; }
.jauge > span { display: block; height: 100%; }
.jauge .protection { background: var(--info); }
.jauge .blessures { background: var(--danger); }
.jauge .fatigue { background: var(--accent); }

.connexion { max-width: 380px; margin: 12vh auto 0; }
.actions-etat { display: flex; flex-wrap: wrap; gap: .5rem; align-items: flex-end; }
.actions-etat form { display: flex; gap: .3rem; align-items: center; }
.actions-etat input[type=number] { width: 5rem; }
details summary { cursor: pointer; color: var(--accent); margin: .5rem 0; }

/* Placement d'une Mission sur la carte (formulaire Back-office) */
.carte-placement { height: 380px; margin-top: .6rem; border: 1px solid var(--bordure); border-radius: var(--rayon); overflow: hidden; background: #0b0c0f; }
.carte-placement canvas { display: block; }

/* Zones de territoire (Back-office) */
.pastille-zone { display: inline-block; width: .8rem; height: .8rem; border-radius: 3px; vertical-align: middle; margin-right: .3rem; }

/* Upload d'image (composant x-champ-image) et page Visuels */
.champ-image-ligne { display: flex; align-items: center; gap: .6rem; }
.champ-image-apercu { width: 48px; height: 48px; flex: none; display: grid; place-items: center; border: 1px solid var(--bordure); border-radius: var(--rayon); background: #150e09 repeating-conic-gradient(#241910 0 25%, transparent 0 50%) 0 0 / 12px 12px; overflow: hidden; }
.champ-image-apercu img { max-width: 100%; max-height: 100%; image-rendering: pixelated; }
.champ-image input[type=file] { min-width: 0; }
.grille-visuels { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .8rem; }
.grille-visuels .visuel { border: 1px solid var(--bordure); border-radius: var(--rayon); padding: .6rem .8rem; }
.grille-visuels h3 { margin: 0 0 .4rem; font-size: 1rem; display: flex; align-items: center; gap: .4rem; }

/* Qualité des objets (spec : blanc, bleu, violet, doré, rouge) */
.badge.qualite { border: 1px solid currentColor; background: transparent; }
.qualite-commun { color: #e4e2dc; }
.qualite-peu_commun { color: #5b9bd9; }
.qualite-rare { color: #a56fdc; }
.qualite-legendaire { color: #d9aa3c; }
.qualite-mythique { color: #d9534a; }
.icone-objet { width: 36px; height: 36px; flex: none; display: grid; place-items: center; border: 2px solid; border-radius: 6px; background: #150e09; overflow: hidden; }
.icone-objet img { max-width: 100%; max-height: 100%; image-rendering: pixelated; }
.icone-objet > span { width: 14px; height: 14px; border-radius: 50%; opacity: .8; }
.bloc-effet { border-top: 1px dashed var(--bordure); padding-top: .6rem; margin-top: .6rem; }
.bloc-effet:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }
.petit-texte { font-size: .82rem; }
.icone-pnj { border-color: #d9aa3c; transform: rotate(0); }
.icone-pnj > span { background: #d9aa3c; }

/* Badge des notifications non lues (en-tête, jeu) */
.badge-compte { background: var(--danger); color: var(--accent-texte); border-radius: 99px; padding: 0 .4rem; font-size: .75rem; font-weight: 600; }
.entete-notifications { text-decoration: none; margin-right: .5rem; }
.table-ameliorations { width: 100%; border-collapse: collapse; margin-bottom: 1rem; font-size: .9rem; }
.table-ameliorations th { text-align: left; font-weight: normal; color: var(--texte-doux, #999); padding: .2rem .3rem; }
.table-ameliorations td { padding: .2rem .3rem; vertical-align: top; }
.table-ameliorations .case { font-size: .82rem; }
.table-ameliorations select { max-width: 14rem; }

/* Portraits des entités (PNG 64×64, import libre) : affichés sans lissage */
.portrait { width: 64px; height: 64px; image-rendering: pixelated; vertical-align: middle; border: 1px solid var(--bordure); border-radius: var(--rayon); background: #1d140d; }
.portrait.petit { width: 32px; height: 32px; }
.portrait.grand { width: 96px; height: 96px; }
.portrait-flottant { float: right; margin: 0 0 .4rem .6rem; }
.portrait-fiche { display: flex; gap: 1rem; align-items: flex-start; flex-wrap: wrap; }
.portraits-exemples { display: flex; flex-wrap: wrap; gap: .6rem; }
.portraits-exemples figure, .scene-mission figure { margin: 0; text-align: center; font-size: .78rem; color: var(--texte-doux); }
.scene-mission { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; margin: .4rem 0 .7rem; padding: .8rem .6rem .5rem; border: 1px solid var(--bordure); border-radius: var(--rayon); background: linear-gradient(#1d2430 0 58%, var(--sol) 58%); }
.scene-mission .portrait { border: 0; background: none; }
.scene-mission figcaption { color: #fff; text-shadow: 0 1px 2px #000, 0 0 3px #000; }

/* Décors des Tiles (Back-office) */
.decor { display: inline-flex; flex-direction: column; align-items: center; gap: .15rem; font-size: .78rem; }

/* Arbre de Classe : parents d'un nœud (Back-office), arbre à structure libre (défilement horizontal) */
.parents-noeud { max-height: 14rem; overflow: auto; border: 1px solid var(--bordure); border-radius: var(--rayon); padding: .4rem .6rem; }
.parents-noeud .case { display: flex; align-items: center; gap: .4rem; }
.arbre-pixi.libre { overflow-x: auto; }

/* Fiche Personnage : effets actifs (catégorie B) et compteurs (catégorie D) */
.effets-actifs { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin-bottom: .8rem; }
.effets-actifs-titre { font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; color: var(--texte-doux); margin-right: .2rem; }
.effet-badge { display: inline-flex; align-items: center; gap: .35rem; padding: .15rem .55rem .15rem .2rem; border-radius: 99px;
    border: 1px solid var(--accent); background: var(--surface-2); font-size: .82rem; cursor: help; max-width: 100%; }
.effet-picto { width: 1.4rem; height: 1.4rem; border-radius: 50%; display: grid; place-items: center; background: var(--surface); color: var(--accent); flex: none; }
.effet-picto img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.effet-nom { font-weight: 600; white-space: nowrap; }
.effet-etat, .effet-fin { color: var(--texte-doux); font-size: .75rem; }
.effet-terminer-form { display: inline; margin: 0; }
.effet-terminer { font-size: .72rem; padding: .05rem .45rem; border-radius: 99px; border: 1px solid var(--danger); background: transparent; color: var(--danger); cursor: pointer; }
.ressources-effets { margin-top: .5rem; display: grid; gap: .25rem; font-size: .85rem; }
.ressource-effet .actif-charges { position: static; display: inline-block; font-size: .7rem; font-weight: 600; padding: 0 .35rem; border-radius: 99px;
    background: var(--accent); color: var(--accent-texte); }

/* Calendrier des sessions JDR */
.cal-onglets { display: flex; flex-wrap: wrap; gap: .3rem 1rem; align-items: center; margin-bottom: 1rem; padding-bottom: .6rem; border-bottom: 1px solid var(--bordure); }
.cal-onglets > a { color: var(--texte-doux); text-decoration: none; }
.cal-onglets > a.actif, .cal-onglets > a:hover { color: var(--accent); }
.cal-onglets-mj { margin-left: auto; display: flex; gap: .4rem; }
.cal-barre { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: .5rem 0; }
.cal-barre h2 { margin: 0 .4rem; min-width: 12rem; text-align: center; }
.cal-vues { margin-left: auto; display: flex; gap: .2rem; }
.cal-vues a { padding: .2rem .6rem; border: 1px solid var(--bordure); border-radius: var(--rayon); color: var(--texte-doux); text-decoration: none; }
.cal-vues a.actif { color: var(--accent-texte); background: var(--accent); border-color: var(--accent); }
.cal-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.cal-entete { text-align: center; color: var(--texte-doux); font-size: .8rem; padding: .2rem 0; }
.cal-jour { background: var(--surface); border: 1px solid var(--bordure); border-radius: 4px; min-height: 6rem; padding: .25rem; display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.cal-semaine .cal-jour { min-height: 14rem; }
.cal-jour.hors-mois { opacity: .45; }
.cal-jour.aujourdhui { border-color: var(--accent); }
.cal-numero { font-size: .8rem; color: var(--texte-doux); }
.cal-session { display: block; font-size: .78rem; line-height: 1.25; padding: .15rem .3rem; border-radius: 4px; border-left: 3px solid var(--info);
    background: rgba(127, 169, 207, .12); color: var(--texte); text-decoration: none; overflow: hidden; text-overflow: ellipsis; }
.cal-session:hover { background: rgba(127, 169, 207, .25); }
.cal-session.moi { border-left-color: var(--succes); background: rgba(156, 191, 114, .15); }
.cal-session.attente { border-left-color: var(--accent); background: rgba(176, 141, 87, .14); }
.cal-session.statut-annulee { text-decoration: line-through; opacity: .6; border-left-color: var(--danger); }
.cal-session.statut-terminee { opacity: .55; }
.cal-heure { color: var(--accent); font-variant-numeric: tabular-nums; }
.cal-places { color: var(--texte-doux); float: right; }
.cal-legende .cal-session { display: inline-block; margin-right: .4rem; }
.cal-description { white-space: pre-line; }
.cal-inscrit { display: flex; gap: .4rem; align-items: baseline; padding: .3rem 0; border-bottom: 1px solid var(--bordure); flex-wrap: wrap; }
.cal-retirer { margin-left: auto; }
.cal-ligne { display: flex; justify-content: space-between; gap: .6rem; flex-wrap: wrap; align-items: center; padding: .45rem 0; border-bottom: 1px solid var(--bordure); }
.cal-doodle th, .cal-doodle td { text-align: center; white-space: nowrap; }
.cal-doodle td:first-child { text-align: left; }
.cal-doodle th.choisi { color: var(--succes); }
.cal-doodle .rep-oui { color: var(--succes); background: rgba(156, 191, 114, .12); }
.cal-doodle .rep-si_besoin { color: var(--laiton-clair); background: rgba(176, 141, 87, .1); }
.cal-doodle .rep-non { color: var(--danger); }
.cal-doodle tr.moi td:first-child { color: var(--accent); }
.cal-totaux td { border-top: 2px solid var(--bordure); }
.cal-ical { width: 100%; font-family: monospace; font-size: .8rem; }
@media (max-width: 640px) {
    .cal-grille:not(.cal-semaine) .cal-session .cal-places, .cal-grille:not(.cal-semaine) .cal-heure { display: none; }
    .cal-jour { min-height: 4rem; }
    .cal-semaine { grid-template-columns: 1fr; }
    .cal-semaine .cal-entete { display: none; }
    .cal-semaine .cal-jour { min-height: 0; }
}

/* Intégration FoundryVTT (lien simple) */
.foundry-liste { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.foundry-monde { display: flex; flex-direction: column; gap: .6rem; margin: 0; }
.foundry-image { width: 100%; max-height: 160px; object-fit: cover; border-radius: var(--rayon); border: 1px solid var(--bordure); }
.foundry-texte h2 { margin: 0 0 .3rem; }
.foundry-acces { display: inline-flex; flex-wrap: wrap; gap: .5rem; align-items: center; }

/* Boîte de confirmation dans la page (js/confirmer.js) */
.boite-confirmer { max-width: min(28rem, calc(100vw - 2rem)); padding: .9rem 1rem; border: 12px solid transparent; border-image: var(--cadre-laiton);
    background: #241910; color: var(--texte); box-shadow: 0 10px 30px rgba(0, 0, 0, .6); }
.boite-confirmer::backdrop { background: rgba(0, 0, 0, .45); }
.boite-confirmer p { margin: 0 0 1rem; white-space: pre-line; }
.boite-confirmer-actions { display: flex; justify-content: flex-end; gap: .5rem; margin: 0; }

/* Téléphone (≤ 700 px) : en-tête compact, navigation repliée derrière ☰ (layouts/app) */
@media (max-width: 700px) {
    .entete { gap: .6rem; padding: .45rem .8rem; flex-wrap: nowrap; position: relative; }
    .entete .logo { font-size: 1.05rem; letter-spacing: .05em; white-space: nowrap; }
    .entete form { margin-left: auto; display: flex; align-items: center; gap: .3rem; white-space: nowrap; font-size: .85rem; }
    .entete form .doux { display: none; }
    .entete-menu {
        display: grid; place-items: center; flex: none; width: 2.2rem; height: 2.2rem; padding: 0; font-size: 1.15rem; cursor: pointer;
        color: var(--laiton-clair); background: rgba(0, 0, 0, .2); border: 1px solid var(--accent); border-radius: var(--rayon);
    }
    .entete-menu { order: 3; }
    .entete nav {
        display: none; position: absolute; z-index: 60; top: 100%; left: 0; right: 0; max-height: calc(100dvh - 3.2rem); overflow-y: auto;
        flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 0; padding: .4rem .8rem .8rem;
        background: linear-gradient(180deg, #2c1f14, #20160e); border-bottom: 2px solid var(--accent); box-shadow: 0 10px 24px rgba(0, 0, 0, .6);
    }
    .entete.ouvert nav { display: flex; }
    .entete nav > a, .entete nav .menu-titre { padding: .55rem .2rem; border-bottom: 1px solid var(--bordure); }
    .entete nav a.actif, .entete nav a:hover { border-bottom-color: var(--accent); }
    /* Menus du back-office : repliés sous leur titre, ouverts au toucher (focus) ; celui de la page en cours reste ouvert */
    .menu-titre { width: 100%; text-align: left; }
    .menu-liens { display: none; position: static; min-width: 0; padding: 0 0 .3rem .8rem; border: 0; box-shadow: none; background: none; }
    .menu:hover .menu-liens { display: none; }
    .menu:focus-within .menu-liens, .menu:has(.menu-titre.actif) .menu-liens { display: block; }
    .menu-liens a { padding: .35rem .2rem; white-space: normal; }
}
