:root{--bleu:#002395;--rouge:#e1000f;--blanc:#fff;--bg:#f4f6fb;--surface:#fff;--text:#5a6a85;--text-h:#0d1b4b;--border:#dde3f0;--accent:var(--bleu);--accent-bg:#00239512;--accent-border:#0023954d;--shadow:0 2px 12px #00239514;--shadow-hover:0 8px 28px #00239524;--sans:"Inter", system-ui, sans-serif;--heading:"Oswald", "Inter", sans-serif;--radius:10px;font:15px/155% var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;--cat-economie:#f59e0b;--cat-education:#3b82f6;--cat-environnement:#16a34a;--cat-sante:#e11d48;--cat-securite:#6366f1;--cat-societe:#0891b2}@media (prefers-color-scheme:dark){:root{--bg:#0a1240;--surface:#111d5e;--text:#89c;--text-h:#e8ecff;--border:#1a2b7a;--accent-bg:#00239540;--shadow:0 2px 12px #0006;--shadow-hover:0 8px 28px #00000080}}*,:before,:after{box-sizing:border-box}body{margin:0}body:before{content:"";background:linear-gradient(to right, var(--bleu) 33.3%, var(--blanc) 33.3% 66.6%, var(--rouge) 66.6%);z-index:100;height:5px;display:block;position:fixed;top:0;left:0;right:0}#root{min-height:100svh}.app-layout{flex-direction:column;min-height:100svh;display:flex}.app-main{flex-direction:column;flex:1;display:flex}.main-content{width:100%;max-width:1060px;margin:0 auto;padding:48px 20px 112px}.navbar{z-index:50;background:var(--bleu);justify-content:space-between;align-items:center;height:56px;padding:0 24px;display:flex;position:sticky;top:5px;box-shadow:0 2px 16px #00000026}.navbar-brand{color:#fff;font-family:var(--heading);cursor:pointer;letter-spacing:1px;text-transform:uppercase;background:0 0;border:none;align-items:center;gap:8px;font-size:20px;font-weight:700;display:flex}.navbar-logo{object-fit:contain;width:auto;height:36px}.navbar-center{gap:8px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.navbar-link{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #fff3;border-radius:8px;padding:6px 16px;font-size:14px;font-weight:600;transition:background .15s}.navbar-link:hover{background:#ffffff38}.navbar-right{align-items:center;gap:8px;min-width:0;display:flex}.navbar-level{color:#ffffffb3;font-size:12px;font-weight:600;display:none}@media (width>=480px){.navbar-level{display:block}}.navbar-avatar{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #fff3;border-radius:99px;align-items:center;gap:8px;min-width:0;padding:4px 12px 4px 4px;font-size:14px;font-weight:600;transition:background .15s;display:flex;overflow:hidden}.navbar-avatar span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.navbar-avatar:hover{background:#fff3}.navbar-logout{color:#fffc;cursor:pointer;background:0 0;border:1px solid #ffffff4d;border-radius:8px;padding:5px 12px;font-size:13px;transition:background .15s,color .15s}.navbar-logout:hover{color:#fff;background:#ffffff1a}.avatar{color:#fff;width:52px;height:52px;box-shadow:var(--shadow);border:3px solid #fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:22px;font-weight:800;display:flex}.avatar.small{border-width:2px;width:38px;height:38px;font-size:16px}.avatar.tiny{border-width:2px;width:28px;height:28px;font-size:13px}h1{font-family:var(--heading);color:var(--text-h);letter-spacing:.5px;text-transform:uppercase;margin:0 0 4px;font-size:32px;font-weight:700;line-height:1.25}h2{font-family:var(--heading);color:var(--text-h);letter-spacing:.3px;text-transform:uppercase;margin:0 0 4px;font-size:20px;font-weight:600}p{margin:0}.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);padding:20px}.btn-primary{background:var(--bleu);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;justify-content:center;align-items:center;width:100%;padding:12px 24px;font-size:15px;font-weight:700;transition:opacity .15s,transform .1s;display:inline-flex}.btn-primary:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{background:var(--rouge);color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;padding:8px 18px;font-size:14px;font-weight:700;display:inline-flex}.btn-ghost{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:500;transition:border-color .15s,color .15s}.btn-ghost:hover{border-color:var(--text-h);color:var(--text-h)}.back-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;margin-bottom:16px;padding:7px 14px;font-size:14px;font-weight:600;transition:color .15s,border-color .15s;display:inline-flex}.back-btn:hover{color:var(--text-h);border-color:var(--text-h)}.login-page{text-align:center;background:url(/fond_acceuil.png) 50%/cover no-repeat;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:calc(100svh - 5px);padding:48px 24px 120px;display:flex;position:relative}.login-page:before{content:"";-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none;background:#000a3c26;position:absolute;inset:0}.flip-card{perspective:1400px;z-index:1;width:100%;max-width:480px;position:relative}.flip-card-inner{width:100%;min-height:480px;transform-style:preserve-3d;transition:transform .75s cubic-bezier(.4,.2,.2,1);position:relative}.flip-card.flipped .flip-card-inner{transform:rotateY(180deg)}.flip-card-face{backface-visibility:hidden;width:100%;position:absolute;top:0;left:0}.flip-card-front{z-index:2}.flip-card-back{transform:rotateY(180deg)}.login-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;background:#000a3c8c;border:1px solid #ffffff40;border-radius:16px;flex-direction:column;align-items:center;gap:24px;width:100%;padding:44px 40px 40px;display:flex;box-shadow:0 8px 48px #00000073}.login-front-label{font-family:var(--heading);letter-spacing:2px;text-transform:uppercase;color:var(--rouge);text-align:center;font-size:16px;font-weight:700}.login-front-title{font-family:var(--heading);color:#fff;text-transform:uppercase;letter-spacing:1px;text-align:center;text-shadow:0 2px 16px #0006;margin:0;font-size:44px;font-weight:700;line-height:1.1}.login-front-sub{color:#fffc;text-align:center;font-size:16px;line-height:1.7}.login-front-hooks{text-align:center;flex-direction:column;gap:12px;display:flex}.login-front-hooks p{color:#ffffffd9;border-bottom:1px solid #ffffff1a;padding:10px 0;font-size:17px;font-weight:600;line-height:1.5}.login-front-hooks p:last-child{border-bottom:none}.login-cta{background:var(--rouge);color:#fff;border-radius:var(--radius);cursor:pointer;letter-spacing:.3px;border:none;width:100%;padding:14px;font-size:16px;font-weight:700;transition:opacity .15s,transform .1s}.login-cta:hover{opacity:.88;transform:translateY(-1px)}.flip-back-btn{color:#fff9;cursor:pointer;background:0 0;border:none;align-self:flex-start;margin-bottom:-8px;padding:0;font-size:13px;font-weight:600;transition:color .15s}.flip-back-btn:hover{color:#fff}.login-page h1{color:#fff;text-shadow:0 2px 12px #0006;font-size:40px}.login-page>.login-card>p{color:#fffc;font-size:15px;line-height:1.65}.login-card .login-tabs{background:#ffffff1a;border-color:#fff3}.login-card .login-tabs button{color:#ffffffb3}.login-card .login-tabs button.active{color:#fff;background:#ffffff2e}.login-card input[type=email],.login-card input[type=password]{color:#fff;background:#ffffff1f;border-color:#ffffff40}.login-card input[type=email]::placeholder,.login-card input[type=password]::placeholder{color:#ffffff73}.login-card input:focus{border-color:#fff9;box-shadow:0 0 0 3px #ffffff1a}.login-card .field label{color:#ffffffe6}.login-card .forgot-link{color:#ffffff8c}.login-card .forgot-link:hover{color:#fff}.login-card .error{color:#fca5a5}.login-card .success{color:#86efac}.login-card .back-link{color:#fffc}.login-card .forgot-header p{color:#ffffffa6}.login-card .forgot-header h2{color:#fff}.setup-page{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;width:100%;max-width:480px;margin:0 auto;padding:60px 20px 120px;display:flex}.setup-page h1{font-size:32px}@media (width<=540px){.login-card{border-radius:12px;gap:20px;padding:32px 24px 28px}.login-page h1{font-size:28px}.login-page>.login-card>p{font-size:13px}}.login-tabs{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);gap:4px;width:100%;padding:4px;display:flex}.login-tabs button{cursor:pointer;color:var(--text);background:0 0;border:none;border-radius:7px;flex:1;padding:9px;font-size:14px;font-weight:600;transition:background .15s,color .15s}.login-tabs button.active{background:var(--surface);color:var(--bleu);box-shadow:0 1px 4px #00000014}.setup-page>p{color:var(--text);font-size:15px}form{flex-direction:column;gap:16px;width:100%;display:flex}.field{text-align:left;flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-h);text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:700}.field label span{text-transform:none;color:var(--text);font-weight:400}input[type=email],input[type=password],input[type=text],textarea,select{border:1.5px solid var(--border);background:var(--surface);width:100%;color:var(--text-h);font-size:15px;font-family:var(--sans);border-radius:8px;padding:11px 14px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--bleu);box-shadow:0 0 0 3px var(--accent-bg);outline:none}textarea{resize:vertical}button[type=submit]{background:var(--bleu);color:#fff;border-radius:var(--radius);cursor:pointer;letter-spacing:.2px;border:none;padding:13px;font-size:16px;font-weight:700;transition:opacity .15s}button[type=submit]:disabled{opacity:.5;cursor:not-allowed}button[type=submit]:hover:not(:disabled){opacity:.88}.color-picker{flex-wrap:wrap;gap:10px;display:flex}.color-swatch{cursor:pointer;border:3px solid #0000;border-radius:50%;outline:none;width:36px;height:36px;transition:transform .15s,border-color .15s}.color-swatch:hover{transform:scale(1.12)}.color-swatch.selected{border-color:var(--text-h);box-shadow:0 0 0 2px var(--surface)}.error{color:var(--rouge);font-size:14px}.success{color:#16a34a;font-size:14px}.forgot-link{color:#6b7280;cursor:pointer;text-align:center;background:0 0;border:none;width:100%;margin-top:8px;padding:4px 0;font-size:13px;text-decoration:underline;display:block}.forgot-link:hover{color:var(--bleu)}.forgot-header{margin-bottom:24px}.forgot-header h2{margin:8px 0 4px;font-size:22px}.forgot-header p{color:#6b7280;margin:0;font-size:14px}.back-link{color:var(--bleu);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline}.home-page{flex-direction:column;gap:20px;display:flex}.home-intro{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:24px 0 8px;display:flex}.home-intro-label{font-family:var(--heading);letter-spacing:3px;text-transform:uppercase;color:var(--rouge);font-size:11px;font-weight:700}.home-intro-title{font-family:var(--heading);color:var(--text-h);text-transform:uppercase;letter-spacing:2px;margin:0;font-size:48px;font-weight:700;line-height:1.1}.home-intro-text{color:var(--text);max-width:440px;font-size:15px;line-height:1.7}.accordion{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.accordion-header{cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:18px 20px;transition:background .15s;display:flex}.accordion-header:hover{background:var(--accent-bg)}.accordion-title{align-items:center;gap:12px;display:flex}.accordion-title h2{margin:0;font-size:16px}.accordion-right{flex-shrink:0;align-items:center;gap:10px;display:flex}.accordion-chevron{color:var(--text);font-size:11px}.accordion-body{border-top:1px solid var(--border)}.campaign-hero{background:var(--bleu);border-radius:var(--radius);text-align:center;border-bottom:5px solid var(--rouge);flex-direction:column;align-items:center;gap:18px;padding:40px 32px 28px;display:flex;position:relative;overflow:hidden}.campaign-hero:before{content:"";pointer-events:none;background:radial-gradient(at 100% 0,#e1000f2e 0%,#0000 55%),radial-gradient(at 0 100%,#ffffff0a 0%,#0000 55%);position:absolute;inset:0}.avatar.xlarge{border:4px solid #ffffff4d;flex-shrink:0;width:88px;height:88px;font-size:38px;position:relative}.avatar.large{border:3px solid #fff6;flex-shrink:0;width:64px;height:64px;font-size:28px}.campaign-name{font-family:var(--heading);color:#fff;letter-spacing:3px;text-transform:uppercase;margin:0;font-size:44px;font-weight:700;line-height:1;position:relative}.campaign-slogan{color:#ffffffb3;margin:0;font-size:15px;font-style:italic;position:relative}.campaign-stats{background:#0003;border-radius:10px;align-items:center;width:100%;padding:16px 0;display:flex;position:relative}.campaign-stat{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.campaign-stat-val{font-family:var(--heading);color:#fff;font-size:30px;font-weight:700;line-height:1}.campaign-stat-lbl{color:#ffffff8c;text-transform:uppercase;letter-spacing:.6px;font-size:10px;font-weight:600}.campaign-stat-divider{background:#ffffff26;flex-shrink:0;width:1px;height:40px}.campaign-points{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.campaign-point{border-bottom:1px solid var(--border);align-items:center;transition:background .15s;display:flex}.campaign-point:last-child{border-bottom:none}.campaign-point:hover{background:var(--accent-bg)}.campaign-num{font-family:var(--heading);text-align:center;opacity:.85;flex-shrink:0;width:80px;padding:20px 0;font-size:32px;font-weight:700;line-height:1}.campaign-point-body{border-left:1px solid var(--border);flex-direction:column;flex:1;gap:3px;padding:18px 16px;display:flex}.campaign-point-body strong{color:var(--text-h);font-size:15px;font-weight:600}.candidate-card{background:var(--bleu);border-radius:var(--radius);border-bottom:4px solid var(--rouge);flex-direction:column;gap:20px;padding:24px;display:flex;position:relative;overflow:hidden}.candidate-card:after{content:"";background:linear-gradient(to right, var(--bleu) 33.3%, #fff 33.3% 66.6%, var(--rouge) 66.6%);height:4px;position:absolute;bottom:0;left:0;right:0}.candidate-card-top{align-items:center;gap:16px;display:flex}.candidate-info h1{color:#fff;margin:0;font-size:22px}.candidate-info .slogan{color:#ffffffb3;margin-top:3px;font-size:13px;font-style:italic}.level-progress{flex-direction:column;gap:8px;display:flex}.level-progress-label{justify-content:space-between;align-items:center;display:flex}.level-title{color:#fff;font-size:13px;font-weight:700}.level-next{color:#fff9;font-size:12px}.level-max{color:#ffffffb3;font-size:12px}.level-bar-track{background:#fff3;border-radius:99px;height:6px;overflow:hidden}.level-bar-fill{background:#fff;border-radius:99px;min-width:4px;height:100%;transition:width .6s}.stat-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat-item{background:#ffffff1a;border:1px solid #ffffff26;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:10px 8px;display:flex}.stat-value{color:#fff;font-size:20px;font-weight:800;line-height:1}.stat-label{color:#fff9;text-transform:uppercase;letter-spacing:.4px;text-align:center;font-size:10px;font-weight:600}.section-header{border-left:4px solid var(--rouge);justify-content:space-between;align-items:center;padding-left:12px;display:flex}.section-header h2{margin:0;font-size:16px}.edit-btn{border:1px solid var(--border);cursor:pointer;color:var(--text-h);background:0 0;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}.no-program{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;background:var(--surface);flex-direction:column;align-items:center;gap:12px;padding:48px 24px;display:flex}.no-program-icon{font-size:40px;line-height:1}.no-program h2{margin:0;font-size:18px}.no-program p{color:var(--text);font-size:14px}.no-program button{background:var(--bleu);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;margin-top:4px;padding:12px 28px;font-size:15px;font-weight:700;transition:opacity .15s}.no-program button:hover{opacity:.88}.program-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:16px;padding:20px;display:flex}.program-status-bar{align-items:center;display:flex}.rejection-notice{border-left:4px solid var(--rouge);color:#991b1b;background:#fee2e2;border-radius:6px;padding:12px 16px;font-size:14px}.rejection-banner{border-left:4px solid var(--rouge);color:#991b1b;background:#fee2e2;border-radius:6px;margin-bottom:8px;padding:14px 18px;font-size:15px}.duel-btn{background:var(--rouge);color:#fff;border-radius:var(--radius);cursor:pointer;letter-spacing:.2px;border:none;width:100%;padding:15px;font-size:16px;font-weight:700;transition:opacity .15s}.duel-btn:hover{opacity:.88}.admin-link{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text);width:100%;box-shadow:var(--shadow);border-radius:8px;padding:12px;font-size:14px;font-weight:600}.points-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.points-list li{border:1px solid var(--border);border-radius:8px;align-items:center;gap:0;display:flex;overflow:hidden}.point-num{width:36px;min-height:48px;font-family:var(--heading);color:#fff;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex}.points-list li:first-child .point-num{background:var(--cat-economie)}.points-list li:nth-child(2) .point-num{background:var(--cat-education)}.points-list li:nth-child(3) .point-num{background:var(--cat-environnement)}.points-list li:nth-child(4) .point-num{background:var(--cat-sante)}.points-list li:nth-child(5) .point-num{background:var(--cat-securite)}.points-list li:nth-child(6) .point-num{background:var(--cat-societe)}.point-content{background:var(--surface);flex-direction:column;flex:1;gap:1px;padding:10px 14px;display:flex}.category{text-transform:uppercase;letter-spacing:.8px;font-size:10px;font-weight:700}.points-list li:first-child .category{color:var(--cat-economie)}.points-list li:nth-child(2) .category{color:var(--cat-education)}.points-list li:nth-child(3) .category{color:var(--cat-environnement)}.points-list li:nth-child(4) .category{color:var(--cat-sante)}.points-list li:nth-child(5) .category{color:var(--cat-securite)}.points-list li:nth-child(6) .category{color:var(--cat-societe)}.points-list strong{color:var(--text-h);font-size:14px;font-weight:600}.program-form-page{flex-direction:column;gap:20px;display:flex}.form-hook{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:16px 0 8px;display:flex}.form-hook-label{font-family:var(--heading);letter-spacing:3px;text-transform:uppercase;color:var(--rouge);font-size:12px;font-weight:700}.form-hook-title{font-family:var(--heading);color:var(--text-h);text-transform:uppercase;letter-spacing:1px;margin:0;font-size:52px;font-weight:700;line-height:1.1}.form-hook-sub{color:var(--text);max-width:440px;font-size:17px;line-height:1.7}.form-explainer{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:0;display:flex;overflow:hidden}.form-explainer-item{border-bottom:1px solid var(--border);align-items:flex-start;gap:16px;padding:18px 20px;display:flex}.form-explainer-item:last-child{border-bottom:none}.form-explainer-icon{flex-shrink:0;margin-top:2px;font-size:22px}.form-explainer-item strong{color:var(--text-h);margin-bottom:4px;font-size:14px;font-weight:700;display:block}.form-explainer-item p{color:var(--text);font-size:13px;line-height:1.6}.points-questionnaire{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.point-q{border-bottom:1px solid var(--border);flex-direction:column;gap:10px;padding:18px 20px;display:flex}.point-q:last-child{border-bottom:none}.point-q-label{align-items:center;gap:8px;display:flex}.point-q-num{font-family:var(--heading);letter-spacing:1.5px;text-transform:uppercase;color:var(--text-h);flex-shrink:0;font-size:12px;font-weight:700}.point-q-dot{color:var(--border);font-size:14px}.point-q-select{border:1px solid var(--border);width:auto;color:var(--text-h);background:var(--bg);cursor:pointer;border-radius:6px;padding:4px 8px;font-size:13px;font-weight:600}.point-q-input{border:none;border-bottom:2px solid var(--border);width:100%;color:var(--text-h);font-size:15px;font-family:var(--sans);background:0 0;border-radius:0;padding:6px 0;transition:border-color .15s}.point-q-input:focus{border-bottom-color:var(--bleu);box-shadow:none;outline:none}.duel-page{flex-direction:column;justify-content:center;gap:48px;min-height:calc(100svh - 205px);display:flex}.duel-loading{text-align:center;color:var(--text);padding:60px 0}.duel-hero{text-align:center}.duel-hero h1{margin-bottom:10px;font-size:52px}.duel-hero p{color:var(--text);font-size:20px}.marianne-fixed{object-fit:contain;pointer-events:none;z-index:0;width:calc(50vw - 530px);height:72vh;position:fixed;top:50%;transform:translateY(-50%)}.marianne-fixed.left{object-position:center center;left:0}.marianne-fixed.right{object-position:center center;right:0}@media (width<=1100px){.marianne-fixed{display:none}}.duel-arena{align-items:stretch;gap:16px;min-width:0;min-height:580px;display:flex}.duel-card{flex:1}@media (width<=700px){.marianne-img{display:none}.duel-arena{flex-direction:column}.vs-badge{align-self:center}.duel-contexts{flex-direction:column;gap:8px}.duel-contexts-spacer{display:none}}.vs-badge{background:var(--rouge);color:#fff;width:56px;height:56px;font-family:var(--heading);letter-spacing:1px;border-radius:50%;flex-shrink:0;justify-content:center;align-self:center;align-items:center;font-size:17px;font-weight:700;display:flex;box-shadow:0 4px 20px #e1000f59}.duel-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:20px;min-width:0;padding:28px 24px;transition:box-shadow .2s,opacity .2s;display:flex;position:relative}.duel-card.left{border-top:4px solid var(--bleu)}.duel-card.right{border-top:4px solid var(--rouge)}.duel-card.winner{background:#f0fdf4;border-color:#16a34a}.duel-card.loser{opacity:.45}.duel-card-candidate{align-items:center;gap:12px;display:flex}.avatar.medium{border-width:3px;flex-shrink:0;width:52px;height:52px;font-size:22px}.duel-candidate-info{flex-direction:column;gap:3px;display:flex}.duel-name{color:var(--text-h);font-size:22px;font-weight:700}.duel-slogan{color:var(--text);font-size:15px;font-style:italic}.level-badge{background:var(--accent-bg);color:var(--bleu);border-radius:99px;margin-top:2px;padding:3px 10px;font-size:13px;font-weight:700;display:inline-block}.duel-points{flex-direction:column;flex:1;gap:8px;margin:0;padding:0;list-style:none;display:flex}.duel-point-row{align-items:flex-start;gap:10px;display:flex}.duel-cat-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.duel-point-text{flex-direction:column;gap:1px;display:flex}.duel-point-text .category{letter-spacing:.5px;text-transform:uppercase;font-size:12px;font-weight:700}.duel-point-text span:last-child{color:var(--text-h);font-size:16px;font-weight:500;line-height:1.4}.duel-match{flex-direction:column;gap:4px;display:flex}.duel-contexts{gap:16px;display:flex}.duel-contexts-spacer{flex-shrink:0;width:50px}.duel-contexts .ai-context-card,.duel-contexts .ai-context-empty{flex:1;min-width:0}.ai-context-card{background:#00000008;border-left:3px solid #e5e7eb;border-radius:0 6px 6px 0;margin-top:10px;padding:10px 12px}.ai-context-label{letter-spacing:.5px;text-transform:uppercase;color:#9ca3af;margin-bottom:3px;font-size:.7rem;font-weight:700;display:block}.ai-context-reform{color:#374151;margin:0 0 4px;font-size:.82rem;font-weight:600}.ai-context-text{color:#6b7280;margin:0;font-size:.82rem;font-style:italic;line-height:1.5}.duel-card-actions{flex-direction:column;gap:8px;margin-top:auto;display:flex}.duel-vote-btn{border-radius:var(--radius);cursor:pointer;color:#fff;width:100%;font-size:15px;font-weight:700;font-family:var(--sans);border:none;padding:13px;transition:opacity .15s,transform .1s}.duel-vote-btn:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.duel-vote-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.duel-vote-btn.left{background:var(--bleu)}.duel-vote-btn.right{background:var(--rouge)}.verdict{text-transform:uppercase;letter-spacing:.3px;border-radius:99px;padding:3px 10px;font-size:11px;font-weight:800;position:absolute;top:12px;right:12px}.winner-label{color:#fff;background:#16a34a}.loser-label{background:var(--border);color:var(--text)}.duel-result{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;align-items:center;gap:12px;padding:24px;display:flex}.duel-result p{color:var(--text-h)}.duel-result button{background:var(--bleu);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;padding:11px 28px;font-size:15px;font-weight:700;transition:opacity .15s}.duel-result button:hover{opacity:.88}.duel-exhausted{text-align:center;flex:1;justify-content:center;align-items:center;gap:12px}.duel-exhausted h2{margin-bottom:8px}.duel-exhausted button{border:1px solid var(--border);cursor:pointer;color:var(--text-h);background:0 0;border-radius:8px;padding:10px 24px;font-size:14px}.admin-page{flex-direction:column;gap:20px;display:flex}.admin-tabs{border-bottom:2px solid var(--border);gap:4px;display:flex}.admin-tabs button{color:var(--text);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;align-items:center;gap:6px;margin-bottom:-2px;padding:10px 20px;font-size:15px;font-weight:600;transition:color .15s;display:flex}.admin-tabs button.active{color:var(--bleu);border-bottom-color:var(--bleu)}.badge{background:var(--rouge);color:#fff;border-radius:99px;padding:2px 7px;font-size:11px;font-weight:800}.program-list{flex-direction:column;gap:16px;display:flex}.program-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:16px;padding:20px;display:flex}.program-header{flex-direction:column;gap:3px;display:flex}.program-header strong{color:var(--text-h);font-size:17px;font-weight:700}.program-header em{color:var(--text);font-size:13px;font-style:italic}.program-header .date{color:var(--text);font-size:12px}.moderation-actions{flex-wrap:wrap;align-items:flex-start;gap:10px;display:flex}.moderation-actions .approve{color:#fff;cursor:pointer;white-space:nowrap;background:#16a34a;border:none;border-radius:8px;padding:8px 20px;font-size:14px;font-weight:700}.reject-group{flex-direction:column;flex:1;gap:8px;min-width:180px;display:flex}.reject-group .reject{background:var(--rouge);color:#fff;cursor:pointer;border:none;border-radius:8px;align-self:flex-start;padding:8px 20px;font-size:14px;font-weight:700}.reject-group .reject:disabled{opacity:.4;cursor:not-allowed}.ban-trigger{border:1.5px solid var(--rouge);color:var(--rouge);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:700}.ban-confirm,.reset-confirm{border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;width:100%;padding:10px 14px;font-size:13px;display:flex}.ban-confirm{color:#991b1b;background:#fee2e2}.reset-confirm{color:#854d0e;background:#fef9c3}.ban-confirm .ban,.reset-confirm .ban{background:var(--rouge);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:700}.ban-confirm .cancel,.reset-confirm .cancel{cursor:pointer;color:inherit;background:0 0;border:1px solid;border-radius:6px;padding:6px 14px;font-size:13px}.users-list{flex-direction:column;gap:10px;display:flex}.search-input{border:1.5px solid var(--border);background:var(--surface);width:100%;color:var(--text-h);border-radius:8px;padding:10px 14px;font-size:15px}.search-input:focus{border-color:var(--bleu);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.user-row{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.user-row.banned{opacity:.5}.user-info{flex-direction:column;gap:2px;display:flex}.user-info strong{color:var(--text-h);font-size:15px;font-weight:700}.user-info span{color:var(--text);font-size:13px}.reset-btn{border:1px solid var(--border);cursor:pointer;color:var(--text-h);white-space:nowrap;background:0 0;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600}.status-badge{text-transform:uppercase;letter-spacing:.3px;border-radius:99px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.status-badge.pending{color:#92400e;background:#fef3c7}.status-badge.approved{color:#166534;background:#dcfce7}.status-badge.rejected{color:#991b1b;background:#fee2e2}.banned-page{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:60px 20px;display:flex}.banned-page h1{color:var(--rouge)}.banned-page p{color:var(--text);max-width:360px}.banned-page button{background:var(--border);cursor:pointer;color:var(--text-h);border:none;border-radius:8px;margin-top:8px;padding:10px 24px;font-size:14px}.leaderboard-page{flex-direction:column;gap:16px;display:flex}.leaderboard-hero{background:var(--bleu);border-radius:var(--radius);color:#fff;border-bottom:4px solid var(--rouge);padding:20px 24px;position:relative;overflow:hidden}.leaderboard-hero:after{content:"";background:linear-gradient(to right, var(--bleu) 33.3%, #fff 33.3% 66.6%, var(--rouge) 66.6%);height:4px;position:absolute;bottom:0;left:0;right:0}.leaderboard-hero h1{color:#fff;margin-bottom:4px;font-size:28px}.leaderboard-hero p{color:#ffffffbf;font-size:14px}.leaderboard-hero strong{color:#fff}.leaderboard-list{flex-direction:column;gap:8px;display:flex}.leaderboard-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:12px;padding:12px 16px;transition:box-shadow .15s;display:flex}.leaderboard-row:hover{box-shadow:var(--shadow-hover)}.leaderboard-row.is-me{border-color:var(--bleu);background:var(--accent-bg)}.rank{text-align:center;flex-shrink:0;width:36px;font-size:20px}.rank-num{color:var(--text);font-size:13px;font-weight:800}.row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.row-name{align-items:center;gap:6px;display:flex}.row-name strong{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.me-badge{background:var(--bleu);color:#fff;border-radius:99px;flex-shrink:0;padding:1px 7px;font-size:11px;font-weight:700}.row-level{color:var(--text);font-size:12px}.row-elo{flex-direction:column;flex-shrink:0;align-items:center;gap:1px;display:flex}.elo-value{color:var(--text-h);font-size:18px;font-weight:800;line-height:1}.elo-label{color:var(--text);text-transform:uppercase;letter-spacing:.4px;font-size:10px;font-weight:600}.friend-btn{cursor:pointer;border:none;border-radius:8px;flex-shrink:0;padding:6px 12px;font-size:13px;font-weight:700;transition:opacity .15s}.friend-btn:hover{opacity:.85}.friend-btn.add{background:var(--bleu);color:#fff}.friend-btn.remove{background:var(--border);color:var(--text-h)}.friends-empty{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.friends-empty p{color:var(--text);font-size:14px}.profile-page{flex-direction:column;gap:20px;display:flex}.friend-toggle-btn{border-radius:var(--radius);cursor:pointer;color:#fff;background:#ffffff1f;border:1.5px solid #fff6;padding:10px;font-size:14px;font-weight:700;transition:background .15s}.friend-toggle-btn:hover{background:#ffffff38}.username-link{color:var(--text-h);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-size:15px;font-weight:700;transition:color .15s}.username-link:hover{color:var(--bleu);text-decoration:underline}.friend-add-block{flex-direction:column;gap:10px;display:flex}.friend-search-row{gap:8px;display:flex}.friend-search-row .search-input{flex:1}.friend-search-btn{background:var(--bleu);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:10px 18px;font-size:14px;font-weight:700;transition:opacity .15s}.friend-search-btn:disabled{opacity:.5}.friend-results{flex-direction:column;gap:6px;display:flex}.friend-result-row{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:10px 14px;display:flex}.friend-result-name{color:var(--text-h);flex:1;font-size:14px;font-weight:600}.friend-result-elo{color:var(--text);font-size:13px}.friends-empty button{color:var(--bleu);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:700;text-decoration:underline}.empty{color:var(--text);text-align:center;padding:40px 0}.legal-page{flex-direction:column;gap:20px;max-width:700px;margin:0 auto;display:flex}.legal-tabs{flex-wrap:wrap;gap:4px;display:flex}.legal-tab{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.legal-tab:hover{border-color:var(--bleu);color:var(--bleu)}.legal-tab.active{background:var(--bleu);color:#fff;border-color:var(--bleu)}.legal-content{flex-direction:column;gap:0;line-height:1.7;display:flex}.legal-content h1{border-bottom:2px solid var(--border);margin-bottom:24px;padding-bottom:16px;font-size:24px}.legal-content h2{color:var(--text-h);margin:24px 0 8px;font-size:15px}.legal-content p,.legal-content ul{color:var(--text);margin:0 0 8px;font-size:14px}.legal-content ul{flex-direction:column;gap:4px;padding-left:20px;display:flex}.rules-page{flex-direction:column;gap:40px;max-width:720px;margin:0 auto;padding:48px 24px 80px;display:flex}.rules-page h1{font-family:var(--heading);color:var(--text-h);text-align:center;margin:0;font-size:32px}.rules-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:12px;padding:28px 32px;display:flex}.rules-icon{font-size:28px;line-height:1}.rules-section h2{font-family:var(--heading);color:var(--text-h);margin:0;font-size:20px}.rules-section p{color:var(--text);margin:0;line-height:1.6}.rules-section ul{color:var(--text);flex-direction:column;gap:8px;margin:0;padding-left:20px;line-height:1.6;display:flex}.rules-levels{flex-direction:column;gap:8px;margin-top:4px;display:flex}.rules-level-row{background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.rules-level-title{color:var(--text-h);font-weight:600}.rules-level-elo{color:var(--bleu);font-size:13px;font-weight:600}.footer{z-index:10;background:var(--bleu);border-top:4px solid var(--rouge);position:fixed;bottom:0;left:0;right:0}.footer-inner{flex-direction:column;align-items:center;gap:12px;max-width:860px;margin:0 auto;padding:20px;display:flex}.footer-top{align-items:center;gap:12px;display:flex}.footer-links{align-items:center;gap:16px;display:flex}.footer-legal-link{color:#ffffff80;cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;transition:color .15s}.footer-legal-link:hover{color:#ffffffd9}.footer-brand{font-family:var(--heading);color:#fff;letter-spacing:.5px;text-transform:uppercase;font-size:15px;font-weight:700}.footer-sep{color:#ffffff4d}.footer-copy{color:#fff9}.footer-site-link{color:#fff9;font-size:14px;text-decoration:none;transition:color .15s}.footer-site-link:hover{color:#fff}.cookie-banner{z-index:200;background:var(--surface);border-top:3px solid var(--bleu);padding:16px 20px;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 24px #0000001f}.cookie-banner-inner{flex-wrap:wrap;align-items:center;gap:24px;max-width:860px;margin:0 auto;display:flex}.cookie-banner-text{flex-direction:column;flex:1;gap:4px;min-width:200px;display:flex}.cookie-banner-text strong{color:var(--text-h);font-size:14px}.cookie-banner-text p{color:var(--text);font-size:13px;line-height:1.5}.cookie-banner-actions{flex-shrink:0;gap:10px;display:flex}.cookie-refuse{border:1.5px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:9px 20px;font-size:14px;font-weight:600;transition:border-color .15s,color .15s}.cookie-refuse:hover{border-color:var(--text-h);color:var(--text-h)}.cookie-accept{background:var(--bleu);border:1.5px solid var(--bleu);color:#fff;cursor:pointer;border-radius:8px;padding:9px 20px;font-size:14px;font-weight:700;transition:opacity .15s}.cookie-accept:hover{opacity:.88}@media (width<=480px){.cookie-banner-inner{flex-direction:column;align-items:stretch;gap:12px}.cookie-banner-actions{justify-content:stretch}.cookie-refuse,.cookie-accept{text-align:center;flex:1}}@media (width<=599px){.navbar-center{display:none}}@media (width<=399px){.navbar-brand span{display:none}.navbar-logout{padding:5px 8px;font-size:12px}}@media (width<=480px){.home-intro-title{letter-spacing:.5px;font-size:28px}.form-hook-title{letter-spacing:0;font-size:30px}.campaign-name{letter-spacing:1px;overflow-wrap:break-word;font-size:24px}.duel-hero h1{font-size:28px}.duel-hero p{font-size:16px}.campaign-num{width:56px;font-size:22px}}@media (width<=380px){.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=599px){.footer-top{text-align:center;flex-wrap:wrap;justify-content:center;gap:6px}.footer-links{flex-wrap:wrap;justify-content:center;gap:8px}.main-content{padding-bottom:140px}}
