@font-face{font-family:ImpactLocal;src:local("Impact")}
@font-face{font-family:AptosLocal;src:local("Aptos")}
:root{--cream:#FDF7E8;--yellow:#FEC82D;--bright:#1C66F1;--navy:#002771;--red:#E62A29;--title:ImpactLocal,Impact,"Arial Narrow",sans-serif;--body:AptosLocal,Aptos,"Segoe UI",Arial,sans-serif;color:var(--navy);background:var(--cream);font-family:var(--body);font-size:16px;line-height:1.55;scroll-behavior:smooth}
*{box-sizing:border-box}
body{margin:0;background:var(--cream)}
button,input{font:inherit}
a{color:inherit;text-underline-offset:.2em}
a:hover{text-decoration-thickness:3px}
a:focus-visible,button:focus-visible{outline:3px solid var(--red);outline-offset:4px}
.skip{position:absolute;top:-100px;left:1rem;background:var(--yellow);padding:.7rem;z-index:30}
.skip:focus{top:1rem}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.header{display:flex;align-items:center;justify-content:space-between;gap:1.4rem;padding:.9rem clamp(1.25rem,5vw,5rem);background:var(--cream);position:sticky;top:0;z-index:10;border-bottom:2px solid var(--navy)}
.brand{display:block;flex:none;text-decoration:none}
.brand img{display:block;width:190px;height:auto;max-height:85px;object-fit:contain}
nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem 1.1rem}
nav a{font-size:.88rem;font-weight:800;text-decoration:none;line-height:1.3}
nav a:hover{text-decoration:underline;color:var(--red)}
.menu{display:none;background:var(--navy);color:var(--cream);border:2px solid var(--navy);padding:.6rem 1rem;font-weight:800;cursor:pointer}
.hero{min-height:620px;display:grid;grid-template-columns:1.12fr .88fr;gap:2rem;align-items:center;padding:4rem 0 4rem clamp(1.25rem,6vw,7rem)}
.hero-copy{position:relative;z-index:2}
.eyebrow{margin:0 0 1rem;font-size:.88rem;letter-spacing:.045em;text-transform:uppercase;font-weight:800;color:var(--navy)}
.hero h1,.section h2,.contact h2,.dialog-biography h2{font-family:var(--title);font-weight:900;text-transform:uppercase;letter-spacing:.005em}
.hero h1{font-size:clamp(4.2rem,8.1vw,9rem);line-height:.93;margin:1rem 0 2rem}
.hero h1 span{color:var(--red)}
.hero-copy>p:not(.eyebrow){max-width:33rem;font-size:1.25rem;line-height:1.4}
.button{display:inline-block;background:var(--navy);color:var(--cream);padding:.9rem 1.25rem;margin-top:1rem;text-decoration:none;font-weight:800}
.button:hover{background:var(--red)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem}
.button-program{background:var(--yellow);color:var(--navy);border:2px solid var(--navy);padding:calc(.9rem - 2px) calc(1.25rem - 2px)}
.button-program:hover{background:var(--red);color:white}
.hero-visual{height:560px;position:relative;align-self:stretch}
.hero-visual>img{display:block;width:100%;height:100%;object-fit:cover;border-radius:52% 0 0 52%;filter:saturate(1.2)}
.shape{position:absolute;display:block;pointer-events:none}
.shape.semi{width:135px;height:70px;background:var(--yellow);border-radius:135px 135px 0 0;left:-50px;bottom:2rem}
.shape.circle{width:110px;height:110px;background:var(--red);border-radius:50%;right:2rem;top:-2rem}
.shape.star{color:var(--navy);font:bold 150px/1 Arial,sans-serif;left:-40px;top:0}
.shape.arc{width:105px;height:105px;background:var(--bright);border-radius:50% 0 50% 50%;right:0;bottom:4rem}
.values-strip{display:flex;align-items:center;justify-content:space-around;gap:.8rem;flex-wrap:wrap;padding:1rem clamp(1.25rem,6vw,7rem);border-block:2px solid var(--navy);font:clamp(1.25rem,2.5vw,2.5rem)/1.1 var(--title);text-transform:uppercase}
.values-strip b{color:var(--red);font:1.25em/1 Arial,sans-serif}
.section{padding:clamp(3.5rem,6vw,7rem) clamp(1.25rem,6vw,7rem);scroll-margin-top:7rem}
.section h2{font-size:clamp(3rem,5.4vw,6rem);line-height:1.02;margin:0 0 1.4rem}
.section h3{line-height:1.2}
.section-head{display:flex;justify-content:space-between;align-items:start;gap:2rem;margin-bottom:2rem}
.shaded{background:var(--cream)}
/* Presentazione della lista: due colonne di testo come richiesto */
.intro{border-bottom:3px solid var(--navy)}
.intro-heading{margin-bottom:2rem}
.intro-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2rem,5vw,5rem);max-width:1300px}
.intro-column h3{font-size:1.3rem;margin:0 0 .5rem}
.intro-column p+h3{margin-top:1.9rem}
.intro-column p{font-size:1.12rem;line-height:1.7;margin:0 0 1.2rem}
.intro-column strong{font-weight:800;color:var(--navy)}
/* Candidati: elenco completo, pulsanti e profili espandibili */
#candidati{background:var(--yellow)}
.candidate-intro{font-size:1.08rem;max-width:650px;margin:-.7rem 0 1.5rem}
.candidate-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.candidate-list-row{display:grid;grid-template-columns:minmax(0,1fr) 35px;gap:.7rem;align-items:center;background:var(--cream);border:2px solid var(--navy);padding:.7rem;min-width:0}
.candidate-open{border:0;background:transparent;color:var(--navy);display:grid;grid-template-columns:65px minmax(0,1fr) 18px;gap:.8rem;align-items:center;text-align:left;width:100%;min-width:0;min-height:65px;padding:0;cursor:pointer}
.candidate-open:hover .candidate-name,.candidate-open:focus-visible .candidate-name{text-decoration:underline}
.candidate-portrait{width:62px;height:62px;display:grid;place-items:center;overflow:hidden;background:var(--bright);color:white;font-family:var(--title);font-size:1.35rem}
.candidate-portrait img{width:100%;height:100%;object-fit:cover;object-position:center top}
/* Il ritratto è una piccola fotografia su un foglio bianco: avviciniamo il volto mantenendo l'intera testa. */
.candidate-portrait img[src$="floriana-pacelli.jpeg"]{transform:scale(3.1);transform-origin:15% 12%}
.candidate-copy{display:block;min-width:0}
.candidate-name{display:block;font-weight:800;font-size:1.08rem;line-height:1.25}
.candidate-chevron{color:var(--red);font-size:1.7rem}
.linkedin-icon{display:grid;place-items:center;width:34px;height:34px;background:#0a66c2;color:white;border-radius:3px}
.linkedin-icon svg{width:21px;height:21px}
.linkedin-icon[href]:hover{background:var(--navy)}
.linkedin-pending{opacity:.55;cursor:default}
.candidate-dialog{width:min(1050px,calc(100vw - 2rem));max-width:none;max-height:88vh;padding:0;border:3px solid var(--navy);box-shadow:0 20px 70px #001b2f55;color:var(--navy);background:var(--cream)}
.candidate-dialog::backdrop{background:#001b2fcc}
.dialog-shell{display:grid;grid-template-columns:1.1fr .9fr;height:min(85vh,800px);min-height:440px;position:relative}
.dialog-biography{min-height:0;padding:clamp(1.5rem,4vw,3.5rem);overflow:auto}
.dialog-biography h2{font-size:clamp(2.5rem,4vw,4.4rem);line-height:1;margin:.4rem 0 1rem}
.dialog-biography h3{margin:2rem 0 .5rem}
.bio-section h4{font-size:1.18rem;margin:1.5rem 0 .5rem}
.bio-section p{margin:.5rem 0 1rem;line-height:1.65}
.bio-section:first-child h4{margin-top:.7rem}
.dialog-photo{display:grid;place-items:center;min-height:440px;overflow:hidden;background:var(--yellow);color:var(--navy);font-family:var(--title);font-size:6rem}
.dialog-photo img{width:100%;height:100%;object-fit:contain}
.dialog-photo img[src$="floriana-pacelli.jpeg"]{width:280%;height:280%;max-width:none;max-height:none;object-fit:contain;object-position:center;transform:translate(23%,28%)}
.dialog-close{position:absolute;right:1rem;top:1rem;z-index:1;width:46px;height:46px;border:2px solid var(--navy);background:var(--cream);color:var(--navy);font-size:2rem;line-height:1;cursor:pointer}
.dialog-close:hover{background:var(--yellow)}
.dialog-linkedin{display:inline-block;margin-top:1rem;font-weight:800}
/* Programma: bande e finestre con contenuto aggiornabile */
#programma{background:var(--navy);color:var(--cream)}
.topics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.topic{border:2px solid var(--cream)}
.topic-open{display:flex;flex-direction:column;width:100%;height:100%;min-height:185px;padding:1.3rem;text-align:left;color:inherit;border:0;background:transparent;cursor:pointer}
.topic-open:hover,.topic-open:focus-visible{background:var(--bright)}
.topic-number{font-weight:800;font-size:.88rem;color:var(--yellow)}
.topic-open h3{font-size:1.65rem;margin:.7rem 0 1.2rem}
.topic-arrow{margin-top:auto;font-weight:800}
.program-dialog-mark{display:grid;place-items:center;min-height:440px;background:var(--bright);color:white;font-family:var(--title);font-size:clamp(7rem,18vw,15rem)}
/* Eventi e spiegazione */
#eventi{border-bottom:3px solid var(--navy)}
.event-list{border-top:2px solid var(--navy);padding:1.5rem 0;max-width:1100px}
.event-list p{font-size:1.1rem}
.event{padding:1rem 0;border-bottom:1px solid var(--navy)}
.event h3{margin:.2rem 0}
.explainer{display:grid;grid-template-columns:1fr 1fr;gap:4rem}
.explainer .lead{grid-column:1 / -1;font-size:1.5rem;line-height:1.45;margin:0}
.explainer{row-gap:2rem}
.explainer h3{margin:0 0 .5rem;font-size:1.3rem}
.explainer h3:not(:first-child){margin-top:1.5rem}
.comites-map{margin:2.5rem 0 0;max-width:1100px;border:2px solid var(--navy);padding:clamp(.75rem,2vw,1.5rem);background:white}
.comites-map img{display:block;width:100%;height:auto}
.comites-map figcaption{font-size:.95rem;line-height:1.5;border-top:1px solid var(--navy);padding-top:1rem}
.source{font-size:.9rem;max-width:900px}
/* Informazioni elettorali */
.election-section{border-top:3px solid var(--navy)}
.election-section h2{max-width:1050px}
.election-lead{font-size:1.22rem;max-width:880px}
.election-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem;margin:2rem 0}
.election-dates article{padding:1.6rem;background:var(--bright);color:white}
.election-dates article:last-child{background:var(--red)}
.election-dates h3{font-size:1.4rem;margin:1rem 0 .5rem}
.election-dates p{margin:0}
.date-label{font-family:var(--title);font-size:clamp(2.1rem,4vw,4rem);line-height:1;text-transform:uppercase}
.election-how{background:var(--yellow);border:2px solid var(--navy);padding:clamp(1.4rem,3vw,2rem);max-width:none}
.election-how h3{margin:0 0 .7rem;font-size:1.5rem}
.election-how ol{padding-left:1.5rem;margin:.5rem 0}
.election-how li{margin:.5rem 0}
.election-how p{margin:1rem 0 0}
.election-section .source{margin-top:2rem}
.election-section a{font-weight:800}
/* Contatti */
.contact{background:var(--yellow)}
.contact h2{max-width:900px}
.contact>p:not(.eyebrow){font-size:1.2rem}
.contact-email{font-weight:800}
.contact-social-label{margin:2rem 0 .65rem;font-weight:800}
.contact-social-links{display:flex;gap:.85rem}
.contact-social-links a{width:52px;height:52px;display:grid;place-items:center;background:var(--navy);color:white}
.contact-social-links a:hover{background:var(--red)}
.contact-social-links svg{width:28px;height:28px}
footer{display:flex;justify-content:space-between;gap:1rem;padding:2rem clamp(1.25rem,6vw,7rem);background:var(--navy);color:var(--cream);font-size:.9rem}
footer a{color:inherit}
.external{font-size:.78rem}
@media(max-width:1050px){
 .header{align-items:flex-start}
 .menu{display:block;margin-top:.3rem}
 nav{display:none;position:absolute;top:100%;left:0;right:0;padding:1rem 1.25rem;flex-direction:column;align-items:flex-start;background:var(--cream);border-bottom:2px solid var(--navy)}
 nav.open{display:flex}
 nav a{padding:.3rem 0;font-size:1rem}
 .hero h1{font-size:clamp(4rem,8vw,7rem)}
}
@media(max-width:850px){
 .hero{grid-template-columns:1fr;padding:3rem 1.25rem;min-height:0}
 .hero-visual{height:360px}
 .hero-visual>img{border-radius:48% 48% 0 0}
 .intro-body,.candidate-list,.explainer{grid-template-columns:1fr}
 .intro-body{gap:0}
}
@media(max-width:620px){
 .brand img{width:155px}
 .hero{gap:2rem}
 .hero h1{font-size:clamp(3.55rem,13vw,5.2rem)}
 .hero-copy>p:not(.eyebrow){font-size:1.12rem}
 .hero-visual{height:275px}
 .shape.semi{width:80px;height:42px;left:0}
 .shape.circle{width:75px;height:75px;right:0}
 .shape.star{font-size:90px;left:0}
 .shape.arc{width:65px;height:65px}
 .values-strip{justify-content:center;gap:.4rem .55rem;padding:1rem;font-size:1.1rem}
 .values-strip b{font-size:.9rem}
 .section{padding-block:3.5rem;scroll-margin-top:6rem}
 .section h2{font-size:clamp(2.8rem,11vw,4.2rem)}
 .section-head{display:block}
 .intro-column p{font-size:1rem}
 .topics,.election-dates{grid-template-columns:1fr}
 .candidate-list-row .candidate-open{grid-template-columns:58px minmax(0,1fr) 15px}
 .candidate-portrait{width:56px;height:56px}
 .candidate-name{font-size:1rem}
 .dialog-shell{grid-template-columns:1fr;height:auto;min-height:0}
 .dialog-photo,.program-dialog-mark{min-height:230px;max-height:300px;grid-row:1;font-size:4rem}
 .dialog-biography{grid-row:2}
 .candidate-dialog{max-height:90vh;overflow:auto}
 .dialog-close{top:.5rem;right:.5rem}
 footer{flex-direction:column}
}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}}

/* Testi del programma: paragrafi e sottosezioni del documento */
#program-dialog-text p{line-height:1.65;margin:.8rem 0 1.2rem}
.program-subheading{font-size:1.2rem;margin:1.8rem 0 .5rem}

.event-with-poster{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:clamp(1.5rem,4vw,3rem);align-items:start;padding:1.5rem 0 2rem}
.event-poster{display:block}.event-poster img{display:block;width:100%;height:auto}
.event-date,.event-location{font-weight:700}.event-download{display:inline-block;margin-top:.5rem;font-weight:700;text-underline-offset:4px}
@media(max-width:700px){.event-with-poster{grid-template-columns:1fr}.event-poster{max-width:420px;width:100%;margin-inline:auto}}
