/* ---- Logo image (remplace le logo CSS générique) ---- */
.brand-logo{height:44px;width:auto;display:block;object-fit:contain}.footer-brand-logo{height:36px;filter:none}
:root{--green:#188a45;--deep:#086338;--lime:#d8edda;--gold:#f2c318;--ink:#18251e;--muted:#727a75;--paper:#f6f8f4;--line:#e2e8e1;--white:#fff;--serif:"Manrope",sans-serif;--body:"DM Sans",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--white);color:var(--ink);font-family:var(--body);font-size:15px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.site-header{height:88px;padding:0 clamp(24px,6vw,100px);display:flex;align-items:center;justify-content:space-between;background:#fff;position:relative;z-index:10;border-bottom:1px solid #edf0eb}.brand{display:flex;align-items:center;gap:13px}.brand-mark{width:45px;height:34px;position:relative;display:block;transform:rotate(-8deg)}.brand-mark:before{content:"";position:absolute;left:0;top:4px;width:0;height:0;border-top:17px solid transparent;border-bottom:9px solid transparent;border-right:37px solid var(--green);transform:rotate(-12deg)}.brand-mark:after{content:"";position:absolute;left:3px;top:1px;width:0;height:0;border-left:10px solid transparent;border-right:11px solid transparent;border-bottom:20px solid var(--gold);transform:rotate(27deg)}.brand-mark span{position:absolute;width:29px;height:11px;background:#df3041;left:14px;top:20px;transform:skew(-25deg) rotate(-10deg);clip-path:polygon(0 0,100% 14%,52% 100%,10% 70%)}.brand-name{font:800 19px var(--serif);letter-spacing:.03em;color:var(--green);line-height:1.1}.brand-name small{display:block;font:700 8px var(--body);letter-spacing:.2em;color:#7b827d;margin-top:4px}.main-nav{display:flex;gap:33px;align-items:center;font-size:13px;font-weight:600;color:#38453d}.main-nav a:not(.nav-vote):hover,.nav-link:hover{color:var(--green)}.nav-vote{color:white;background:var(--green);padding:14px 21px;border-radius:3px}.nav-vote span{margin-left:13px}.nav-login{border-left:1px solid var(--line);padding-left:28px}.logout-form{margin:0}.nav-link{border:0;background:none;padding:0;color:inherit;font:inherit;cursor:pointer}.menu-toggle{display:none}.hero{position:relative;overflow:hidden;min-height:600px;background:linear-gradient(110deg,#0b5531 0%,#178643 52%,#81ba73 100%);color:#fff;padding:100px clamp(24px,9vw,145px) 75px}.hero:before{content:"";position:absolute;width:690px;height:690px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:6%;top:-300px}.hero:after{content:"";position:absolute;width:470px;height:470px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:13%;top:-180px}.hero-inner{position:relative;z-index:2;max-width:690px}.eyebrow{display:inline-flex;align-items:center;gap:10px;color:var(--green);font-size:10px;font-weight:800;letter-spacing:.19em}.hero .eyebrow{color:#ffe05a}.hero .eyebrow i{height:7px;width:7px;background:#f5d225;border-radius:50%}.hero h1,.page-hero h1,.login-card h1{font:800 clamp(48px,7vw,86px)/1.04 var(--serif);letter-spacing:-.06em;margin:27px 0 19px}.hero h1 span{color:#f4d03b}.hero-inner>p{max-width:525px;color:rgba(255,255,255,.8);font-size:17px;line-height:1.8}.hero-actions{display:flex;gap:14px;margin-top:33px}.button{min-height:50px;display:inline-flex;justify-content:center;align-items:center;gap:25px;padding:0 21px;border:1px solid transparent;border-radius:3px;font:700 12px var(--body);letter-spacing:.02em;cursor:pointer;transition:.2s}.button-primary{background:var(--green);color:#fff}.button-primary:hover{background:var(--deep);transform:translateY(-1px)}.hero .button-primary{background:#f5d02c;color:#16231b}.hero .button-primary:hover{background:#ffdf49}.button-ghost{border-color:rgba(255,255,255,.65);color:#fff;background:transparent}.button-ghost:hover{background:rgba(255,255,255,.12)}.button-light{background:#fff;color:var(--deep)}.hero-note{margin-top:43px;color:rgba(255,255,255,.68);font-size:11px;letter-spacing:.05em}.status-dot{display:inline-block;width:7px;height:7px;background:#f4d33b;border-radius:50%;margin-right:9px}.hero-seal{position:absolute;right:12%;top:34%;width:182px;height:182px;border:1px solid rgba(255,255,255,.35);border-radius:50%;display:grid;place-content:center;text-align:center;color:#fff9}.hero-seal:before{content:"";position:absolute;inset:10px;border:1px solid rgba(255,255,255,.23);border-radius:50%}.hero-seal span{font-size:10px;font-weight:800;letter-spacing:.22em;line-height:1.8}.hero-seal b{font-size:34px;color:#f5d02c;margin-top:8px}.hero-bottom{position:absolute;bottom:24px;left:clamp(24px,9vw,145px);right:clamp(24px,9vw,145px);display:flex;justify-content:space-between;border-top:1px solid rgba(255,255,255,.25);padding-top:15px;font-size:9px;letter-spacing:.16em;color:#ffffffa8}.intro{padding-top:113px;padding-bottom:115px}.section-shell{width:min(1150px,calc(100% - 48px));margin:0 auto}.intro-label{display:flex;align-items:center;gap:25px}.tiny-line{width:54px;height:1px;background:var(--gold)}.intro-copy{display:grid;grid-template-columns:1fr .65fr;gap:90px;align-items:end;margin-top:20px}.intro-copy h2,.section-heading h2,.contact-card h2,.vote-card h2{font:700 clamp(32px,4.2vw,51px)/1.18 var(--serif);letter-spacing:-.05em;margin:0}.intro-copy h2 em{font-style:normal;color:var(--green)}.intro-aside p,.candidate-info p{color:var(--muted);line-height:1.8}.text-link{display:inline-flex;gap:15px;align-items:center;font-size:12px;font-weight:700;color:var(--green);margin-top:8px}.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:38px;margin-top:78px}.principles article{border-top:1px solid var(--line);padding-top:19px;position:relative}.principle-index{font-size:10px;letter-spacing:.15em;color:#9ca59e}.principle-icon{float:right;color:var(--green);font-size:22px}.principles h3{font:700 17px var(--serif);margin:30px 0 10px}.principles p{color:var(--muted);font-size:13px;line-height:1.7;max-width:280px}.campaign-banner{min-height:300px;background:var(--green);color:white;padding:65px max(calc((100vw - 1150px)/2),24px);display:flex;align-items:center;justify-content:space-between;position:relative;overflow:hidden}.campaign-banner .eyebrow{color:#f6dc48}.campaign-banner h2{font:700 40px/1.25 var(--serif);letter-spacing:-.04em;margin:20px 0 0}.campaign-banner .button{z-index:1}.banner-decoration{position:absolute;right:7%;bottom:-42px;font:800 160px var(--serif);color:#ffffff0b;letter-spacing:-.08em}.site-footer{min-height:150px;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:30px clamp(24px,6vw,100px);background:#f7f8f5;color:#8a918b;font-size:11px}.footer-brand{filter:grayscale(.2)}.site-footer p{max-width:260px}.page-hero{background:linear-gradient(105deg,#0e6739,#4c9f57);color:#fff;padding:85px 0 90px;position:relative;overflow:hidden}.page-hero:after{content:"";position:absolute;right:5%;top:-130px;width:380px;height:380px;border:1px solid #ffffff26;border-radius:50%;box-shadow:0 0 0 36px #ffffff09,0 0 0 72px #ffffff08}.page-hero .eyebrow{color:#f6dc48}.page-hero h1{font-size:clamp(45px,6vw,70px);margin:23px 0 12px}.page-hero p{max-width:510px;color:#ffffffc7;line-height:1.7}.listing-section,.results-section{padding-top:72px;padding-bottom:100px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:25px;margin-bottom:34px}.section-heading h2{font-size:32px;margin-top:10px}.candidate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.candidate-card{background:#fff;border:1px solid var(--line)}.candidate-photo{height:225px;background:linear-gradient(135deg,#dfeedd,#a6cca1);display:flex;align-items:center;justify-content:center;position:relative;color:#14723b;font:700 80px var(--serif)}.candidate-photo img{width:100%;height:100%;object-fit:cover}.candidate-photo small{position:absolute;left:17px;bottom:15px;font:700 9px var(--body);letter-spacing:.18em;color:#fff;text-shadow:0 1px 4px #143b23}.candidate-info{padding:22px}.candidate-role{color:var(--green);font-size:9px;text-transform:uppercase;font-weight:800;letter-spacing:.17em}.candidate-info h3{font:700 21px var(--serif);margin:8px 0}.candidate-info p{font-size:13px;margin-bottom:0}.empty-state{grid-column:1/-1;text-align:center;background:var(--paper);padding:70px 25px;color:var(--muted)}.empty-state>span{color:var(--green);font-size:34px}.empty-state h3{font:700 22px var(--serif);color:var(--ink);margin:14px 0 5px}.empty-state p{margin:0}.contact-layout,.vote-layout{display:grid;grid-template-columns:1.1fr .75fr;gap:68px;padding-top:70px;padding-bottom:100px}.contact-card,.vote-card,.login-card{border:1px solid var(--line);background:#fff;padding:42px}.contact-card h2,.vote-card h2{font-size:34px;margin:14px 0 25px}.contact-aside,.vote-aside{background:#f2f6ef;padding:42px;align-self:stretch}.contact-aside .principle-icon{float:none;display:block;font-size:32px;margin-bottom:55px}.contact-aside h3,.vote-aside h3,.controller-aside h3{font:700 26px/1.3 var(--serif);letter-spacing:-.04em}.contact-aside p,.muted{color:var(--muted);line-height:1.7}.form-stack{display:flex;flex-direction:column;gap:18px}.form-stack p{margin:0;display:flex;flex-direction:column;gap:8px}.form-stack label,.form-field label{font-weight:700;font-size:12px}.form-stack input:not([type=checkbox]),.form-stack textarea,.form-stack select,.form-field input,.form-field textarea{width:100%;padding:13px 14px;border:1px solid #dce3db;border-radius:3px;background:#fff;font:14px var(--body);color:var(--ink);outline:none}.form-stack input:focus,.form-stack textarea:focus,.form-stack select:focus{border-color:var(--green);box-shadow:0 0 0 3px #188a4517}.form-stack textarea{resize:vertical}.form-stack ul.errorlist{margin:0;padding-left:18px;color:#b83333;font-size:12px}.vote-card{padding:45px}.vote-card .muted{margin-top:-12px;margin-bottom:28px}.form-errors,.field-error{color:#ae3030;font-size:12px}.form-field{display:flex;flex-direction:column;gap:8px}.full-width{width:100%}.privacy-note{font-size:11px;line-height:1.7;color:#858d86;margin:20px 0 0}.vote-aside{position:relative;overflow:hidden}.vote-aside-number{font:800 100px var(--serif);color:#188a4514;position:absolute;right:20px;top:0}.vote-aside ol{padding-left:20px;margin:28px 0;color:#536057}.vote-aside li{padding:0 0 17px 6px;line-height:1.6;font-size:13px}.vote-aside p{font-size:12px;color:var(--muted)}.vote-aside a{color:var(--green);font-weight:700}.success-section{text-align:center;max-width:650px;margin:0 auto;padding:120px 24px 140px}.success-icon{display:grid;place-items:center;width:70px;height:70px;margin:0 auto 28px;border-radius:50%;background:#e4f3e4;color:var(--green);font-size:28px}.success-section h1{font:800 clamp(43px,6vw,68px)/1.08 var(--serif);letter-spacing:-.06em;margin:18px 0}.success-section p{color:var(--muted);line-height:1.8;margin:0 auto 28px}.results-total{font-size:12px;color:var(--muted)}.result-row{display:flex;align-items:center;justify-content:space-between;padding:22px 5px;border-bottom:1px solid var(--line)}.result-row div{display:flex;flex-direction:column;gap:6px}.result-row div span{font-size:12px;color:var(--muted)}.result-row>strong{color:var(--green);font-size:20px}.login-section{padding:80px 24px 100px;background:var(--paper)}.login-card{width:min(510px,100%);margin:auto;padding:45px}.login-card h1{font-size:49px;margin:17px 0}.login-card .muted{margin-top:0;margin-bottom:27px}.controller-header{background:linear-gradient(110deg,#0e6739,#4c9f57);color:white;padding:50px 0}.controller-heading{display:flex;align-items:center;justify-content:space-between}.controller-heading .eyebrow{color:#f6dc48}.controller-heading h1{font:700 clamp(32px,4vw,45px) var(--serif);letter-spacing:-.05em;margin:12px 0}.controller-heading p{color:#ffffffbb;margin:0}.controller-content{padding-top:48px;padding-bottom:90px}.controller-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:30px;align-items:start}.controller-main{display:flex;flex-direction:column;gap:22px}.admin-card{border:1px solid var(--line);padding:26px;background:#fff}.admin-card-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.admin-card-heading h2{font:700 22px var(--serif);margin:8px 0 0}.admin-icon{display:grid;place-items:center;width:39px;height:39px;background:#e8f4e6;color:var(--green);border-radius:50%;font-size:12px;font-weight:700}.compact-form{gap:13px}.compact-form p{gap:6px}.compact-form label{font-size:11px}.compact-form input:not([type=checkbox]),.compact-form textarea,.compact-form select{padding:10px 12px;font-size:13px}.compact-form .button{align-self:start}.state-pill{padding:7px 10px;background:#f0f1ee;color:#7b827d;font-size:10px;font-weight:700}.state-live{background:#e2f4e1;color:var(--green)}.stat-strip{display:flex;gap:40px;background:var(--paper);padding:14px 17px;margin-bottom:20px}.stat-strip div{display:flex;flex-direction:column;gap:5px}.stat-strip strong{font:700 19px var(--serif);color:var(--green)}.stat-strip span{font-size:10px;color:var(--muted)}.checkbox-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}.checkbox-row label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:500}.checkbox-row input{accent-color:var(--green)}.admin-subsection{border-top:1px solid var(--line);margin-top:23px;padding-top:21px}.admin-subsection h3{font:700 16px var(--serif);margin:0 0 14px}.admin-subsection>.muted{font-size:12px}.admin-list-item{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf0eb;padding:11px 0}.admin-list-item>div{display:flex;flex-direction:column;gap:4px}.admin-list-item strong{font-size:12px}.admin-list-item span{font-size:10px;color:var(--muted)}.small-danger{border:0;color:#aa3d32;background:none;font:600 10px var(--body);cursor:pointer}.voter-status{color:#d09d10!important}.voter-status.voted{color:var(--green)!important}.button-outline{background:#fff;border-color:var(--green);color:var(--green)}.button-outline:hover{background:#eff7ee}.controller-aside{background:var(--paper);padding:25px;position:sticky;top:25px}.controller-aside h3{font-size:21px}.controller-aside ul{padding-left:17px;color:#667068;font-size:12px;line-height:1.75}.controller-aside li{padding-bottom:10px}.controller-aside .text-link{font-size:11px}.message-stack{position:relative;z-index:3;padding-top:16px}.flash{padding:13px 16px;font-size:13px;border-left:3px solid var(--green);background:#edf6ed;margin-bottom:8px}.flash.error{border-color:#bc4036;background:#fff0ed}.flash.info{border-color:#d0a817;background:#fff8dc}@media(max-width:800px){.site-header{height:75px;padding:0 22px}.menu-toggle{display:block;border:0;background:none;font-size:24px;color:var(--green)}.main-nav{display:none;position:absolute;top:74px;left:0;right:0;background:white;padding:20px 24px 25px;box-shadow:0 12px 18px #10221416;align-items:stretch;flex-direction:column;gap:20px}.menu-open .main-nav{display:flex}.nav-vote{text-align:center}.nav-login{border:0;padding-left:0}.hero{min-height:590px;padding:84px 28px 85px}.hero-seal{right:8%;top:60%;width:112px;height:112px}.hero-seal span{font-size:8px}.hero-seal b{font-size:21px;margin-top:0}.hero:before{right:-260px}.hero:after{right:-150px}.hero-bottom{left:28px;right:28px;font-size:7px}.intro{padding-top:75px;padding-bottom:76px}.intro-copy{grid-template-columns:1fr;gap:14px}.principles{grid-template-columns:1fr;gap:22px;margin-top:45px}.principles h3{margin-top:20px}.campaign-banner{padding:55px 25px;align-items:flex-start;flex-direction:column;gap:30px}.campaign-banner h2{font-size:34px}.site-footer{flex-direction:column;align-items:flex-start;padding:30px 24px;gap:10px}.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-layout,.vote-layout{grid-template-columns:1fr;gap:22px;padding-top:45px;padding-bottom:65px}.contact-card,.vote-card,.contact-aside,.vote-aside{padding:28px}.controller-grid{grid-template-columns:1fr}.controller-aside{position:static}.controller-heading{align-items:flex-start;gap:20px}.controller-heading>.button{padding:0 12px;min-height:40px;font-size:10px}.stat-strip{gap:20px}}@media(max-width:520px){.hero h1{font-size:49px}.hero-inner>p{font-size:15px}.hero-actions{align-items:stretch;flex-direction:column;max-width:280px}.hero-seal{display:none}.hero-bottom{letter-spacing:.08em}.candidate-grid{grid-template-columns:1fr}.candidate-photo{height:210px}.section-heading{align-items:flex-start;flex-direction:column}.page-hero{padding:65px 0}.page-hero:after{right:-230px}.contact-card h2,.vote-card h2{font-size:29px}.stat-strip{justify-content:space-between;gap:10px;padding:13px 10px}.stat-strip span{font-size:9px}.admin-card{padding:19px}.checkbox-row{grid-template-columns:1fr}.login-card{padding:28px}.login-card h1{font-size:43px}}
