/* AI Calabria · identità visiva blu: autorevolezza, innovazione, comunità */
:root {
    --vision-navy: #0B1F3A;
    --vision-navy-2: #173F6D;
    --vision-blue: #2563EB;
    --vision-teal: #0EA5E9;
    --vision-coral: #4F6BEF;
    --vision-gold: #D6A84B;
    --vision-violet: #6366F1;
    --vision-sand: #D7E4F2;
    --vision-cream: #EAF2FA;
    --vision-mist: #DDEAF7;
    --vision-sky: #DCE8F5;
    --vision-ink: #10253F;
    --vision-muted: #58708D;
    --vision-line: rgba(11,31,58,.15);
    --vision-shadow: 0 24px 65px rgba(18,53,91,.18);
}

body {
    color: var(--vision-ink);
    background:
        radial-gradient(circle at 12% 10%, rgba(37, 99, 235, .18), transparent 26rem),
        radial-gradient(circle at 88% 18%, rgba(14, 165, 233, .13), transparent 24rem),
        linear-gradient(180deg, #D6E4F4 0%, #E8F0F9 38%, #D5E3F3 100%);
}

.free-forever-bar {
    color: #fff;
    background: linear-gradient(90deg, var(--vision-coral), #4F67BA 55%, var(--vision-gold));
    font-size: .79rem;
    letter-spacing: .01em;
}
.free-forever-bar .app-shell { display:flex; justify-content:center; gap:.55rem; padding-top:.55rem; padding-bottom:.55rem; text-align:center; }
.free-forever-bar strong { font-weight:950; text-transform:uppercase; letter-spacing:.08em; }

.site-header { background:rgba(226,236,247,.95); border-bottom:1px solid rgba(11,31,58,.12); box-shadow:0 12px 35px rgba(11,31,58,.10); backdrop-filter:blur(16px); }
.brand-mark { background:linear-gradient(135deg,var(--vision-navy),var(--vision-blue)); box-shadow:0 12px 28px rgba(11,31,58,.24); }
.brand-lockup strong { color:var(--vision-navy); }
.brand-lockup small { color:#607895; }
.nav-link { color:#415A77; font-weight:780; }
.nav-link:hover,.nav-link.active { color:var(--vision-navy); background:rgba(14,165,233,.14); }
.nav-cta,.btn-primary { --bs-btn-bg:var(--vision-coral); --bs-btn-border-color:var(--vision-coral); --bs-btn-hover-bg:#526BC0; --bs-btn-hover-border-color:#526BC0; background:linear-gradient(135deg,var(--vision-coral),#6E8BFF); box-shadow:0 12px 30px rgba(79,107,239,.26); }
.btn-campaign-secondary { color:var(--vision-navy); border:1px solid rgba(11,31,58,.30); background:rgba(235,243,251,.82); }
.btn-campaign-secondary:hover { color:#fff; background:var(--vision-navy); }

.campaign-kicker { margin:0 0 1rem; color:var(--vision-coral); font-size:.74rem; font-weight:950; letter-spacing:.16em; text-transform:uppercase; }
.campaign-title { font-size:clamp(2.35rem,5vw,4.8rem); line-height:.98; letter-spacing:-.055em; }
.campaign-copy { color:var(--vision-muted); font-size:1.08rem; line-height:1.75; }
.campaign-heading { max-width:940px; margin-bottom:2.5rem; }
.campaign-heading h2 { font-size:clamp(2.4rem,5vw,5rem); line-height:.98; letter-spacing:-.06em; }
.campaign-heading p:last-child { color:var(--vision-muted); font-size:1.1rem; }

.campaign-hero { position:relative; overflow:hidden; color:#fff; background:linear-gradient(125deg,#081B35 0%,#123F78 50%,#2563EB 100%); }
.campaign-hero::after { content:""; position:absolute; inset:0; background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px); background-size:46px 46px; mask-image:linear-gradient(to bottom,rgba(0,0,0,.75),transparent); }
.campaign-hero .app-shell { z-index:2; }
.campaign-hero .campaign-kicker { color:#F2C75C; }
.campaign-hero h1 { max-width:900px; font-size:clamp(3.2rem,7.2vw,7.4rem); line-height:.88; letter-spacing:-.07em; }
.campaign-hero h1 span { color:#F2C75C; }
.campaign-lead { max-width:820px; color:rgba(255,255,255,.83); font-size:clamp(1.05rem,1.7vw,1.3rem); line-height:1.65; }

.campaign-hero-auth { display:flex; flex-wrap:wrap; gap:.9rem; margin-top:1.6rem; }
.campaign-hero-auth .btn { min-width:170px; padding:.95rem 1.6rem; border-radius:16px; font-size:1.08rem; font-weight:900; letter-spacing:.01em; }
.campaign-hero-auth__register { color:#081B35; border:1px solid #F2C75C; background:linear-gradient(135deg,#F8D86D,#F2C75C); box-shadow:0 14px 32px rgba(242,199,92,.28); }
.campaign-hero-auth__register:hover,.campaign-hero-auth__register:focus { color:#081B35; border-color:#fff0b0; background:linear-gradient(135deg,#FFE58A,#F7CF57); transform:translateY(-1px); }
.campaign-hero-auth__login { color:#fff; border:1px solid rgba(255,255,255,.7); background:rgba(255,255,255,.10); backdrop-filter:blur(10px); }
.campaign-hero-auth__login:hover,.campaign-hero-auth__login:focus { color:#081B35; border-color:#fff; background:#fff; transform:translateY(-1px); }
.campaign-hero-project-actions { display:flex; flex-wrap:wrap; gap:.8rem; margin-top:1.25rem; }
.campaign-hero-project-actions a { display:inline-flex; align-items:center; justify-content:center; gap:.45rem; min-width:160px; padding:.8rem 1.15rem; border:1px solid rgba(255,255,255,.38); border-radius:14px; color:#fff; background:rgba(255,255,255,.10); font-size:.95rem; font-weight:900; text-decoration:none; backdrop-filter:blur(10px); transition:transform .2s ease,background .2s ease,border-color .2s ease,color .2s ease; }
.campaign-hero-project-actions a:first-child { color:#081B35; border-color:#5FE0B2; background:linear-gradient(135deg,#5FE0B2,#2ECF98); }
.campaign-hero-project-actions a:hover,.campaign-hero-project-actions a:focus { color:#081B35; border-color:#fff; background:#fff; transform:translateY(-1px); }
.campaign-hero-project-actions span { transition:transform .2s ease; }
.campaign-hero-project-actions a:hover span,.campaign-hero-project-actions a:focus span { transform:translateX(4px); }
.campaign-trust-row { display:flex; flex-wrap:wrap; gap:.75rem; }
.campaign-trust-row span { padding:.7rem .95rem; border:1px solid rgba(255,255,255,.18); border-radius:999px; background:rgba(255,255,255,.08); font-size:.78rem; }
.campaign-trust-row b { color:#F2C75C; }
.campaign-shape { position:absolute; border-radius:999px; filter:blur(1px); opacity:.55; }
.campaign-shape--one { width:440px; height:440px; right:-120px; top:-120px; background:radial-gradient(circle,rgba(242,199,92,.38),transparent 68%); }
.campaign-shape--two { width:340px; height:340px; left:45%; bottom:-250px; background:radial-gradient(circle,rgba(99,102,241,.34),transparent 70%); }

 .ai-memory-core {
    position:relative;
    isolation:isolate;
    width:min(580px,100%);
    aspect-ratio:1;
    margin-inline:auto;
    overflow:visible;
    --ai-content-speed:24s;
    --ai-community-speed:32s;
    --ai-territory-speed:42s;
}
.ai-neural-halo {
    position:absolute;
    z-index:0;
    inset:17%;
    border-radius:50%;
    background:
        radial-gradient(circle,rgba(95,224,178,.16) 0 4%,transparent 5% 18%,rgba(92,139,255,.12) 19% 20%,transparent 21% 100%),
        conic-gradient(from 20deg,transparent,rgba(95,224,178,.12),transparent 24%,rgba(242,199,92,.10),transparent 52%,rgba(86,128,255,.16),transparent 82%);
    filter:blur(1px);
    animation:aiNeuralBreathe 4.8s ease-in-out infinite;
}
.ai-neural-layer {
    position:absolute;
    z-index:1;
    inset:3%;
    width:94%;
    height:94%;
    overflow:visible;
    pointer-events:none;
}
.ai-dynamic-synapse {
    fill:none;
    stroke:rgba(140,230,255,.74);
    stroke-width:1.45;
    stroke-linecap:round;
    stroke-dasharray:5 9;
    opacity:0;
    filter:drop-shadow(0 0 5px rgba(140,230,255,.52));
}
.ai-dynamic-synapse--community {
    stroke:rgba(248,216,109,.82);
    filter:drop-shadow(0 0 5px rgba(248,216,109,.5));
}
.ai-dynamic-synapse--territory {
    stroke:rgba(95,224,178,.82);
    filter:drop-shadow(0 0 5px rgba(95,224,178,.5));
}
.ai-dynamic-pulse {
    fill:#8ce6ff;
    stroke:#fff;
    stroke-width:1.15;
    opacity:0;
    filter:url(#ai-neural-glow);
}
.ai-dynamic-pulse--community { fill:#f8d86d; }
.ai-dynamic-pulse--territory { fill:#5fe0b2; }
.ai-dynamic-terminal {
    fill:#fff;
    opacity:0;
    filter:url(#ai-neural-glow);
}
.ai-core-orbit {
    position:absolute;
    z-index:2;
    border:1px solid rgba(255,255,255,.20);
    border-radius:50%;
    box-shadow:inset 0 0 35px rgba(80,142,255,.035),0 0 28px rgba(75,130,255,.035);
    pointer-events:none;
}
.ai-core-orbit::before {
    content:"";
    position:absolute;
    inset:-2px;
    border:2px solid transparent;
    border-top-color:rgba(95,224,178,.66);
    border-right-color:rgba(242,199,92,.32);
    border-radius:inherit;
    filter:drop-shadow(0 0 5px rgba(95,224,178,.38));
    animation:aiRingSignal 8s linear infinite;
}
.ai-core-orbit>span { display:none; }
.ai-core-orbit--content { inset:19%; border-style:dashed; }
.ai-core-orbit--community { inset:9%; }
.ai-core-orbit--community::before { animation-direction:reverse; animation-duration:11s; border-top-color:rgba(242,199,92,.55); border-right-color:rgba(119,145,255,.52); }
.ai-core-orbit--territory { inset:1%; border-color:rgba(255,255,255,.25); }
.ai-core-orbit--territory::before { animation-duration:15s; border-top-color:rgba(125,185,255,.66); border-right-color:rgba(95,224,178,.38); }
.ai-core-center {
    position:absolute;
    z-index:6;
    inset:38%;
    display:grid;
    place-content:center;
    text-align:center;
    border:1px solid rgba(255,255,255,.16);
    border-radius:34%;
    color:#fff;
    background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.22),transparent 28%),linear-gradient(145deg,#2563EB,#6366F1);
    box-shadow:0 28px 70px rgba(8,25,54,.42),0 0 42px rgba(61,111,255,.30);
    transform:rotate(8deg);
    animation:aiCoreFloat 5.4s ease-in-out infinite;
}
.ai-core-center::before,.ai-core-center::after {
    content:"";
    position:absolute;
    inset:-13%;
    border:1px solid rgba(131,205,255,.34);
    border-radius:40%;
    opacity:.7;
    animation:aiCoreWave 3.2s ease-out infinite;
}
.ai-core-center::after{animation-delay:-1.6s}
.ai-core-center span { font-size:clamp(2.8rem,5.4vw,4.35rem); font-weight:950; line-height:.8; transform:rotate(-8deg); }
.ai-core-center small { margin-top:.6rem; font-weight:900; letter-spacing:.18em; transform:rotate(-8deg); }
.ai-core-center i {
    position:absolute;
    width:8px;
    height:8px;
    top:18%;
    right:19%;
    border-radius:50%;
    background:#f8d86d;
    box-shadow:0 0 0 5px rgba(248,216,109,.12),0 0 18px rgba(248,216,109,.95);
    animation:aiCoreSpark 1.8s ease-in-out infinite;
}
.ai-core-satellites { position:absolute; z-index:5; inset:0; pointer-events:none; }
.ai-core-satellites--content{z-index:5}.ai-core-satellites--community{z-index:4}.ai-core-satellites--territory{z-index:3}
.ai-core-satellite {
    position:absolute;
    inset:0;
    transform:rotate(var(--angle));
    transform-origin:50% 50%;
    animation:aiSatelliteOrbit var(--orbit-speed) linear infinite;
    will-change:transform;
}
.ai-core-satellite b {
    position:absolute;
    top:50%;
    left:calc(50% + var(--orbit-radius));
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:32px;
    padding:.42rem .6rem;
    border:1px solid rgba(255,255,255,.74);
    border-radius:14px;
    color:var(--vision-navy);
    background:linear-gradient(145deg,#f8fbff,#dfeeff);
    box-shadow:0 13px 30px rgba(5,20,43,.24),0 0 0 0 rgba(95,224,178,0);
    font-size:.64rem;
    font-weight:950;
    line-height:1.05;
    white-space:nowrap;
    transform:translate(-50%,-50%) rotate(var(--counter-angle));
    transform-origin:0 50%;
    animation:aiSatelliteCounterOrbit var(--orbit-speed) linear infinite;
    will-change:transform;
    transition:border-color .25s ease,background .25s ease,box-shadow .25s ease,color .25s ease;
}
.ai-core-satellite b::before {
    content:"";
    width:6px;
    height:6px;
    margin-right:.4rem;
    flex:0 0 auto;
    border-radius:50%;
    background:#2563eb;
    box-shadow:0 0 8px rgba(37,99,235,.72);
}
.ai-core-satellite.is-firing b {
    color:#061b32;
    border-color:#f8d86d;
    background:linear-gradient(145deg,#fff9db,#f8d86d);
    box-shadow:0 14px 34px rgba(5,20,43,.25),0 0 0 7px rgba(248,216,109,.12),0 0 24px rgba(248,216,109,.68);
}
.ai-core-satellite.is-firing b::before { background:#0ccf9a; box-shadow:0 0 14px rgba(12,207,154,1); }
.ai-core-satellites--content .ai-core-satellite {
    --orbit-radius:31%;
    --orbit-speed:var(--ai-content-speed);
}
.ai-core-satellites--community .ai-core-satellite {
    --orbit-radius:41%;
    --orbit-speed:var(--ai-community-speed);
    animation-name:aiSatelliteOrbitReverse;
}
.ai-core-satellites--community .ai-core-satellite b {
    max-width:94px;
    padding:.4rem .55rem;
    font-size:.61rem;
    border-color:rgba(242,199,92,.74);
    background:linear-gradient(145deg,#fff8df,#f7e4a5);
    animation-name:aiSatelliteCounterOrbitReverse;
}
.ai-core-satellites--community .ai-core-satellite b::before{background:#d6a84b;box-shadow:0 0 8px rgba(214,168,75,.72)}
.ai-core-satellites--territory .ai-core-satellite {
    --orbit-radius:49%;
    --orbit-speed:var(--ai-territory-speed);
}
.ai-core-satellites--territory .ai-core-satellite b {
    max-width:96px;
    padding:.38rem .5rem;
    border-color:rgba(95,224,178,.74);
    color:#062d38;
    background:linear-gradient(145deg,#eafff8,#bcefdc);
    font-size:.57rem;
    text-align:center;
    white-space:normal;
}
.ai-core-satellites--territory .ai-core-satellite b::before{background:#0ccf9a;box-shadow:0 0 9px rgba(12,207,154,.75)}
.ai-memory-core.is-ai-paused .ai-core-satellite,
.ai-memory-core.is-ai-paused .ai-core-satellite b,
.ai-memory-core.is-ai-paused .ai-core-center,
.ai-memory-core.is-ai-paused .ai-neural-halo,
.ai-memory-core.is-ai-paused .ai-core-orbit::before { animation-play-state:paused!important; }
.ai-memory-core.is-ai-paused .ai-dynamic-synapse,
.ai-memory-core.is-ai-paused .ai-dynamic-pulse,
.ai-memory-core.is-ai-paused .ai-dynamic-terminal { opacity:0!important; }
@keyframes aiSatelliteOrbit { from{transform:rotate(var(--angle))} to{transform:rotate(calc(var(--angle) + 360deg))} }
@keyframes aiSatelliteCounterOrbit { from{transform:translate(-50%,-50%) rotate(var(--counter-angle))} to{transform:translate(-50%,-50%) rotate(calc(var(--counter-angle) - 360deg))} }
@keyframes aiSatelliteOrbitReverse { from{transform:rotate(var(--angle))} to{transform:rotate(calc(var(--angle) - 360deg))} }
@keyframes aiSatelliteCounterOrbitReverse { from{transform:translate(-50%,-50%) rotate(var(--counter-angle))} to{transform:translate(-50%,-50%) rotate(calc(var(--counter-angle) + 360deg))} }
@keyframes aiRingSignal { to { transform:rotate(360deg); } }
@keyframes aiNeuralBreathe { 0%,100%{opacity:.62;transform:scale(.96)} 50%{opacity:1;transform:scale(1.05)} }
@keyframes aiCoreFloat { 0%,100%{transform:rotate(8deg) translateY(0)} 50%{transform:rotate(5deg) translateY(-7px)} }
@keyframes aiCoreWave { 0%{opacity:.58;transform:scale(.78)} 100%{opacity:0;transform:scale(1.42)} }
@keyframes aiCoreSpark { 0%,100%{opacity:.38;transform:scale(.7)} 50%{opacity:1;transform:scale(1.35)} }
.ai-core-legend {
    position:relative;
    z-index:7;
    display:flex;
    justify-content:center;
    gap:.55rem;
    margin:-.15rem auto .8rem;
}
.ai-core-legend span {
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    padding:.32rem .58rem;
    border:1px solid rgba(255,255,255,.18);
    border-radius:999px;
    color:rgba(255,255,255,.82);
    background:rgba(8,27,53,.64);
    font-size:.56rem;
    font-weight:900;
    letter-spacing:.08em;
    text-transform:uppercase;
    backdrop-filter:blur(7px);
}
.ai-core-legend span::before { content:""; width:6px; height:6px; border-radius:50%; background:#7aa8ff; box-shadow:0 0 8px rgba(122,168,255,.9); }
.ai-core-legend__community::before { background:#d6a84b!important; box-shadow:0 0 8px rgba(214,168,75,.9)!important; }
.ai-core-legend__territory::before { background:#0ccf9a!important; box-shadow:0 0 8px rgba(12,207,154,.9)!important; }
.hero-unity-card { position:relative; z-index:5; max-width:460px; margin:0 auto 0; padding:1.2rem 1.35rem; border:1px solid rgba(255,255,255,.18); border-radius:22px; background:rgba(15,47,87,.86); box-shadow:0 20px 45px rgba(7,24,49,.28); }
.hero-unity-card strong { display:block; color:#F2C75C; }
.hero-unity-card p { margin:.35rem 0 0; color:rgba(255,255,255,.76); font-size:.9rem; }

.promise-band { padding:1.2rem 0; background:var(--vision-cream); border-bottom:1px solid var(--vision-line); }
.promise-band__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.promise-band article { display:grid; grid-template-columns:auto 1fr; column-gap:.8rem; padding:1rem 1.1rem; border-radius:18px; background:rgba(255,255,255,.42); }
.promise-band article>span { grid-row:1/3; color:var(--vision-coral); font-size:1.6rem; font-weight:950; }
.promise-band strong { font-size:1rem; }.promise-band p { margin:.15rem 0 0; color:var(--vision-muted); font-size:.82rem; }

.ai-pipeline-section { background:var(--vision-mist); }
.ai-pipeline { display:grid; grid-template-columns:1fr auto 1fr auto 1fr auto 1fr; align-items:stretch; gap:1rem; }
.ai-pipeline article { padding:1.7rem; border-radius:24px; background:linear-gradient(145deg,#EDF4FA,#E0ECF8); border:1px solid rgba(11,31,58,.11); box-shadow:0 14px 35px rgba(11,31,58,.08); }
.ai-pipeline article span { display:grid; width:42px; height:42px; place-items:center; border-radius:14px; color:#fff; background:var(--vision-coral); font-weight:950; }
.ai-pipeline article h3 { margin:1.2rem 0 .55rem; font-size:1.2rem; }.ai-pipeline article p { color:var(--vision-muted); margin:0; }
.ai-pipeline>i { align-self:center; color:var(--vision-gold); font-size:2rem; font-style:normal; font-weight:950; }

.atlas-preview-section { background:linear-gradient(145deg,#D6E5F5,#CFE3FA); }
.language-tree-preview { padding:2rem; border-radius:34px; background:#0B1F3A; box-shadow:var(--vision-shadow); }
.language-node { padding:1.2rem 1.4rem; border-radius:20px; color:#fff; }
.language-node small { display:block; margin-bottom:.35rem; color:#F2C75C; font-size:.66rem; font-weight:950; letter-spacing:.14em; }
.language-node strong { font-size:1.25rem; }.language-node--italian { background:#2563EB; }.language-node--base { background:#4F6BEF; }
.language-tree-arrow { padding:.7rem 0; color:#F2C75C; text-align:center; font-size:2rem; }
.language-tree-branches { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; margin-top:1rem; }
.language-tree-branches span { padding:.75rem; border-radius:14px; color:#fff; background:rgba(255,255,255,.09); text-align:center; font-size:.75rem; font-weight:850; }
.language-ai-output { display:grid; grid-template-columns:auto 1fr; column-gap:1rem; margin-top:1rem; padding:1.2rem; border:1px solid rgba(242,199,92,.28); border-radius:20px; color:#fff; background:rgba(242,199,92,.09); }
.language-ai-output>span { grid-row:1/3; display:grid; width:54px; height:54px; place-items:center; border-radius:16px; color:var(--vision-navy); background:#F2C75C; font-weight:950; }.language-ai-output small { color:rgba(255,255,255,.62); }

.plural-calabria-section { background:#DCE8F5; }
.plural-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:1rem; }
.plural-grid article { min-height:250px; padding:1.55rem; border-radius:24px; color:#fff; background:linear-gradient(155deg,var(--vision-navy),var(--vision-blue)); box-shadow:0 18px 40px rgba(11,31,58,.14); }
.plural-grid article:nth-child(2){background:linear-gradient(155deg,#314A8A,#7378CE)}.plural-grid article:nth-child(3){background:linear-gradient(155deg,#235A9A,#4C91E6)}.plural-grid article:nth-child(4){background:linear-gradient(155deg,#3A629B,#6482CA)}.plural-grid article:nth-child(5){background:linear-gradient(155deg,#5167B4,#7189DC)}
.plural-grid span { color:#F2C75C; font-size:.65rem; font-weight:950; letter-spacing:.14em; }.plural-grid h3 { margin:1rem 0 .7rem; }.plural-grid p { color:rgba(255,255,255,.75); }

.challenge-home-section,.live-rankings-section { color:#fff; background:linear-gradient(135deg,#081B35,#123F78 58%,#2563EB); }
.challenge-home-head { display:flex; justify-content:space-between; align-items:end; gap:2rem; margin-bottom:2rem; }.challenge-home-head h2 { max-width:980px; font-size:clamp(2.4rem,5vw,5rem); line-height:.98; letter-spacing:-.055em; }.challenge-home-section .campaign-kicker,.challenge-hero .campaign-kicker { color:#F2C75C; }
.chart-stage { height:100%; padding:1.4rem; border:1px solid rgba(255,255,255,.14); border-radius:26px; background:rgba(226,236,247,.95); color:var(--vision-ink); box-shadow:0 22px 52px rgba(7,24,49,.22); }
.chart-stage--large { min-height:440px; }.chart-stage__head { display:flex; justify-content:space-between; gap:1rem; margin-bottom:1rem; }.chart-stage__head span { color:var(--vision-coral); font-size:.72rem; font-weight:950; letter-spacing:.13em; }.chart-stage__head small { color:var(--vision-muted); }
.chart-wrap { position:relative; min-height:340px; }.chart-wrap--donut{min-height:360px}.chart-wrap--ranking{min-height:430px}.chart-wrap--radar{min-height:420px}
.chart-missing-note { margin:1rem 0 0; color:var(--vision-coral); font-weight:800; }
.competition-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }.competition-cards article { padding:1.35rem; border-radius:20px; background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.13); }.competition-cards span { color:#F2C75C; font-size:.68rem; font-weight:950; letter-spacing:.14em; }.competition-cards strong { display:block; margin:.8rem 0 .35rem; }.competition-cards p { margin:0; color:rgba(255,255,255,.67); font-size:.85rem; }

.recognition-section { background:var(--vision-cream); }
.recognition-card-modern { display:grid; grid-template-columns:.8fr 1.2fr; align-items:center; gap:3rem; padding:clamp(1.5rem,4vw,3rem); border-radius:34px; background:linear-gradient(145deg,#DCEAF7,#D7E3F0); box-shadow:var(--vision-shadow); }
.recognition-image img { width:100%; border-radius:24px; box-shadow:0 24px 50px rgba(26,49,89,.22); transform:rotate(-2deg); }.recognition-card-modern h2 { font-size:clamp(2rem,4.5vw,4.3rem); letter-spacing:-.055em; }.recognition-card-modern p { color:var(--vision-muted); font-size:1.05rem; line-height:1.7; }.text-link-modern { color:var(--vision-navy); font-weight:950; text-decoration:none; }.text-link-modern span { color:var(--vision-coral); }

.unity-final-section { background:#D7E6F5; }.unity-final-card { padding:clamp(2rem,6vw,5rem); border-radius:38px; text-align:center; color:#fff; background:linear-gradient(130deg,#0F2F57,#2674C8 62%,#4F6BEF); box-shadow:var(--vision-shadow); }.unity-final-card h2 { max-width:1050px; margin-inline:auto; font-size:clamp(2.5rem,5.6vw,5.5rem); letter-spacing:-.06em; }.unity-final-card p { max-width:900px; margin-inline:auto; color:rgba(255,255,255,.78); font-size:1.12rem; }

.atlas-hero,.challenge-hero,.participate-new-hero,.project-new-hero,.community-new-hero,.recognition-page-hero,.territory-new-hero { color:#fff; background:linear-gradient(125deg,#0F2F57,#1D65B4 62%,#3B82F6); }
.atlas-hero h1,.challenge-hero h1,.participate-new-hero h1,.project-new-hero h1,.community-new-hero h1,.recognition-page-hero h1,.territory-new-hero h1 { max-width:1100px; font-size:clamp(2.7rem,6vw,6.3rem); line-height:.94; letter-spacing:-.065em; }
.atlas-hero p:not(.campaign-kicker),.challenge-hero p:not(.campaign-kicker),.participate-new-hero p:not(.campaign-kicker),.project-new-hero p:not(.campaign-kicker),.community-new-hero p:not(.campaign-kicker),.recognition-page-hero p:not(.campaign-kicker),.territory-new-hero p:not(.campaign-kicker) { max-width:900px; color:rgba(255,255,255,.77); font-size:1.1rem; }
.atlas-hero .campaign-kicker,.challenge-hero .campaign-kicker,.participate-new-hero .campaign-kicker,.project-new-hero .campaign-kicker,.community-new-hero .campaign-kicker,.recognition-page-hero .campaign-kicker,.territory-new-hero .campaign-kicker { color:#F2C75C; }
.atlas-principle-card,.challenge-free-card,.participation-zero-cost { padding:2rem; border:1px solid rgba(255,255,255,.18); border-radius:28px; background:rgba(255,255,255,.10); backdrop-filter:blur(12px); }.atlas-principle-card span,.challenge-free-card span { color:#F2C75C; font-size:.72rem; font-weight:950; letter-spacing:.14em; }.atlas-principle-card strong,.challenge-free-card strong { display:block; margin:.8rem 0; font-size:2rem; }.participation-zero-cost>span { display:block; color:#F2C75C; font-size:5rem; font-weight:950; line-height:.9; }.participation-zero-cost strong { display:block; margin-top:1rem; font-size:1.4rem; }

.atlas-lab-section { background:linear-gradient(145deg,#DAE6F3,#DCEAF8); }.atlas-lab { padding:clamp(1.4rem,4vw,3.5rem); border-radius:38px; background:#ECF3FA; box-shadow:var(--vision-shadow); }.atlas-lab__head { display:flex; justify-content:space-between; gap:2rem; align-items:end; }.atlas-lab__head h2 { max-width:900px; font-size:clamp(2.1rem,4.6vw,4.5rem); letter-spacing:-.055em; }.atlas-status-pill { padding:.7rem 1rem; border-radius:999px; color:#fff; background:var(--vision-teal); font-size:.68rem; font-weight:950; letter-spacing:.12em; }
.atlas-search-form { margin:2rem 0; padding:1.25rem; border-radius:22px; background:#DCEAF7; }.atlas-search-form label { display:block; margin-bottom:.55rem; font-weight:900; }.atlas-search-row { display:grid; grid-template-columns:1fr auto; gap:.75rem; }.atlas-search-form small { display:block; margin-top:.65rem; color:var(--vision-muted); }
.atlas-tree { display:grid; gap:1rem; }.atlas-level { position:relative; padding:1.4rem 1.5rem 1.4rem 5rem; border-radius:24px; color:#fff; background:var(--vision-blue); transition:.3s ease; }.atlas-level--base { background:var(--vision-coral); }.atlas-level__number { position:absolute; left:1.2rem; top:1.2rem; display:grid; width:48px; height:48px; place-items:center; border-radius:15px; background:rgba(255,255,255,.15); font-weight:950; }.atlas-level small { color:#F2C75C; font-size:.68rem; font-weight:950; letter-spacing:.14em; }.atlas-level strong { display:block; margin:.35rem 0; font-size:1.5rem; }.atlas-level p { margin:0; color:rgba(255,255,255,.72); }.atlas-validation-state { display:inline-flex; margin-top:.7rem; padding:.35rem .55rem; border-radius:999px; background:rgba(255,255,255,.14); font-size:.65rem; font-weight:950; letter-spacing:.12em; }
.atlas-connector { position:relative; display:flex; justify-content:center; padding:.35rem 0; }.atlas-connector::before { content:""; position:absolute; top:0; bottom:0; width:2px; background:var(--vision-gold); }.atlas-connector span { position:relative; z-index:1; padding:.35rem .7rem; border-radius:999px; color:#fff; background:var(--vision-navy); font-size:.62rem; font-weight:950; letter-spacing:.12em; }
.atlas-variants-stage { display:grid; grid-template-columns:repeat(3,1fr); gap:.8rem; }.atlas-variants-stage article { padding:1.1rem; border-radius:18px; background:#DCE8F5; border:1px solid var(--vision-line); }.atlas-variants-stage span { color:var(--vision-coral); font-size:.62rem; font-weight:950; letter-spacing:.12em; }.atlas-variants-stage strong { display:block; margin:.45rem 0; }.atlas-variants-stage small { color:var(--vision-muted); }.atlas-variant-minority { color:#fff; background:linear-gradient(135deg,#3B55A0,#6B70C8)!important; }.atlas-variant-minority span { color:#F2C75C; }.atlas-variant-minority small { color:rgba(255,255,255,.7); }
.atlas-evidence-stage { display:grid; grid-template-columns:repeat(5,1fr); gap:.8rem; }.atlas-evidence-stage article { padding:1rem; border-radius:18px; text-align:center; background:#DDEBFA; }.atlas-evidence-stage b { display:block; font-size:1.6rem; }.atlas-evidence-stage strong { display:block; margin:.4rem 0; }.atlas-evidence-stage small { color:var(--vision-muted); }
.atlas-ai-package { display:grid; grid-template-columns:auto 1fr; gap:1.2rem; align-items:center; padding:1.5rem; border-radius:24px; color:#fff; background:linear-gradient(135deg,var(--vision-navy),var(--vision-blue)); }.atlas-ai-package__mark { display:grid; width:70px; height:70px; place-items:center; border-radius:22px; color:var(--vision-navy); background:#F2C75C; font-size:1.6rem; font-weight:950; }.atlas-ai-package small { color:#F2C75C; font-weight:950; letter-spacing:.12em; }.atlas-ai-package strong { display:block; margin:.3rem 0; font-size:1.35rem; }.atlas-ai-package p { margin:0; color:rgba(255,255,255,.7); }.atlas-tree--active .atlas-level { transform:translateY(-2px); box-shadow:0 18px 35px rgba(11,31,58,.15); }
.atlas-navigation-section { background:#DCE8F5; }.atlas-door-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }.atlas-door-grid a { min-height:190px; padding:1.5rem; border-radius:24px; color:#fff; background:linear-gradient(145deg,var(--vision-navy),var(--vision-blue)); text-decoration:none; transition:.25s ease; }.atlas-door-grid a:nth-child(even){background:linear-gradient(145deg,#5065B2,var(--vision-coral))}.atlas-door-grid a:hover{transform:translateY(-5px);box-shadow:var(--vision-shadow)}.atlas-door-grid span{color:#F2C75C;font-size:.7rem;font-weight:950}.atlas-door-grid strong{display:block;margin:1rem 0 .4rem;font-size:1.45rem}.atlas-door-grid small{color:rgba(255,255,255,.7)}
.atlas-manifesto-section { background:var(--vision-mist); }.atlas-manifesto-card { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:clamp(2rem,5vw,4rem); border-radius:34px; color:#fff; background:linear-gradient(130deg,#0F2F57,#314A8A); }.atlas-manifesto-card>div{max-width:900px}.atlas-manifesto-card h2{font-size:clamp(2.2rem,4.5vw,4.4rem);letter-spacing:-.055em}.atlas-manifesto-card p{color:rgba(255,255,255,.75)}

.ranking-notice { display:flex; gap:.8rem; align-items:center; padding:1rem 1.2rem; border-radius:18px; color:var(--vision-ink); background:#E2EBF6; }.ranking-notice strong { color:var(--vision-coral); font-size:.72rem; letter-spacing:.12em; }.ranking-notice span { font-size:.86rem; }
.podium-card { height:100%; padding:1.4rem; border-radius:26px; color:var(--vision-ink); background:#D9E5F2; box-shadow:0 22px 52px rgba(7,24,49,.22); }.podium-card__label { color:var(--vision-coral); font-size:.72rem; font-weight:950; letter-spacing:.13em; }.podium { display:flex; align-items:end; gap:.6rem; min-height:310px; padding:2rem .2rem 1rem; }.podium-place { flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; padding:1rem .4rem; border-radius:18px 18px 6px 6px; color:#fff; background:var(--vision-blue); text-align:center; }.podium-place b { font-size:2.4rem; }.podium-place span { font-size:.72rem; }.podium-place--first{height:250px;background:var(--vision-coral)}.podium-place--second{height:195px;background:var(--vision-teal)}.podium-place--third{height:155px;background:var(--vision-gold)}
.ranking-leagues-section { background:var(--vision-mist); }.league-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }.league-grid article { padding:1.5rem; border-radius:24px; background:#E8F0F9; border:1px solid var(--vision-line); }.league-grid article>span{font-size:1.8rem}.league-grid h3{margin:.8rem 0 .5rem}.league-grid p{color:var(--vision-muted)}.league-grid strong{color:var(--vision-coral);font-size:.8rem}
.score-rules-section { background:#DCE8F5; }.score-rule-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.8rem; }.score-rule-grid article { padding:1.25rem; border-radius:20px; color:#fff; background:var(--vision-navy); }.score-rule-grid strong { display:block; color:#F2C75C; font-size:1.45rem; }.score-rule-grid span { font-size:.82rem; color:rgba(255,255,255,.75); }
.challenge-final-section { background:#D7E4F2; }.challenge-final-card { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:clamp(2rem,5vw,4rem); border-radius:34px; color:#fff; background:linear-gradient(135deg,var(--vision-coral),#4D65B8); }.challenge-final-card span{color:#F2C75C;font-size:.7rem;font-weight:950;letter-spacing:.13em}.challenge-final-card h2{margin:.7rem 0 0;font-size:clamp(2.2rem,4.3vw,4.2rem);letter-spacing:-.05em}

.contribution-path-section { background:var(--vision-mist); }.contribution-path-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }.contribution-path-grid article { padding:1.6rem; border-radius:24px; background:linear-gradient(145deg,#E5EEF8,#DCEBFA); border:1px solid var(--vision-line); }.contribution-path-grid span { color:var(--vision-coral); font-size:.7rem; font-weight:950; letter-spacing:.12em; }.contribution-path-grid h3 { margin:1rem 0 .55rem; }.contribution-path-grid p { color:var(--vision-muted); }.contribution-path-grid b { color:var(--vision-teal); font-size:.78rem; }
.participation-flow-section { background:#DCE8F5; }.participation-flow-list { display:grid; gap:.7rem; }.participation-flow-list article { display:grid; grid-template-columns:auto 1fr; gap:1rem; padding:1.1rem; border-radius:18px; background:#E9F1F9; }.participation-flow-list article>span { display:grid; width:42px; height:42px; place-items:center; border-radius:13px; color:#fff; background:var(--vision-coral); font-weight:950; }.participation-flow-list p { margin:.2rem 0 0; color:var(--vision-muted); }
.join-call-section { background:var(--vision-mist); }.join-call-card { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:clamp(2rem,5vw,4rem); border-radius:34px; color:#fff; background:linear-gradient(130deg,var(--vision-navy),var(--vision-teal)); }.join-call-card>div{max-width:850px}.join-call-card h2{font-size:clamp(2.4rem,5vw,4.8rem);letter-spacing:-.055em}.join-call-card p{color:rgba(255,255,255,.72)}

.project-pact-section,.community-roles-new,.recognition-details-section { background:var(--vision-mist); }.project-pact-grid,.community-role-grid,.recognition-detail-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }.project-pact-grid article,.community-role-grid article,.recognition-detail-grid article { padding:1.6rem; border-radius:24px; background:#E7EFF8; border:1px solid var(--vision-line); }.project-pact-grid span,.community-role-grid span,.recognition-detail-grid span{color:var(--vision-coral);font-size:.68rem;font-weight:950;letter-spacing:.13em}.project-pact-grid h3,.community-role-grid h3,.recognition-detail-grid h3{margin:1rem 0 .6rem}.project-pact-grid p,.community-role-grid p,.recognition-detail-grid p{color:var(--vision-muted)}
.unprecedented-section { background:#DCE8F5; }.unity-mosaic { display:flex; flex-wrap:wrap; gap:.7rem; padding:2rem; border-radius:30px; color:#fff; background:var(--vision-navy); }.unity-mosaic span,.unity-mosaic strong { padding:.75rem 1rem; border-radius:999px; background:rgba(255,255,255,.09); }.unity-mosaic strong { color:var(--vision-navy); background:#F2C75C; }
.ai-roadmap-new-section { background:#D7E4F2; }.ai-roadmap-new { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }.ai-roadmap-new article { padding:1.6rem; border-radius:24px; color:#fff; background:linear-gradient(145deg,var(--vision-navy),var(--vision-blue)); }.ai-roadmap-new article:nth-child(even){background:linear-gradient(145deg,#4B5FA8,var(--vision-coral))}.ai-roadmap-new span{color:#F2C75C;font-size:.67rem;font-weight:950;letter-spacing:.12em}.ai-roadmap-new h3{margin:1rem 0 .5rem}.ai-roadmap-new p{color:rgba(255,255,255,.7)}
.project-final-call { background:var(--vision-mist); }.project-final-card { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:clamp(2rem,5vw,4rem); border-radius:34px; color:#fff; background:linear-gradient(135deg,#344F94,#7479D1); }.project-final-card span{color:#F2C75C;font-size:.68rem;font-weight:950;letter-spacing:.12em}.project-final-card h2{margin:.7rem 0 0;font-size:clamp(2.2rem,4.4vw,4.4rem);letter-spacing:-.055em}

.linguistic-communities-section { background:#DCE8F5; }.linguistic-community-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; }.linguistic-community-grid article { padding:1.5rem; border-radius:22px; color:#fff; background:linear-gradient(145deg,#324C8D,#6A6FC4); }.linguistic-community-grid article:nth-child(2){background:linear-gradient(145deg,#1E4F86,#4A90E2)}.linguistic-community-grid article:nth-child(3){background:linear-gradient(145deg,#335D96,#5C7BC4)}.linguistic-community-grid article:nth-child(4){background:linear-gradient(145deg,#4B60AA,#6B83D8)}.linguistic-community-grid span{color:#F2C75C;font-size:.65rem;font-weight:950;letter-spacing:.12em}.linguistic-community-grid strong{display:block;margin:.9rem 0 .45rem}.linguistic-community-grid p{margin:0;color:rgba(255,255,255,.7)}
.team-challenge-section { background:var(--vision-mist); }.team-challenge-card { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:clamp(2rem,5vw,4rem); border-radius:34px; color:#fff; background:linear-gradient(135deg,var(--vision-navy),var(--vision-blue)); }.team-challenge-card>div{max-width:850px}.team-challenge-card h2{font-size:clamp(2.3rem,4.7vw,4.6rem);letter-spacing:-.055em}.team-challenge-card p{color:rgba(255,255,255,.72)}

.recognition-page-hero { color:var(--vision-ink); background:linear-gradient(135deg,#D2E1F1,#DCEBFA); }.recognition-page-hero h1{color:var(--vision-navy)}.recognition-page-hero p:not(.campaign-kicker){color:var(--vision-muted)}.recognition-page-hero .campaign-kicker{color:var(--vision-coral)}.recognition-book-stage img{width:100%;border-radius:26px;box-shadow:var(--vision-shadow);transform:rotate(-2deg)}.recognition-book-stage figcaption{margin-top:.8rem;color:var(--vision-muted);font-size:.8rem;text-align:center}

.territory-filter-panel,.territory-map-card,.municipality-panel { background:#E8F0F8!important; border-color:var(--vision-line)!important; }.territory-map-card{box-shadow:var(--vision-shadow)}

.vision-footer { color:#fff; background:var(--vision-navy); }.footer-impact-call { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:1.8rem; border-radius:26px; background:rgba(255,255,255,.08); }.footer-impact-call span{color:#F2C75C;font-size:.7rem;font-weight:950;letter-spacing:.13em}.footer-impact-call h2{margin:.5rem 0 0;max-width:800px;font-size:clamp(1.8rem,3.7vw,3.5rem);letter-spacing:-.05em}.vision-footer .footer-copy,.vision-footer .footer-links a,.vision-footer .footer-bottom{color:rgba(255,255,255,.68)}.vision-footer .footer-title{color:#F2C75C}

@media (max-width:1199.98px){
    .plural-grid{grid-template-columns:repeat(3,1fr)}
    .ai-pipeline{grid-template-columns:repeat(2,1fr)}.ai-pipeline>i{display:none}
    .competition-cards,.project-pact-grid,.community-role-grid,.recognition-detail-grid,.contribution-path-grid,.ai-roadmap-new{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:991.98px){
    .campaign-hero h1{font-size:clamp(3rem,12vw,6rem)}
    .promise-band__grid,.plural-grid,.league-grid{grid-template-columns:1fr}
    .challenge-home-head,.atlas-manifesto-card,.challenge-final-card,.join-call-card,.project-final-card,.team-challenge-card,.footer-impact-call{align-items:flex-start;flex-direction:column}
    .recognition-card-modern{grid-template-columns:1fr}
    .atlas-variants-stage{grid-template-columns:repeat(2,1fr)}
    .atlas-evidence-stage{grid-template-columns:repeat(3,1fr)}
    .atlas-door-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:767.98px){
    .free-forever-bar .app-shell{flex-direction:column;gap:.1rem}
    .ai-memory-core{max-width:420px}
    .ai-core-node{font-size:.65rem;padding:.5rem .6rem}
    .language-tree-branches,.score-rule-grid,.linguistic-community-grid{grid-template-columns:repeat(2,1fr)}
    .atlas-search-row{grid-template-columns:1fr}
    .atlas-lab__head{align-items:flex-start;flex-direction:column}
    .atlas-evidence-stage{grid-template-columns:repeat(2,1fr)}
    .atlas-door-grid,.project-pact-grid,.community-role-grid,.recognition-detail-grid,.contribution-path-grid,.ai-roadmap-new,.competition-cards{grid-template-columns:1fr}
}
@media (max-width:575.98px){
    .campaign-hero h1{font-size:3.15rem}
    .campaign-hero-auth{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
    .campaign-hero-auth .btn{min-width:0;width:100%;padding:.9rem .75rem}
    .campaign-hero-project-actions{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-top:1rem}
    .campaign-hero-project-actions a{min-width:0;width:100%;padding:.85rem .65rem}
    .campaign-trust-row{display:grid}
    .ai-core-center span{font-size:2.7rem}
    .ai-core-node--one{left:28%}.ai-core-node--four{left:28%}
    .atlas-variants-stage,.atlas-evidence-stage,.language-tree-branches,.score-rule-grid{grid-template-columns:1fr}
    .atlas-level{padding-left:1.3rem;padding-top:4.8rem}.atlas-level__number{left:1.2rem}
    .atlas-ai-package{grid-template-columns:1fr}
    .podium{min-height:250px}.podium-place--first{height:210px}.podium-place--second{height:170px}.podium-place--third{height:135px}
}


/* Rifiniture palette blu */
.campaign-hero,.challenge-home-section,.live-rankings-section{box-shadow:inset 0 -1px 0 rgba(255,255,255,.08)}
.chart-stage,.competition-card,.league-card,.mission-card,.atlas-level,.community-role-grid article{border-color:rgba(37,99,235,.16)}
.chart-stage:hover,.competition-card:hover,.league-card:hover,.mission-card:hover{box-shadow:0 22px 48px rgba(18,63,120,.16)}
.select2-container--default .select2-selection--single{border-color:rgba(37,99,235,.22)!important;background:#edf4fb!important}
.select2-container--default .select2-selection--single:focus,.select2-container--default.select2-container--open .select2-selection--single{border-color:#2563EB!important;box-shadow:0 0 0 .22rem rgba(37,99,235,.14)!important}

/* =========================================================
   ATLANTE PUBBLICO · categorie reali e navigabili
   ========================================================= */
.atlas-real-numbers {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-top: 1.8rem;
}
.atlas-real-numbers span {
    display: inline-flex;
    align-items: baseline;
    gap: .4rem;
    padding: .72rem .95rem;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 999px;
    color: rgba(255,255,255,.82);
    background: rgba(255,255,255,.09);
    backdrop-filter: blur(8px);
    font-size: .78rem;
    font-weight: 760;
}
.atlas-real-numbers b {
    color: #F2C75C;
    font-size: 1.08rem;
    font-weight: 950;
}

.atlas-category-section {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 4% 6%, rgba(37,99,235,.18), transparent 26rem),
        radial-gradient(circle at 96% 12%, rgba(99,102,241,.15), transparent 24rem),
        linear-gradient(145deg, #C9DAEC 0%, #DCE9F7 48%, #C9DDF2 100%);
}
.atlas-category-section::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: .33;
    background-image:
        linear-gradient(rgba(11,31,58,.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(11,31,58,.04) 1px, transparent 1px);
    background-size: 42px 42px;
    mask-image: linear-gradient(to bottom, #000 0%, transparent 75%);
}
.atlas-category-section .app-shell { position: relative; z-index: 1; }

.atlas-category-browser {
    display: grid;
    grid-template-columns: minmax(255px, .72fr) minmax(0, 2.28fr);
    gap: 1.25rem;
    padding: 1rem;
    border: 1px solid rgba(11,31,58,.13);
    border-radius: 34px;
    background: rgba(232,241,250,.78);
    box-shadow: 0 28px 70px rgba(19,63,111,.15);
    backdrop-filter: blur(18px);
}
.atlas-macro-nav {
    display: grid;
    align-content: start;
    gap: .55rem;
    padding: .45rem;
}
.atlas-macro-button {
    display: grid;
    grid-template-columns: 42px 1fr;
    gap: .8rem;
    align-items: center;
    width: 100%;
    padding: .9rem;
    border: 1px solid transparent;
    border-radius: 18px;
    color: #35516F;
    background: transparent;
    text-align: left;
    transition: transform .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.atlas-macro-button > span:first-child {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border-radius: 14px;
    color: #1E4E86;
    background: rgba(37,99,235,.10);
    font-size: .73rem;
    font-weight: 950;
    letter-spacing: .08em;
}
.atlas-macro-button__copy strong {
    display: block;
    color: inherit;
    font-size: .92rem;
    font-weight: 900;
    line-height: 1.2;
}
.atlas-macro-button__copy small {
    display: block;
    margin-top: .25rem;
    color: #6A8098;
    font-size: .68rem;
}
.atlas-macro-button:hover {
    transform: translateX(3px);
    border-color: rgba(37,99,235,.17);
    background: rgba(255,255,255,.55);
}
.atlas-macro-button.is-active {
    color: #fff;
    border-color: rgba(255,255,255,.13);
    background: linear-gradient(135deg, #0B2B50, #1D65B4 68%, #397DEA);
    box-shadow: 0 15px 32px rgba(16,66,119,.22);
}
.atlas-macro-button.is-active > span:first-child {
    color: #0B2B50;
    background: #F2C75C;
}
.atlas-macro-button.is-active small { color: rgba(255,255,255,.7); }

.atlas-category-panels {
    min-width: 0;
    padding: clamp(1.2rem, 2.5vw, 2rem);
    border-radius: 27px;
    background:
        radial-gradient(circle at 100% 0, rgba(59,130,246,.12), transparent 20rem),
        linear-gradient(145deg, #ECF4FC, #E1ECF8);
    border: 1px solid rgba(37,99,235,.10);
}
.atlas-category-panel[hidden] { display: none !important; }
.atlas-category-panel.is-active { animation: atlasPanelIn .28s ease both; }
@keyframes atlasPanelIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}
.atlas-category-panel__head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1.5rem;
    margin-bottom: 1.35rem;
    padding-bottom: 1.2rem;
    border-bottom: 1px solid rgba(11,31,58,.10);
}
.atlas-category-panel__head > div { max-width: 780px; }
.atlas-category-panel__head h3 {
    margin: 0;
    color: #0B2B50;
    font-size: clamp(1.75rem, 3.2vw, 3rem);
    letter-spacing: -.045em;
}
.atlas-category-panel__head p:not(.campaign-kicker) {
    margin: .6rem 0 0;
    color: #5B728B;
}
.atlas-open-macro {
    flex: 0 0 auto;
    padding: .72rem 1rem;
    border: 1px solid rgba(37,99,235,.25);
    border-radius: 999px;
    color: #174E8A;
    background: rgba(255,255,255,.68);
    font-size: .76rem;
    font-weight: 900;
    transition: .2s ease;
}
.atlas-open-macro:hover,
.atlas-open-macro.is-selected {
    color: #fff;
    border-color: #2563EB;
    background: #2563EB;
}

.atlas-subcategory-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .85rem;
}
.atlas-category-card {
    position: relative;
    display: flex;
    min-height: 215px;
    flex-direction: column;
    align-items: flex-start;
    padding: 1.15rem;
    overflow: hidden;
    border: 1px solid rgba(11,31,58,.11);
    border-radius: 21px;
    color: #173B62;
    background: linear-gradient(145deg, rgba(255,255,255,.74), rgba(222,235,248,.88));
    text-align: left;
    box-shadow: 0 9px 24px rgba(14,48,84,.06);
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.atlas-category-card::after {
    content: "";
    position: absolute;
    width: 110px;
    height: 110px;
    right: -48px;
    top: -48px;
    border-radius: 50%;
    background: rgba(37,99,235,.09);
}
.atlas-category-card:hover,
.atlas-category-card.is-selected {
    transform: translateY(-4px);
    border-color: rgba(37,99,235,.42);
    box-shadow: 0 18px 38px rgba(22,73,126,.14);
}
.atlas-category-card.is-selected {
    outline: 3px solid rgba(37,99,235,.13);
    background: linear-gradient(145deg, #F1F7FD, #DCEBFA);
}
.atlas-category-card.has-data { border-left: 4px solid #2563EB; }
.atlas-category-card.is-open-mission { border-left: 4px solid #D6A84B; }
.atlas-category-card__state {
    position: relative;
    z-index: 1;
    display: inline-flex;
    padding: .32rem .52rem;
    border-radius: 999px;
    color: #1D5BA0;
    background: rgba(37,99,235,.10);
    font-size: .6rem;
    font-weight: 950;
    letter-spacing: .11em;
}
.atlas-category-card.is-open-mission .atlas-category-card__state {
    color: #725313;
    background: rgba(214,168,75,.18);
}
.atlas-category-card strong {
    position: relative;
    z-index: 1;
    display: block;
    margin: .8rem 0 .45rem;
    color: #0B2B50;
    font-size: 1.08rem;
    line-height: 1.22;
}
.atlas-category-card p {
    position: relative;
    z-index: 1;
    margin: 0 0 .8rem;
    color: #627A93;
    font-size: .8rem;
    line-height: 1.48;
}
.atlas-category-card__numbers {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
    margin-top: auto;
    color: #6A8098;
    font-size: .7rem;
}
.atlas-category-card__numbers b { color: #174E8A; }
.atlas-category-card__numbers i { opacity: .45; font-style: normal; }
.atlas-category-card__action {
    position: relative;
    z-index: 1;
    display: block;
    margin-top: .72rem;
    color: #2563EB;
    font-size: .75rem;
    font-weight: 900;
}
.atlas-category-card.is-open-mission .atlas-category-card__action { color: #8A6518; }

.atlas-live-results {
    margin-top: 1.3rem;
    padding: clamp(1.25rem, 3vw, 2.3rem);
    border: 1px solid rgba(11,31,58,.13);
    border-radius: 32px;
    background: linear-gradient(145deg, #EAF3FC, #D8E7F6);
    box-shadow: 0 20px 52px rgba(18,63,112,.12);
}
.atlas-live-results__head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.2rem;
}
.atlas-live-results__head > div { max-width: 900px; }
.atlas-live-results__head h3 {
    margin: 0;
    color: #0B2B50;
    font-size: clamp(1.7rem, 3.3vw, 3rem);
    letter-spacing: -.045em;
}
.atlas-live-results__head p:not(.campaign-kicker) {
    margin: .5rem 0 0;
    color: #5B728B;
}
.atlas-selected-category {
    flex: 0 0 auto;
    padding: .55rem .75rem;
    border-radius: 999px;
    color: #fff;
    background: linear-gradient(135deg, #2563EB, #6366F1);
    font-size: .7rem;
    font-weight: 900;
}
.atlas-results-placeholder,
.atlas-results-loading {
    display: grid;
    min-height: 230px;
    place-content: center;
    padding: 2rem;
    border: 1px dashed rgba(37,99,235,.25);
    border-radius: 24px;
    color: #536D88;
    background: rgba(255,255,255,.42);
    text-align: center;
}
.atlas-results-placeholder > span {
    color: #2563EB;
    font-size: 2.8rem;
    font-weight: 950;
}
.atlas-results-placeholder strong,
.atlas-results-loading strong {
    color: #173B62;
    font-size: 1.2rem;
}
.atlas-results-placeholder p { margin: .45rem 0 0; }
.atlas-results-loading {
    grid-template-columns: repeat(3, 10px);
    gap: .5rem;
}
.atlas-results-loading span {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #2563EB;
    animation: atlasPulse .8s infinite alternate;
}
.atlas-results-loading span:nth-child(2) { animation-delay: .15s; }
.atlas-results-loading span:nth-child(3) { animation-delay: .3s; }
.atlas-results-loading strong { grid-column: 1 / -1; margin-top: .6rem; }
@keyframes atlasPulse { to { opacity: .25; transform: translateY(-4px); } }

.atlas-empty-mission {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 1.25rem;
    align-items: center;
    padding: clamp(1.3rem, 3vw, 2.4rem);
    border: 1px solid rgba(214,168,75,.32);
    border-radius: 25px;
    color: #fff;
    background: linear-gradient(135deg, #0B2B50, #174E8A 62%, #2563EB);
}
.atlas-empty-mission__mark {
    display: grid;
    width: 84px;
    height: 84px;
    place-items: center;
    border-radius: 25px;
    color: #0B2B50;
    background: #F2C75C;
    font-size: 2rem;
    font-weight: 950;
}
.atlas-empty-mission span {
    color: #F2C75C;
    font-size: .65rem;
    font-weight: 950;
    letter-spacing: .14em;
}
.atlas-empty-mission strong {
    display: block;
    margin: .35rem 0;
    font-size: 1.4rem;
}
.atlas-empty-mission p { color: rgba(255,255,255,.74); }

.atlas-record-grid { display: grid; gap: 1rem; }
.atlas-record-card {
    padding: clamp(1rem, 2.5vw, 1.6rem);
    border: 1px solid rgba(11,31,58,.12);
    border-radius: 24px;
    background: linear-gradient(145deg, rgba(255,255,255,.78), rgba(222,235,248,.86));
    box-shadow: 0 12px 32px rgba(14,48,84,.07);
}
.atlas-record-card__top {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: center;
}
.atlas-record-type {
    padding: .35rem .55rem;
    border-radius: 999px;
    color: #fff;
    background: #174E8A;
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .1em;
    text-transform: uppercase;
}
.atlas-record-flags,
.atlas-record-categories {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}
.atlas-record-flags span,
.atlas-record-categories span {
    padding: .3rem .5rem;
    border-radius: 999px;
    color: #365674;
    background: rgba(37,99,235,.09);
    font-size: .65rem;
    font-weight: 800;
}
.atlas-record-pair {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: 1rem;
    align-items: center;
    margin: 1.15rem 0;
}
.atlas-record-pair > div {
    padding: 1rem;
    border-radius: 18px;
    background: rgba(255,255,255,.55);
}
.atlas-record-pair small {
    display: block;
    margin-bottom: .35rem;
    color: #2563EB;
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .12em;
}
.atlas-record-pair strong {
    display: block;
    color: #0B2B50;
    font-size: 1.12rem;
}
.atlas-record-pair i {
    color: #D6A84B;
    font-size: 1.5rem;
    font-style: normal;
    font-weight: 950;
}
.atlas-record-explanation { color: #526C87; }
.atlas-record-categories { margin-top: .8rem; }
.atlas-record-metrics {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin-top: 1rem;
}
.atlas-record-metrics span {
    padding: .5rem .65rem;
    border-radius: 12px;
    color: #536D88;
    background: #D7E7F7;
    font-size: .72rem;
}
.atlas-record-metrics b { color: #174E8A; font-size: .92rem; }
.atlas-record-variants {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
    margin: 1rem 0 0;
    padding: 0;
    list-style: none;
}
.atlas-record-variants li {
    display: grid;
    padding: .75rem;
    border-left: 3px solid #2563EB;
    border-radius: 13px;
    background: rgba(255,255,255,.56);
}
.atlas-record-variants span { color: #607994; font-size: .66rem; }
.atlas-record-variants strong { color: #173B62; }
.atlas-record-variants em { color: #2563EB; font-size: .62rem; font-style: normal; font-weight: 900; }
.atlas-record-no-variants {
    margin-top: 1rem;
    padding: .75rem;
    border-radius: 13px;
    color: #735719;
    background: rgba(214,168,75,.15);
    font-size: .76rem;
    font-weight: 800;
}
.atlas-database-warning {
    display: grid;
    gap: .35rem;
    padding: 1.2rem;
    border: 1px solid rgba(214,168,75,.35);
    border-radius: 18px;
    color: #173B62;
    background: rgba(242,199,92,.16);
}

@media (max-width: 1199.98px) {
    .atlas-category-browser { grid-template-columns: 1fr; }
    .atlas-macro-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .atlas-macro-button { grid-template-columns: 36px 1fr; }
    .atlas-macro-button > span:first-child { width: 36px; height: 36px; }
}
@media (max-width: 991.98px) {
    .atlas-macro-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .atlas-category-panel__head,
    .atlas-live-results__head { align-items: flex-start; flex-direction: column; }
    .atlas-open-macro,
    .atlas-selected-category { align-self: flex-start; }
}
@media (max-width: 767.98px) {
    .atlas-subcategory-grid,
    .atlas-record-variants { grid-template-columns: 1fr; }
    .atlas-record-pair { grid-template-columns: 1fr; }
    .atlas-record-pair i { transform: rotate(90deg); text-align: center; }
}
@media (max-width: 575.98px) {
    .atlas-macro-nav { grid-template-columns: 1fr; }
    .atlas-category-browser { padding: .65rem; border-radius: 24px; }
    .atlas-category-panels { padding: 1rem; border-radius: 20px; }
    .atlas-empty-mission { grid-template-columns: 1fr; }
    .atlas-empty-mission__mark { width: 66px; height: 66px; border-radius: 20px; }
    .atlas-real-numbers { display: grid; }
}

/* Stato editoriale dei contenuti del corpus */
.atlas-record-card__identity {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
}
.atlas-record-state {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: .35rem .6rem;
    border-radius: 999px;
    font-size: .62rem;
    font-weight: 900;
    letter-spacing: .055em;
}
.atlas-record-state--ai {
    color: #123A68;
    border: 1px solid rgba(37, 99, 235, .25);
    background: linear-gradient(135deg, rgba(219, 234, 254, .95), rgba(224, 231, 255, .92));
}
.atlas-record-state--validated {
    color: #14532D;
    border: 1px solid rgba(22, 163, 74, .22);
    background: rgba(220, 252, 231, .92);
}
.atlas-record-ai-note {
    display: grid;
    gap: .2rem;
    margin-top: .9rem;
    padding: .9rem 1rem;
    border-left: 4px solid #2563EB;
    border-radius: 0 14px 14px 0;
    color: #274A70;
    background: linear-gradient(90deg, rgba(219, 234, 254, .8), rgba(238, 242, 255, .56));
}
.atlas-record-ai-note strong {
    color: #123A68;
    font-size: .82rem;
}
.atlas-record-ai-note span {
    font-size: .76rem;
    line-height: 1.5;
}

/* Caricamento progressivo, KPI e paginazione dell'Atlante */
.atlas-kpi-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
    margin: clamp(1.7rem, 4vw, 3rem) 0;
}
.atlas-kpi-card {
    position: relative;
    min-height: 190px;
    overflow: hidden;
    padding: 1.35rem;
    border: 1px solid rgba(37, 99, 235, .16);
    border-radius: 25px;
    color: #173B62;
    background:
        radial-gradient(circle at 100% 0, rgba(96, 165, 250, .22), transparent 42%),
        linear-gradient(145deg, rgba(255,255,255,.94), rgba(218,233,249,.92));
    box-shadow: 0 18px 42px rgba(16, 57, 102, .1);
}
.atlas-kpi-card::after {
    content: '';
    position: absolute;
    right: -32px;
    bottom: -48px;
    width: 118px;
    height: 118px;
    border: 18px solid rgba(37, 99, 235, .08);
    border-radius: 36px;
    transform: rotate(24deg);
}
.atlas-kpi-card > span {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    border-radius: 12px;
    color: #fff;
    background: linear-gradient(135deg, #174E8A, #2563EB);
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .08em;
}
.atlas-kpi-card > strong {
    display: block;
    margin-top: 1rem;
    color: #0B2B50;
    font-size: clamp(2.3rem, 5vw, 4.25rem);
    line-height: .9;
    letter-spacing: -.065em;
}
.atlas-kpi-card > small {
    display: block;
    margin-top: .75rem;
    color: #174E8A;
    font-size: .78rem;
    font-weight: 950;
    letter-spacing: .045em;
    text-transform: uppercase;
}
.atlas-kpi-card > p {
    position: relative;
    z-index: 1;
    max-width: 250px;
    margin: .45rem 0 0;
    color: #607994;
    font-size: .78rem;
    line-height: 1.45;
}
.atlas-kpi-card--loading > span,
.atlas-kpi-card--loading > strong,
.atlas-kpi-card--loading > small {
    color: transparent;
    background: linear-gradient(90deg, rgba(174,199,226,.45), rgba(226,237,248,.9), rgba(174,199,226,.45));
    background-size: 220% 100%;
    animation: atlasSkeleton 1.2s linear infinite;
}
.atlas-kpi-card--loading > strong { width: 60%; height: 58px; border-radius: 15px; }
.atlas-kpi-card--loading > small { width: 78%; height: 15px; border-radius: 999px; }
.atlas-kpi-card--loading > p { display: none; }
@keyframes atlasSkeleton { to { background-position: -220% 0; } }

.atlas-panel-loading {
    display: grid;
    grid-template-columns: repeat(3, 10px);
    min-height: 310px;
    place-content: center;
    gap: .5rem;
    color: #496987;
    text-align: center;
}
.atlas-panel-loading > span {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #2563EB;
    animation: atlasPulse .8s infinite alternate;
}
.atlas-panel-loading > span:nth-child(2) { animation-delay: .15s; }
.atlas-panel-loading > span:nth-child(3) { animation-delay: .3s; }
.atlas-panel-loading > strong,
.atlas-panel-loading > small {
    grid-column: 1 / -1;
}
.atlas-panel-loading > strong {
    margin-top: .65rem;
    color: #173B62;
    font-size: 1.1rem;
}
.atlas-panel-loading > small { max-width: 420px; }

.atlas-results-body {
    min-height: 220px;
}
.atlas-record-grid {
    grid-template-columns: minmax(0, 1fr);
}
.atlas-pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: .8rem;
    margin-top: 1.25rem;
    padding-top: 1.1rem;
    border-top: 1px solid rgba(11, 43, 80, .12);
}
.atlas-pagination[hidden] { display: none !important; }
.atlas-pagination > span {
    min-width: 105px;
    color: #607994;
    text-align: center;
    font-size: .8rem;
}
.atlas-pagination > span b { color: #174E8A; font-size: 1rem; }
.atlas-page-button {
    min-height: 42px;
    padding: .65rem 1rem;
    border: 1px solid rgba(37, 99, 235, .24);
    border-radius: 999px;
    color: #174E8A;
    background: rgba(255, 255, 255, .74);
    font-size: .76rem;
    font-weight: 900;
    transition: transform .18s ease, background .18s ease, color .18s ease;
}
.atlas-page-button:hover:not(:disabled) {
    color: #fff;
    background: #2563EB;
    transform: translateY(-2px);
}
.atlas-page-button:disabled {
    cursor: not-allowed;
    opacity: .38;
}

@media (max-width: 1199.98px) {
    .atlas-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .atlas-kpi-grid { grid-template-columns: 1fr; }
    .atlas-kpi-card { min-height: 165px; }
    .atlas-pagination { gap: .45rem; }
    .atlas-page-button { padding-inline: .75rem; }
}

/* Composizione reale del corpus */
.atlas-corpus-composition {
    position: relative;
    margin: 26px 0 34px;
    padding: clamp(22px, 3vw, 34px);
    overflow: hidden;
    border: 1px solid rgba(28, 91, 196, 0.18);
    border-radius: 28px;
    background:
        radial-gradient(circle at 94% 4%, rgba(63, 136, 255, 0.20), transparent 34%),
        linear-gradient(135deg, #0b2f67 0%, #124b9c 52%, #1f6ad2 100%);
    box-shadow: 0 22px 60px rgba(12, 47, 103, 0.18);
    color: #fff;
}

.atlas-corpus-composition::after {
    content: '';
    position: absolute;
    width: 260px;
    height: 260px;
    right: -110px;
    bottom: -150px;
    border: 46px solid rgba(255, 255, 255, 0.07);
    border-radius: 50%;
    pointer-events: none;
}

.atlas-corpus-composition__head {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 22px;
}

.atlas-corpus-composition__head .campaign-kicker {
    color: #9cc8ff;
}

.atlas-corpus-composition__head h3 {
    max-width: 720px;
    margin: 0;
    color: #fff;
    font-size: clamp(1.35rem, 2.3vw, 2rem);
}

.atlas-corpus-composition__head > p {
    max-width: 410px;
    margin: 0;
    color: rgba(255, 255, 255, 0.76);
}

.atlas-corpus-breakdown {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.atlas-corpus-stat {
    display: flex;
    align-items: center;
    gap: 13px;
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 19px;
    background: rgba(255, 255, 255, 0.09);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(8px);
}

.atlas-corpus-stat > span {
    display: grid;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    place-items: center;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.14);
    color: #cfe4ff;
    font-weight: 800;
    font-size: 0.92rem;
}

.atlas-corpus-stat > div {
    min-width: 0;
}

.atlas-corpus-stat strong {
    display: block;
    color: #fff;
    font-size: clamp(1.35rem, 2vw, 1.85rem);
    line-height: 1;
}

.atlas-corpus-stat small {
    display: block;
    margin-top: 5px;
    color: #fff;
    font-weight: 800;
    letter-spacing: 0.01em;
}

.atlas-corpus-stat p {
    margin: 3px 0 0;
    overflow: hidden;
    color: rgba(255, 255, 255, 0.66);
    font-size: 0.78rem;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.atlas-corpus-stat--loading > span,
.atlas-corpus-stat--loading > strong,
.atlas-corpus-stat--loading > small {
    background: rgba(255, 255, 255, 0.16);
    color: transparent;
    animation: atlasPulse 1.35s infinite ease-in-out;
}

@media (max-width: 1100px) {
    .atlas-corpus-breakdown { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
    .atlas-corpus-composition__head {
        align-items: flex-start;
        flex-direction: column;
    }
    .atlas-corpus-breakdown { grid-template-columns: 1fr; }
    .atlas-corpus-stat p { white-space: normal; }
}


/* ============ La Chiamata del Borgo (partecipa · gioco dei Custodi) ============ */
.quest-hero { color: #EAF2FF; background: radial-gradient(circle at 85% 0, rgba(37, 99, 235, .55), transparent 46%), linear-gradient(160deg, #081B35 0%, #0B1F3A 52%, #123F78 100%); }
.quest-hero h1 { color: #fff; max-width: 900px; letter-spacing: -.02em; }
.quest-hero h1 strong { color: #F2C75C; }
.quest-kicker { color: #F2C75C; display: inline-flex; align-items: center; gap: .45rem; }
.quest-kicker .icn, .quest-level .icn, .quest-sub .icn { width: 1em; height: 1em; }
.quest-lead { max-width: 760px; color: rgba(234, 242, 255, .82); font-size: 1.06rem; }
.quest-lead b { color: #fff; }
.quest-stats { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 1.6rem; }
.quest-stat { display: grid; grid-template-columns: auto auto; grid-template-rows: auto auto; column-gap: .7rem; align-items: center; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .14); border-radius: 16px; padding: .8rem 1.1rem; min-width: 190px; }
.quest-stat-ico { grid-row: 1 / span 2; width: 38px; height: 38px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; }
.quest-stat-ico .icn { width: 19px; height: 19px; }
.quest-stat-ico.gold { background: rgba(242, 199, 92, .18); color: #F2C75C; }
.quest-stat-ico.teal { background: rgba(14, 165, 233, .2); color: #7DD3FC; }
.quest-stat-ico.blue { background: rgba(96, 165, 250, .2); color: #93C5FD; }
.quest-stat b { font-size: 1.35rem; font-weight: 900; color: #fff; font-variant-numeric: tabular-nums; line-height: 1.05; }
.quest-stat span:last-child { grid-column: 2; font-size: .72rem; color: rgba(234, 242, 255, .68); }
.quest-level { margin-top: 1rem; color: rgba(234, 242, 255, .85); display: inline-flex; align-items: center; gap: .4rem; }
.quest-level b { color: #F2C75C; }

.quest-oath { max-width: 620px; margin: 0 auto; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 22px; padding: 2rem; box-shadow: var(--vision-shadow); }
.quest-oath-form { display: grid; gap: .9rem; }
.quest-oath-form label { font-weight: 800; color: var(--vision-ink); display: inline-flex; align-items: center; gap: .4rem; }
.quest-oath-form label .icn { width: 1.05em; height: 1.05em; color: var(--vision-blue); }
.quest-oath-form select { border: 1.5px solid rgba(16, 37, 63, .18); border-radius: 12px; padding: .75rem .9rem; font-size: 1rem; }
.quest-oath-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; }
.quest-oath-btn .icn { width: 1.05em; height: 1.05em; }

.quest-sub { color: var(--vision-muted); max-width: 720px; }
.quest-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.1rem; margin-top: 1.4rem; }
.quest-card { display: flex; flex-direction: column; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 18px; padding: 1.2rem 1.25rem; box-shadow: 0 14px 34px rgba(18, 53, 91, .08); position: relative; overflow: hidden; transition: transform .14s ease, box-shadow .14s ease; }
.quest-card::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 5px; background: linear-gradient(90deg, var(--vision-blue), var(--vision-teal)); }
.quest-card:hover { transform: translateY(-3px); box-shadow: 0 22px 46px rgba(18, 53, 91, .14); }
.quest-card-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: .55rem; }
.quest-chip { display: inline-flex; align-items: center; gap: .35rem; font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--vision-blue); background: rgba(37, 99, 235, .1); border-radius: 999px; padding: .28rem .65rem; }
.quest-chip .icn { width: .95em; height: .95em; }
.quest-bounty { display: inline-flex; align-items: center; gap: .25rem; font-size: .78rem; font-weight: 900; color: #8A5A00; background: linear-gradient(135deg, #FBE7B4, #F7D98C); border-radius: 999px; padding: .28rem .65rem; animation: q-pulse 1.8s ease-in-out infinite; }
.quest-bounty .icn { width: .9em; height: .9em; }
@keyframes q-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.07); } }
.quest-word { margin: 0 0 .25rem; font-size: 1.3rem; font-weight: 900; color: var(--vision-ink); letter-spacing: -.01em; }
.quest-hint { margin: 0 0 .8rem; font-size: .86rem; color: var(--vision-muted); }
.quest-hint b { color: var(--vision-ink); }
.quest-form { margin-top: auto; display: grid; gap: .6rem; }
.quest-form input[type="text"], .quest-form textarea { width: 100%; border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 12px; padding: .65rem .8rem; font-size: .95rem; }
.quest-form input[type="text"]:focus, .quest-form textarea:focus { outline: none; border-color: var(--vision-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, .14); }
.quest-more summary { cursor: pointer; font-size: .78rem; font-weight: 700; color: var(--vision-blue); }
.quest-more[open] summary { margin-bottom: .5rem; }
.quest-more input, .quest-more textarea { margin-bottom: .5rem; }
.quest-send { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; font-weight: 800; }
.quest-send .icn { width: 1em; height: 1em; }
.quest-reload { text-align: center; margin-top: 1.6rem; }
.quest-reload .btn { display: inline-flex; align-items: center; gap: .45rem; }
.quest-reload .icn { width: 1em; height: 1em; }

.quest-empty { max-width: 640px; margin: 0 auto; text-align: center; background: linear-gradient(160deg, #fff, #F3FAF6); border: 1px solid rgba(14, 165, 233, .25); border-radius: 22px; padding: 2.4rem 2rem; }
.quest-empty-ico { display: inline-flex; width: 56px; height: 56px; border-radius: 50%; align-items: center; justify-content: center; color: #8A5A00; background: linear-gradient(135deg, #F2C75C, #FFE08A); margin-bottom: .8rem; }
.quest-empty-ico .icn { width: 26px; height: 26px; }

.quest-gesta { margin-top: 3rem; }
.quest-gesta h2 { display: inline-flex; align-items: center; gap: .5rem; font-size: 1.3rem; }
.quest-gesta h2 .icn { width: 1em; height: 1em; color: var(--vision-blue); }
.quest-gesta-list { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; gap: .55rem; }
.quest-gesta-list li { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; background: #fff; border: 1px solid rgba(16, 37, 63, .08); border-radius: 14px; padding: .75rem 1rem; }
.quest-gesta-word { color: var(--vision-muted); }
.quest-gesta-word b { color: var(--vision-ink); }
.quest-pill { display: inline-flex; align-items: center; gap: .3rem; font-size: .72rem; font-weight: 800; border-radius: 999px; padding: .3rem .7rem; white-space: nowrap; }
.quest-pill .icn { width: .95em; height: .95em; }
.quest-pill.ok { color: #14532D; background: #DCFCE7; }
.quest-pill.no { color: #7F1D1D; background: #FEE2E2; }
.quest-pill.wait { color: #713F12; background: #FEF3C7; }
@media (prefers-reduced-motion: reduce) { .quest-bounty { animation: none; } }

/* ============ La Sfida dei Borghi (classifiche reali) ============ */
.mio-borgo { background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .16); border-radius: 20px; padding: 1.4rem 1.4rem 1.2rem; color: #EAF2FF; backdrop-filter: blur(4px); }
.mio-borgo-kick { display: inline-flex; align-items: center; gap: .4rem; font-size: .66rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: #F2C75C; }
.mio-borgo-kick .icn { width: 1em; height: 1em; }
.mio-borgo-nome { display: block; font-size: 1.5rem; font-weight: 900; color: #fff; letter-spacing: -.02em; margin: .3rem 0 .1rem; }
.mio-borgo-rank { font-size: 2.6rem; font-weight: 900; color: #F2C75C; letter-spacing: -.03em; line-height: 1; margin: .3rem 0; font-variant-numeric: tabular-nums; }
.mio-borgo-gloria { margin: 0 0 .5rem; font-size: .9rem; color: rgba(234, 242, 255, .8); }
.mio-borgo-gloria b { color: #fff; }
.mio-borgo-gap { display: flex; align-items: center; gap: .4rem; margin: 0 0 1rem; font-size: .88rem; color: rgba(234, 242, 255, .9); }
.mio-borgo-gap .icn { width: 1em; height: 1em; color: #7DD3FC; flex: none; }
.mio-borgo-gap b { color: #fff; }
.mio-borgo-gap.oro .icn { color: #F2C75C; }
.mio-borgo-cta { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; font-weight: 800; }
.mio-borgo-cta .icn { width: 1em; height: 1em; }

.podium-place small { display: block; font-size: .68rem; opacity: .8; margin-top: .15rem; }
.league-ico { display: inline-flex; width: 42px; height: 42px; border-radius: 12px; align-items: center; justify-content: center; color: var(--vision-blue); background: rgba(37, 99, 235, .1); }
.league-ico .icn { width: 20px; height: 20px; }

.sfida-tavola { margin-top: 2.4rem; }
.sfida-tavola h2 { display: inline-flex; align-items: center; gap: .5rem; font-size: 1.3rem; }
.sfida-tavola h2 .icn { width: 1em; height: 1em; color: var(--vision-blue); }
.sfida-tavola-wrap { overflow-x: auto; background: #fff; border: 1px solid rgba(16, 37, 63, .08); border-radius: 18px; box-shadow: 0 14px 34px rgba(18, 53, 91, .06); margin-top: 1rem; }
.sfida-tavola table { width: 100%; border-collapse: collapse; min-width: 640px; }
.sfida-tavola th { text-align: left; font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: var(--vision-muted); padding: .85rem 1rem; border-bottom: 1px solid rgba(16, 37, 63, .1); }
.sfida-tavola td { padding: .75rem 1rem; border-bottom: 1px solid rgba(16, 37, 63, .06); color: var(--vision-ink); font-size: .92rem; }
.sfida-tavola tr:last-child td { border-bottom: 0; }
.sfida-tavola tr.is-mio td { background: rgba(242, 199, 92, .14); }
.sfida-tavola td small { color: var(--vision-muted); }
.sfida-tu { display: inline-block; margin-left: .4rem; font-size: .64rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; color: #8A5A00; background: #F7E7BF; border-radius: 999px; padding: .18rem .55rem; }
.sfida-vuoto { display: flex; align-items: center; justify-content: center; height: 100%; margin: 0; padding: 1.2rem; text-align: center; color: var(--vision-muted); font-size: .92rem; }

/* ============ Menu moderno ============ */
.site-header { background: rgba(255, 255, 255, .82); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid rgba(16, 37, 63, .08); box-shadow: 0 10px 30px rgba(11, 31, 58, .06); }
.site-header .navbar { padding: .55rem 0; }

.nav-links { gap: .15rem; }
.nav-links .nav-link { position: relative; font-weight: 650; font-size: .93rem; color: var(--vision-muted) !important; padding: .55rem .8rem !important; border-radius: 10px; transition: color .15s ease, background .15s ease; white-space: nowrap; }
.nav-links .nav-link::after { content: ""; position: absolute; left: .8rem; right: .8rem; bottom: .3rem; height: 2.5px; border-radius: 999px; background: linear-gradient(90deg, var(--vision-blue), var(--vision-teal)); transform: scaleX(0); transform-origin: left; transition: transform .22s ease; }
.nav-links .nav-link:hover { color: var(--vision-ink) !important; background: rgba(37, 99, 235, .05); }
.nav-links .nav-link:hover::after, .nav-links .nav-link.active::after { transform: scaleX(1); }
.nav-links .nav-link.active { color: var(--vision-ink) !important; }

.nav-actions { display: flex; align-items: center; gap: .6rem; }
.nav-atlas { display: inline-flex; align-items: center; gap: .45rem; font-weight: 800; font-size: .9rem; color: var(--vision-navy); text-decoration: none; padding: .55rem 1rem; border-radius: 999px; border: 1.5px solid rgba(37, 99, 235, .35); background: linear-gradient(135deg, rgba(37, 99, 235, .08), rgba(14, 165, 233, .1)); transition: transform .14s ease, box-shadow .14s ease, border-color .14s ease; white-space: nowrap; }
.nav-atlas .icn { width: 1.05rem; height: 1.05rem; color: var(--vision-blue); }
.nav-atlas:hover { color: var(--vision-navy); transform: translateY(-1px); border-color: var(--vision-blue); box-shadow: 0 10px 24px rgba(37, 99, 235, .18); }
.nav-atlas.is-active { border-color: var(--vision-blue); background: linear-gradient(135deg, rgba(37, 99, 235, .16), rgba(14, 165, 233, .18)); }
.nav-cta { border-radius: 999px; padding: .55rem 1.3rem; font-weight: 800; box-shadow: 0 10px 24px rgba(37, 99, 235, .28); }
.nav-ghost { border: 1.5px solid rgba(16, 37, 63, .16); background: transparent; color: var(--vision-muted); font-weight: 700; font-size: .88rem; border-radius: 999px; padding: .5rem 1.05rem; transition: color .14s, border-color .14s; }
.nav-ghost:hover { color: var(--vision-ink); border-color: rgba(16, 37, 63, .35); }

/* Hamburger custom */
.nav-burger { border: 0; padding: .4rem .3rem; display: inline-flex; flex-direction: column; gap: 5px; box-shadow: none !important; }
.nav-burger span { display: block; width: 24px; height: 2.5px; border-radius: 999px; background: var(--vision-navy); transition: transform .22s ease, opacity .18s ease; }
.nav-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
.nav-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

/* Pannello mobile a scheda */
@media (max-width: 1199.98px) {
    #main-navigation { margin: .7rem 0 .4rem; background: #fff; border: 1px solid rgba(16, 37, 63, .08); border-radius: 18px; box-shadow: 0 24px 60px rgba(11, 31, 58, .14); padding: .8rem; }
    .nav-links { gap: .1rem; }
    .nav-links .nav-link { font-size: 1rem; padding: .7rem .9rem !important; }
    .nav-links .nav-link::after { display: none; }
    .nav-links .nav-link.active { background: rgba(37, 99, 235, .08); }
    .nav-actions { flex-direction: column; align-items: stretch; gap: .5rem; margin-top: .6rem; padding-top: .8rem; border-top: 1px solid rgba(16, 37, 63, .08); }
    .nav-atlas, .nav-cta { justify-content: center; text-align: center; }
    .nav-logout-form { display: block; }
    .nav-ghost { width: 100%; }
}

/* ============ Footer epico ============ */
.footer-epic { color: #EAF2FF; background: radial-gradient(circle at 90% 0, rgba(37, 99, 235, .45), transparent 44%), linear-gradient(160deg, #081B35 0%, #0B1F3A 55%, #123F78 100%); border-top: 1px solid rgba(255, 255, 255, .08); }
.footer-cta { display: flex; align-items: center; justify-content: space-between; gap: 1.4rem; flex-wrap: wrap; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .14); border-radius: 22px; padding: 1.6rem 1.8rem; margin-bottom: 2.6rem; }
.footer-cta-kick { display: block; font-size: .66rem; font-weight: 900; letter-spacing: .14em; text-transform: uppercase; color: #F2C75C; margin-bottom: .3rem; }
.footer-cta h2 { margin: 0; color: #fff; font-size: 1.45rem; letter-spacing: -.02em; max-width: 620px; }
.footer-cta-btn { border-radius: 999px; font-weight: 800; padding: .8rem 1.6rem; box-shadow: 0 14px 34px rgba(0, 0, 0, .25); white-space: nowrap; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 2.2rem; }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr; gap: 1.6rem; } }
.footer-epic .footer-brand { display: flex; align-items: center; gap: .7rem; margin-bottom: .9rem; }
.footer-epic .footer-brand strong { display: block; color: #fff; }
.footer-epic .footer-brand span:not(.brand-mark) { color: rgba(234, 242, 255, .65); font-size: .8rem; }
.footer-epic .footer-copy { color: rgba(234, 242, 255, .72); font-size: .92rem; max-width: 460px; }
.footer-epic .footer-title { font-size: .68rem; font-weight: 900; letter-spacing: .14em; text-transform: uppercase; color: #F2C75C; margin-bottom: .9rem; }
.footer-epic .footer-links { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.footer-epic .footer-links a { color: rgba(234, 242, 255, .82); text-decoration: none; font-size: .94rem; display: inline-block; transition: color .14s ease, transform .14s ease; }
.footer-epic .footer-links a:hover { color: #fff; transform: translateX(4px); }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-top: 2.4rem; padding-top: 1.4rem; border-top: 1px solid rgba(255, 255, 255, .1); }
.footer-bottom p { margin: 0; color: rgba(234, 242, 255, .55); font-size: .82rem; }
.footer-bottom p a { color: inherit; text-underline-offset: .18em; }
.footer-bottom p a:hover { color: #fff; }
.footer-top { color: rgba(234, 242, 255, .75); text-decoration: none; font-size: .82rem; font-weight: 700; border: 1px solid rgba(255, 255, 255, .18); border-radius: 999px; padding: .4rem .9rem; transition: background .14s ease, color .14s ease; }
.footer-top:hover { background: rgba(255, 255, 255, .12); color: #fff; }

.chart-vuoto { margin: 0; padding: 2.2rem 1.4rem; text-align: center; color: var(--vision-muted); font-size: .94rem; }

/* ============ Fronti, voti della Compagnia, correzione delle gesta ============ */
.q-fronti { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-bottom: 1.6rem; }
.q-fronti-lab { font-size: .8rem; font-weight: 800; color: var(--vision-muted); text-transform: uppercase; letter-spacing: .08em; }
.q-fronte { display: inline-flex; align-items: center; gap: .45rem; padding: .5rem .95rem; border-radius: 999px; border: 1.5px solid rgba(16, 37, 63, .16); background: #fff; color: var(--vision-ink); text-decoration: none; transition: border-color .14s, box-shadow .14s, transform .12s; }
.q-fronte .icn { width: 1rem; height: 1rem; color: var(--vision-blue); }
.q-fronte b { font-size: .9rem; }
.q-fronte small { font-size: .7rem; color: var(--vision-muted); }
.q-fronte:hover { color: var(--vision-ink); border-color: var(--vision-blue); transform: translateY(-1px); }
.q-fronte.is-on { border-color: var(--vision-blue); background: linear-gradient(135deg, rgba(37, 99, 235, .1), rgba(14, 165, 233, .12)); box-shadow: 0 8px 20px rgba(37, 99, 235, .15); }

.q-voti { margin-top: 3rem; }
.q-voti-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; margin-top: 1.2rem; }
.q-voto { background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 16px; padding: 1.05rem 1.15rem; box-shadow: 0 12px 28px rgba(18, 53, 91, .07); }
.q-voto-comune { display: inline-flex; align-items: center; gap: .3rem; font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--vision-blue); }
.q-voto-comune .icn { width: .95em; height: .95em; }
.q-voto-forma { margin: .35rem 0 .1rem; font-size: 1.25rem; font-weight: 900; color: var(--vision-ink); letter-spacing: -.01em; }
.q-voto-ita { margin: 0 0 .8rem; font-size: .85rem; color: var(--vision-muted); }
.q-voto-azioni { display: flex; gap: .5rem; flex-wrap: wrap; }

.quest-gesta-list li { align-items: flex-start; }
.quest-gesta-side { display: inline-flex; align-items: center; gap: .5rem; }
.q-edit { flex-basis: 100%; }
.q-edit summary { cursor: pointer; font-size: .78rem; font-weight: 700; color: var(--vision-blue); }
.q-edit-form { display: grid; gap: .5rem; margin-top: .6rem; padding-top: .6rem; border-top: 1px dashed rgba(16, 37, 63, .12); }
.q-edit-form input, .q-edit-form textarea { width: 100%; border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 10px; padding: .55rem .7rem; font-size: .9rem; }
.q-edit-form button { justify-self: start; }

/* ============ Il Santuario del Custode ============ */
.sant-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.4rem; }
.sant-esci { color: rgba(234, 242, 255, .8); border-color: rgba(255, 255, 255, .25); }
.sant-esci:hover { color: #fff; border-color: rgba(255, 255, 255, .5); }
.sant-rango-bar { height: 9px; max-width: 460px; border-radius: 999px; background: rgba(255, 255, 255, .16); overflow: hidden; margin-top: .7rem; }
.sant-rango-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #F2C75C, #34D399); transition: width .6s ease; }
.sant-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 1.2rem; margin-bottom: 2.4rem; }
.account-panel-head h2 { display: inline-flex; align-items: center; gap: .45rem; }
.account-panel-head h2 .icn { width: 1em; height: 1em; color: var(--vision-blue); }
.sant-comune-nome { display: block; font-size: 1.25rem; color: var(--vision-ink); }
.sant-comune-nome small { color: var(--vision-muted); font-size: .8rem; }
.sant-comune-rank { margin: .35rem 0 0; color: var(--vision-ink); }
.sant-comune-gap { display: flex; align-items: center; gap: .35rem; margin: .25rem 0 0; font-size: .88rem; color: var(--vision-muted); }
.sant-comune-gap .icn { width: 1em; height: 1em; color: var(--vision-teal); }
.sant-comune-numeri { margin: .45rem 0 .9rem; font-size: .85rem; color: var(--vision-muted); }
.sant-comune .btn, .account-panel .btn-primary { display: inline-flex; align-items: center; gap: .4rem; }
.sant-comune .btn .icn { width: 1em; height: 1em; }
.sant-spia { display: flex; align-items: flex-start; gap: .35rem; margin-top: .4rem; font-size: .78rem; color: #8A5A00; background: #FDF3D7; border-radius: 10px; padding: .45rem .6rem; }
.sant-spia .icn { width: 1em; height: 1em; flex: none; margin-top: .1rem; }
.sant-diario { margin-top: 2.6rem; }
.sant-diario h2 { display: inline-flex; align-items: center; gap: .5rem; font-size: 1.3rem; }
.sant-diario h2 .icn { width: 1em; height: 1em; color: #C98A1E; }
.sant-diario ul { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; gap: .45rem; }
.sant-diario li { display: flex; align-items: baseline; gap: .8rem; background: #fff; border: 1px solid rgba(16, 37, 63, .08); border-radius: 12px; padding: .65rem .9rem; }
.sant-diario-punti { font-weight: 900; font-variant-numeric: tabular-nums; min-width: 3.2rem; }
.sant-diario-punti.su { color: #15803D; }
.sant-diario-punti.giu { color: #B91C1C; }
.sant-diario-testo { flex: 1; color: var(--vision-ink); font-size: .92rem; }
.sant-diario-testo em { color: var(--vision-muted); font-style: normal; font-size: .8rem; }
.sant-diario-data { color: var(--vision-muted); font-size: .78rem; white-space: nowrap; }

/* ============ Compagnie aperte e cambio Comune ============ */
.sant-cambia { margin-top: .8rem; }
.sant-cambia summary { cursor: pointer; font-size: .8rem; font-weight: 700; color: var(--vision-blue); }
.sant-cambia-form { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .6rem; }
.sant-cambia-form select { flex: 1; min-width: 220px; border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 10px; padding: .55rem .7rem; }
.team-presidio { margin: -.2rem 0 1rem; }
.team-presidio b { color: var(--vision-ink); }
.team-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.4rem; }
.team-lavoro { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.team-lavoro li { display: flex; align-items: center; justify-content: space-between; gap: .7rem; flex-wrap: wrap; background: #F7FAFF; border: 1px solid rgba(16, 37, 63, .06); border-radius: 10px; padding: .55rem .75rem; }
.team-lavoro-voce { font-size: .88rem; color: var(--vision-muted); }
.team-lavoro-voce b { color: var(--vision-ink); }
.team-lavoro-voce small { color: var(--vision-muted); }
.team-nota { margin: .7rem 0 0; font-size: .8rem; color: var(--vision-muted); }

/* ============ Menu compatto: tendine Scopri e utente ============ */
.nav-drop { border: 1px solid rgba(16, 37, 63, .08); border-radius: 14px; box-shadow: 0 24px 60px rgba(11, 31, 58, .16); padding: .45rem; margin-top: .5rem; min-width: 210px; }
.nav-drop .dropdown-item { border-radius: 9px; padding: .55rem .8rem; font-size: .92rem; font-weight: 600; color: var(--vision-muted); }
.nav-drop .dropdown-item:hover { background: rgba(37, 99, 235, .07); color: var(--vision-ink); }
.nav-drop .dropdown-item.active { background: rgba(37, 99, 235, .1); color: var(--vision-ink); }
.nav-drop .dropdown-divider { margin: .35rem .4rem; border-color: rgba(16, 37, 63, .08); }
.nav-drop-esci { color: #B91C1C !important; }
.nav-drop-esci:hover { background: #FEF2F2 !important; }
.nav-links .dropdown-toggle::after { margin-left: .35rem; vertical-align: .12em; }

.nav-user-btn { display: inline-flex; align-items: center; gap: .5rem; background: transparent; border: 1.5px solid rgba(16, 37, 63, .14); border-radius: 999px; padding: .3rem .85rem .3rem .3rem; font-weight: 700; font-size: .88rem; color: var(--vision-ink); transition: border-color .14s, box-shadow .14s; }
.nav-user-btn:hover { border-color: var(--vision-blue); box-shadow: 0 8px 20px rgba(37, 99, 235, .12); }
.nav-user-avatar { width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: 900; font-size: .85rem; background: linear-gradient(135deg, var(--vision-blue), var(--vision-teal)); }
.nav-user-nome { max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 1199.98px) {
    .nav-drop { box-shadow: 0 12px 30px rgba(11, 31, 58, .18); border: 1px solid rgba(16, 37, 63, .12); background: #FFFFFF; margin: .2rem 0 .4rem; }
    .nav-user { width: 100%; }
    .nav-user-btn { width: 100%; justify-content: flex-start; }
}

/* ============ Brand lockup moderno (parte sinistra del menu) ============ */
.brand-lockup { display: inline-flex; align-items: center; gap: .65rem; text-decoration: none; padding: .15rem 0; }
.brand-lockup .brand-mark { width: 40px; height: 40px; border-radius: 13px; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: 900; font-size: .95rem; letter-spacing: .02em; background: linear-gradient(135deg, #0B1F3A 0%, #2563EB 70%, #0EA5E9 110%); box-shadow: 0 10px 22px rgba(37, 99, 235, .28); flex: none; transition: transform .14s ease, box-shadow .14s ease; }
.brand-lockup:hover .brand-mark { transform: translateY(-1px) rotate(-3deg); box-shadow: 0 14px 28px rgba(37, 99, 235, .36); }
.brand-lockup > span:last-child { display: flex; flex-direction: column; line-height: 1.12; }
.brand-lockup strong { color: var(--vision-ink); font-size: 1.04rem; font-weight: 900; letter-spacing: -.02em; }
.brand-lockup small { color: var(--vision-muted); font-size: .66rem; font-weight: 600; letter-spacing: .04em; }
@media (max-width: 1439.98px) { .brand-lockup small { display: none; } }
@media (max-width: 1199.98px) { .brand-lockup small { display: block; } }

/* ============ Link di sinistra a capsula segmentata (pari alla destra) ============ */
.nav-links { background: rgba(11, 31, 58, .05); border: 1px solid rgba(11, 31, 58, .06); border-radius: 999px; padding: .28rem; gap: .1rem; }
.nav-links .nav-link { border-radius: 999px; padding: .5rem 1.05rem !important; font-weight: 700; color: var(--vision-muted) !important; background: transparent; }
.nav-links .nav-link::after { display: none; }
.nav-links .nav-link:hover { color: var(--vision-ink) !important; background: rgba(255, 255, 255, .7); }
.nav-links .nav-link.active { color: var(--vision-ink) !important; background: #fff; box-shadow: 0 6px 16px rgba(11, 31, 58, .14); }
.nav-links .dropdown-toggle::after { display: inline-block; }
@media (max-width: 1199.98px) {
    .nav-links { background: transparent; border: 0; border-radius: 0; padding: 0; }
    .nav-links .nav-link { border-radius: 10px; }
    .nav-links .nav-link.active { box-shadow: none; background: rgba(37, 99, 235, .08); }
}

/* ============ Icone nel menu + chevron di Scopri ============ */
.nav-ico { width: 1rem; height: 1rem; margin-right: .42rem; vertical-align: -.16em; opacity: .85; }
.nav-links .nav-link { display: inline-flex; align-items: center; }
.nav-links .nav-link.active .nav-ico, .nav-links .nav-link:hover .nav-ico { opacity: 1; color: var(--vision-blue); }
.nav-chev { width: .8rem; height: .8rem; margin-left: .32rem; transition: transform .18s ease; }
.nav-links .nav-link[aria-expanded="true"] .nav-chev { transform: rotate(180deg); }
.nav-links .dropdown-toggle::after { display: none; }
.nav-drop .dropdown-item { display: flex; align-items: center; }
.nav-drop .dropdown-item .icn { width: 1.05rem; height: 1.05rem; margin-right: .55rem; color: var(--vision-blue); flex: none; }

/* ============ Contribuisci: bottone in evidenza a fine gruppo sinistro ============ */
.nav-center { display: flex; align-items: center; gap: .7rem; }
.nav-play { display: inline-flex; align-items: center; gap: .45rem; padding: .58rem 1.25rem; border-radius: 999px; font-weight: 900; font-size: .92rem; color: #fff; text-decoration: none; background: linear-gradient(135deg, #2563EB, #0EA5E9); box-shadow: 0 10px 26px rgba(37, 99, 235, .35); transition: transform .14s ease, box-shadow .14s ease, filter .14s ease; white-space: nowrap; }
.nav-play .icn { width: 1.05rem; height: 1.05rem; }
.nav-play:hover { color: #fff; transform: translateY(-1px); filter: brightness(1.07); box-shadow: 0 14px 32px rgba(37, 99, 235, .45); }
.nav-play.is-active { box-shadow: 0 0 0 3px rgba(37, 99, 235, .22), 0 10px 26px rgba(37, 99, 235, .35); }
@media (max-width: 1199.98px) {
    .nav-center { flex-direction: column; align-items: stretch; gap: .4rem; }
    .nav-play { justify-content: center; margin-top: .3rem; }
}

/* ============ Contribuisci a destra, verde ============ */
.nav-play { background: linear-gradient(135deg, #059669, #34D399); box-shadow: 0 10px 26px rgba(5, 150, 105, .38); }
.nav-play:hover { box-shadow: 0 14px 32px rgba(5, 150, 105, .48); }
.nav-play.is-active { box-shadow: 0 0 0 3px rgba(5, 150, 105, .25), 0 10px 26px rgba(5, 150, 105, .38); }

/* ============ Profilo modificabile nel Santuario ============ */
.sant-anagrafica { margin-bottom: 1rem; padding-bottom: .8rem; border-bottom: 1px dashed rgba(16, 37, 63, .12); }
.sant-profilo-form { display: grid; gap: .8rem; }
.sant-form-riga { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
@media (max-width: 560px) { .sant-form-riga { grid-template-columns: 1fr; } }
.sant-profilo-form .auth-field span small { color: var(--vision-muted); font-weight: 500; }
.sant-profilo-form input[type="text"], .sant-profilo-form input[type="password"], .sant-profilo-form textarea { width: 100%; border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 10px; padding: .6rem .75rem; font-size: .94rem; }
.sant-profilo-form input:focus, .sant-profilo-form textarea:focus { outline: none; border-color: var(--vision-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, .14); }
.sant-check { display: flex; align-items: flex-start; gap: .55rem; font-size: .86rem; color: var(--vision-muted); cursor: pointer; }
.sant-check input { margin-top: .2rem; accent-color: #2563EB; width: 1.05rem; height: 1.05rem; flex: none; }
.sant-profilo-form .btn { justify-self: start; }

/* ============ Contribuisci in stile console: hero, cruscotto, HUD ============ */
.p-hero-bar { height: 14px; max-width: 720px; border-radius: 999px; background: rgba(255, 255, 255, .16); overflow: hidden; margin-top: 1.1rem; }
.p-hero-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #34D399, #0EA5E9); position: relative; overflow: hidden; transition: width .6s ease; }
.p-hero-bar.is-live span::after { content: ""; position: absolute; top: 0; bottom: 0; width: 40%; background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent); animation: p-shimmer 2.4s linear infinite; }
@keyframes p-shimmer { 0% { transform: translateX(-130%); } 100% { transform: translateX(260%); } }
.p-hero-sub { margin: .6rem 0 0; color: rgba(234, 242, 255, .85); }
.p-hero-sub b { color: #fff; }
.p-hero-palio { display: flex; align-items: center; gap: .4rem; margin: .5rem 0 0; color: rgba(234, 242, 255, .9); }
.p-hero-palio .icn { width: 1em; height: 1em; color: #F2C75C; }
.p-hero-palio b { color: #F2C75C; }
.hero-vai { display: inline-flex; align-items: center; gap: .45rem; margin-top: 1.1rem; background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .28); color: #fff; font-weight: 800; padding: .6rem 1.15rem; border-radius: 12px; text-decoration: none; transition: background .15s, transform .1s; }
.hero-vai:hover { background: rgba(255, 255, 255, .24); color: #fff; transform: translateY(-1px); }
.hero-vai .icn { width: 1rem; height: 1rem; }
.hero-vai .icn:first-child { color: #F2C75C; }

.p-cruscotto { display: grid; grid-template-columns: 300px 1fr; gap: 1.1rem; margin-bottom: 2.4rem; align-items: start; }
@media (max-width: 1000px) { .p-cruscotto { grid-template-columns: 1fr; } }
.p-rail { background: radial-gradient(circle at 100% 0, rgba(37, 99, 235, .5), transparent 46%), linear-gradient(160deg, #081B35 0%, #123F78 64%, #1E4FB0 100%); border-radius: 20px; padding: 1.25rem 1.2rem; color: #EAF2FF; }
.p-rail h3 { margin: 0; font-size: 1.02rem; font-weight: 900; color: #fff; }
.p-rail-sub { margin: .15rem 0 .9rem; font-size: .76rem; color: rgba(234, 242, 255, .68); }
.p-rail-list { list-style: none; margin: 0; padding: 0; }
.p-rail-list li { display: flex; align-items: center; gap: .6rem; padding: .55rem 0; border-bottom: 1px solid rgba(255, 255, 255, .08); }
.p-rail-list li:last-child { border-bottom: 0; }
.p-rail-ico { width: 30px; height: 30px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, .12); flex: none; }
.p-rail-ico .icn { width: 15px; height: 15px; }
.p-rail-lab { flex: 1; font-size: .8rem; color: rgba(234, 242, 255, .85); }
.p-rail-list b { font-size: 1.05rem; font-weight: 900; color: #fff; font-variant-numeric: tabular-nums; }
.p-rail-cta { display: flex; align-items: center; justify-content: center; gap: .4rem; margin-top: 1rem; background: linear-gradient(135deg, #34D399, #0EA5E9); color: #05323a; font-weight: 900; padding: .62rem; border-radius: 12px; text-decoration: none; transition: filter .15s, transform .1s; }
.p-rail-cta:hover { filter: brightness(1.06); transform: translateY(-1px); color: #05323a; }
.p-rail-cta .icn { width: 1rem; height: 1rem; }

.p-dash { display: grid; grid-template-columns: 300px 1fr; gap: 1.1rem; align-content: start; }
@media (max-width: 760px) { .p-dash { grid-template-columns: 1fr; } }
.p-dash-card { background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 18px; padding: 1.1rem 1.2rem; box-shadow: 0 14px 34px rgba(18, 53, 91, .07); }
.p-dash-head { display: flex; align-items: center; gap: .55rem; margin-bottom: .8rem; }
.p-dash-head h3 { margin: 0; font-size: .95rem; font-weight: 800; color: var(--vision-ink); }
.p-dash-ico { width: 30px; height: 30px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: linear-gradient(135deg, #2563EB, #0EA5E9); flex: none; }
.p-dash-ico .icn { width: 15px; height: 15px; }
.p-dough { position: relative; height: 180px; }
.p-dough-c { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: .05rem; pointer-events: none; }
.p-dough-c b { font-size: 1.8rem; font-weight: 900; color: var(--vision-ink); }
.p-dough-c span { font-size: .85rem; font-weight: 800; color: var(--vision-muted); align-self: flex-start; margin-top: 1.8rem; }
.p-canvas { position: relative; height: 200px; }
.p-dash-note { margin: .6rem 0 0; text-align: center; font-size: .78rem; color: var(--vision-muted); }
.p-dash-vuoto { display: flex; align-items: center; justify-content: center; height: 100%; margin: 0; color: var(--vision-muted); font-size: .9rem; }

.quest-bounty small { font-weight: 800; opacity: .8; }

.p-hud-spacer { height: 86px; }
.p-hud { position: fixed; left: 0; right: 0; bottom: 0; z-index: 900; display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; padding: .65rem clamp(1rem, 4vw, 2.4rem); color: #EAF2FF; background: radial-gradient(circle at 0 0, rgba(37, 99, 235, .5), transparent 40%), linear-gradient(90deg, #081B35, #123F78 60%, #1E4FB0); border-top: 1px solid rgba(255, 255, 255, .14); box-shadow: 0 -12px 34px rgba(8, 27, 53, .4); }
.p-hud-prog { flex: 1; min-width: 210px; display: flex; flex-direction: column; gap: .22rem; }
.p-hud-lab { display: flex; align-items: center; gap: .35rem; font-size: .6rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: #F2C75C; }
.p-hud-lab .icn { width: .9em; height: .9em; }
.p-hud-bar { height: 8px; border-radius: 999px; background: rgba(255, 255, 255, .18); overflow: hidden; }
.p-hud-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #34D399, #0EA5E9); }
.p-hud-val { font-size: .74rem; color: rgba(234, 242, 255, .85); }
.p-hud-val b { color: #fff; }
.p-hud-item { display: inline-flex; align-items: center; gap: .45rem; background: rgba(255, 255, 255, .09); border-radius: 12px; padding: .5rem .85rem; font-size: .85rem; white-space: nowrap; }
.p-hud-item .icn { width: 1rem; height: 1rem; color: #F2C75C; }
.p-hud-item b { color: #fff; font-weight: 900; }
.p-hud-regole .icn { color: #34D399; }
.p-hud-cta { display: inline-flex; align-items: center; gap: .4rem; background: linear-gradient(135deg, #059669, #34D399); color: #04281c; font-weight: 900; padding: .62rem 1.15rem; border-radius: 13px; text-decoration: none; box-shadow: 0 10px 24px rgba(5, 150, 105, .45); white-space: nowrap; transition: filter .15s, transform .1s; }
.p-hud-cta:hover { filter: brightness(1.07); transform: translateY(-1px); color: #04281c; }
.p-hud-cta .icn { width: 1rem; height: 1rem; }
@media (max-width: 680px) { .p-hud-prog { flex-basis: 100%; } .p-hud-regole { display: none; } .p-hud-cta { flex: 1; justify-content: center; } }

/* ============ Territori: striscia dei totali reali ============ */
.territory-live { padding: 1.1rem 0; background: #fff; border-bottom: 1px solid rgba(16, 37, 63, .06); }
.t-live { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; }
.t-live-item { text-align: center; }
.t-live-item b { display: block; font-size: 1.45rem; font-weight: 900; color: var(--vision-ink); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.t-live-item span { font-size: .72rem; color: var(--vision-muted); font-weight: 600; }

/* ============ Consegna viva: toast, +Gloria che vola, scheda nuova ============ */
.p-toast { position: fixed; left: 50%; bottom: 106px; transform: translate(-50%, 14px); z-index: 1200; background: #0B1F3A; color: #fff; font-weight: 700; font-size: .9rem; padding: .7rem 1.2rem; border-radius: 999px; box-shadow: 0 18px 44px rgba(8, 27, 53, .45); opacity: 0; transition: opacity .25s ease, transform .25s ease; max-width: min(92vw, 560px); text-align: center; }
.p-toast.is-in { opacity: 1; transform: translate(-50%, 0); }
.p-toast-err { background: #7F1D1D; }
.p-fly { position: fixed; z-index: 1300; font-weight: 900; color: #F2C75C; font-size: 1.1rem; text-shadow: 0 2px 8px rgba(8, 27, 53, .5); pointer-events: none; transition: transform .9s cubic-bezier(.3, .7, .3, 1), opacity .9s ease; }
.quest-card.is-new { animation: p-card-in .55s ease; }
@keyframes p-card-in { 0% { opacity: 0; transform: translateY(10px) scale(.97); } 100% { opacity: 1; transform: none; } }
.quest-send.is-busy { opacity: .6; pointer-events: none; }
.quest-form textarea[name="variante_locale"] { min-height: 64px; resize: vertical; }

/* Blocchi delle gesta con paginazione */
.g-blocco { margin-top: .9rem; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 16px; overflow: hidden; }
.g-blocco > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: .55rem; padding: .9rem 1.1rem; font-weight: 800; color: var(--vision-ink); }
.g-blocco > summary::-webkit-details-marker { display: none; }
.g-blocco > summary::after { content: "›"; margin-left: auto; font-size: 1.2rem; color: var(--vision-muted); transform: rotate(90deg); transition: transform .18s ease; }
.g-blocco[open] > summary::after { transform: rotate(-90deg); }
.g-blocco-ico { width: 30px; height: 30px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.g-blocco-ico .icn { width: 16px; height: 16px; }
.g-blocco-ico.wait { color: #713F12; background: #FEF3C7; }
.g-blocco-ico.ok { color: #14532D; background: #DCFCE7; }
.g-blocco-count { font-size: .7rem; font-weight: 900; color: var(--vision-blue); background: rgba(37, 99, 235, .1); border-radius: 999px; padding: .22rem .6rem; }
.g-blocco .quest-gesta-list { padding: 0 1rem 1rem; }
.g-blocco .account-empty { padding: 0 1.1rem 1rem; margin: 0; }
.g-comune { color: var(--vision-muted); }
.g-pager { display: flex; align-items: center; justify-content: center; gap: 1rem; padding: 0 1rem 1rem; font-size: .85rem; }
.g-pager a { font-weight: 800; color: var(--vision-blue); text-decoration: none; }
.g-pager a:hover { text-decoration: underline; }
.g-pager span { color: rgba(16, 37, 63, .3); }
.g-pager em { font-style: normal; color: var(--vision-muted); }

/* ============ Schede a metà schermo, percorsi, Compagnia, forzieri ============ */
.quest-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
@media (max-width: 860px) { .quest-grid { grid-template-columns: 1fr; } }
.quest-fine { grid-column: 1 / -1; text-align: center; color: var(--vision-muted); background: #fff; border: 1px dashed rgba(16, 37, 63, .18); border-radius: 16px; padding: 2rem 1.4rem; margin: 0; }

.q-percorsi { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; margin-bottom: 1.3rem; }
.q-perc { position: relative; display: inline-flex; flex-direction: column; gap: .05rem; padding: .5rem .95rem; border-radius: 13px; border: 1.5px solid rgba(16, 37, 63, .14); background: #fff; text-decoration: none; transition: border-color .14s, box-shadow .14s, transform .12s; }
.q-perc b { font-size: .84rem; color: var(--vision-ink); }
.q-perc small { font-size: .68rem; color: var(--vision-muted); }
.q-perc:hover { border-color: var(--vision-blue); transform: translateY(-1px); }
.q-perc.is-on { border-color: var(--vision-blue); background: linear-gradient(135deg, rgba(37, 99, 235, .09), rgba(14, 165, 233, .11)); box-shadow: 0 8px 20px rgba(37, 99, 235, .14); }
.q-perc.is-facile { border-color: #C98A1E; }
.q-perc-tag { position: absolute; top: -9px; right: 8px; display: inline-flex; align-items: center; gap: .2rem; font-size: .58rem; font-weight: 900; text-transform: uppercase; letter-spacing: .05em; color: #713F12; background: #FDE68A; border-radius: 999px; padding: .14rem .45rem; }
.q-perc-tag .icn { width: .8em; height: .8em; }

.q-comp { margin-top: 3rem; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 18px; padding: 1.3rem 1.4rem; box-shadow: 0 14px 34px rgba(18, 53, 91, .07); }
.q-comp-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.q-comp-head h2 { display: inline-flex; align-items: center; gap: .5rem; margin: 0; font-size: 1.25rem; }
.q-comp-head h2 .icn { width: 1em; height: 1em; color: var(--vision-blue); }
.q-comp-gloria { display: inline-flex; align-items: center; gap: .35rem; font-size: .9rem; color: var(--vision-muted); }
.q-comp-gloria .icn { width: 1em; height: 1em; color: #C98A1E; }
.q-comp-gloria b { color: var(--vision-ink); font-weight: 900; }
.q-comp-tab { display: grid; gap: .35rem; }
.q-comp-riga { display: grid; grid-template-columns: 2fr 1fr .8fr .9fr .8fr; gap: .6rem; align-items: center; padding: .55rem .8rem; border-radius: 10px; background: #F7FAFF; font-size: .88rem; }
.q-comp-int { background: transparent; font-size: .66rem; font-weight: 900; text-transform: uppercase; letter-spacing: .07em; color: var(--vision-muted); }
.q-comp-riga.is-io { background: rgba(37, 99, 235, .09); outline: 1.5px solid rgba(37, 99, 235, .3); }
.q-comp-nome { font-weight: 800; color: var(--vision-ink); }
.q-comp-nome small { color: var(--vision-muted); font-weight: 600; }
.q-comp-ruolo { color: var(--vision-muted); text-transform: capitalize; }
.q-comp-val { color: #15803D; font-weight: 800; }
.q-comp-glo { color: #C98A1E; font-weight: 900; }
@media (max-width: 640px) { .q-comp-riga { grid-template-columns: 1.6fr .9fr .9fr; } .q-comp-riga span:nth-child(2), .q-comp-int span:nth-child(2) { display: none; } }

.g-caricamento { margin: 0; padding: .9rem 1.1rem; color: var(--vision-muted); font-size: .88rem; }
.g-blocco-corpo { border-top: 1px solid rgba(16, 37, 63, .06); }
.p-hud-squadra .icn { color: #7DD3FC; }

/* ============ Rail a quadri e forziere in modale ============ */
.p-rail-h { display: flex; align-items: center; gap: .4rem; margin: 1rem 0 .2rem; font-size: .66rem; font-weight: 900; letter-spacing: .11em; text-transform: uppercase; color: #F2C75C; }
.p-rail-h .icn { width: .95em; height: .95em; }
.p-rail-h:first-of-type { margin-top: .2rem; }

.g-forzieri { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1rem; }
@media (max-width: 640px) { .g-forzieri { grid-template-columns: 1fr; } }
.g-forz { display: flex; align-items: center; gap: .85rem; text-align: left; background: #fff; border: 1.5px solid rgba(16, 37, 63, .12); border-radius: 16px; padding: 1rem 1.15rem; cursor: pointer; transition: border-color .14s, box-shadow .14s, transform .12s; }
.g-forz:hover { border-color: var(--vision-blue); box-shadow: 0 14px 32px rgba(37, 99, 235, .14); transform: translateY(-2px); }
.g-forz b { font-size: 1.7rem; font-weight: 900; color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.g-forz-lab { flex: 1; font-size: .88rem; font-weight: 700; color: var(--vision-muted); }
.g-forz-apri { display: inline-flex; align-items: center; gap: .3rem; font-size: .78rem; font-weight: 900; color: var(--vision-blue); white-space: nowrap; }
.g-forz-apri .icn { width: .95em; height: .95em; }

.g-modal { position: fixed; inset: 0; z-index: 1400; display: flex; align-items: center; justify-content: center; padding: 1.2rem; }
.g-modal[hidden] { display: none; }
.g-modal-back { position: absolute; inset: 0; background: rgba(8, 27, 53, .55); backdrop-filter: blur(3px); }
.g-modal-card { position: relative; width: min(760px, 100%); max-height: min(80vh, 720px); display: flex; flex-direction: column; background: #fff; border-radius: 20px; box-shadow: 0 40px 90px rgba(8, 27, 53, .45); overflow: hidden; animation: p-card-in .3s ease; }
.g-modal-testa { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.3rem; background: linear-gradient(135deg, #0B1F3A, #123F78); color: #fff; }
.g-modal-testa h3 { margin: 0; font-size: 1.05rem; font-weight: 900; }
.g-modal-x { background: rgba(255, 255, 255, .12); border: 0; color: #fff; width: 34px; height: 34px; border-radius: 10px; font-size: 1.3rem; line-height: 1; cursor: pointer; transition: background .14s; }
.g-modal-x:hover { background: rgba(255, 255, 255, .24); }
.g-modal-corpo { overflow-y: auto; padding: .6rem 1rem 1rem; }
.g-modal-corpo .quest-gesta-list { padding: 0; }
.g-modal-corpo .g-pager { padding: .8rem 0 0; }
body.g-modal-aperta { overflow: hidden; }

/* ============ Sottopercorsi ============ */
.q-sottopercorsi { margin-top: -.5rem; padding-left: .4rem; }
.q-perc-sub { padding: .38rem .8rem; border-radius: 11px; }
.q-perc-sub b { font-size: .78rem; }
.q-perc-sub small { font-size: .64rem; }

/* ============ Percorsi a card con barra (nuovo layout) ============ */
.qp-zona { margin-bottom: 1.6rem; }
.qp-titolo { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; margin: 0 0 .7rem; font-size: 1rem; font-weight: 900; color: var(--vision-ink); }
.qp-titolo .icn { width: 1em; height: 1em; color: var(--vision-blue); align-self: center; }
.qp-titolo small { font-size: .78rem; font-weight: 600; color: var(--vision-muted); }
.qp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); gap: .7rem; }
.qp-card { position: relative; display: flex; flex-direction: column; gap: .45rem; padding: .8rem .9rem; background: #fff; border: 1.5px solid rgba(16, 37, 63, .12); border-radius: 14px; text-decoration: none; transition: border-color .14s, box-shadow .14s, transform .12s; }
.qp-card:hover { border-color: var(--vision-blue); transform: translateY(-2px); box-shadow: 0 12px 26px rgba(37, 99, 235, .13); }
.qp-card.is-on { border-color: var(--vision-blue); background: linear-gradient(160deg, rgba(37, 99, 235, .07), rgba(14, 165, 233, .1)); box-shadow: 0 12px 28px rgba(37, 99, 235, .16); }
.qp-card.is-on::after { content: "✓"; position: absolute; top: -8px; right: -8px; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: .72rem; font-weight: 900; color: #fff; background: linear-gradient(135deg, #2563EB, #0EA5E9); box-shadow: 0 4px 10px rgba(37, 99, 235, .4); }
.qp-card.is-facile { border-color: rgba(201, 138, 30, .55); }
.qp-top { display: flex; align-items: flex-start; justify-content: space-between; gap: .4rem; }
.qp-top b { font-size: .84rem; line-height: 1.2; color: var(--vision-ink); }
.qp-fac { width: 22px; height: 22px; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; color: #713F12; background: #FDE68A; flex: none; }
.qp-fac .icn { width: 13px; height: 13px; }
.qp-bar { height: 7px; border-radius: 999px; background: #E9EFF8; overflow: hidden; }
.qp-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #34D399, #0EA5E9); transition: width .5s ease; }
.qp-meta { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.qp-meta em { font-style: normal; font-size: .82rem; font-weight: 900; color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.qp-meta small { font-size: .68rem; color: var(--vision-muted); }
.qp-sub { margin-top: .8rem; padding: .9rem .9rem .95rem; background: rgba(37, 99, 235, .05); border: 1px dashed rgba(37, 99, 235, .3); border-radius: 16px; }
.qp-sub-titolo { display: flex; align-items: baseline; gap: .4rem; margin: 0 0 .65rem; font-size: .86rem; color: var(--vision-ink); }
.qp-sub-titolo .icn { width: .9em; height: .9em; color: var(--vision-blue); align-self: center; }
.qp-sub-titolo small { color: var(--vision-muted); font-size: .72rem; }
.qp-grid-sub { grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: .55rem; }
.qp-mini { padding: .6rem .7rem; border-radius: 12px; gap: .35rem; }
.qp-mini .qp-top b { font-size: .78rem; }
.qp-mini .qp-bar { height: 6px; }

/* ============ La plancia: cruscotto di gioco a schermo fisso ============ */
.plancia-wrap { background: linear-gradient(180deg, #EAF1FB 0%, #F4F8FE 100%); }
.plancia { display: grid; grid-template-columns: 285px minmax(0, 1fr) 320px; grid-template-rows: auto minmax(0, 1fr); gap: .9rem; padding: .9rem clamp(.9rem, 2vw, 1.6rem); height: 880px; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; scrollbar-color: rgba(37, 99, 235, .4) transparent; }
.pl-testa { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 1.2rem; flex-wrap: wrap; padding: .95rem 1.3rem; border-radius: 18px; color: #EAF2FF; background: radial-gradient(circle at 85% 0, rgba(37, 99, 235, .55), transparent 42%), linear-gradient(120deg, #081B35 0%, #0F3364 70%, #1E4FB0 100%); box-shadow: 0 18px 40px rgba(8, 27, 53, .3); }
.pl-kicker { display: flex; align-items: center; gap: .35rem; margin: 0 0 .15rem; font-size: .6rem; font-weight: 900; letter-spacing: .14em; text-transform: uppercase; color: #F2C75C; }
.pl-kicker .icn { width: .95em; height: .95em; }
.pl-testa h1 { margin: 0 0 .45rem; font-size: clamp(1.1rem, 2vw, 1.5rem); font-weight: 900; color: #fff; letter-spacing: -.01em; }
.pl-testa h1 strong { color: #F2C75C; }
.pl-testa h1 small { font-size: .68em; font-weight: 700; color: rgba(234, 242, 255, .75); }
.pl-testa-sx { flex: 1; min-width: 280px; }
.pl-bar { height: 10px; max-width: 560px; border-radius: 999px; background: rgba(255, 255, 255, .16); overflow: hidden; }
.pl-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #34D399, #0EA5E9); transition: width .5s ease; }
.pl-sotto { margin: .4rem 0 0; font-size: .82rem; color: rgba(234, 242, 255, .85); }
.pl-sotto b { color: #fff; }
.pl-palio { color: rgba(234, 242, 255, .95); }
.pl-palio .icn { width: .95em; height: .95em; color: #F2C75C; vertical-align: -.12em; }
.pl-palio b { color: #F2C75C; }
.pl-fronti { display: flex; gap: .5rem; flex-wrap: wrap; }
.pl-fronti .q-fronte { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); color: #EAF2FF; }
.pl-fronti .q-fronte b { color: #fff; }
.pl-fronti .q-fronte small { color: rgba(234, 242, 255, .7); }
.pl-fronti .q-fronte .icn { color: #A9C6F2; }
.pl-fronti .q-fronte:hover .icn { color: #fff; }
.pl-fronti .q-fronte.is-on { background: rgba(255, 255, 255, .22); border-color: #F2C75C; }
.pl-fronti .q-fronte.is-on .icn { color: #F2C75C; }

.pl-col { min-height: 0; overflow-y: auto; padding-right: .2rem; scrollbar-width: thin; scrollbar-color: rgba(11, 31, 58, .25) transparent; }
.pl-col::-webkit-scrollbar { width: 7px; }
.pl-col::-webkit-scrollbar-thumb { background: rgba(11, 31, 58, .2); border-radius: 999px; }
.pl-sx { display: flex; flex-direction: column; gap: .9rem; min-height: 0; overflow-y: auto; overflow-x: hidden; padding-right: .3rem; scrollbar-width: thin; scrollbar-color: rgba(37, 99, 235, .35) transparent; }
.pl-dx { display: flex; flex-direction: column; gap: .9rem; min-height: 0; overflow-y: auto; overflow-x: hidden; padding-right: .3rem; scrollbar-width: thin; scrollbar-color: rgba(37, 99, 235, .35) transparent; }
.pl-centro { min-height: 0; overflow-y: auto; overflow-x: hidden; padding-right: .3rem; scrollbar-width: thin; scrollbar-color: rgba(37, 99, 235, .35) transparent; }
.pl-col-titolo { display: flex; align-items: baseline; gap: .45rem; margin: 0 0 .6rem; font-size: .92rem; font-weight: 900; color: var(--vision-ink); }
.pl-col-titolo .icn { width: 1em; height: 1em; color: var(--vision-blue); align-self: center; }
.pl-col-titolo small { font-weight: 700; color: var(--vision-muted); font-size: .74rem; }
.pl-forzieri { background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 16px; padding: .95rem 1rem; display: flex; flex-direction: column; gap: .6rem; }
.pl-forzieri .g-forz { padding: .7rem .85rem; }
.pl-forzieri .g-forz b { font-size: 1.3rem; }
.pl-voti, .pl-membri { background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 16px; padding: .95rem 1rem; }
.pl-voti .q-voto { border: 0; box-shadow: none; padding: .7rem 0; border-bottom: 1px dashed rgba(16, 37, 63, .12); border-radius: 0; }
.pl-voti .q-voto:last-child { border-bottom: 0; padding-bottom: 0; }
.q-comp-riga-mini { grid-template-columns: 1.6fr .8fr .8fr .9fr; font-size: .8rem; padding: .45rem .6rem; }
.pl-dx .q-comp-int { grid-template-columns: 1.6fr .8fr .8fr .9fr; }
.pl-schede-testa h2 { margin: 0 0 .2rem; font-size: 1.15rem; font-weight: 900; color: var(--vision-ink); }
.pl-schede-testa .quest-sub { margin: 0 0 .9rem; font-size: .84rem; }
.pl-centro .qp-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.pl-centro .quest-grid { margin-top: 0; }
.pl-centro .quest-reload { text-align: center; margin-top: .9rem; }
.p-dough-mini { height: 150px; }
.p-canvas-mini { height: 170px; }
#quest-grid.is-caricando { opacity: .45; pointer-events: none; transition: opacity .15s; }
.plancia-wrap + .g-modal + .p-hud, .p-hud { margin-top: 0; }

@media (max-width: 1160px) {
    .plancia { display: flex; flex-direction: column; height: auto; min-height: 0; }
    /* Su mobile il gioco viene subito: i pannelli laterali scivolano in fondo */
    .pl-testa { order: 0; }
    .pl-centro { order: 1; }
    .pl-sx { order: 2; }
    .pl-dx { order: 3; }
    /* ...e dentro il centro: prima le schede, poi i pannelli di selezione percorso/filone */
    .pl-centro { display: flex; flex-direction: column; }
    .pl-centro > .pl-invito { order: 0; }
    .pl-centro > #pl-gioco { order: 1; }
    .pl-centro > .qp-zona { order: 2; margin-top: 1.2rem; }
    .pl-col { overflow: visible; }
    .pl-testa, .pl-sx, .pl-centro, .pl-dx { margin-bottom: 1rem; }
    body { padding-bottom: 96px; }
}
@media (min-width: 1161px) { .plancia-wrap ~ .footer-epic, body:has(.plancia-wrap) .footer-epic { display: none; } }

/* ============ Plancia: drill-down percorsi, colonne collassabili, misure ============ */
.qp-drill { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; margin-bottom: .7rem; }
.qp-indietro { display: inline-flex; align-items: center; gap: .4rem; padding: .5rem .9rem; border-radius: 11px; border: 1.5px solid rgba(16, 37, 63, .16); background: #fff; font-size: .8rem; font-weight: 800; color: var(--vision-ink); text-decoration: none; transition: border-color .14s, transform .12s; }
.qp-indietro .icn { width: .95em; height: .95em; transform: rotate(180deg); color: var(--vision-blue); }
.qp-indietro:hover { border-color: var(--vision-blue); transform: translateX(-2px); color: var(--vision-ink); }
.qp-corrente { flex: 1; min-width: 220px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .7rem; padding: .5rem .9rem; border-radius: 11px; border: 1.5px solid var(--vision-blue); background: linear-gradient(160deg, rgba(37, 99, 235, .07), rgba(14, 165, 233, .1)); }
.qp-corrente b { font-size: .86rem; color: var(--vision-ink); }
.qp-corrente .qp-bar { height: 7px; }
.qp-corrente small { font-size: .7rem; color: var(--vision-muted); white-space: nowrap; }
.qp-sub { margin-top: 0; }

.pl-toggle { display: flex; align-items: center; gap: .45rem; width: 100%; border: 1px solid rgba(16, 37, 63, .12); background: #fff; border-radius: 11px; padding: .42rem .7rem; font-size: .72rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; color: var(--vision-muted); cursor: pointer; transition: color .14s, border-color .14s; }
.pl-toggle:hover { color: var(--vision-ink); border-color: var(--vision-blue); }
.pl-toggle .icn { width: .95rem; height: .95rem; transition: transform .2s; }
.plancia.pl-sx-chiusa { grid-template-columns: 46px minmax(0, 1fr) 320px; }
.plancia.pl-dx-chiusa { grid-template-columns: 285px minmax(0, 1fr) 46px; }
.plancia.pl-sx-chiusa.pl-dx-chiusa { grid-template-columns: 46px minmax(0, 1fr) 46px; }
.plancia.pl-sx-chiusa .pl-sx > *:not(.pl-toggle), .plancia.pl-dx-chiusa .pl-dx > *:not(.pl-toggle) { display: none; }
.plancia.pl-sx-chiusa .pl-sx .pl-toggle, .plancia.pl-dx-chiusa .pl-dx .pl-toggle { writing-mode: vertical-rl; height: 100%; width: auto; padding: .8rem .3rem; justify-content: flex-start; }
.plancia.pl-sx-chiusa .pl-sx .pl-toggle .icn { transform: rotate(180deg); }
.plancia.pl-dx-chiusa .pl-dx .pl-toggle .icn { transform: rotate(180deg); }
.plancia.pl-sx-chiusa .pl-sx, .plancia.pl-dx-chiusa .pl-dx { overflow: hidden; padding-right: 0; }

.pl-col { padding-bottom: .6rem; }
.pl-centro .quest-reload { padding-bottom: .4rem; }
@media (max-width: 1160px) { .pl-toggle { display: none; } }

/* ============ Stadi dei percorsi, invito, etichette maniglie ============ */
.pl-invito { display: flex; align-items: center; gap: .8rem; padding: 1.1rem 1.2rem; background: #fff; border: 1.5px dashed rgba(37, 99, 235, .4); border-radius: 16px; color: var(--vision-muted); }
.pl-invito p { margin: 0; font-size: .92rem; }
.pl-invito b { color: var(--vision-ink); }
.pl-invito-ico { width: 38px; height: 38px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: linear-gradient(135deg, #2563EB, #0EA5E9); flex: none; }
.pl-invito-ico .icn { width: 19px; height: 19px; }
.qp-titolo-sub { margin-top: .8rem; }
.qp-corrente-link { text-decoration: none; transition: box-shadow .14s, transform .12s; }
.qp-corrente-link:hover { box-shadow: 0 8px 20px rgba(37, 99, 235, .18); transform: translateY(-1px); }
.qp-corrente.is-filone { border-style: dashed; }
.pl-toggle .pl-t-chiusa { display: none; }
.plancia.pl-sx-chiusa .pl-sx .pl-toggle .pl-t-aperta, .plancia.pl-dx-chiusa .pl-dx .pl-toggle .pl-t-aperta { display: none; }
.plancia.pl-sx-chiusa .pl-sx .pl-toggle .pl-t-chiusa, .plancia.pl-dx-chiusa .pl-dx .pl-toggle .pl-t-chiusa { display: inline; }

/* ============ Doppia barra caricate/validate e briciole a capo ============ */
.qp-riga { display: grid; grid-template-columns: 52px 1fr 34px; align-items: center; gap: .4rem; }
.qp-riga small { font-size: .58rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--vision-muted); }
.qp-riga em { font-style: normal; font-size: .66rem; font-weight: 900; color: var(--vision-ink); text-align: right; font-variant-numeric: tabular-nums; }
.qp-riga .qp-bar { height: 6px; }
.qp-riga .qp-bar span { background: linear-gradient(90deg, #60A5FA, #2563EB); }
.qp-riga-val .qp-bar span { background: linear-gradient(90deg, #34D399, #059669); }
.qp-resto { font-size: .66rem; color: var(--vision-muted); }
.qp-card { gap: .35rem; }
.qp-corrente { display: flex; flex-direction: column; align-items: stretch; gap: .3rem; padding: .55rem .9rem; min-width: 240px; }
.qp-cor-nome { font-size: .84rem; font-weight: 900; color: var(--vision-ink); }
.qp-corrente .qp-resto { display: grid; grid-template-columns: 1fr 1fr; gap: .18rem 1.1rem; text-align: left; margin-top: .15rem; }
.qp-corrente .qp-resto span { white-space: nowrap; }
.qp-drill { align-items: stretch; }
.qp-indietro { align-self: center; }

/* ============ Card-percorso a riga intera, numeri accanto alle barre ============ */
.pl-invito { margin-bottom: 1.1rem; }
.qp-righe { grid-template-columns: 1fr !important; gap: .6rem; }
.qp-righe .qp-card { display: grid; grid-template-columns: minmax(180px, 240px) 1fr minmax(230px, auto); grid-template-areas: "nome barre resto"; align-items: center; column-gap: 1.2rem; padding: .7rem 1.1rem; }
.qp-righe .qp-top { grid-area: nome; }
.qp-righe .qp-barre { grid-area: barre; }
.qp-righe .qp-resto { grid-area: resto; text-align: right; }
.qp-barre { display: grid; gap: .32rem; min-width: 0; }
.qp-riga { display: grid; grid-template-columns: 54px 1fr 46px 38px; align-items: center; gap: .45rem; }
.qp-num { font-style: normal; font-size: .7rem; font-weight: 900; color: var(--vision-blue); text-align: right; font-variant-numeric: tabular-nums; }
.qp-riga-val .qp-num { color: #059669; }
.qp-resto b { color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.qp-righe .qp-card.is-on::after { display: none; }
@media (max-width: 900px) {
    .qp-righe .qp-card { grid-template-columns: 1fr; grid-template-areas: "nome" "barre" "resto"; row-gap: .45rem; }
    .qp-righe .qp-resto { text-align: left; }
}
.qp-corrente .qp-resto { text-align: right; }

/* ============ Card-percorso: pila verticale (titolo, barre, numeri) ============ */
.qp-righe .qp-card { display: flex; flex-direction: column; align-items: stretch; gap: .5rem; padding: .85rem 1.15rem 0.8rem; }
.qp-righe .qp-top { display: flex; align-items: center; justify-content: flex-start; gap: .55rem; }
.qp-righe .qp-top b { font-size: .95rem; }
.qp-righe .qp-barre { display: grid; gap: .34rem; width: 100%; }
.qp-riga { grid-template-columns: 64px 1fr 58px 44px; }
.qp-riga .qp-bar { min-width: 0; }
.qp-righe .qp-resto { text-align: left; font-size: .72rem; padding-top: .1rem; border-top: 1px dashed rgba(16, 37, 63, .1); }
@media (max-width: 900px) { .qp-riga { grid-template-columns: 58px 1fr 48px 38px; } }

/* ============ Briciole del drill impilate a tutta larghezza ============ */
.qp-drill { flex-direction: column; align-items: stretch; gap: .55rem; margin-bottom: .9rem; }
.qp-indietro { align-self: flex-start; }
.qp-corrente { width: 100%; min-width: 0; padding: .7rem 1rem; }
.qp-corrente .qp-barre { width: 100%; }
.qp-corrente .qp-riga { grid-template-columns: 64px 1fr 58px 44px; }
.qp-corrente .qp-resto { display: grid; grid-template-columns: 1fr 1fr; gap: .2rem 1.2rem; text-align: left; font-size: .72rem; padding-top: .35rem; border-top: 1px dashed rgba(16, 37, 63, .12); }
.qp-corrente .qp-resto span { white-space: nowrap; }
.qp-corrente .qp-cor-nome { font-size: .95rem; }

/* ============ Stadio di gioco: briciole affiancate, statistiche in colonna ============ */
.qp-resto { display: flex; flex-wrap: wrap; gap: .1rem .75rem; }
.qp-resto span { white-space: nowrap; }
.qp-drill-gioco { display: grid; grid-template-columns: auto 1fr 1fr; align-items: stretch; gap: .6rem; }
.qp-drill-gioco .qp-indietro { align-self: center; }
.qp-drill-gioco .qp-corrente { width: auto; padding: .6rem .9rem; }
.qp-drill-gioco .qp-cor-nome { font-size: .84rem; }
.qp-drill-gioco .qp-riga { grid-template-columns: 56px 1fr 48px 38px; }
.qp-drill-gioco .qp-resto { flex-direction: column; gap: .06rem; }
@media (max-width: 900px) {
    .qp-drill-gioco { grid-template-columns: 1fr; }
    .qp-drill-gioco .qp-indietro { align-self: flex-start; }
}

/* ============ Il Libro del Custode (download PDF) ============ */
.pl-libro { background: linear-gradient(160deg, #FFFDF5, #FFF4D8); border: 1.5px solid rgba(201, 138, 30, .4); border-radius: 16px; padding: .95rem 1rem; }
.pl-libro .pl-col-titolo .icn { color: #C98A1E; }
.pl-libro-sub { margin: -.2rem 0 .7rem; font-size: .78rem; color: #7A5A16; }
.pl-libro-btn { display: flex; align-items: center; justify-content: center; gap: .45rem; padding: .6rem .8rem; border-radius: 11px; font-size: .84rem; font-weight: 900; text-decoration: none; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 8px 20px rgba(201, 138, 30, .35); transition: transform .12s, filter .14s; }
.pl-libro-btn:hover { transform: translateY(-1px); filter: brightness(1.05); color: #3B2A05; }
.pl-libro-btn .icn { width: 1rem; height: 1rem; }
.pl-libro-btn + .pl-libro-btn { margin-top: .5rem; }
.pl-libro-btn-sq { color: #EAF2FF; background: linear-gradient(135deg, #123F78, #2563EB); box-shadow: 0 8px 20px rgba(37, 99, 235, .3); }
.pl-libro-btn-sq:hover { color: #fff; }

/* ============ Moduli collassabili delle colonne (plancia "tutto a vista") ============ */
.pl-mod { background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 14px; box-shadow: 0 8px 22px rgba(11, 31, 58, .06); overflow: hidden; }
.pl-mod summary { list-style: none; display: flex; align-items: center; gap: .55rem; padding: .68rem .8rem; cursor: pointer; user-select: none; }
.pl-mod summary::-webkit-details-marker { display: none; }
.pl-mod-ico { flex: none; width: 30px; height: 30px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: linear-gradient(135deg, #2563EB, #0EA5E9); }
.pl-mod-ico .icn { width: 15px; height: 15px; }
.pl-mod-ico--fuoco { background: linear-gradient(135deg, #C2410C, #F59E0B); }
.pl-mod-ico--oro { background: linear-gradient(135deg, #C98A1E, #F2C75C); }
.pl-mod-ico--verde { background: linear-gradient(135deg, #059669, #34D399); }
.pl-mod-tit { font-size: .84rem; font-weight: 900; color: var(--vision-ink); white-space: nowrap; }
.pl-mod-tit small { font-weight: 800; color: var(--vision-muted); font-size: .68rem; }
.pl-mod-key { margin-left: auto; font-size: .74rem; color: var(--vision-muted); text-align: right; font-variant-numeric: tabular-nums; }
.pl-mod-key b { color: var(--vision-ink); font-size: .88rem; }
.pl-mod-chev { flex: none; font-size: 1.05rem; font-weight: 900; color: var(--vision-muted); transform: rotate(90deg); transition: transform .18s; line-height: 1; }
.pl-mod[open] > summary .pl-mod-chev { transform: rotate(-90deg); }
.pl-mod-corpo { padding: .2rem .8rem .8rem; border-top: 1px dashed rgba(16, 37, 63, .1); }
.pl-mod-corpo--flush { padding: 0 0 .3rem; }

/* variante navy (La Gloria) */
.pl-mod--navy { background: radial-gradient(circle at 85% 0, rgba(37, 99, 235, .5), transparent 45%), linear-gradient(160deg, #081B35, #123F78); border-color: rgba(255, 255, 255, .12); }
.pl-mod--navy .pl-mod-tit { color: #fff; }
.pl-mod--navy .pl-mod-key { color: rgba(234, 242, 255, .7); }
.pl-mod--navy .pl-mod-key b { color: #F2C75C; }
.pl-mod--navy .pl-mod-chev { color: rgba(234, 242, 255, .7); }
.pl-mod--navy .pl-mod-ico { background: linear-gradient(135deg, #C98A1E, #F2C75C); }
.pl-mod--navy .pl-mod-corpo { border-top-color: rgba(255, 255, 255, .14); }

/* moduli statici (riga di azioni, niente fisarmonica) */
.pl-mod-static { display: flex; align-items: center; gap: .55rem; padding: .58rem .8rem; }
.pl-mod-azioni { margin-left: auto; display: inline-flex; align-items: center; gap: .4rem; flex-wrap: wrap; justify-content: flex-end; }
.g-forz-mini { border: 1.5px solid rgba(16, 37, 63, .14); background: #F7FAFF; border-radius: 999px; padding: .3rem .65rem; font-size: .7rem; font-weight: 800; color: var(--vision-muted); cursor: pointer; transition: border-color .13s, transform .12s; }
.g-forz-mini b { color: #C2410C; font-size: .82rem; }
.g-forz-mini--ok b { color: #059669; }
.g-forz-mini:hover { border-color: var(--vision-blue); transform: translateY(-1px); }
.pl-mod--libro { background: linear-gradient(160deg, #FFFDF5, #FFF4D8); border-color: rgba(201, 138, 30, .4); }
.pl-libro-mini { display: inline-flex; align-items: center; gap: .35rem; padding: .38rem .7rem; border-radius: 999px; font-size: .72rem; font-weight: 900; text-decoration: none; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 6px 14px rgba(201, 138, 30, .3); transition: transform .12s; }
.pl-libro-mini:hover { transform: translateY(-1px); color: #3B2A05; }
.pl-libro-mini .icn { width: .85rem; height: .85rem; }
.pl-libro-mini--sq { color: #EAF2FF; background: linear-gradient(135deg, #123F78, #2563EB); padding: .38rem .5rem; }
.pl-libro-mini--sq:hover { color: #fff; }

/* voti compatti */
.vt-riga { display: flex; align-items: center; gap: .6rem; padding: .5rem .8rem; border-bottom: 1px dashed rgba(16, 37, 63, .1); }
.vt-riga:last-child { border-bottom: 0; }
.vt-testo { min-width: 0; display: grid; }
.vt-testo b { font-size: .84rem; color: var(--vision-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vt-testo small { font-size: .7rem; color: var(--vision-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vt-azioni { margin-left: auto; display: inline-flex; gap: .35rem; }
.vt-azioni form { margin: 0; }
.vt-btn { width: 30px; height: 30px; border-radius: 9px; border: 1.5px solid transparent; font-size: .95rem; font-weight: 900; cursor: pointer; transition: transform .12s, filter .13s; }
.vt-btn:hover { transform: translateY(-1px); filter: brightness(1.06); }
.vt-si { color: #14532D; background: #DCFCE7; border-color: rgba(21, 128, 61, .35); }
.vt-no { color: #7F1D1D; background: #FEE2E2; border-color: rgba(153, 27, 27, .3); }

/* HUD: il Libro sempre a portata */
.p-hud-libro { flex: none; width: 38px; height: 38px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 6px 14px rgba(201, 138, 30, .35); transition: transform .12s; }
.p-hud-libro:hover { transform: translateY(-2px); color: #3B2A05; }
.p-hud-libro .icn { width: 17px; height: 17px; }

/* compattezze nelle colonne */
.pl-mod--navy .p-rail-h { margin-top: .55rem; }
.pl-mod--navy .p-rail-h:first-child { margin-top: .35rem; }
.q-comp-riga-mini .q-comp-nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ============ Sicurezze: HUD che non perde pezzi, esempio nei voti ============ */
.p-hud { flex-wrap: wrap; row-gap: .4rem; }
.p-hud-item { white-space: nowrap; flex: none; }
.vt-esempio { color: var(--vision-muted); }

/* ============ Libro a tre volumi e sommario Gloria pieno ============ */
.pl-libro-mini--co { color: #EAF2FF; background: linear-gradient(135deg, #0E7A54, #10B981); }
.pl-libro-mini--co:hover { color: #fff; }
.pl-mod--libro .pl-mod-azioni { gap: .35rem; }
.pl-mod--libro .pl-libro-mini { padding: .34rem .55rem; font-size: .68rem; }
.pl-mod-key { line-height: 1.35; }

/* ================================================================
   Plancia — pulizia estetica: un solo linguaggio per i moduli
   (card bianche, colore solo nelle icone, azioni su riga propria)
   ================================================================ */
.pl-sx, .pl-dx { gap: .65rem; }
.pl-mod, .pl-mod-static { border-radius: 12px; box-shadow: 0 6px 16px rgba(11, 31, 58, .05); }
.pl-mod-tit { font-size: .82rem; }
.pl-mod-ico { width: 26px; height: 26px; border-radius: 8px; }
.pl-mod-ico .icn { width: 13px; height: 13px; }
.pl-mod-key { max-width: 58%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: .7rem; line-height: 1.2; }
.pl-mod-key b { font-size: .8rem; }

/* La Gloria torna bianca come le sorelle: il colore lo porta l'icona */
.pl-mod--navy { background: #fff; border-color: rgba(16, 37, 63, .1); }
.pl-mod--navy .pl-mod-tit { color: var(--vision-ink); }
.pl-mod--navy .pl-mod-key { color: var(--vision-muted); }
.pl-mod--navy .pl-mod-key b { color: var(--vision-ink); }
.pl-mod--navy .pl-mod-chev { color: var(--vision-muted); }
.pl-mod--navy .pl-mod-corpo { border-top-color: rgba(16, 37, 63, .1); }
.pl-mod .p-rail-h { color: var(--vision-ink); font-size: .68rem; }
.pl-mod .p-rail-h .icn { color: var(--vision-blue); }
.pl-mod .p-rail-list li { border-color: rgba(16, 37, 63, .08); }
.pl-mod .p-rail-list .p-rail-lab { color: var(--vision-muted); }
.pl-mod .p-rail-list b { color: var(--vision-ink); }

/* Forziere e Libro: titolo sopra, azioni su riga piena sotto */
.pl-mod-static { flex-wrap: wrap; row-gap: .45rem; }
.pl-mod-static .pl-mod-azioni { flex-basis: 100%; margin-left: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: .4rem; }
.g-forz-mini, .pl-libro-mini { justify-content: center; text-align: center; height: 30px; display: inline-flex; align-items: center; border-radius: 9px; font-size: .68rem; padding: 0 .5rem; }
.pl-mod--libro { background: #fff; border-color: rgba(16, 37, 63, .1); }
.pl-mod--libro .pl-libro-mini { box-shadow: none; border: 1.5px solid rgba(201, 138, 30, .55); background: #FFF9EA; color: #7A5A16; }
.pl-mod--libro .pl-libro-mini:hover { background: #F2C75C; color: #3B2A05; transform: none; }
.pl-mod--libro .pl-libro-mini--co { border-color: rgba(14, 122, 84, .5); background: #EFFBF5; color: #0E7A54; }
.pl-mod--libro .pl-libro-mini--co:hover { background: #10B981; color: #fff; }
.pl-mod--libro .pl-libro-mini--sq { border-color: rgba(37, 99, 235, .45); background: #F0F6FF; color: #1D4ED8; }
.pl-mod--libro .pl-libro-mini--sq:hover { background: #2563EB; color: #fff; }

/* tabella Compagnia che non taglia nulla */
.q-comp-riga-mini { grid-template-columns: 1.5fr .55fr .55fr .75fr; font-size: .74rem; padding: .38rem .5rem; }
.pl-dx .q-comp-int { grid-template-columns: 1.5fr .55fr .55fr .75fr; font-size: .6rem; }
.pl-dx .q-comp-tab { overflow: hidden; }

/* dettagli minori */
.pl-perimetro { color: rgba(234, 242, 255, .7); font-size: .72rem; }
.p-dash-card { border-radius: 12px; box-shadow: 0 6px 16px rgba(11, 31, 58, .05); }
.p-dash-head h3 { font-size: .82rem; }

/* ================================================================
   Plancia — ripristino colori originali (navy Gloria, oro Libro)
   e sommari impilati senza tagli
   ================================================================ */
.pl-mod--navy { background: radial-gradient(circle at 85% 0, rgba(37, 99, 235, .5), transparent 45%), linear-gradient(160deg, #081B35, #123F78); border-color: rgba(255, 255, 255, .12); }
.pl-mod--navy .pl-mod-tit { color: #fff; }
.pl-mod--navy .pl-mod-key { color: rgba(234, 242, 255, .75); }
.pl-mod--navy .pl-mod-key b { color: #F2C75C; }
.pl-mod--navy .pl-mod-chev { color: rgba(234, 242, 255, .75); }
.pl-mod--navy .pl-mod-corpo { border-top-color: rgba(255, 255, 255, .14); }
.pl-mod--navy .p-rail-h { color: #F2C75C; }
.pl-mod--navy .p-rail-h .icn { color: #F2C75C; }
.pl-mod--navy .p-rail-list li { border-color: rgba(255, 255, 255, .12); }
.pl-mod--navy .p-rail-list .p-rail-lab { color: rgba(234, 242, 255, .8); }
.pl-mod--navy .p-rail-list b { color: #fff; }

.pl-mod--libro { background: linear-gradient(160deg, #FFFDF5, #FFF4D8); border-color: rgba(201, 138, 30, .4); }
.pl-mod--libro .pl-libro-mini { border: 0; background: linear-gradient(135deg, #F2C75C, #E0A82B); color: #3B2A05; box-shadow: 0 6px 14px rgba(201, 138, 30, .3); }
.pl-mod--libro .pl-libro-mini:hover { color: #3B2A05; transform: translateY(-1px); }
.pl-mod--libro .pl-libro-mini--co { background: linear-gradient(135deg, #0E7A54, #10B981); color: #EAF7F1; }
.pl-mod--libro .pl-libro-mini--co:hover { color: #fff; }
.pl-mod--libro .pl-libro-mini--sq { background: linear-gradient(135deg, #123F78, #2563EB); color: #EAF2FF; }
.pl-mod--libro .pl-libro-mini--sq:hover { color: #fff; }

/* sommario impilato: tutto leggibile, niente ellissi, niente tagli */
.pl-mod-key { max-width: none; overflow: visible; text-overflow: clip; white-space: normal; }
.pl-mod-key--pila { display: grid; justify-items: end; gap: .05rem; }
.pl-mod-key--pila span { white-space: nowrap; }
.pl-mod summary { align-items: flex-start; }
.pl-mod summary .pl-mod-chev { margin-top: .1rem; }
.pl-mod-static { overflow: visible; }
.pl-col { overflow-y: auto; }

/* ============ Corpi a fisarmonica: bottoni-riga e lista Compagnia ============ */
.pl-mod-corpo .pl-riga-btn { display: flex; align-items: center; gap: .5rem; width: 100%; padding: .55rem .7rem; margin-top: .45rem; border: 1.5px solid rgba(16, 37, 63, .14); border-radius: 10px; background: #F7FAFF; font-size: .78rem; font-weight: 800; color: var(--vision-ink); text-decoration: none; cursor: pointer; text-align: left; transition: border-color .13s, transform .12s; }
.pl-mod-corpo .pl-riga-btn:hover { border-color: var(--vision-blue); transform: translateY(-1px); }
.pl-riga-btn .icn { width: .95rem; height: .95rem; color: var(--vision-blue); flex: none; }
.pl-riga-btn b { margin-left: auto; font-variant-numeric: tabular-nums; color: #C2410C; }
.pl-riga-btn--ok b { color: #059669; }
.pl-riga-btn--oro { background: #FFF9EA; border-color: rgba(201, 138, 30, .5); }
.pl-riga-btn--oro .icn { color: #C98A1E; }
.pl-riga-btn--verde { background: #EFFBF5; border-color: rgba(14, 122, 84, .45); }
.pl-riga-btn--verde .icn { color: #0E7A54; }
.pl-riga-btn--blu { background: #F0F6FF; border-color: rgba(37, 99, 235, .4); }
.pl-riga-btn--blu .icn { color: #1D4ED8; }

.cmp-lista { display: grid; }
.cmp-riga { padding: .5rem .2rem; border-bottom: 1px dashed rgba(16, 37, 63, .1); display: grid; gap: .12rem; }
.cmp-riga:last-child { border-bottom: 0; }
.cmp-riga.is-io { background: linear-gradient(90deg, rgba(242, 199, 92, .14), transparent 70%); border-radius: 8px; padding-left: .45rem; }
.cmp-nome { font-size: .84rem; font-weight: 900; color: var(--vision-ink); overflow-wrap: anywhere; }
.cmp-stat { font-size: .72rem; color: var(--vision-muted); }
.cmp-stat b { color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.cmp-stat .cmp-val { color: #059669; }
.cmp-stat .cmp-glo { color: #C98A1E; }

/* ============ Moduli: sommari a griglia, corpi che scorrono, testi compatti ============ */
.pl-mod summary { display: grid; grid-template-columns: 26px minmax(0, auto) 1fr 12px; align-items: center; column-gap: .5rem; padding: .6rem .7rem; }
.pl-mod summary .pl-mod-tit { white-space: nowrap; }
.pl-mod summary .pl-mod-key { justify-self: end; text-align: right; font-size: .68rem; line-height: 1.25; white-space: normal; }
.pl-mod summary .pl-mod-key b { font-size: .78rem; }
.pl-mod summary .pl-mod-chev { justify-self: end; margin-top: 0; }

/* i corpi non tagliano mai: se serve, scorrono */
.pl-mod-corpo::-webkit-scrollbar { width: 6px; }
.pl-mod-corpo::-webkit-scrollbar-thumb { background: rgba(11, 31, 58, .18); border-radius: 999px; }
.pl-mod--navy .pl-mod-corpo { scrollbar-color: rgba(255, 255, 255, .3) transparent; }

/* interlinea e font più compatti nelle liste della Gloria */
.pl-mod .p-rail-h { font-size: .62rem; margin: .5rem 0 .15rem; }
.pl-mod .p-rail-list li { padding: .28rem 0; }
.pl-mod .p-rail-list .p-rail-lab { font-size: .74rem; }
.pl-mod .p-rail-list b { font-size: .86rem; }
.pl-riga-btn { margin-top: .35rem; padding: .48rem .6rem; font-size: .74rem; }
.cmp-riga { padding: .4rem .2rem; }
.cmp-nome { font-size: .8rem; }
.cmp-stat { font-size: .68rem; }

/* il grafico "cosa manca" ha lo spazio che gli serve */
.p-canvas-mini { height: 235px; }
.p-dash-note { margin: .3rem 0 0; text-align: center; font-size: .72rem; color: var(--vision-muted); }
.p-dough-mini { height: 140px; }

/* ================================================================
   Le Classifiche — modale-trofeo
   ================================================================ */
.cl-sparkle { display: inline-block; animation: cl-brilla 1.8s ease-in-out infinite; color: #C98A1E; }
@keyframes cl-brilla { 0%, 100% { transform: scale(1); opacity: .7; } 50% { transform: scale(1.35); opacity: 1; } }

.cl-modal { position: fixed; inset: 0; z-index: 1200; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.cl-modal[hidden] { display: none; }
.cl-back { position: absolute; inset: 0; background: rgba(6, 16, 32, .66); backdrop-filter: blur(4px); }
.cl-card { position: relative; width: min(680px, 96vw); max-height: 88vh; display: flex; flex-direction: column; background: #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 40px 90px rgba(4, 12, 26, .5); animation: cl-entra .28s cubic-bezier(.2, .9, .3, 1.2); }
@keyframes cl-entra { from { transform: translateY(26px) scale(.96); opacity: 0; } to { transform: none; opacity: 1; } }
body.cl-aperta { overflow: hidden; }

.cl-testa { display: flex; align-items: center; gap: .8rem; padding: 1rem 1.2rem; color: #EAF2FF; background: radial-gradient(circle at 85% -20%, rgba(242, 199, 92, .45), transparent 45%), linear-gradient(120deg, #081B35, #123F78 65%, #1E4FB0); }
.cl-testa-ico { flex: none; width: 42px; height: 42px; border-radius: 13px; display: inline-flex; align-items: center; justify-content: center; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 10px 22px rgba(201, 138, 30, .45); animation: cl-galleggia 3s ease-in-out infinite; }
@keyframes cl-galleggia { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
.cl-testa-ico .icn { width: 21px; height: 21px; }
.cl-testa h3 { margin: 0; font-size: 1.1rem; font-weight: 900; color: #fff; }
.cl-testa p { margin: 0; font-size: .74rem; color: rgba(234, 242, 255, .75); }
.cl-mia-pos { margin-left: auto; font-size: .72rem; color: rgba(234, 242, 255, .85); background: rgba(255, 255, 255, .12); border: 1px solid rgba(242, 199, 92, .5); border-radius: 999px; padding: .3rem .7rem; white-space: nowrap; }
.cl-mia-pos b { color: #F2C75C; }
.cl-x { flex: none; margin-left: .4rem; width: 32px; height: 32px; border: 0; border-radius: 10px; background: rgba(255, 255, 255, .12); color: #fff; font-size: 1.2rem; cursor: pointer; }
.cl-x:hover { background: rgba(255, 255, 255, .22); }

.cl-tabs { display: flex; gap: .35rem; padding: .6rem .9rem; background: #0D2A52; }
.cl-tab { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid rgba(255, 255, 255, .18); background: transparent; color: rgba(234, 242, 255, .8); border-radius: 999px; padding: .34rem .75rem; font-size: .72rem; font-weight: 800; cursor: pointer; transition: background .13s, color .13s; }
.cl-tab .icn { width: .85rem; height: .85rem; }
.cl-tab:hover { color: #fff; background: rgba(255, 255, 255, .1); }
.cl-tab.is-on { background: linear-gradient(135deg, #F2C75C, #E0A82B); border-color: transparent; color: #3B2A05; box-shadow: 0 6px 16px rgba(201, 138, 30, .4); }

.cl-corpo { overflow-y: auto; padding: 1rem 1.1rem 1.2rem; background: linear-gradient(180deg, #F4F8FE, #fff); }
.cl-pane { display: none; }
.cl-pane.is-on { display: block; }
.cl-caricamento, .cl-vuoto { text-align: center; color: var(--vision-muted); padding: 2rem 0; }

/* il podio */
.cl-podio { display: grid; grid-template-columns: 1fr 1.15fr 1fr; align-items: end; gap: .6rem; margin-bottom: 1rem; }
.cl-gradino { position: relative; display: flex; flex-direction: column; align-items: center; gap: .25rem; padding: 1.3rem .6rem .8rem; border-radius: 14px 14px 6px 6px; text-align: center; opacity: 0; transform: translateY(14px); transition: opacity .35s, transform .35s; }
.cl-gradino.is-su { opacity: 1; transform: none; }
.cl-gradino-1 { background: linear-gradient(180deg, #FFF6DC, #FFE9AE); border: 1.5px solid rgba(201, 138, 30, .55); min-height: 148px; box-shadow: 0 14px 30px rgba(201, 138, 30, .3); }
.cl-gradino-2 { background: linear-gradient(180deg, #F4F6FA, #E2E8F0); border: 1.5px solid rgba(100, 116, 139, .4); min-height: 118px; }
.cl-gradino-3 { background: linear-gradient(180deg, #FBEFE4, #F3D8BE); border: 1.5px solid rgba(180, 100, 40, .4); min-height: 104px; }
.cl-gradino-vuoto { border: 1.5px dashed rgba(16, 37, 63, .12); min-height: 90px; opacity: 1; transform: none; }
.cl-corona { position: absolute; top: -.15rem; font-size: 1.05rem; color: #C98A1E; animation: cl-galleggia 2.6s ease-in-out infinite; }
.cl-gradino-2 .cl-corona { color: #64748B; }
.cl-gradino-3 .cl-corona { color: #B46428; }
.cl-podio-nome { font-size: .84rem; font-weight: 900; color: var(--vision-ink); overflow-wrap: anywhere; }
.cl-podio-gloria { font-size: .78rem; font-weight: 900; color: #C98A1E; font-variant-numeric: tabular-nums; }
.cl-podio-gloria small { font-weight: 700; color: var(--vision-muted); }
.cl-gradino.is-io { outline: 2px solid #2563EB; outline-offset: 2px; }

/* medaglie e lista */
.cl-med { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: .74rem; font-weight: 900; color: var(--vision-muted); background: #EDF2F9; }
.cl-med-oro { color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 4px 10px rgba(201, 138, 30, .45); }
.cl-med-argento { color: #1F2937; background: linear-gradient(135deg, #E2E8F0, #B9C4D2); }
.cl-med-bronzo { color: #fff; background: linear-gradient(135deg, #C97B3D, #A85B22); }
.cl-lista { display: grid; gap: .35rem; }
.cl-riga { display: grid; grid-template-columns: 26px 1fr auto; grid-template-areas: "med nome gloria" "med bar bar"; align-items: center; column-gap: .6rem; row-gap: .25rem; background: #fff; border: 1px solid rgba(16, 37, 63, .08); border-radius: 11px; padding: .45rem .6rem; }
.cl-riga .cl-med { grid-area: med; }
.cl-riga-nome { grid-area: nome; font-size: .82rem; font-weight: 800; color: var(--vision-ink); overflow-wrap: anywhere; }
.cl-riga-nome em { font-style: normal; font-size: .68rem; color: #2563EB; }
.cl-riga-gloria { grid-area: gloria; font-size: .8rem; font-weight: 900; color: #C98A1E; font-variant-numeric: tabular-nums; }
.cl-riga-bar { grid-area: bar; height: 5px; border-radius: 999px; background: #EDF2F9; overflow: hidden; }
.cl-riga-bar span { display: block; height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, #F2C75C, #E0A82B); transition: width .6s cubic-bezier(.2, .8, .3, 1); }
.cl-riga.is-io { border-color: #2563EB; background: linear-gradient(90deg, rgba(37, 99, 235, .06), transparent 60%); }
.cl-riga.is-io .cl-riga-bar span { background: linear-gradient(90deg, #60A5FA, #2563EB); }
@media (max-width: 560px) { .cl-mia-pos { display: none; } .cl-podio { grid-template-columns: 1fr; } .cl-gradino { min-height: 0 !important; } }

/* ================================================================
   Profili pubblici (Comune e Compagnia) — pagine condivisibili
   ================================================================ */
.pp-hero { color: #EAF2FF; padding: 3rem 0 2.2rem; background: radial-gradient(circle at 85% 0, rgba(37, 99, 235, .55), transparent 42%), linear-gradient(120deg, #081B35 0%, #0F3364 70%, #1E4FB0 100%); }
.pp-testa { display: flex; align-items: center; gap: 1.3rem; flex-wrap: wrap; }
.pp-stemma { height: 92px; width: auto; filter: drop-shadow(0 10px 22px rgba(0, 0, 0, .4)); }
.pp-vessillo { width: 76px; height: 76px; border-radius: 20px; display: inline-flex; align-items: center; justify-content: center; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 14px 30px rgba(201, 138, 30, .45); }
.pp-vessillo .icn { width: 34px; height: 34px; }
.pp-kicker { color: #F2C75C; margin-bottom: .2rem; }
.pp-hero h1 { margin: 0 0 .3rem; font-size: clamp(1.7rem, 4vw, 2.6rem); font-weight: 900; color: #fff; letter-spacing: -.02em; }
.pp-hero h1 small { font-size: .55em; font-weight: 700; color: rgba(234, 242, 255, .7); }
.pp-sotto { margin: 0; color: rgba(234, 242, 255, .85); }
.pp-link { color: #F2C75C; font-weight: 800; text-decoration: none; }
.pp-link:hover { color: #fff; }
.pp-stat { display: flex; gap: .7rem; flex-wrap: wrap; margin-top: 1.6rem; }
.pp-chip { display: grid; justify-items: center; gap: .05rem; min-width: 118px; padding: .7rem 1rem; border-radius: 14px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); }
.pp-chip b { font-size: 1.35rem; font-weight: 900; color: #fff; font-variant-numeric: tabular-nums; }
.pp-chip span { font-size: .64rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: rgba(234, 242, 255, .7); }
.pp-chip--oro b { color: #F2C75C; }
.pp-chip--verde b { color: #6EE7B7; }
.pp-chip--vuoto { border-style: dashed; }

.pp-corpo { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr); gap: 2rem; }
@media (max-width: 900px) { .pp-corpo { grid-template-columns: 1fr; } }
.pp-h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.15rem; font-weight: 900; color: var(--vision-ink); margin: 0 0 1rem; }
.pp-h2 .icn { width: 1.05em; height: 1.05em; color: var(--vision-blue); }
.pp-descrizione { color: var(--vision-muted); margin-bottom: 1.4rem; }
.pp-voci { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .8rem; }
.pp-voce { background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-left: 4px solid var(--vision-blue); border-radius: 12px; padding: .85rem 1rem; display: grid; gap: .2rem; box-shadow: 0 8px 20px rgba(11, 31, 58, .06); }
.pp-voce-tipo { font-size: .6rem; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; color: var(--vision-blue); }
.pp-voce b { font-size: 1.05rem; color: var(--vision-ink); }
.pp-voce small { color: var(--vision-muted); }
.pp-campioni { display: grid; gap: .45rem; margin-bottom: 1.3rem; }
.pp-campione { display: flex; align-items: center; gap: .6rem; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 11px; padding: .5rem .8rem; }
.pp-pos { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: .74rem; font-weight: 900; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); }
.pp-campione:nth-child(n+4) .pp-pos { color: var(--vision-muted); background: #EDF2F9; }
.pp-campione b { font-size: .88rem; color: var(--vision-ink); }
.pp-campione em { margin-left: auto; font-style: normal; font-size: .78rem; font-weight: 800; color: #C98A1E; font-variant-numeric: tabular-nums; }
.pp-cta { background: linear-gradient(160deg, #FFFDF5, #FFF4D8); border: 1.5px solid rgba(201, 138, 30, .4); border-radius: 16px; padding: 1.2rem 1.2rem 1.3rem; display: grid; gap: .8rem; }
.pp-cta p { margin: 0; color: #7A5A16; }
.pp-cta p b { color: #3B2A05; }
.pp-cta .btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; }
.pp-cta-sec { font-size: .84rem; font-weight: 800; color: var(--vision-blue); text-decoration: none; }
.pp-cta-sec:hover { text-decoration: underline; }
.pp-vuoto { color: var(--vision-muted); background: #fff; border: 1.5px dashed rgba(16, 37, 63, .18); border-radius: 12px; padding: 1rem 1.1rem; }

/* ================================================================
   Proponi una voce nuova — bottone nel hero e modale-form
   ================================================================ */
.pl-proponi { display: inline-flex; align-items: center; gap: .45rem; margin-top: .7rem; border: 1.5px solid rgba(242, 199, 92, .55); background: rgba(242, 199, 92, .1); color: #F6DFA6; border-radius: 999px; padding: .42rem .95rem; font-size: .8rem; font-weight: 700; cursor: pointer; transition: background .14s, transform .14s; }
.pl-proponi b { color: #F2C75C; }
.pl-proponi .icn { width: .95em; height: .95em; color: #F2C75C; }
.pl-proponi:hover { background: rgba(242, 199, 92, .2); transform: translateY(-1px); }

.pv-card { width: min(720px, 96vw); }
.pv-form { overflow-y: auto; padding: 1.1rem 1.2rem 1.25rem; display: grid; gap: .9rem; background: linear-gradient(180deg, #F4F8FE, #fff); }
.pv-riga { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
.pv-campo { display: grid; gap: .3rem; min-width: 0; }
.pv-campo--grande { grid-column: auto; }
.pv-riga .pv-campo--grande { grid-column: 1; }
.pv-campo > span { font-size: .72rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; color: #4A5B74; }
.pv-campo > span em { color: #C98A1E; font-style: normal; }
.pv-campo > span small { text-transform: none; letter-spacing: 0; font-weight: 700; color: var(--vision-muted); }
.pv-campo input, .pv-campo select, .pv-campo textarea { width: 100%; border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 11px; padding: .55rem .75rem; font-size: .92rem; color: var(--vision-ink); background: #fff; }
.pv-campo input:focus, .pv-campo select:focus, .pv-campo textarea:focus { outline: none; border-color: #2563EB; box-shadow: 0 0 0 3px rgba(37, 99, 235, .14); }
.pv-campo select:disabled { background: #F1F5FB; color: var(--vision-muted); }
.pv-piede { display: grid; gap: .7rem; border-top: 1px dashed rgba(16, 37, 63, .14); padding-top: .9rem; }
.pv-piede p { display: flex; align-items: flex-start; gap: .45rem; margin: 0; font-size: .8rem; color: var(--vision-muted); }
.pv-piede p .icn { flex: none; width: 1rem; height: 1rem; color: #C98A1E; margin-top: .1rem; }
.pv-piede p b { color: #7A5A16; }
.pv-invia { justify-content: center; font-size: .95rem; padding: .7rem 1rem; }
@media (max-width: 620px) { .pv-riga { grid-template-columns: 1fr; } }

/* Esito inline della proposta voce */
.pv-esito { border-radius: 11px; padding: .7rem .9rem; font-size: .86rem; }
.pv-esito--ok { color: #14532D; background: #DCFCE7; border: 1.5px solid rgba(20, 83, 45, .25); }
.pv-esito--errore { color: #7F1D1D; background: #FEE2E2; border: 1.5px solid rgba(127, 29, 29, .25); }

/* Lampeggio dorato della scheda richiamata dal HUD */
.quest-card.is-lampeggio { animation: q-lampeggio 1.1s ease; }
@keyframes q-lampeggio {
  0% { box-shadow: 0 0 0 0 rgba(242, 199, 92, 0); }
  30% { box-shadow: 0 0 0 5px rgba(242, 199, 92, .55); }
  100% { box-shadow: 0 0 0 0 rgba(242, 199, 92, 0); }
}

/* ================================================================
   Notifiche: campanella in navbar e pagina registro
   ================================================================ */
.nav-campana { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 12px; color: var(--vision-ink); background: rgba(16, 37, 63, .06); margin-right: .55rem; transition: background .14s; }
.nav-campana:hover, .nav-campana.is-active { background: rgba(37, 99, 235, .12); color: var(--vision-blue); }
.nav-campana .icn { width: 19px; height: 19px; }
.nav-campana-n { position: absolute; top: -5px; right: -5px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; font-size: .6rem; font-weight: 900; color: #fff; background: #DC2626; box-shadow: 0 0 0 2px #fff; }

.ntf-lista { display: grid; gap: .55rem; }
.ntf-riga { display: flex; align-items: flex-start; gap: .8rem; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 13px; padding: .8rem 1rem; }
.ntf-riga.is-nuova { border-color: rgba(37, 99, 235, .4); background: linear-gradient(90deg, rgba(37, 99, 235, .05), transparent 55%); }
.ntf-ico { flex: none; width: 34px; height: 34px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; font-weight: 900; color: #1D4ED8; background: #E4EDFD; }
.ntf-riga--festa .ntf-ico { color: #92610B; background: #FDF0CE; }
.ntf-riga--invito .ntf-ico { color: #5B21B6; background: #EDE9FE; }
.ntf-riga--avviso .ntf-ico { color: #9A3412; background: #FFEDD5; }
.ntf-corpo { min-width: 0; display: grid; gap: .15rem; }
.ntf-corpo b { color: var(--vision-ink); font-size: .92rem; }
.ntf-corpo p { margin: 0; color: var(--vision-muted); font-size: .84rem; }
.ntf-corpo small { color: #94A3B8; font-size: .7rem; }
.ntf-azioni { margin-left: auto; display: inline-flex; align-items: center; gap: .6rem; flex: none; }

/* Compagnie: membri col contributo, modifica del fondatore */
.member-riga { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; }
.member-chi { display: inline-flex; align-items: baseline; gap: .45rem; min-width: 0; }
.member-io { font-style: normal; font-size: .7rem; color: var(--vision-blue); }
.member-stat { margin-left: auto; font-size: .74rem; color: var(--vision-muted); white-space: nowrap; }
.member-stat b { color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.member-verde { color: #059669 !important; }
.member-oro { color: #C98A1E !important; }
.team-modifica { margin-bottom: 1rem; }
.team-modifica summary { list-style: none; cursor: pointer; }
.team-modifica summary::-webkit-details-marker { display: none; }
.team-modifica summary .team-h3::after { content: ' ▸'; color: var(--vision-blue); }
.team-modifica[open] summary .team-h3::after { content: ' ▾'; }

/* ================================================================
   Compagnie — pagina rifatta: carta-vessillo, azioni grandi, zero fatica
   ================================================================ */
.sqp-shell { padding: 1.4rem 0 3.5rem; background: linear-gradient(180deg, #F4F8FE, #fff 320px); }
.sqp-testata { text-align: center; margin-bottom: 2rem; }
.sqp-testata h1 { font-size: clamp(1.6rem, 3.4vw, 2.3rem); font-weight: 900; color: var(--vision-ink); letter-spacing: -.02em; margin: .2rem 0 .4rem; }
.sqp-testata p { color: var(--vision-muted); max-width: 620px; margin: 0 auto; }

.sqp-card { max-width: 100%; margin: 0 auto 1.6rem; background: #fff; border: 1px solid rgba(16, 37, 63, .1); border-radius: 22px; box-shadow: 0 24px 60px rgba(11, 31, 58, .1); overflow: hidden; }
.sqp-hero { display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap; padding: 1.6rem 1.8rem; color: #EAF2FF; background: radial-gradient(circle at 88% -10%, rgba(242, 199, 92, .4), transparent 45%), linear-gradient(120deg, #081B35, #123F78 65%, #1E4FB0); }
.sqp-vessillo { flex: none; width: 72px; height: 72px; border-radius: 20px; display: inline-flex; align-items: center; justify-content: center; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 14px 30px rgba(201, 138, 30, .45); }
.sqp-vessillo .icn { width: 32px; height: 32px; }
.sqp-hero-chi { min-width: 0; }
.sqp-hero-chi h2 { margin: 0; font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 900; color: #fff; }
.sqp-motto { margin: .15rem 0 0; font-style: italic; color: #F2C75C; }
.sqp-presidio { margin: .3rem 0 0; font-size: .82rem; color: rgba(234, 242, 255, .85); display: flex; align-items: center; gap: .35rem; }
.sqp-presidio .icn { width: .9rem; height: .9rem; color: #F2C75C; }
.sqp-numeri { margin-left: auto; display: flex; gap: .6rem; flex-wrap: wrap; }
.sqp-num { display: grid; justify-items: center; min-width: 92px; padding: .6rem .8rem; border-radius: 14px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); }
.sqp-num b { font-size: 1.5rem; font-weight: 900; color: #fff; font-variant-numeric: tabular-nums; line-height: 1.1; }
.sqp-num span { font-size: .6rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: rgba(234, 242, 255, .7); }
.sqp-num--verde b { color: #6EE7B7; }
.sqp-num--oro b { color: #F2C75C; }
.sqp-ticker { display: flex; align-items: center; gap: .45rem; margin: 0; padding: .6rem 1.8rem; font-size: .82rem; color: #7A5A16; background: #FFF8E6; border-bottom: 1px solid rgba(201, 138, 30, .2); }
.sqp-ticker .icn { width: .9rem; height: .9rem; color: #C98A1E; flex: none; }

.sqp-azioni { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .8rem; padding: 1.2rem 1.8rem; }
.sqp-btn { display: grid; grid-template-columns: auto 1fr; grid-template-areas: "ico tit" "ico sub"; column-gap: .7rem; align-items: center; padding: .85rem 1rem; border-radius: 15px; border: 1.5px solid rgba(16, 37, 63, .12); background: #F7FAFF; color: var(--vision-ink); text-decoration: none; transition: transform .13s, box-shadow .13s, border-color .13s; }
.sqp-btn .icn { grid-area: ico; width: 26px; height: 26px; color: var(--vision-blue); }
.sqp-btn b { grid-area: tit; font-size: .92rem; }
.sqp-btn small { grid-area: sub; font-size: .68rem; color: var(--vision-muted); }
.sqp-btn:hover { transform: translateY(-2px); border-color: var(--vision-blue); box-shadow: 0 10px 24px rgba(37, 99, 235, .15); color: var(--vision-ink); }
.sqp-btn--oro { background: linear-gradient(135deg, #FFF6DC, #FFE9AE); border-color: rgba(201, 138, 30, .5); }
.sqp-btn--oro .icn { color: #C98A1E; }
.sqp-btn--oro:hover { border-color: #C98A1E; box-shadow: 0 10px 24px rgba(201, 138, 30, .3); }
.sqp-btn--profilo {
  position: relative;
  background: linear-gradient(135deg, rgba(37, 99, 235, .1), rgba(14, 165, 233, .16));
  border-color: rgba(37, 99, 235, .42);
  box-shadow: 0 8px 20px rgba(37, 99, 235, .12);
}
.sqp-btn--profilo::after {
  content: "→";
  position: absolute;
  right: .9rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--vision-blue);
}
.sqp-btn--profilo b,
.sqp-btn--profilo small { padding-right: 1.25rem; }
.sqp-btn--profilo:hover {
  background: linear-gradient(135deg, rgba(37, 99, 235, .16), rgba(14, 165, 233, .22));
  border-color: var(--vision-blue);
  box-shadow: 0 12px 28px rgba(37, 99, 235, .22);
}


.sqp-h3 { display: flex; align-items: center; gap: .5rem; margin: .4rem 1.8rem .8rem; font-size: 1.02rem; font-weight: 900; color: var(--vision-ink); }
.sqp-h3 .icn { width: 1rem; height: 1rem; color: var(--vision-blue); }
.sqp-membri { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .8rem; padding: 0 1.8rem 1.4rem; }
.sqp-membro { position: relative; display: grid; justify-items: center; gap: .3rem; text-align: center; padding: 1rem .8rem .9rem; border-radius: 15px; border: 1.5px solid rgba(16, 37, 63, .1); background: #fff; }
.sqp-membro.is-io { border-color: rgba(37, 99, 235, .5); background: linear-gradient(180deg, rgba(37, 99, 235, .05), transparent 60%); }
.sqp-membro-avatar { width: 46px; height: 46px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 900; font-size: 1.15rem; color: #fff; background: linear-gradient(135deg, #2563EB, #0EA5E9); }
.sqp-membro b { font-size: .9rem; color: var(--vision-ink); overflow-wrap: anywhere; }
.sqp-membro-ruolo { font-size: .6rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; color: #1D4ED8; background: #E4EDFD; border-radius: 999px; padding: .18rem .55rem; }
.sqp-membro-stat { display: grid; gap: .1rem; font-size: .72rem; color: var(--vision-muted); }
.sqp-membro-stat b { color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.sqp-membro-x { position: absolute; top: .45rem; right: .45rem; }
.sqp-membro-x button { width: 24px; height: 24px; border: 0; border-radius: 8px; background: #FEE2E2; color: #B91C1C; font-size: .95rem; line-height: 1; cursor: pointer; }
.sqp-membro-x button:hover { background: #B91C1C; color: #fff; }

.sqp-governo { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; padding: 0 1.8rem 1.6rem; }
@media (max-width: 820px) { .sqp-governo { grid-template-columns: 1fr; } .sqp-numeri { margin-left: 0; } }
.sqp-pannello { border: 1.5px solid rgba(16, 37, 63, .12); border-radius: 16px; background: #F7FAFF; overflow: hidden; }
.sqp-pannello--invita { border-color: rgba(201, 138, 30, .45); background: linear-gradient(160deg, #FFFDF5, #FFF4D8); }
.sqp-pannello summary { list-style: none; display: grid; grid-template-columns: auto 1fr auto; grid-template-areas: "ico tit chev" "ico sub chev"; column-gap: .7rem; align-items: center; padding: .95rem 1.1rem; cursor: pointer; }
.sqp-pannello summary::-webkit-details-marker { display: none; }
.sqp-pannello summary .icn { grid-area: ico; width: 24px; height: 24px; color: var(--vision-blue); }
.sqp-pannello--invita summary .icn { color: #C98A1E; }
.sqp-pannello summary b { grid-area: tit; font-size: .95rem; color: var(--vision-ink); }
.sqp-pannello summary span { grid-area: sub; font-size: .72rem; color: var(--vision-muted); }
.sqp-pannello--invita summary span { color: #7A5A16; }
.sqp-chev { grid-area: chev; font-style: normal; color: var(--vision-muted); transition: transform .15s; }
.sqp-pannello[open] .sqp-chev { transform: rotate(180deg); }
.sqp-invita { display: flex; gap: .6rem; padding: 0 1.1rem 1rem; flex-wrap: wrap; }
.sqp-invita input[type="email"] { flex: 1 1 220px; border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 11px; padding: .6rem .8rem; font-size: .92rem; }
.sqp-invita .btn { display: inline-flex; align-items: center; gap: .4rem; white-space: nowrap; }
.sqp-inviti { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; padding: 0 1.1rem 1rem; }
.sqp-inviti-tit { font-size: .72rem; font-weight: 800; color: #7A5A16; }
.sqp-invito-chip { display: inline-flex; align-items: center; gap: .35rem; font-size: .74rem; color: #3B2A05; background: rgba(255, 255, 255, .8); border: 1px solid rgba(201, 138, 30, .4); border-radius: 999px; padding: .22rem .3rem .22rem .65rem; }
.sqp-invito-chip form { display: inline-flex; }
.sqp-invito-chip button { width: 18px; height: 18px; border: 0; border-radius: 50%; background: #FEE2E2; color: #B91C1C; font-size: .8rem; line-height: 1; cursor: pointer; }
.sqp-modifica { display: grid; gap: .7rem; padding: 0 1.1rem 1.1rem; }
.sqp-modifica label { display: grid; gap: .25rem; }
.sqp-modifica label span { font-size: .7rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; color: #4A5B74; }
.sqp-modifica input, .sqp-modifica textarea { border: 1.5px solid rgba(16, 37, 63, .16); border-radius: 11px; padding: .55rem .75rem; font-size: .92rem; }
.sqp-modifica .btn { justify-self: start; }

.sqp-fonda { max-width: 980px; margin: 0 auto; border: 2px dashed rgba(201, 138, 30, .5); border-radius: 22px; background: linear-gradient(160deg, #FFFDF5, #FFF4D8); padding: 1.6rem 1.8rem 1.8rem; scroll-margin-top: 90px; }
.sqp-fonda-testa { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.2rem; }
.sqp-vessillo--fonda { width: 58px; height: 58px; }
.sqp-fonda-testa h2 { margin: 0; font-size: 1.35rem; font-weight: 900; color: #3B2A05; }
.sqp-fonda-testa p { margin: .15rem 0 0; color: #7A5A16; font-size: .9rem; }
.sqp-fonda-form { display: grid; gap: .9rem; }
.sqp-fonda-riga { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
@media (max-width: 700px) { .sqp-fonda-riga { grid-template-columns: 1fr; } }
.sqp-fonda-form label { display: grid; gap: .3rem; }
.sqp-fonda-form label span { font-size: .74rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; color: #7A5A16; }
.sqp-fonda-form label span em { font-style: normal; text-transform: none; letter-spacing: 0; font-weight: 700; }
.sqp-fonda-form input, .sqp-fonda-form select { border: 1.5px solid rgba(201, 138, 30, .45); border-radius: 12px; padding: .65rem .85rem; font-size: .95rem; background: #fff; }
.sqp-fonda-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; justify-self: start; border: 0; border-radius: 999px; padding: .8rem 1.6rem; font-size: 1rem; font-weight: 900; color: #3B2A05; background: linear-gradient(135deg, #F2C75C, #E0A82B); box-shadow: 0 12px 28px rgba(201, 138, 30, .4); cursor: pointer; transition: transform .13s; }
.sqp-fonda-btn:hover { transform: translateY(-2px); }
.sqp-fonda-btn .icn { width: 1.1rem; height: 1.1rem; }
.sqp-nota-unica { max-width: 980px; margin: 0 auto; display: flex; align-items: center; gap: .55rem; color: var(--vision-muted); background: #fff; border: 1.5px dashed rgba(16, 37, 63, .18); border-radius: 14px; padding: .9rem 1.1rem; font-size: .86rem; }
.sqp-nota-unica .icn { width: 1rem; height: 1rem; color: var(--vision-blue); flex: none; }
.sqp-nota-unica b { color: var(--vision-ink); }

/* Richieste d'ingresso nella Compagnia */
.sqp-richieste { margin: 0 1.8rem 1.2rem; border: 1.5px solid rgba(201, 138, 30, .5); background: linear-gradient(160deg, #FFFDF5, #FFF4D8); border-radius: 16px; padding: .9rem 1.1rem 1rem; }
.sqp-richieste .sqp-h3 { margin: 0 0 .6rem; }
.sqp-richiesta { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; background: rgba(255, 255, 255, .8); border: 1px solid rgba(201, 138, 30, .35); border-radius: 12px; padding: .55rem .85rem; margin-bottom: .45rem; }
.sqp-richiesta b { color: #3B2A05; }
.sqp-richiesta small { color: #7A5A16; }
.sqp-richiesta form { margin-left: auto; display: inline-flex; align-items: center; gap: .6rem; }
.pp-cta-stato { margin: 0; font-size: .84rem; color: #7A5A16; display: flex; align-items: center; gap: .4rem; }
.pp-cta-stato .icn { width: .95rem; height: .95rem; flex: none; }
.sqp-nota-unica { flex-wrap: wrap; }
.sqp-nota-unica form { margin-left: auto; }

/* Il rango del Custode: plancia e card membri */
.p-rango .p-rail-lab { display: inline-flex; align-items: center; gap: .35rem; }
.p-rango .p-rail-lab .icn { width: .85em; height: .85em; color: #F2C75C; }
.p-rango-val { display: grid; justify-items: end; gap: .05rem; text-align: right; }
.p-rango-val b { color: #F2C75C; font-size: .92rem; }
.p-rango-val small { font-size: .64rem; color: rgba(234, 242, 255, .65); }
.sqp-membro-rango { font-size: .66rem; font-weight: 800; color: #C98A1E; }

/* ================================================================
   I trofei del Custode (Santuario)
   ================================================================ */
.sant-badges { margin-top: 1.4rem; }
.sant-badges-tit { display: flex; align-items: center; gap: .5rem; font-size: 1.05rem; font-weight: 900; color: var(--vision-ink); margin: 0 0 .8rem; }
.sant-badges-tit .icn { width: 1.05rem; height: 1.05rem; color: #C98A1E; }
.sant-badges-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .75rem; }
.sant-badge { position: relative; display: grid; justify-items: center; gap: .25rem; text-align: center; padding: 1rem .7rem .85rem; border-radius: 15px; border: 1.5px solid rgba(201, 138, 30, .45); background: linear-gradient(160deg, #FFFDF5, #FFF2CF); }
.sant-badge-ico { font-size: 1.7rem; line-height: 1; filter: drop-shadow(0 3px 6px rgba(201, 138, 30, .35)); }
.sant-badge b { font-size: .82rem; color: #3B2A05; }
.sant-badge small { font-size: .66rem; color: #7A5A16; }
.sant-badge-bonus { position: absolute; top: .4rem; right: .4rem; font-size: .58rem; font-weight: 900; color: #3B2A05; background: #F2C75C; border-radius: 999px; padding: .14rem .45rem; }
.sant-badge.is-chiuso { border-color: rgba(16, 37, 63, .14); background: #F4F6FA; filter: grayscale(1); opacity: .62; }
.sant-badge.is-chiuso .sant-badge-ico { filter: none; }
.sant-badge.is-chiuso b { color: #4A5B74; }
.sant-badge.is-chiuso small { color: var(--vision-muted); }

/* Link al profilo pubblico dal pannello Territori */
.municipality-profilo { display: block; text-align: center; margin-top: .55rem; font-size: .85rem; font-weight: 700; color: var(--vision-blue); text-decoration: none; }
.municipality-profilo:hover { text-decoration: underline; color: var(--vision-blue); }

/* Le Compagnie in campo (profilo del Comune) */
.pp-compagnie { margin-top: 1.4rem; }
.pp-comp-tit { display: flex; align-items: center; gap: .5rem; font-size: 1.05rem; font-weight: 900; color: var(--vision-ink); margin: 0 0 .7rem; }
.pp-comp-tit .icn { width: 1rem; height: 1rem; color: var(--vision-blue); }
.pp-comp-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; counter-reset: none; }
.pp-comp-riga { display: flex; align-items: center; gap: .8rem; background: #fff; border: 1.5px solid rgba(16, 37, 63, .1); border-radius: 13px; padding: .6rem .9rem; }
.pp-comp-riga.is-prima { border-color: rgba(201, 138, 30, .55); background: linear-gradient(90deg, #FFFDF5, #fff 55%); }
.pp-comp-pos { flex: none; width: 2rem; text-align: center; font-weight: 900; font-size: .95rem; color: #64748B; }
.pp-comp-nome { display: grid; gap: .05rem; min-width: 0; margin-right: auto; text-decoration: none; }
.pp-comp-nome b { color: var(--vision-ink); font-size: .92rem; }
.pp-comp-nome:hover b { color: var(--vision-blue); text-decoration: underline; }
.pp-comp-nome small { color: var(--vision-muted); font-style: italic; font-size: .74rem; }
.pp-comp-num { display: grid; justify-items: center; min-width: 62px; }
.pp-comp-num b { font-size: .95rem; font-weight: 900; color: var(--vision-ink); font-variant-numeric: tabular-nums; }
.pp-comp-num small { font-size: .58rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #94A3B8; }
.pp-comp-num--oro b { color: #C98A1E; }
.pp-comp-vuoto { margin: 0; font-size: .88rem; color: var(--vision-muted); background: #F7FAFF; border: 1.5px dashed rgba(16, 37, 63, .16); border-radius: 12px; padding: .8rem 1rem; }
.pp-comp-vuoto a { font-weight: 800; color: var(--vision-blue); }

/* Profilo Comune: banda CTA in cima, mappa del territorio, più aria */
.pp-banda { padding: 1.1rem 0 0; }
.pp-cta--banda { display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap; background: linear-gradient(160deg, #FFFDF5, #FFF2CF); border: 1.5px solid rgba(201, 138, 30, .5); border-radius: 18px; padding: 1.1rem 1.4rem; }
.pp-cta--banda p { margin: 0; flex: 1 1 320px; color: #7A5A16; }
.pp-cta--banda p b { color: #3B2A05; }
.pp-cta-azioni { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.pp-cta--banda .btn { white-space: nowrap; }
.pp-mappa { height: 260px; border-radius: 15px; border: 1.5px solid rgba(16, 37, 63, .14); overflow: hidden; box-shadow: 0 10px 26px rgba(11, 31, 58, .1); }
.pp-h2-mt { margin-top: 1.6rem; }
.pp-compagnie { margin-top: 1.8rem; }

/* La fiammella dello streak */
.p-streak .p-rail-lab { color: #FFB35C; }
.p-streak-n { color: #FFB35C !important; font-weight: 900; }

/* ================================================================
   Le Missioni della settimana (plancia)
   ================================================================ */
.pl-miss { display: grid; gap: .3rem; padding: .6rem .1rem; border-bottom: 1px dashed rgba(16, 37, 63, .12); }
.pl-mod-missioni .pl-miss:last-child { border-bottom: 0; padding-bottom: .2rem; }
.pl-miss-testa { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
.pl-miss-testa b { font-size: .84rem; color: var(--vision-ink); }
.pl-miss-premio { flex: none; font-size: .62rem; font-weight: 900; color: #3B2A05; background: #F2C75C; border-radius: 999px; padding: .12rem .45rem; }
.pl-miss-descr { margin: 0; font-size: .7rem; color: var(--vision-muted); }
.pl-miss-bar { height: 7px; border-radius: 999px; background: rgba(16, 37, 63, .1); overflow: hidden; }
.pl-miss-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #2563EB, #4C7DFF); transition: width .5s ease; }
.pl-miss.is-fatta .pl-miss-bar span { background: linear-gradient(90deg, #0B7A55, #2f8f83); }
.pl-miss-sotto { display: flex; align-items: center; justify-content: space-between; font-size: .66rem; color: var(--vision-muted); }
.pl-miss-sotto b { color: var(--vision-ink); }
.pl-miss-ok { color: #0B7A55; font-weight: 800; }
.pl-miss.is-fatta .pl-miss-testa b { color: #0B7A55; }

/* Minoranze linguistiche: selettore di consegna e chip identitarie */
.quest-lingua { width: 100%; margin-top: .45rem; padding: .5rem .6rem; border-radius: 10px; border: 1.5px solid rgba(16, 37, 63, .16); background: #fff; font: inherit; font-size: .84rem; color: var(--vision-ink); }
.quest-lingua:focus { outline: none; border-color: var(--vision-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, .14); }
.pp-chip--lingua { border-color: rgba(122, 63, 180, .4); background: linear-gradient(160deg, #FDFAFF, #F3EAFC); }
.pp-chip--lingua b { color: #6B2FA8; font-size: .92rem; }
.pp-chip--lingua span { color: #8A63AC; }

/* Voti da dare: la sala vuota che si spiega */
.pl-voti-vuoto { display: grid; gap: .65rem; margin: .5rem .35rem .6rem; padding: 1rem 1.15rem; background: linear-gradient(160deg, #F6FAFF, #EEF4FE); border: 1.5px dashed rgba(37, 99, 235, .3); border-radius: 14px; }
.pl-voti-vuoto p { margin: 0; font-size: .8rem; color: #4A5B74; line-height: 1.55; }
.pl-voti-vuoto p b { color: var(--vision-ink); }
.pl-voti-vuoto-sub { font-size: .74rem !important; color: var(--vision-muted) !important; }

/* Lo scroll delle colonne rispetta la riga fissa del HUD in basso */
@media (min-width: 1161px) {
  .pl-sx, .pl-centro, .pl-dx { padding-bottom: 96px; }
}

/* I moduli NON si comprimono mai: se non ci stanno, la colonna scorre */
.pl-sx > *, .pl-dx > *, .pl-centro > * { flex-shrink: 0; }

/* ================================================================
   Hero e HUD a fisarmonica: più spazio al gioco quando serve
   ================================================================ */
.pl-testa { position: relative; }
.pl-testa-toggle { position: absolute; top: .6rem; right: .7rem; z-index: 5; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 999px; border: 1.5px solid rgba(234, 242, 255, .35); background: rgba(255, 255, 255, .08); color: #EAF2FF; cursor: pointer; transition: transform .2s, background .15s; }
.pl-testa-toggle:hover { background: rgba(255, 255, 255, .16); }
.pl-testa-toggle .icn { width: 15px; height: 15px; transform: rotate(180deg); transition: transform .25s; }
.pl-testa.is-chiusa .pl-testa-toggle .icn { transform: rotate(0deg); }
.pl-testa.is-chiusa { padding-top: .55rem; padding-bottom: .55rem; }
.pl-testa.is-chiusa .pl-testa-sx h1,
.pl-testa.is-chiusa .pl-bar,
.pl-testa.is-chiusa .pl-sotto,
.pl-testa.is-chiusa .pl-proponi,
.pl-testa.is-chiusa .pl-fronti { display: none; }
.pl-testa.is-chiusa .pl-kicker { margin: 0; }

.p-hud { transition: transform .28s ease; }
.p-hud-toggle { position: absolute; top: -15px; left: 50%; transform: translateX(-50%); z-index: 6; display: grid; place-items: center; width: 44px; height: 20px; border-radius: 10px 10px 0 0; border: 1.5px solid rgba(234, 242, 255, .3); border-bottom: 0; background: #123F78; color: #EAF2FF; cursor: pointer; }
.p-hud-toggle .icn { width: 14px; height: 14px; transition: transform .25s; }
.p-hud.is-chiuso { transform: translateY(calc(100% - 10px)); }
.p-hud.is-chiuso .p-hud-toggle .icn { transform: rotate(180deg); }

/* Il tag della lingua di minoranza sulle voci esposte */
.tag-lingua { display: inline-block; margin-left: .4rem; font-size: .62rem; font-style: normal; font-weight: 800; letter-spacing: .02em; color: #6B2FA8; background: #F3EAFC; border: 1px solid rgba(122, 63, 180, .35); border-radius: 999px; padding: .1rem .45rem; vertical-align: middle; white-space: nowrap; }

/* ================================================================
   Registratore vocale (scheda di consegna) e player audio
   ================================================================ */
.rec { display: grid; gap: .5rem; margin-top: .6rem; padding: .7rem .8rem; background: #F7FAFF; border: 1.5px solid rgba(37, 99, 235, .18); border-radius: 12px; }
.rec-lab { font-size: .78rem; font-weight: 800; color: var(--vision-ink); }
.rec-riga { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.rec-btn { display: inline-flex; align-items: center; gap: .45rem; padding: .45rem .9rem; border-radius: 999px; border: 1.5px solid rgba(37, 99, 235, .35); background: #fff; color: var(--vision-blue); font-weight: 700; font-size: .84rem; cursor: pointer; transition: all .15s; }
.rec-btn:hover { background: rgba(37, 99, 235, .06); }
.rec-btn .rec-dot { width: 10px; height: 10px; border-radius: 999px; background: #E5484D; }
.rec-btn.is-rec { background: #E5484D; border-color: #E5484D; color: #fff; animation: recPulse 1.1s ease-in-out infinite; }
.rec-btn.is-rec .rec-dot { background: #fff; }
@keyframes recPulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(229, 72, 77, .4); } 50% { box-shadow: 0 0 0 6px rgba(229, 72, 77, 0); } }
.rec-tempo { font-variant-numeric: tabular-nums; font-weight: 800; color: #E5484D; font-size: .82rem; }
.rec-play { height: 34px; max-width: 210px; }
.rec-canc { width: 28px; height: 28px; border-radius: 999px; border: 1.5px solid rgba(16, 37, 63, .18); background: #fff; color: var(--vision-muted); cursor: pointer; font-size: .8rem; }
.rec-canc:hover { border-color: #E5484D; color: #E5484D; }
.rec-file { font-size: .74rem; color: var(--vision-muted); }
.rec-file span { color: var(--vision-blue); text-decoration: underline; cursor: pointer; }
.rec-file input { display: block; margin-top: .2rem; font-size: .72rem; }
.rec-nota { font-size: .72rem; color: var(--vision-muted); min-height: 1em; }
.vg-audio { height: 36px; margin-top: .5rem; width: 100%; max-width: 320px; }
.atl-audio { height: 30px; margin-top: .3rem; max-width: 240px; display: block; }
.pp-voce-audio { height: 32px; margin-top: .35rem; max-width: 260px; display: block; }
.rec-btn.is-off { opacity: .5; cursor: help; }

/* ================================================================
   Pannello "La mia voce" (gestione audio dei propri contributi)
   ================================================================ */
.voce-intro { margin: 0 0 .6rem; font-size: .74rem; color: var(--vision-muted); line-height: 1.4; }
.voce-vuoto { margin: 0; font-size: .76rem; color: var(--vision-muted); font-style: italic; }
.voce-riga { display: grid; gap: .4rem; padding: .6rem 0; border-bottom: 1px dashed rgba(16, 37, 63, .12); }
.voce-riga:last-child { border-bottom: 0; }
.voce-riga.is-bloccata { opacity: .72; }
.voce-testa b { font-size: .84rem; color: var(--vision-ink); }
.voce-testa small { display: block; font-size: .68rem; color: var(--vision-muted); }
.voce-audio { height: 30px; width: 100%; max-width: 240px; }
.voce-azioni { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.voce-rec { display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .7rem; border-radius: 999px; border: 1.5px solid rgba(37, 99, 235, .35); background: #fff; color: var(--vision-blue); font-weight: 700; font-size: .74rem; cursor: pointer; }
.voce-rec .rec-dot { width: 8px; height: 8px; border-radius: 999px; background: #E5484D; }
.voce-rec.is-rec { background: #E5484D; border-color: #E5484D; color: #fff; animation: recPulse 1.1s ease-in-out infinite; }
.voce-rec.is-rec .rec-dot { background: #fff; }
.voce-rec.is-off { opacity: .5; cursor: help; }
.voce-tempo { font-variant-numeric: tabular-nums; font-weight: 800; color: #E5484D; font-size: .74rem; }
.voce-file { font-size: .72rem; color: var(--vision-blue); text-decoration: underline; cursor: pointer; }
.voce-stacca { width: 24px; height: 24px; border-radius: 999px; border: 1.5px solid rgba(16, 37, 63, .18); background: #fff; color: var(--vision-muted); cursor: pointer; font-size: .72rem; }
.voce-stacca:hover { border-color: #E5484D; color: #E5484D; }
.voce-nota { font-size: .68rem; color: var(--vision-muted); width: 100%; }
.voce-lock { font-size: .72rem; color: var(--vision-muted); font-weight: 600; }

/* La mia voce — stato bloccato con traguardo motivazionale */
.voce-locked { display: grid; gap: .5rem; padding: .6rem .7rem; background: linear-gradient(160deg, #FFFDF5, #FFF2CF); border: 1.5px dashed rgba(201, 138, 30, .5); border-radius: 12px; }
.voce-locked p { margin: 0; font-size: .78rem; color: #3B2A05; }
.voce-locked-sub { font-size: .72rem !important; color: #7A5A16 !important; line-height: 1.45; }
.voce-locked-sub b { color: #C98A1E; }
.voce-bar { height: 8px; border-radius: 999px; background: rgba(201, 138, 30, .18); overflow: hidden; }
.voce-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #C98A1E, #F2C75C); transition: width .5s; }
.voce-bar-lab { font-size: .66rem; color: #7A5A16; font-weight: 700; }

/* La mia voce — vista centrale */
.lmv { animation: fadeIn .25s ease; }
.lmv-testa { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }
.lmv-testa h2 { margin: 0; font-size: 1.15rem; color: var(--vision-ink); }
.lmv-intro { margin: 0 0 1rem; font-size: .86rem; color: var(--vision-muted); }
.lmv-lista { display: grid; gap: .3rem; }
.lmv-caricamento { font-size: .85rem; color: var(--vision-muted); text-align: center; padding: 1.5rem; }
.lmv-lista .voce-riga { padding: .8rem; background: #fff; border: 1.5px solid rgba(16, 37, 63, .1); border-radius: 12px; }
.voce-ancora { width: 100%; margin-top: .6rem; }
.voce-riepilogo { margin: .3rem 0 .8rem; font-size: .82rem; color: var(--vision-ink); }
.voce-riepilogo b { color: var(--vision-blue); }
.voce-apri { width: 100%; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* La mia voce — badge "già validata" e transizione d'uscita */
.voce-tag-val { display: inline-block; margin-top: .2rem; font-size: .64rem; font-weight: 800; color: #0B7A55; background: #E4F5EE; border-radius: 999px; padding: .1rem .5rem; }
.voce-riga.voce-esce { opacity: 0; transform: translateX(20px); transition: all .8s ease; }
#lmv-torna2, #lmv-torna3 { margin-top: .6rem; }

/* ================================================================
   IL SANTUARIO — plancia dell'account
   ================================================================ */
.sant { padding: 1.5rem 0 4rem; }
.sant-hero { background: radial-gradient(circle at 100% 0, rgba(37, 99, 235, .45), transparent 45%), linear-gradient(158deg, #081B35 0%, #123F78 62%, #1E4FB0 100%); border-radius: 22px; padding: 1.6rem 1.8rem; color: #EAF2FF; margin-bottom: 1.2rem; }
.sant-hero-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.sant-kicker { display: inline-flex; align-items: center; gap: .4rem; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #9DC3FF; margin: 0 0 .3rem; }
.sant-kicker svg { width: 15px; height: 15px; }
.sant-nome { margin: 0; font-size: 1.7rem; font-weight: 900; color: #fff; }
.sant-rango-lab { margin: .35rem 0 .5rem; font-size: .86rem; color: #C9DDF7; }
.sant-rango-lab b { color: #fff; }
.sant-rango-bar { height: 8px; border-radius: 999px; background: rgba(255, 255, 255, .16); overflow: hidden; max-width: 420px; }
.sant-rango-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #F2C75C, #FFE39A); transition: width .6s; }
.sant-esci-form { flex-shrink: 0; }
.sant-esci { background: rgba(255, 255, 255, .1); border: 1.5px solid rgba(255, 255, 255, .25); color: #EAF2FF; border-radius: 999px; padding: .4rem 1rem; font-size: .8rem; font-weight: 700; cursor: pointer; transition: background .15s; }
.sant-esci:hover { background: rgba(255, 255, 255, .2); }
.sant-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: .7rem; margin-top: 1.4rem; }
.sant-stat { background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .12); border-radius: 14px; padding: .8rem .5rem; text-align: center; display: grid; gap: .15rem; }
.sant-stat-ico { display: inline-grid; place-items: center; width: 30px; height: 30px; margin: 0 auto; border-radius: 9px; }
.sant-stat-ico svg { width: 17px; height: 17px; }
.sant-stat-ico.gold { background: rgba(242, 199, 92, .2); color: #FFE39A; }
.sant-stat-ico.fire { font-size: 1rem; }
.sant-stat-ico.blue { background: rgba(37, 99, 235, .25); color: #9DC3FF; }
.sant-stat-ico.teal { background: rgba(20, 184, 166, .2); color: #7FE6D4; }
.sant-stat b { font-size: 1.2rem; font-weight: 900; color: #fff; }
.sant-stat span { font-size: .66rem; color: #A9C4E6; }

.sant-avviso { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; background: #FFF7E6; border: 1.5px solid #F2C75C; border-radius: 14px; padding: .8rem 1.1rem; margin-bottom: 1.2rem; font-size: .86rem; color: #7A5A16; }
.sant-avviso svg { width: 16px; height: 16px; vertical-align: middle; }

/* La griglia dei moduli */
.sant-plancia { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.1rem; align-items: start; }
.sant-card { background: #fff; border: 1.5px solid rgba(16, 37, 63, .1); border-radius: 18px; padding: 1.2rem 1.3rem; box-shadow: 0 8px 24px rgba(11, 31, 58, .05); }
.sant-card--wide { grid-column: 1 / -1; }
.sant-card--comune { border-color: rgba(242, 199, 92, .5); background: linear-gradient(158deg, #FFFDF7, #FFF6E2); }
.sant-card-h { display: flex; align-items: center; gap: .55rem; margin-bottom: .9rem; }
.sant-card-ico { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; background: rgba(37, 99, 235, .1); color: var(--vision-blue); flex-shrink: 0; }
.sant-card-ico svg { width: 18px; height: 18px; }
.sant-card--comune .sant-card-ico { background: rgba(242, 199, 92, .25); color: #C98A1E; }
.sant-card-h h2 { margin: 0; font-size: 1.02rem; font-weight: 800; color: var(--vision-ink); flex: 1; }
.sant-card-azione { font-size: .78rem; font-weight: 700; color: var(--vision-blue); text-decoration: none; padding: .3rem .7rem; border: 1.5px solid rgba(37, 99, 235, .3); border-radius: 999px; }
.sant-card-azione:hover { background: rgba(37, 99, 235, .06); }
.sant-card-key { font-size: .8rem; color: var(--vision-muted); }
.sant-card-key b { color: var(--vision-ink); }

.sant-comune-nome { font-size: 1.25rem; font-weight: 900; color: var(--vision-ink); }
.sant-comune-nome small { color: var(--vision-muted); font-weight: 600; }
.sant-comune-rank { margin: .4rem 0 .2rem; font-size: .88rem; color: var(--vision-ink); }
.sant-comune-gap { margin: 0 0 .3rem; font-size: .8rem; color: #C98A1E; }
.sant-comune-gap svg { width: 13px; height: 13px; vertical-align: middle; }
.sant-comune-numeri { font-size: .78rem; color: var(--vision-muted); margin: .3rem 0 .8rem; }
.sant-cta { display: inline-flex; align-items: center; gap: .4rem; }
.sant-cta svg { width: 15px; height: 15px; }
.sant-cambia { margin-top: .9rem; }
.sant-cambia summary { font-size: .8rem; color: var(--vision-muted); cursor: pointer; }
.sant-cambia-form { margin-top: .6rem; display: grid; gap: .5rem; }

.sant-vuoto { font-size: .84rem; color: var(--vision-muted); line-height: 1.5; margin: 0; }
.sant-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.sant-lista li { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .6rem .7rem; background: #F7FAFF; border-radius: 10px; }
.sant-lista strong { display: block; font-size: .88rem; color: var(--vision-ink); }
.sant-lista-meta { font-size: .72rem; color: var(--vision-muted); }
.sant-spia { display: block; font-size: .7rem; color: #C98A1E; margin-top: .2rem; }
.sant-spia svg { width: 12px; height: 12px; vertical-align: middle; }
.sant-lista-apri { font-size: .78rem; font-weight: 700; color: var(--vision-blue); text-decoration: none; flex-shrink: 0; }

.sant-trofei { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: .7rem; }
.sant-trofeo { position: relative; text-align: center; padding: 1rem .6rem; border-radius: 14px; border: 1.5px solid rgba(16, 37, 63, .1); display: grid; gap: .25rem; }
.sant-trofeo.is-vinto { background: linear-gradient(158deg, #FFFDF7, #FFF2CF); border-color: rgba(242, 199, 92, .6); }
.sant-trofeo.is-chiuso { opacity: .5; filter: grayscale(.5); }
.sant-trofeo-ico { font-size: 1.6rem; }
.sant-trofeo b { font-size: .82rem; color: var(--vision-ink); }
.sant-trofeo small { font-size: .66rem; color: var(--vision-muted); line-height: 1.3; }
.sant-trofeo-bonus { position: absolute; top: .5rem; right: .5rem; font-size: .62rem; font-weight: 800; color: #C98A1E; background: rgba(242, 199, 92, .2); border-radius: 999px; padding: .1rem .4rem; }

.sant-dl { display: grid; grid-template-columns: auto 1fr; gap: .3rem .9rem; margin: 0 0 1rem; font-size: .82rem; }
.sant-dl dt { color: var(--vision-muted); font-weight: 700; }
.sant-dl dd { margin: 0; color: var(--vision-ink); }
.badge-ok { font-size: .68rem; color: #0B7A55; background: #E4F5EE; border-radius: 999px; padding: .05rem .45rem; font-weight: 700; }
.badge-warn { font-size: .68rem; color: #C98A1E; background: #FFF2CF; border-radius: 999px; padding: .05rem .45rem; font-weight: 700; }
.sant-form { display: grid; gap: .7rem; }
.sant-form-riga { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
.sant-check { display: flex; align-items: flex-start; gap: .5rem; font-size: .78rem; color: var(--vision-muted); cursor: pointer; }
.sant-check input { margin-top: .15rem; }

.sant-diario { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; max-height: 280px; overflow-y: auto; }
.sant-diario li { display: grid; grid-template-columns: auto 1fr auto; gap: .6rem; align-items: center; font-size: .78rem; padding: .35rem 0; border-bottom: 1px dashed rgba(16, 37, 63, .08); }
.sant-diario-punti { font-weight: 800; font-variant-numeric: tabular-nums; }
.sant-diario-punti.su { color: #0B7A55; }
.sant-diario-punti.giu { color: #E5484D; }
.sant-diario-testo { color: var(--vision-ink); }
.sant-diario-data { color: var(--vision-muted); font-size: .7rem; }

@media (max-width: 860px) {
  .sant-stats { grid-template-columns: repeat(3, 1fr); }
  .sant-plancia { grid-template-columns: 1fr; }
  .sant-hero-top { flex-direction: column; }
}

/* La mia voce nel Santuario */
.sant-voce-intro { font-size: .82rem; color: var(--vision-muted); margin: 0 0 1rem; line-height: 1.5; }
#sant-voce-lista .voce-riga { padding: .8rem; background: #F7FAFF; border: 1.5px solid rgba(16, 37, 63, .08); border-radius: 12px; }
#sant-voce-lista { display: grid; gap: .5rem; }

/* La mia voce nel Santuario — filtri e paginazione */
.sant-voce-filtri { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; margin-bottom: 1rem; }
.sant-voce-search { flex: 1; min-width: 200px; padding: .55rem .8rem; border-radius: 10px; border: 1.5px solid rgba(16, 37, 63, .16); font: inherit; font-size: .86rem; }
.sant-voce-search:focus { outline: none; border-color: var(--vision-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); }
.sant-voce-chips { display: flex; gap: .35rem; }
.sant-chip { padding: .4rem .8rem; border-radius: 999px; border: 1.5px solid rgba(16, 37, 63, .16); background: #fff; font-size: .76rem; font-weight: 700; color: var(--vision-muted); cursor: pointer; transition: all .15s; }
.sant-chip:hover { border-color: var(--vision-blue); }
.sant-chip.is-on { background: var(--vision-blue); border-color: var(--vision-blue); color: #fff; }
.sant-voce-pag { display: flex; align-items: center; justify-content: center; gap: .3rem; margin-top: 1.1rem; flex-wrap: wrap; }
.sant-pag-btn { min-width: 34px; height: 34px; padding: 0 .5rem; border-radius: 9px; border: 1.5px solid rgba(16, 37, 63, .14); background: #fff; font-weight: 700; font-size: .82rem; color: var(--vision-ink); cursor: pointer; transition: all .15s; }
.sant-pag-btn:hover:not(:disabled) { border-color: var(--vision-blue); color: var(--vision-blue); }
.sant-pag-btn.is-on { background: var(--vision-blue); border-color: var(--vision-blue); color: #fff; }
.sant-pag-btn:disabled { opacity: .4; cursor: default; }
.sant-pag-sep { color: var(--vision-muted); padding: 0 .2rem; }
#sant-voce-lista[aria-busy="true"] { opacity: .5; transition: opacity .15s; }

/* Mini-registratore: conferma/annulla e stato "tornata al Guardiano" */
.voce-conferma { padding: .3rem .7rem; border-radius: 999px; border: 1.5px solid #0B7A55; background: #0B7A55; color: #fff; font-size: .74rem; font-weight: 800; cursor: pointer; }
.voce-conferma:hover { background: #096a49; }
.voce-annulla { padding: .3rem .6rem; border-radius: 999px; border: 1.5px solid rgba(16, 37, 63, .18); background: #fff; color: var(--vision-muted); font-size: .72rem; font-weight: 700; cursor: pointer; }
.voce-annulla:hover { border-color: #E5484D; color: #E5484D; }
.voce-tag-rivedere { color: #C98A1E !important; background: #FFF2CF !important; }



/* ================================================================
   CRUSCOTTO — Santuario senza scroll, a piena altezza
   ================================================================ */
.cruscotto { padding: .9rem 0 1.2rem; }
.crus-shell { max-width: 1540px; margin: 0 auto; padding: 0 clamp(.9rem, 2vw, 1.6rem);
  display: flex; flex-direction: column; gap: .9rem; }

/* HERO ricco */
.crus-hero { background: radial-gradient(circle at 100% 0, rgba(37,99,235,.4), transparent 46%), linear-gradient(150deg, #081B35, #123F78 64%, #1E4FB0); border-radius: 18px; padding: 1.1rem 1.4rem; color: #EAF2FF; flex-shrink: 0; }
.crus-hero-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.crus-id { display: flex; align-items: center; gap: .9rem; min-width: 0; }
.crus-avatar { width: 52px; height: 52px; border-radius: 14px; flex-shrink: 0; background: linear-gradient(135deg, #F2C75C, #E0A93C); color: #081B35; display: grid; place-items: center; font-weight: 900; font-size: 1.5rem; }
.crus-kicker { display: inline-flex; align-items: center; gap: .35rem; font-size: .66rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #9DC3FF; margin: 0 0 .1rem; }
.crus-kicker svg { width: 13px; height: 13px; }
.crus-nome { margin: 0; font-size: 1.45rem; font-weight: 900; color: #fff; line-height: 1.1; }
.crus-rango { margin: .2rem 0 .4rem; font-size: .82rem; color: #C9DDF7; }
.crus-rango b { color: #fff; }
.crus-rango-bar { height: 7px; border-radius: 999px; background: rgba(255,255,255,.16); overflow: hidden; max-width: 360px; }
.crus-rango-bar span { display: block; height: 100%; background: linear-gradient(90deg, #F2C75C, #FFE39A); transition: width .6s; }
.crus-esci-form { flex-shrink: 0; }
.crus-esci { background: rgba(255,255,255,.1); border: 1.5px solid rgba(255,255,255,.25); color: #EAF2FF; border-radius: 999px; padding: .4rem 1rem; font-size: .78rem; font-weight: 700; cursor: pointer; transition: background .15s; }
.crus-esci:hover { background: rgba(229,72,77,.3); border-color: rgba(229,72,77,.5); }
.crus-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: .6rem; margin-top: 1rem; }
.crus-stat { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12); border-radius: 12px; padding: .8rem .5rem; text-align: center; display: grid; gap: .2rem; }
.crus-stat-ico { display: inline-grid; place-items: center; width: 40px; height: 40px; margin: 0 auto; border-radius: 10px; }
.crus-stat-ico svg { width: 22px; height: 22px; }
.crus-stat-ico.gold { background: rgba(242,199,92,.2); color: #FFE39A; }
.crus-stat-ico.fire { font-size: 1.4rem; }
.crus-stat-ico.blue { background: rgba(37,99,235,.25); color: #9DC3FF; }
.crus-stat-ico.teal { background: rgba(20,184,166,.2); color: #7FE6D4; }
.crus-stat b { font-size: 1.4rem; font-weight: 900; color: #fff; }
.crus-stat span { font-size: .74rem; color: #B9D2F2; }

.crus-avviso { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  background: #FFF7E6; border: 1.5px solid #F2C75C; border-radius: 12px; padding: .5rem 1rem; font-size: .82rem; color: #7A5A16; flex-shrink: 0; }
.crus-avviso svg { width: 15px; height: 15px; vertical-align: middle; }

/* La griglia che riempie l'altezza */
.crus-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: .9rem; height: 56vh; min-height: 420px; }
.crus-side { display: grid; grid-template-rows: auto 1fr auto; gap: .9rem; min-height: 0; }
.crus-duo { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; min-height: 0; }

/* Pannello base */
.crus-pane { background: #fff; border: 1.5px solid rgba(16,37,63,.1); border-radius: 16px;
  padding: .95rem 1.1rem; display: flex; flex-direction: column; min-height: 0; box-shadow: 0 6px 18px rgba(11,31,58,.04); }
.crus-pane-h { display: flex; align-items: center; gap: .5rem; margin-bottom: .7rem; flex-shrink: 0; }
.crus-pane-h h2 { margin: 0; font-size: .95rem; font-weight: 800; color: var(--vision-ink); display: flex; align-items: center; gap: .4rem; flex: 1; }
.crus-pane-h h2 svg { width: 17px; height: 17px; color: var(--vision-blue); }
.crus-pill { font-size: .72rem; color: var(--vision-muted); background: #F1F5FB; border-radius: 999px; padding: .12rem .5rem; }
.crus-pill b { color: var(--vision-ink); }
.crus-link { font-size: .74rem; font-weight: 700; color: var(--vision-blue); text-decoration: none; }
.crus-vuoto { font-size: .78rem; color: var(--vision-muted); margin: 0; line-height: 1.4; }

/* La mia voce — protagonista a sinistra, lista scrollabile INTERNAMENTE */
.crus-voce { min-height: 0; }
.crus-voce-filtri { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .7rem; flex-shrink: 0; }
.crus-search { padding: .5rem .75rem; border-radius: 10px; border: 1.5px solid rgba(16,37,63,.14); font: inherit; font-size: .85rem; }
.crus-search:focus { outline: none; border-color: var(--vision-blue); box-shadow: 0 0 0 3px rgba(37,99,235,.1); }
.crus-chips { display: flex; gap: .35rem; }
.crus-chip { padding: .32rem .7rem; border-radius: 999px; border: 1.5px solid rgba(16,37,63,.15); background: #fff; font-size: .73rem; font-weight: 700; color: var(--vision-muted); cursor: pointer; transition: all .15s; }
.crus-chip:hover { border-color: var(--vision-blue); }
.crus-chip.is-on { background: var(--vision-blue); border-color: var(--vision-blue); color: #fff; }
.crus-voce-lista { flex: 1; min-height: 0; overflow-y: auto; display: grid; gap: .45rem; padding-right: .3rem; align-content: start; }
.crus-voce-lista .voce-riga { padding: .7rem; background: #F7FAFF; border: 1.5px solid rgba(16,37,63,.08); border-radius: 11px; }
.crus-voce .sant-voce-pag { flex-shrink: 0; margin-top: .6rem; }
.crus-voce-locked { display: flex; flex-direction: column; gap: .6rem; justify-content: center; flex: 1; text-align: center; padding: 1rem; }
.crus-lock-tit { font-size: 1rem; font-weight: 800; color: var(--vision-ink); margin: 0; }
.crus-lock-bar { height: 9px; border-radius: 999px; background: #E8EEF6; overflow: hidden; max-width: 300px; margin: 0 auto; }
.crus-lock-bar span { display: block; height: 100%; background: linear-gradient(90deg, #F2C75C, #FFE39A); }
.crus-lock-sub { font-size: .82rem; color: var(--vision-muted); margin: 0; }
.crus-lock-sub b { color: var(--vision-blue); }
.crus-voce-locked .btn { align-self: center; }

/* Il Comune */
.crus-comune { background: linear-gradient(158deg, #FFFDF7, #FFF6E2); border-color: rgba(242,199,92,.5); flex-shrink: 0; }
.crus-comune .crus-pane-h h2 svg { color: #C98A1E; }
.crus-comune-nome { font-size: 1.15rem; font-weight: 900; color: var(--vision-ink); }
.crus-comune-nome small { color: var(--vision-muted); font-weight: 600; }
.crus-comune-rank { margin: .25rem 0; font-size: .82rem; color: var(--vision-ink); }
.crus-comune-mini { display: flex; gap: 1rem; font-size: .74rem; color: var(--vision-muted); margin-bottom: .6rem; }
.crus-comune-cta { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.crus-cambia summary { font-size: .74rem; color: var(--vision-muted); cursor: pointer; }
.crus-cambia select { margin-top: .4rem; width: 100%; padding: .4rem; border-radius: 8px; border: 1.5px solid rgba(16,37,63,.14); font-size: .82rem; }

/* Liste mini */
.crus-lista-mini { list-style: none; margin: 0; padding: 0; display: grid; gap: .3rem; overflow-y: auto; min-height: 0; }
.crus-lista-mini a { display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding: .4rem .55rem; background: #F7FAFF; border-radius: 8px; text-decoration: none; }
.crus-lista-mini b { font-size: .8rem; color: var(--vision-ink); }
.crus-lista-mini small { font-size: .68rem; color: var(--vision-muted); }

/* Trofei */
.crus-trofei { display: flex; flex-wrap: wrap; gap: .4rem; overflow-y: auto; min-height: 0; align-content: start; }
.crus-trofeo { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; font-size: 1.15rem; border: 1.5px solid rgba(16,37,63,.1); }
.crus-trofeo.is-vinto { background: linear-gradient(158deg, #FFFDF7, #FFF2CF); border-color: rgba(242,199,92,.6); }
.crus-trofeo.is-chiuso { opacity: .4; filter: grayscale(.6); }

/* Diario */
.crus-diario { list-style: none; margin: 0; padding: 0; display: grid; gap: .3rem; overflow-y: auto; min-height: 0; }
.crus-diario li { display: grid; grid-template-columns: auto 1fr; gap: .5rem; align-items: center; font-size: .76rem; }
.crus-diario-p { font-weight: 800; font-variant-numeric: tabular-nums; }
.crus-diario-p.su { color: #0B7A55; } .crus-diario-p.giu { color: #E5484D; }
.crus-diario-t { color: var(--vision-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Impostazioni link */
.crus-imp-link { text-decoration: none; color: inherit; justify-content: space-between; transition: all .15s; }
.crus-imp-link:hover { border-color: var(--vision-blue); transform: translateY(-2px); box-shadow: 0 8px 18px rgba(37,99,235,.1); }
.crus-imp-cta { font-size: .8rem; font-weight: 700; color: var(--vision-blue); margin-top: auto; }


/* RIGA GIGANTE trofei */
.crus-trofei-riga { background: #fff; border: 1.5px solid rgba(16,37,63,.1); border-radius: 16px; padding: 1rem 1.2rem; box-shadow: 0 6px 18px rgba(11,31,58,.04); }
.crus-trofei-h { display: flex; align-items: center; gap: .6rem; margin-bottom: .8rem; }
.crus-trofei-h h2 { margin: 0; font-size: 1rem; font-weight: 800; color: var(--vision-ink); display: flex; align-items: center; gap: .4rem; flex: 1; }
.crus-trofei-h h2 svg { width: 18px; height: 18px; color: #C98A1E; }
.crus-trofei-scroll { display: flex; gap: .7rem; overflow-x: auto; padding-bottom: .4rem; }
.crus-trofeo-card { position: relative; flex: 0 0 150px; text-align: center; padding: 1rem .7rem; border-radius: 14px; border: 1.5px solid rgba(16,37,63,.1); display: grid; gap: .25rem; align-content: start; }
.crus-trofeo-card.is-vinto { background: linear-gradient(158deg, #FFFDF7, #FFF2CF); border-color: rgba(242,199,92,.6); }
.crus-trofeo-card.is-chiuso { opacity: .5; filter: grayscale(.5); }
.crus-trofeo-ico { font-size: 1.8rem; }
.crus-trofeo-card b { font-size: .84rem; color: var(--vision-ink); }
.crus-trofeo-card small { font-size: .68rem; color: var(--vision-muted); line-height: 1.3; }
.crus-trofeo-bonus { position: absolute; top: .5rem; right: .5rem; font-size: .62rem; font-weight: 800; color: #C98A1E; background: rgba(242,199,92,.2); border-radius: 999px; padding: .1rem .4rem; }

/* Sotto i 1100px: il cruscotto torna a scorrere (mobile/laptop stretto) */
@media (max-width: 1100px) {
  .crus-shell { height: auto; min-height: 0; }
  .crus-grid { grid-template-columns: 1fr; height: auto; min-height: 0; align-items: start; }
  .crus-side { grid-template-rows: none; }
  .crus-voce-lista { max-height: 460px; }
  .crus-stats { grid-template-columns: repeat(3, 1fr); }
}
/* Hero azioni: Impostazioni + Esci affiancati */
.crus-hero-azioni { display: flex; align-items: center; gap: .5rem; flex-shrink: 0; }
.crus-hero-btn { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; background: rgba(255,255,255,.1); border: 1.5px solid rgba(255,255,255,.25); color: #EAF2FF; border-radius: 999px; padding: .4rem 1rem; font-size: .78rem; font-weight: 700; transition: background .15s; }
.crus-hero-btn:hover { background: rgba(255,255,255,.2); color: #fff; }
.crus-hero-btn svg { width: 14px; height: 14px; }


/* Account su smartphone: azioni separate dall'identità e pannello voce più alto */
@media (max-width: 640px) {
  .cruscotto { padding-top: .65rem; }
  .crus-shell { padding: 0 .75rem; gap: .75rem; }
  .crus-hero { padding: .9rem; border-radius: 16px; }
  .crus-hero-top { flex-direction: column-reverse; gap: .75rem; }
  .crus-hero-azioni { width: 100%; justify-content: flex-end; gap: .4rem; }
  .crus-hero-btn, .crus-esci { padding: .38rem .78rem; font-size: .73rem; }
  .crus-id { width: 100%; align-items: flex-start; gap: .75rem; }
  .crus-avatar { width: 50px; height: 50px; border-radius: 13px; font-size: 1.4rem; margin-top: .05rem; }
  .crus-id > div { min-width: 0; flex: 1; }
  .crus-kicker { font-size: .62rem; line-height: 1.25; }
  .crus-nome { font-size: 1.35rem; }
  .crus-rango { font-size: .78rem; line-height: 1.45; }
  .crus-rango-bar { width: 100%; max-width: none; }
  .crus-stats { gap: .45rem; margin-top: .85rem; }
  .crus-stat { min-width: 0; padding: .7rem .25rem; border-radius: 11px; }
  .crus-stat-ico { width: 38px; height: 38px; }
  .crus-stat b { font-size: 1.28rem; }
  .crus-stat span { font-size: .68rem; line-height: 1.2; overflow-wrap: anywhere; }

  .crus-pane { padding: .9rem; border-radius: 15px; }
  .crus-voce { min-height: 470px; }
  .crus-voce-lista { flex: 0 1 auto; min-height: 300px; max-height: 460px; overflow-y: auto; }
  .crus-voce .sant-voce-pag { margin-top: .75rem; }
  .crus-chips { flex-wrap: wrap; }
}

@media (max-width: 380px) {
  .crus-shell { padding: 0 .55rem; }
  .crus-hero { padding: .8rem; }
  .crus-hero-btn, .crus-esci { padding: .35rem .62rem; font-size: .7rem; }
  .crus-avatar { width: 46px; height: 46px; }
  .crus-nome { font-size: 1.22rem; }
  .crus-stat { padding-inline: .15rem; }
  .crus-stat span { font-size: .64rem; }
}

/* Tre grafici di posizionamento */
.crus-grafici { display: grid; grid-template-columns: repeat(3, 1fr); gap: .9rem; }
.crus-graf { background: #fff; border: 1.5px solid rgba(16,37,63,.1); border-radius: 16px; padding: 1rem 1.1rem; box-shadow: 0 6px 18px rgba(11,31,58,.04); display: flex; flex-direction: column; }
.crus-graf h3 { margin: 0 0 .5rem; font-size: .84rem; font-weight: 800; color: var(--vision-ink); display: flex; align-items: center; gap: .4rem; }
.crus-graf h3 svg { width: 16px; height: 16px; color: var(--vision-blue); }
.crus-graf-body { position: relative; height: 130px; }
.crus-graf-body canvas { max-height: 130px; }
.crus-graf-cap { text-align: center; margin: .3rem 0 0; font-size: .82rem; color: var(--vision-muted); }
.crus-graf-cap b { color: var(--vision-ink); font-size: 1rem; }
.crus-graf-vuoto { text-align: center; margin: auto 0; padding: 1.5rem 0; }
@media (max-width: 1100px) { .crus-grafici { grid-template-columns: 1fr; } }

/* ================================================================
   IMPOSTAZIONI PROFILO — cruscotto del profilo
   ================================================================ */
.imp { padding: .9rem 0 2rem; }
.imp-shell { max-width: 1540px; margin: 0 auto; padding: 0 clamp(.9rem, 2vw, 1.6rem); display: flex; flex-direction: column; gap: .9rem; }

.imp-hero { display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  background: radial-gradient(circle at 100% 0, rgba(37,99,235,.4), transparent 46%), linear-gradient(150deg, #081B35, #123F78 64%, #1E4FB0);
  border-radius: 18px; padding: 1.2rem 1.5rem; color: #EAF2FF; }
.imp-hero-l { display: flex; align-items: center; gap: 1rem; min-width: 0; }
.imp-avatar { width: 58px; height: 58px; border-radius: 15px; flex-shrink: 0; background: linear-gradient(135deg, #F2C75C, #E0A93C); color: #081B35; display: grid; place-items: center; font-weight: 900; font-size: 1.7rem; }
.imp-kicker { display: inline-flex; align-items: center; gap: .35rem; font-size: .68rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #9DC3FF; margin: 0 0 .1rem; }
.imp-kicker svg { width: 14px; height: 14px; }
.imp-nome { margin: 0; font-size: 1.55rem; font-weight: 900; color: #fff; line-height: 1.1; }
.imp-sub { margin: .3rem 0 0; font-size: .84rem; color: #C9DDF7; max-width: 46ch; }
.imp-torna { display: inline-flex; align-items: center; gap: .4rem; flex-shrink: 0; text-decoration: none; background: rgba(255,255,255,.1); border: 1.5px solid rgba(255,255,255,.25); color: #EAF2FF; border-radius: 999px; padding: .45rem 1.1rem; font-size: .8rem; font-weight: 700; transition: background .15s; }
.imp-torna:hover { background: rgba(255,255,255,.2); color: #fff; }
.imp-torna svg { width: 15px; height: 15px; transform: rotate(180deg); }

.imp-grid { display: grid; grid-template-columns: 340px 1fr; gap: .9rem; align-items: start; }
.imp-side { display: grid; gap: .9rem; }
.imp-main { display: grid; gap: .9rem; }
.imp-card { background: #fff; border: 1.5px solid rgba(16,37,63,.1); border-radius: 16px; padding: 1.2rem 1.3rem; box-shadow: 0 6px 18px rgba(11,31,58,.04); }
.imp-card-h { display: flex; align-items: center; gap: .5rem; margin-bottom: 1rem; }
.imp-card-h h2 { margin: 0; font-size: 1rem; font-weight: 800; color: var(--vision-ink); display: flex; align-items: center; gap: .45rem; flex: 1; }
.imp-card-h h2 svg { width: 18px; height: 18px; color: var(--vision-blue); }

/* Card identità */
.imp-identita { background: linear-gradient(158deg, #F7FAFF, #EEF4FD); border-color: rgba(37,99,235,.18); }
.imp-id-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: 1rem; flex-wrap: wrap; }
.imp-rango-badge { display: inline-flex; align-items: center; gap: .3rem; font-size: .78rem; font-weight: 800; color: #C98A1E; background: rgba(242,199,92,.18); border-radius: 999px; padding: .25rem .7rem; }
.imp-rango-badge svg { width: 14px; height: 14px; }
.imp-membro { font-size: .72rem; color: var(--vision-muted); }
.imp-id-stats { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; margin-bottom: 1rem; }
.imp-id-stats div { text-align: center; background: #fff; border-radius: 11px; padding: .6rem; }
.imp-id-stats b { display: block; font-size: 1.2rem; font-weight: 900; color: var(--vision-ink); }
.imp-id-stats span { font-size: .66rem; color: var(--vision-muted); }
.imp-comune, .imp-compagnie { display: flex; align-items: center; gap: .45rem; font-size: .82rem; color: var(--vision-ink); padding: .4rem 0; }
.imp-comune svg, .imp-compagnie svg { width: 15px; height: 15px; color: var(--vision-blue); }
.imp-comune b { color: var(--vision-blue); }

/* Completezza */
.imp-perc { font-size: 1.1rem; font-weight: 900; color: var(--vision-blue); }
.imp-comp-bar { height: 9px; border-radius: 999px; background: #E8EEF6; overflow: hidden; margin-bottom: 1rem; }
.imp-comp-bar span { display: block; height: 100%; background: linear-gradient(90deg, #2563EB, #4F8BFF); transition: width .6s; }
.imp-comp-lista { list-style: none; margin: 0 0 .8rem; padding: 0; display: grid; gap: .4rem; }
.imp-comp-lista li { font-size: .82rem; color: var(--vision-muted); }
.imp-comp-lista li.ok { color: #0B7A55; font-weight: 600; }
.imp-comp-nudge { font-size: .74rem; color: var(--vision-muted); margin: 0; line-height: 1.4; font-style: italic; }

/* Dati + form */
.imp-dl { display: grid; grid-template-columns: auto 1fr; gap: .35rem .9rem; margin: 0 0 1rem; font-size: .84rem; }
.imp-dl dt { color: var(--vision-muted); font-weight: 700; }
.imp-dl dd { margin: 0; color: var(--vision-ink); }
.imp-verifica { margin-bottom: 1rem; }
.imp-form { display: grid; gap: .8rem; }
.imp-form-riga { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.imp-card-intro { font-size: .84rem; color: var(--vision-muted); margin: 0 0 1rem; }
.imp-checks { display: grid; gap: .6rem; }
.imp-check { display: flex; align-items: flex-start; gap: .6rem; cursor: pointer; padding: .6rem .7rem; border: 1.5px solid rgba(16,37,63,.1); border-radius: 11px; transition: border-color .15s; }
.imp-check:hover { border-color: var(--vision-blue); }
.imp-check input { margin-top: .2rem; }
.imp-check span { display: grid; gap: .1rem; }
.imp-check b { font-size: .84rem; color: var(--vision-ink); }
.imp-check small { font-size: .7rem; color: var(--vision-muted); }

@media (max-width: 960px) {
  .imp-grid { grid-template-columns: 1fr; }
  .imp-hero { flex-direction: column; align-items: flex-start; }
  .imp-form-riga, .imp-id-stats { grid-template-columns: 1fr 1fr; }
}

/* ================================================================
   SQUADRE — margini stretti + cruscotto (mappa + gauge)
   ================================================================ */
.sqp-in { max-width: 1540px; margin: 0 auto; padding: 0 clamp(.9rem, 2vw, 1.6rem); }

/* Cruscotto: mappa grande a sinistra, quattro gauge a destra */
.sqp-cruscotto { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; margin: 0 0 1.4rem; padding: 1.3rem; background: linear-gradient(158deg, #F7FAFF, #EEF4FD); border: 1.5px solid rgba(37,99,235,.14); border-radius: 18px; }
.sqp-mappa-wrap { display: flex; flex-direction: column; }
.sqp-mappa-h { display: flex; align-items: center; gap: .4rem; font-size: .92rem; font-weight: 800; color: var(--vision-ink); margin-bottom: .7rem; }
.sqp-mappa-h svg { width: 17px; height: 17px; color: #C98A1E; }
.sqp-mappa-h small { margin-left: auto; padding: .2rem .55rem; border-radius: 999px; background: rgba(37,99,235,.1); color: var(--vision-blue); font-size: .67rem; font-weight: 800; white-space: nowrap; }
.sqp-mappa { flex: 1; min-height: 320px; border-radius: 14px; overflow: hidden; border: 1.5px solid rgba(16,37,63,.14); z-index: 0; box-shadow: 0 8px 22px rgba(11,31,58,.08); }
.sqp-mappa-legenda { display: flex; align-items: center; gap: .45rem; margin-top: .6rem; color: var(--vision-muted); font-size: .68rem; font-weight: 700; }
.sqp-legenda-scala { display: block; flex: 1; min-width: 70px; max-width: 170px; height: 8px; border-radius: 999px; background: linear-gradient(90deg, #DCE8F6, #BBDCF4, #76C4DD, #38A89D, #E8C05D, #E47A4F); box-shadow: inset 0 0 0 1px rgba(16,37,63,.08); }
.sqp-mappa-gloria { display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; margin: .7rem 0 0; font-size: .82rem; color: var(--vision-ink); }
.sqp-mappa-gloria svg { width: 15px; height: 15px; color: #C98A1E; }
.sqp-mappa-gloria b { color: var(--vision-blue); }
.sqp-territori-elenco { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .65rem; }
.sqp-territorio-chip { display: inline-flex; align-items: center; gap: .28rem; padding: .3rem .55rem; border: 1px solid rgba(49,93,123,.16); border-radius: 999px; background: rgba(255,255,255,.86); color: var(--vision-ink); font-size: .7rem; line-height: 1; }
.sqp-territorio-chip b { font-size: .72rem; }
.sqp-territorio-chip small { color: var(--vision-muted); font-size: .62rem; font-weight: 800; }
.sqp-territorio-chip em { color: var(--vision-blue); font-size: .63rem; font-style: normal; font-weight: 800; }
.sqp-territorio-chip.is-sede { border-color: rgba(183,121,31,.42); box-shadow: inset 0 0 0 1px rgba(242,199,92,.15); }
.sqp-territorio-chip.is-sede::before { content: 'sede'; color: #9A671C; font-size: .56rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.sqp-territorio-chip--altri { background: rgba(37,99,235,.08); color: var(--vision-blue); font-weight: 850; }
.sqp-map-tooltip { display: grid; gap: .2rem; min-width: 170px; }
.sqp-map-tooltip strong { color: #10253F; font-size: .82rem; }
.sqp-map-tooltip strong small { color: #64748B; font-size: .68rem; }
.sqp-map-tooltip span { color: #52657A; font-size: .7rem; }
.sqp-map-tooltip b { color: #174F88; }
.sqp-vuoto-mini { font-size: .8rem; color: var(--vision-muted); margin: 0; padding: 1.5rem 0; text-align: center; }

.sqp-graf-col { display: flex; flex-direction: column; }
.sqp-graf-titolo { display: flex; align-items: center; gap: .45rem; font-size: .92rem; font-weight: 800; color: var(--vision-ink); margin: 0 0 .8rem; }
.sqp-graf-titolo svg { width: 17px; height: 17px; color: var(--vision-blue); }
.sqp-graf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; flex: 1; }
.sqp-graf { background: #fff; border: 1.5px solid rgba(16,37,63,.1); border-radius: 14px; padding: .9rem .7rem; text-align: center; display: flex; flex-direction: column; justify-content: center; box-shadow: 0 4px 12px rgba(11,31,58,.04); }
.sqp-graf h4 { margin: 0 0 .4rem; font-size: .78rem; font-weight: 800; color: var(--vision-ink); }
.sqp-gauge { position: relative; height: 104px; }
.sqp-gauge canvas { max-height: 104px; }
.sqp-graf-na { font-size: 1.6rem; font-weight: 800; color: #CBD5E1; padding: 1.4rem 0; }
.sqp-graf-cap { margin: .3rem 0 0; font-size: .76rem; color: var(--vision-muted); }
.sqp-graf-cap b { color: var(--vision-ink); font-size: .95rem; }

@media (max-width: 900px) {
  .sqp-cruscotto { grid-template-columns: 1fr; }
  .sqp-mappa { min-height: 300px; }
}
@media (max-width: 520px) {
  .sqp-mappa-h { align-items: flex-start; flex-wrap: wrap; }
  .sqp-mappa-h small { margin-left: 0; }
  .sqp-mappa-legenda { align-items: flex-start; flex-wrap: wrap; }
  .sqp-legenda-scala { order: 3; flex-basis: 100%; max-width: none; }
}

/* Squadre — hero navy uniforme come le altre pagine */
.sqp-hero-main { display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  background: radial-gradient(circle at 100% 0, rgba(37,99,235,.4), transparent 46%), linear-gradient(150deg, #081B35, #123F78 64%, #1E4FB0);
  border-radius: 18px; padding: 1.2rem 1.5rem; color: #EAF2FF; margin-bottom: 1.1rem; }
.sqp-hero-main-l { min-width: 0; }
.sqp-hero-kicker { display: inline-flex; align-items: center; gap: .35rem; font-size: .68rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #9DC3FF; margin: 0 0 .2rem; }
.sqp-hero-kicker svg { width: 14px; height: 14px; }
.sqp-hero-main h1 { margin: 0; font-size: 1.55rem; font-weight: 900; color: #fff; line-height: 1.15; }
.sqp-hero-sub { margin: .3rem 0 0; font-size: .84rem; color: #C9DDF7; max-width: 60ch; }
.sqp-hero-torna { display: inline-flex; align-items: center; gap: .4rem; flex-shrink: 0; text-decoration: none; background: rgba(255,255,255,.1); border: 1.5px solid rgba(255,255,255,.25); color: #EAF2FF; border-radius: 999px; padding: .45rem 1.1rem; font-size: .8rem; font-weight: 700; transition: background .15s; }
.sqp-hero-torna:hover { background: rgba(255,255,255,.2); color: #fff; }
.sqp-hero-torna svg { width: 15px; height: 15px; transform: rotate(180deg); }
@media (max-width: 900px) { .sqp-hero-main { flex-direction: column; align-items: flex-start; } }

/* Torna al Santuario dentro la carta-vessillo (quando è l'unica compagnia) */
.sqp-hero { position: relative; }
.sqp-hero-destra { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: .8rem; }
.sqp-hero-destra .sqp-numeri { margin-left: 0; margin-top: 0; justify-content: flex-end; }
@media (max-width: 640px) {
  .sqp-hero-destra { align-items: stretch; width: 100%; }
  .sqp-hero-torna--card { align-self: flex-start; }
}

/* ================================================================
   NOTIFICHE — hero navy uniforme + margini stretti
   ================================================================ */
.ntf-shell { padding: 1.4rem 0 3rem; }
.ntf-in { max-width: 1540px; margin: 0 auto; padding: 0 clamp(.9rem, 2vw, 1.6rem); }
.ntf-hero { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  background: radial-gradient(circle at 100% 0, rgba(37,99,235,.4), transparent 46%), linear-gradient(150deg, #081B35, #123F78 64%, #1E4FB0);
  border-radius: 18px; padding: 1.2rem 1.5rem; color: #EAF2FF; margin-bottom: 1.1rem; }
.ntf-hero-l { min-width: 0; }
.ntf-hero-kicker { display: inline-flex; align-items: center; gap: .35rem; font-size: .68rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #9DC3FF; margin: 0 0 .2rem; }
.ntf-hero-kicker svg { width: 14px; height: 14px; }
.ntf-hero h1 { margin: 0; font-size: 1.55rem; font-weight: 900; color: #fff; line-height: 1.15; }
.ntf-hero-sub { margin: .3rem 0 0; font-size: .84rem; color: #C9DDF7; max-width: 60ch; }
.ntf-hero-azioni { display: flex; align-items: center; gap: .5rem; flex-shrink: 0; }
.ntf-hero-btn, .ntf-hero-torna { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; background: rgba(255,255,255,.1); border: 1.5px solid rgba(255,255,255,.25); color: #EAF2FF; border-radius: 999px; padding: .45rem 1.1rem; font-size: .8rem; font-weight: 700; cursor: pointer; transition: background .15s; }
.ntf-hero-btn:hover { background: rgba(229,72,77,.3); border-color: rgba(229,72,77,.5); }
.ntf-hero-torna:hover { background: rgba(255,255,255,.2); color: #fff; }
.ntf-hero-torna svg { width: 15px; height: 15px; transform: rotate(180deg); }
@media (max-width: 700px) { .ntf-hero { flex-direction: column; align-items: flex-start; } }

/* Nota nella correzione di una voce respinta */
.q-edit-nota { font-size: .76rem; color: #C98A1E; background: rgba(242,199,92,.14); border-radius: 8px; padding: .4rem .6rem; margin: 0 0 .5rem; }

/* Registrazione — selettore Persona / Ente */
.auth-scelta { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; margin-bottom: 1.2rem; }
.auth-scelta-opt { position: relative; display: flex; flex-direction: column; gap: .2rem; padding: .9rem 1rem; border: 2px solid rgba(16,37,63,.12); border-radius: 14px; cursor: pointer; transition: all .15s; background: #fff; }
.auth-scelta-opt:hover { border-color: rgba(37,99,235,.4); }
.auth-scelta-opt.is-on { border-color: var(--vision-blue); background: linear-gradient(158deg, #F7FAFF, #EEF4FD); box-shadow: 0 4px 14px rgba(37,99,235,.1); }
.auth-scelta-opt input { position: absolute; opacity: 0; pointer-events: none; }
.auth-scelta-ico { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; background: rgba(37,99,235,.1); color: var(--vision-blue); margin-bottom: .2rem; }
.auth-scelta-ico svg { width: 18px; height: 18px; }
.auth-scelta-opt.is-on .auth-scelta-ico { background: var(--vision-blue); color: #fff; }
.auth-scelta-opt b { font-size: .9rem; color: var(--vision-ink); }
.auth-scelta-opt small { font-size: .72rem; color: var(--vision-muted); }
@media (max-width: 520px) { .auth-scelta { grid-template-columns: 1fr; } }

/* Nota "unisciti su invito" per Custodi singoli che non possono fondare */
.sqp-invito-nota { display: flex; align-items: flex-start; gap: 1rem; background: linear-gradient(158deg, #F7FAFF, #EEF4FD); border: 1.5px solid rgba(37,99,235,.16); border-radius: 18px; padding: 1.4rem 1.6rem; margin: 0 auto 1.6rem; }
.sqp-invito-nota h2 { margin: 0 0 .4rem; font-size: 1.1rem; font-weight: 800; color: var(--vision-ink); }
.sqp-invito-nota p { margin: 0 0 .8rem; font-size: .88rem; color: var(--vision-muted); line-height: 1.5; }
.sqp-invito-nota b { color: var(--vision-blue); }

/* Lista Custodi del Comune da invitare (lato ente) */
.sqp-invitabili { margin-top: 1rem; padding-top: .9rem; border-top: 1px dashed rgba(16,37,63,.14); }
.sqp-invitabili-tit { display: flex; align-items: center; gap: .4rem; font-size: .78rem; font-weight: 700; color: var(--vision-muted); margin-bottom: .6rem; }
.sqp-invitabili-tit svg { width: 15px; height: 15px; }
.sqp-invitabili-lista { display: grid; gap: .5rem; }
.sqp-invitabile { display: inline-flex; align-items: center; gap: .5rem; background: rgba(37,99,235,.06); border: 1px solid rgba(37,99,235,.16); border-radius: 999px; padding: .3rem .3rem .3rem .8rem; }
.sqp-invitabile-nome { font-size: .82rem; font-weight: 600; color: var(--vision-ink); }
.btn-xs { font-size: .72rem; padding: .25rem .6rem; }

/* Compagnie del Comune a cui candidarsi (lato Custode) */
.sqp-comune-lista { display: grid; gap: .6rem; margin: .4rem 0 1rem; }
.sqp-comune-riga { display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: #fff; border: 1px solid rgba(16,37,63,.1); border-radius: 12px; padding: .7rem .9rem; }
.sqp-comune-nome { display: inline-flex; align-items: center; gap: .5rem; font-size: .9rem; color: var(--vision-ink); }
.sqp-comune-nome svg { width: 16px; height: 16px; color: var(--vision-blue); }
.sqp-comune-nome small { color: var(--vision-muted); font-weight: 500; }
.sqp-comune-stato { font-size: .76rem; color: var(--vision-muted); font-style: italic; }
.sqp-comune-vuoto { font-size: .84rem; color: var(--vision-muted); font-style: italic; margin: .2rem 0 1rem; }

/* Richieste d'ingresso in evidenza (in cima alla card Compagnia) */
.sqp-richieste--alert { background: linear-gradient(158deg, #FFF9EC, #FEF3D7); border: 1.5px solid rgba(217,164,42,.4); border-radius: 16px; padding: 1.1rem 1.3rem; margin: 1rem 0 1.4rem; box-shadow: 0 4px 16px rgba(217,164,42,.12); }
.sqp-richieste-tit { display: flex; align-items: center; gap: .5rem; margin: 0 0 .8rem; font-size: 1rem; font-weight: 800; color: #7A5B12; }
.sqp-richieste-badge { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 .4rem; border-radius: 999px; background: #D9A42A; color: #fff; font-size: .85rem; font-weight: 900; }
.sqp-richieste--alert .sqp-richiesta { display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: #fff; border: 1px solid rgba(217,164,42,.25); border-radius: 12px; padding: .7rem .9rem; margin-bottom: .5rem; }
.sqp-richieste--alert .sqp-richiesta:last-child { margin-bottom: 0; }
.sqp-richiesta-chi { display: inline-flex; align-items: center; gap: .7rem; }
.sqp-richiesta-ava { display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, #F2C75C, #D9A42A); color: #fff; font-weight: 800; font-size: 1rem; }
.sqp-richiesta-chi > span:last-child { display: flex; flex-direction: column; line-height: 1.25; }
.sqp-richiesta-chi small { color: var(--vision-muted); font-size: .76rem; }
.sqp-richiesta-azioni { display: inline-flex; align-items: center; gap: .8rem; margin: 0; }
@media (max-width: 560px) {
  .sqp-richieste--alert .sqp-richiesta { flex-direction: column; align-items: stretch; gap: .7rem; }
  .sqp-richiesta-azioni { justify-content: flex-end; }
}

/* Scheda dati del richiedente (per decidere) */
.sqp-richiesta-info { display: flex; flex-direction: column; gap: .15rem; }
.sqp-richiesta-info > b { display: inline-flex; align-items: center; gap: .35rem; font-size: .92rem; color: var(--vision-ink); }
.sqp-verif { display: inline-flex; color: #1E9E5A; }
.sqp-verif svg { width: 14px; height: 14px; }
.sqp-richiesta-info small { color: var(--vision-muted); font-size: .76rem; }
.sqp-richiesta-stats { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: .35rem; }
.sqp-richiesta-stats span { font-size: .8rem; color: var(--vision-muted); }
.sqp-richiesta-stats b { color: var(--vision-ink); font-weight: 800; }
.sqp-richiesta-stats .ok b { color: #1E9E5A; }
.sqp-richiesta-stats .oro b { color: #D9A42A; }

/* CTA associati a una Compagnia nel box Santuario */
.crus-cta-compagnia { display: flex; flex-direction: column; gap: .6rem; }
.crus-cta-compagnia p { margin: 0; font-size: .82rem; color: var(--vision-muted); line-height: 1.45; }
.crus-cta-compagnia b { color: var(--vision-ink); }
.crus-cta-compagnia .btn svg { width: 15px; height: 15px; }

/* Scheda candidato da invitare (con dati per scegliere i forti) */
.sqp-invitabili-tit small { font-weight: 500; color: var(--vision-muted); }
.sqp-candidato { display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: #fff; border: 1px solid rgba(16,37,63,.1); border-radius: 12px; padding: .6rem .85rem; }
.sqp-candidato-chi { display: inline-flex; align-items: center; gap: .7rem; }
.sqp-candidato-ava { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: linear-gradient(135deg, #6E93F0, #3A5FD9); color: #fff; font-weight: 800; font-size: .95rem; }
.sqp-candidato-info { display: flex; flex-direction: column; gap: .1rem; }
.sqp-candidato-info > b { display: inline-flex; align-items: center; gap: .35rem; font-size: .9rem; color: var(--vision-ink); }
.sqp-candidato-stats { display: flex; flex-wrap: wrap; gap: .7rem; }
.sqp-candidato-stats span { font-size: .78rem; color: var(--vision-muted); }
.sqp-candidato-stats b { color: var(--vision-ink); font-weight: 800; }
.sqp-candidato-stats .ok b { color: #1E9E5A; }
.sqp-candidato-stats .oro b { color: #D9A42A; }
@media (max-width: 560px) {
  .sqp-candidato { flex-direction: column; align-items: stretch; gap: .6rem; }
  .sqp-candidato form { display: flex; justify-content: flex-end; }
}

/* ═══ ALERT INVITO RICEVUTO: grande e in evidenza ═══ */
.sqp-invito-alert { background: linear-gradient(150deg, #EAF1FF, #DCE8FF); border: 2px solid rgba(37,99,235,.35); border-radius: 20px; padding: 1.5rem 1.7rem; margin: 0 auto 1.6rem; box-shadow: 0 8px 28px rgba(37,99,235,.16); }
.sqp-invito-alert-testa { display: flex; align-items: flex-start; gap: 1rem; margin-bottom: 1.1rem; }
.sqp-invito-alert-ico { flex: none; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 14px; background: linear-gradient(135deg, #3A5FD9, #2547A8); color: #fff; }
.sqp-invito-alert-ico svg { width: 26px; height: 26px; }
.sqp-invito-alert-kick { display: block; font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--vision-blue); margin-bottom: .2rem; }
.sqp-invito-alert h2 { margin: 0; font-size: 1.25rem; font-weight: 800; color: var(--vision-ink); line-height: 1.2; }
.sqp-invito-alert-comune { display: inline-flex; align-items: center; gap: .3rem; margin: .35rem 0 0; font-size: .82rem; color: var(--vision-muted); }
.sqp-invito-alert-comune svg { width: 14px; height: 14px; }
.sqp-invito-alert-valori { display: grid; grid-template-columns: repeat(4, 1fr); gap: .7rem; margin-bottom: 1.2rem; }
.sqp-vbox { text-align: center; background: rgba(255,255,255,.7); border: 1px solid rgba(37,99,235,.14); border-radius: 12px; padding: .7rem .4rem; }
.sqp-vbox b { display: block; font-size: 1.35rem; font-weight: 900; color: var(--vision-ink); line-height: 1; }
.sqp-vbox span { font-size: .7rem; color: var(--vision-muted); }
.sqp-vbox--ok b { color: #1E9E5A; }
.sqp-vbox--oro b { color: #D9A42A; }
.sqp-invito-alert-azioni { display: flex; align-items: center; gap: 1rem; margin: 0; }
.sqp-invito-alert-azioni .btn { flex: 1; }

/* Valori nella lista Associati */
.sqp-comune-riga { flex-wrap: wrap; }
.sqp-comune-testa { display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.sqp-comune-valori { display: flex; flex-wrap: wrap; gap: .7rem; }
.sqp-comune-valori span { font-size: .76rem; color: var(--vision-muted); }
.sqp-comune-valori b { color: var(--vision-ink); font-weight: 800; }
.sqp-comune-valori .ok b { color: #1E9E5A; }
.sqp-comune-valori .oro b { color: #D9A42A; }
@media (max-width: 520px) { .sqp-invito-alert-valori { grid-template-columns: repeat(2, 1fr); } }

/* Candidato già invitato: stato + annulla */
.sqp-candidato-invitato { display: inline-flex; align-items: center; gap: .6rem; }
.sqp-candidato-badge { display: inline-flex; align-items: center; gap: .3rem; font-size: .76rem; font-weight: 700; color: #2547A8; background: rgba(37,99,235,.12); border-radius: 999px; padding: .25rem .7rem; }
.sqp-candidato-badge::before { content: '✓'; font-weight: 900; }

/* Cruscotto a 3 colonne: [invita][mappa][gauge] */
.sqp-cruscotto--tre { grid-template-columns: 0.95fr 1.1fr 1.1fr; }
.sqp-invita-col { display: flex; flex-direction: column; gap: .7rem; background: #fff; border: 1px solid rgba(37,99,235,.14); border-radius: 14px; padding: .9rem; max-height: 460px; overflow-y: auto; }
.sqp-invita-col-h { display: flex; align-items: center; gap: .4rem; font-size: .92rem; font-weight: 800; color: var(--vision-ink); }
.sqp-invita-col-h svg { width: 17px; height: 17px; color: var(--vision-blue); }
.sqp-invita-col .sqp-invita { display: flex; flex-direction: column; gap: .5rem; align-items: stretch; padding: 0; }
.sqp-invita-col .sqp-invita input { width: 100%; height: 40px; box-sizing: border-box; padding: .5rem .7rem; border: 1px solid rgba(16,37,63,.18); border-radius: 9px; font-size: .82rem; flex: none; }
.sqp-invita-col .sqp-candidato { padding: .5rem .6rem; }
.sqp-invita-col .sqp-candidato-ava { width: 30px; height: 30px; font-size: .82rem; }
.sqp-invita-col .sqp-candidato-stats { gap: .5rem; }
.sqp-invita-col .sqp-candidato-stats span { font-size: .7rem; }
.sqp-invita-col .sqp-invitabili-tit { font-size: .74rem; font-weight: 700; color: var(--vision-muted); }
@media (max-width: 980px) { .sqp-cruscotto--tre { grid-template-columns: 1fr; } .sqp-invita-col { max-height: none; } }

/* Alert invito nel Santuario (sotto l'hero) */
.crus-invito-alert { margin: 1.2rem 0 1.4rem; max-width: 100%; }

/* Nota esplicativa sotto l'invito via email */
.sqp-invita-hint { margin: -.1rem 0 .4rem; font-size: .72rem; color: var(--vision-muted); line-height: 1.35; }

/* ═══ Colonna invita a tab ═══ */
.sqp-tabs { display: flex; gap: .25rem; background: rgba(16,37,63,.05); border-radius: 10px; padding: .25rem; }
.sqp-tab { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: .3rem; border: none; background: transparent; border-radius: 7px; padding: .45rem .3rem; font-size: .76rem; font-weight: 700; color: var(--vision-muted); cursor: pointer; transition: all .12s; white-space: nowrap; }
.sqp-tab:hover { color: var(--vision-ink); }
.sqp-tab.is-on { background: #fff; color: var(--vision-blue); box-shadow: 0 1px 4px rgba(16,37,63,.1); }
.sqp-tab i { display: inline-grid; place-items: center; min-width: 17px; height: 17px; padding: 0 .25rem; border-radius: 999px; background: rgba(37,99,235,.14); color: var(--vision-blue); font-size: .66rem; font-style: normal; font-weight: 800; }
.sqp-tab-pane { display: none; margin-top: .7rem; }
.sqp-tab-pane.is-on { display: block; }
.sqp-tab-vuoto { font-size: .78rem; color: var(--vision-muted); font-style: italic; text-align: center; padding: 1.2rem .5rem; line-height: 1.4; }

/* Lista scorrevole */
.sqp-invita-col .sqp-invitabili-lista { display: grid; gap: .5rem; max-height: 340px; overflow-y: auto; padding-right: .2rem; }

/* Scheda candidato: nome su riga propria, niente a-capo storto */
.sqp-candidato { display: grid; gap: .5rem; background: #fff; border: 1px solid rgba(16,37,63,.1); border-radius: 12px; padding: .7rem .8rem; }
.sqp-candidato-testa { display: flex; align-items: center; gap: .55rem; }
.sqp-candidato-nome { font-size: .88rem; font-weight: 700; color: var(--vision-ink); line-height: 1.2; display: inline-flex; align-items: center; gap: .3rem; }
.sqp-candidato-stats { display: flex; flex-wrap: wrap; gap: .6rem; padding-left: calc(30px + .55rem); }
.sqp-candidato-stats span { font-size: .74rem; color: var(--vision-muted); }
.sqp-candidato-stats b { color: var(--vision-ink); font-weight: 800; }
.sqp-candidato-stats .ok b { color: #1E9E5A; }
.sqp-candidato-stats .oro b { color: #D9A42A; }
.sqp-candidato form { display: flex; justify-content: flex-end; }
.sqp-candidato-invitato { display: flex; align-items: center; justify-content: flex-end; gap: .6rem; }

/* Pannello pericoloso: sciogli Compagnia */
.sqp-pannello--pericolo summary b { color: #C0392B; }
.sqp-sciogli { padding: .2rem 1.1rem 1rem; }
.sqp-sciogli p { font-size: .82rem; color: var(--vision-muted); line-height: 1.5; margin: 0 0 .8rem; }
.btn-pericolo { background: #C0392B; color: #fff; border: none; border-radius: 10px; padding: .55rem 1.1rem; font-weight: 700; font-size: .85rem; cursor: pointer; transition: background .12s; }
.btn-pericolo:hover { background: #A93226; }

/* Azioni del membro semplice (lascia Compagnia come pulsante) */
.sqp-membro-azioni { display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; margin-top: 1.2rem; }
.sqp-membro-azioni .sqp-nota-unica { margin: 0; }
.sqp-lascia-btn { display: inline-flex; align-items: center; gap: .4rem; }
.sqp-lascia-btn svg { width: 16px; height: 16px; transform: scaleX(-1); }

/* Alert richieste d'ingresso nel Santuario (ente) */
.crus-richieste-alert { background: linear-gradient(158deg, #FFF9EC, #FEF3D7); border: 1.5px solid rgba(217,164,42,.4); border-radius: 16px; padding: 1.1rem 1.3rem; margin: 1.2rem 0 1.4rem; box-shadow: 0 4px 16px rgba(217,164,42,.12); }
.crus-richieste-tit { display: flex; align-items: center; gap: .5rem; margin: 0 0 .8rem; font-size: 1rem; font-weight: 800; color: #7A5B12; }
.crus-richieste-badge { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 .4rem; border-radius: 999px; background: #D9A42A; color: #fff; font-size: .85rem; font-weight: 900; }
.crus-richiesta { display: flex; align-items: center; gap: .8rem; background: #fff; border: 1px solid rgba(217,164,42,.25); border-radius: 12px; padding: .7rem .9rem; margin-bottom: .5rem; }
.crus-richiesta:last-child { margin-bottom: 0; }
.crus-richiesta-ava { flex: none; display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, #F2C75C, #D9A42A); color: #fff; font-weight: 800; }
.crus-richiesta-info { flex: 1; display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.crus-richiesta-info > b { font-size: .9rem; color: var(--vision-ink); }
.crus-richiesta-info small { color: var(--vision-muted); font-size: .76rem; }
.crus-richiesta-info small b { color: var(--vision-ink); font-weight: 700; }
.crus-richiesta-azioni { flex: none; display: inline-flex; align-items: center; gap: .8rem; margin: 0; }
@media (max-width: 560px) {
  .crus-richiesta { flex-wrap: wrap; }
  .crus-richiesta-azioni { width: 100%; justify-content: flex-end; }
}

/* ═══ Chat di gruppo della Compagnia ═══ */
.sqp-chat { margin: 1.4rem 0; background: #fff; border: 1.5px solid rgba(37,99,235,.14); border-radius: 16px; overflow: hidden; }
.sqp-chat-h { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; padding: .9rem 1.1rem; background: linear-gradient(158deg, #F7FAFF, #EEF4FD); border-bottom: 1px solid rgba(37,99,235,.12); }
.sqp-chat-h svg { width: 18px; height: 18px; color: var(--vision-blue); }
.sqp-chat-h b { font-size: .95rem; color: var(--vision-ink); }
.sqp-chat-h span { font-size: .74rem; color: var(--vision-muted); width: 100%; }
.sqp-chat-corpo { height: 320px; overflow-y: auto; padding: 1rem 1.1rem; display: flex; flex-direction: column; gap: .6rem; background: #FBFCFE; }
.sqp-chat-vuoto { margin: auto; color: var(--vision-muted); font-style: italic; font-size: .85rem; }
.sqp-chat-msg { position: relative; align-self: flex-start; max-width: 78%; background: #fff; border: 1px solid rgba(16,37,63,.1); border-radius: 12px 12px 12px 4px; padding: .5rem .75rem; }
.sqp-chat-msg.mio { align-self: flex-end; background: linear-gradient(158deg, #EAF1FF, #DCE8FF); border-color: rgba(37,99,235,.2); border-radius: 12px 12px 4px 12px; }
.sqp-chat-meta { display: block; font-size: .7rem; color: var(--vision-muted); margin-bottom: .15rem; }
.sqp-chat-meta b { color: var(--vision-blue); font-weight: 700; }
.sqp-chat-meta i { font-style: normal; }
.sqp-chat-testo { display: block; font-size: .88rem; color: var(--vision-ink); line-height: 1.4; word-wrap: break-word; }
.sqp-chat-del { position: absolute; top: .3rem; right: .4rem; border: none; background: transparent; color: var(--vision-muted); cursor: pointer; font-size: 1rem; line-height: 1; opacity: 0; transition: opacity .12s; }
.sqp-chat-msg:hover .sqp-chat-del { opacity: .7; }
.sqp-chat-del:hover { opacity: 1 !important; color: #C0392B; }
.sqp-chat-form { display: flex; gap: .5rem; padding: .8rem 1.1rem; border-top: 1px solid rgba(16,37,63,.1); }
.sqp-chat-form input[type="text"] { flex: 1; border: 1px solid rgba(16,37,63,.18); border-radius: 10px; padding: .6rem .8rem; font-size: .9rem; }
.sqp-chat-form input[type="text"]:focus { outline: none; border-color: var(--vision-blue); }

/* ═══════════════ WIDGET CHAT GLOBALE ═══════════════ */
#chat-widget { position: fixed; z-index: 9000; }

/* Linguetta laterale destra */
.chat-linguetta { position: fixed; right: 0; top: 50%; transform: translateY(-50%); z-index: 9001;
  display: flex; flex-direction: column; align-items: center; gap: .3rem;
  background: linear-gradient(135deg, #2547A8, #3A5FD9); color: #fff; border: none;
  padding: 1rem .5rem; border-radius: 12px 0 0 12px; cursor: pointer;
  box-shadow: -3px 0 16px rgba(37,99,235,.3); transition: padding .15s, background .15s; }
.chat-linguetta:hover { padding-right: .8rem; background: linear-gradient(135deg, #1E3C8F, #3355C8); }
.chat-linguetta-txt { writing-mode: vertical-rl; text-orientation: mixed; transform: rotate(180deg);
  font-weight: 800; font-size: .82rem; letter-spacing: .12em; }
.chat-linguetta-dot { position: absolute; top: .5rem; left: -.3rem; width: 12px; height: 12px;
  background: #F2C75C; border: 2px solid #fff; border-radius: 50%; animation: chatpulse 1.6s infinite; }
@keyframes chatpulse { 0%,100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.25); opacity: .7; } }
#chat-widget.is-open .chat-linguetta { display: none; }

/* Pannello */
.chat-pannello { position: fixed; right: 0; top: 0; bottom: 0; width: 380px; max-width: 92vw; z-index: 9002;
  background: #fff; box-shadow: -8px 0 40px rgba(8,27,53,.28); display: flex; flex-direction: column;
  animation: chatSlide .22s ease; }
@keyframes chatSlide { from { transform: translateX(100%); } to { transform: translateX(0); } }
.chat-pan-head { display: flex; align-items: center; justify-content: space-between;
  padding: 1rem 1.2rem; background: linear-gradient(135deg, #081B35, #123F78); color: #fff; }
.chat-pan-tit { font-weight: 800; font-size: 1rem; }
.chat-pan-close { background: transparent; border: none; color: #fff; font-size: 1.5rem; line-height: 1; cursor: pointer; opacity: .85; }
.chat-pan-close:hover { opacity: 1; }
.chat-pan-body { flex: 1; display: flex; flex-direction: column; min-height: 0; }

/* Membri / presenza */
.chat-membri { padding: .7rem 1.1rem; border-bottom: 1px solid rgba(16,37,63,.1); background: #F7FAFF; }
.chat-membri-tit { font-size: .74rem; color: var(--vision-muted); margin-bottom: .4rem; }
.chat-membri-tit b { color: #1E9E5A; }
.chat-membri-lista { display: flex; flex-wrap: wrap; gap: .4rem; }
.chat-membro { display: inline-flex; align-items: center; gap: .3rem; font-size: .74rem; color: var(--vision-muted);
  background: #fff; border: 1px solid rgba(16,37,63,.1); border-radius: 999px; padding: .2rem .55rem; }
.chat-membro.on { color: var(--vision-ink); }
.chat-dot { width: 8px; height: 8px; border-radius: 50%; background: #C2CAD6; }
.chat-membro.on .chat-dot { background: #1E9E5A; box-shadow: 0 0 0 2px rgba(30,158,90,.2); }

/* Flusso messaggi */
.chat-flusso { flex: 1; overflow-y: auto; padding: 1rem 1.1rem; display: flex; flex-direction: column; gap: .55rem; background: #FBFCFE; }
.chat-msg { position: relative; align-self: flex-start; max-width: 82%; background: #fff;
  border: 1px solid rgba(16,37,63,.1); border-radius: 12px 12px 12px 4px; padding: .5rem .7rem; }
.chat-msg.mio { align-self: flex-end; background: linear-gradient(158deg, #EAF1FF, #DCE8FF);
  border-color: rgba(37,99,235,.2); border-radius: 12px 12px 4px 12px; }
.chat-msg-meta { display: block; font-size: .68rem; color: var(--vision-muted); margin-bottom: .12rem; }
.chat-msg-meta b { color: var(--vision-blue); }
.chat-msg-txt { display: block; font-size: .88rem; color: var(--vision-ink); line-height: 1.4; word-wrap: break-word; }
.chat-msg-flag { position: absolute; top: .25rem; right: .35rem; background: transparent; border: none;
  color: var(--vision-muted); cursor: pointer; font-size: .85rem; line-height: 1; opacity: 0; }
.chat-msg:hover .chat-msg-flag { opacity: .55; }
.chat-msg-flag:hover { opacity: 1; color: #D9A42A; }
.chat-msg-flag.fatto { opacity: 1; color: #C0392B; cursor: default; }

/* Invio */
.chat-invio { display: flex; gap: .5rem; padding: .8rem 1.1rem; border-top: 1px solid rgba(16,37,63,.1); }
.chat-invio input[type="text"] { flex: 1; border: 1px solid rgba(16,37,63,.18); border-radius: 10px; padding: .6rem .8rem; font-size: .9rem; }
.chat-invio input[type="text"]:focus { outline: none; border-color: var(--vision-blue); }
.chat-invio button { border: none; background: var(--vision-blue); color: #fff; border-radius: 10px; padding: 0 1rem; font-size: 1.1rem; cursor: pointer; }
.chat-invio button:hover { background: #1E3C8F; }

/* Stato senza gruppo */
.chat-vuoto { padding: 2rem 1.5rem; text-align: center; }
.chat-vuoto p { color: var(--vision-muted); margin-bottom: 1rem; font-size: .9rem; }

@media (max-width: 480px) { .chat-pannello { width: 100vw; max-width: 100vw; } }

/* ═══ Admin: moderazione chat ═══ */
.admin-card { background: #fff; border: 1px solid rgba(16,37,63,.1); border-radius: 14px; padding: 1.3rem 1.5rem; margin-bottom: 1.4rem; }
.admin-card-h { display: flex; align-items: center; gap: .6rem; font-size: 1.1rem; font-weight: 800; color: var(--vision-ink); margin: 0 0 .4rem; }
.admin-card-sub { color: var(--vision-muted); font-size: .88rem; margin: 0 0 1rem; }
.admin-badge-alert { display: inline-grid; place-items: center; padding: .15rem .55rem; border-radius: 999px; background: #D9A42A; color: #fff; font-size: .72rem; font-weight: 800; }
.admin-vuoto { color: var(--vision-muted); font-style: italic; font-size: .88rem; }
.admin-chat-export { display: flex; align-items: flex-end; gap: 1rem; flex-wrap: wrap; }
.admin-chat-export label { display: flex; flex-direction: column; gap: .3rem; font-size: .82rem; font-weight: 600; color: var(--vision-ink); }
.admin-chat-export select { min-width: 280px; padding: .55rem .7rem; border: 1px solid rgba(16,37,63,.18); border-radius: 10px; font-size: .88rem; }
.admin-chat-segn { display: flex; flex-direction: column; gap: .8rem; }
.admin-segn { border: 1px solid rgba(16,37,63,.12); border-radius: 12px; padding: .9rem 1.1rem; }
.admin-segn.is-aperta { border-color: rgba(217,164,42,.45); background: linear-gradient(158deg, #FFFDF8, #FEF6E4); }
.admin-segn-head { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin-bottom: .6rem; }
.admin-segn-stato { font-size: .7rem; font-weight: 800; padding: .15rem .5rem; border-radius: 6px; }
.admin-segn-stato--aperta { background: #D9A42A; color: #fff; }
.admin-segn-stato--gestita { background: #E4E9F0; color: var(--vision-muted); }
.admin-segn-meta { font-size: .78rem; color: var(--vision-muted); }
.admin-segn-meta b { color: var(--vision-ink); }
.admin-segn-msg { background: #F7FAFF; border-left: 3px solid rgba(37,99,235,.35); border-radius: 0 8px 8px 0; padding: .6rem .9rem; }
.admin-segn-autore { font-size: .76rem; color: var(--vision-blue); font-weight: 700; }
.admin-segn-autore i { color: var(--vision-muted); font-weight: 400; font-style: normal; margin-left: .4rem; }
.admin-segn-testo { margin: .3rem 0 0; font-size: .9rem; color: var(--vision-ink); line-height: 1.45; word-wrap: break-word; }
.admin-segn-azione { margin-top: .7rem; }

/* Avviso moderazione nella chat */
.chat-avviso-mod { padding: .5rem 1.1rem; background: #FEF6E4; border-bottom: 1px solid rgba(217,164,42,.3);
  font-size: .72rem; color: #7A5B12; text-align: center; }

/* Messaggio della moderazione */
.chat-msg.moderazione { align-self: center; max-width: 92%; background: linear-gradient(158deg, #FFF6E0, #FDECC4);
  border: 1.5px solid rgba(217,164,42,.5); border-radius: 12px; }
.chat-msg-mod { display: inline-block; font-size: .64rem; font-weight: 900; letter-spacing: .04em;
  color: #fff; background: #D9A42A; padding: .1rem .4rem; border-radius: 5px; margin-right: .3rem; text-transform: uppercase; }

/* Admin: entra nelle chat */
.admin-chat-entra { display: flex; flex-wrap: wrap; gap: .7rem; }
.admin-chat-entra-btn { display: flex; flex-direction: column; align-items: flex-start; gap: .2rem;
  background: #fff; border: 1px solid rgba(37,99,235,.2); border-radius: 12px; padding: .7rem 1rem; cursor: pointer;
  transition: all .12s; text-align: left; }
.admin-chat-entra-btn:hover { border-color: var(--vision-blue); box-shadow: 0 3px 12px rgba(37,99,235,.15); transform: translateY(-1px); }
.admin-chat-entra-nome { font-weight: 800; font-size: .9rem; color: var(--vision-ink); }
.admin-chat-entra-meta { font-size: .74rem; color: var(--vision-muted); }

/* ═══ Widget captcha Altcha ═══ */
.altcha-box { margin: .2rem 0 1rem; padding: .7rem .9rem; border: 1px solid rgba(16,37,63,.18); border-radius: 10px; background: #F9FBFF; }
.altcha-riga { display: flex; align-items: center; gap: .6rem; font-size: .86rem; color: var(--vision-ink); cursor: pointer; margin: 0; }
.altcha-riga input[type="checkbox"] { width: 18px; height: 18px; cursor: pointer; }
.altcha-box[data-stato="lavoro"] { border-color: rgba(37,99,235,.4); }
.altcha-box[data-stato="ok"] { border-color: rgba(30,158,90,.5); background: #F1FBF5; }
.altcha-box[data-stato="ok"] [data-altcha-stato] { color: #1E9E5A; font-weight: 700; }
.altcha-box[data-stato="errore"] { border-color: rgba(192,57,43,.5); background: #FDF2F1; }
.altcha-box[data-stato="errore"] [data-altcha-stato] { color: #C0392B; }

/* Chat: pulsante messaggi precedenti + data messaggio */
.chat-storico-btn { align-self: center; margin: .3rem 0 .6rem; padding: .35rem .9rem; border: 1px solid rgba(37,99,235,.25); background: #fff; color: var(--vision-blue); border-radius: 999px; font-size: .76rem; font-weight: 600; cursor: pointer; transition: all .12s; }
.chat-storico-btn:hover { background: #EAF1FF; }
.chat-msg-data { font-size: .68rem; color: var(--vision-muted); }

/* ═══ Pagina 404 — coerente con gli hero del sito ═══ */
.errore-hero { position: relative; overflow: hidden; color: #fff;
  background: linear-gradient(125deg,#081B35 0%,#123F78 50%,#2563EB 100%); }
.errore-hero::after { content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:46px 46px; mask-image:linear-gradient(to bottom,rgba(0,0,0,.75),transparent); }
.errore-hero .app-shell { position: relative; z-index: 2; }
.errore-hero .campaign-kicker { color:#F2C75C; }
.errore-hero h1 { max-width: 820px; font-size: clamp(2.6rem,6vw,5.4rem); line-height:.92; letter-spacing:-.05em; margin-bottom: 1.2rem; }
.errore-hero > .app-shell > p { max-width: 640px; color: rgba(255,255,255,.85); font-size: clamp(1.02rem,1.6vw,1.25rem); line-height: 1.6; }
.errore-azioni { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }

.errore-strade .errore-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 1.2rem; margin-top: 1.5rem; }
.errore-grid a { display: block; padding: 1.4rem 1.5rem; background: #fff; border: 1px solid rgba(16,37,63,.1);
  border-radius: 16px; text-decoration: none; transition: all .15s; }
.errore-grid a:hover { border-color: var(--vision-blue); box-shadow: 0 8px 28px rgba(37,99,235,.14); transform: translateY(-3px); }
.errore-grid span { display: inline-block; font-size: .8rem; font-weight: 900; color: var(--vision-coral); letter-spacing: .1em; margin-bottom: .5rem; }
.errore-grid h3 { font-size: 1.2rem; font-weight: 800; color: var(--vision-ink); margin: 0 0 .4rem; }
.errore-grid p { font-size: .9rem; color: var(--vision-muted); line-height: 1.5; margin: 0; }


/* ================================================================
   Partecipa — esperienza guidata: deve capirla anche un bambino
   ================================================================ */
.contrib-guida {
    position: relative;
    display: grid;
    grid-template-columns: minmax(220px, .9fr) minmax(340px, 1.25fr);
    gap: 1rem 1.2rem;
    align-items: center;
    margin-bottom: 1.1rem;
    padding: 1.15rem;
    border: 1px solid rgba(37, 99, 235, .16);
    border-radius: 20px;
    background: linear-gradient(145deg, #fff, #F0F6FF);
    box-shadow: 0 14px 34px rgba(18, 53, 91, .08);
}
.contrib-guida-copy h2 { margin: .15rem 0 .25rem; font-size: 1.2rem; font-weight: 900; color: var(--vision-ink); }
.contrib-guida-copy p { margin: 0; color: var(--vision-muted); font-size: .84rem; line-height: 1.45; }
.contrib-guida-kicker { font-size: .62rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: var(--vision-blue); }
.contrib-scelte { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.contrib-scelta {
    display: flex;
    align-items: center;
    gap: .7rem;
    min-height: 76px;
    padding: .8rem .9rem;
    border: 1.5px solid rgba(37, 99, 235, .2);
    border-radius: 15px;
    background: #fff;
    color: var(--vision-ink);
    text-align: left;
    cursor: pointer;
    transition: transform .12s, box-shadow .15s, border-color .15s;
}
.contrib-scelta:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(37, 99, 235, .14); border-color: var(--vision-blue); }
.contrib-scelta--primaria { background: linear-gradient(145deg, #174B91, #2563EB); color: #fff; border-color: transparent; }
.contrib-scelta--nuova { border-color: rgba(201, 138, 30, .45); background: linear-gradient(145deg, #FFFDF6, #FFF4D6); }
.contrib-scelta-num { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 11px; flex: none; font-weight: 900; background: rgba(255,255,255,.18); }
.contrib-scelta--nuova .contrib-scelta-num { color: #6E4B00; background: #F2C75C; }
.contrib-scelta b { display: block; font-size: .9rem; }
.contrib-scelta small { display: block; margin-top: .12rem; font-size: .7rem; line-height: 1.3; color: inherit; opacity: .78; }
.contrib-passaggi { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: .55rem; margin: 0; padding: 0; list-style: none; }
.contrib-passaggi li { display: grid; grid-template-columns: 28px 1fr; grid-template-rows: auto auto; align-items: center; column-gap: .5rem; padding: .48rem .65rem; border-radius: 12px; background: rgba(37,99,235,.06); }
.contrib-passaggi li > span { grid-row: 1 / 3; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 999px; color: #fff; background: var(--vision-blue); font-size: .72rem; font-weight: 900; }
.contrib-passaggi b { font-size: .76rem; color: var(--vision-ink); }
.contrib-passaggi small { font-size: .64rem; color: var(--vision-muted); }

.contrib-nuova-inline { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1rem; padding: .9rem 1rem; border: 1.5px dashed rgba(201,138,30,.48); border-radius: 15px; background: #FFF9E9; }
.contrib-nuova-inline b { display: block; font-size: .85rem; color: #493300; }
.contrib-nuova-inline small { display: block; margin-top: .15rem; color: #7A5A16; font-size: .72rem; }
.contrib-nuova-inline .btn { flex: none; white-space: nowrap; }

.quest-read-label, .quest-answer-label { display: flex; align-items: center; gap: .45rem; font-size: .7rem; font-weight: 900; color: var(--vision-muted); text-transform: uppercase; letter-spacing: .06em; }
.quest-read-label { margin: .15rem 0 .2rem; }
.quest-answer-label { margin-top: .15rem; color: var(--vision-ink); }
.quest-read-label span, .quest-answer-label span, .quest-send-step { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 999px; color: #fff; background: var(--vision-blue); font-size: .68rem; font-weight: 900; flex: none; }
.quest-form textarea[name="variante_locale"] { min-height: 82px; font-size: 1rem; line-height: 1.4; background: #FCFDFF; }
.quest-form textarea[name="variante_locale"]::placeholder { color: #7B8BA0; }
.quest-more { margin-top: .05rem; border: 1px solid rgba(16,37,63,.1); border-radius: 11px; background: #F8FBFF; }
.quest-more > summary { padding: .55rem .7rem; cursor: pointer; font-size: .72rem; font-weight: 800; color: var(--vision-blue); }
.quest-more > summary small { color: var(--vision-muted); font-weight: 600; }
.quest-more[open] { padding: 0 .7rem .7rem; }
.quest-more[open] > summary { margin: 0 -.7rem .6rem; }
.quest-extra-label { display: grid; gap: .3rem; font-size: .72rem; font-weight: 700; color: var(--vision-muted); }
.quest-send { min-height: 48px; border-radius: 13px; font-size: .92rem; }
.quest-send small { font-size: .68rem; opacity: .82; }
.quest-send-step { background: rgba(255,255,255,.2); }

.pv-form { gap: .75rem; }
.pv-step { display: grid; gap: .75rem; padding: .9rem; border: 1px solid rgba(37,99,235,.15); border-radius: 15px; background: #fff; }
.pv-step--accento { border-color: rgba(5,150,105,.28); background: linear-gradient(145deg, #fff, #F1FCF7); }
.pv-step-head { display: flex; align-items: center; gap: .7rem; }
.pv-step-head > span { display: grid; place-items: center; width: 34px; height: 34px; flex: none; border-radius: 11px; color: #fff; background: var(--vision-blue); font-weight: 900; }
.pv-step--accento .pv-step-head > span { background: #059669; }
.pv-step-head b { display: block; font-size: .9rem; color: var(--vision-ink); }
.pv-step-head small { display: block; margin-top: .08rem; font-size: .7rem; color: var(--vision-muted); }
.pv-opzioni { border: 1px solid rgba(16,37,63,.12); border-radius: 13px; background: #F8FBFF; }
.pv-opzioni > summary { cursor: pointer; padding: .7rem .85rem; font-size: .76rem; font-weight: 800; color: var(--vision-blue); }
.pv-opzioni-corpo { display: grid; gap: .75rem; padding: 0 .85rem .85rem; }

@media (max-width: 1160px) {
    .contrib-guida { position: sticky; top: .5rem; z-index: 25; grid-template-columns: 1fr; padding: .8rem; }
    .contrib-guida-copy p, .contrib-passaggi { display: none; }
    .contrib-guida-copy h2 { font-size: 1rem; margin-bottom: 0; }
    .contrib-scelte { grid-template-columns: 1fr 1fr; }
    .contrib-scelta { min-height: 64px; padding: .65rem .7rem; }
}
@media (max-width: 620px) {
    .contrib-guida { margin-inline: -.15rem; border-radius: 16px; }
    .contrib-guida-copy { display: none; }
    .contrib-scelte { gap: .55rem; }
    .contrib-scelta { min-height: 62px; gap: .5rem; }
    .contrib-scelta-num { width: 30px; height: 30px; }
    .contrib-scelta b { font-size: .78rem; line-height: 1.15; }
    .contrib-scelta small { display: none; }
    .contrib-nuova-inline { flex-direction: column; align-items: stretch; text-align: center; }
    .contrib-nuova-inline .btn { width: 100%; }
    .quest-card { padding: 1rem; }
    .quest-word { font-size: 1.25rem; }
    .quest-form textarea[name="variante_locale"] { min-height: 92px; font-size: 16px; }
    .quest-send { width: 100%; }
    .pv-card { width: 100vw; max-width: none; height: 100dvh; border-radius: 0; }
    .pv-form { padding-bottom: max(1rem, env(safe-area-inset-bottom)); }
    .pv-step { padding: .75rem; }
}

/* ================================================================
   Partecipa — revisione UX guidata v2
   ================================================================ */
.pl-testa { padding-right: 7.8rem; }
.pl-testa-toggle {
    top: .75rem;
    right: .8rem;
    width: auto;
    min-width: 94px;
    height: 36px;
    padding: 0 .75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    border: 1.5px solid rgba(255,255,255,.52);
    background: rgba(3,18,38,.48);
    color: #fff;
    box-shadow: 0 6px 18px rgba(0,0,0,.2);
}
.pl-testa-toggle:hover { background: rgba(255,255,255,.16); }
.pl-testa-toggle-label { font-size: .7rem; font-weight: 900; letter-spacing: .03em; text-transform: uppercase; }
.pl-testa-toggle .icn { width: 16px; height: 16px; flex: none; }
.pl-identita { display: flex; flex-wrap: wrap; gap: .55rem; margin: .15rem 0 .65rem; }
.pl-identita-chip {
    display: inline-grid;
    grid-template-columns: 22px auto;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: .45rem;
    min-width: 145px;
    padding: .45rem .7rem;
    border-radius: 13px;
    border: 1px solid rgba(255,255,255,.25);
    background: rgba(255,255,255,.1);
    color: #fff;
}
.pl-identita-chip .icn { grid-row: 1 / 3; width: 19px; height: 19px; color: #F2C75C; }
.pl-identita-chip small { font-size: .58rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: rgba(234,242,255,.72); }
.pl-identita-chip b { font-size: .82rem; line-height: 1.15; }
.pl-identita-chip--compagnia .icn { color: #67E8C0; }
.pl-testa.is-chiusa { min-height: 76px; padding: .55rem 7.8rem .55rem 1rem; align-items: center; }
.pl-testa.is-chiusa .pl-kicker { display: none; }
.pl-testa.is-chiusa .pl-identita { margin: 0; }
.pl-testa.is-chiusa .pl-identita-chip { padding-block: .38rem; }
.pl-testa.is-chiusa .pl-testa-toggle-label::after { content: " hero"; }

.contrib-scelte { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.contrib-scelta--audio { border-color: rgba(5,150,105,.38); background: linear-gradient(145deg, #F7FFFC, #E7FAF3); }
.contrib-scelta--audio .contrib-scelta-num { color: #fff; background: #059669; font-size: 1rem; }
#prima-voce, .qp-zona { scroll-margin-top: 130px; }
.quest-card:first-child { scroll-margin-top: 145px; }

@media (max-width: 1160px) {
    .pl-testa { padding-right: 7rem; }
    .pl-testa.is-chiusa { padding-right: 7rem; }
    .contrib-scelte { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
    .pl-testa { padding: .85rem 1rem 3.2rem; }
    .pl-testa-toggle { top: auto; right: .75rem; bottom: .65rem; min-width: 108px; height: 34px; }
    .pl-testa.is-chiusa { min-height: 0; padding: .7rem 1rem 3.15rem; }
    .pl-identita { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
    .pl-identita-chip { min-width: 0; width: 100%; }
    .pl-testa h1 { font-size: 1rem; line-height: 1.25; margin-top: .15rem; }
    .contrib-guida { position: relative; top: auto; z-index: 1; }
    .contrib-scelte { grid-template-columns: 1fr; }
    .contrib-scelta { min-height: 58px; }
    .contrib-scelta small { display: block; }
    #prima-voce, .qp-zona, .quest-card:first-child { scroll-margin-top: 92px; }
}
@media (max-width: 430px) {
    .pl-identita { grid-template-columns: 1fr; }
    .pl-testa.is-chiusa .pl-identita-chip { padding-block: .32rem; }
    .contrib-scelta small { font-size: .66rem; }
}

/* ===== Partecipa UX v3: hero minima, guida chiara e azioni compatte ===== */
.pl-testa {
    min-height: 0;
    padding: .72rem 7rem .72rem 1rem;
    gap: .7rem;
    align-items: center;
}
.pl-testa-sx { min-width: 0; }
.pl-testa .pl-kicker,
.pl-testa .pl-bar,
.pl-testa .pl-proponi { display: none !important; }
.pl-identita {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin: 0 0 .45rem;
}
.pl-identita-chip {
    display: inline-flex;
    align-items: center;
    gap: .42rem;
    min-height: 38px;
    padding: .35rem .7rem;
    border-radius: 12px;
}
.pl-identita-chip > span {
    display: flex;
    align-items: baseline;
    gap: .38rem;
    min-width: 0;
}
.pl-identita-chip small {
    margin: 0;
    font-size: .58rem;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: .08em;
    opacity: .72;
}
.pl-identita-chip b {
    overflow: hidden;
    max-width: 300px;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .82rem;
}
.pl-testa h1 {
    margin: 0;
    font-size: clamp(1rem, 1.7vw, 1.35rem);
    line-height: 1.25;
}
.pl-testa h1 .pl-saluto { color: #f2c75c; }
.pl-testa h1 .pl-messaggio {
    color: #7ee7d2;
    background: linear-gradient(90deg, #ffffff 0%, #7ee7d2 62%, #f2c75c 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.pl-testa .pl-sotto {
    margin: .28rem 0 0;
    font-size: .72rem;
    color: rgba(234,242,255,.75);
}
.pl-testa-toggle {
    top: 50%;
    right: .75rem;
    bottom: auto;
    transform: translateY(-50%);
    min-width: 82px;
    height: 32px;
    padding: 0 .7rem;
}
.pl-testa-toggle:hover { transform: translateY(-50%); }
.pl-testa.is-chiusa {
    min-height: 0;
    padding: .55rem 6.4rem .55rem 1rem;
}
.pl-testa.is-chiusa .pl-identita { margin: 0; }
.pl-testa.is-chiusa .pl-testa-toggle-label::after { content: ""; }

.contrib-guida {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .7rem 1rem;
    align-items: center;
    padding: .75rem;
}
.contrib-guida-copy { min-width: 150px; }
.contrib-guida-copy h2 { margin: .08rem 0 0; font-size: 1rem; }
.contrib-guida-kicker { font-size: .56rem; }
.contrib-passaggi {
    grid-column: 2;
    grid-row: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .45rem;
}
.contrib-passaggi li { padding: 0; background: none; }
.contrib-passaggi li button {
    width: 100%;
    min-height: 50px;
    display: grid;
    grid-template-columns: 25px 1fr;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: .42rem;
    padding: .42rem .55rem;
    border: 1px solid rgba(37,99,235,.14);
    border-radius: 11px;
    background: rgba(37,99,235,.045);
    color: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s, background .15s, transform .15s;
}
.contrib-passaggi li button:hover,
.contrib-passaggi li button:focus-visible {
    border-color: rgba(37,99,235,.45);
    background: rgba(37,99,235,.09);
    transform: translateY(-1px);
    outline: none;
}
.contrib-passaggi li button > span {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 25px;
    height: 25px;
    border-radius: 999px;
    color: #fff;
    background: var(--vision-blue);
    font-size: .66rem;
    font-weight: 900;
}
.contrib-passaggi li button b { font-size: .72rem; line-height: 1.1; }
.contrib-passaggi li button small { font-size: .59rem; line-height: 1.15; color: var(--vision-muted); }
.contrib-scelte {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .5rem;
}
.contrib-scelta {
    min-height: 58px;
    padding: .48rem .62rem;
    border-radius: 12px;
    gap: .52rem;
}
.contrib-scelta-num {
    width: 30px;
    height: 30px;
    min-width: 30px;
    font-size: .74rem;
}
.contrib-scelta b { font-size: .76rem; line-height: 1.15; }
.contrib-scelta small { margin-top: .14rem; font-size: .61rem; line-height: 1.2; }

@media (max-width: 767.98px) {
    .pl-testa {
        padding: .65rem 5.5rem .65rem .75rem;
    }
    .pl-identita { gap: .35rem; margin-bottom: .38rem; }
    .pl-identita-chip { min-height: 34px; padding: .28rem .5rem; }
    .pl-identita-chip > span { display: grid; gap: .08rem; }
    .pl-identita-chip small { font-size: .52rem; }
    .pl-identita-chip b { max-width: 145px; font-size: .72rem; }
    .pl-testa h1 { font-size: .9rem; line-height: 1.22; }
    .pl-testa .pl-sotto { font-size: .64rem; }
    .pl-testa-toggle {
        top: .65rem;
        right: .55rem;
        bottom: auto;
        transform: none;
        min-width: 62px;
        height: 29px;
        padding: 0 .45rem;
    }
    .pl-testa-toggle:hover { transform: none; }
    .pl-testa.is-chiusa { padding: .55rem 4.7rem .55rem .75rem; }
    .contrib-guida {
        position: relative;
        top: auto;
        z-index: 1;
        grid-template-columns: 1fr;
        gap: .55rem;
        padding: .65rem;
    }
    .contrib-guida-copy { display: block; }
    .contrib-guida-copy h2 { font-size: .92rem; }
    .contrib-passaggi {
        grid-column: 1;
        grid-row: auto;
        display: grid;
        grid-template-columns: repeat(3, minmax(112px, 1fr));
        overflow-x: auto;
        padding-bottom: .15rem;
        scrollbar-width: thin;
    }
    .contrib-passaggi li button { min-height: 46px; padding: .38rem .45rem; }
    .contrib-passaggi li button small { display: none; }
    .contrib-scelte {
        display: grid;
        grid-template-columns: repeat(3, minmax(150px, 1fr));
        overflow-x: auto;
        gap: .45rem;
        padding-bottom: .2rem;
        scroll-snap-type: x proximity;
        scrollbar-width: thin;
    }
    .contrib-scelta {
        min-height: 54px;
        scroll-snap-align: start;
    }
    .contrib-scelta small { display: none; }
}

/* ================================================================
   Partecipa — revisione UX guidata v3
   ================================================================ */
.pl-testa {
    min-height: 0;
    padding: .7rem 7.4rem .72rem 1.05rem;
    align-items: center;
}
.pl-testa-sx { min-width: 0; }
.pl-kicker { margin-bottom: .18rem; font-size: .64rem; }
.pl-testa h1.pl-saluto {
    margin: 0;
    max-width: 980px;
    font-size: clamp(1.05rem, 1.8vw, 1.42rem);
    line-height: 1.2;
    font-weight: 900;
    color: #fff;
}
.pl-saluto > span { color: #fff; }
.pl-saluto > strong { color: #F2C75C; font-weight: 950; }
.pl-saluto > em { color: #67E8C0; font-style: normal; font-weight: 850; }
.pl-sotto--compatto {
    margin: .3rem 0 0;
    font-size: .72rem;
    line-height: 1.3;
    color: rgba(234,242,255,.8);
}
.pl-testa-toggle { top: 50%; transform: translateY(-50%); }
.pl-testa-toggle:hover { transform: translateY(-50%); }
.pl-testa.is-chiusa { min-height: 58px; }
.pl-testa.is-chiusa .pl-testa-toggle { top: 50%; bottom: auto; }

.p-rail-h {
    display: grid;
    gap: .12rem;
    align-items: start;
}
.p-rail-h .p-rail-kind {
    display: block;
    font-size: .58rem;
    line-height: 1;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--vision-blue);
}
.p-rail-h > b { font-size: .82rem; line-height: 1.2; color: var(--vision-ink); }

.contrib-guida {
    display: grid;
    grid-template-columns: 1fr;
    gap: .75rem;
    padding: .9rem;
}
.contrib-guida-copy {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .1rem .7rem;
    align-items: center;
}
.contrib-guida-kicker { grid-column: 1 / -1; }
.contrib-guida-copy h2 { margin: 0; font-size: 1.05rem; }
.contrib-guida-copy p { margin: 0; font-size: .76rem; }
.contrib-workflow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
}
.contrib-step {
    display: grid;
    grid-template-columns: 30px 1fr;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: .55rem;
    min-width: 0;
    padding: .5rem .65rem;
    border: 1px solid rgba(37,99,235,.16);
    border-radius: 12px;
    background: rgba(255,255,255,.86);
    color: var(--vision-ink);
    text-align: left;
    cursor: pointer;
    transition: border-color .15s, transform .15s, box-shadow .15s;
}
.contrib-step:hover,
.contrib-step:focus-visible {
    border-color: var(--vision-blue);
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(37,99,235,.1);
}
.contrib-step > span {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border-radius: 999px;
    color: #fff;
    background: var(--vision-blue);
    font-size: .72rem;
    font-weight: 900;
}
.contrib-step:nth-child(2) > span { background: #0E7A54; }
.contrib-step:nth-child(3) > span { background: #C98A1E; }
.contrib-step b { font-size: .76rem; line-height: 1.15; }
.contrib-step small { font-size: .64rem; color: var(--vision-muted); line-height: 1.2; }
.contrib-scelte--compatte {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
}
.contrib-scelte--compatte .contrib-scelta {
    min-height: 56px;
    padding: .55rem .65rem;
    gap: .5rem;
    border-radius: 12px;
}
.contrib-scelte--compatte .contrib-scelta-num {
    width: 30px;
    height: 30px;
    border-radius: 9px;
}
.contrib-scelte--compatte .contrib-scelta b { font-size: .78rem; line-height: 1.12; }
.contrib-scelte--compatte .contrib-scelta small { font-size: .64rem; }

@media (max-width: 1160px) {
    .contrib-guida { position: relative; top: auto; z-index: 1; }
    .contrib-guida-copy p { display: block; }
    .contrib-workflow { display: grid; }
}
@media (max-width: 760px) {
    .pl-testa { padding: .72rem 6.75rem .72rem .85rem; }
    .pl-testa-toggle {
        top: 50%;
        right: .55rem;
        bottom: auto;
        min-width: 92px;
        height: 32px;
        padding-inline: .6rem;
    }
    .pl-testa h1.pl-saluto { font-size: .94rem; line-height: 1.22; }
    .pl-sotto--compatto { font-size: .66rem; }
    .contrib-guida-copy {
        grid-template-columns: 1fr;
        gap: .15rem;
    }
    .contrib-guida-copy p { font-size: .7rem; }
    .contrib-workflow { gap: .35rem; }
    .contrib-step {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: .22rem;
        min-height: 68px;
        padding: .4rem .28rem;
        text-align: center;
    }
    .contrib-step > span { width: 25px; height: 25px; font-size: .65rem; }
    .contrib-step b { font-size: .67rem; }
    .contrib-step small { display: none; }
    .contrib-scelte--compatte { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .35rem; }
    .contrib-scelte--compatte .contrib-scelta {
        flex-direction: column;
        justify-content: center;
        min-height: 72px;
        padding: .42rem .3rem;
        text-align: center;
    }
    .contrib-scelte--compatte .contrib-scelta-num { width: 26px; height: 26px; }
    .contrib-scelte--compatte .contrib-scelta b { font-size: .67rem; }
    .contrib-scelte--compatte .contrib-scelta small { display: none; }
}
@media (max-width: 430px) {
    .pl-testa { padding-right: 5.9rem; }
    .pl-testa-toggle { min-width: 80px; }
    .pl-testa-toggle-label { font-size: .61rem; }
    .pl-sotto--compatto .pl-palio { display: none; }
}

/* ===== Partecipa UX v3: hero minima, guida chiara e azioni compatte ===== */
.pl-testa {
    min-height: 0;
    padding: .72rem 7rem .72rem 1rem;
    gap: .7rem;
    align-items: center;
}
.pl-testa-sx { min-width: 0; }
.pl-testa .pl-kicker,
.pl-testa .pl-bar,
.pl-testa .pl-proponi { display: none !important; }
.pl-identita {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin: 0 0 .45rem;
}
.pl-identita-chip {
    display: inline-flex;
    align-items: center;
    gap: .42rem;
    min-height: 38px;
    padding: .35rem .7rem;
    border-radius: 12px;
}
.pl-identita-chip > span {
    display: flex;
    align-items: baseline;
    gap: .38rem;
    min-width: 0;
}
.pl-identita-chip small {
    margin: 0;
    font-size: .58rem;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: .08em;
    opacity: .72;
}
.pl-identita-chip b {
    overflow: hidden;
    max-width: 300px;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .82rem;
}
.pl-testa h1 {
    margin: 0;
    font-size: clamp(1rem, 1.7vw, 1.35rem);
    line-height: 1.25;
}
.pl-testa h1 .pl-saluto { color: #f2c75c; }
.pl-testa h1 .pl-messaggio {
    color: #7ee7d2;
    background: linear-gradient(90deg, #ffffff 0%, #7ee7d2 62%, #f2c75c 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.pl-testa .pl-sotto {
    margin: .28rem 0 0;
    font-size: .72rem;
    color: rgba(234,242,255,.75);
}
.pl-testa-toggle {
    top: 50%;
    right: .75rem;
    bottom: auto;
    transform: translateY(-50%);
    min-width: 82px;
    height: 32px;
    padding: 0 .7rem;
}
.pl-testa-toggle:hover { transform: translateY(-50%); }
.pl-testa.is-chiusa {
    min-height: 0;
    padding: .55rem 6.4rem .55rem 1rem;
}
.pl-testa.is-chiusa .pl-identita { margin: 0; }
.pl-testa.is-chiusa .pl-testa-toggle-label::after { content: ""; }

.contrib-guida {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .7rem 1rem;
    align-items: center;
    padding: .75rem;
}
.contrib-guida-copy { min-width: 150px; }
.contrib-guida-copy h2 { margin: .08rem 0 0; font-size: 1rem; }
.contrib-guida-kicker { font-size: .56rem; }
.contrib-passaggi {
    grid-column: 2;
    grid-row: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .45rem;
}
.contrib-passaggi li { padding: 0; background: none; }
.contrib-passaggi li button {
    width: 100%;
    min-height: 50px;
    display: grid;
    grid-template-columns: 25px 1fr;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: .42rem;
    padding: .42rem .55rem;
    border: 1px solid rgba(37,99,235,.14);
    border-radius: 11px;
    background: rgba(37,99,235,.045);
    color: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s, background .15s, transform .15s;
}
.contrib-passaggi li button:hover,
.contrib-passaggi li button:focus-visible {
    border-color: rgba(37,99,235,.45);
    background: rgba(37,99,235,.09);
    transform: translateY(-1px);
    outline: none;
}
.contrib-passaggi li button > span {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 25px;
    height: 25px;
    border-radius: 999px;
    color: #fff;
    background: var(--vision-blue);
    font-size: .66rem;
    font-weight: 900;
}
.contrib-passaggi li button b { font-size: .72rem; line-height: 1.1; }
.contrib-passaggi li button small { font-size: .59rem; line-height: 1.15; color: var(--vision-muted); }
.contrib-scelte {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .5rem;
}
.contrib-scelta {
    min-height: 58px;
    padding: .48rem .62rem;
    border-radius: 12px;
    gap: .52rem;
}
.contrib-scelta-num {
    width: 30px;
    height: 30px;
    min-width: 30px;
    font-size: .74rem;
}
.contrib-scelta b { font-size: .76rem; line-height: 1.15; }
.contrib-scelta small { margin-top: .14rem; font-size: .61rem; line-height: 1.2; }

@media (max-width: 767.98px) {
    .pl-testa {
        padding: .65rem 5.5rem .65rem .75rem;
    }
    .pl-identita { gap: .35rem; margin-bottom: .38rem; }
    .pl-identita-chip { min-height: 34px; padding: .28rem .5rem; }
    .pl-identita-chip > span { display: grid; gap: .08rem; }
    .pl-identita-chip small { font-size: .52rem; }
    .pl-identita-chip b { max-width: 145px; font-size: .72rem; }
    .pl-testa h1 { font-size: .9rem; line-height: 1.22; }
    .pl-testa .pl-sotto { font-size: .64rem; }
    .pl-testa-toggle {
        top: .65rem;
        right: .55rem;
        bottom: auto;
        transform: none;
        min-width: 62px;
        height: 29px;
        padding: 0 .45rem;
    }
    .pl-testa-toggle:hover { transform: none; }
    .pl-testa.is-chiusa { padding: .55rem 4.7rem .55rem .75rem; }
    .contrib-guida {
        position: relative;
        top: auto;
        z-index: 1;
        grid-template-columns: 1fr;
        gap: .55rem;
        padding: .65rem;
    }
    .contrib-guida-copy { display: block; }
    .contrib-guida-copy h2 { font-size: .92rem; }
    .contrib-passaggi {
        grid-column: 1;
        grid-row: auto;
        grid-template-columns: repeat(3, minmax(112px, 1fr));
        overflow-x: auto;
        padding-bottom: .15rem;
        scrollbar-width: thin;
    }
    .contrib-passaggi li button { min-height: 46px; padding: .38rem .45rem; }
    .contrib-passaggi li button small { display: none; }
    .contrib-scelte {
        grid-template-columns: repeat(3, minmax(150px, 1fr));
        overflow-x: auto;
        gap: .45rem;
        padding-bottom: .2rem;
        scroll-snap-type: x proximity;
        scrollbar-width: thin;
    }
    .contrib-scelta {
        min-height: 54px;
        scroll-snap-align: start;
    }
    .contrib-scelta small { display: none; }
}


/* ===== Partecipa UX v4: workflow su riga completa e Gloria aperta ===== */
.contrib-guida {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-areas:
        "copy"
        "workflow"
        "scelte" !important;
    align-items: stretch !important;
    gap: .65rem !important;
}
.contrib-guida-copy {
    grid-area: copy !important;
    min-width: 0 !important;
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) !important;
    align-items: baseline !important;
    gap: .15rem .75rem !important;
}
.contrib-guida-kicker {
    grid-column: 1 / -1 !important;
}
.contrib-guida-copy h2,
.contrib-guida-copy p {
    min-width: 0 !important;
}
.contrib-workflow {
    grid-area: workflow !important;
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    width: 100% !important;
    gap: .5rem !important;
}
.contrib-step {
    min-width: 0 !important;
    min-height: 54px !important;
}
.contrib-scelte,
.contrib-scelte--compatte {
    grid-area: scelte !important;
    grid-column: 1 !important;
    width: 100% !important;
}

@media (max-width: 760px) {
    .contrib-guida-copy {
        grid-template-columns: 1fr !important;
        gap: .12rem !important;
    }
    .contrib-workflow {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        gap: .35rem !important;
    }
    .contrib-step {
        min-height: 64px !important;
        padding: .42rem .3rem !important;
    }
}


/* ===== Partecipa UX v5: guida senza workflow decorativo ===== */
.contrib-guida {
    grid-template-areas:
        "copy"
        "scelte" !important;
    gap: .55rem !important;
}
.contrib-workflow { display: none !important; }
.contrib-scelte,
.contrib-scelte--compatte {
    margin-top: 0 !important;
}


/* Pannello Gloria: contrasto e leggibilita */
.pl-mod--navy .p-rail-h,
.pl-mod--navy .p-rail-h .p-rail-kind,
.pl-mod--navy .p-rail-h--ruolo {
  color: #fff;
}
.pl-mod--navy .p-rail-h > b,
.pl-mod--navy .p-rail-list b,
.pl-mod--navy .p-streak-n,
.pl-mod--navy .p-rango-val b {
  color: #F2C75C;
}
.pl-mod--navy .p-rail-list .p-rail-lab {
  color: #fff;
}
.pl-mod--navy .p-rail-h--ruolo {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  letter-spacing: .06em;
}
.pl-mod--navy .p-rango-val {
  max-width: 58%;
}
.pl-mod--navy .p-rango-val b {
  font-size: .72rem;
  line-height: 1.15;
  white-space: normal;
}
.pl-mod--navy .p-rango-val small {
  color: rgba(255,255,255,.72);
}
@media (max-width: 480px) {
  .pl-mod--navy .p-rango-val { max-width: 54%; }
  .pl-mod--navy .p-rango-val b { font-size: .68rem; }
}


/* Partecipa: etichette hero e rango piu leggibile */
.pl-fronti .q-fronte {
  align-items: center;
}
.q-fronte-copy {
  display: grid;
  gap: .02rem;
  line-height: 1.05;
}
.pl-fronti .q-fronte .q-fronte-label {
  display: block;
  margin: 0;
  color: rgba(234,242,255,.72);
  font-size: .58rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.pl-fronti .q-fronte b {
  font-size: .82rem;
  line-height: 1.05;
}
.pl-mod--navy .p-rango {
  align-items: center;
}
.pl-mod--navy .p-rango-val {
  flex: 1 1 auto;
  max-width: none;
  min-width: 0;
}
.pl-mod--navy .p-rango-val b {
  display: block;
  font-size: .64rem;
  line-height: 1.05;
  letter-spacing: -.015em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pl-mod--navy .p-rango-val small {
  display: block;
  margin-top: .14rem;
  font-size: .58rem;
  line-height: 1.1;
  white-space: nowrap;
}
@media (max-width: 760px) {
  .pl-fronti .q-fronte {
    padding: .42rem .7rem;
  }
  .pl-fronti .q-fronte b {
    font-size: .76rem;
  }
  .pl-mod--navy .p-rango-val b {
    font-size: .61rem;
  }
}

/* ==================================================================
   Partecipa — correzione strutturale mobile hero e scelta azione
   ================================================================== */
@media (max-width: 767.98px) {
  .pl-testa {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    align-items: start !important;
    width: 100% !important;
    min-height: 0 !important;
    padding: .9rem .82rem .82rem !important;
    gap: .7rem !important;
  }

  .pl-testa-sx {
    width: 100% !important;
    min-width: 0 !important;
    padding-right: 4.9rem !important;
  }

  .pl-testa h1.pl-saluto {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    font-size: 1.12rem !important;
    line-height: 1.16 !important;
    letter-spacing: -.018em !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    hyphens: none !important;
  }

  .pl-saluto > span,
  .pl-saluto > strong,
  .pl-saluto > em {
    display: inline !important;
    white-space: normal !important;
  }

  .pl-testa .pl-sotto,
  .pl-sotto--compatto {
    display: block !important;
    width: 100% !important;
    margin: .42rem 0 0 !important;
    font-size: .72rem !important;
    line-height: 1.42 !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
  }

  .pl-fronti {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    width: 100% !important;
    flex-basis: 100% !important;
    gap: .48rem !important;
    margin: 0 !important;
  }

  .pl-fronti .q-fronte {
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 50px !important;
    justify-content: flex-start !important;
    padding: .5rem .62rem !important;
    border-radius: 14px !important;
  }

  .pl-fronti .q-fronte .icn {
    flex: 0 0 auto !important;
  }

  .q-fronte-copy {
    min-width: 0 !important;
  }

  .pl-fronti .q-fronte b {
    display: block !important;
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-size: .78rem !important;
  }

  .pl-testa-toggle {
    top: .82rem !important;
    right: .7rem !important;
    bottom: auto !important;
    transform: none !important;
    min-width: 74px !important;
    height: 32px !important;
    padding-inline: .55rem !important;
  }

  .pl-testa-toggle:hover {
    transform: none !important;
  }

  .pl-testa.is-chiusa {
    padding: .75rem 5.2rem .75rem .82rem !important;
  }

  .contrib-guida {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    width: 100% !important;
    padding: .8rem !important;
    gap: .65rem !important;
    overflow: visible !important;
  }

  .contrib-guida-copy {
    display: block !important;
    width: 100% !important;
  }

  .contrib-guida-copy h2 {
    margin: .15rem 0 .18rem !important;
    font-size: 1.08rem !important;
  }

  .contrib-guida-copy p {
    display: block !important;
    margin: 0 !important;
    font-size: .78rem !important;
    line-height: 1.4 !important;
  }

  .contrib-scelte,
  .contrib-scelte--compatte {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    width: 100% !important;
    gap: .5rem !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    scroll-snap-type: none !important;
  }

  .contrib-scelte--compatte .contrib-scelta,
  .contrib-scelta {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 58px !important;
    padding: .55rem .68rem !important;
    gap: .62rem !important;
    text-align: left !important;
    scroll-snap-align: none !important;
  }

  .contrib-scelte--compatte .contrib-scelta-num,
  .contrib-scelta-num {
    flex: 0 0 34px !important;
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
  }

  .contrib-scelta > span:last-child {
    min-width: 0 !important;
  }

  .contrib-scelte--compatte .contrib-scelta b,
  .contrib-scelta b {
    display: block !important;
    font-size: .86rem !important;
    line-height: 1.18 !important;
  }

  .contrib-scelte--compatte .contrib-scelta small,
  .contrib-scelta small {
    display: block !important;
    margin-top: .12rem !important;
    font-size: .68rem !important;
    line-height: 1.25 !important;
  }

  /* La linguetta non deve coprire le azioni principali. */
  .chat-linguetta {
    top: auto !important;
    right: 0 !important;
    bottom: calc(5rem + env(safe-area-inset-bottom, 0px)) !important;
    transform: none !important;
    min-width: 54px !important;
    min-height: 44px !important;
    padding: .55rem .65rem !important;
    border-radius: 16px 0 0 16px !important;
  }

  .chat-linguetta:hover {
    padding-right: .65rem !important;
  }

  .chat-linguetta-txt {
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    transform: none !important;
    font-size: .68rem !important;
    letter-spacing: .08em !important;
  }
}

@media (max-width: 430px) {
  .pl-testa-sx {
    padding-right: 4.55rem !important;
  }

  .pl-testa h1.pl-saluto {
    font-size: 1.04rem !important;
  }

  .pl-fronti {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  .pl-fronti .q-fronte {
    min-height: 46px !important;
  }

  .pl-testa-toggle {
    min-width: 66px !important;
  }
}

/* Partecipa — leggibilità del pulsante finale nella modale "Aggiungi una voce" */
.pv-piede .pv-invia,
.pv-piede .pv-invia:hover,
.pv-piede .pv-invia:focus,
.pv-piede .pv-invia:active {
    color: #3F2B00 !important;
    -webkit-text-fill-color: #3F2B00 !important;
    background: linear-gradient(135deg, #FFE28A 0%, #F4BD43 100%) !important;
    border-color: #D89A1E !important;
    text-shadow: none !important;
}

.pv-piede .pv-invia .icn {
    color: #3F2B00 !important;
    stroke: currentColor;
}

@media (max-width: 620px) {
    .pv-piede .pv-invia {
        min-height: 52px;
        font-size: .94rem;
        line-height: 1.2;
        font-weight: 900;
        text-align: center;
    }
}

/* ============ Sfida dei Comuni · evidenza dei contributi reali ============ */
.sfida-hero .quest-lead {
    max-width: 860px;
}

.sfida-hero-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    max-width: 980px;
}

.sfida-hero-stats .quest-stat {
    min-width: 0;
}

.sfida-mio-comune .mio-borgo-rank {
    margin-bottom: .55rem;
}

.sfida-mio-settimana {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .45rem;
    margin: .8rem 0 1rem;
}

.sfida-mio-settimana span {
    display: flex;
    flex-direction: column;
    gap: .08rem;
    padding: .55rem .45rem;
    border: 1px solid rgba(255,255,255,.13);
    border-radius: 12px;
    background: rgba(255,255,255,.07);
    color: rgba(234,242,255,.72);
    font-size: .66rem;
    text-align: center;
}

.sfida-mio-settimana span b {
    color: #F2C75C;
    font-size: 1rem;
    line-height: 1;
}

.sfida-mio-settimana small {
    grid-column: 1 / -1;
    color: rgba(234,242,255,.58);
    font-size: .65rem;
    text-align: center;
}

.sfida-pulse-section {
    background:
        radial-gradient(circle at 100% 0, rgba(37,99,235,.11), transparent 34%),
        linear-gradient(180deg, #F8FBFF, #EDF4FB);
}

.sfida-pulse-head,
.sfida-movement-head,
.sfida-audio-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 1.5rem;
}

.sfida-pulse-head h2,
.sfida-movement-head h2,
.sfida-audio-head h2 {
    margin: .2rem 0 .45rem;
    color: var(--vision-ink);
    font-size: clamp(1.9rem, 3.4vw, 3.3rem);
    letter-spacing: -.045em;
}

.sfida-pulse-head p:not(.campaign-kicker),
.sfida-movement-head small {
    max-width: 850px;
    margin: 0;
    color: var(--vision-muted);
}

.sfida-live-badge,
.sfida-audio-head > a {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    flex: none;
    border-radius: 999px;
    padding: .72rem 1rem;
    background: #fff;
    border: 1px solid rgba(37,99,235,.18);
    color: var(--vision-blue);
    font-size: .82rem;
    font-weight: 850;
    text-decoration: none;
    box-shadow: 0 10px 24px rgba(24,61,105,.08);
}

.sfida-live-badge > span {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #22C55E;
    box-shadow: 0 0 0 6px rgba(34,197,94,.12);
    animation: sfidaLivePulse 1.8s ease-in-out infinite;
}

.sfida-live-badge .icn,
.sfida-audio-head > a .icn {
    width: 1rem;
    height: 1rem;
}

@keyframes sfidaLivePulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.25); }
}

.sfida-pulse-kpis {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.6rem;
}

.sfida-pulse-kpi {
    position: relative;
    overflow: hidden;
    min-height: 180px;
    padding: 1.25rem;
    border: 1px solid rgba(16,37,63,.09);
    border-radius: 22px;
    background: rgba(255,255,255,.92);
    box-shadow: 0 16px 38px rgba(18,53,91,.07);
}

.sfida-pulse-kpi::after {
    content: "";
    position: absolute;
    width: 120px;
    height: 120px;
    right: -52px;
    bottom: -58px;
    border-radius: 50%;
    background: currentColor;
    opacity: .07;
}

.sfida-pulse-kpi__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 13px;
    background: currentColor;
    color: inherit;
    margin-bottom: .9rem;
}

.sfida-pulse-kpi__icon .icn {
    width: 21px;
    height: 21px;
    color: #fff;
}

.sfida-pulse-kpi > b {
    display: block;
    color: var(--vision-ink);
    font-size: 2.05rem;
    font-weight: 950;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.sfida-pulse-kpi > strong {
    display: block;
    margin-top: .4rem;
    color: var(--vision-ink);
    font-size: .92rem;
}

.sfida-pulse-kpi > small {
    display: block;
    margin-top: .4rem;
    color: var(--vision-muted);
    font-size: .72rem;
    line-height: 1.35;
}

.sfida-pulse-kpi--blue { color: #2563EB; }
.sfida-pulse-kpi--gold { color: #D6A84B; }
.sfida-pulse-kpi--teal { color: #0EA5A4; }
.sfida-pulse-kpi--green { color: #22A85A; }
.sfida-pulse-kpi--navy { color: #173F72; }

.sfida-contributi-stage {
    background: rgba(255,255,255,.96);
    border-color: rgba(37,99,235,.12);
    box-shadow: 0 18px 42px rgba(18,53,91,.09);
}

.sfida-contributi-chart-wrap {
    min-height: 410px;
}

.sfida-chart-empty {
    min-height: 410px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2.4rem 1.5rem;
    text-align: center;
    border-radius: 0 0 24px 24px;
    background:
        radial-gradient(circle at 50% 18%, rgba(37, 99, 235, .10), transparent 34%),
        linear-gradient(180deg, rgba(247, 250, 255, .82), #fff);
}

.sfida-chart-empty__icon {
    width: 62px;
    height: 62px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 1rem;
    border-radius: 20px;
    color: #8A5A00;
    background: linear-gradient(135deg, #F2C75C, #FFE08A);
    box-shadow: 0 14px 30px rgba(214, 168, 75, .22);
}

.sfida-chart-empty__icon .icn {
    width: 28px;
    height: 28px;
}

.sfida-chart-empty__eyebrow {
    margin: 0 0 .35rem;
    color: #2563EB;
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.sfida-chart-empty h3 {
    max-width: 560px;
    margin: 0;
    color: var(--vision-ink);
    font-size: clamp(1.3rem, 2.2vw, 1.8rem);
    font-weight: 950;
    line-height: 1.15;
}

.sfida-chart-empty > p:not(.sfida-chart-empty__eyebrow) {
    max-width: 600px;
    margin: .75rem auto 1.25rem;
    color: var(--vision-muted);
    line-height: 1.6;
}

.sfida-chart-empty .btn {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}

.sfida-chart-empty--compact {
    min-height: 360px;
}

@media (max-width: 575.98px) {
    .sfida-chart-empty {
        min-height: 350px;
        padding: 2rem 1rem;
    }

    .sfida-chart-empty__icon {
        width: 54px;
        height: 54px;
        border-radius: 17px;
    }

    .sfida-chart-empty .btn {
        width: 100%;
        justify-content: center;
    }
}

.sfida-live-feed-card {
    height: 100%;
    min-height: 520px;
    padding: 1.25rem;
    border: 1px solid rgba(16,37,63,.09);
    border-radius: 26px;
    background: #fff;
    box-shadow: 0 18px 42px rgba(18,53,91,.09);
}

.sfida-live-feed-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .9rem;
}

.sfida-live-feed-head span:first-child {
    color: var(--vision-coral);
    font-size: .68rem;
    font-weight: 950;
    letter-spacing: .12em;
}

.sfida-live-feed-head h3 {
    margin: .2rem 0 0;
    color: var(--vision-ink);
    font-size: 1.25rem;
}

.sfida-live-dot {
    width: 10px;
    height: 10px;
    margin-top: .3rem;
    border-radius: 50%;
    background: #22C55E;
    box-shadow: 0 0 0 6px rgba(34,197,94,.12);
}

.sfida-live-feed {
    display: grid;
    gap: .65rem;
    max-height: 440px;
    padding-right: .2rem;
    overflow-y: auto;
}

.sfida-live-item {
    padding: .8rem .85rem;
    border: 1px solid rgba(16,37,63,.08);
    border-radius: 16px;
    background: linear-gradient(145deg, #fff, #F7FAFD);
}

.sfida-live-comune {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    color: var(--vision-blue);
    font-size: .72rem;
    font-weight: 850;
    text-decoration: none;
}

.sfida-live-comune .icn {
    width: 1em;
    height: 1em;
}

.sfida-live-comune small {
    color: var(--vision-muted);
}

.sfida-live-copy {
    margin-top: .45rem;
}

.sfida-live-copy > span {
    color: #8A5A00;
    font-size: .63rem;
    font-weight: 900;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.sfida-live-copy strong {
    display: block;
    margin-top: .18rem;
    color: var(--vision-ink);
    font-size: .83rem;
}

.sfida-live-copy p {
    margin: .2rem 0 0;
    color: #174A7C;
    font-size: .95rem;
    font-weight: 850;
    line-height: 1.25;
}

.sfida-live-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem .65rem;
    margin-top: .55rem;
    color: var(--vision-muted);
    font-size: .63rem;
}

.sfida-has-audio {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    color: #087D71;
    font-weight: 800;
}

.sfida-has-audio .icn {
    width: .9rem;
    height: .9rem;
}

.sfida-movement-head {
    margin-top: 2.3rem;
}

.sfida-movement-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

.sfida-movement-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 1.05rem;
    border: 1px solid rgba(16,37,63,.09);
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 14px 32px rgba(18,53,91,.06);
}

.sfida-movement-card.is-top {
    border-color: rgba(214,168,75,.5);
    background: linear-gradient(145deg, #fff, #FFF9EA);
}

.sfida-movement-card__head {
    display: flex;
    align-items: center;
    gap: .65rem;
}

.sfida-movement-rank {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    flex: none;
    border-radius: 11px;
    background: #173F72;
    color: #fff;
    font-size: .8rem;
    font-weight: 900;
}

.sfida-movement-card.is-top .sfida-movement-rank {
    background: #D6A84B;
    color: #10253F;
}

.sfida-movement-card__head a {
    min-width: 0;
    color: var(--vision-ink);
    font-size: .94rem;
    font-weight: 900;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sfida-movement-card__head small {
    color: var(--vision-muted);
    font-size: .68rem;
}

.sfida-movement-metrics {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .45rem;
    margin: .9rem 0;
}

.sfida-movement-metrics span {
    padding: .55rem;
    border-radius: 11px;
    background: #F3F7FB;
    color: var(--vision-muted);
    font-size: .66rem;
}

.sfida-movement-metrics b {
    display: block;
    color: var(--vision-blue);
    font-size: 1rem;
}

.sfida-movement-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .7rem;
    margin-top: auto;
    padding-top: .65rem;
    border-top: 1px solid rgba(16,37,63,.08);
}

.sfida-movement-foot > span,
.sfida-movement-foot > a {
    display: inline-flex;
    align-items: center;
    gap: .28rem;
    font-size: .64rem;
}

.sfida-movement-foot > span {
    color: var(--vision-muted);
}

.sfida-movement-foot > a {
    color: var(--vision-blue);
    font-weight: 850;
    text-decoration: none;
}

.sfida-movement-foot .icn {
    width: .9rem;
    height: .9rem;
}

.sfida-audio-head {
    margin-top: 2.5rem;
}

.sfida-audio-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.sfida-audio-card {
    min-width: 0;
    padding: 1rem;
    border: 1px solid rgba(14,165,164,.22);
    border-radius: 19px;
    background: linear-gradient(145deg, #fff, #F0FBFA);
    box-shadow: 0 13px 30px rgba(18,53,91,.06);
}

.sfida-audio-card__top {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: .55rem;
}

.sfida-audio-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 11px;
    background: #0EA5A4;
    color: #fff;
}

.sfida-audio-icon .icn {
    width: 17px;
    height: 17px;
}

.sfida-audio-card__top a {
    min-width: 0;
    color: var(--vision-ink);
    font-size: .8rem;
    font-weight: 900;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sfida-audio-card__top small {
    color: var(--vision-muted);
    font-size: .62rem;
}

.sfida-audio-card > strong {
    display: block;
    margin-top: .7rem;
    color: var(--vision-muted);
    font-size: .72rem;
}

.sfida-audio-card > p {
    margin: .18rem 0 .7rem;
    color: #0B5E5A;
    font-size: 1rem;
    font-weight: 900;
}

.sfida-audio-card audio {
    display: block;
    width: 100%;
    height: 36px;
}

.sfida-ranking-section {
    color: #fff;
}

.sfida-ranking-heading {
    margin-bottom: 1.8rem;
}

.sfida-ranking-heading h2 {
    color: #fff;
}

.sfida-ranking-heading p:last-child {
    color: rgba(255,255,255,.72);
}

.sfida-table-comune {
    color: var(--vision-ink);
    font-weight: 850;
    text-decoration: none;
}

.sfida-table-attivita {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .3rem;
}

.sfida-table-attivita span {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    padding: .2rem .45rem;
    border-radius: 999px;
    background: #EDF4FB;
    color: var(--vision-muted);
    font-size: .63rem;
    white-space: nowrap;
}

.sfida-table-attivita b {
    color: var(--vision-blue);
}

.sfida-table-fermo {
    color: #94A3B8;
    font-size: .68rem;
}

.sfida-campionati-section {
    background: var(--vision-mist);
}

.sfida-campionati-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.sfida-campionato-card {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .9rem 1rem;
    padding: 1.25rem;
    border: 1px solid rgba(16,37,63,.09);
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 14px 34px rgba(18,53,91,.06);
}

.sfida-campionato-copy h3 {
    margin: 0;
    color: var(--vision-ink);
    font-size: 1.08rem;
}

.sfida-campionato-copy p {
    margin: .3rem 0 0;
    color: var(--vision-muted);
    font-size: .78rem;
}

.sfida-campionato-card ol {
    grid-column: 1 / -1;
    display: grid;
    gap: .45rem;
    margin: .2rem 0 0;
    padding: 0;
    list-style: none;
}

.sfida-campionato-card li {
    display: grid;
    grid-template-columns: 27px minmax(0, 1fr) auto;
    align-items: center;
    gap: .55rem;
    padding: .55rem .65rem;
    border-radius: 12px;
    background: #F4F8FC;
}

.sfida-campionato-card li > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 27px;
    height: 27px;
    border-radius: 9px;
    background: #173F72;
    color: #fff;
    font-size: .7rem;
    font-weight: 900;
}

.sfida-campionato-card li:first-child > span {
    background: #D6A84B;
    color: #10253F;
}

.sfida-campionato-card li a {
    min-width: 0;
    color: var(--vision-ink);
    font-size: .8rem;
    font-weight: 850;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sfida-campionato-card li b {
    color: var(--vision-blue);
    font-size: .82rem;
    white-space: nowrap;
}

.sfida-campionato-card li b small {
    color: var(--vision-muted);
    font-size: .6rem;
    font-weight: 650;
}

.sfida-campionato-empty {
    grid-column: 1 / -1;
    margin: .2rem 0 0;
    color: var(--vision-muted);
    font-size: .78rem;
}

.sfida-actions-section {
    background: #F8FBFF;
}

.sfida-action-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.sfida-action-grid > a {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .15rem .75rem;
    align-items: center;
    padding: 1rem;
    border: 1px solid rgba(37,99,235,.14);
    border-radius: 18px;
    background: #fff;
    color: var(--vision-ink);
    text-decoration: none;
    box-shadow: 0 12px 28px rgba(18,53,91,.05);
    transition: transform .14s ease, box-shadow .14s ease, border-color .14s ease;
}

.sfida-action-grid > a:hover {
    transform: translateY(-2px);
    border-color: rgba(37,99,235,.35);
    box-shadow: 0 18px 34px rgba(18,53,91,.1);
}

.sfida-action-grid > a > span {
    grid-row: 1 / span 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 14px;
    background: linear-gradient(135deg, #2563EB, #0EA5E9);
    color: #fff;
}

.sfida-action-grid .icn {
    width: 21px;
    height: 21px;
}

.sfida-action-grid strong {
    font-size: .88rem;
}

.sfida-action-grid small {
    color: var(--vision-muted);
    font-size: .71rem;
}

@media (max-width: 1280px) {
    .sfida-pulse-kpis {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .sfida-movement-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 991.98px) {
    .sfida-hero-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .sfida-pulse-head,
    .sfida-movement-head,
    .sfida-audio-head {
        align-items: flex-start;
        flex-direction: column;
        gap: .8rem;
    }

    .sfida-audio-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .sfida-hero .container-fluid {
        padding-top: 2.2rem !important;
        padding-bottom: 2.2rem !important;
    }

    .sfida-hero h1 {
        font-size: clamp(2.35rem, 11vw, 4.3rem);
    }

    .sfida-hero-stats,
    .sfida-pulse-kpis,
    .sfida-movement-grid,
    .sfida-audio-grid,
    .sfida-campionati-grid,
    .sfida-action-grid {
        grid-template-columns: 1fr;
    }

    .sfida-hero-stats {
        gap: .6rem;
    }

    .sfida-hero-stats .quest-stat {
        grid-template-columns: auto 1fr auto;
        grid-template-rows: auto;
        padding: .65rem .75rem;
    }

    .sfida-hero-stats .quest-stat-ico {
        grid-row: auto;
        width: 34px;
        height: 34px;
    }

    .sfida-hero-stats .quest-stat b {
        font-size: 1.15rem;
    }

    .sfida-hero-stats .quest-stat span:last-child {
        grid-column: auto;
        text-align: right;
    }

    .sfida-pulse-head h2,
    .sfida-movement-head h2,
    .sfida-audio-head h2 {
        font-size: 2rem;
    }

    .sfida-pulse-kpi {
        display: grid;
        grid-template-columns: auto auto 1fr;
        grid-template-rows: auto auto;
        align-items: center;
        column-gap: .75rem;
        min-height: 0;
        padding: .9rem;
    }

    .sfida-pulse-kpi__icon {
        grid-row: 1 / span 2;
        margin: 0;
    }

    .sfida-pulse-kpi > b {
        font-size: 1.55rem;
    }

    .sfida-pulse-kpi > strong {
        margin: 0;
        font-size: .82rem;
    }

    .sfida-pulse-kpi > small {
        grid-column: 2 / -1;
        margin-top: .15rem;
    }

    .sfida-live-feed-card {
        min-height: 0;
    }

    .sfida-live-feed {
        max-height: none;
    }

    .sfida-contributi-chart-wrap {
        min-height: 390px;
    }

    .sfida-movement-head small {
        font-size: .72rem;
    }

    .sfida-audio-head > a,
    .sfida-live-badge {
        width: 100%;
        justify-content: center;
    }

    .sfida-tavola table {
        min-width: 880px;
    }
}

@media (max-width: 430px) {
    .sfida-mio-settimana {
        gap: .3rem;
    }

    .sfida-movement-foot {
        align-items: flex-start;
        flex-direction: column;
    }

    .sfida-campionato-card {
        grid-template-columns: 1fr;
    }

    .sfida-campionato-card .league-ico {
        margin-bottom: -.2rem;
    }

    .sfida-campionato-card ol,
    .sfida-campionato-empty {
        grid-column: 1;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sfida-live-badge > span {
        animation: none;
    }
}

/* ========================================================================== 
   TERRITORI — mappa dei contributi e KPI di partecipazione
   ========================================================================== */
.territory-data-hero {
    position: relative;
    overflow: hidden;
}
.territory-data-hero::after {
    content: "";
    position: absolute;
    width: 420px;
    height: 420px;
    right: -110px;
    top: -190px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(52, 211, 153, .28), rgba(52, 211, 153, 0) 68%);
    pointer-events: none;
}
.territory-data-hero h1 {
    max-width: 980px;
    font-size: clamp(2.7rem, 5.6vw, 5.8rem);
}

.territory-impact {
    padding: 2.1rem 0 1.5rem;
    background: linear-gradient(180deg, #F8FBFF 0%, #EEF5FC 100%);
    border-bottom: 1px solid rgba(16, 37, 63, .08);
}
.territory-impact-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.1rem;
}
.territory-impact-head h2 {
    margin: 0;
    color: var(--vision-ink);
    font-size: clamp(1.55rem, 2.4vw, 2.35rem);
    letter-spacing: -.035em;
}
.territory-period-badge {
    display: inline-flex;
    align-items: center;
    padding: .46rem .82rem;
    border-radius: 999px;
    background: #0F2F57;
    color: #fff;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
    white-space: nowrap;
}
.territory-kpi-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: .8rem;
}
.territory-kpi {
    min-width: 0;
    padding: 1rem 1.05rem;
    border: 1px solid rgba(16, 37, 63, .1);
    border-radius: 18px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 12px 30px rgba(18, 53, 91, .07);
}
.territory-kpi--primary {
    color: #fff;
    background: linear-gradient(140deg, #0F2F57, #1D65B4);
    border-color: transparent;
}
.territory-kpi > span {
    display: block;
    min-height: 2.2em;
    color: var(--vision-muted);
    font-size: .72rem;
    font-weight: 800;
    line-height: 1.15;
}
.territory-kpi--primary > span,
.territory-kpi--primary small { color: rgba(255, 255, 255, .72); }
.territory-kpi strong {
    display: block;
    margin: .3rem 0 .15rem;
    color: var(--vision-ink);
    font-size: clamp(1.65rem, 2.5vw, 2.35rem);
    font-weight: 950;
    line-height: 1;
    letter-spacing: -.05em;
    font-variant-numeric: tabular-nums;
}
.territory-kpi--primary strong { color: #F2C75C; }
.territory-kpi small {
    display: block;
    color: var(--vision-muted);
    font-size: .66rem;
    line-height: 1.25;
}

.territory-movers {
    display: grid;
    grid-template-columns: 190px minmax(0, 1fr);
    gap: .85rem;
    align-items: center;
    margin-top: 1rem;
    padding: .85rem;
    border: 1px solid rgba(16, 37, 63, .1);
    border-radius: 18px;
    background: rgba(255, 255, 255, .82);
}
.territory-movers-title strong,
.territory-movers-title span { display: block; }
.territory-movers-title strong { color: var(--vision-ink); font-size: .84rem; }
.territory-movers-title span { color: var(--vision-muted); font-size: .67rem; }
.territory-movers-list {
    display: grid;
    grid-template-columns: repeat(6, minmax(145px, 1fr));
    gap: .5rem;
}
.territory-mover {
    display: grid;
    grid-template-columns: 26px minmax(0, 1fr);
    gap: .45rem;
    align-items: center;
    min-width: 0;
    padding: .55rem .6rem;
    border: 1px solid rgba(37, 99, 235, .12);
    border-radius: 13px;
    background: #F7FAFF;
    text-align: left;
    cursor: pointer;
    transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.territory-mover:hover {
    transform: translateY(-1px);
    border-color: rgba(37, 99, 235, .42);
    box-shadow: 0 8px 18px rgba(37, 99, 235, .1);
}
.territory-mover-rank {
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 9px;
    color: #fff;
    background: linear-gradient(135deg, #2563EB, #0EA5E9);
    font-size: .7rem;
    font-weight: 900;
}
.territory-mover b,
.territory-mover small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.territory-mover b { color: var(--vision-ink); font-size: .73rem; }
.territory-mover small { color: var(--vision-muted); font-size: .6rem; }

.territory-map-metrics {
    display: grid;
    gap: .72rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(16, 37, 63, .1);
}
.territory-map-metrics__intro {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
}
.territory-map-metrics__intro strong { color: var(--vision-ink); font-size: .88rem; }
.territory-map-metrics__intro span { color: var(--vision-muted); font-size: .72rem; }
.territory-metric-switch {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
}
.territory-metric-switch button {
    padding: .5rem .78rem;
    border: 1px solid rgba(16, 37, 63, .14);
    border-radius: 999px;
    color: var(--vision-muted);
    background: #fff;
    font-size: .69rem;
    font-weight: 850;
    cursor: pointer;
    transition: color .15s ease, border-color .15s ease, background .15s ease, transform .15s ease;
}
.territory-metric-switch button:hover {
    color: var(--vision-ink);
    border-color: rgba(37, 99, 235, .45);
    transform: translateY(-1px);
}
.territory-metric-switch button.is-active {
    color: #fff;
    border-color: transparent;
    background: linear-gradient(135deg, #0F2F57, #2563EB);
    box-shadow: 0 7px 18px rgba(37, 99, 235, .2);
}
.territory-legend {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .65rem;
    color: var(--vision-muted);
}
.territory-legend > span {
    margin-right: .25rem;
    color: var(--vision-ink);
    font-size: .7rem;
    font-weight: 850;
}
.territory-legend > div { display: inline-flex; align-items: center; gap: .28rem; }
.territory-legend i {
    width: 14px;
    height: 14px;
    border-radius: 4px;
    border: 1px solid rgba(16, 37, 63, .1);
}
.territory-legend small { font-size: .62rem; }
.territory-legend .l0 { background: #E7EDF5; }
.territory-legend .l1 { background: #D9E8FF; }
.territory-legend .l2 { background: #8FC8F3; }
.territory-legend .l3 { background: #35B9B1; }
.territory-legend .l4 { background: linear-gradient(90deg, #F2C75C, #EC7B4F); }

.territory-map-card { position: relative; }
.territory-map-note {
    position: absolute;
    z-index: 520;
    top: 14px;
    left: 50%;
    transform: translateX(-50%);
    max-width: calc(100% - 32px);
    padding: .5rem .82rem;
    border: 1px solid rgba(255, 255, 255, .7);
    border-radius: 999px;
    color: #EAF2FF;
    background: rgba(8, 27, 53, .88);
    box-shadow: 0 8px 24px rgba(8, 27, 53, .22);
    backdrop-filter: blur(8px);
    font-size: .69rem;
    white-space: nowrap;
    pointer-events: none;
}
.territory-map-tooltip strong,
.territory-map-tooltip b,
.territory-map-tooltip small { display: block; }
.territory-map-tooltip strong { color: #10253F; font-size: .8rem; }
.territory-map-tooltip b { margin-top: .15rem; color: #1D65B4; font-size: .75rem; }
.territory-map-tooltip small { margin-top: .12rem; color: #64748B; font-size: .62rem; }
.territory-contribution-tooltip {
    border: 0 !important;
    border-radius: 12px !important;
    box-shadow: 0 12px 28px rgba(8, 27, 53, .18) !important;
}

.municipality-contributions {
    margin: 1rem 0;
    padding: 1rem;
    border: 1px solid rgba(37, 99, 235, .12);
    border-radius: 17px;
    background: linear-gradient(150deg, #F8FBFF, #EEF7F5);
}
.municipality-contributions__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .65rem;
    margin-bottom: .75rem;
}
.municipality-contributions__head span {
    display: block;
    color: #1D65B4;
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .11em;
}
.municipality-contributions__head h3 {
    margin: .18rem 0 0;
    color: var(--vision-ink);
    font-size: .96rem;
    line-height: 1.15;
}
.municipality-contributions__head > small {
    padding: .28rem .48rem;
    border-radius: 999px;
    color: #0F5E55;
    background: rgba(52, 211, 153, .14);
    font-size: .58rem;
    font-weight: 850;
    white-space: nowrap;
}
.municipality-contribution-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .5rem;
}
.municipality-contribution-grid > div {
    min-width: 0;
    padding: .65rem .7rem;
    border-radius: 12px;
    background: rgba(255, 255, 255, .86);
    border: 1px solid rgba(16, 37, 63, .07);
}
.municipality-contribution-grid strong,
.municipality-contribution-grid span,
.municipality-contribution-grid small { display: block; }
.municipality-contribution-grid strong {
    color: #C98A1E;
    font-size: 1.25rem;
    font-weight: 950;
    line-height: 1;
}
.municipality-contribution-grid span {
    margin-top: .18rem;
    color: var(--vision-ink);
    font-size: .68rem;
    font-weight: 800;
}
.municipality-contribution-grid small {
    margin-top: .12rem;
    color: var(--vision-muted);
    font-size: .57rem;
}
.municipality-latest { margin-top: .85rem; }
.municipality-latest > b { color: var(--vision-ink); font-size: .72rem; }
.municipality-latest ul {
    display: grid;
    gap: .35rem;
    margin: .45rem 0 0;
    padding: 0;
    list-style: none;
}
.municipality-latest li {
    display: flex;
    justify-content: space-between;
    gap: .55rem;
    padding: .52rem .58rem;
    border-radius: 10px;
    background: rgba(255, 255, 255, .82);
}
.municipality-latest li div { min-width: 0; }
.municipality-latest li b,
.municipality-latest li div > span {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.municipality-latest li b { color: var(--vision-ink); font-size: .65rem; }
.municipality-latest li div > span { color: var(--vision-muted); font-size: .61rem; }
.municipality-latest li em {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    gap: .18rem;
    flex-wrap: wrap;
    font-style: normal;
}
.municipality-latest li em span {
    padding: .15rem .28rem;
    border-radius: 999px;
    font-size: .48rem;
    font-weight: 900;
    white-space: nowrap;
}
.municipality-latest .is-new { color: #7C2D12; background: #FFEDD5; }
.municipality-latest .has-audio { color: #0F5E55; background: #D1FAE5; }
.municipality-latest .is-valid { color: #1E40AF; background: #DBEAFE; }
.municipality-no-contributions {
    margin: .85rem 0 0;
    padding: .7rem;
    border: 1px dashed rgba(37, 99, 235, .28);
    border-radius: 11px;
    color: var(--vision-muted);
    background: rgba(255, 255, 255, .6);
    font-size: .68rem;
}

@media (max-width: 1399px) {
    .territory-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .territory-movers { grid-template-columns: 160px minmax(0, 1fr); }
    .territory-movers-list {
        display: flex;
        overflow-x: auto;
        scrollbar-width: thin;
        padding-bottom: .2rem;
    }
    .territory-mover { flex: 0 0 170px; }
}

@media (max-width: 991.98px) {
    .territory-impact { padding-top: 1.5rem; }
    .territory-impact-head { align-items: flex-start; }
    .territory-movers { grid-template-columns: 1fr; }
    .territory-map-metrics__intro { align-items: flex-start; flex-direction: column; gap: .2rem; }
    .territory-map-note { top: 10px; }
}

@media (max-width: 575.98px) {
    .territory-data-hero .app-shell { padding-top: 1.8rem !important; padding-bottom: 2rem !important; }
    .territory-data-hero h1 {
        font-size: clamp(2.25rem, 11vw, 3.2rem);
        line-height: .98;
        letter-spacing: -.055em;
    }
    .territory-impact-head { display: grid; }
    .territory-period-badge { justify-self: start; }
    .territory-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; }
    .territory-kpi { padding: .8rem; border-radius: 14px; }
    .territory-kpi > span { min-height: 2.3em; font-size: .65rem; }
    .territory-kpi strong { font-size: 1.65rem; }
    .territory-kpi small { font-size: .58rem; }
    .territory-movers { margin-left: -.15rem; margin-right: -.15rem; }
    .territory-metric-switch {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .territory-metric-switch button {
        min-height: 42px;
        padding: .45rem .5rem;
        border-radius: 12px;
        font-size: .64rem;
    }
    .territory-legend {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .4rem .65rem;
    }
    .territory-legend > span { grid-column: 1 / -1; }
    .territory-map-note {
        width: calc(100% - 20px);
        max-width: none;
        padding: .45rem .6rem;
        border-radius: 11px;
        white-space: normal;
        text-align: center;
        line-height: 1.2;
    }
    .territory-map { min-height: 460px; }
    .municipality-panel { padding: 1rem; }
    .municipality-contributions { padding: .8rem; }
    .municipality-contributions__head { display: grid; }
    .municipality-contributions__head > small { justify-self: start; }
    .municipality-latest li { align-items: flex-start; flex-direction: column; }
    .municipality-latest li em { justify-content: flex-start; }
}

/* ============================================================
   TERRITORI — protezione layout per contributi e frasi lunghe
   ============================================================ */
#comune-panel,
.municipality-panel,
.municipality-contributions,
.municipality-latest,
.municipality-latest ul,
.municipality-latest li {
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}

#comune-panel,
.municipality-panel,
.municipality-contributions,
.municipality-latest {
    overflow-x: hidden;
}

.municipality-latest ul {
    width: 100%;
    grid-template-columns: minmax(0, 1fr);
}

.municipality-latest li {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    gap: .42rem;
    overflow: hidden;
}

.municipality-latest li > div {
    min-width: 0;
    width: 100%;
    overflow: hidden;
}

.municipality-latest li b,
.municipality-latest li div > span {
    display: block;
    max-width: 100%;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
    word-break: normal;
    hyphens: auto;
}

.municipality-latest li b {
    line-height: 1.3;
}

.municipality-latest li div > span {
    margin-top: .14rem;
    line-height: 1.32;
}

.municipality-latest li em {
    width: 100%;
    max-width: 100%;
    justify-content: flex-start;
}

.municipality-latest li em span {
    flex: 0 0 auto;
}

.municipality-panel dl,
.municipality-panel dd,
.municipality-panel dt,
.municipality-panel p,
.municipality-panel a,
.municipality-panel button {
    max-width: 100%;
    overflow-wrap: anywhere;
}

@media (max-width: 575.98px) {
    #comune-panel.municipality-panel {
        width: 100%;
        max-width: 100%;
        padding: .85rem;
    }

    .municipality-contributions {
        margin-inline: 0;
        padding: .72rem;
        border-radius: 14px;
    }

    .municipality-latest ul {
        gap: .45rem;
    }

    .municipality-latest li {
        padding: .62rem;
        border-radius: 11px;
    }

    .municipality-latest li b {
        font-size: .69rem;
    }

    .municipality-latest li div > span {
        font-size: .64rem;
    }

    .municipality-latest li em span {
        font-size: .5rem;
    }
}

/* ═══════════════════════════════════════════════════════════════
   PROFILO PUBBLICO DEL COMUNE — CONTRIBUTI, AUDIO E CLASSIFICHE
   ═══════════════════════════════════════════════════════════════ */
.pp-corpo--comune {
  grid-template-columns: minmax(0, 1.35fr) minmax(340px, .85fr);
  align-items: start;
}

.pp-col--voci,
.pp-col--lato,
.pp-section-head > div,
.pp-voce,
.pp-audio-copy,
.pp-ranking-top > div:first-child {
  min-width: 0;
}

.pp-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.pp-section-head .campaign-kicker { margin: 0 0 .22rem; }
.pp-section-head .pp-h2 { margin-bottom: 0; }
.pp-section-head > a {
  flex: none;
  color: var(--vision-blue);
  font-size: .8rem;
  font-weight: 850;
  text-decoration: none;
}
.pp-section-head > a:hover { text-decoration: underline; }
.pp-section-count,
.pp-live-badge {
  flex: none;
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: .35rem .72rem;
  border-radius: 999px;
  background: #edf4ff;
  color: #2457a6;
  font-size: .7rem;
  font-weight: 900;
  letter-spacing: .03em;
  white-space: nowrap;
}
.pp-live-badge {
  background: #dcf8ed;
  color: #137a59;
}

.pp-chip--audio b { color: #67e8f9; }

/* Le schede delle voci sono sempre una sotto l'altra. */
.pp-voci.pp-voci--lista {
  display: flex;
  flex-direction: column;
  gap: .85rem;
}
.pp-voci--lista .pp-voce {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: .42rem;
  padding: 1rem 1.08rem;
  overflow: hidden;
}
.pp-voci--lista .pp-voce.has-audio { border-left-color: #0e9f75; }
.pp-voce-head {
  display: flex;
  align-items: center;
  gap: .42rem;
  flex-wrap: wrap;
}
.pp-voce-badge {
  display: inline-flex;
  align-items: center;
  padding: .18rem .48rem;
  border-radius: 999px;
  background: #fff3cd;
  color: #8b6200;
  font-size: .59rem;
  font-weight: 900;
  letter-spacing: .055em;
  text-transform: uppercase;
}
.pp-voce-badge--audio {
  background: #dff8ef;
  color: #08795a;
}
.pp-voci--lista .pp-voce > b,
.pp-voci--lista .pp-voce > small,
.pp-audio-copy b,
.pp-audio-copy small {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.pp-voci--lista .pp-voce > b {
  font-size: clamp(1rem, 2vw, 1.18rem);
  line-height: 1.35;
}
.pp-voci--lista .pp-voce > small {
  line-height: 1.45;
}
.pp-voce-player {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: .6rem;
  margin-top: .25rem;
  padding: .52rem .68rem;
  border-radius: 12px;
  background: #eefaf6;
}
.pp-voce-player > span {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: #d5f3e8;
}
.pp-voce-audio,
.pp-audio-item audio {
  width: 100%;
  max-width: none;
  min-width: 0;
  height: 38px;
  margin: 0;
}

.pp-audio-block {
  margin-top: 2rem;
  padding: 1.2rem;
  border: 1.5px solid rgba(13, 148, 136, .24);
  border-radius: 20px;
  background: linear-gradient(150deg, #f8fffd, #ecfbf6);
}
.pp-audio-list { display: grid; gap: .7rem; }
.pp-audio-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(230px, .9fr);
  align-items: center;
  gap: 1rem;
  padding: .8rem .9rem;
  border: 1px solid rgba(16, 37, 63, .1);
  border-radius: 14px;
  background: #fff;
}
.pp-audio-copy { display: grid; gap: .12rem; }
.pp-audio-copy > span {
  color: #0f8a68;
  font-size: .58rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.pp-audio-copy b { color: var(--vision-ink); font-size: .96rem; }
.pp-audio-copy small { color: var(--vision-muted); }
.pp-audio-empty {
  padding: 1rem;
  border: 1.5px dashed rgba(13, 148, 136, .35);
  border-radius: 14px;
  background: rgba(255,255,255,.72);
}
.pp-audio-empty b { color: var(--vision-ink); }
.pp-audio-empty p { margin: .3rem 0 .8rem; color: var(--vision-muted); }

.pp-territorio-card,
.pp-ranking-card,
.pp-community-card,
.pp-book-card {
  margin-bottom: 1rem;
  padding: 1.08rem;
  border: 1px solid rgba(16, 37, 63, .1);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(11, 31, 58, .07);
}
.pp-territorio-card .pp-mappa { height: 280px; }
.pp-territorio-card .pp-mappa canvas,
.pp-territorio-card .leaflet-canvas-pane canvas {
  max-width: none !important;
}
.pp-territorio-fatti {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
  margin-top: .8rem;
}
.pp-territorio-fatti > div {
  min-width: 0;
  display: grid;
  gap: .14rem;
  padding: .68rem .75rem;
  border-radius: 12px;
  background: #f4f7fc;
}
.pp-territorio-fatti span,
.pp-territorio-lingue > span {
  color: #6b7a90;
  font-size: .58rem;
  font-weight: 900;
  letter-spacing: .085em;
  text-transform: uppercase;
}
.pp-territorio-fatti b {
  color: var(--vision-ink);
  font-size: .88rem;
  overflow-wrap: anywhere;
}
.pp-territorio-lingue {
  display: grid;
  gap: .45rem;
  margin-top: .75rem;
  padding: .78rem;
  border-radius: 12px;
  background: #fbf7ff;
}
.pp-territorio-lingue > div {
  display: flex;
  gap: .4rem;
  flex-wrap: wrap;
}
.pp-territorio-lingue > div span {
  padding: .28rem .54rem;
  border-radius: 999px;
  background: #eee4fb;
  color: #6d35a0;
  font-size: .7rem;
  font-weight: 800;
}
.pp-territorio-link {
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
  margin-top: .75rem;
}
.pp-territorio-link a {
  color: var(--vision-blue);
  font-size: .72rem;
  font-weight: 850;
  text-decoration: none;
}
.pp-territorio-link a:hover { text-decoration: underline; }

.pp-book-card {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: .9rem;
  align-items: start;
  border-color: rgba(201, 138, 30, .32);
  background: linear-gradient(145deg, #fffdf7, #fff4d8);
}
.pp-book-icon {
  width: 58px;
  height: 58px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 16px;
  background: linear-gradient(135deg, #f6cc63, #e9ad2c);
  font-size: 1.55rem;
  box-shadow: 0 10px 22px rgba(201, 138, 30, .24);
}
.pp-book-card h2 { margin: 0 0 .3rem; color: #3b2a05; font-size: 1.16rem; font-weight: 950; }
.pp-book-card p:not(.campaign-kicker) { margin: 0 0 .8rem; color: #72591e; font-size: .82rem; line-height: 1.45; }
.pp-book-login { display: grid; gap: .5rem; justify-items: start; }
.pp-book-login > a:last-child { color: #805d12; font-size: .72rem; font-weight: 800; }

.pp-ranking-list { display: grid; gap: .8rem; }
.pp-ranking-row {
  display: grid;
  gap: .42rem;
  padding: .72rem .78rem;
  border-radius: 13px;
  background: #f6f8fc;
}
.pp-ranking-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .7rem;
}
.pp-ranking-top > div:first-child { display: grid; gap: .08rem; }
.pp-ranking-top b { color: var(--vision-ink); font-size: .82rem; }
.pp-ranking-top small { color: var(--vision-muted); font-size: .66rem; line-height: 1.35; }
.pp-ranking-value {
  flex: none;
  display: grid;
  justify-items: end;
  line-height: 1.05;
}
.pp-ranking-value strong { color: #c78b16; font-size: 1.02rem; font-weight: 950; }
.pp-ranking-value span { color: #61728a; font-size: .62rem; font-weight: 850; white-space: nowrap; }
.pp-ranking-row progress {
  width: 100%;
  height: 8px;
  overflow: hidden;
  border: 0;
  border-radius: 999px;
  background: #dde5f1;
  appearance: none;
}
.pp-ranking-row progress::-webkit-progress-bar { background: #dde5f1; border-radius: 999px; }
.pp-ranking-row progress::-webkit-progress-value { background: linear-gradient(90deg, #2563eb, #18b989); border-radius: 999px; }
.pp-ranking-row progress::-moz-progress-bar { background: linear-gradient(90deg, #2563eb, #18b989); border-radius: 999px; }
.pp-ranking-row--audio progress::-webkit-progress-value { background: linear-gradient(90deg, #0f9f75, #5eead4); }
.pp-ranking-row--audio progress::-moz-progress-bar { background: linear-gradient(90deg, #0f9f75, #5eead4); }
.pp-ranking-row--gloria progress::-webkit-progress-value { background: linear-gradient(90deg, #d89a1d, #f6d267); }
.pp-ranking-row--gloria progress::-moz-progress-bar { background: linear-gradient(90deg, #d89a1d, #f6d267); }
.pp-ranking-leader { color: #7c8aa0; font-size: .61rem; }

.pp-campione-name { min-width: 0; display: grid; gap: .04rem; }
.pp-campione-name b { overflow-wrap: anywhere; }
.pp-campione-name small { color: var(--vision-muted); font-size: .64rem; }
.pp-community-card .pp-compagnie { margin-bottom: 0; }

.pp-share-open {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .38rem;
  min-height: 44px;
  padding: .66rem 1rem;
  border: 1.5px solid rgba(37, 99, 235, .28);
  border-radius: 12px;
  background: #fff;
  color: var(--vision-blue);
  font-weight: 900;
}
.pp-share-open:hover { background: #edf4ff; color: #174ba5; }
.pp-share-modal {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: grid;
  place-items: center;
  padding: 1rem;
}
.pp-share-modal[hidden] { display: none !important; }
.pp-share-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgba(4, 20, 42, .68);
  backdrop-filter: blur(5px);
}
.pp-share-panel {
  position: relative;
  width: min(540px, 100%);
  padding: 1.4rem;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 30px 90px rgba(2, 15, 35, .38);
}
.pp-share-panel h2 { margin: .1rem 0 .35rem; color: var(--vision-ink); font-weight: 950; }
.pp-share-panel > p:not(.campaign-kicker):not(.pp-share-status) { color: var(--vision-muted); }
.pp-share-close {
  position: absolute;
  top: .65rem;
  right: .65rem;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: #edf2f9;
  color: #243b59;
  font-size: 1.4rem;
  line-height: 1;
}
.pp-share-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
  margin-top: 1rem;
}
.pp-share-options button {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .62rem;
  padding: .78rem;
  border: 1px solid rgba(16, 37, 63, .12);
  border-radius: 13px;
  background: #f7f9fc;
  color: var(--vision-ink);
  text-align: left;
}
.pp-share-options button:hover { border-color: rgba(37, 99, 235, .35); background: #edf4ff; }
.pp-share-options button span {
  flex: none;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: #1d61d7;
  color: #fff;
  font-weight: 950;
}
.pp-share-options button[data-share-network="x"] span { background: #111827; }
.pp-share-options button[data-share-network="instagram"] span { background: linear-gradient(135deg, #833ab4, #fd1d1d, #fcb045); }
.pp-share-options button[data-share-network="linkedin"] span { background: #0a66c2; font-size: .72rem; }
.pp-share-options b { overflow-wrap: anywhere; }
.pp-share-status { min-height: 1.25rem; margin: .75rem 0 0; color: #167655; font-size: .75rem; font-weight: 800; }
body.pp-share-is-open { overflow: hidden; }

@media (max-width: 1080px) {
  .pp-corpo--comune { grid-template-columns: minmax(0, 1fr) minmax(310px, .82fr); gap: 1.25rem; }
  .pp-audio-item { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .pp-corpo--comune { grid-template-columns: minmax(0, 1fr); }
  .pp-col--lato { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
  .pp-col--lato > * { margin: 0; }
  .pp-territorio-card,
  .pp-community-card { grid-column: 1 / -1; }
}

@media (max-width: 640px) {
  .pp-hero { padding: 1.8rem 0 1.45rem; }
  .pp-stemma { height: 72px; }
  .pp-stat {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
  }
  .pp-chip { min-width: 0; padding: .62rem .55rem; }
  .pp-chip b { font-size: 1.12rem; }
  .pp-cta--banda { padding: 1rem; }
  .pp-cta-azioni { width: 100%; display: grid; grid-template-columns: 1fr; gap: .55rem; }
  .pp-cta-azioni .btn { width: 100%; white-space: normal; }
  .pp-section-head { align-items: flex-start; }
  .pp-section-count,
  .pp-live-badge { font-size: .61rem; padding-inline: .55rem; }
  .pp-voci--lista .pp-voce { padding: .88rem; }
  .pp-voce-player { grid-template-columns: 1fr; }
  .pp-voce-player > span { display: none; }
  .pp-audio-block { margin-top: 1.25rem; padding: .85rem; border-radius: 16px; }
  .pp-audio-item { padding: .72rem; }
  .pp-col--lato { display: grid; grid-template-columns: minmax(0, 1fr); }
  .pp-territorio-card,
  .pp-community-card { grid-column: auto; }
  .pp-territorio-card,
  .pp-ranking-card,
  .pp-community-card,
  .pp-book-card { padding: .88rem; border-radius: 16px; }
  .pp-territorio-card .pp-mappa { height: 230px; }
  .pp-territorio-fatti { gap: .5rem; }
  .pp-territorio-fatti > div { padding: .58rem .62rem; }
  .pp-book-card { grid-template-columns: 48px minmax(0, 1fr); }
  .pp-book-icon { width: 48px; height: 48px; border-radius: 13px; font-size: 1.25rem; }
  .pp-ranking-top { gap: .5rem; }
  .pp-ranking-value strong { font-size: .92rem; }
  .pp-campione { align-items: flex-start; }
  .pp-campione em { font-size: .68rem; text-align: right; }
  .pp-comp-riga { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; }
  .pp-comp-num--oro { grid-column: 3; }
  .pp-share-modal { align-items: end; padding: 0; }
  .pp-share-panel { width: 100%; border-radius: 22px 22px 0 0; padding: 1.15rem; padding-bottom: max(1.15rem, env(safe-area-inset-bottom)); }
}

@media (max-width: 420px) {
  .pp-territorio-fatti { grid-template-columns: minmax(0, 1fr); }
  .pp-share-options { grid-template-columns: minmax(0, 1fr); }
  .pp-section-head { display: grid; gap: .5rem; }
  .pp-section-count,
  .pp-live-badge { justify-self: start; }
}
.pp-share-status.is-error { color: #b42318; }

/* =========================================================
   Archivio pubblico delle voci del Comune
   ========================================================= */
.pp-voci-archive {
  scroll-margin-top: 112px;
}
.pp-voci-filters {
  display: grid;
  grid-template-columns: minmax(260px, 1.55fr) minmax(180px, .78fr) minmax(160px, .65fr) auto;
  gap: .72rem;
  align-items: end;
  margin: 1rem 0 .7rem;
  padding: .9rem;
  border: 1px solid rgba(31, 83, 156, .14);
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(240, 246, 255, .96), rgba(249, 252, 255, .98));
  box-shadow: 0 12px 30px rgba(24, 64, 116, .06);
}
.pp-voci-filters label {
  min-width: 0;
  display: grid;
  gap: .34rem;
}
.pp-voci-filters label > span {
  color: #435b7b;
  font-size: .67rem;
  font-weight: 900;
  letter-spacing: .035em;
  text-transform: uppercase;
}
.pp-voci-filters input,
.pp-voci-filters select {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: .68rem .76rem;
  border: 1px solid rgba(31, 83, 156, .2);
  border-radius: 11px;
  background: #fff;
  color: var(--vision-ink);
  font: inherit;
  font-size: .82rem;
  outline: none;
}
.pp-voci-filters input:focus,
.pp-voci-filters select:focus {
  border-color: rgba(37, 99, 235, .72);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}
.pp-voci-filter-actions {
  display: flex;
  gap: .48rem;
  align-items: center;
}
.pp-voci-filter-actions .btn {
  min-height: 44px;
  white-space: nowrap;
}
.pp-voci-reset {
  border: 1px solid rgba(31, 83, 156, .18);
  background: #fff;
  color: #315b96 !important;
}
.pp-voci-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .38rem;
  margin: 0 0 .75rem;
  color: #6a7d96;
  font-size: .73rem;
}
.pp-voci-summary b {
  color: var(--vision-ink);
  font-size: .8rem;
}
.pp-voci-empty {
  padding: 1.15rem;
  border: 1px dashed rgba(37, 99, 235, .28);
  border-radius: 15px;
  background: rgba(239, 245, 255, .68);
  color: var(--vision-muted);
}
.pp-voci-empty b {
  color: var(--vision-ink);
}
.pp-voci-empty p {
  margin: .25rem 0 .5rem;
  font-size: .78rem;
}
.pp-voci-empty a {
  color: var(--vision-blue);
  font-size: .76rem;
  font-weight: 900;
}
.pp-pagination {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: .65rem;
  align-items: center;
  margin-top: 1rem;
  padding-top: .85rem;
  border-top: 1px solid rgba(31, 83, 156, .12);
}
.pp-page-numbers {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: .34rem;
}
.pp-page-numbers a,
.pp-page-nav {
  min-width: 38px;
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .45rem .65rem;
  border: 1px solid rgba(31, 83, 156, .18);
  border-radius: 10px;
  background: #fff;
  color: #315b96;
  font-size: .72rem;
  font-weight: 900;
  text-decoration: none;
}
.pp-page-numbers a:hover,
.pp-page-nav:hover {
  border-color: rgba(37, 99, 235, .45);
  background: #edf4ff;
}
.pp-page-numbers a.is-current {
  border-color: #2563eb;
  background: linear-gradient(135deg, #1e58bd, #2f70ec);
  color: #fff;
  box-shadow: 0 7px 16px rgba(37, 99, 235, .2);
}
.pp-page-nav.is-disabled {
  opacity: .42;
  pointer-events: none;
}
.pp-page-gap {
  min-width: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #7b8ca3;
  font-weight: 900;
}

@media (max-width: 1080px) {
  .pp-voci-filters {
    grid-template-columns: minmax(0, 1.35fr) minmax(160px, .75fr) minmax(150px, .65fr);
  }
  .pp-voci-filter-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
  }
}

@media (max-width: 700px) {
  .pp-voci-archive { scroll-margin-top: 88px; }
  .pp-voci-filters {
    grid-template-columns: minmax(0, 1fr);
    gap: .62rem;
    padding: .78rem;
  }
  .pp-voci-filter-actions {
    grid-column: auto;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pp-voci-filter-actions .btn {
    width: 100%;
  }
  .pp-pagination {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pp-page-numbers {
    grid-column: 1 / -1;
    grid-row: 1;
  }
  .pp-page-nav {
    width: 100%;
  }
  .pp-voci-filters input,
  .pp-voci-filters select {
    font-size: 16px;
  }
}

@media (max-width: 420px) {
  .pp-page-numbers a {
    min-width: 34px;
    min-height: 34px;
    padding: .35rem .48rem;
  }
  .pp-voci-summary {
    display: grid;
    gap: .12rem;
  }
}

/* Archivio Comune: caricamento AJAX di filtri e paginazione */
.pp-voci-archive {
  position: relative;
}
.pp-voci-results {
  transition: opacity .18s ease, transform .18s ease;
}
.pp-voci-archive.is-loading .pp-voci-results {
  opacity: .42;
  transform: translateY(2px);
  pointer-events: none;
}
.pp-voci-archive.is-loading::after {
  content: "Aggiorno le voci…";
  position: absolute;
  left: 50%;
  top: 58%;
  z-index: 4;
  transform: translate(-50%, -50%);
  min-width: 180px;
  padding: .72rem 1rem;
  border: 1px solid rgba(37, 99, 235, .2);
  border-radius: 999px;
  background: rgba(255, 255, 255, .96);
  color: #17458b;
  box-shadow: 0 14px 34px rgba(18, 54, 105, .16);
  font-size: .76rem;
  font-weight: 900;
  text-align: center;
}
.pp-voci-filters [hidden] {
  display: none !important;
}
@media (max-width: 700px) {
  .pp-voci-archive.is-loading::after {
    position: fixed;
    top: 50%;
  }
}

/* Territori: accesso immediato al profilo pubblico del Comune */
.municipality-profile-primary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    margin: .9rem 0 1rem;
    padding: 1rem 1.1rem;
    border: 1px solid rgba(43, 103, 224, .22);
    border-radius: 1rem;
    background: linear-gradient(135deg, #153F88 0%, #2866E0 100%);
    color: #fff;
    text-decoration: none;
    box-shadow: 0 14px 30px rgba(29, 78, 166, .22);
    transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
.municipality-profile-primary span {
    min-width: 0;
    display: grid;
    gap: .16rem;
}
.municipality-profile-primary small {
    color: #BDEFE0;
    font-size: .66rem;
    line-height: 1.2;
    font-weight: 900;
    letter-spacing: .12em;
}
.municipality-profile-primary strong {
    color: #fff;
    font-size: .98rem;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
.municipality-profile-primary > b {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    width: 2.35rem;
    height: 2.35rem;
    border-radius: 50%;
    background: rgba(255,255,255,.16);
    color: #fff;
    font-size: 1.35rem;
}
.municipality-profile-primary:hover,
.municipality-profile-primary:focus-visible {
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 18px 38px rgba(29, 78, 166, .3);
    filter: saturate(1.06);
}
.municipality-profile-primary:focus-visible {
    outline: 3px solid rgba(248, 194, 62, .65);
    outline-offset: 3px;
}

@media (max-width: 767.98px) {
    .municipality-profile-primary {
        margin-top: .72rem;
        padding: .88rem .9rem;
        border-radius: .9rem;
    }
    .municipality-profile-primary strong { font-size: .9rem; }
    .municipality-profile-primary > b {
        width: 2.1rem;
        height: 2.1rem;
        font-size: 1.15rem;
    }
}

/* ================================================================
   RECUPERO SANTUARIO — Libro, Compagnia compatta e altezza fluida
   Mantiene il pannello leggibile senza tagliare i contenuti.
   ================================================================ */
.crus-duo-compact {
  grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
}
.crus-duo-compact .crus-pane {
  padding: .78rem .9rem;
}
.crus-duo-compact .crus-pane-h {
  margin-bottom: .45rem;
}
.crus-compagnia-riga {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .7rem;
  padding: .45rem .55rem;
  border-radius: 10px;
  background: #F7FAFF;
  color: var(--vision-ink);
  text-decoration: none;
}
.crus-compagnia-riga span:first-child {
  min-width: 0;
  display: grid;
  gap: .1rem;
}
.crus-compagnia-riga b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .8rem;
}
.crus-compagnia-riga small {
  color: var(--vision-muted);
  font-size: .68rem;
}
.crus-compagnia-riga > span:last-child {
  color: var(--vision-blue);
  font-size: 1.2rem;
  font-weight: 900;
}
.crus-compagnia-riga:hover {
  background: #EEF5FF;
  color: var(--vision-ink);
}

.crus-libro {
  min-height: 0;
  justify-content: space-between;
  overflow: hidden;
  position: relative;
  padding: 1.05rem 1.15rem;
  background: linear-gradient(145deg, #FFFDF7 0%, #FFF4D4 58%, #F7E5B0 100%);
  border-color: rgba(201, 138, 30, .42);
  box-shadow: 0 12px 28px rgba(122, 90, 22, .11);
}
.crus-libro::after {
  content: '';
  position: absolute;
  width: 210px;
  height: 210px;
  right: -90px;
  bottom: -105px;
  border-radius: 50%;
  border: 28px solid rgba(242, 199, 92, .16);
  pointer-events: none;
}
.crus-libro-intro {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: .8rem;
  position: relative;
  z-index: 1;
}
.crus-libro-ico {
  width: 52px;
  height: 52px;
  border-radius: 15px;
  display: grid;
  place-items: center;
  font-size: 1.7rem;
  background: linear-gradient(135deg, #F2C75C, #E0A82B);
  box-shadow: 0 8px 18px rgba(201, 138, 30, .26);
}
.crus-libro-kicker {
  margin: 0 0 .12rem;
  color: #9A6914;
  font-size: .68rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.crus-libro h2 {
  margin: 0;
  color: #3B2A05;
  font-size: 1.35rem;
  font-weight: 950;
}
.crus-libro-intro p:last-child {
  margin: .3rem 0 0;
  max-width: 580px;
  color: #6F5520;
  font-size: .78rem;
  line-height: 1.45;
}
.crus-libro-azioni {
  display: grid;
  gap: .48rem;
  margin-top: .8rem;
  position: relative;
  z-index: 1;
}
.crus-libro-btn {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: .65rem;
  min-height: 50px;
  padding: .55rem .7rem;
  border-radius: 12px;
  border: 1.5px solid rgba(122, 90, 22, .17);
  background: rgba(255, 255, 255, .72);
  text-decoration: none;
  color: #3B2A05;
  transition: transform .14s, box-shadow .14s, background .14s;
}
.crus-libro-btn > span:first-child {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  color: #9A6914;
  background: #FFF0BE;
}
.crus-libro-btn > span:first-child svg {
  width: 18px;
  height: 18px;
}
.crus-libro-btn > span:nth-child(2) {
  min-width: 0;
  display: grid;
  gap: .05rem;
}
.crus-libro-btn b {
  font-size: .82rem;
}
.crus-libro-btn small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #7A6540;
  font-size: .68rem;
}
.crus-libro-btn > span:last-child {
  color: #9A6914;
  font-size: 1rem;
  font-weight: 900;
}
.crus-libro-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 7px 17px rgba(122, 90, 22, .12);
  background: #fff;
  color: #3B2A05;
}
.crus-libro-btn-main {
  border: 0;
  color: #fff;
  background: linear-gradient(135deg, #123F78, #2563EB);
  box-shadow: 0 9px 20px rgba(37, 99, 235, .24);
}
.crus-libro-btn-main > span:first-child {
  color: #fff;
  background: rgba(255, 255, 255, .16);
}
.crus-libro-btn-main small,
.crus-libro-btn-main > span:last-child {
  color: #D9E8FF;
}
.crus-libro-btn-main:hover {
  color: #fff;
  background: linear-gradient(135deg, #0E376E, #1D4ED8);
}
.crus-libro-nota {
  margin: .7rem 0 0;
  position: relative;
  z-index: 1;
  color: #7A5A16;
  font-size: .68rem;
  line-height: 1.35;
}

/* Il Santuario deve crescere con Libro e contenuti, senza altezza fissa. */
.crus-grid {
  height: auto;
  min-height: 0;
  align-items: start;
}
.crus-side {
  grid-template-rows: auto auto auto;
  min-height: 0;
}
.crus-libro {
  overflow: visible;
}

@media (min-width: 1101px) {
  .crus-voce {
    min-height: 560px;
  }
}

@media (max-width: 1100px) {
  .crus-grid {
    height: auto;
    min-height: 0;
  }
  .crus-side {
    grid-template-rows: auto;
  }
  .crus-libro {
    min-height: 0;
  }
}

@media (max-width: 640px) {
  .crus-duo-compact {
    grid-template-columns: 1fr;
  }
  .crus-libro {
    padding: 1rem;
  }
  .crus-libro-intro {
    grid-template-columns: 44px minmax(0, 1fr);
    gap: .65rem;
  }
  .crus-libro-ico {
    width: 44px;
    height: 44px;
    font-size: 1.4rem;
  }
  .crus-libro h2 {
    font-size: 1.2rem;
  }
  .crus-libro-btn {
    min-height: 54px;
  }
}

/* ================================================================
   ACCOUNT — percorso guidato per i nuovi Custodi
   ================================================================ */
.crus-start {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at 100% 0, rgba(37, 99, 235, .11), transparent 36%),
    linear-gradient(145deg, #F7FAFF, #FFFFFF 58%, #FFF9EA);
  border: 1.5px solid rgba(37, 99, 235, .18);
  border-radius: 18px;
  padding: 1.15rem;
  box-shadow: 0 12px 30px rgba(11, 31, 58, .07);
}
.crus-start::after {
  content: "";
  position: absolute;
  width: 180px;
  height: 180px;
  right: -80px;
  bottom: -105px;
  border: 22px solid rgba(242, 199, 92, .12);
  border-radius: 50%;
  pointer-events: none;
}
.crus-start-head {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.2rem;
  margin-bottom: 1rem;
}
.crus-start-kicker {
  margin: 0 0 .2rem;
  color: #B47712;
  font-size: .67rem;
  font-weight: 900;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.crus-start-head h2 {
  margin: 0;
  color: var(--vision-ink);
  font-size: clamp(1.2rem, 2vw, 1.65rem);
  line-height: 1.12;
  font-weight: 900;
}
.crus-start-head > div:first-child > p:last-child {
  max-width: 820px;
  margin: .42rem 0 0;
  color: var(--vision-muted);
  font-size: .86rem;
  line-height: 1.5;
}
.crus-start-progress {
  display: flex;
  align-items: center;
  min-width: 290px;
  flex-shrink: 0;
}
.crus-start-progress span {
  display: inline-flex;
  align-items: center;
  gap: .42rem;
  color: #76869C;
  font-size: .72rem;
  font-weight: 800;
  white-space: nowrap;
}
.crus-start-progress span b {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #E7EDF5;
  color: #6D7D91;
  font-size: .74rem;
}
.crus-start-progress i {
  width: 46px;
  height: 2px;
  margin: 0 .45rem;
  background: #DDE5EF;
}
.crus-start-progress span.is-current { color: var(--vision-blue); }
.crus-start-progress span.is-current b {
  color: #fff;
  background: var(--vision-blue);
  box-shadow: 0 0 0 5px rgba(37, 99, 235, .11);
}
.crus-start-progress span.is-done { color: #0B7A55; }
.crus-start-progress span.is-done b { color: #fff; background: #0B7A55; }
.crus-start-progress span.is-done b::before { content: "✓"; }
.crus-start-progress span.is-done b { font-size: 0; }
.crus-start-progress span.is-done b::before { font-size: .82rem; }
.crus-start-progress span.is-locked { color: #9AA6B5; }

.crus-start-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.25fr);
  gap: .85rem;
}
.crus-start-grid--three {
  grid-template-columns: minmax(230px, .8fr) minmax(350px, 1.25fr) minmax(270px, .95fr);
}
.crus-start-step {
  min-width: 0;
  padding: 1rem;
  border: 1.5px solid rgba(16, 37, 63, .1);
  border-radius: 15px;
  background: rgba(255, 255, 255, .9);
  transition: border-color .2s, box-shadow .2s, transform .2s;
}
.crus-start-step.is-active {
  border-color: rgba(37, 99, 235, .4);
  box-shadow: 0 8px 22px rgba(37, 99, 235, .08);
}
.crus-start-step.is-complete {
  border-color: rgba(11, 122, 85, .25);
  background: linear-gradient(145deg, #FFFFFF, #F1FBF7);
}
.crus-start-step.is-locked {
  background: rgba(244, 247, 251, .82);
  border-style: dashed;
}
.crus-start-step.is-highlighted {
  border-color: #2563EB;
  box-shadow: 0 0 0 5px rgba(37, 99, 235, .12), 0 12px 24px rgba(37, 99, 235, .12);
  transform: translateY(-2px);
}
.crus-start-found-company {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.crus-start-found-company::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 170px;
  height: 170px;
  right: -82px;
  bottom: -92px;
  border: 24px solid rgba(242, 199, 92, .18);
  border-radius: 50%;
  pointer-events: none;
}
.crus-start-found-company.is-active {
  border-color: rgba(183, 119, 18, .58);
  background:
    radial-gradient(circle at 100% 0, rgba(242, 199, 92, .24), transparent 38%),
    linear-gradient(145deg, #FFFDF7, #FFF6D9);
  box-shadow: 0 0 0 5px rgba(242, 199, 92, .13), 0 14px 30px rgba(150, 96, 12, .14);
}
.crus-start-found-company.is-highlighted {
  border-color: rgba(183, 119, 18, .7);
  box-shadow: 0 0 0 5px rgba(242, 199, 92, .16), 0 16px 34px rgba(150, 96, 12, .18);
}
.crus-start-step-title {
  display: flex;
  align-items: center;
  gap: .72rem;
  margin-bottom: .7rem;
}
.crus-start-num {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #fff;
  background: linear-gradient(135deg, #123F78, #2563EB);
  font-size: .95rem;
  font-weight: 900;
  box-shadow: 0 7px 16px rgba(37, 99, 235, .18);
}
.crus-start-num--found {
  background: linear-gradient(135deg, #9A6413, #D99A25);
  box-shadow: 0 7px 16px rgba(183, 119, 18, .25);
}
.crus-start-num--found svg {
  width: 19px;
  height: 19px;
}
.crus-start-step.is-complete .crus-start-num {
  background: linear-gradient(135deg, #086B4A, #0B9A69);
  box-shadow: 0 7px 16px rgba(11, 122, 85, .16);
}
.crus-start-step.is-locked .crus-start-num {
  color: #738399;
  background: #E4EAF2;
  box-shadow: none;
}
.crus-start-step-title p {
  margin: 0 0 .08rem;
  color: #7D8CA0;
  font-size: .63rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.crus-start-step-title h3 {
  margin: 0;
  color: var(--vision-ink);
  font-size: 1.02rem;
  font-weight: 900;
}
.crus-start-copy {
  margin: 0 0 .75rem;
  color: var(--vision-muted);
  font-size: .79rem;
  line-height: 1.45;
}
.crus-start-copy b { color: var(--vision-ink); }
.crus-start-comune-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .55rem;
  align-items: end;
}
.crus-start-comune-form label {
  grid-column: 1 / -1;
  color: var(--vision-ink);
  font-size: .72rem;
  font-weight: 800;
}
.crus-start-comune-form select {
  width: 100%;
  min-height: 44px;
  border: 1.5px solid rgba(16, 37, 63, .17);
  border-radius: 10px;
  padding: .55rem .7rem;
  background: #fff;
  color: var(--vision-ink);
  font: inherit;
  font-size: .83rem;
}
.crus-start-main-btn {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .38rem;
  white-space: nowrap;
}
.crus-start-main-btn svg { width: 16px; height: 16px; }
.crus-start-note {
  margin: .58rem 0 0;
  color: #7D8CA0;
  font-size: .68rem;
  line-height: 1.4;
}
.crus-start-choice {
  display: flex;
  align-items: center;
  gap: .72rem;
  padding: .78rem;
  border-radius: 12px;
  background: #EFFAF5;
  border: 1px solid rgba(11, 122, 85, .14);
}
.crus-start-choice-icon {
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #0B7A55;
  background: #DDF4EA;
}
.crus-start-choice-icon svg { width: 20px; height: 20px; }
.crus-start-choice small {
  display: block;
  margin-bottom: .08rem;
  color: #698173;
  font-size: .67rem;
}
.crus-start-choice strong {
  display: block;
  color: var(--vision-ink);
  font-size: .98rem;
}
.crus-start-choice em {
  color: var(--vision-muted);
  font-size: .75rem;
  font-style: normal;
}
.crus-start-locked-message,
.crus-start-empty-company {
  display: flex;
  align-items: flex-start;
  gap: .72rem;
  padding: .85rem;
  border-radius: 12px;
  background: #EEF2F7;
  color: #748398;
}
.crus-start-locked-message > span { font-size: 1.15rem; }
.crus-start-locked-message b,
.crus-start-empty-company b {
  display: block;
  margin-bottom: .15rem;
  color: var(--vision-ink);
  font-size: .82rem;
}
.crus-start-locked-message p,
.crus-start-empty-company p {
  margin: 0;
  font-size: .73rem;
  line-height: 1.45;
}
.crus-start-empty-company > span {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #B47712;
  background: #FFF0C5;
}
.crus-start-empty-company svg { width: 19px; height: 19px; }
.crus-start-secondary-btn { margin-top: .65rem; }

.crus-start-found-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-height: 190px;
}
.crus-start-found-badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  margin-bottom: .55rem;
  padding: .25rem .58rem;
  border: 1px solid rgba(183, 119, 18, .24);
  border-radius: 999px;
  color: #85560F;
  background: rgba(255, 244, 205, .92);
  font-size: .62rem;
  font-weight: 900;
  letter-spacing: .055em;
  text-transform: uppercase;
}
.crus-start-found-content > p {
  margin: 0 0 .75rem;
  color: #6F624C;
  font-size: .78rem;
  line-height: 1.48;
}
.crus-start-found-place {
  width: 100%;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  align-items: center;
  gap: .05rem .55rem;
  margin-bottom: .8rem;
  padding: .62rem .68rem;
  border: 1px solid rgba(183, 119, 18, .18);
  border-radius: 11px;
  background: rgba(255, 255, 255, .72);
}
.crus-start-found-place svg {
  grid-row: 1 / 3;
  width: 18px;
  height: 18px;
  color: #B47712;
}
.crus-start-found-place span {
  color: #8A7555;
  font-size: .61rem;
  font-weight: 800;
  letter-spacing: .045em;
  text-transform: uppercase;
}
.crus-start-found-place b {
  overflow: hidden;
  color: var(--vision-ink);
  font-size: .8rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.crus-start-found-place small {
  color: var(--vision-muted);
  font-size: .65rem;
}
.crus-start-found-btn {
  width: 100%;
  min-height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  margin-top: auto;
  padding: .62rem .82rem;
  border: 1px solid #98620F;
  border-radius: 11px;
  color: #fff;
  background: linear-gradient(135deg, #9A6413, #D99A25);
  box-shadow: 0 9px 18px rgba(154, 100, 19, .22);
  font-size: .8rem;
  font-weight: 900;
  text-align: center;
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
.crus-start-found-btn svg {
  width: 17px;
  height: 17px;
}
.crus-start-found-btn:hover,
.crus-start-found-btn:focus-visible {
  color: #fff;
  filter: brightness(1.05);
  box-shadow: 0 12px 22px rgba(154, 100, 19, .28);
  transform: translateY(-2px);
  outline: none;
}
.crus-start-found-btn:active {
  transform: translateY(0);
}
.crus-start-found-note {
  width: 100%;
  margin-top: .42rem;
  color: #8A7555;
  font-size: .62rem;
  text-align: center;
}

.crus-start-compagnie {
  display: grid;
  gap: .48rem;
  max-height: 272px;
  overflow-y: auto;
  padding-right: .2rem;
}
.crus-start-compagnia {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .65rem .7rem;
  border: 1px solid rgba(16, 37, 63, .1);
  border-radius: 12px;
  background: #F8FAFD;
}
.crus-start-compagnia:hover { border-color: rgba(37, 99, 235, .28); background: #fff; }
.crus-start-compagnia-main {
  display: flex;
  align-items: center;
  gap: .62rem;
  min-width: 0;
}
.crus-start-vessillo {
  width: 40px;
  height: 40px;
  flex: 0 0 40px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #1E56B5;
  background: #E7EFFF;
}
.crus-start-vessillo svg { width: 19px; height: 19px; }
.crus-start-compagnia-main > div { min-width: 0; }
.crus-start-compagnia-main strong {
  display: block;
  overflow: hidden;
  color: var(--vision-ink);
  font-size: .84rem;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.crus-start-compagnia-main small {
  display: block;
  margin-top: .03rem;
  color: var(--vision-muted);
  font-size: .65rem;
}
.crus-start-compagnia-stats {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem .65rem;
  margin-top: .3rem;
  color: #6B7B90;
  font-size: .63rem;
}
.crus-start-compagnia-stats b { color: var(--vision-ink); }
.crus-start-compagnia-action { flex-shrink: 0; }
.crus-start-compagnia-action form { margin: 0; }
.crus-start-status {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: .3rem .62rem;
  border-radius: 999px;
  color: #66778E;
  background: #E9EEF5;
  font-size: .66rem;
  font-weight: 800;
  white-space: nowrap;
}
.crus-start-status.is-waiting { color: #855B0E; background: #FFF0C5; }

/* Richiesta di ingresso pendente: stato e annullamento, condivisi tra Account e Compagnie. */
.compagnia-richiesta-pendente {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: .45rem;
  flex-wrap: wrap;
}
.compagnia-richiesta-annulla {
  display: inline-flex;
  margin: 0;
}
.compagnia-richiesta-annulla-btn {
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .32rem;
  padding: .34rem .65rem;
  border: 1px solid rgba(181, 52, 52, .25);
  border-radius: 999px;
  color: #9E3030;
  background: rgba(255, 247, 247, .95);
  font: inherit;
  font-size: .67rem;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: color .18s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.compagnia-richiesta-annulla-btn > span {
  width: 16px;
  height: 16px;
  display: inline-grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: #B84646;
  font-size: .78rem;
  font-weight: 900;
  line-height: 1;
}
.compagnia-richiesta-annulla-btn:hover,
.compagnia-richiesta-annulla-btn:focus-visible {
  color: #7F2020;
  border-color: rgba(181, 52, 52, .45);
  background: #FFF0F0;
  box-shadow: 0 5px 13px rgba(126, 32, 32, .1);
  transform: translateY(-1px);
  outline: none;
}
.compagnia-richiesta-annulla-btn:active {
  transform: translateY(0);
  box-shadow: none;
}
.sqp-comune-richiesta-actions {
  margin-left: auto;
}
.sqp-comune-richiesta-actions .sqp-comune-stato {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: .3rem .62rem;
  border-radius: 999px;
  color: #855B0E;
  background: #FFF0C5;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}

/* Select2 locale: aspetto coerente con il percorso iniziale. */
.crus-start-comune-form .select2-container { min-width: 0; }
.crus-start-comune-form .select2-container .select2-selection--single {
  height: 44px;
  border: 1.5px solid rgba(16, 37, 63, .17);
  border-radius: 10px;
  background: #fff;
}
.crus-start-comune-form .select2-container--default.select2-container--focus .select2-selection--single,
.crus-start-comune-form .select2-container--default.select2-container--open .select2-selection--single {
  border-color: var(--vision-blue);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .1);
}
.crus-start-comune-form .select2-container .select2-selection--single .select2-selection__rendered {
  height: 42px;
  line-height: 42px;
  padding-left: .72rem;
  padding-right: 2.2rem;
  color: var(--vision-ink);
  font-size: .82rem;
}
.crus-start-comune-form .select2-container .select2-selection--single .select2-selection__placeholder { color: #8795A8; }
.crus-start-comune-form .select2-container .select2-selection--single .select2-selection__arrow { height: 42px; right: .45rem; }

/* Riepiloghi compatti nella colonna destra. */
.crus-card-empty {
  display: flex;
  align-items: flex-start;
  gap: .62rem;
}
.crus-card-empty-icon {
  width: 36px;
  height: 36px;
  flex: 0 0 36px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  color: #B47712;
  background: #FFF0C5;
}
.crus-card-empty-icon svg { width: 18px; height: 18px; }
.crus-card-empty b { display: block; color: var(--vision-ink); font-size: .78rem; }
.crus-card-empty p { margin: .15rem 0 0; color: var(--vision-muted); font-size: .7rem; line-height: 1.4; }
.crus-card-empty-btn { align-self: flex-start; margin-top: .62rem; }
.crus-compagnia-compact.is-empty { background: linear-gradient(145deg, #FFFFFF, #F6F9FF); }
.crus-compagnia-compact.is-empty .crus-vuoto b { color: var(--vision-blue); }
.crus-mini-cta {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  margin-top: .4rem;
  color: var(--vision-blue);
  font-size: .71rem;
  font-weight: 800;
  text-decoration: none;
}
.crus-mini-cta:hover { color: #123F78; text-decoration: underline; }

@media (max-width: 1100px) {
  .crus-start-head { align-items: flex-start; }
  .crus-start-grid { grid-template-columns: 1fr 1fr; }
  .crus-start-grid--three { grid-template-columns: minmax(0, .9fr) minmax(0, 1.2fr) minmax(0, 1fr); }
}

@media (max-width: 900px) {
  .crus-start-grid--three { grid-template-columns: 1fr 1fr; }
  .crus-start-grid--three .crus-start-found-company { grid-column: 1 / -1; }
  .crus-start-grid--three .crus-start-found-content { min-height: 0; }
}

@media (max-width: 760px) {
  .crus-start { padding: .9rem; border-radius: 16px; }
  .crus-start-head { flex-direction: column; gap: .8rem; }
  .crus-start-progress { width: 100%; min-width: 0; }
  .crus-start-progress i { flex: 1; width: auto; }
  .crus-start-grid { grid-template-columns: 1fr; }
  .crus-start-grid--three .crus-start-found-company { grid-column: auto; }
  .crus-start-comune-form { grid-template-columns: 1fr; }
  .crus-start-comune-form label { grid-column: auto; }
  .crus-start-main-btn { width: 100%; }
  .crus-start-compagnia { align-items: flex-start; flex-direction: column; }
  .crus-start-compagnia-action { width: 100%; }
  .crus-start-compagnia-action .btn,
  .crus-start-compagnia-action form,
  .crus-start-compagnia-action form .btn { width: 100%; }
  .crus-start-status { width: 100%; justify-content: center; }
  .crus-start-compagnia-action .compagnia-richiesta-pendente { width: 100%; }
  .crus-start-compagnia-action .compagnia-richiesta-annulla,
  .crus-start-compagnia-action .compagnia-richiesta-annulla-btn { width: 100%; }
}

@media (max-width: 640px) {
  .sqp-comune-richiesta-actions {
    width: 100%;
    margin-left: 0;
    justify-content: flex-start;
  }
}

/* Profilo Comune: l'intera riga della Compagnia è un pulsante accessibile. */
.pp-comp-riga.pp-comp-riga--link {
  display: block;
  padding: 0;
  overflow: hidden;
}
.pp-comp-button {
  display: flex;
  align-items: center;
  gap: .8rem;
  width: 100%;
  padding: .7rem .85rem;
  color: inherit;
  text-decoration: none;
  transition: background-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.pp-comp-button:hover,
.pp-comp-button:focus-visible {
  background: #F1F7FF;
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(16, 37, 63, .09);
  outline: none;
}
.pp-comp-riga.is-prima .pp-comp-button:hover,
.pp-comp-riga.is-prima .pp-comp-button:focus-visible {
  background: linear-gradient(90deg, #FFF8DF, #F8FBFF 62%);
}
.pp-comp-button .pp-comp-nome {
  margin-right: auto;
}
.pp-comp-button:hover .pp-comp-nome b,
.pp-comp-button:focus-visible .pp-comp-nome b {
  color: var(--vision-blue);
}
.pp-comp-go {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  background: var(--vision-blue);
  color: #fff;
}
.pp-comp-go .icn {
  width: 1rem;
  height: 1rem;
}
@media (max-width: 767px) {
  .pp-comp-riga.pp-comp-riga--link { display: block; }
  .pp-comp-button {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: .55rem .7rem;
  }
  .pp-comp-button .pp-comp-pos { grid-row: 1 / span 2; }
  .pp-comp-button .pp-comp-nome { margin-right: 0; }
  .pp-comp-button .pp-comp-num { min-width: 52px; }
  .pp-comp-button .pp-comp-num--oro { grid-column: 3; }
  .pp-comp-button .pp-comp-go {
    grid-column: 1 / -1;
    width: 100%;
    height: 2.15rem;
    border-radius: 10px;
  }
}

/* =========================================================
   Profilo Comune: griglia simmetrica e filtri richiudibili
   ========================================================= */
.pp-comune-content{
  background:
    radial-gradient(circle at 10% 8%,rgba(37,99,235,.08),transparent 28%),
    radial-gradient(circle at 92% 26%,rgba(15,159,117,.08),transparent 25%),
    linear-gradient(180deg,#f5f8fc 0%,#edf4fa 100%);
}
.pp-comune-layout{
  display:grid;
  gap:1.25rem;
}
.pp-overview-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:1.25rem;
  align-items:stretch;
}
.pp-overview-card{
  min-width:0;
  height:100%;
  margin:0;
}
.pp-overview-card--territorio,
.pp-overview-card--community{grid-column:span 7}
.pp-overview-card--ranking,
.pp-overview-card--book{grid-column:span 5}
.pp-overview-card--territorio{
  background:linear-gradient(145deg,#fff 0%,#eef7ff 100%);
  border-color:rgba(37,99,235,.17);
}
.pp-overview-card--ranking{
  background:linear-gradient(145deg,#fff 0%,#f5f2ff 100%);
  border-color:rgba(124,58,237,.14);
}
.pp-overview-card--community{
  background:linear-gradient(145deg,#fff 0%,#effaf5 100%);
  border-color:rgba(15,159,117,.17);
}
.pp-overview-card--book{
  align-content:center;
  background:linear-gradient(145deg,#fffdf7 0%,#fff1c9 100%);
}
.pp-public-content{
  display:grid;
  gap:1.25rem;
}
.pp-content-card{
  min-width:0;
  margin:0;
  padding:1.25rem;
  border:1px solid rgba(16,37,63,.1);
  border-radius:20px;
  background:#fff;
  box-shadow:0 14px 34px rgba(11,31,58,.08);
}
.pp-voci-archive.pp-content-card{
  overflow:hidden;
  background:linear-gradient(180deg,#fff 0%,#f8fbff 100%);
}
.pp-audio-block.pp-content-card{
  margin-top:0;
  background:linear-gradient(145deg,#f8fffd 0%,#eafaf4 100%);
}
.pp-filter-disclosure{
  margin:1rem 0 .85rem;
  border:1px solid rgba(31,83,156,.17);
  border-radius:16px;
  background:#fff;
  box-shadow:0 10px 24px rgba(24,64,116,.07);
  overflow:hidden;
}
.pp-filter-disclosure>summary{
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  min-height:64px;
  padding:.82rem .95rem;
  cursor:pointer;
  background:linear-gradient(125deg,#163f72 0%,#2563a8 62%,#0f8b72 100%);
  color:#fff;
  user-select:none;
}
.pp-filter-disclosure>summary::-webkit-details-marker{display:none}
.pp-filter-disclosure>summary:focus-visible{outline:3px solid rgba(245,197,78,.55);outline-offset:-3px}
.pp-filter-summary-main{display:flex;align-items:center;gap:.72rem;min-width:0}
.pp-filter-summary-main>span:last-child{display:grid;gap:.12rem;min-width:0}
.pp-filter-summary-main strong{color:#fff;font-size:.92rem;font-weight:900}
.pp-filter-summary-main small{color:#dbeafe;font-size:.72rem;line-height:1.35}
.pp-filter-summary-icon{
  width:38px;height:38px;flex:0 0 auto;
  display:grid;place-items:center;
  border-radius:11px;
  background:rgba(255,255,255,.14);
  color:#f7d269;
  font-weight:900;
}
.pp-filter-summary-state{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  color:#fff0a9;
  font-size:.7rem;
  font-weight:900;
  white-space:nowrap;
}
.pp-filter-summary-state:before{content:"Apri filtri"}
.pp-filter-summary-state:after{content:"⌄";font-size:1.05rem;line-height:1;transition:transform .18s ease}
.pp-filter-disclosure[open] .pp-filter-summary-state:before{content:"Chiudi filtri"}
.pp-filter-disclosure[open] .pp-filter-summary-state:after{transform:rotate(180deg)}
.pp-filter-disclosure .pp-voci-filters{
  margin:0;
  border:0;
  border-radius:0;
  box-shadow:none;
}

@media (max-width:1080px){
  .pp-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pp-overview-card--territorio,
  .pp-overview-card--community{grid-column:1/-1}
  .pp-overview-card--ranking,
  .pp-overview-card--book{grid-column:span 1}
}
@media (max-width:700px){
  .pp-comune-content{padding-top:1.15rem;padding-bottom:1.15rem}
  .pp-comune-layout,.pp-overview-grid,.pp-public-content{gap:.85rem}
  .pp-overview-grid{grid-template-columns:minmax(0,1fr)}
  .pp-overview-card--territorio,
  .pp-overview-card--ranking,
  .pp-overview-card--community,
  .pp-overview-card--book{grid-column:auto}
  .pp-overview-card,
  .pp-content-card{padding:.9rem;border-radius:16px}
  .pp-overview-card--territorio{order:1}
  .pp-overview-card--ranking{order:2}
  .pp-overview-card--community{order:3}
  .pp-overview-card--book{order:4}
  .pp-filter-disclosure>summary{align-items:flex-start;padding:.75rem}
  .pp-filter-summary-main small{display:none}
  .pp-filter-summary-state:before{content:"Apri"}
  .pp-filter-disclosure[open] .pp-filter-summary-state:before{content:"Chiudi"}
  .pp-filter-summary-icon{width:34px;height:34px;border-radius:10px}
  .pp-territorio-card .pp-mappa{height:240px}
  .pp-content-card .pp-section-head{display:grid;gap:.5rem}
}
@media (max-width:420px){
  .pp-overview-card,
  .pp-content-card{padding:.78rem}
  .pp-filter-summary-state{font-size:.64rem}
  .pp-territorio-card .pp-mappa{height:215px}
}

/* ================================================================
   Partecipa — azioni sempre disponibili e HUD con comando accessibile
   ================================================================ */
.contrib-nuova-inline--sempre {
  display: flex !important;
}

.pl-mobile-tab,
.pl-mobile-panel-head,
.pl-mobile-panel-backdrop {
  display: none;
}

/* Il pulsante di apertura del HUD resta fuori dall'area scorrevole. */
.p-hud {
  display: block;
  padding: 0;
  overflow: visible;
  pointer-events: auto;
}
.p-hud-body {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  padding: .65rem clamp(1rem, 4vw, 2.4rem);
}
.p-hud-toggle,
.p-hud-body button,
.p-hud-body a {
  touch-action: manipulation;
}

/* ========================================================================
   PARTECIPA — percorso di lavoro compatto durante la traduzione del corpus
   ======================================================================== */
.qp-drill-gioco--compatto {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: .65rem;
    margin: .15rem 0 .85rem;
    padding: .55rem .65rem;
    border: 1px solid rgba(37, 99, 235, .13);
    border-radius: 15px;
    background: linear-gradient(135deg, rgba(239, 246, 255, .94), rgba(248, 250, 252, .98));
    box-shadow: 0 8px 22px rgba(16, 37, 63, .055);
}

.qp-indietro--compatto {
    align-self: stretch;
    min-height: 44px;
    padding: .55rem .72rem;
    border: 0;
    border-radius: 11px;
    background: #fff;
    box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .17);
    color: var(--vision-blue);
    font-size: .72rem;
    white-space: nowrap;
}

.qp-indietro--compatto:hover {
    background: #eef5ff;
    box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .35);
    transform: none;
}

.qp-selezione-lavoro {
    display: flex;
    align-items: stretch;
    gap: .45rem;
    min-width: 0;
}

.qp-selezione-chip {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        "label action"
        "name action";
    align-items: center;
    column-gap: .65rem;
    min-width: 0;
    min-height: 44px;
    padding: .48rem .68rem;
    border-radius: 11px;
    border: 1px solid rgba(37, 99, 235, .16);
    background: #fff;
    color: var(--vision-ink);
    text-decoration: none;
}

.qp-selezione-chip small {
    grid-area: label;
    display: block;
    margin: 0 0 .04rem;
    color: var(--vision-muted);
    font-size: .55rem;
    font-weight: 900;
    line-height: 1;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.qp-selezione-chip b {
    grid-area: name;
    min-width: 0;
    overflow: hidden;
    color: var(--vision-ink);
    font-size: .82rem;
    font-weight: 900;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qp-selezione-chip--categoria {
    flex: 1 1 52%;
    background: linear-gradient(145deg, #ffffff, #edf5ff);
}

.qp-selezione-chip--categoria:hover {
    border-color: rgba(37, 99, 235, .4);
    box-shadow: 0 7px 17px rgba(37, 99, 235, .1);
    color: var(--vision-ink);
}

.qp-selezione-chip--sottocategoria {
    flex: 1 1 48%;
    border-color: rgba(5, 150, 105, .2);
    background: linear-gradient(145deg, #ffffff, #edfbf5);
}

.qp-selezione-azione {
    grid-area: action;
    align-self: center;
    padding: .28rem .48rem;
    border-radius: 999px;
    background: rgba(37, 99, 235, .1);
    color: var(--vision-blue);
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.qp-selezione-sep {
    align-self: center;
    flex: 0 0 auto;
    color: rgba(16, 37, 63, .35);
    font-size: 1.25rem;
    font-weight: 900;
}

/* La sottocategoria è il dato operativo principale: le diamo più spazio
   e permettiamo al nome di andare su due righe senza essere troncato. */
.qp-selezione-chip--categoria {
    flex-basis: 42%;
}

.qp-selezione-chip--sottocategoria {
    flex-basis: 58%;
    border-width: 2px;
    border-color: rgba(5, 150, 105, .34);
    background: linear-gradient(145deg, #ffffff, #dff8ee);
    box-shadow: 0 6px 16px rgba(5, 150, 105, .08);
}

.qp-selezione-chip--sottocategoria small {
    color: #08765c;
}

.qp-selezione-chip--sottocategoria b {
    overflow: visible;
    color: #075f4c;
    line-height: 1.18;
    text-overflow: clip;
    white-space: normal;
    overflow-wrap: anywhere;
}

@media (max-width: 767.98px) {
    .qp-drill-gioco--compatto {
        grid-template-columns: 1fr;
        gap: .42rem;
        margin: .05rem 0 .65rem;
        padding: .45rem;
        border-radius: 13px;
    }

    .qp-indietro--compatto {
        justify-self: start;
        min-height: 36px;
        padding: .42rem .62rem;
        font-size: .66rem;
    }

    /* Niente scorrimento orizzontale: categoria e sottocategoria restano
       entrambe visibili, con più spazio riservato alla sottocategoria. */
    .qp-selezione-lavoro {
        display: grid;
        grid-template-columns: minmax(98px, .72fr) minmax(0, 1.28fr);
        align-items: stretch;
        gap: .35rem;
        overflow: visible;
        padding-bottom: 0;
    }

    .qp-selezione-chip {
        width: auto;
        min-width: 0;
        min-height: 46px;
        padding: .44rem .56rem;
    }

    .qp-selezione-chip--categoria {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "label"
            "name";
    }

    .qp-selezione-chip--categoria .qp-selezione-azione {
        display: none;
    }

    .qp-selezione-chip b {
        font-size: .74rem;
    }

    .qp-selezione-chip--categoria b {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .qp-selezione-chip--sottocategoria b {
        display: -webkit-box;
        overflow: hidden;
        font-size: .79rem;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        line-clamp: 2;
    }

    .qp-selezione-chip small,
    .qp-selezione-azione {
        font-size: .52rem;
    }

    .qp-selezione-sep {
        display: none;
    }
}

@media (max-width: 359.98px) {
    .qp-selezione-lavoro {
        grid-template-columns: minmax(84px, .65fr) minmax(0, 1.35fr);
    }

    .qp-selezione-chip {
        padding: .4rem .48rem;
    }
}

/* ========================================================================
   PARTECIPA — correzione mobile percorso selezionato
   Categoria e sottocategoria a tutta larghezza, senza troncamenti.
   ======================================================================== */
@media (max-width: 767.98px) {
    .qp-drill-gioco--compatto,
    .qp-selezione-lavoro,
    .qp-selezione-chip {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }

    .qp-drill-gioco--compatto {
        overflow: visible;
    }

    .qp-selezione-lavoro {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: .4rem;
    }

    .qp-selezione-chip--categoria,
    .qp-selezione-chip--sottocategoria {
        min-width: 0;
        flex-basis: auto;
    }

    .qp-selezione-chip--categoria b,
    .qp-selezione-chip--sottocategoria b {
        display: block;
        overflow: visible;
        white-space: normal;
        text-overflow: clip;
        overflow-wrap: anywhere;
        word-break: normal;
        -webkit-box-orient: initial;
        -webkit-line-clamp: initial;
        line-clamp: initial;
    }
}


/* ========================================================================
   PARTECIPA — una frase per volta e pannello azioni collassabile
   ======================================================================== */
.contrib-guida {
    position: relative;
}
.contrib-guida-toggle {
    position: absolute;
    top: .75rem;
    right: .8rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: .38rem;
    min-height: 36px;
    padding: .45rem .72rem;
    border: 1px solid rgba(37, 99, 235, .18);
    border-radius: 999px;
    background: rgba(255,255,255,.9);
    color: var(--vision-blue);
    font-size: .72rem;
    font-weight: 800;
    cursor: pointer;
}
.contrib-guida-toggle-open { display: none; }
.contrib-guida.is-collapsed {
    min-height: 58px;
    padding: .65rem 1rem;
}
.contrib-guida.is-collapsed .contrib-guida-corpo { display: none; }
.contrib-guida.is-collapsed .contrib-guida-toggle {
    position: static;
    width: 100%;
    justify-content: space-between;
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(239,246,255,.98), rgba(255,255,255,.98));
}
.contrib-guida.is-collapsed .contrib-guida-toggle-open { display: inline; }
.contrib-guida.is-collapsed .contrib-guida-toggle-close { display: none; }
.contrib-guida.is-collapsed .contrib-guida-toggle > span:last-child { transform: rotate(-90deg); }

#quest-grid {
    grid-template-columns: minmax(0, 1fr) !important;
}
.quest-post-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
    gap: .75rem;
    margin-top: 1rem;
}
.quest-post-actions .btn {
    min-height: 48px;
    justify-content: center;
    white-space: normal;
    text-align: center;
}
.quest-add-missing {
    border: 0;
    color: #fff;
    background: linear-gradient(135deg, #7c3aed, #5b21b6 64%, #42169a);
    box-shadow: 0 10px 24px rgba(91,33,182,.24);
}
.quest-add-missing:hover,
.quest-add-missing:focus-visible {
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 14px 28px rgba(91,33,182,.3);
}
@media (max-width: 767.98px) {
    .contrib-guida-toggle {
        top: .55rem;
        right: .55rem;
    }
    .contrib-guida.is-collapsed { padding: .55rem; }
    .quest-post-actions { grid-template-columns: 1fr; }
    .quest-next { order: 1; }
    .quest-add-missing { order: 2; }
}


/* ========================================================================
   CRUSCOTTO COMPAGNIA — inviti, territori e rifinitura grafica
   Blocco mantenuto separato per non interferire con la pagina Partecipa.
   ======================================================================== */
/* Inviti Compagnia: separazione territoriale, ricerca e blocco account ente. */
.sqp-cerca-custodi {
  display: grid;
  gap: .45rem;
  padding: .75rem;
  border: 1px solid rgba(37, 99, 235, .14);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(37, 99, 235, .055), rgba(14, 165, 233, .035));
}
.sqp-cerca-custodi > label {
  margin: 0;
  font-size: .78rem;
  font-weight: 800;
  color: var(--vision-ink);
}
.sqp-cerca-custodi-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: .4rem;
  align-items: center;
}
.sqp-cerca-custodi input[type="search"] {
  width: 100%;
  min-width: 0;
  height: 40px;
  border: 1px solid rgba(16, 37, 63, .18);
  border-radius: 9px;
  padding: .5rem .7rem;
  background: #fff;
  color: var(--vision-ink);
  font-size: .82rem;
  box-sizing: border-box;
}
.sqp-cerca-custodi input[type="search"]:focus {
  outline: 3px solid rgba(37, 99, 235, .14);
  border-color: rgba(37, 99, 235, .48);
}
.sqp-cerca-custodi > small {
  color: var(--vision-muted);
  font-size: .68rem;
  line-height: 1.35;
}
.sqp-cerca-reset {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 0 .25rem;
  color: #B42318;
  font-size: .72rem;
  font-weight: 800;
  text-decoration: none;
}
.sqp-cerca-reset:hover { text-decoration: underline; }
.sqp-tabs--inviti {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sqp-tabs--inviti .sqp-tab {
  min-width: 0;
  white-space: normal;
  line-height: 1.15;
}
.sqp-candidato.is-locale {
  border-color: rgba(11, 122, 85, .22);
  background: linear-gradient(135deg, rgba(11, 122, 85, .045), #fff 60%);
}
.sqp-candidato-territorio {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: .22rem .55rem;
  background: rgba(16, 37, 63, .07);
  color: var(--vision-muted);
  font-size: .66rem;
  font-weight: 800;
}
.sqp-candidato[hidden] { display: none !important; }

@media (max-width: 560px) {
  .sqp-cerca-custodi-row {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .sqp-cerca-reset {
    grid-column: 1 / -1;
    justify-content: flex-start;
    min-height: auto;
  }
  .sqp-tabs--inviti {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sqp-candidato-invitato {
    flex-wrap: wrap;
    justify-content: flex-start;
  }
  .sqp-candidato-invitato form {
    margin-left: auto;
  }
}

/* ================================================================
   CRUSCOTTO COMPAGNIA — inviti prioritari 2/3, territori 1/3, KPI 12/12
   ================================================================ */
.sqp-cruscotto--tre {
  grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr);
  align-items: stretch;
  gap: 1.15rem;
  padding: 1.15rem;
}
.sqp-cruscotto--tre > .sqp-invita-col {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  min-height: 560px;
  max-height: none;
  overflow: visible;
}
.sqp-cruscotto--tre > .sqp-mappa-wrap {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  min-height: 560px;
  padding: 1rem;
  border: 1px solid rgba(37,99,235,.14);
  border-radius: 16px;
  background: rgba(255,255,255,.86);
  box-shadow: 0 10px 28px rgba(11,31,58,.06);
}
.sqp-cruscotto--tre > .sqp-mappa-wrap .sqp-mappa {
  min-height: 360px;
}
.sqp-cruscotto--tre > .sqp-graf-col {
  grid-column: 1 / -1;
  grid-row: 2;
  min-width: 0;
  padding-top: .2rem;
}
.sqp-cruscotto--tre > .sqp-graf-col .sqp-graf-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Area inviti: il centro operativo del gestore. */
.sqp-cruscotto--tre .sqp-invita-col {
  gap: .9rem;
  padding: 1.05rem;
  border: 1px solid rgba(32,72,167,.24);
  border-radius: 18px;
  background:
    radial-gradient(circle at 100% 0, rgba(56,189,248,.16), transparent 38%),
    linear-gradient(145deg, #F7FAFF 0%, #EEF5FF 54%, #F7FBFF 100%);
  box-shadow: 0 14px 34px rgba(28,67,132,.10);
}
.sqp-invita-col-h {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: .8rem;
  margin: -.15rem -.15rem 0;
  padding: .8rem .85rem;
  border-radius: 14px;
  color: #fff;
  background: linear-gradient(130deg, #112E62, #2459B8 58%, #1E88C8);
  box-shadow: 0 10px 22px rgba(21,65,139,.2);
}
.sqp-invita-col-icona {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: rgba(255,255,255,.14);
  border: 1px solid rgba(255,255,255,.22);
}
.sqp-invita-col-icona svg {
  width: 23px;
  height: 23px;
  color: #FFE08A;
}
.sqp-invita-col-titoli {
  display: grid;
  gap: .18rem;
  min-width: 0;
}
.sqp-invita-col-titoli > b {
  font-size: 1.08rem;
  line-height: 1.1;
  color: #fff;
}
.sqp-invita-col-titoli > small {
  color: #D8E8FF;
  font-size: .73rem;
  line-height: 1.35;
}
.sqp-invita-riepilogo {
  display: flex;
  align-items: stretch;
  gap: .4rem;
}
.sqp-invita-riepilogo span {
  display: grid;
  place-items: center;
  min-width: 78px;
  padding: .42rem .55rem;
  border-radius: 11px;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.17);
  color: #DDEAFF;
  font-size: .62rem;
  line-height: 1.1;
  text-align: center;
}
.sqp-invita-riepilogo b {
  color: #fff;
  font-size: 1rem;
}

/* Ricerca più visibile, immediata e leggibile. */
.sqp-cerca-custodi {
  gap: .65rem;
  padding: .9rem;
  border: 1px solid rgba(42,102,200,.24);
  border-radius: 15px;
  background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(231,242,255,.96));
  box-shadow: 0 8px 22px rgba(35,82,156,.08);
}
.sqp-cerca-custodi-head {
  display: flex;
  align-items: center;
  gap: .65rem;
}
.sqp-cerca-custodi-lente {
  position: relative;
  display: block;
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  border-radius: 10px;
  background: linear-gradient(135deg, #2563EB, #0EA5E9);
  box-shadow: 0 5px 13px rgba(37,99,235,.24);
}
.sqp-cerca-custodi-lente::before {
  content: '';
  position: absolute;
  width: 10px;
  height: 10px;
  left: 8px;
  top: 7px;
  border: 2px solid #fff;
  border-radius: 50%;
}
.sqp-cerca-custodi-lente::after {
  content: '';
  position: absolute;
  width: 8px;
  height: 2px;
  left: 18px;
  top: 20px;
  border-radius: 999px;
  background: #fff;
  transform: rotate(45deg);
  transform-origin: left center;
}
.sqp-cerca-custodi-head > div {
  display: grid;
  gap: .05rem;
}
.sqp-cerca-custodi-head label {
  margin: 0;
  color: #102B58;
  font-size: .86rem;
  font-weight: 900;
}
.sqp-cerca-custodi-head small {
  color: #5D7190;
  font-size: .68rem;
}
.sqp-cerca-custodi-row {
  grid-template-columns: minmax(0,1fr) auto auto;
  gap: .5rem;
}
.sqp-cerca-custodi input[type="search"] {
  height: 48px;
  padding: .65rem .9rem;
  border: 1.5px solid rgba(31,77,152,.24);
  border-radius: 12px;
  color: #10253F;
  font-size: .9rem;
  box-shadow: inset 0 1px 2px rgba(11,31,58,.03);
}
.sqp-cerca-custodi input[type="search"]::placeholder { color: #8190A6; }
.sqp-cerca-custodi input[type="search"]:focus {
  outline: 4px solid rgba(14,165,233,.14);
  border-color: #2783D6;
  box-shadow: 0 0 0 1px rgba(39,131,214,.08);
}
.sqp-cerca-submit,
.sqp-cerca-clear {
  min-height: 48px;
  border-radius: 12px;
  padding: 0 .95rem;
  font-size: .78rem;
  font-weight: 900;
  cursor: pointer;
  transition: transform .14s ease, box-shadow .14s ease, background .14s ease;
}
.sqp-cerca-submit {
  border: 0;
  color: #fff;
  background: linear-gradient(135deg, #1D4ED8, #0284C7);
  box-shadow: 0 8px 18px rgba(29,78,216,.23);
}
.sqp-cerca-submit:hover { transform: translateY(-1px); box-shadow: 0 11px 22px rgba(29,78,216,.3); }
.sqp-cerca-clear {
  border: 1px solid rgba(183,53,53,.22);
  color: #B42318;
  background: #FFF8F7;
}
.sqp-cerca-clear:hover { background: #FEEDEC; }
.sqp-cerca-status {
  min-height: 28px;
  display: flex;
  align-items: center;
  padding: .38rem .6rem;
  border-radius: 9px;
  background: rgba(37,99,235,.07);
  color: #274C87;
  font-size: .7rem;
  font-weight: 800;
}
.sqp-cerca-status.is-empty {
  background: rgba(229,72,77,.08);
  color: #A52D34;
}
.sqp-cerca-nota {
  color: #60728B !important;
  font-size: .67rem !important;
  line-height: 1.4 !important;
}

.sqp-tabs--inviti {
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: .35rem;
  padding: .35rem;
  background: rgba(16,54,112,.08);
}
.sqp-tabs--inviti .sqp-tab {
  min-height: 44px;
  padding: .5rem .4rem;
  border-radius: 9px;
  color: #536985;
}
.sqp-tabs--inviti .sqp-tab.is-on {
  color: #164DA0;
  background: #fff;
  box-shadow: 0 4px 12px rgba(22,77,160,.12);
}
.sqp-invita-col .sqp-invitabili-lista {
  grid-template-columns: repeat(2, minmax(0,1fr));
  max-height: 360px;
  gap: .65rem;
  padding: .1rem .25rem .15rem 0;
}
.sqp-invita-col .sqp-candidato {
  align-content: start;
  min-width: 0;
  padding: .72rem .78rem;
  border-color: rgba(37,99,235,.14);
  box-shadow: 0 5px 14px rgba(20,55,104,.05);
}
.sqp-invita-col .sqp-candidato form .btn,
.sqp-invita-col .sqp-candidato form button {
  min-height: 34px;
}

@media (max-width: 1180px) {
  .sqp-cruscotto--tre { grid-template-columns: minmax(0,1.65fr) minmax(280px,1fr); }
  .sqp-invita-col .sqp-invitabili-lista { grid-template-columns: 1fr; }
  .sqp-invita-col-h { grid-template-columns: auto minmax(0,1fr); }
  .sqp-invita-riepilogo { grid-column: 1 / -1; }
  .sqp-invita-riepilogo span { min-width: 0; flex: 1; }
}

@media (max-width: 980px) {
  .sqp-cruscotto--tre { grid-template-columns: 1fr; }
  .sqp-cruscotto--tre > .sqp-invita-col,
  .sqp-cruscotto--tre > .sqp-mappa-wrap,
  .sqp-cruscotto--tre > .sqp-graf-col {
    grid-column: 1;
    min-height: 0;
  }
  .sqp-cruscotto--tre > .sqp-invita-col { grid-row: 1; }
  .sqp-cruscotto--tre > .sqp-mappa-wrap { grid-row: 2; }
  .sqp-cruscotto--tre > .sqp-graf-col { grid-row: 3; }
  .sqp-cruscotto--tre > .sqp-graf-col .sqp-graf-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .sqp-cruscotto--tre > .sqp-mappa-wrap .sqp-mappa { min-height: 330px; }
}

@media (max-width: 680px) {
  .sqp-cruscotto--tre { padding: .7rem; gap: .85rem; }
  .sqp-cruscotto--tre .sqp-invita-col { padding: .75rem; border-radius: 15px; }
  .sqp-invita-col-h { grid-template-columns: auto minmax(0,1fr); padding: .7rem; }
  .sqp-invita-col-icona { width: 40px; height: 40px; border-radius: 12px; }
  .sqp-invita-col-titoli > b { font-size: .98rem; }
  .sqp-invita-col-titoli > small { font-size: .67rem; }
  .sqp-cerca-custodi-row { grid-template-columns: minmax(0,1fr) auto; }
  .sqp-cerca-submit { padding: 0 .72rem; }
  .sqp-cerca-clear { grid-column: 1 / -1; min-height: 36px; }
  .sqp-tabs--inviti { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .sqp-invita-col .sqp-invitabili-lista { grid-template-columns: 1fr; max-height: none; }
}

@media (max-width: 430px) {
  .sqp-cerca-custodi-row { grid-template-columns: 1fr; }
  .sqp-cerca-submit,
  .sqp-cerca-clear { width: 100%; }
  .sqp-cruscotto--tre > .sqp-graf-col .sqp-graf-grid { grid-template-columns: 1fr; }
  .sqp-cruscotto--tre > .sqp-mappa-wrap .sqp-mappa { min-height: 270px; }
}

/* ========================================================================
   PARTECIPA — upload audio accanto alla registrazione diretta
   ======================================================================== */
.rec-lab small {
  color: var(--vision-muted);
  font-weight: 650;
}
.rec-upload,
.voce-upload {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .38rem;
  border: 1.5px solid rgba(124, 58, 237, .3);
  background: linear-gradient(135deg, #fff, #f5f0ff);
  color: #6d28d9;
  font-weight: 800;
  cursor: pointer;
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.rec-upload {
  min-height: 38px;
  padding: .45rem .9rem;
  border-radius: 999px;
  font-size: .82rem;
}
.voce-upload {
  min-height: 32px;
  padding: .3rem .7rem;
  border-radius: 999px;
  font-size: .74rem;
}
.rec-upload:hover,
.rec-upload:focus-visible,
.voce-upload:hover,
.voce-upload:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(109, 40, 217, .55);
  box-shadow: 0 8px 18px rgba(109, 40, 217, .14);
}
.rec-upload:disabled,
.voce-upload:disabled {
  opacity: .55;
  cursor: wait;
  transform: none;
}
.rec-file-name,
.voce-file-name {
  display: block;
  min-height: 1em;
  color: #6d28d9;
  font-size: .72rem;
  font-weight: 750;
  overflow-wrap: anywhere;
}
.rec-progress,
.voce-upload-progress {
  width: 100%;
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(109, 40, 217, .12);
}
.rec-progress > span,
.voce-upload-progress > span {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #7c3aed, #2563eb, #0ea5e9);
  transition: width .16s linear;
}
.pv-rec {
  margin-top: .9rem;
  background: linear-gradient(135deg, rgba(245, 240, 255, .96), rgba(239, 246, 255, .96));
  border-color: rgba(109, 40, 217, .22);
}
.voce-azioni .voce-file-name,
.voce-azioni .voce-upload-progress,
.voce-azioni .voce-nota {
  flex: 1 0 100%;
}

/* Sul desktop il comando Riduci azioni precede davvero testo e pulsanti. */
@media (min-width: 768px) {
  .contrib-guida-toggle {
    position: static;
    grid-column: 1 / -1;
    justify-self: end;
    margin: 0 0 .42rem auto;
  }
  .contrib-guida-corpo {
    grid-column: 1 / -1;
    width: 100%;
  }
}

@media (max-width: 767.98px) {
  .rec-riga {
    align-items: stretch;
  }
  .rec-btn,
  .rec-upload {
    flex: 1 1 calc(50% - .35rem);
    min-width: 0;
  }
  .rec-play {
    flex: 1 0 100%;
    width: 100%;
    max-width: none;
  }
  .voce-rec,
  .voce-upload {
    flex: 1 1 calc(50% - .25rem);
  }
}

/* ========================================================================
   PARTECIPA — guida leggibile, correzione minima e isolata
   ======================================================================== */
.contrib-guida:not(.is-collapsed) .contrib-guida-corpo {
  display: block !important;
  width: 100% !important;
}

.contrib-guida:not(.is-collapsed) .contrib-guida-copy {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
}

.contrib-guida:not(.is-collapsed) .contrib-guida-kicker,
.contrib-guida:not(.is-collapsed) .contrib-guida-copy h2,
.contrib-guida:not(.is-collapsed) .contrib-guida-copy p {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
}

.contrib-guida:not(.is-collapsed) .contrib-guida-kicker {
  margin: 0 0 .45rem !important;
  line-height: 1.45 !important;
}

.contrib-guida:not(.is-collapsed) .contrib-guida-copy h2 {
  margin: 0 0 .45rem !important;
  line-height: 1.28 !important;
}

.contrib-guida:not(.is-collapsed) .contrib-guida-copy p {
  margin: 0 !important;
  line-height: 1.7 !important;
}

.contrib-guida:not(.is-collapsed) .contrib-scelte,
.contrib-guida:not(.is-collapsed) .contrib-scelte--compatte {
  margin-top: 1rem !important;
}

@media (min-width: 768px) {
  .contrib-guida:not(.is-collapsed) .contrib-guida-toggle {
    margin-bottom: 1rem !important;
  }
}

/* Account — storico paginato dei contributi e audio opzionale */
.crus-voce-intro {
  margin: -.15rem 0 .7rem;
  color: var(--vision-muted);
  font-size: .78rem;
  line-height: 1.45;
}
.crus-audio-lock-note {
  display: grid;
  gap: .55rem;
  margin: 0 0 .7rem;
  padding: .7rem .8rem;
  border: 1.5px dashed rgba(201, 138, 30, .45);
  border-radius: 11px;
  background: linear-gradient(145deg, #fffdf5, #fff7db);
}
.crus-audio-lock-note > div:first-child {
  display: grid;
  gap: .18rem;
}
.crus-audio-lock-note b {
  color: #684a0d;
  font-size: .78rem;
}
.crus-audio-lock-note span {
  color: #7a5a16;
  font-size: .7rem;
  line-height: 1.4;
}
.crus-audio-lock-note .crus-lock-bar {
  width: 100%;
  max-width: none;
  margin: 0;
  height: 7px;
}
.contributo-riga-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .7rem;
}
.contributo-riga-head > b {
  min-width: 0;
  overflow-wrap: anywhere;
}
.voce-stato {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: .12rem .5rem;
  border-radius: 999px;
  font-size: .62rem;
  font-weight: 800;
  white-space: nowrap;
}
.voce-stato.is-attesa {
  color: #805b08;
  background: #fff2cf;
}
.voce-stato.is-rivedere {
  color: #9b4d00;
  background: #ffead5;
}
.voce-stato.is-validata {
  color: #0b6b4b;
  background: #e4f5ee;
}
.voce-stato.is-respinta {
  color: #a23035;
  background: #fde8e9;
}
.voce-meta {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  margin-top: .25rem;
  color: var(--vision-muted);
  font-size: .66rem;
}
.voce-meta svg {
  width: 12px;
  height: 12px;
}
.voce-audio-note {
  margin: 0;
  color: var(--vision-muted);
  font-size: .68rem;
  line-height: 1.4;
}
.voce-audio-note.is-ok {
  color: #0b6b4b;
}
.crus-contributi-vuoto {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: 1rem;
  border: 1.5px dashed rgba(16, 37, 63, .16);
  border-radius: 12px;
  background: #f8faff;
}
.crus-contributi-vuoto > span {
  display: grid;
  place-items: center;
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  border-radius: 11px;
  color: var(--vision-blue);
  background: rgba(37, 99, 235, .1);
}
.crus-contributi-vuoto svg {
  width: 20px;
  height: 20px;
}
.crus-contributi-vuoto b {
  color: var(--vision-ink);
  font-size: .82rem;
}
.crus-contributi-vuoto p {
  margin: .15rem 0 0;
  color: var(--vision-muted);
  font-size: .72rem;
  line-height: 1.4;
}

@media (max-width: 560px) {
  .contributo-riga-head {
    align-items: flex-start;
  }
  .crus-pane-h {
    flex-wrap: wrap;
  }
  .crus-pane-h .crus-pill {
    margin-left: 0;
  }
  .crus-chips {
    flex-wrap: wrap;
  }
}


/* Collegamenti territoriali interni nelle pagine dei Comuni. */
.pp-related-towns{grid-column:1/-1}
.pp-related-towns__intro{max-width:660px;margin:.35rem 0 0;color:#667f8d;font-size:.86rem;line-height:1.45}
.pp-related-towns__list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.5rem;margin:1rem 0 0;padding:0;list-style:none}
.pp-related-towns__list a{display:flex;min-height:58px;padding:.65rem .72rem;border:1px solid #dce8ed;border-radius:11px;background:#f8fbfc;color:#31596f;font-size:.76rem;font-weight:800;text-decoration:none;flex-direction:column;align-items:flex-start;justify-content:center;gap:.16rem}
.pp-related-towns__name{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-related-towns__meta{display:block;color:#718997;font-size:.67rem;font-weight:750;letter-spacing:.02em}
.pp-related-towns__list a:hover,.pp-related-towns__list a:focus-visible{border-color:#70bfc4;background:#e8f4f6;color:#0d708d;outline:0;transform:translateY(-1px)}
.pp-related-towns__list a:hover .pp-related-towns__meta,.pp-related-towns__list a:focus-visible .pp-related-towns__meta{color:#347687}
@media (max-width:1199.98px){.pp-related-towns__list{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:767.98px){.pp-related-towns__list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:479.98px){.pp-related-towns__list{grid-template-columns:1fr}}

/* Home: il brand resta l'H1; il messaggio sui dialetti è un H2 leggibile ma non dominante. */
.campaign-hero h1{
    max-width:760px;
    margin-bottom:.65rem;
    font-size:clamp(3.1rem,6.4vw,6.6rem);
    line-height:.9;
}
.campaign-hero__claim{
    max-width:820px;
    margin:0 0 1rem;
    color:#f2c75c;
    font-size:clamp(1.45rem,2.6vw,2.35rem);
    line-height:1.08;
    letter-spacing:-.035em;
}
@media (max-width:767.98px){
    .campaign-hero h1{font-size:clamp(3rem,15vw,4.5rem)}
    .campaign-hero__claim{font-size:clamp(1.3rem,6vw,1.75rem);line-height:1.12}
}

/* Home · nucleo AI animato a tre anelli. */
@media (max-width: 1199.98px) {
    .ai-memory-core { width:min(540px,100%); }
    .ai-core-satellite b { min-height:36px; padding:.5rem .68rem; font-size:.67rem; }
    .ai-core-satellites--territory .ai-core-satellite b { max-width:108px; font-size:.61rem; }
}
@media (max-width: 991.98px) {
    .ai-memory-core { width:min(610px,94vw); margin-top:1rem; }
}
@media (max-width: 575.98px) {
    .ai-memory-core {
        width:min(430px,96vw);
        --ai-content-speed:27s;
        --ai-community-speed:36s;
        --ai-territory-speed:48s;
    }
    .ai-core-orbit--content { inset:22%; }
    .ai-core-orbit--community { inset:11%; }
    .ai-core-orbit--territory { inset:2%; }
    .ai-core-orbit>span { top:-.55rem; padding:.13rem .4rem; font-size:.45rem; letter-spacing:.1em; }
    .ai-core-center { inset:39%; }
    .ai-core-center span { font-size:2.55rem; }
    .ai-core-center small { margin-top:.45rem; font-size:.61rem; letter-spacing:.13em; }
    .ai-core-satellite b { min-height:31px; padding:.4rem .52rem; border-radius:11px; font-size:.58rem; }
    .ai-core-satellite b::before { width:4px; height:4px; margin-right:.28rem; }
    .ai-core-satellites--content .ai-core-satellite { --orbit-radius:28%; }
    .ai-core-satellites--community .ai-core-satellite { --orbit-radius:39%; }
    .ai-core-satellites--territory .ai-core-satellite { --orbit-radius:47%; }
    .ai-core-satellites--territory .ai-core-satellite b {
        max-width:78px;
        padding:.34rem .42rem;
        font-size:.52rem;
    }
    .ai-neural-layer { inset:5%; width:90%; height:90%; }
    .ai-core-legend{margin:-.35rem auto .65rem;gap:.35rem}.ai-core-legend span{padding:.25rem .42rem;font-size:.47rem}
    .hero-unity-card { margin:0 auto; }
}
@media (prefers-reduced-motion: reduce) {
    .ai-core-satellite,
    .ai-core-satellite b,
    .ai-core-center,
    .ai-neural-halo,
    .ai-core-orbit::before,
    .ai-dynamic-synapse,
    .ai-dynamic-pulse,
    .ai-dynamic-terminal {
        animation-play-state:paused!important;
    }
}

/* ========================================================================
   PARTECIPA RAZIONALIZZATA — hero operativa, una sola barra laterale
   ======================================================================== */
.plancia.plancia--semplice {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    grid-template-rows: auto minmax(0, 1fr);
    height: min(920px, calc(100vh - 112px));
    min-height: 720px;
}
.plancia--semplice .pl-testa {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .85rem;
    align-items: stretch;
    padding: 1rem 1.15rem;
}
.pl-testa-main {
    display: grid;
    grid-template-columns: minmax(300px, 1.35fr) minmax(245px, .72fr) minmax(360px, 1fr);
    gap: .8rem;
    align-items: stretch;
}
.pl-testa-main--senza-compagnia { grid-template-columns: minmax(300px,1.35fr) minmax(245px,.72fr); }
.pl-testa-main > * { min-width: 0; }
.pl-testa--razionale .pl-testa-sx {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
    padding: .2rem .15rem;
}
.pl-testa--razionale .pl-saluto { font-size: clamp(1.05rem, 1.55vw, 1.38rem); }
.pl-testa--razionale .pl-saluto span,
.pl-testa--razionale .pl-saluto em { font-style: normal; }
.pl-testa--razionale .pl-saluto em { color: rgba(234,242,255,.82); font-weight: 700; }

.pl-hero-sicurezza {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .55rem;
    padding: .8rem .9rem;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 15px;
    background: rgba(255,255,255,.09);
    backdrop-filter: blur(8px);
}
.pl-hero-sicurezza-testa,
.pl-hero-sicurezza-sotto {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .7rem;
}
.pl-hero-sicurezza-testa span { font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: rgba(234,242,255,.74); }
.pl-hero-sicurezza-testa b { color: #7ee7d2; font-size: 1.4rem; line-height: 1; }
.pl-hero-sicurezza-bar { height: 9px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.16); }
.pl-hero-sicurezza-bar span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#34d399,#0ea5e9); transition: width .45s ease; }
.pl-hero-sicurezza-sotto { color: rgba(234,242,255,.76); font-size: .68rem; }
.pl-hero-sicurezza-sotto button { border: 0; padding: 0; color: #f2c75c; background: transparent; font: inherit; font-weight: 900; cursor: pointer; }
.pl-hero-sicurezza-sotto button:hover { color: #fff; text-decoration: underline; }

.pl-hero-compagnia {
    display: grid;
    grid-template-columns: auto minmax(0,1fr);
    grid-template-areas:
        "icon copy"
        "stats stats";
    align-items: center;
    gap: .55rem .65rem;
    min-width: 0;
    padding: .72rem .8rem;
    border: 1px solid rgba(242,199,92,.42);
    border-radius: 15px;
    color: #fff;
    background: linear-gradient(135deg,rgba(242,199,92,.16),rgba(255,255,255,.08));
    text-decoration: none;
    transition: transform .16s ease, background .16s ease, border-color .16s ease;
}
.pl-hero-compagnia:hover { color: #fff; transform: translateY(-1px); border-color: #f2c75c; background: linear-gradient(135deg,rgba(242,199,92,.23),rgba(255,255,255,.12)); }
.pl-hero-compagnia-ico { grid-area: icon; display: grid; width: 38px; height: 38px; place-items: center; border-radius: 12px; color: #081b35; background: #f2c75c; }
.pl-hero-compagnia-ico .icn { width: 1.15rem; height: 1.15rem; }
.pl-hero-compagnia-copy { grid-area: copy; display: flex; min-width: 0; flex-direction: column; }
.pl-hero-compagnia-copy small { color: rgba(255,255,255,.65); font-size: .59rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.pl-hero-compagnia-copy b { overflow: hidden; color: #fff; font-size: .84rem; text-overflow: ellipsis; white-space: nowrap; }
.pl-hero-compagnia-stats {
    grid-area: stats;
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    min-width: 0;
    overflow: hidden;
    border-top: 1px solid rgba(255,255,255,.12);
    padding-top: .5rem;
}
.pl-hero-compagnia-kpi { display: flex; min-width: 0; flex-direction: column; align-items: center; padding: 0 .35rem; border-left: 1px solid rgba(255,255,255,.13); text-align: center; }
.pl-hero-compagnia-kpi:first-child { border-left: 0; }
.pl-hero-compagnia-kpi b { max-width: 100%; overflow: hidden; color: #f2c75c; font-size: .86rem; line-height: 1.1; text-overflow: ellipsis; white-space: nowrap; }
.pl-hero-compagnia-kpi small { max-width: 100%; overflow: hidden; color: rgba(255,255,255,.64); font-size: .55rem; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }

.pl-hero-actions {
    display: grid;
    grid-template-columns: repeat(5,minmax(0,1fr));
    gap: .55rem;
}
.pl-hero-actions > button {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
    padding: .6rem .72rem;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 13px;
    color: #fff;
    background: rgba(255,255,255,.08);
    text-align: left;
    cursor: pointer;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}
.pl-hero-actions > button:hover,
.pl-hero-actions > button:focus-visible { transform: translateY(-1px); border-color: rgba(242,199,92,.68); background: rgba(255,255,255,.15); outline: none; }
.pl-hero-actions .icn { flex: 0 0 auto; width: 1.05rem; height: 1.05rem; color: #f2c75c; }
.pl-hero-action-emoji { font-size: 1rem; }
.pl-hero-actions > button > span:last-child { display: flex; min-width: 0; flex-direction: column; }
.pl-hero-actions b { color: #fff; font-size: .73rem; line-height: 1.1; }
.pl-hero-actions small { overflow: hidden; color: rgba(255,255,255,.64); font-size: .58rem; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.pl-fronti--hero { padding-top: .05rem; }
.pl-fronti--hero .q-fronte { padding-block: .36rem; }

.plancia--semplice .pl-sx { grid-column: 1; grid-row: 2; overflow-y: auto; }
.plancia--semplice .pl-centro { grid-column: 2; grid-row: 2; overflow-y: auto; }
.plancia--semplice .pl-sx .pl-mod { flex: 0 0 auto; }
.plancia--semplice .pl-sx > details + details { margin-top: .15rem; }
.plancia--semplice .pl-centro { padding-left: .15rem; }

/* Modali della hero. */
.pl-info-modal { position: fixed; inset: 0; z-index: 1450; display: grid; place-items: center; padding: 1.2rem; }
.pl-info-modal[hidden] { display: none; }
.pl-info-modal-back { position: absolute; inset: 0; background: rgba(5,20,43,.68); backdrop-filter: blur(4px); }
.pl-info-modal-card { position: relative; display: flex; flex-direction: column; width: min(760px,100%); max-height: min(84vh,780px); overflow: hidden; border: 1px solid rgba(255,255,255,.14); border-radius: 22px; background: #fff; box-shadow: 0 35px 90px rgba(5,20,43,.48); animation: p-card-in .24s ease; }
.pl-info-modal-card--wide { width: min(940px,100%); }
.pl-info-modal-card--contributi { width: min(1040px,100%); }
.pl-info-modal-head { display: flex; align-items: center; gap: .85rem; padding: 1rem 1.15rem; color: #fff; background: linear-gradient(135deg,#081b35,#123f78 72%,#1e4fb0); }
.pl-info-modal-head > div { flex: 1; min-width: 0; }
.pl-info-modal-head h3 { margin: 0; color: #fff; font-size: 1.05rem; font-weight: 900; }
.pl-info-modal-head p { margin: .18rem 0 0; color: rgba(255,255,255,.68); font-size: .72rem; }
.pl-info-modal-head > button { display: grid; flex: 0 0 auto; width: 36px; height: 36px; place-items: center; border: 0; border-radius: 11px; color: #fff; background: rgba(255,255,255,.12); font-size: 1.35rem; cursor: pointer; }
.pl-info-modal-head > button:hover { background: rgba(255,255,255,.24); }
.pl-info-modal-ico { display: grid; flex: 0 0 auto; width: 38px; height: 38px; place-items: center; border-radius: 12px; color: #081b35; background: #f2c75c; font-size: 1.05rem; }
.pl-info-modal-ico .icn { width: 1.05rem; height: 1.05rem; }
.pl-info-modal-count { display: flex; flex-direction: column; align-items: flex-end; color: rgba(255,255,255,.66); font-size: .62rem; }
.pl-info-modal-count b { color: #f2c75c; font-size: 1rem; }
.pl-info-modal-body { min-height: 0; overflow-y: auto; padding: 1rem 1.15rem 1.2rem; }
.pl-info-modal-body--chart { display: grid; grid-template-columns: minmax(240px,.8fr) minmax(260px,1.2fr); align-items: center; gap: 1.5rem; }
.pl-modal-dough { height: 260px; }
.pl-modal-bars { min-height: 290px; height: auto; }
.pl-modal-chart-copy b { display: block; color: var(--vision-ink); font-size: 1.15rem; }
.pl-modal-chart-copy p { margin: .5rem 0 0; color: var(--vision-muted); line-height: 1.65; }
.pl-missioni-modal-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem; }
.pl-missioni-modal-list .pl-miss { margin: 0; }
.pl-contributi-modal-body { display: flex; flex-direction: column; gap: .8rem; }
.pl-contributi-filtri { display: grid; grid-template-columns: minmax(220px,1fr) auto; gap: .8rem; align-items: center; }
#pc-contributi-lista { display: grid; gap: .65rem; }
#pc-contributi-lista .voce-riga { padding: .8rem; border: 1.5px solid rgba(16,37,63,.09); border-radius: 13px; background: #f7faff; }
#pc-contributi-lista[aria-busy="true"] { opacity: .65; }
body.pl-info-modal-aperta { overflow: hidden; }
body.pl-info-modal-aperta .p-hud { z-index: 800; }

@media (max-width: 1360px) {
    .pl-testa-main { grid-template-columns: minmax(300px,1.2fr) minmax(230px,.7fr); }
    .pl-hero-compagnia { grid-column: 1 / -1; }
}
@media (max-width: 1080px) and (min-width: 768px) {
    .plancia.plancia--semplice { display: grid; grid-template-columns: 255px minmax(0,1fr); height: min(920px,calc(100vh - 104px)); min-height: 700px; }
    .pl-testa-main { grid-template-columns: minmax(0,1fr) minmax(230px,.75fr); }
    .pl-hero-actions { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .plancia--semplice .pl-sx,
    .plancia--semplice .pl-centro { margin-bottom: 0; overflow-y: auto; }
}

/* ========================================================================
   PARTECIPA — hero operativa collassabile
   ======================================================================== */
.plancia--semplice .pl-testa--razionale {
    position: relative;
    margin-bottom: 3.35rem;
    overflow: visible;
    transition: min-height .38s ease, padding .38s ease, box-shadow .25s ease;
}
.pl-hero-collapsible {
    display: grid;
    gap: .85rem;
    min-width: 0;
    max-height: 1200px;
    overflow: hidden;
    opacity: 1;
    transform: translateY(0);
    transform-origin: top center;
    transition: max-height .42s cubic-bezier(.22,.61,.36,1), opacity .24s ease, transform .34s ease;
}
.pl-hero-collapse-toggle {
    position: absolute;
    z-index: 12;
    left: 50%;
    bottom: -44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .65rem;
    min-width: 248px;
    min-height: 44px;
    padding: .48rem .78rem;
    border: 1px solid rgba(255,255,255,.68);
    border-top: 0;
    border-radius: 0 0 24px 24px;
    color: #081b35;
    background: linear-gradient(135deg,#ffe58a 0%,#f2c75c 58%,#e7aa31 100%);
    box-shadow: 0 14px 28px rgba(5,20,43,.34), inset 0 -1px 0 rgba(255,255,255,.5);
    cursor: pointer;
    transform: translateX(-50%);
    transition: transform .18s ease, filter .18s ease, box-shadow .18s ease;
}
.pl-hero-collapse-toggle:hover,
.pl-hero-collapse-toggle:focus-visible {
    color: #081b35;
    filter: brightness(1.055);
    box-shadow: 0 15px 34px rgba(5,20,43,.42), 0 0 0 4px rgba(242,199,92,.18);
    outline: none;
    transform: translateX(-50%) translateY(2px);
}
.pl-hero-collapse-toggle::before {
    content: "";
    position: absolute;
    left: 22px;
    right: 22px;
    top: 0;
    height: 1px;
    background: rgba(8,27,53,.16);
}
.pl-hero-collapse-toggle__icon {
    display: grid;
    flex: 0 0 31px;
    width: 31px;
    height: 31px;
    place-items: center;
    border-radius: 999px;
    color: #f2c75c;
    background: #081b35;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.14);
}
.pl-hero-collapse-toggle__icon .icn { width: 15px; height: 15px; }
.pl-hero-collapse-toggle__copy {
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
    line-height: 1.05;
}
.pl-hero-collapse-toggle__copy b {
    color: #081b35;
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .055em;
    text-transform: uppercase;
}
.pl-hero-collapse-toggle__copy small {
    margin-top: .18rem;
    color: rgba(8,27,53,.7);
    font-size: .58rem;
    font-weight: 800;
}
.pl-hero-collapse-toggle__chevron {
    display: grid;
    flex: 0 0 26px;
    width: 26px;
    height: 26px;
    place-items: center;
    border-radius: 999px;
    color: #fff;
    background: rgba(8,27,53,.92);
    font-size: 1rem;
    font-weight: 950;
    line-height: 1;
}
.pl-testa--razionale.is-hero-collapsed {
    min-height: 48px;
    padding-top: .35rem;
    padding-bottom: .35rem;
    box-shadow: 0 12px 28px rgba(8,27,53,.25);
}
.pl-testa--razionale.is-hero-collapsed .pl-hero-collapsible {
    max-height: 0;
    opacity: 0;
    transform: translateY(-10px) scaleY(.98);
    pointer-events: none;
}
.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle {
    background: linear-gradient(135deg,#62e6bc 0%,#34d399 55%,#14b88a 100%);
    box-shadow: 0 14px 34px rgba(5,20,43,.4), 0 0 0 5px rgba(52,211,153,.13);
}
.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle__icon,
.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle__chevron {
    background: #073d35;
}
@media (prefers-reduced-motion: reduce) {
    .plancia--semplice .pl-testa--razionale,
    .pl-hero-collapsible,
    .pl-hero-collapse-toggle { transition: none !important; }
}

/* ========================================================================
   EDITOR AUDIO — ritaglio nel browser prima del salvataggio
   ======================================================================== */
html.audio-editor-open,
html.audio-editor-open body {
  overflow: hidden !important;
}
.audio-trim-modal[hidden],
.audio-trim-loading[hidden],
.audio-trim-work[hidden] { display: none !important; }
.audio-trim-modal {
  position: fixed;
  inset: 0;
  z-index: 14000;
  display: grid;
  place-items: center;
  padding: clamp(.75rem, 2vw, 1.5rem);
}
.audio-trim-back {
  position: absolute;
  inset: 0;
  background: rgba(3, 12, 26, .78);
  backdrop-filter: blur(12px);
}
.audio-trim-card {
  position: relative;
  width: min(920px, 100%);
  max-height: min(92vh, 760px);
  overflow: auto;
  border: 1px solid rgba(125, 211, 252, .28);
  border-radius: 28px;
  color: #eaf4ff;
  background:
    radial-gradient(circle at 85% 5%, rgba(45, 212, 191, .16), transparent 22rem),
    radial-gradient(circle at 5% 85%, rgba(99, 102, 241, .18), transparent 24rem),
    linear-gradient(145deg, #071a33, #0b294f 56%, #102f58);
  box-shadow: 0 34px 90px rgba(0, 0, 0, .48);
}
.audio-trim-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}
.audio-trim-head > div { min-width: 0; }
.audio-trim-head span {
  display: block;
  margin-bottom: .4rem;
  color: #67e8f9;
  font-size: .7rem;
  font-weight: 950;
  letter-spacing: .16em;
}
.audio-trim-head h2 {
  margin: 0;
  color: #fff;
  font-size: clamp(1.35rem, 3vw, 2.15rem);
  letter-spacing: -.035em;
}
.audio-trim-head p {
  margin: .5rem 0 0;
  color: rgba(234, 244, 255, .7);
  line-height: 1.5;
}
.audio-trim-x {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: 50%;
  color: #fff;
  background: rgba(255, 255, 255, .08);
  font-size: 1.45rem;
  cursor: pointer;
}
.audio-trim-x:hover,
.audio-trim-x:focus-visible { background: #dc3545; border-color: #dc3545; }
.audio-trim-body { padding: clamp(1.1rem, 3vw, 2rem); }
.audio-trim-loading {
  min-height: 220px;
  display: grid;
  place-items: center;
  padding: 2rem;
  color: rgba(234, 244, 255, .82);
  text-align: center;
  font-weight: 800;
}
.audio-trim-work { display: grid; gap: 1rem; }
.audio-trim-wave-wrap {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(125, 211, 252, .24);
  border-radius: 20px;
  background: #071a33;
  box-shadow: inset 0 0 45px rgba(14, 165, 233, .08);
  touch-action: none;
}
.audio-trim-wave {
  display: block;
  width: 100%;
  height: 210px;
  cursor: ew-resize;
}
.audio-trim-wave-help {
  position: absolute;
  left: 50%;
  bottom: .65rem;
  transform: translateX(-50%);
  width: max-content;
  max-width: calc(100% - 1.2rem);
  padding: .3rem .65rem;
  border-radius: 999px;
  color: rgba(234, 244, 255, .74);
  background: rgba(3, 12, 26, .66);
  font-size: .68rem;
  font-weight: 750;
  pointer-events: none;
}
.audio-trim-times {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: .75rem;
  color: #fff;
  font-variant-numeric: tabular-nums;
}
.audio-trim-times b:last-child { text-align: right; }
.audio-trim-times span {
  padding: .35rem .75rem;
  border: 1px solid rgba(45, 212, 191, .25);
  border-radius: 999px;
  color: #99f6e4;
  background: rgba(45, 212, 191, .08);
  font-size: .75rem;
  font-weight: 850;
}
.audio-trim-ranges {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.audio-trim-ranges label { display: grid; gap: .4rem; }
.audio-trim-ranges label span {
  color: rgba(234, 244, 255, .72);
  font-size: .72rem;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.audio-trim-ranges input[type="range"] {
  width: 100%;
  accent-color: #2dd4bf;
  cursor: ew-resize;
}
.audio-trim-ranges label:first-child input { accent-color: #38bdf8; }
.audio-trim-info {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .75rem;
}
.audio-trim-info > span {
  display: grid;
  gap: .2rem;
  min-width: 0;
  padding: .85rem 1rem;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 16px;
  background: rgba(255, 255, 255, .055);
}
.audio-trim-info small { color: rgba(234, 244, 255, .6); font-size: .68rem; }
.audio-trim-info b { color: #fff; font-size: 1rem; font-variant-numeric: tabular-nums; }
.audio-trim-info b.is-too-large { color: #fda4af; }
.audio-trim-note {
  margin: 0;
  padding: .75rem .9rem;
  border-left: 3px solid #38bdf8;
  border-radius: 0 12px 12px 0;
  color: rgba(234, 244, 255, .74);
  background: rgba(56, 189, 248, .07);
  font-size: .8rem;
  line-height: 1.5;
}
.audio-trim-actions {
  position: sticky;
  bottom: 0;
  display: flex;
  justify-content: flex-end;
  gap: .65rem;
  padding: 1rem clamp(1.1rem, 3vw, 2rem);
  border-top: 1px solid rgba(255, 255, 255, .1);
  background: rgba(7, 26, 51, .94);
  backdrop-filter: blur(12px);
}
.audio-trim-btn {
  min-height: 42px;
  padding: .65rem 1rem;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 13px;
  color: #fff;
  background: rgba(255, 255, 255, .07);
  font-weight: 850;
  cursor: pointer;
}
.audio-trim-btn:hover,
.audio-trim-btn:focus-visible { transform: translateY(-1px); background: rgba(255, 255, 255, .13); }
.audio-trim-btn--preview { color: #dbeafe; border-color: rgba(56, 189, 248, .4); background: rgba(56, 189, 248, .12); }
.audio-trim-btn--apply { color: #052e2b; border-color: #5eead4; background: linear-gradient(135deg, #99f6e4, #5eead4); }
.audio-trim-btn--apply:disabled { opacity: .45; cursor: not-allowed; transform: none; }
.audio-trim-btn--cancel { color: #fecdd3; }

@media (max-width: 767.98px) {
  .audio-trim-modal { padding: 0; place-items: end stretch; }
  .audio-trim-card { width: 100%; max-height: 96dvh; border-radius: 24px 24px 0 0; }
  .audio-trim-head { padding: 1rem; }
  .audio-trim-head p { font-size: .8rem; }
  .audio-trim-body { padding: .9rem; }
  .audio-trim-wave { height: 170px; }
  .audio-trim-wave-help { display: none; }
  .audio-trim-ranges { grid-template-columns: 1fr; gap: .65rem; }
  .audio-trim-info { grid-template-columns: 1fr 1fr; }
  .audio-trim-info > span:last-child { grid-column: 1 / -1; }
  .audio-trim-actions { display: grid; grid-template-columns: 1fr 1fr; padding: .8rem; }
  .audio-trim-btn--apply { grid-column: 1 / -1; grid-row: 1; }
  .audio-trim-btn--preview { grid-column: 1 / -1; }
}

/* Partecipa — linguetta realmente sotto la plancia, senza sovrapposizione. */
.plancia--semplice .pl-testa--razionale {
    margin-bottom: 4.65rem;
}
.plancia--semplice .pl-hero-collapse-toggle {
    top: calc(100% + 12px);
    bottom: auto;
    border-top: 1px solid rgba(255,255,255,.68);
    border-radius: 9px 9px 24px 24px;
}
.plancia--semplice .pl-hero-collapse-toggle::before {
    top: 5px;
}
.plancia--semplice .pl-testa--razionale.is-hero-collapsed {
    margin-bottom: 4.65rem;
}

/* Partecipa — linguetta agganciata al bordo inferiore della hero. */
.plancia--semplice .pl-testa--razionale,
.plancia--semplice .pl-testa--razionale.is-hero-collapsed {
    /* Riserva solo lo spazio occupato dalla linguetta: nessuna fascia vuota. */
    margin-bottom: 3.15rem;
}
.plancia--semplice .pl-hero-collapse-toggle {
    /* La linguetta nasce esattamente dal bordo blu e si sviluppa sotto. */
    top: 100%;
    bottom: auto;
    border-top: 0;
    border-radius: 0 0 24px 24px;
}
.plancia--semplice .pl-hero-collapse-toggle::before {
    top: 0;
}
/* Lettore dei contributi: comando esplicito, con controlli nativi di riserva. */
.voce-audio-wrap {
  display: grid;
  gap: .4rem;
  min-width: 0;
}
.voce-audio-toggle {
  display: none;
  align-items: center;
  gap: .65rem;
  width: 100%;
  min-height: 48px;
  padding: .62rem .8rem;
  border: 1px solid rgba(37,99,235,.18);
  border-radius: 13px;
  color: #123f78;
  background: linear-gradient(135deg,#edf5ff,#f8fbff);
  font: inherit;
  font-size: .78rem;
  font-weight: 900;
  text-align: left;
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.voce-audio-toggle__icon {
  display: grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  color: #fff;
  background: linear-gradient(135deg,#2563eb,#0ea5e9);
  box-shadow: 0 7px 16px rgba(37,99,235,.24);
  font-size: .8rem;
  line-height: 1;
}
.voce-audio-toggle__label { min-width: 0; flex: 1; }
.voce-audio-toggle__time { flex: 0 0 auto; color: #607895; font-size: .68rem; font-weight: 800; }
.voce-audio-toggle.is-playing {
  color: #075f48;
  border-color: rgba(5,150,105,.26);
  background: linear-gradient(135deg,#e8f8f2,#f5fcf9);
}
.voce-audio-toggle.is-playing .voce-audio-toggle__icon { background: linear-gradient(135deg,#059669,#34d399); }
.voce-audio-toggle.is-loading .voce-audio-toggle__icon { animation: voce-audio-pulse .8s ease-in-out infinite alternate; }
.voce-audio-status { min-height: 0; color: #9b4d00; font-size: .66rem; line-height: 1.4; }
.voce-audio-status:empty { display: none; }
@keyframes voce-audio-pulse { to { transform: scale(1.08); box-shadow: 0 0 0 7px rgba(37,99,235,.11); } }

/* Partecipa — stato collassato: elimina la fascia blu vuota e lascia solo la linguetta. */
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed {
    min-height: 0;
    padding: 0 !important;
    background: transparent;
    box-shadow: none;
    border: 0;
}

/* Partecipa — stato collassato compatto: barra blu informativa, non vuota. */
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed {
    min-height: 58px;
    margin-bottom: .95rem;
    padding: .42rem .7rem !important;
    border: 0;
    border-radius: 16px;
    color: #eaf2ff;
    background: radial-gradient(circle at 85% 0, rgba(37, 99, 235, .55), transparent 42%), linear-gradient(120deg, #081b35 0%, #0f3364 70%, #1e4fb0 100%);
    box-shadow: 0 12px 28px rgba(8, 27, 53, .25);
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle {
    top: 50%;
    bottom: auto;
    left: 50%;
    width: min(680px, calc(100% - .9rem));
    min-width: 0;
    min-height: 42px;
    padding: .35rem .58rem;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 13px;
    color: #fff;
    background: rgba(255,255,255,.075);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
    transform: translate(-50%, -50%);
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle:hover,
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle:focus-visible {
    color: #fff;
    background: rgba(255,255,255,.13);
    box-shadow: 0 0 0 4px rgba(242,199,92,.14), inset 0 1px 0 rgba(255,255,255,.1);
    filter: none;
    transform: translate(-50%, -50%);
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle::before {
    display: none;
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle__icon {
    color: #081b35;
    background: #f2c75c;
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle__copy b {
    color: #fff;
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle__copy small {
    color: rgba(234,242,255,.74);
}
.plancia--semplice .pl-testa.pl-testa--razionale.is-hero-collapsed .pl-hero-collapse-toggle__chevron {
    color: #081b35;
    background: #f2c75c;
}

/* ========================================================================
   PARTECIPA — gioco a tutta larghezza, Gloria e Libri integrati nella plancia
   ======================================================================== */
.plancia.plancia--semplice {
    grid-template-columns: minmax(0, 1fr);
}
.plancia--semplice .pl-centro {
    grid-column: 1;
    grid-row: 2;
    width: 100%;
    padding-left: 0;
}

.pl-hero-actions {
    grid-template-columns: repeat(7, minmax(0, 1fr));
}
.pl-hero-actions > .pl-hero-action--gloria,
.pl-hero-actions > .pl-hero-action--libro {
    position: relative;
    overflow: hidden;
    border-color: rgba(242, 199, 92, .46);
}
.pl-hero-actions > .pl-hero-action--gloria {
    color: #fff;
    background: linear-gradient(135deg, rgba(242, 199, 92, .25), rgba(194, 65, 12, .16));
}
.pl-hero-actions > .pl-hero-action--libro {
    color: #fff;
    background: linear-gradient(135deg, rgba(14, 122, 84, .28), rgba(14, 165, 233, .14));
}
.pl-hero-actions > .pl-hero-action--gloria::after,
.pl-hero-actions > .pl-hero-action--libro::after {
    content: "";
    position: absolute;
    inset: auto -18px -28px auto;
    width: 76px;
    height: 76px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    pointer-events: none;
}
.pl-hero-actions > .pl-hero-action--gloria .icn { color: #f2c75c; }
.pl-hero-actions > .pl-hero-action--libro .icn { color: #7ee7d2; }
.pl-hero-actions > .pl-hero-action--gloria small,
.pl-hero-actions > .pl-hero-action--libro small { color: rgba(255, 255, 255, .78); }

.pl-gloria-modal-body {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .85rem;
}
.pl-gloria-card {
    min-width: 0;
    padding: 1rem;
    border: 1px solid rgba(16, 37, 63, .1);
    border-radius: 18px;
    background: #f7faff;
    box-shadow: 0 10px 26px rgba(11, 31, 58, .07);
}
.pl-gloria-card--custode {
    color: #fff;
    border-color: rgba(255, 255, 255, .13);
    background: radial-gradient(circle at 88% 0, rgba(37, 99, 235, .48), transparent 44%), linear-gradient(150deg, #081b35, #123f78);
}
.pl-gloria-card--comune { background: linear-gradient(150deg, #f1fbf7, #fff); }
.pl-gloria-card--compagnia { background: linear-gradient(150deg, #fff9e9, #fff); }
.pl-gloria-card-head {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .65rem;
    padding-bottom: .8rem;
    border-bottom: 1px solid rgba(16, 37, 63, .09);
}
.pl-gloria-card--custode .pl-gloria-card-head { border-bottom-color: rgba(255, 255, 255, .13); }
.pl-gloria-card-ico {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    border-radius: 12px;
    color: #081b35;
    background: #f2c75c;
}
.pl-gloria-card-ico .icn { width: 1.05rem; height: 1.05rem; }
.pl-gloria-card-head div { min-width: 0; }
.pl-gloria-card-head small {
    display: block;
    color: #72839a;
    font-size: .6rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.pl-gloria-card-head h4 {
    overflow: hidden;
    margin: .15rem 0 0;
    color: #10253f;
    font-size: .92rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pl-gloria-card-head > strong {
    color: #123f78;
    font-size: 1.25rem;
    font-variant-numeric: tabular-nums;
}
.pl-gloria-card--custode .pl-gloria-card-head small { color: rgba(234, 242, 255, .62); }
.pl-gloria-card--custode .pl-gloria-card-head h4 { color: #fff; }
.pl-gloria-card--custode .pl-gloria-card-head > strong { color: #f2c75c; }
.pl-gloria-kpi-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
    margin-top: .8rem;
}
.pl-gloria-kpi-grid > div {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: .15rem;
    padding: .58rem .62rem;
    border: 1px solid rgba(16, 37, 63, .08);
    border-radius: 12px;
    background: rgba(255, 255, 255, .74);
}
.pl-gloria-kpi-grid span { color: #72839a; font-size: .64rem; font-weight: 800; }
.pl-gloria-kpi-grid b { color: #10253f; font-size: .92rem; line-height: 1.2; }
.pl-gloria-kpi-grid small { color: #8b650d; font-size: .58rem; line-height: 1.25; }
.pl-gloria-card--custode .pl-gloria-kpi-grid > div {
    border-color: rgba(255, 255, 255, .12);
    background: rgba(255, 255, 255, .08);
}
.pl-gloria-card--custode .pl-gloria-kpi-grid span { color: rgba(234, 242, 255, .66); }
.pl-gloria-card--custode .pl-gloria-kpi-grid b { color: #fff; }
.pl-gloria-card--custode .pl-gloria-kpi-grid small { color: #f2c75c; }

.pl-info-modal-head--libro {
    background: linear-gradient(135deg, #3b2a05, #8b650d 70%, #c98a1e);
}
.pl-libro-modal-grid { display: grid; gap: .75rem; }
.pl-libro-modal-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .85rem;
    min-width: 0;
    padding: .9rem;
    border: 1px solid rgba(16, 37, 63, .1);
    border-radius: 16px;
    color: #10253f;
    background: #fff;
    text-decoration: none;
    box-shadow: 0 9px 24px rgba(11, 31, 58, .06);
    transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.pl-libro-modal-card:hover,
.pl-libro-modal-card:focus-visible {
    color: #10253f;
    border-color: rgba(37, 99, 235, .38);
    box-shadow: 0 14px 32px rgba(11, 31, 58, .11);
    transform: translateY(-1px);
    outline: none;
}
.pl-libro-modal-card--mio { background: linear-gradient(135deg, #fff9e8, #fff); }
.pl-libro-modal-card--comune { background: linear-gradient(135deg, #eefbf5, #fff); }
.pl-libro-modal-card--compagnia { background: linear-gradient(135deg, #eef5ff, #fff); }
.pl-libro-modal-ico {
    display: grid;
    width: 46px;
    height: 46px;
    place-items: center;
    border-radius: 14px;
    color: #3b2a05;
    background: #f2c75c;
}
.pl-libro-modal-card--comune .pl-libro-modal-ico { color: #fff; background: #0e7a54; }
.pl-libro-modal-card--compagnia .pl-libro-modal-ico { color: #fff; background: #2563eb; }
.pl-libro-modal-ico .icn { width: 1.2rem; height: 1.2rem; }
.pl-libro-modal-card > span:nth-child(2) { display: flex; min-width: 0; flex-direction: column; }
.pl-libro-modal-card small { color: #7a8798; font-size: .61rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.pl-libro-modal-card b { margin-top: .15rem; color: #10253f; font-size: .92rem; }
.pl-libro-modal-card em { margin-top: .2rem; color: #65778d; font-size: .7rem; font-style: normal; line-height: 1.35; }
.pl-libro-modal-action {
    flex: 0 0 auto;
    padding: .48rem .65rem;
    border-radius: 999px;
    color: #fff;
    background: #123f78;
    font-size: .66rem;
    font-weight: 900;
    white-space: nowrap;
}

@media (max-width: 1360px) {
    .pl-hero-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .pl-gloria-modal-body { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pl-gloria-card--compagnia:last-child { grid-column: 1 / -1; }
}
@media (max-width: 1080px) and (min-width: 768px) {
    .plancia.plancia--semplice { grid-template-columns: minmax(0, 1fr); }
    .pl-hero-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
    .pl-hero-actions > .pl-hero-action--gloria,
    .pl-hero-actions > .pl-hero-action--libro { min-height: 62px; }
    .pl-gloria-modal-body { grid-template-columns: 1fr; }
    .pl-gloria-card--compagnia:last-child { grid-column: auto; }
    .pl-libro-modal-card { grid-template-columns: auto minmax(0, 1fr); }
    .pl-libro-modal-action { grid-column: 2; justify-self: start; }
}

/* V9.0 — CTA Gioca sempre riconoscibile e pulsante */
.nav-play {
    position: relative;
    isolation: isolate;
    overflow: visible;
    background: linear-gradient(135deg, #2563eb, #6d3ee8) !important;
    box-shadow: 0 10px 26px rgba(67, 74, 224, .38) !important;
    animation: navGamePulse 1.75s ease-in-out infinite;
}

.nav-play::after {
    content: "";
    position: absolute;
    inset: -4px;
    z-index: -1;
    border: 2px solid rgba(80, 116, 255, .38);
    border-radius: inherit;
    opacity: 0;
    pointer-events: none;
    animation: navGameRing 1.75s ease-out infinite;
}

.nav-play:hover,
.nav-play:focus-visible {
    color: #fff;
    transform: translateY(-1px) scale(1.025);
    box-shadow: 0 15px 34px rgba(67, 74, 224, .48) !important;
}

@keyframes navGamePulse {
    0%, 100% { transform: scale(1); box-shadow: 0 10px 26px rgba(67, 74, 224, .34); }
    50% { transform: scale(1.045); box-shadow: 0 15px 38px rgba(67, 74, 224, .56); }
}

@keyframes navGameRing {
    0% { opacity: .58; transform: scale(.96); }
    72%, 100% { opacity: 0; transform: scale(1.16); }
}

@media (prefers-reduced-motion: reduce) {
    .nav-play,
    .nav-play::after {
        animation: none !important;
    }
}

/* Accesso trasversale al Comune del Custode */
.imp-municipality-manager{background:linear-gradient(145deg,#f3f7ff,#fff);border-color:rgba(37,99,235,.22)}
.imp-municipality-current{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1rem;margin-bottom:.85rem;border-radius:12px;background:#eef4ff;border:1px solid rgba(37,99,235,.14)}
.imp-municipality-current strong{font-size:1.05rem;color:var(--vision-blue)}
.imp-municipality-current span{font-size:.78rem;color:var(--vision-muted)}
.imp-municipality-current.is-empty{justify-content:flex-start;background:#fff7e6;border-color:#f2c75c}
.imp-municipality-actions{display:flex;gap:.65rem;flex-wrap:wrap}
.sfida-mio-comune-actions{display:grid;gap:.55rem;margin-top:.8rem}
.sfida-mio-comune-actions .btn{width:100%;display:flex;align-items:center;justify-content:center;gap:.45rem;font-weight:800}
@media(max-width:620px){.imp-municipality-current{align-items:flex-start;flex-direction:column}.imp-municipality-actions .btn{width:100%}}

/* Multi-Comune: controlli coerenti in Account e Impostazioni. */
.account-guarded-municipalities{display:flex;flex-wrap:wrap;gap:.45rem;margin:.75rem 0}
.account-guarded-municipalities button{border:1px solid #cfd9eb;background:#fff;color:#27446f;border-radius:999px;padding:.42rem .75rem;font:inherit;font-size:.82rem;cursor:pointer}
.account-guarded-municipalities button.is-active{background:#2455c3;color:#fff;border-color:#2455c3;font-weight:800}
.imp-municipality-list{display:grid;gap:.65rem;margin-bottom:1rem}
.imp-municipality-list .imp-municipality-current{width:100%;text-align:left;cursor:pointer;border:1px solid #dbe3f0;background:#fff}
.imp-municipality-list .imp-municipality-current.is-active{border-color:#2455c3;box-shadow:0 0 0 3px rgba(36,85,195,.12)}
