/* ============================================================
   Eclatemps — Soirée 30 ans · feuille de styles
   Polices auto-hébergées (RGPD) + thème « Effet verre »
   ============================================================ */

/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/338a9514-890f-4afb-b778-cc596693b374.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/d489ce93-5951-41b8-bbc9-91d717bf34f1.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/49f3ff69-5419-442b-b811-9544bee7f91e.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/47a7888a-84c8-43ad-89f1-6fcc8c4a357c.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/488b2bc5-d109-4e99-bd11-cf00cc44e60a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/b08a501d-8a37-4f55-9a19-1ddc69cd9df1.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/2e17e51a-f7ad-4a00-82b9-20656003a493.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/126561a6-a0c8-4603-85b0-5c36eb4e6dc8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/6c58e6c1-62da-47c4-bba9-55103d7c2808.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/b8b1a441-3b47-4511-8e46-698fd8ceee68.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/86e67882-ecea-4f2d-b116-06d5d6033a6c.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/eb4bb275-c31f-4881-8d88-54ae3625d429.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/dc6d1da9-91ba-4421-9deb-d94520f93a20.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/bf404b0b-8806-4c82-9efd-0f84625350aa.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/6656e56c-7c59-4c75-b023-d22d65c0a0d5.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/935fd9e9-c510-42b7-9a04-08c55b62b9e5.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/4ac66f14-2738-4b42-b429-17bdbcfc24ca.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/52422981-82c5-447a-bfb5-db3c6f069c68.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/935fd9e9-c510-42b7-9a04-08c55b62b9e5.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/4ac66f14-2738-4b42-b429-17bdbcfc24ca.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/52422981-82c5-447a-bfb5-db3c6f069c68.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/935fd9e9-c510-42b7-9a04-08c55b62b9e5.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/4ac66f14-2738-4b42-b429-17bdbcfc24ca.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/52422981-82c5-447a-bfb5-db3c6f069c68.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/935fd9e9-c510-42b7-9a04-08c55b62b9e5.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/4ac66f14-2738-4b42-b429-17bdbcfc24ca.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/52422981-82c5-447a-bfb5-db3c6f069c68.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ============================================================
   Eclatemps — Soirée 30 ans · page publique + console admin
   Thème 10 « Effet verre » — accent pilotée par --accent
   ============================================================ */

:root { --accent: #CF1726; --accent-rgb: 207, 23, 38; }

* { box-sizing: border-box; margin: 0; }
html, body { height: 100%; }
body { font-family: 'Space Grotesk', sans-serif; background: #17181D; color: #FFFFFF; }
img { display: block; }
button, input, textarea { font-family: inherit; }

/* ---------- fond animé partagé ---------- */
.bgfx { position: fixed; inset: 0; overflow: hidden; pointer-events: none; }
.bgfx .bloom { position: absolute; inset: -10%; background: radial-gradient(48vw 42vh at 12% 88%, rgba(var(--accent-rgb), .35), transparent 65%), radial-gradient(50vw 42vh at 92% 6%, rgba(var(--accent-rgb), .22), transparent 65%); }
.bgfx .streak { position: absolute; top: -10%; height: 120%; width: 150px; background: linear-gradient(105deg, transparent, rgba(255,255,255,.06), transparent); transform: skewX(-18deg); }
.bgfx .streak.s2 { width: 60px; background: linear-gradient(105deg, transparent, rgba(255,255,255,.09), transparent); }

@media (prefers-reduced-motion: no-preference) {
  .bgfx .bloom { animation: bg-breathe 9s ease-in-out infinite alternate; }
  .bgfx .streak { animation: bg-drift 14s ease-in-out infinite alternate; }
  .bgfx .streak.s2 { animation-duration: 11s; animation-delay: -4s; }
  .bgfx .streak:last-of-type { animation-duration: 17s; animation-delay: -8s; }
}
@keyframes bg-breathe {
  0%   { transform: translate3d(-1.5%, 1%, 0) scale(1); opacity: .85; }
  50%  { transform: translate3d(.5%, -.5%, 0) scale(1.06); opacity: 1; }
  100% { transform: translate3d(2%, 1.5%, 0) scale(1.02); opacity: .9; }
}
@keyframes bg-drift {
  0%   { transform: translateX(-140px) skewX(-18deg); opacity: .5; }
  50%  { opacity: 1; }
  100% { transform: translateX(180px) skewX(-18deg); opacity: .6; }
}

/* ---------- verre ---------- */
.glasspane { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.16); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: 0 40px 80px -40px rgba(0,0,0,.65), inset 0 1px 0 rgba(255,255,255,.22); }

/* ============================================================
   PAGE PUBLIQUE
   ============================================================ */
.ep { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 32px 16px 64px; position: relative; }
.ep-glass { position: relative; width: min(560px, 100%); border-radius: 24px; padding: 46px 54px; text-align: center; display: flex; flex-direction: column; align-items: center; overflow: hidden; }
@media (prefers-reduced-motion: no-preference) {
  .ep-glass::after { content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.06) 46%, rgba(255,255,255,.11) 50%, rgba(255,255,255,.06) 54%, transparent 70%); background-size: 280% 100%; animation: glass-sheen 8s ease-in-out infinite; }
}
@keyframes glass-sheen {
  0%, 55% { background-position: 120% 0; }
  100%    { background-position: -160% 0; }
}
.ep-logo { height: 46px; max-width: 240px; object-fit: contain; margin-bottom: 26px; }
.ep-eyebrow { font-size: 12px; letter-spacing: .3em; color: rgba(255,255,255,.55); font-weight: 600; margin-bottom: 14px; }
.ep-title { font-size: 30px; font-weight: 600; line-height: 1.32; letter-spacing: -.01em; margin-bottom: 20px; text-wrap: pretty; }
.ep-meta { font-size: 16px; color: rgba(255,255,255,.78); line-height: 1.7; }
.ep-meta strong { color: #FFFFFF; font-weight: 600; }
.ep-deadline { font-size: 13.5px; font-style: italic; color: rgba(255,255,255,.5); margin: 10px 0 30px; }

.ep .rf { display: flex; flex-direction: column; gap: 16px; width: 100%; text-align: left; position: relative; z-index: 1; }
.ep .rf-field { display: flex; flex-direction: column; gap: 7px; }
.ep .rf-field label { font-size: 13px; font-weight: 600; color: rgba(255,255,255,.65); }
.ep .rf-field input { height: 46px; padding: 0 14px; border-radius: 8px; border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.07); color: #FFFFFF; font-size: 15px; outline: none; width: 100%; }
.ep .rf-field input::placeholder { color: rgba(255,255,255,.35); }
.ep .rf-field input:focus { border-color: rgba(255,255,255,.45); }
.ep .rf-error { font-size: 13px; color: #FF8C95; }
.ep .rf-btn { height: 50px; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer; background: var(--accent); color: #FFFFFF; box-shadow: 0 12px 30px -10px rgba(var(--accent-rgb), .6); transition: filter .15s; }
.ep .rf-btn:hover { filter: brightness(1.12); }

/* état confirmé */
.ep-done { display: flex; flex-direction: column; align-items: center; gap: 14px; padding-top: 6px; position: relative; z-index: 1; }
.ep-done .check { width: 58px; height: 58px; border-radius: 50%; background: rgba(var(--accent-rgb), .18); border: 1.5px solid rgba(var(--accent-rgb), .55); display: flex; align-items: center; justify-content: center; }
.ep-done .check svg { width: 26px; height: 26px; }
.ep-done .msg { font-size: 16px; line-height: 1.6; color: rgba(255,255,255,.85); max-width: 380px; }
.ep-done .who { font-size: 14px; color: rgba(255,255,255,.55); }
.ep-done .again { margin-top: 8px; background: none; border: 1px solid rgba(255,255,255,.25); color: rgba(255,255,255,.8); border-radius: 8px; height: 42px; padding: 0 20px; font-size: 14px; cursor: pointer; }
.ep-done .again:hover { border-color: rgba(255,255,255,.5); }

.ep-closed { font-size: 15.5px; line-height: 1.65; color: rgba(255,255,255,.7); border: 1px dashed rgba(255,255,255,.25); border-radius: 12px; padding: 22px 26px; }

.ep-adminlink { position: fixed; bottom: 18px; right: 22px; font-size: 12.5px; color: rgba(255,255,255,.35); text-decoration: none; letter-spacing: .04em; z-index: 5; }
.ep-adminlink:hover { color: rgba(255,255,255,.7); }

@media (max-width: 560px) {
  .ep-glass { padding: 36px 26px; }
  .ep-title { font-size: 24px; }
}

/* ============================================================
   CONSOLE ADMIN
   ============================================================ */
.cg { min-height: 100vh; position: relative; padding-bottom: 60px; }

/* login */
.cg-login { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 16px; }
.cg-login .card { width: min(400px, 100%); border-radius: 20px; padding: 40px 38px; display: flex; flex-direction: column; gap: 18px; text-align: center; }
.cg-login .card img { height: 38px; object-fit: contain; margin: 0 auto 4px; }
.cg-login h1 { font-size: 20px; font-weight: 600; }
.cg-login p { font-size: 14px; color: rgba(255,255,255,.6); line-height: 1.5; }
.cg-login input { height: 46px; border-radius: 8px; border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.07); color: #FFF; padding: 0 14px; font-size: 15px; outline: none; text-align: center; letter-spacing: .12em; }
.cg-login input:focus { border-color: rgba(255,255,255,.45); }
.cg-login .err { font-size: 13px; color: #FF8C95; }
.cg-login button { height: 48px; border: none; border-radius: 8px; background: var(--accent); color: #FFF; font-size: 15px; font-weight: 700; cursor: pointer; }
.cg-login .hint { font-size: 12px; color: rgba(255,255,255,.35); }
.cg-login .back { font-size: 13px; color: rgba(255,255,255,.45); text-decoration: none; }
.cg-login .back:hover { color: rgba(255,255,255,.8); }

/* topbar */
.cg-top { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 18px; padding: 0 28px; height: 64px; background: rgba(23,24,29,.75); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid rgba(255,255,255,.1); }
.cg-top img { height: 30px; object-fit: contain; }
.cg-top .t { font-size: 14.5px; font-weight: 600; color: rgba(255,255,255,.85); }
.cg-top .spacer { flex: 1; }
.cg-top a, .cg-top button.linkish { font-size: 13.5px; color: rgba(255,255,255,.6); text-decoration: none; background: none; border: none; cursor: pointer; padding: 8px 10px; border-radius: 7px; }
.cg-top a:hover, .cg-top button.linkish:hover { color: #FFF; background: rgba(255,255,255,.07); }

/* layout + tabs */
.cg-wrap { max-width: 1060px; margin: 0 auto; padding: 30px 24px 0; position: relative; }
.cg-tabs { display: flex; gap: 8px; margin-bottom: 26px; flex-wrap: wrap; }
.cg-tab { height: 40px; padding: 0 18px; border-radius: 10px; border: 1px solid transparent; background: none; color: rgba(255,255,255,.6); font-size: 14px; font-weight: 600; cursor: pointer; }
.cg-tab:hover { color: #FFF; background: rgba(255,255,255,.06); }
.cg-tab.on { background: rgba(var(--accent-rgb), .16); border-color: rgba(var(--accent-rgb), .45); color: #FFF; }

/* panneaux */
.cg-panel { border-radius: 18px; padding: 28px; margin-bottom: 22px; }
.cg-panel h2 { font-size: 16px; font-weight: 700; margin-bottom: 4px; }
.cg-panel .sub { font-size: 13.5px; color: rgba(255,255,255,.55); margin-bottom: 20px; line-height: 1.5; }

/* stats */
.cg-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 22px; }
.cg-stat { border-radius: 16px; padding: 22px 24px; }
.cg-stat .n { font-size: 38px; font-weight: 700; color: var(--accent); line-height: 1.05; font-variant-numeric: tabular-nums; }
.cg-stat .l { font-size: 13px; color: rgba(255,255,255,.6); margin-top: 8px; }
@media (max-width: 720px) { .cg-stats { grid-template-columns: 1fr; } }

/* table inscrits */
.cg-tablewrap { overflow-x: auto; }
.cg-table { width: 100%; border-collapse: collapse; font-size: 14.5px; }
.cg-table th { text-align: left; font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.45); font-weight: 600; padding: 0 14px 12px; }
.cg-table td { padding: 13px 14px; border-top: 1px solid rgba(255,255,255,.09); }
.cg-table td.num { font-variant-numeric: tabular-nums; }
.cg-table td.dim { color: rgba(255,255,255,.55); font-size: 13.5px; }
.cg-table .del { background: none; border: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.6); border-radius: 7px; height: 32px; padding: 0 12px; font-size: 12.5px; cursor: pointer; }
.cg-table .del:hover { border-color: #FF6B76; color: #FF8C95; }
.cg-empty { padding: 34px 0 12px; text-align: center; color: rgba(255,255,255,.45); font-size: 14.5px; }

/* formulaires admin */
.cg-form { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; }
.cg-form .full { grid-column: 1 / -1; }
.cg-field { display: flex; flex-direction: column; gap: 7px; }
.cg-field label { font-size: 12.5px; font-weight: 600; color: rgba(255,255,255,.6); }
.cg-field input, .cg-field textarea { border-radius: 8px; border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.06); color: #FFF; padding: 11px 13px; font-size: 14.5px; outline: none; resize: vertical; }
.cg-field input { height: 44px; padding: 0 13px; }
.cg-field input:focus, .cg-field textarea:focus { border-color: rgba(255,255,255,.4); }
.cg-field .note { font-size: 12px; color: rgba(255,255,255,.4); }
.cg-field input[type="date"] { color-scheme: dark; }
@media (max-width: 720px) { .cg-form { grid-template-columns: 1fr; } }

/* boutons */
.cg-actions { display: flex; align-items: center; gap: 14px; margin-top: 22px; }
.cg-btn { height: 44px; padding: 0 22px; border: none; border-radius: 9px; background: var(--accent); color: #FFF; font-size: 14px; font-weight: 700; cursor: pointer; }
.cg-btn:hover { filter: brightness(1.12); }
.cg-btn.ghost { background: none; border: 1px solid rgba(255,255,255,.22); color: rgba(255,255,255,.75); font-weight: 600; }
.cg-btn.ghost:hover { border-color: rgba(255,255,255,.45); filter: none; }
.cg-btn.danger { background: none; border: 1px solid rgba(255,107,118,.5); color: #FF8C95; font-weight: 600; }
.cg-btn.danger:hover { background: rgba(255,107,118,.1); filter: none; }
.cg-saved { font-size: 13.5px; color: #7ED9A0; }

/* apparence : couleurs */
.cg-swatches { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.cg-swatch { width: 46px; height: 46px; border-radius: 12px; cursor: pointer; border: 2px solid transparent; padding: 0; position: relative; }
.cg-swatch.on { border-color: #FFF; box-shadow: 0 0 0 3px rgba(255,255,255,.2); }
.cg-custom { display: flex; align-items: center; gap: 10px; }
.cg-custom input[type="text"] { width: 110px; height: 44px; border-radius: 8px; border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.06); color: #FFF; padding: 0 12px; font-size: 14px; font-family: 'IBM Plex Mono', monospace; outline: none; }

/* apparence : logo */
.cg-logorow { display: flex; gap: 22px; align-items: center; flex-wrap: wrap; }
.cg-logoprev { width: 230px; height: 90px; border-radius: 12px; border: 1px dashed rgba(255,255,255,.25); display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.25); }
.cg-logoprev img { max-height: 56px; max-width: 190px; object-fit: contain; }
.cg-logobtns { display: flex; flex-direction: column; gap: 10px; }

/* aperçu en direct */
.cg-preview { border-radius: 18px; overflow: hidden; position: relative; background: #17181D; border: 1px solid rgba(255,255,255,.12); }
.cg-preview .ep { min-height: 0; padding: 40px 16px; transform: scale(.82); transform-origin: top center; }
.cg-preview .label { position: absolute; top: 12px; left: 16px; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.4); z-index: 3; }


/* ============================================================
   Bouton Administration masqué — révélé au survol de la zone
   ============================================================ */
.ep-adminzone { position: fixed; bottom: 0; right: 0; width: 190px; height: 104px; z-index: 5; }
.ep-adminlink { position: fixed; bottom: 18px; right: 22px; font-size: 12.5px; color: rgba(255,255,255,.55);
  text-decoration: none; letter-spacing: .04em; z-index: 6; padding: 6px 12px; border-radius: 8px;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  opacity: 0; transform: translateY(8px); pointer-events: none;
  transition: opacity .25s ease, transform .25s ease; }
.ep-adminzone:hover .ep-adminlink,
.ep-adminzone.revealed .ep-adminlink,
.ep-adminlink:focus-visible {
  opacity: 1; transform: translateY(0); pointer-events: auto; }
.ep-adminlink:hover { color: #FFFFFF; border-color: rgba(255,255,255,.3); }
