:root{--color-bg: #f0f0f0;--color-white: #ffffff;--color-text: #222222;--color-text-secondary: #575760;--color-accent: #1e73be;--color-accent-hover: #155a96;--color-border: #e0e0e0;--max-width: 1200px;--header-height: 70px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 20px)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:1.7;color:var(--color-text);background-color:var(--color-bg)}a{color:var(--color-accent);text-decoration:none;transition:color .2s}a:hover{color:var(--color-accent-hover);text-decoration:underline}h1,h2,h3,h4{line-height:1.3;font-weight:700}h1{font-size:2.4rem}h2{font-size:1.8rem}h3{font-size:1.3rem}.site-header{position:sticky;top:0;z-index:999;background:var(--color-white);box-shadow:0 2px 4px #00000014;height:var(--header-height)}.header-inner{max-width:var(--max-width);margin:0 auto;padding:0 40px;display:flex;align-items:center;justify-content:space-between;height:100%}.site-logo{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--color-text)}.site-logo img{height:50px;width:auto;max-width:300px;object-fit:contain}.site-nav{display:flex;gap:28px;align-items:center}.site-nav a{color:var(--color-text);font-size:.95rem;font-weight:500;padding:6px 0;border-bottom:2px solid transparent;transition:border-color .2s,color .2s}.site-nav a:hover,.site-nav a.active{color:var(--color-accent);border-bottom-color:var(--color-accent);text-decoration:none}.menu-toggle{display:none;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text)}.main-content{max-width:var(--max-width);margin:0 auto;padding:40px}.content-block{background:var(--color-white);border-radius:6px;padding:40px;margin-bottom:30px}.toc{background:var(--color-white);border-radius:6px;padding:30px 40px;margin-bottom:30px;border-left:4px solid var(--color-accent)}.toc h2{font-size:1.2rem;margin-bottom:15px;color:var(--color-text)}.toc ol{padding-left:20px}.toc li{margin-bottom:8px}.toc a{font-size:.95rem;color:var(--color-text-secondary)}.toc a:hover{color:var(--color-accent)}.affair-section{background:var(--color-white);border-radius:10px;padding:28px 36px 32px;margin-bottom:24px;border:1px solid var(--color-border);border-left-width:5px;box-shadow:0 1px 3px #0000000a;scroll-margin-top:calc(var(--header-height) + 20px)}.affair-section h2{text-align:left;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--color-border);font-size:1.25rem;line-height:1.35;color:var(--color-text)}.affair-section h3{color:var(--color-text);margin-top:22px;margin-bottom:10px;font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:8px}.affair-section h3:before{content:"";width:4px;height:1em;border-radius:2px;background:var(--color-accent)}.affair-section p{margin-bottom:14px;color:var(--color-text-secondary);line-height:1.65;max-width:72ch}.affair-section blockquote{border-left:4px solid var(--color-accent);padding:12px 20px;margin:16px 0;background:#f8f9fa;font-style:italic;color:var(--color-text-secondary);border-radius:0 6px 6px 0}.sources{margin-top:20px;padding-top:15px;border-top:1px solid var(--color-border)}.sources h4{font-size:.9rem;color:var(--color-text-secondary);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.sources ul{list-style:none;padding:0}.sources li{font-size:.85rem;margin-bottom:8px;padding-left:15px;position:relative;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sources li:before{content:"→";position:absolute;left:0;color:var(--color-accent)}.sources-legend{font-size:.75rem;color:#888;margin-bottom:10px;font-style:italic}.source-lean{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:4px;flex-shrink:0}.source-lean-gauche{background:#ffebee;color:#c62828}.source-lean-droite{background:#e3f2fd;color:#1565c0}.source-lean-centre{background:#f5f5f5;color:#616161}.candidates-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.site-footer{max-width:var(--max-width);margin:0 auto;padding:30px 40px;text-align:center;color:var(--color-text-secondary);font-size:.85rem;border-top:1px solid var(--color-border)}.site-footer a{color:var(--color-text-secondary)}.site-footer a:hover{color:var(--color-accent)}.hero{background:var(--color-white);border-radius:6px;padding:50px 40px;text-align:center;margin-bottom:30px}.hero-logo{display:block;margin:0 auto 20px;max-width:120px;height:auto;border-radius:8px}.hero h1{margin-bottom:15px}.hero p{max-width:700px;margin:0 auto;color:var(--color-text-secondary);font-size:1.1rem}.hero .subtitle{font-size:1.2rem;color:var(--color-text);font-weight:500;margin-bottom:8px}.candidate-header{background:var(--color-white);border-radius:10px;padding:36px 40px 32px;margin-bottom:24px;text-align:center;box-shadow:0 1px 3px #0000000f;border:1px solid var(--color-border)}.candidate-header h1{margin-bottom:6px;font-size:2rem;letter-spacing:-.02em}.candidate-header .party-label{font-size:1rem;color:var(--color-text-secondary);margin-bottom:16px;font-weight:600}.candidate-header .summary{max-width:640px;margin:0 auto;color:var(--color-text-secondary);line-height:1.65;font-size:.95rem}.disclaimer{background:#e8f4fd;border:1px solid #b8daff;border-radius:8px;padding:14px 24px;margin-bottom:28px;font-size:.84rem;color:#004085;text-align:center;line-height:1.5}.main-content:has(.candidate-header) .toc{border-radius:10px;box-shadow:0 2px 8px #0000000f;padding:22px 24px 26px;margin-bottom:28px}.main-content:has(.candidate-header) .toc h2{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);margin-bottom:8px;padding-bottom:10px;border-bottom:2px solid var(--color-accent)}.main-content:has(.candidate-header) .toc-desc{font-size:.8rem;color:var(--color-text-secondary);line-height:1.45;margin-bottom:16px}.main-content:has(.candidate-header) .toc-list{padding-left:0;margin:0;list-style:none}.main-content:has(.candidate-header) .toc-item{margin-bottom:10px}.main-content:has(.candidate-header) .toc-item:last-child{margin-bottom:0}.main-content:has(.candidate-header) .toc-link{display:flex;align-items:center;gap:12px;padding:12px 14px 12px 12px;border-radius:8px;background:#fafafa;border:1px solid #eee;font-size:.9rem;line-height:1.4;color:var(--color-text);text-decoration:none;transition:background .15s,border-color .15s;min-height:48px}.main-content:has(.candidate-header) .toc-link:hover{background:#f0f4f8;border-color:var(--color-accent);color:var(--color-text)}.main-content:has(.candidate-header) .toc-num{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--color-accent);color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1}.main-content:has(.candidate-header) .toc-implication-bar{flex-shrink:0;width:44px;min-width:44px;height:6px;border-radius:3px;overflow:hidden;background:#e5e5e5}.main-content:has(.candidate-header) .toc-implication-fill{display:block;height:100%;border-radius:3px;min-width:2px;transition:width .2s ease}.main-content:has(.candidate-header) .toc-title{flex:1;font-weight:500;min-width:0}.main-content:has(.candidate-header) .toc-pct{flex-shrink:0;font-size:.8rem;font-weight:700;color:var(--color-text-secondary)}@media(max-width:768px){.main-content{padding:20px}.content-block,.affair-section,.hero,.candidate-header{padding:25px 20px}.header-inner{padding:0 20px}.site-nav{display:none;position:absolute;top:var(--header-height);left:0;right:0;background:var(--color-white);flex-direction:column;padding:20px;gap:15px;box-shadow:0 4px 6px #0000001a}.site-nav.open{display:flex}.menu-toggle{display:block}h1{font-size:1.8rem}h2{font-size:1.4rem}.candidates-grid{grid-template-columns:1fr;gap:16px}}@media(min-width:769px)and (max-width:1024px){.candidates-grid{grid-template-columns:repeat(2,1fr)}}
