/* V5 — refonte totale UI, chargée après l'héritage V4 */
:root{--v5-bg:#0b0f14;--v5-panel:#111821;--v5-panel2:#17212c;--v5-line:#243140;--v5-text:#f7fafc;--v5-muted:#94a3b8;--v5-brand:#6ee7a8;--v5-brand2:#2dd47f;--v5-accent:#7dd3fc;--v5-danger:#fb7185;--v5-warning:#fbbf24;--v5-radius:20px;--v5-shadow:0 24px 70px rgba(0,0,0,.28)}
*{box-sizing:border-box}html{background:var(--v5-bg)}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
body.admin-app{margin:0;background:radial-gradient(circle at 100% 0,rgba(45,212,127,.08),transparent 30rem),var(--v5-bg)!important;color:var(--v5-text)!important;min-height:100vh}
.admin-shell{width:auto!important;max-width:none!important;margin:0!important;padding:32px 38px 80px 310px!important}
.admin-shell>.brand{position:fixed;z-index:910;left:0;top:0;width:270px;height:96px;margin:0!important;padding:26px 24px;display:grid!important;grid-template-columns:44px 1fr!important;grid-template-rows:auto auto!important;column-gap:12px;background:#0d131a;border-right:1px solid var(--v5-line);color:#fff!important}
.admin-shell>.brand .brand-mark{width:44px;height:44px;border-radius:14px;background:linear-gradient(145deg,var(--v5-brand2),#167a4b)!important;box-shadow:none!important}
.admin-shell>.brand small{color:var(--v5-muted)!important}
.admin-app .topnav{position:fixed!important;z-index:900;left:0!important;top:96px!important;bottom:0!important;width:270px!important;height:auto!important;margin:0!important;padding:14px 14px 24px!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:4px!important;overflow-y:auto!important;overflow-x:hidden!important;border:0!important;border-right:1px solid var(--v5-line)!important;border-radius:0!important;background:#0d131a!important;box-shadow:none!important;backdrop-filter:none!important}
.admin-app .topnav a{display:flex!important;align-items:center!important;min-height:44px!important;padding:0 14px!important;border-radius:12px!important;color:#aab8c8!important;font-size:.9rem!important;font-weight:700!important;text-decoration:none!important;white-space:nowrap}
.admin-app .topnav a:hover{background:#151f29!important;color:#fff!important;transform:none!important}
.admin-app .topnav a.active{background:linear-gradient(135deg,rgba(45,212,127,.18),rgba(45,212,127,.08))!important;color:var(--v5-brand)!important;box-shadow:inset 3px 0 0 var(--v5-brand2)!important}
.admin-app .hero-card,.admin-app .dashboard-hero{min-height:300px!important;margin:0 0 24px!important;padding:42px!important;border:1px solid #21402f!important;border-radius:28px!important;background:radial-gradient(circle at 90% 20%,rgba(110,231,168,.16),transparent 22rem),linear-gradient(135deg,#10241b,#123b29)!important;box-shadow:var(--v5-shadow)!important}
.admin-app .dashboard-hero h1{max-width:800px;font-size:clamp(2.8rem,5vw,5rem)!important;line-height:.94!important;letter-spacing:-.065em!important}
.admin-app .dashboard-hero p{max-width:720px!important;color:#c5d6cb!important;font-size:1.05rem!important}
.admin-app .eyebrow,.admin-app .section-kicker{color:var(--v5-brand)!important;font-size:.72rem!important;letter-spacing:.14em!important;text-transform:uppercase!important;font-weight:900!important}
.admin-app .hero-btn{border-radius:12px!important;padding:12px 16px!important}
.admin-app .card,.admin-app .overview-card,.admin-app .game-tile,.admin-app .route-builder,.admin-app .game-hero-card{background:var(--v5-panel)!important;color:var(--v5-text)!important;border:1px solid var(--v5-line)!important;border-radius:var(--v5-radius)!important;box-shadow:none!important}
.admin-app .card h1,.admin-app .card h2,.admin-app .card h3,.admin-app .game-copy h2,.admin-app .section-heading h2{color:var(--v5-text)!important}
.admin-app .muted,.admin-app .card p.muted{color:var(--v5-muted)!important}
.admin-app .overview-card{padding:26px!important}
.admin-app .dashboard-grid,.admin-app .metric-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:14px!important}
.admin-app .metric-tile,.admin-app .metric{min-height:130px!important;padding:20px!important;background:linear-gradient(145deg,#151f29,#111820)!important;border:1px solid var(--v5-line)!important;border-radius:16px!important;color:#fff!important}
.admin-app .metric-tile strong,.admin-app .metric strong{font-size:2.5rem!important;color:#fff!important}
.admin-app .metric-tile span,.admin-app .metric span{color:var(--v5-muted)!important}
.admin-app .section-heading{display:flex!important;align-items:end!important;justify-content:space-between!important;margin:34px 0 14px!important}.admin-app .section-heading h2{margin:4px 0 0!important;font-size:1.65rem!important}
.admin-app .section-count{color:var(--v5-muted)!important}
.admin-app .game-tile{position:relative;overflow:hidden;padding:24px 24px 24px 30px!important}.admin-app .game-accent{position:absolute!important;inset:0 auto 0 0!important;width:4px!important;background:var(--tile-accent,var(--v5-brand2))!important}
.admin-app .game-stats{border-color:var(--v5-line)!important}.admin-app .game-stats small{color:var(--v5-muted)!important}
.admin-app .btn,.admin-app button{border:0!important;border-radius:11px!important;background:var(--v5-brand2)!important;color:#06140d!important;font-weight:850!important;box-shadow:none!important;min-height:42px!important}
.admin-app .btn:hover,.admin-app button:hover{filter:brightness(1.07);transform:none!important}.admin-app .btn.secondary{background:#1c2834!important;color:#dbe7f3!important;border:1px solid #2c3b4a!important}.admin-app .btn.danger{background:#9f2940!important;color:#fff!important}
.admin-app input,.admin-app textarea,.admin-app select{background:#0e151d!important;color:#f8fafc!important;border:1px solid #2b3948!important;border-radius:11px!important}.admin-app input:focus,.admin-app textarea:focus,.admin-app select:focus{border-color:var(--v5-brand2)!important;box-shadow:0 0 0 3px rgba(45,212,127,.12)!important}.admin-app label{color:#dce6ef!important}
.admin-app .table-wrap{border:1px solid var(--v5-line)!important;border-radius:16px!important;box-shadow:none!important}.admin-app table{background:transparent!important}.admin-app th{background:#151f29!important;color:#8fa0b2!important;border-color:var(--v5-line)!important}.admin-app td{background:#111821!important;color:#e8eef5!important;border-color:var(--v5-line)!important}.admin-app tr:hover td{background:#151f29!important}
.admin-app .badge{background:#193326!important;color:var(--v5-brand)!important}.admin-app .flash{background:#17212c!important;color:#fff!important;border-color:#2b3948!important}
.admin-app .step-row,.admin-app .clean-action,.admin-app .native-scan-box{background:#121b24!important;color:#fff!important;border-color:var(--v5-line)!important}
.admin-app .sos-controls{z-index:950!important}.admin-app .sos-sound-toggle{background:#17212c!important;color:#fff!important;border:1px solid #2b3948!important}
.player-app{background:radial-gradient(circle at 50% -10%,rgba(45,212,127,.18),transparent 28rem),#07110c!important;color:#f4faf6!important;min-height:100vh}.player-shell{width:min(720px,calc(100% - 28px))!important;padding-top:26px!important}.player-brand{color:#fff!important}.player-app .card{border-radius:24px!important;border:1px solid #dbe9df!important;box-shadow:0 24px 70px rgba(0,0,0,.22)!important}.player-app .adventure-home,.player-app .adventure-onboarding,.player-app .mission-card{padding:32px!important}.player-app .adventure-home h1,.player-app .adventure-onboarding h1,.player-app .mission-card h1{font-size:clamp(2.4rem,9vw,4.8rem)!important;line-height:.95!important;letter-spacing:-.055em!important}.player-app .scan-btn{min-height:60px!important;border-radius:16px!important;background:linear-gradient(135deg,#1ea867,#2dd47f)!important}
@media(max-width:1050px){.admin-shell{padding-left:250px!important}.admin-shell>.brand,.admin-app .topnav{width:220px!important}.admin-app .dashboard-grid,.admin-app .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:760px){body.admin-app{background:#0b0f14!important}.admin-shell{width:100%!important;padding:16px 14px 104px!important}.admin-shell>.brand{position:relative!important;left:auto!important;top:auto!important;width:auto!important;height:auto!important;padding:8px 2px 16px!important;background:transparent!important;border:0!important}.admin-app .topnav{position:fixed!important;left:10px!important;right:10px!important;top:auto!important;bottom:10px!important;width:auto!important;height:68px!important;padding:8px!important;flex-direction:row!important;overflow-x:auto!important;overflow-y:hidden!important;border:1px solid #2a3948!important;border-radius:20px!important;background:rgba(13,19,26,.96)!important;box-shadow:0 18px 50px rgba(0,0,0,.45)!important}.admin-app .topnav a{flex:0 0 auto!important;min-height:50px!important;padding:0 14px!important}.admin-app .hero-card,.admin-app .dashboard-hero{padding:26px 22px!important;min-height:0!important;border-radius:22px!important}.admin-app .dashboard-hero h1{font-size:clamp(2.45rem,13vw,3.8rem)!important}.admin-app .dashboard-grid,.admin-app .metric-grid{grid-template-columns:1fr 1fr!important}.admin-app .card{padding:18px!important}.admin-app .game-actions{width:100%!important}.admin-app .sos-controls{bottom:86px!important}.player-shell{width:calc(100% - 18px)!important;padding-top:12px!important}.player-app .adventure-home,.player-app .adventure-onboarding,.player-app .mission-card{padding:24px 20px!important}}
@media(max-width:420px){.admin-app .dashboard-grid,.admin-app .metric-grid{grid-template-columns:1fr!important}}

/* V5.4 player navigation, catalog, richer responsive surfaces */
.player-brand{display:grid!important;grid-template-columns:48px 1fr!important;grid-template-rows:auto auto!important;column-gap:12px!important;align-items:center!important}.player-brand .brand-mark{grid-row:1/3;width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#2dd47f,#17633c);font-size:1.45rem}.player-brand small{color:#9eb8a7;font-weight:650}.player-nav{display:flex;gap:8px;margin:12px 0 20px}.player-nav a{padding:10px 14px;border:1px solid rgba(255,255,255,.12);border-radius:999px;color:#dff5e7;text-decoration:none;font-weight:800;background:rgba(255,255,255,.04)}.player-app .section-heading{color:#fff;margin:28px 4px 12px}.player-app .section-heading h2{color:#fff;margin:4px 0}.player-app .section-kicker{color:#6ee7a8;text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:900}.player-app .game-tile{overflow:hidden}.player-app .game-tile .step-image{width:calc(100% + 48px);max-width:none;margin:-24px -24px 22px;border-radius:20px 20px 0 0}.player-app .game-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.player-app .game-stats span{display:grid;place-items:center;padding:14px 8px;border-radius:16px;background:#eef6f0;color:#102117}.player-app .game-stats strong{font-size:1.45rem}.player-app .game-stats small{font-weight:700;color:#607267}.player-app .row>form{min-width:0}.player-app input,.player-app textarea,.player-app select{border-radius:13px}.player-app button,.player-app .btn{border-radius:13px;font-weight:850}

/* V5.5 authentication + accessibility */
.admin-login{margin:0;min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 0,rgba(45,212,127,.18),transparent 34rem),#080d12;color:#f8fafc}.login-shell{width:min(520px,calc(100% - 28px));margin:auto;padding:40px 0}.login-brand{display:grid;place-items:center;gap:5px;margin-bottom:22px;color:#fff}.login-brand>span{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:linear-gradient(145deg,#2dd47f,#17633c);font-size:1.8rem}.login-brand strong{font-size:1.25rem}.login-brand small{color:#94a3b8}.admin-login .login-card{padding:30px;background:#111821;color:#fff;border:1px solid #243140;border-radius:24px;box-shadow:0 30px 80px rgba(0,0,0,.4)}.admin-login .login-card h1{color:#fff}.admin-login input{background:#0e151d;color:#fff;border:1px solid #2b3948;border-radius:12px}.admin-login label{color:#dce6ef}.admin-login button{width:100%;min-height:48px;border:0;border-radius:12px;background:#2dd47f;color:#06140d;font-weight:900}.admin-login .section-kicker{color:#6ee7a8;text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:900}
:focus-visible{outline:3px solid #7dd3fc!important;outline-offset:3px!important}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* V5.6 — contraste fiable des champs de formulaire */
.admin-app input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.admin-app textarea,
.admin-app select,
.admin-login input:not([type="checkbox"]):not([type="radio"]),
.player-app input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.player-app textarea,
.player-app select{
  background:#101820 !important;
  color:#f8fafc !important;
  border-color:#334155 !important;
  -webkit-text-fill-color:#f8fafc;
  caret-color:#f8fafc;
}
.admin-app input::placeholder,
.admin-app textarea::placeholder,
.admin-login input::placeholder,
.player-app input::placeholder,
.player-app textarea::placeholder{
  color:#94a3b8 !important;
  -webkit-text-fill-color:#94a3b8;
  opacity:1;
}
.admin-app select option,
.player-app select option{
  background:#101820;
  color:#f8fafc;
}
.admin-app input:disabled,
.admin-app textarea:disabled,
.admin-app select:disabled,
.player-app input:disabled,
.player-app textarea:disabled,
.player-app select:disabled{
  background:#1e293b !important;
  color:#cbd5e1 !important;
  -webkit-text-fill-color:#cbd5e1;
  opacity:1;
}
.admin-app input:-webkit-autofill,
.admin-app input:-webkit-autofill:hover,
.admin-app input:-webkit-autofill:focus,
.admin-login input:-webkit-autofill,
.player-app input:-webkit-autofill{
  -webkit-text-fill-color:#f8fafc !important;
  -webkit-box-shadow:0 0 0 1000px #101820 inset !important;
  transition:background-color 9999s ease-out 0s;
}

/* V5.7 — audit global contraste des états, alertes et composants hérités */
.admin-app .flash,.admin-login .flash,.player-app .flash,
.admin-app .result-bad,.player-app .result-bad,
.admin-app .danger-zone,.player-app .danger-zone{
  color:#fecaca !important;background:#3b1117 !important;border-color:#7f1d1d !important;
}
.admin-app .flash.success,.player-app .flash.success,
.admin-app .result-ok,.player-app .result-ok{
  color:#d1fae5 !important;background:#0f3023 !important;border-color:#166534 !important;
}
.admin-app .flash a,.admin-login .flash a,.player-app .flash a,
.admin-app .result-bad a,.player-app .result-bad a,
.admin-app .result-ok a,.player-app .result-ok a{color:inherit!important;text-decoration:underline}
.admin-app .muted,.admin-login .muted{color:#aebdca!important}
.admin-app .card:not(.hero-card) h1,.admin-app .card:not(.hero-card) h2,.admin-app .card:not(.hero-card) h3,
.admin-app .card:not(.hero-card) strong{color:#f1f5f9}
.admin-app .card:not(.hero-card) p,.admin-app .card:not(.hero-card) li,.admin-app .card:not(.hero-card) td{color:#d6dee7}
.admin-app .card:not(.hero-card) label{color:#dbe5ee!important}
.admin-app table tbody tr{background:#111923!important}.admin-app table td{border-color:#293746!important}.admin-app table th{color:#9fb0bf!important}
.admin-app .step-row,.admin-app .active-player-line,.admin-app .clean-action{background:#111923!important;border-color:#293746!important;color:#e8eef4!important}
.admin-app .step-row .muted,.admin-app .active-player-line .muted{color:#9fb0bf!important}
.admin-app code{background:#080d12;color:#bbf7d0;border:1px solid #293746;padding:.2em .45em;border-radius:7px}
.admin-app details,.player-app details{color:inherit}
.admin-app summary,.player-app summary{color:inherit;font-weight:800}
.admin-app .badge{color:#d1fae5!important;background:#123425!important;border-color:#275c42!important}
.player-app .result-bad{color:#7f1d1d!important;background:#fff1f0!important;border-color:#fecaca!important}
.player-app .result-ok{color:#14532d!important;background:#ecfdf3!important;border-color:#bbf7d0!important}
.player-app .result-bad h1,.player-app .result-bad h2,.player-app .result-bad strong,
.player-app .result-ok h1,.player-app .result-ok h2,.player-app .result-ok strong{color:inherit!important}
.player-app .card:not(.result-bad):not(.result-ok):not(.announcement) label{color:#33443a!important}
.player-app .card:not(.result-bad):not(.result-ok):not(.announcement) .muted{color:#64746a!important}
.player-app .announcement{color:#172019!important;background:#fff!important}
.player-app .announcement *{color:inherit}
.offline-banner{background:#3b2504!important;color:#fde68a!important;border-color:#92400e!important}
.emergency-note,.resume-note{color:#d9e7de!important}
@media(prefers-color-scheme:dark){
 .player-app .result-bad{color:#fecaca!important;background:#3b1117!important;border-color:#7f1d1d!important}
 .player-app .result-ok{color:#d1fae5!important;background:#0f3023!important;border-color:#166534!important}
 .player-app .card:not(.result-bad):not(.result-ok):not(.announcement) label{color:#dbe5de!important}
 .player-app .card:not(.result-bad):not(.result-ok):not(.announcement) .muted{color:#aab9af!important}
 .player-app .announcement{color:#e8eef0!important;background:#172019!important}
}
