@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fredoka:wght@500;600;700&display=swap');
:root{--red:#ff3d20;--orange:#ff6b00;--yellow:#ffd500;--cream:#fff9ec;--ink:#25231f;--green:#82d56b;--pink:#ff8a9b;--blue:#6bc8e8;--white:#fff;--radius:28px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;overflow-x:hidden}img{display:block;max-width:100%}a{color:inherit}button{font:inherit}.skip-link{position:fixed;top:-100px;left:1rem;background:#fff;padding:1rem;z-index:100}.skip-link:focus{top:1rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.site-header{height:92px;padding:12px clamp(20px,5vw,72px);display:flex;align-items:center;gap:3vw;position:absolute;inset:0 0 auto;z-index:20}.brand img{width:220px}.site-header nav{display:flex;gap:2rem;margin-left:auto}.site-header nav a{text-decoration:none;font-weight:700;font-size:.9rem}.site-header nav a:hover{color:var(--red)}.menu-toggle{display:none;background:none;border:0;font-size:1.8rem}.pill{display:inline-flex;align-items:center;justify-content:center;gap:1rem;background:var(--red);color:white;padding:17px 24px;border-radius:999px;text-decoration:none;font-weight:700;border:0;cursor:pointer;transition:transform .2s,box-shadow .2s}.pill:hover{transform:translateY(-3px) rotate(-1deg);box-shadow:0 8px 0 #9e2010}.pill-small{padding:12px 18px;font-size:.85rem}.section-pad{padding:clamp(72px,10vw,150px) clamp(20px,7vw,110px)}.eyebrow{text-transform:uppercase;font-weight:700;font-size:.78rem;letter-spacing:.17em;color:var(--red);margin:0 0 18px}.hero{min-height:760px;padding-top:150px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:5vw;position:relative;background:radial-gradient(circle at 5% 20%,#fff 0 4%,transparent 4.2%),var(--cream)}h1,h2,h3{font-family:'Fredoka',Arial,sans-serif;margin:0;line-height:.94}h1{font-size:clamp(4rem,8vw,8.5rem);letter-spacing:-.055em}h1 span{color:var(--red);display:inline-block;transform:rotate(-3deg)}.lead{font-size:clamp(1.05rem,1.5vw,1.3rem);line-height:1.55;max-width:580px}.hero-actions{display:flex;align-items:center;gap:30px;margin:35px 0}.text-link{font-weight:700;text-decoration:none;border-bottom:2px solid}.quick-facts{list-style:none;display:flex;gap:clamp(20px,4vw,60px);padding:25px 0 0;border-top:1px solid #ddd}.quick-facts b{display:block;font-family:'Fredoka';font-size:1.5rem;color:var(--red)}.quick-facts span{font-size:.8rem}.hero-visual{position:relative;min-height:540px;display:grid;place-items:center}.hero-photo{width:min(92%,560px);aspect-ratio:4/5;border:10px solid white;border-radius:46% 46% 26% 26%;overflow:hidden;position:relative;box-shadow:15px 18px 0 var(--yellow);transform:rotate(2deg)}.hero-photo img{width:100%;height:100%;object-fit:cover}.photo-sticker{position:absolute;right:15px;bottom:25px;background:white;border:3px solid var(--ink);border-radius:50%;width:105px;height:105px;display:grid;place-items:center;font-family:'Fredoka';font-size:1.1rem;transform:rotate(8deg)}.sun-orbit{position:absolute;inset:0;animation:spin 22s linear infinite}.sun-orbit span{position:absolute;font-size:2rem;color:var(--red)}.sun-orbit span:nth-child(1){top:5%;left:15%}.sun-orbit span:nth-child(2){right:2%;top:25%;color:var(--blue)}.sun-orbit span:nth-child(3){bottom:8%;left:10%;color:var(--green)}.doodle{position:absolute;font:4rem 'Fredoka';color:var(--red)}.doodle-one{right:-15px;bottom:5%}.doodle-two{left:0;top:15%;animation:pulse 1.6s infinite}.marquee{background:var(--yellow);border-block:3px solid var(--ink);padding:16px 0;overflow:hidden;font:700 1.3rem 'Fredoka';white-space:nowrap;transform:rotate(-1deg);width:102%;margin-left:-1%}.marquee div{width:max-content;animation:marquee 18s linear infinite}.intro{text-align:center;max-width:1100px;margin:auto}.intro h2,.section-heading h2,.gallery-title h2,.contact h2{font-size:clamp(3rem,6vw,6.8rem);letter-spacing:-.045em}.intro>p:last-child{max-width:720px;margin:35px auto 0;font-size:1.2rem;line-height:1.7}.spaces{background:#fff}.section-heading{display:grid;grid-template-columns:1.3fr .7fr;align-items:end;gap:4rem;margin-bottom:60px}.section-heading>p{line-height:1.65;max-width:460px}.space-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.space-card{min-height:430px;border:3px solid var(--ink);border-radius:var(--radius);padding:32px;position:relative;transition:transform .25s,box-shadow .25s}.space-card:hover{transform:translateY(-10px) rotate(-1deg);box-shadow:9px 10px 0 var(--ink)}.space-card.yellow{background:var(--yellow)}.space-card.green{background:var(--green)}.space-card.coral{background:var(--pink)}.card-number{position:absolute;right:25px;top:25px;font-weight:700}.card-icon{font-size:4rem;height:130px}.space-card h3{font-size:2.4rem}.space-card p{line-height:1.6}.space-card a{position:absolute;bottom:30px;font-weight:700}.gallery-section{background:var(--ink);color:#fff;text-align:center}.gallery-title .eyebrow{color:var(--yellow)}.gallery-title>p:last-child{color:#bbb}.filters{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:40px 0}.filters button{border:1px solid #777;background:transparent;color:white;border-radius:999px;padding:12px 21px;cursor:pointer}.filters button.active,.filters button:hover{background:var(--yellow);color:var(--ink);border-color:var(--yellow)}.photo-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:15px;text-align:left}.photo-card{grid-column:span 4;min-height:300px;border:0;padding:0;border-radius:18px;overflow:hidden;position:relative;cursor:zoom-in;background:#444;color:white}.photo-card:nth-child(7n+1),.photo-card:nth-child(7n+5){grid-column:span 6}.photo-card img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.photo-card:hover img{transform:scale(1.06)}.photo-card span{position:absolute;left:14px;bottom:14px;background:#fff;color:var(--ink);padding:8px 12px;border-radius:999px;font-size:.76rem;font-weight:700}.load-more{margin-top:40px;background:var(--yellow);color:var(--ink)}.party-banner{background:var(--red);color:#fff;display:grid;grid-template-columns:1.1fr .9fr;gap:10vw;align-items:end;position:relative;overflow:hidden}.party-banner .eyebrow{color:var(--yellow)}.party-banner h2{font-size:clamp(4rem,9vw,9rem)}.party-banner p{font-size:1.2rem;line-height:1.6}.pill-light{background:white;color:var(--red);margin-top:25px}.burst{position:absolute;right:12%;top:12%;background:var(--yellow);color:var(--ink);width:110px;height:110px;display:grid;place-items:center;clip-path:polygon(50% 0,61% 24%,85% 15%,76% 39%,100% 50%,76% 61%,85% 85%,61% 76%,50% 100%,39% 76%,15% 85%,24% 61%,0 50%,24% 39%,15% 15%,39% 24%);font:700 1.4rem 'Fredoka';animation:pulse 2s infinite}.contact{display:grid;grid-template-columns:1fr 1fr;gap:10vw}.contact-copy>p:not(.eyebrow){font-size:1.25rem;line-height:1.6}.map-link{font-weight:700}.contact-card{background:var(--yellow);border:3px solid var(--ink);border-radius:var(--radius);padding:clamp(25px,5vw,60px);display:flex;flex-direction:column;align-items:flex-start;box-shadow:12px 12px 0 var(--red);transform:rotate(1deg)}.contact-big{font:700 clamp(2rem,4.7vw,4.8rem) 'Fredoka';text-decoration:none;margin-top:15px}.contact-card hr{width:100%;border:0;border-top:2px solid var(--ink);margin:30px 0}.contact-card small{margin-top:30px;line-height:1.5}.contact-card > span{display:inline-block;position:relative;margin-top:12px;padding-left:2px;font-size:1.45rem;font-weight:400;font-family:'Segoe Script','Bradley Hand','Comic Sans MS',cursive;color:#b8452f;letter-spacing:0;transform:rotate(-4deg) translateX(10px);text-shadow:0 1px 0 rgba(255,255,255,.35);opacity:.98}.contact-card > span::after{content:"";display:block;width:72px;height:10px;margin-top:-2px;margin-left:4px;border-bottom:3px solid rgba(184,69,47,.35);border-radius:50%;transform:rotate(-7deg)}footer{padding:30px clamp(20px,7vw,110px);display:flex;align-items:center;gap:30px;border-top:1px solid #ddd}footer img{width:170px}footer p{margin-right:auto}.lightbox{width:100vw;height:100vh;max-width:none;max-height:none;border:0;background:rgba(20,18,16,.96);color:white;padding:30px}.lightbox::backdrop{background:#111}.lightbox figure{height:100%;margin:0;display:grid;place-items:center}.lightbox figure img{max-height:88vh;max-width:88vw;border-radius:12px}.lightbox figcaption{position:absolute;bottom:15px}.lightbox button{position:absolute;z-index:2;border:0;background:white;color:#111;border-radius:50%;width:48px;height:48px;cursor:pointer;font-size:1.4rem}.lightbox-close{right:20px;top:20px}.lightbox-prev{left:20px;top:50%}.lightbox-next{right:20px;top:50%}.reveal{opacity:0;transform:translateY(35px);transition:opacity .7s,transform .7s}.reveal.visible{opacity:1;transform:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{transform:scale(1.12) rotate(5deg)}}@keyframes marquee{to{transform:translateX(-50%)}}
@media(max-width:900px){.site-header{height:78px;background:rgba(255,249,236,.96);position:fixed}.brand img{width:160px}.menu-toggle{display:block;margin-left:auto}.site-header nav{display:none;position:absolute;top:78px;left:0;right:0;background:var(--cream);padding:25px;flex-direction:column;border-bottom:3px solid var(--ink)}.site-header nav.open{display:flex}.header-cta{display:none}.hero{grid-template-columns:1fr;padding-top:120px}.hero-copy{text-align:center}.lead{margin-inline:auto}.hero-actions,.quick-facts{justify-content:center}.hero-visual{min-height:500px}.section-heading,.party-banner,.contact{grid-template-columns:1fr}.space-cards{grid-template-columns:1fr}.space-card{min-height:360px}.photo-card,.photo-card:nth-child(n){grid-column:span 6;min-height:250px}.party-banner{gap:50px}.burst{right:5%;top:5%}}
@media(max-width:560px){h1{font-size:3.8rem}.hero{padding-inline:18px}.hero-actions{flex-direction:column}.quick-facts{gap:15px}.quick-facts li{flex:1}.hero-visual{min-height:420px}.hero-photo{height:390px}.section-pad{padding:70px 18px}.intro h2,.section-heading h2,.gallery-title h2,.contact h2{font-size:3rem}.photo-card,.photo-card:nth-child(n){grid-column:span 12;min-height:330px}.filters{justify-content:flex-start}.party-banner h2{font-size:4.2rem}.burst{width:80px;height:80px}.contact-big{font-size:2.2rem}footer{flex-direction:column;text-align:center}footer p{margin:0}.lightbox{padding:8px}.lightbox-prev{left:8px}.lightbox-next{right:8px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
.map-frame{grid-column:1/-1;margin-top:10px;border:3px solid var(--ink);border-radius:var(--radius);overflow:hidden;background:#fff;box-shadow:10px 10px 0 var(--blue)}.map-frame iframe{display:block;width:100%;height:460px;border:0}.map-frame p{margin:0;padding:10px 16px;font-size:.75rem;text-align:right}.map-frame a{font-weight:700}
@media(max-width:560px){.map-frame iframe{height:360px}}

.contact-form-wrap{grid-column:1/-1;display:grid;grid-template-columns:.65fr 1.35fr;gap:clamp(35px,7vw,90px);padding:clamp(30px,5vw,65px);background:#fff;border:3px solid var(--ink);border-radius:var(--radius)}.form-intro h3{font-size:clamp(2.2rem,4vw,4.2rem);line-height:1}.form-intro>p:last-child{line-height:1.6}.contact-form{display:grid;grid-template-columns:1fr 1fr;gap:22px}.contact-form label{display:flex;flex-direction:column;gap:9px;font-weight:700}.contact-form input:not([type="checkbox"]),.contact-form textarea{width:100%;border:2px solid var(--ink);border-radius:14px;background:var(--cream);padding:15px 17px;font:inherit;color:var(--ink);outline:none;transition:box-shadow .2s,border-color .2s}.contact-form textarea{resize:vertical}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--red);box-shadow:0 0 0 4px rgba(255,61,32,.14)}.form-wide{grid-column:1/-1}.consent{flex-direction:row!important;align-items:flex-start;font-size:.82rem;line-height:1.45;font-weight:500!important}.consent input{width:19px;height:19px;flex:0 0 auto;accent-color:var(--red)}.form-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.form-actions small{max-width:260px;line-height:1.4}.form-trap{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}.thanks-page{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(circle at 15% 20%,var(--yellow) 0 7%,transparent 7.2%),radial-gradient(circle at 85% 75%,var(--pink) 0 10%,transparent 10.2%),var(--cream)}.thanks-card{width:min(680px,100%);padding:clamp(35px,7vw,80px);text-align:center;background:#fff;border:3px solid var(--ink);border-radius:var(--radius);box-shadow:14px 14px 0 var(--yellow)}.thanks-card>img{width:210px;margin:0 auto 40px}.thanks-card h1{font-size:clamp(4rem,10vw,7rem);color:var(--red)}.thanks-card>p:not(.eyebrow){font-size:1.15rem;line-height:1.6;margin:25px auto 35px;max-width:440px}.thanks-icon{width:70px;height:70px;margin:0 auto 25px;border-radius:50%;display:grid;place-items:center;background:var(--green);border:3px solid var(--ink);font-size:2rem;font-weight:700}
@media(max-width:900px){.contact-form-wrap{grid-template-columns:1fr}}
@media(max-width:560px){.contact-form{grid-template-columns:1fr}.contact-form label{grid-column:1}.form-actions{align-items:flex-start;flex-direction:column}}
.contact-choice{width:100%;margin-top:24px;padding:18px;border:2px solid var(--ink);border-radius:16px;background:rgba(255,255,255,.72);display:flex;align-items:center;justify-content:space-between;gap:15px}.contact-choice span{font-size:.85rem}.contact-choice a{font-weight:700;text-align:right}
@media(max-width:560px){.contact-choice{align-items:flex-start;flex-direction:column}.contact-choice a{text-align:left}}
.back-to-top{position:fixed;right:20px;bottom:20px;z-index:40;display:inline-flex;align-items:center;gap:9px;width:auto;min-width:58px;padding:12px 16px;border-radius:999px;border:3px solid var(--ink);background:var(--yellow);color:var(--ink);font:700 .95rem 'Fredoka';box-shadow:8px 8px 0 var(--red);cursor:pointer;opacity:0;transform:translateY(18px) scale(.94);pointer-events:none;transition:transform .28s ease,opacity .28s ease,box-shadow .2s}.back-to-top:hover{transform:translateY(-4px) rotate(-4deg)}.back-to-top.visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.back-to-top[hidden]{display:inline-flex}.back-to-top-icon{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#fff;color:var(--red);font-size:1.05rem;line-height:1}.back-to-top-label{white-space:nowrap;letter-spacing:.08em;text-transform:uppercase}.back-to-top-label::before{content:"☀";display:inline-block;margin-right:6px;color:var(--red);font-size:.9rem;transform:translateY(-1px)}.back-to-top.visible .back-to-top-label::before{animation:pulse 1.8s ease-in-out infinite}
@media(max-width:560px){.back-to-top{right:14px;bottom:14px;padding:10px 13px;font-size:.84rem;box-shadow:6px 6px 0 var(--red)}.back-to-top-icon{width:22px;height:22px;font-size:.95rem}}
.map-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;padding:25px 30px;background:var(--yellow);border-bottom:3px solid var(--ink)}.map-heading .eyebrow{margin-bottom:8px}.map-heading h3{font-size:clamp(2rem,4vw,3.7rem)}.map-heading address{font-style:normal;font-weight:700;line-height:1.55;text-align:right}
@media(max-width:560px){.map-heading{align-items:flex-start;flex-direction:column}.map-heading address{text-align:left}}

.phone-cta{background:transparent;border:0;padding:0;color:inherit;text-align:left;cursor:pointer}.phone-cta:hover{text-decoration:underline;text-decoration-thickness:4px;text-underline-offset:7px}.phone-cta:disabled{opacity:.65;cursor:wait}.phone-protection{width:100%;margin-top:22px;padding:18px;background:rgba(255,255,255,.62);border:2px solid var(--ink);border-radius:18px;transform:rotate(-1deg)}.phone-protection p{margin:0 0 14px;line-height:1.45;font-weight:700}.phone-call-link{display:inline-flex;margin-top:14px;font-weight:800;text-decoration:underline;text-underline-offset:4px}.phone-protection[data-state="error"]{background:#fff0ec}.phone-protection[data-state="success"]{background:#efffe9}

/* Motore ancore: la posizione viene calcolata in JS dalla geometria reale. */
html{scroll-behavior:auto;scroll-padding-top:0}
.location{background:var(--cream)}
.location .map-frame{margin-top:0}

/* Ancore deterministiche: marker a quota zero prima di ogni sezione. */
.anchor-marker{display:block;width:1px;height:0;overflow:hidden;pointer-events:none;visibility:hidden}
.anchor-marker-inside{grid-column:1/-1}
html{scroll-behavior:auto!important;scroll-padding-top:0!important}

/* Allineamento dedicato al consenso privacy e alle azioni del modulo contatti.
   Regole isolate: non modificano header, sezioni o ancore di navigazione. */
#contact-form .consent{display:grid!important;grid-template-columns:20px minmax(0,1fr);column-gap:14px;align-items:start!important;font-size:.88rem;line-height:1.5;font-weight:500!important}
#contact-form .consent input[type="checkbox"]{margin:2px 0 0;width:20px;height:20px}
#contact-form .consent span{display:block;min-width:0}
#contact-form .consent a{display:inline;text-decoration-thickness:1px;text-underline-offset:3px}
#contact-form .form-actions{display:grid;grid-template-columns:max-content minmax(220px,360px);align-items:center;gap:24px;margin-top:4px}
#contact-form .form-actions small{max-width:none;padding-left:22px;border-left:1px solid rgba(29,29,29,.22);font-size:.82rem;line-height:1.45}
#contact-form .form-actions small strong{font-weight:700}
@media(max-width:700px){#contact-form .form-actions{grid-template-columns:1fr;align-items:start;gap:16px}#contact-form .form-actions small{padding-left:0;padding-top:14px;border-left:0;border-top:1px solid rgba(29,29,29,.18)}}


/* Contenuti locali e verifica modulo */
.seo-local{max-width:980px}
.seo-local strong{font-weight:800}
.seo-faq{margin-top:2rem;display:grid;gap:.55rem}
.seo-faq h3{margin:1.2rem 0 .15rem;font-size:clamp(1.2rem,2vw,1.55rem)}
.seo-faq p{margin:.15rem 0}
.form-security{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px}
.form-security p{margin:0;max-width:480px;font-size:.92rem;line-height:1.45}
#contact-form-status[data-state="success"]{font-weight:700}
#contact-form-status[data-state="error"]{font-weight:700}
.contact-form button:disabled{opacity:.65;cursor:wait}
