@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=DM+Sans:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--bg:#0f0e18;--surface:#191724;--surface2:#221e31;--line:#393246;--text:#f5f0e8;--muted:#b3aabd;--gold:#efcc81;--violet:#aa8dee;--accent:#b69aff;--danger:#e98291;--green:#9bdbbd}
*{box-sizing:border-box}html{font-family:'DM Sans',system-ui,sans-serif;scroll-behavior:smooth}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--text)}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}.aurora{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse 50% 30% at 50% -7%,#6849964f,transparent 80%),radial-gradient(ellipse 50% 32% at 110% 68%,#49235c28,transparent 80%)}.shell{max-width:940px;padding:0 20px;margin:auto;position:relative}.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #3a2d44}.brand{display:flex;align-items:center;gap:12px}.sigil{height:42px;width:42px;display:grid;place-items:center;color:#1c1626;background:linear-gradient(140deg,#f8dc9e,#d4a75a);border-radius:13px;font-size:25px;box-shadow:0 0 34px #f1cb7540}.brand div:last-child{display:flex;flex-direction:column}.brand-eyebrow{font-size:10px;letter-spacing:.22em;color:var(--gold);font-weight:800}.brand strong{font-family:Cinzel,Georgia,serif;font-size:20px}.pill{border:1px solid #675277;border-radius:100px;padding:6px 11px;font-size:10px;font-weight:800;letter-spacing:.16em;color:#d6bae9;background:#2b2133}.eyebrow{text-transform:uppercase;letter-spacing:.22em;color:var(--gold);font-size:11px;font-weight:800}.hero{padding:38px 0 24px}.hero h1{font-family:Cinzel,Georgia,serif;font-weight:700;line-height:1.13;font-size:clamp(30px,5vw,48px);margin:12px 0 10px}.hero p{max-width:570px;color:var(--muted);line-height:1.65;margin:0}.subtle{color:var(--muted)}.panel{background:linear-gradient(145deg,#201b2e,#181622);border:1px solid #40354d;border-radius:22px;padding:24px;box-shadow:0 16px 50px #05030d26}.panel + .panel{margin-top:16px}.entry{max-width:620px;margin:18px auto 54px}.entry h2,.section-title{font:600 23px Cinzel,Georgia,serif;margin:0 0 10px}.entry p{line-height:1.6;color:var(--muted)}.label{color:#decfba;font-weight:700;font-size:13px;display:block;margin:20px 0 8px}input{width:100%;padding:13px 15px;color:var(--text);background:#100f1a;border:1px solid #54475f;border-radius:11px;outline:none}input:focus{border-color:var(--gold)}.btn{border:1px solid transparent;padding:13px 17px;font-weight:800;border-radius:11px;background:linear-gradient(135deg,#f5d891,#dbb66f);color:#211820;min-height:46px}.btn:hover:not(:disabled){filter:brightness(1.08)}.btn.secondary{background:#2b233a;color:#efe6fa;border-color:#58476a}.btn.ghost{background:transparent;color:#ddc8f0;border-color:#54435d}.btn.danger{background:#592d3e;color:#fff;border-color:#8d4863}.btn.small{padding:9px 12px;min-height:38px;font-size:12px}.btn.full{width:100%}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.inline-note{font-size:12px;line-height:1.5;color:var(--muted);margin-top:14px}.qr-reader{min-height:35px;margin-top:12px;border-radius:12px;overflow:hidden}.qr-reader video{max-height:340px;object-fit:cover}.qr-reader:empty{display:none}.demo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}.demo-card{border:1px solid #665070;background:#2a2238;color:#f3ead9;border-radius:12px;padding:14px;text-align:left}.demo-card strong{display:block;color:#f5d58d;margin-bottom:4px}.demo-card span{font-size:12px;color:var(--muted)}.notice{padding:12px 15px;border-radius:12px;background:#30283a;border:1px solid #66526a;font-size:13px;line-height:1.5;margin:15px 0}.notice.gold{background:#3c3029;border-color:#8b6f49}.notice.red{background:#422534;border-color:#8f4656}.topstats{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;margin:18px 0}.stat-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.stat-head strong{font:600 23px Cinzel,serif}.meter{height:14px;border-radius:100px;background:#393044;overflow:hidden;margin:17px 0 10px;border:1px solid #55445f}.meter>div{height:100%;background:linear-gradient(90deg,#b77dce,#f2d181);border-radius:100px;transition:width .35s}.stat-meta{display:flex;justify-content:space-between;gap:6px;font-size:12px;color:var(--muted)}.medal{font-size:27px;margin-right:8px}.menu{display:flex;gap:9px;overflow-x:auto;padding:1px 0 14px;margin-top:20px}.tab{border:1px solid #4b3c57;padding:10px 15px;background:#211a2e;border-radius:11px;color:#c9b8d7;white-space:nowrap;font-size:13px;font-weight:800}.tab.active{color:#231a28;background:#f0ce88;border-color:#e9c677}.panel-title{display:flex;align-items:center;justify-content:space-between;margin:8px 0 16px}.panel-title h2{margin:0;font-family:Cinzel,serif;font-size:23px}.count{font-size:12px;color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-bottom:25px}.power-card{background:linear-gradient(145deg,#2c2139,#1b1828);border:1px solid #584469;border-radius:19px;overflow:hidden;display:flex;flex-direction:column}.power-card.epique{border-color:#a179da}.power-card.legendaire{border-color:#dcae5e;background:linear-gradient(145deg,#453222,#211b27)}.illustration{height:125px;display:flex;align-items:center;justify-content:center;position:relative;background:radial-gradient(circle,#644a75,#20172f 70%);border-bottom:1px solid #534060}.epique .illustration{background:radial-gradient(circle,#7855b3,#261c39 75%)}.legendaire .illustration{background:radial-gradient(circle,#926931,#32252b 70%)}.illustration .glyph{font-size:65px;filter:drop-shadow(0 6px 22px #07020b)}.rarity{position:absolute;top:12px;left:13px;text-transform:uppercase;letter-spacing:.15em;font-size:9px;color:#f7d999;font-weight:800}.card-content{padding:18px;display:flex;flex-direction:column;flex:1;gap:10px}.card-content h3{font:600 18px Cinzel,serif;margin:0}.effect{font-size:13px;color:#dbcfde;line-height:1.5;flex:1;min-height:38px}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{background:#383045;color:#e5d6f2;padding:5px 8px;border-radius:100px;font-size:11px;font-weight:700}.tag.urgent{color:#f7b1bb;background:#4a293b}.card-action{margin-top:4px}.empty{text-align:center;padding:40px 20px;color:var(--muted);border:1px dashed #6b5474;border-radius:17px}.events{display:flex;flex-direction:column;gap:10px;margin-bottom:30px}.event{border:1px solid #3b3147;background:#211b2c;padding:15px;border-radius:14px;display:flex;gap:12px;align-items:start}.event-icon{font-size:23px}.event-body{flex:1}.event-body strong{display:block;margin-bottom:4px}.event-body p{font-size:12px;color:var(--muted);margin:0}.victim-list{display:flex;flex-direction:column;gap:8px;margin:15px 0}.victim-item{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid #51415c;border-radius:12px}.victim-item input{width:auto}.avatar{height:37px;width:37px;display:grid;place-items:center;background:#513d65;color:#f7deb0;border-radius:100%;font-weight:800}.overlay{position:fixed;inset:0;background:#06040ac9;z-index:30;display:grid;place-items:center;padding:18px}.modal{max-width:460px;width:100%;max-height:90dvh;overflow:auto;background:linear-gradient(150deg,#2b2138,#171522);border:1px solid #80668e;border-radius:22px;padding:26px;box-shadow:0 20px 80px #0009}.modal h2{font:600 24px Cinzel,serif}.modal p{color:var(--muted);line-height:1.55}.modal-top{display:flex;justify-content:space-between;align-items:center}.close{border:0;background:transparent;color:var(--muted);font-size:25px}.footer{padding:28px 0 40px;border-top:1px solid #30263a;text-align:center;color:#8d809b;font-size:11px}.footer span{color:var(--gold)}#toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,30px);opacity:0;pointer-events:none;background:#e9d5ac;color:#291e2c;border-radius:11px;padding:12px 17px;z-index:50;box-shadow:0 10px 40px #0009;transition:.2s;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}.loading{text-align:center;padding:80px 0;color:var(--muted)}.small-heading{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--gold);font-weight:800}.rule{padding:12px 0;border-bottom:1px solid #45374e;line-height:1.55;color:#d9ccdd}.rule:last-child{border-bottom:0}@media(max-width:610px){.shell{padding:0 15px}.topbar{height:76px}.brand strong{font-size:17px}.topstats{grid-template-columns:1fr}.panel{padding:18px}.cards{grid-template-columns:1fr}.illustration{height:108px}.card-content h3{font-size:17px}.hero{padding-top:28px}.hero h1{font-size:31px}}

/* Atelier administrateur v0.3 */
.admin-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;border:1px solid #725985;background:#291e38;border-radius:13px;margin-top:16px;padding:12px}
.admin-toolbar>span{font-size:12px;font-weight:800;color:var(--gold);margin-right:auto}
.admin-modal{max-width:650px}.admin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.admin-select,textarea{width:100%;padding:13px 15px;color:var(--text);background:#100f1a;border:1px solid #54475f;border-radius:11px;outline:none;font:inherit}
.admin-select:focus,textarea:focus{border-color:var(--gold)}
@media(max-width:560px){.admin-form-grid{grid-template-columns:1fr}.admin-toolbar{flex-direction:column;align-items:stretch}}

/* v0.5 : lecteur QR avec cadre clairement visible et aperçu vidéo */
.npp-scan-panel{margin-top:14px;border:1px dashed #a787c7;border-radius:16px;padding:13px;background:#181221;position:relative}
.npp-camera-placeholder{min-height:155px;border:2px solid #bb9bcf64;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:15px;color:#f6e7ff}
.npp-camera-placeholder>span{font-size:52px;line-height:1;color:var(--gold)}
.npp-camera-placeholder small{font-size:12px;line-height:1.5;color:var(--muted);max-width:280px}
.npp-scan-panel.is-scanning .npp-camera-placeholder{display:none}
.npp-scan-panel.is-scanning .qr-reader{display:block;min-height:150px;background:#040308;border:1px solid #7a608c}
.npp-scan-panel .qr-reader video{width:100%!important;max-height:400px;object-fit:cover}
.npp-scan-panel .qr-reader img{max-width:100%}
.npp-scan-panel:not(.is-scanning) .qr-reader:empty{display:none}
.npp-hidden-input{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;padding:0!important}
.tag.npp-multi{background:#3a2857;color:#efd4ff}
