:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#eff6ff;background:#08111f;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 80% 0%,#163251 0%,transparent 42%),linear-gradient(150deg,#08111f,#0d1728 55%,#07101e);overflow-x:hidden}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.track{position:fixed;inset:0;pointer-events:none;opacity:.18;background:repeating-linear-gradient(115deg,transparent 0 92px,#61cdf933 93px,#61cdf933 94px,transparent 95px 185px);mask-image:linear-gradient(to bottom,#000,transparent 85%)}.shell{position:relative;max-width:1440px;margin:auto;padding:24px 28px 56px}.topbar{display:flex;gap:18px;align-items:center;justify-content:space-between;border-bottom:1px solid #32445c;padding-bottom:18px;margin-bottom:26px}.brand{display:flex;gap:15px;align-items:center;text-decoration:none;color:inherit}.logo{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(140deg,#fd5c31,#ffb95f);font-size:25px;font-weight:950;color:#08111f;box-shadow:0 0 28px #fd5c3155;transform:skew(-7deg)}.brand strong{display:block;font-size:20px;letter-spacing:.11em;font-weight:900}.brand small{display:block;color:#93a9c0;font-size:12px;letter-spacing:.18em;text-transform:uppercase;margin-top:3px}.top-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.eyebrow{text-transform:uppercase;letter-spacing:.22em;color:#ffac6e;font-weight:900;font-size:12px}.muted{color:#93a9c0}.tiny{font-size:12px}.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px}.hero h1{margin:5px 0 0;font-size:clamp(28px,4vw,54px);line-height:1;letter-spacing:-.05em;font-weight:950}.hero p{margin:10px 0 0;color:#9eb4cb}.status{display:inline-flex;align-items:center;gap:9px;border:1px solid #3a5470;border-radius:999px;padding:8px 12px;background:#12253a;color:#cde3f2;font-size:13px;font-weight:800;white-space:nowrap}.dot{width:8px;height:8px;border-radius:50%;background:#88a5bb;box-shadow:0 0 12px currentColor}.status.active .dot{background:#4de2aa}.status.locked .dot{background:#fd6f4f}.status.revealed .dot{background:#ffc967}.grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.75fr);gap:20px}.panel{background:linear-gradient(145deg,#142339ed,#101d30ed);border:1px solid #29405a;border-radius:22px;box-shadow:0 16px 45px #0005;overflow:hidden}.panel.pad{padding:24px}.panelhead{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:19px}.panel h2,.panel h3{margin:0}.panel h2{font-size:20px}.panel h3{font-size:16px}.question-card{position:relative;min-height:390px;padding:27px;background:linear-gradient(145deg,#172f4a,#111f33 60%);border:1px solid #32506e;border-radius:19px;overflow:hidden}.question-card:before{content:'';position:absolute;right:-80px;top:-100px;width:310px;height:310px;border:30px solid #ff8b3d12;border-radius:50%}.question-number{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#9fb8cf;font-size:12px;text-transform:uppercase;letter-spacing:.17em;font-weight:900}.mode{display:inline-block;color:#fff;background:#db573a;border-radius:7px;padding:7px 9px;letter-spacing:.07em}.mode.normal{background:#2b81b3}.mode.confidence{background:#9a5ec8}.question-title{color:#ffbd7e;font-size:13px;letter-spacing:.12em;text-transform:uppercase;font-weight:900;margin-top:33px}.question-text{font-size:clamp(24px,2.8vw,37px);line-height:1.19;letter-spacing:-.035em;font-weight:850;margin:10px 0 29px;max-width:850px}.options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.option{display:flex;align-items:center;gap:12px;background:#0d1d31;border:1px solid #344f6d;border-radius:12px;color:#eaf4fa;text-align:left;padding:13px 15px;min-height:64px;font-weight:700}.option .letter{width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:8px;background:#27435d;color:#fbc49b;font-size:13px}.option.selected{border-color:#ffad64;background:#46301f;box-shadow:0 0 0 2px #ffad642a}.option.correct{border-color:#48dcaa;background:#133d38}.option.wrong{border-color:#ff7769;background:#4a2830}.option:disabled{cursor:default;opacity:1}.timer{display:flex;align-items:center;gap:13px}.timer-num{font-size:34px;line-height:1;font-weight:950;font-variant-numeric:tabular-nums;letter-spacing:-.05em;color:#fff}.timer-num.urgent{color:#ff7159}.timer-track{height:6px;border-radius:9px;background:#263c55;overflow:hidden;margin:15px 0 22px}.timer-fill{height:100%;width:100%;background:linear-gradient(90deg,#f95d37,#ffc36d);border-radius:9px;transition:width .2s}.btn{border:1px solid #3a5776;border-radius:11px;background:#1b304a;color:#e8f6fc;padding:10px 14px;font-weight:800;min-height:42px;transition:transform .15s,background .15s,border-color .15s}.btn:hover:not(:disabled){transform:translateY(-2px);background:#294663;border-color:#75a1c7}.btn.primary{background:linear-gradient(120deg,#fa623b,#ffae5e);color:#1d160f;border:none;box-shadow:0 7px 18px #fa623b36}.btn.primary:hover:not(:disabled){background:linear-gradient(120deg,#ff7b4f,#ffc279)}.btn.ghost{background:transparent}.btn.danger{border-color:#934e57;color:#ffc1ba}.btn.small{padding:7px 9px;min-height:34px;font-size:12px}.actions{display:flex;flex-wrap:wrap;gap:9px}.divider{height:1px;background:#2a435b;margin:22px 0}.score-list{display:grid;gap:10px}.score{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#0d1c2f;border:1px solid #29405a;border-radius:12px;padding:12px 14px}.score .name{font-weight:800;overflow:hidden;text-overflow:ellipsis}.score .points{font-size:25px;font-weight:950;font-variant-numeric:tabular-nums;color:#ffc170}.score .answer-indicator{font-size:12px;color:#9eb4cb}.score.leader{border-color:#ad7146;background:#2e2630}.stack{display:grid;gap:20px}.helper{font-size:13px;color:#a4bacf;line-height:1.5}.notebar{padding:12px 15px;border-radius:10px;background:#223952;color:#dceefa;font-size:13px;margin-top:15px}.notebar.warn{background:#493026;color:#ffd2ac}.notebar.good{background:#1d3d38;color:#b6f5db}.section-title{font-size:21px;font-weight:900;margin:32px 0 13px}.question-list{display:grid;gap:9px}.question-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;background:#0d1d30;border:1px solid #2b425d;border-radius:12px;padding:10px}.question-row.current{border-color:#ff9b53}.question-row.played{opacity:.65}.ordinal{font-size:14px;color:#ffaa72;font-weight:900;text-align:center}.qsummary strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qsummary small{color:#9bb1c6}.row-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.form{display:grid;gap:13px}.form label{display:grid;gap:5px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#a9bfd2;font-weight:900}.form input,.form textarea,.form select{width:100%;background:#071828;border:1px solid #3b5571;border-radius:9px;color:#f4fbff;padding:10px 11px;outline:none}.form input:focus,.form textarea:focus,.form select:focus{border-color:#ffab69;box-shadow:0 0 0 3px #ffab6922}.form textarea{min-height:70px;resize:vertical}.form .two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.team-settings{display:grid;gap:10px}.team-setting{display:grid;grid-template-columns:1fr auto;gap:8px}.team-setting input{min-width:0}.qr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.qr-card{padding:12px;border-radius:13px;background:#f6faff;color:#142338;text-align:center;min-width:0}.qr-card img{width:100%;max-width:160px;aspect-ratio:1;display:block;margin:4px auto}.qr-card b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qr-card a{display:block;color:#245480;font-size:11px;overflow-wrap:anywhere;margin-top:8px}.confidence{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:15px 0}.confidence button{min-height:65px}.confidence button.selected{background:#704335;border-color:#ffae63}.mobile-submit{width:100%;margin-top:14px;font-size:18px;min-height:56px}.projector .shell{max-width:1900px;padding:28px 4vw}.projector .hero{margin-bottom:29px}.projector .hero h1{font-size:clamp(40px,5.4vw,84px)}.projector .grid{grid-template-columns:minmax(0,1.7fr) minmax(290px,.55fr)}.projector .question-card{min-height:62vh;padding:2.6vw}.projector .question-text{font-size:clamp(34px,3.5vw,70px);margin:2vw 0}.projector .option{font-size:clamp(18px,1.6vw,30px);min-height:90px;padding:17px}.projector .timer-num{font-size:clamp(48px,6vw,100px)}.projector .score .points{font-size:40px}.finish{text-align:center;padding:6vh 10px}.finish h1{font-size:clamp(48px,9vw,120px);letter-spacing:-.06em;margin:10px 0;background:linear-gradient(130deg,#fff,#ffc06d);-webkit-background-clip:text;background-clip:text;color:transparent}.finish p{color:#bdd2e2;font-size:20px}.finish .podium{max-width:700px;margin:25px auto}.finish .score{font-size:20px;padding:16px 20px}.error{background:#5c2730;border:1px solid #d56b75;border-radius:10px;padding:12px 15px;margin:15px 0;color:#fff}.boot{padding:40px;color:#dcecf8}.toast{position:fixed;bottom:20px;right:20px;z-index:100;background:#ffbd7e;color:#1a2433;padding:12px 18px;border-radius:11px;box-shadow:0 12px 40px #0008;font-weight:800;max-width:350px}.checkline{display:flex;align-items:center;gap:10px;margin:8px 0;color:#d6e7f5}.checkline input{accent-color:#ff9156;width:18px;height:18px}.link{color:#ffbd7e;overflow-wrap:anywhere}.pill{border:1px solid #526c84;border-radius:6px;padding:3px 6px;color:#acc4d7;font-size:11px;text-transform:uppercase;letter-spacing:.06em}#fireworks{position:fixed;inset:0;pointer-events:none;width:100%;height:100%;z-index:20}@media(max-width:900px){.grid,.projector .grid{grid-template-columns:1fr}.shell{padding:17px 15px 40px}.hero{align-items:flex-start;flex-direction:column}.topbar{align-items:flex-start;flex-direction:column}.question-card{min-height:unset;padding:19px}.qr-grid{grid-template-columns:1fr 1fr}.projector .question-card{min-height:unset}}@media(max-width:570px){.options{grid-template-columns:1fr}.qr-grid{grid-template-columns:1fr}.question-text{font-size:26px}.form .two{grid-template-columns:1fr}.question-row{grid-template-columns:28px minmax(0,1fr)}.question-row .row-actions{grid-column:2;justify-content:flex-start}.confidence{grid-template-columns:1fr}.top-actions{width:100%}.top-actions .btn{flex:1}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* V2: trois surfaces volontairement distinctes */
body.console{background:#17263c;color:#eef5ff}
.console .shell{max-width:1220px;padding:16px 24px 44px}
.console .panel{background:#213650;border-color:#3d5570;border-radius:15px;box-shadow:none}
.console .panel.pad{padding:16px}
.admin-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #4b627b}
.admin-header>div:first-child{display:flex;align-items:center;gap:15px;flex-wrap:wrap}
.admin-header strong{font-size:21px}.admin-header .status{padding:5px 9px}
.admin-question{margin-bottom:10px}.question-summary{padding:12px 16px}
.question-summary>strong{display:block;margin:6px 0;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.question-summary details{font-size:13px}.question-summary summary{cursor:pointer;color:#ffd2a9}
.question-summary .question-card{min-height:0;margin-top:12px}
.question-summary .question-text{font-size:22px}.question-summary .option{min-height:42px}
.pilot{margin-bottom:10px}.pilot-top{display:grid;grid-template-columns:180px 1fr;gap:16px;align-items:center;margin-bottom:12px}
.pilot .timer-track{margin:4px 0}.pilot .timer-num{font-size:27px}.team-statuses{display:flex;gap:7px;flex-wrap:wrap;margin-top:6px}
.team-statuses span{background:#12263d;border:1px solid #425c76;border-radius:7px;padding:4px 7px;font-size:12px}
.admin-actions .btn{min-height:38px;padding:7px 11px}.question-order{margin-bottom:12px}
.console .question-list{gap:5px}.console .question-row{padding:6px 9px;border-radius:8px}
.console .question-row .btn.small{min-height:28px;padding:4px 7px}
.console .question-row.current{border-color:#ffc16b;background:#344058}
.console .question-row.played{opacity:.75}.console .qsummary small{display:block}
.console .score-list{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:12px}
.console .score{padding:8px 10px}.console .score .points{font-size:20px}
.console .stack{margin-top:12px}.console .qr-grid{grid-template-columns:repeat(3,1fr)}
.console .form .checkline{display:flex;flex-direction:row;align-items:center;text-transform:none;letter-spacing:0;font-size:14px}
.console .answer-editor{display:flex;gap:15px;flex-wrap:wrap}
.mode-explainer .explanation{padding:12px;text-align:left;min-height:0}.mode-explainer h1{font-size:21px;margin:4px 0}.mode-explainer p{font-size:13px;margin:3px 0}.mode-explainer .actions{display:none}
.finish-actions{justify-content:center;margin:22px auto;max-width:850px}.history-entry{display:grid;gap:5px;padding:13px;border-bottom:1px solid #435c77}
body.handset{background:#092d30;color:#edfffa}.handset .track{opacity:.06}
.handset .shell{max-width:530px;padding:8px 10px 24px}
.team-header{display:flex;justify-content:space-between;gap:8px;align-items:center;min-height:42px;padding:5px 4px 9px;border-bottom:1px solid #3d7472;margin-bottom:8px}
.team-header strong{font-size:18px;line-height:1.15}.team-header span{font-size:13px;white-space:nowrap;color:#bde5dd}
.handset .team-main{display:block}.handset .question-card{min-height:0;padding:10px 11px;border-radius:12px;background:#124246;border-color:#447b76}
.handset .question-card:before{display:none}.handset .question-number{font-size:10px;letter-spacing:.08em}
.handset .mode{padding:3px 5px}.handset .question-title{margin-top:8px;font-size:11px;color:#9ce5cf}
.handset .question-text{font-size:clamp(17px,4.5vw,22px);line-height:1.22;margin:4px 0 9px;letter-spacing:0}
.handset .question-image{max-height:130px;object-fit:contain;display:block;margin:4px auto 8px;max-width:100%}
.handset .options{grid-template-columns:1fr;gap:6px}.handset .option{min-height:48px;padding:7px 9px;background:#0b3338;border-color:#4b817c;border-radius:9px;line-height:1.2;font-size:15px}
.handset .option .letter{width:26px;height:26px;background:#205c5c;color:#e8fff5}
.handset .option.selected{background:#1d665d;border-color:#b9f2b4;box-shadow:0 0 0 1px #b9f2b4}
.handset .btn.primary{background:#b8e796;color:#12392f;box-shadow:none}
.handset .mobile-submit{margin-top:8px;min-height:48px;font-size:17px}
.handset .confidence{grid-template-columns:repeat(3,1fr);gap:4px;margin:7px 0}
.handset .confidence button{min-height:51px;padding:4px;font-size:12px;line-height:1.1;background:#195155;border-color:#5c9289}
.handset .confidence button.selected{background:#b8e796;color:#12392f}
.handset .notebar{margin-top:8px}.handset .confirmed{background:#1b5a4b;color:#e4ffe4;font-size:17px}
body.projector{background:#070706;color:#fff2cf;overflow:hidden;height:100vh}
.projector .track{opacity:.05}.projector .shell{width:100vw;height:100dvh;max-width:none;padding:18px 3vw;display:flex;flex-direction:column;overflow:hidden}
.display-header{display:flex;justify-content:space-between;align-items:center;gap:20px;flex:none;min-height:38px;color:#d7b978;border-bottom:1px solid #5c4d2a;letter-spacing:.07em;font-size:clamp(14px,1.3vw,20px)}
.display-header strong{color:#f6d88e}.display-main{display:flex;flex-direction:column;flex:1;min-height:0;padding-top:14px}
.projector .question-card{flex:1;min-height:0;padding:clamp(12px,2vw,25px);display:flex;flex-direction:column;background:#14120e;border:1px solid #8c7138;box-shadow:none;border-radius:14px;overflow:hidden}
.projector .question-card:before{display:none}.projector .question-number{display:none}.projector .question-title{margin:0 0 8px;color:#d6b56a;font-size:clamp(15px,1.4vw,24px)}
.projector .question-text{font-size:clamp(29px,3.1vw,60px);line-height:1.12;letter-spacing:-.025em;margin:0 0 12px;max-width:none;overflow-wrap:anywhere}
.projector .question-image{display:block;max-width:100%;max-height:min(24vh,235px);min-height:0;object-fit:contain;align-self:center;margin:0 auto 12px}
.projector .options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:auto}
.projector .option{min-height:clamp(65px,10vh,95px);padding:10px 15px;background:#211e16;border-color:#766039;border-radius:9px;font-size:clamp(19px,1.7vw,31px);line-height:1.15;overflow-wrap:anywhere;color:#fff7e2}
.projector .option .letter{background:#5a4724;color:#fff0c2;width:34px;height:34px}
.projector .option.correct{background:#193b2f;border-color:#72d6a4}.projector .option.wrong{background:#492c25;border-color:#ec8d79}
.display-timer{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:10px;height:45px}.display-timer .timer{gap:5px}.display-timer .timer-num{font-size:26px;color:#e1c079}.display-timer .timer-track{display:none}
.projector .finish{margin:auto;width:100%;padding:0}.projector .finish h1{font-size:clamp(50px,7vw,115px)}
.projector .score-list{max-width:800px;margin:auto}.projector .score{background:#1e1a11;border-color:#8c7138}.projector .score .points{color:#f4d17a}
.intermission{display:grid;place-content:center;text-align:center;flex:1;min-height:0}.intermission h1{font-size:clamp(38px,5vw,80px);margin:5px}.intermission .score-list{width:min(78vw,800px)}
.explanation{display:grid;place-content:center;text-align:center;flex:1;min-height:0;gap:8px;padding:3vw}.explanation h1{font-size:clamp(36px,6vw,90px);margin:0;color:#f8d47a}.explanation p{font-size:clamp(19px,2vw,34px);margin:4px}.explanation .actions{justify-content:center}
@media(max-width:900px){.console .shell{padding:12px}.admin-header{align-items:flex-start}.console .score-list{grid-template-columns:1fr}.projector .shell{padding:10px 2vw}.projector .question-text{font-size:clamp(27px,3.2vw,46px)}}
@media(max-width:570px){.admin-header{display:block}.admin-header .top-actions{margin-top:8px}.pilot-top{grid-template-columns:1fr}.handset .shell{padding:5px 7px 15px}.handset .question-text{font-size:18px}.handset .option{min-height:44px;font-size:14px}.handset .question-image{max-height:90px}.projector .options{grid-template-columns:1fr}}
.projector .question-card.dense .question-text{font-size:clamp(25px,2.4vw,46px);line-height:1.1}
.projector .question-card.dense .question-image{max-height:min(20vh,190px)}
.projector .question-card.dense .option{font-size:clamp(17px,1.4vw,26px);min-height:clamp(62px,9vh,88px)}
.console .mode-explainer .explanation{display:block;min-height:0;text-align:left;padding:3px 0 8px}
.console .mode-explainer .explanation h1{font-size:21px;line-height:1.2;margin:2px 0 5px}
.console .mode-explainer .explanation p{font-size:14px;line-height:1.3;margin:3px 0}
.console .mode-explainer .explanation .eyebrow{font-size:11px}

/* V3 : résultat d'équipe et média de démonstration */
.sound-control{white-space:normal;text-align:center;line-height:1.15;flex:none}
.team-header .sound-control{font-size:11px;padding:5px 6px;min-height:32px;max-width:112px;border-color:#76aaa2;color:#e6fff5}
.display-header .sound-control{font-size:12px;letter-spacing:0;border-color:#85703e;color:#f8e7be}
.team-result{display:grid;gap:3px;text-align:center;padding:12px;margin:0 0 9px;border-radius:12px;border:3px solid #9eb6ae;background:#173d40;color:white;box-shadow:0 8px 24px #0005}
.team-result strong{font-size:clamp(27px,8vw,42px);line-height:1;font-weight:950}
.team-result span{font-size:16px;font-weight:800}.team-result .result-points{font-size:clamp(27px,8vw,42px);font-weight:950;font-variant-numeric:tabular-nums;animation:points-pop .65s ease-out}
.team-result small{font-size:14px}.team-result.success{background:#075c38;border-color:#72f2a0}.team-result.failure{background:#842b2e;border-color:#ff9e8e}.team-result.none{background:#294a51}
.handset .option.correct{background:#075c38;border:3px solid #81f4a7;color:#fff}.handset .option.wrong{background:#8a292e;border:3px solid #ff9e91;color:#fff}
.handset .question-card.with-media .question-image{max-height:105px}
.handset .question-card.with-media .question-text{font-size:clamp(16px,4vw,20px)}
.handset .notebar.good{background:#135d3b;color:#fff;font-weight:750}
.result-fail-effect .team-result.failure{animation:wrong-shake .55s ease-in-out}
.result-fail-effect:after{content:'';position:fixed;inset:0;pointer-events:none;z-index:19;background:#ff3f36;animation:wrong-flash 1.1s ease-out forwards}
@keyframes wrong-flash{0%,25%{opacity:.45}12%,45%,100%{opacity:0}}
@keyframes wrong-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}
@keyframes points-pop{0%{transform:scale(.4);opacity:.1}65%{transform:scale(1.15);opacity:1}100%{transform:scale(1)}}
.projector .question-card.with-media .question-image{max-height:min(30vh,260px);width:auto;max-width:85%;margin:0 auto 8px}
.projector .question-card.with-media .question-text{font-size:clamp(27px,2.7vw,52px);margin-bottom:8px}
.projector .question-card.with-media .option{min-height:clamp(58px,8vh,82px);font-size:clamp(18px,1.5vw,28px)}
@media(max-height:800px){.projector .question-card.with-media .question-image{max-height:28vh}.projector .question-card.with-media .question-text{font-size:clamp(25px,2.4vw,43px)}.projector .question-card.with-media .option{min-height:58px}}
@media(max-width:400px){.handset .shell{padding-bottom:8px}.team-header strong{font-size:15px}.team-header span{font-size:11px}.team-header .sound-control{font-size:10px;max-width:100px}}
@media(prefers-reduced-motion:reduce){.team-result .result-points,.result-fail-effect .team-result.failure,.result-fail-effect:after{animation:none!important}.result-fail-effect:after{display:none}}

/* V4 : projection indépendante, quatre ambiances persistantes */
body.projector{--projection-bg:#152b48;--projection-card:#203c60;--projection-answer:#30517b;--projection-accent:#91d7ff;background:var(--projection-bg);color:#f7fbff}
body.projector[data-theme="violet"]{--projection-bg:#29213c;--projection-card:#403157;--projection-answer:#58436e;--projection-accent:#e0b4ff}
body.projector[data-theme="green"]{--projection-bg:#183b37;--projection-card:#24534d;--projection-answer:#326d63;--projection-accent:#a0f3ce}
body.projector[data-theme="bronze"]{--projection-bg:#352820;--projection-card:#50392a;--projection-answer:#6c4c33;--projection-accent:#ffce90}
.projector .question-card,.projector .score{background:var(--projection-card);border-color:var(--projection-accent)}
.projector .option{background:var(--projection-answer);color:#fff;border-color:var(--projection-accent)}
.projector .option.correct{background:#193b2f;border-color:#72d6a4}
.projector .display-header,.projector .display-header strong,.projector .question-title,.projector .explanation h1,.projector .score .points,.projector .display-timer .timer-num{color:var(--projection-accent)}
.projector .display-header{border-color:var(--projection-accent)}
.projector .option .letter{background:var(--projection-bg);color:#fff}
.projector .sound-control{color:#fff;border-color:var(--projection-accent)}
.logo-setup{display:flex;gap:15px;align-items:center;flex-wrap:wrap;margin:14px 0;padding:12px;border:1px solid #6581a0;border-radius:12px}
.logo-setup label{display:grid;gap:8px}.logo-preview{width:150px;height:54px;object-fit:contain;background:#fff;border-radius:6px;padding:5px}
#projection-theme{padding:9px;background:#152b48;color:#fff;border:1px solid #91d7ff;border-radius:8px}
/* Pied sous les commandes : safe area, minuteur visible même après validation. */
.handset .shell{min-height:100dvh;display:flex;flex-direction:column;padding-bottom:max(7px,env(safe-area-inset-bottom))}
.handset .team-main{flex:0 0 auto}.team-wait{flex:1;display:grid;align-content:center;text-align:center;gap:6px;padding:20px 8px}.waiting-mark{font-size:60px}.team-wait h2{font-size:29px;margin:8px}.team-wait p{color:#bee5df}
.handset-footer{margin-top:auto;padding:8px 3px 0;flex:none;text-align:center}
.handset-footer .timer{justify-content:center;gap:9px}.handset-footer .timer-num{font-size:24px;letter-spacing:0}.handset-footer .muted{font-size:12px}
.handset-footer .timer-track{height:5px;margin:5px 0 6px}.handset-footer .timer-fill{background:#a3e635}.handset-footer:has(.urgent) .timer-fill{background:#ff7159}
.handset-logo{height:32px;max-width:155px;object-fit:contain;background:#fff;border-radius:5px;padding:3px}
.handset .question-title,.handset .question-number{display:none}
.handset .team-header .sound-control{max-width:94px;font-size:10px}.handset .team-header strong{overflow-wrap:anywhere;max-width:45%}
.handset .confirmed{background:#24464a;color:#edfffa;font-size:15px}
.handset .finish h1{font-size:43px}.handset .finish{padding:20px 0}
@media(max-height:720px){.handset .question-card{padding:7px 8px}.handset .question-card.with-media .question-image{max-height:78px}.handset .question-text{margin:2px 0 5px;font-size:16px}.handset .option{min-height:44px;padding:6px 7px}.handset .confidence button{min-height:44px}.handset-footer{padding-top:6px}.handset-logo{height:28px}.handset .team-header{margin-bottom:5px;padding-bottom:5px}}
/* Course : mouvements calculés depuis l'heure serveur, donc reprise/rechargement fiables. */
.race-screen{display:flex;flex-direction:column;justify-content:center;flex:1;min-height:0;text-align:center;gap:12px}.race-screen h1{font-size:clamp(36px,4.7vw,82px);margin:8px 0;color:var(--projection-accent)}
.race-track{display:grid;gap:15px}.race-lane{display:grid;grid-template-columns:minmax(130px,18%) 1fr 100px;align-items:center;gap:20px;font-size:clamp(16px,1.6vw,28px)}
.race-lane strong{overflow-wrap:anywhere}.race-road{position:relative;height:70px;background:linear-gradient(#091a2acc,#091a2acc);border-radius:12px;border-bottom:2px dashed #ffffff65;overflow:hidden}
.race-car{position:absolute;left:0;top:13px;width:96px;z-index:2}.race-car svg{width:96px;height:44px}.finish-line{position:absolute;right:18px;width:14px;top:0;bottom:0;background:repeating-conic-gradient(#fff 0% 25%,#111 0% 50%) 0 0/14px 14px}
#race-announcement{font-size:clamp(24px,3vw,50px);font-weight:900;min-height:1.5em;color:var(--projection-accent)}
#race-suspense{font-size:clamp(22px,2.5vw,40px);margin:0;color:#fff;min-height:1.5em}

/* V5 : la ligne est avancée pour laisser les voitures poursuivre leur trajet. */
.race-lane{grid-template-columns:minmax(130px,18%) 1fr minmax(155px,18%);gap:14px}
.race-road{overflow:visible}
.finish-line{left:48%;right:auto}
.race-goal{position:absolute;right:5%;top:2px;z-index:1;font-size:38px;line-height:1.2;filter:drop-shadow(0 4px 6px #0009)}
.race-goal.podium{background:linear-gradient(145deg,#f8e19b,#b98726);border-radius:5px 5px 0 0;border-bottom:10px solid #88611c;padding:2px 8px}
.race-goal.chasm{top:34px;background:#020710;border:3px solid #ae6542;border-radius:50%;width:72px;height:38px;text-align:center;font-size:22px}

/* Administration V6 : filtres et aperçu de la banque. */
.v6-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:14px 0}
.v6-filters label{display:grid;gap:4px}
.v6-filters input,.v6-filters select{min-width:0;width:100%}
.v6-question-row>div:first-child{display:grid;grid-template-columns:auto 64px minmax(0,1fr);align-items:center;gap:8px;min-width:0}
.v6-question-row strong,.v6-question-row small{grid-column:3;overflow-wrap:anywhere}
.v6-question-row:not(:has(input[type=checkbox]))>div:first-child{grid-template-columns:64px minmax(0,1fr)}
.v6-question-row:not(:has(input[type=checkbox])) strong,.v6-question-row:not(:has(input[type=checkbox])) small{grid-column:2}
.v6-thumb{width:64px;height:52px;object-fit:contain;background:#fff;border-radius:5px;grid-row:1/3;grid-column:2}
.v6-question-row:not(:has(input[type=checkbox])) .v6-thumb{grid-column:1}
.library-preview-image{max-width:min(100%,420px);max-height:240px;object-fit:contain;display:block;margin:12px auto}
.v6-import-plan{border:1px solid #5a7695;padding:14px;border-radius:10px;margin:18px 0}
@media(max-width:720px){.v6-question-row>div:first-child{grid-template-columns:auto minmax(0,1fr)}.v6-question-row strong,.v6-question-row small{grid-column:2}.v6-thumb{display:none}}
.race-rank{font-weight:850;line-height:1.12}
@media(max-width:900px){.race-lane{grid-template-columns:90px 1fr 115px;gap:6px;font-size:14px}.race-car,.race-car svg{width:65px}.race-goal{font-size:25px}.race-goal.chasm{width:50px;height:30px;top:36px}.race-road{height:66px}}
/* OVH: accueil et QR locaux. */
.lobby{max-width:580px;margin:8vh auto;padding:32px!important}.lobby h1{font-size:clamp(34px,5vw,58px);margin:0 0 12px}.lobby p{color:#bdd2e2}.lobby form{display:grid;gap:15px;margin:26px 0}.lobby label{display:grid;gap:8px;font-weight:800}.lobby input{background:#071828;border:1px solid #3b5571;border-radius:9px;color:#fff;padding:13px}.lobby .btn{justify-self:start}.qr-image{width:132px;height:132px;margin:8px auto;background:white;display:grid;place-items:center}.qr-image img,.qr-image canvas{max-width:132px;max-height:132px;margin:0}
/* Hébergement mutualisé : tableau de bord et éditeur administrateur. */
.dash-logo{max-width:190px;max-height:72px;object-fit:contain;background:#fff;border-radius:8px;padding:6px}.dash-logo.small-logo{width:62px;height:38px;padding:3px}
.dash-nav{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0}.dash-form{display:grid;gap:12px;max-width:820px;margin:18px 0}
.dash-form label{display:grid;gap:5px;font-weight:700}.dash-form input,.dash-form textarea,.dash-form select,.dash-nav select,#add-question,.challenge-item input,.challenge-item select,.lobby select{background:#10243a;color:#fff;border:1px solid #53718e;border-radius:8px;padding:9px;font:inherit}
.dash-form textarea{min-height:76px}.dash-form .btn{justify-self:start}
.dash-list{display:grid;gap:8px;margin-top:15px}.dash-row{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#142c43;border:1px solid #45627c;border-radius:9px;padding:10px}
.dash-row small{display:block;color:#b8cce0;margin-top:4px}.dash-row .actions{display:flex;gap:6px;flex-wrap:wrap}
.option-edit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.option-edit>div{display:flex;gap:8px;align-items:end}
.challenge-item{display:grid;grid-template-columns:minmax(160px,2fr) 100px 140px auto;gap:10px;align-items:center;padding:9px;border:1px solid #52708a;border-radius:8px}
.challenge-item label{font-size:12px}.challenge-item input{width:95px}.challenge-item select{width:140px}
.console .qr-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.qr-card{overflow-wrap:anywhere}.qr-card a{font-size:12px}
.final-podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px auto;max-width:1000px}
.final-podium>div{display:grid;gap:6px;background:#294461;border:1px solid #e5bd65;border-radius:13px;padding:15px}.final-podium strong{font-size:clamp(16px,2vw,30px)}
#pedagogical{background:#0d3950;border:2px solid #93d9ef;border-radius:9px;padding:12px;margin-top:8px}#pedagogical[hidden]{display:none}
/* La course compacte affiche les 24 véhicules sur une seule projection. */
.projector .race-screen{gap:4px}.projector .race-screen h1{font-size:clamp(25px,3vw,48px);margin:0}
.projector .race-track{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;flex:1;min-height:0}
.projector .race-lane{display:grid;grid-template-columns:1fr;gap:2px;min-height:0;padding:3px 5px;border:1px solid #ffffff55;border-radius:6px;font-size:clamp(10px,.9vw,15px)}
.projector .race-lane strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.projector .race-road{height:35px}.projector .race-car,.projector .race-car svg{width:45px;height:23px}.projector .race-car{top:6px}
.projector .race-goal{font-size:20px}.projector .race-goal.chasm{top:15px;width:33px;height:17px;font-size:11px;padding:0}
.projector .race-rank{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.projector .race-track[data-count="2"],.projector .race-track[data-count="3"],.projector .race-track[data-count="4"]{grid-template-columns:1fr}
.projector .race-track[data-count="5"],.projector .race-track[data-count="6"],.projector .race-track[data-count="7"],.projector .race-track[data-count="8"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.projector .race-track[data-count="9"],.projector .race-track[data-count="10"],.projector .race-track[data-count="11"],.projector .race-track[data-count="12"],.projector .race-track[data-count="13"],.projector .race-track[data-count="14"],.projector .race-track[data-count="15"],.projector .race-track[data-count="16"]{grid-template-columns:repeat(3,minmax(0,1fr))}
.projector .finish{max-height:calc(100dvh - 55px);overflow:hidden}.projector .finish h1{font-size:clamp(30px,4vw,60px);margin:4px}
.projector .finish .final-podium{margin:5px auto}.projector .finish .final-podium>div{padding:5px}
.projector .finish .score-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-width:none;gap:3px}
.projector .finish .score{padding:3px 8px;min-height:28px;font-size:clamp(11px,1vw,16px)}.projector .finish .score .points{font-size:clamp(12px,1.2vw,18px)}
@media(max-width:680px){.dash-row,.challenge-item{display:grid;grid-template-columns:1fr}.option-edit{grid-template-columns:1fr}.final-podium{grid-template-columns:1fr}}

/* V6.1 : bibliothèque, signalements et paramètres. */
.console .panel.pad+.panel.pad{margin-top:16px}
.v6-question-entry{display:grid;gap:0}
.v6-question-row .v6-question-main{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.v6-question-row .v6-question-copy{min-width:0;display:grid;gap:4px}
.v6-question-row .v6-question-copy strong,.v6-question-row .v6-question-copy small{grid-column:auto}
.v6-question-row .v6-thumb,.v6-question-row:not(:has(input[type=checkbox])) .v6-thumb{display:block;grid-column:auto;grid-row:auto;flex:none}
.library-inline-preview{background:#0b2034;border:1px solid #567793;border-top:0;border-radius:0 0 10px 10px;padding:18px;margin:0 8px 9px}
.library-inline-preview ol{padding-left:28px}.library-inline-preview li{margin:6px 0}.library-inline-preview li strong{color:#8df0c7}
.move-arrow{font-size:22px!important;min-width:40px}
.docs-section{border-left:5px solid #f5a45b}
.taxonomy-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:16px 0}.taxonomy-columns>div{background:#10243a;border:1px solid #45627c;border-radius:10px;padding:14px;max-height:320px;overflow:auto}.taxonomy-columns ul{padding-left:20px}.taxonomy-columns li{margin:6px 0}.taxonomy-columns small{color:#9ab4cb}
.dash-form label.checkline,.console .dash-form label.checkline{display:flex;align-items:center;gap:10px;flex-direction:row}
.dash-form .checkline input{width:18px;height:18px;flex:none;margin:0}
.theme-preview{display:grid;gap:8px;max-width:420px;min-height:105px;padding:17px;border:2px solid #6fb2ef;border-radius:12px;background:linear-gradient(130deg,#132a48,#0c1527);color:#fff}
.theme-preview.theme-violet{background:linear-gradient(130deg,#31134f,#12142e);border-color:#cb8dff}
.theme-preview.theme-green{background:linear-gradient(130deg,#0d4437,#0b2226);border-color:#74deaf}
.theme-preview.theme-bronze{background:linear-gradient(130deg,#4c3018,#211d1c);border-color:#e8ad65}
.theme-preview span{color:#d6e5f5}
.report-row{align-items:start}.report-row>div{min-width:0;flex:1}.report-row .report-resolution{display:grid;gap:8px;min-width:220px}
.report-resolution label{display:grid;gap:5px}.report-resolution textarea{min-height:90px;resize:vertical;background:#10243a;color:#fff;border:1px solid #53718e;border-radius:8px;padding:9px}
.report-context{border:1px solid #e8ab6d;border-radius:10px;padding:15px;background:#3b2b24}
.report-panel form{display:grid;gap:14px;margin-top:14px}.report-panel label{display:grid;gap:6px}.report-panel textarea{min-height:145px;resize:vertical}
@media(max-width:680px){.report-row{display:grid}.report-row .report-resolution{min-width:0;width:100%}}

/* V6.2 : largeur stable des cartes avec ou sans illustration. */
.v6-question-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}
.v6-question-row .v6-question-main{width:100%;min-width:0}
.v6-question-row .v6-question-copy{flex:1 1 auto;min-width:0}
.v6-question-row .actions{justify-content:flex-end}
@media(max-width:680px){.v6-question-row{grid-template-columns:minmax(0,1fr)}.v6-question-row .actions{justify-content:flex-start}}

/* L'image projetée prend l'espace restant sans masquer l'énoncé ou les choix. */
.projector .question-card.with-media .question-image{width:auto;max-width:100%;max-height:min(46vh,480px);height:auto;min-height:0;object-fit:contain;flex:1 1 auto}
.projector .question-card.dense.with-media .question-image{max-height:min(34vh,350px)}
@media(max-height:750px){.projector .question-card.with-media .question-image{max-height:38vh}.projector .question-card.dense.with-media .question-image{max-height:28vh}}
