:root{--rose-gold:#B76E79;--rose-light:#D4A0A7;--rose-dark:#8B4F57;--ivory:#FFFFF0;--soft-pink:#FFE4E1;--gold:#D4AF37;--white:#FFF;--light-gray:#F8F6F4;--medium-gray:#E8E4E1;--dark-gray:#6B6B6B;--dark:#2C2C2C;--success:#4CAF50;--success-bg:#E8F5E9;--error:#E53935;--error-bg:#FFEBEE;--shadow-sm:0 2px 8px rgba(0,0,0,.08);--shadow-md:0 4px 16px rgba(0,0,0,.12);--shadow-lg:0 8px 32px rgba(0,0,0,.16);--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--transition:all .3s ease;--font:'Segoe UI',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:var(--font);color:var(--dark);background:var(--light-gray);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--rose-gold);text-decoration:none;transition:var(--transition)}a:hover{color:var(--rose-dark)}
.container{max-width:960px;margin:0 auto;padding:16px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 24px;border:none;border-radius:var(--radius-md);font-size:1rem;font-weight:600;font-family:var(--font);cursor:pointer;transition:var(--transition);text-decoration:none;line-height:1.4;min-height:48px;-webkit-tap-highlight-color:transparent}
.btn:active{transform:scale(.97)}
.btn-primary{background:linear-gradient(135deg,var(--rose-gold),var(--rose-dark));color:var(--white);box-shadow:0 4px 12px rgba(183,110,121,.35)}
.btn-primary:hover{background:linear-gradient(135deg,var(--rose-dark),#7A3F47);box-shadow:0 6px 18px rgba(183,110,121,.45);color:var(--white)}
.btn-secondary{background:var(--white);color:var(--rose-gold);border:2px solid var(--rose-light)}.btn-secondary:hover{background:var(--soft-pink);color:var(--rose-dark)}
.btn-danger{background:var(--error);color:var(--white)}.btn-danger:hover{background:#C62828;color:var(--white)}
.btn-block{display:flex;width:100%}.btn-sm{padding:8px 14px;font-size:.85rem;min-height:36px;border-radius:var(--radius-sm)}
.form-group{margin-bottom:16px}
.form-input{width:100%;padding:14px 18px;border:2px solid var(--medium-gray);border-radius:var(--radius-md);font-size:1rem;font-family:var(--font);background:var(--white);color:var(--dark);transition:var(--transition);-webkit-appearance:none}
.form-input:focus{outline:none;border-color:var(--rose-gold);box-shadow:0 0 0 3px rgba(183,110,121,.15)}
.form-input::placeholder{color:var(--dark-gray)}
.alert{padding:12px 18px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:.9rem;font-weight:500;animation:slideDown .3s ease}
.alert-error{background:var(--error-bg);color:var(--error);border-left:4px solid var(--error)}
.alert-success{background:var(--success-bg);color:var(--success);border-left:4px solid var(--success)}
.login-page{background:linear-gradient(135deg,var(--soft-pink) 0%,var(--ivory) 50%,var(--rose-light) 100%);min-height:100vh;display:flex;align-items:center;justify-content:center}
.login-container{width:100%;max-width:420px;padding:20px}
.login-card{background:var(--white);border-radius:var(--radius-xl);padding:40px 32px;box-shadow:var(--shadow-lg);text-align:center}
.login-icon{font-size:3.5rem;margin-bottom:8px;animation:pulse 2s ease-in-out infinite}
.login-title{font-size:1.6rem;color:var(--dark);margin-bottom:4px;font-weight:700}
.login-date{font-size:.95rem;color:var(--rose-gold);font-weight:500;margin-bottom:8px}
.login-subtitle{font-size:.9rem;color:var(--dark-gray);margin-bottom:24px;line-height:1.5}
.login-form{margin-top:8px}.login-footer{text-align:center;margin-top:24px;font-size:.8rem;color:var(--dark-gray);opacity:.7}
.social-buttons{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.btn-social{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 20px;border-radius:var(--radius-md);font-size:.95rem;font-weight:600;font-family:var(--font);cursor:pointer;transition:var(--transition);text-decoration:none;min-height:48px;border:none}
.btn-google{background:#fff;color:#333;border:2px solid #ddd;box-shadow:var(--shadow-sm)}.btn-google:hover{background:#f5f5f5;border-color:#bbb;color:#333}
.btn-facebook{background:#1877F2;color:#fff}.btn-facebook:hover{background:#166FE5;color:#fff}
.social-icon{font-weight:700;font-size:1.2rem;width:24px;text-align:center}
.divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--dark-gray);font-size:.85rem}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--medium-gray)}
.form-row{display:flex;gap:10px}.form-half{flex:1}
.login-switch{margin-top:16px;font-size:.85rem;color:var(--dark-gray);text-align:center}.login-switch a{color:var(--rose-gold);font-weight:600}
.user-greeting{font-size:.95rem;color:var(--dark-gray);margin-top:6px}.user-greeting strong{color:var(--rose-gold)}
.home-page{background:linear-gradient(180deg,var(--soft-pink) 0%,var(--light-gray) 40%)}
.home-header{text-align:center;padding:32px 0 16px}
.header-icon{font-size:3rem;margin-bottom:8px;animation:pulse 3s ease-in-out infinite}
.event-title{font-size:1.8rem;color:var(--dark);font-weight:700;letter-spacing:-.5px}
.event-date{font-size:1rem;color:var(--rose-gold);font-weight:500;margin-top:4px}
.stats-bar{display:flex;justify-content:center;gap:32px;padding:16px;background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin:16px 0 24px}
.stat-item{display:flex;flex-direction:column;align-items:center;gap:2px}
.stat-icon{font-size:1.3rem}.stat-value{font-size:1.5rem;font-weight:700;color:var(--dark);line-height:1.2}
.stat-label{font-size:.8rem;color:var(--dark-gray);text-transform:uppercase;letter-spacing:.5px}
.action-buttons{display:flex;flex-direction:column;gap:14px;margin-bottom:24px}
.btn-action{min-height:80px;border-radius:var(--radius-lg);font-size:1.1rem;padding:20px 24px;display:flex;align-items:center;justify-content:center;gap:12px;box-shadow:var(--shadow-md);border:none}
.btn-action .btn-icon{font-size:1.8rem}.btn-action .btn-text{font-weight:600}
.btn-camera{background:linear-gradient(135deg,var(--rose-gold),var(--rose-dark));color:var(--white)}.btn-camera:hover{background:linear-gradient(135deg,var(--rose-dark),#7A3F47);color:var(--white)}
.btn-gallery{background:linear-gradient(135deg,var(--gold),#C09A2E);color:var(--white)}.btn-gallery:hover{background:linear-gradient(135deg,#C09A2E,#A6841F);color:var(--white)}
.btn-view{background:var(--white);color:var(--dark);border:2px solid var(--medium-gray)}.btn-view:hover{background:var(--soft-pink);border-color:var(--rose-light);color:var(--dark)}
.progress-container{background:var(--white);border-radius:var(--radius-md);padding:20px;margin-bottom:16px;box-shadow:var(--shadow-sm);text-align:center;animation:slideDown .3s ease}
.progress-text{font-size:.9rem;color:var(--dark-gray);margin-bottom:10px}
.progress-bar{width:100%;height:12px;background:var(--medium-gray);border-radius:6px;overflow:hidden}
.progress-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--rose-gold),var(--gold));border-radius:6px;transition:width .3s ease;position:relative}
.progress-fill::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 1.5s infinite}
.progress-percent{font-size:.85rem;color:var(--rose-gold);font-weight:600;margin-top:8px}
.upload-result{padding:14px 18px;border-radius:var(--radius-md);margin-bottom:16px;font-size:.9rem;animation:slideDown .3s ease;text-align:center}
.upload-result.success{background:var(--success-bg);color:var(--success)}
.upload-result.error{background:var(--error-bg);color:var(--error)}
.qr-section{text-align:center;padding:28px 20px;background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:24px}
.qr-title{font-size:1.1rem;color:var(--dark);margin-bottom:4px}.qr-subtitle{font-size:.85rem;color:var(--dark-gray);margin-bottom:16px}
.qr-code img{max-width:200px;margin:0 auto;border-radius:var(--radius-sm);border:3px solid var(--medium-gray)}
.qr-fallback{font-size:.9rem;color:var(--dark-gray)}.qr-fallback code{display:block;margin-top:8px;padding:10px;background:var(--light-gray);border-radius:var(--radius-sm);word-break:break-all;font-size:.85rem;color:var(--rose-dark)}
.home-footer{display:flex;justify-content:center;gap:24px;padding:20px 0 32px}
.footer-link{color:var(--dark-gray);font-size:.9rem;font-weight:500;padding:10px 16px;border-radius:var(--radius-sm);transition:var(--transition)}.footer-link:hover{background:var(--white);color:var(--rose-gold)}
.gallery-page{background:var(--light-gray)}
.gallery-header{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:16px 0;margin-bottom:8px}
.gallery-header h1{font-size:1.4rem;flex:1}
.back-btn{font-size:.9rem;color:var(--rose-gold);font-weight:600;padding:8px 12px;border-radius:var(--radius-sm);background:var(--white);box-shadow:var(--shadow-sm)}.back-btn:hover{background:var(--soft-pink);color:var(--rose-dark)}
.gallery-stats{font-size:.85rem;color:var(--dark-gray);width:100%}
.masonry-grid{column-count:3;column-gap:12px}
.gallery-item{break-inside:avoid;margin-bottom:12px;border-radius:var(--radius-md);overflow:hidden;background:var(--white);box-shadow:var(--shadow-sm);animation:fadeIn .4s ease}
.gallery-img-wrapper{position:relative;cursor:pointer;overflow:hidden}.gallery-img-wrapper:hover .gallery-img{transform:scale(1.03)}
.gallery-img{width:100%;display:block;transition:transform .3s ease;background:var(--medium-gray);min-height:100px}
.gallery-video-wrapper{position:relative}.gallery-video{width:100%;display:block;background:#000}
.video-badge{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.7);color:var(--white);font-size:.7rem;padding:4px 8px;border-radius:4px;font-weight:600;pointer-events:none}
.heic-badge{position:absolute;top:8px;left:8px;background:rgba(212,175,55,.9);color:var(--white);font-size:.65rem;padding:3px 6px;border-radius:4px;font-weight:700}
.gallery-info{padding:8px 12px}.gallery-date{font-size:.75rem;color:var(--dark-gray)}
.gallery-uploader{display:block;font-size:.78rem;color:var(--rose-gold);font-weight:600;margin-bottom:2px}
.admin-file-uploader{display:block;font-size:.7rem;color:var(--rose-gold);font-weight:500}
.slide-uploader{position:absolute;bottom:12px;left:16px;color:rgba(255,255,255,.7);font-size:.85rem;font-weight:300;background:rgba(0,0,0,.4);padding:4px 12px;border-radius:12px;z-index:3}
.empty-gallery{column-span:all;text-align:center;padding:60px 20px}.empty-icon{font-size:4rem;margin-bottom:16px;opacity:.5}.empty-gallery p{color:var(--dark-gray);font-size:1rem;margin-bottom:20px}
.lightbox{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.92);z-index:9999;display:flex;align-items:center;justify-content:center;animation:fadeIn .25s ease;cursor:pointer}
.lightbox-close{position:absolute;top:16px;right:20px;background:rgba(255,255,255,.15);border:none;color:var(--white);font-size:1.6rem;width:44px;height:44px;border-radius:50%;cursor:pointer;z-index:10000;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.lightbox-close:hover{background:rgba(255,255,255,.3)}
.lightbox-img{max-width:92%;max-height:92vh;object-fit:contain;border-radius:var(--radius-sm);cursor:default;animation:zoomIn .3s ease}
.slideshow-page{background:#000;overflow:hidden;cursor:none}.slideshow-page:hover{cursor:default}
.slideshow-container{position:fixed;top:0;left:0;width:100%;height:100%}
.slide{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 1s ease-in-out;z-index:1}.slide.active{opacity:1;z-index:2}.slide-media{max-width:100%;max-height:100%;object-fit:contain}
.slideshow-empty{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:rgba(255,255,255,.6);z-index:5}.slideshow-empty-icon{font-size:5rem;margin-bottom:16px;animation:pulse 2s infinite}.slideshow-empty p{font-size:1.2rem}
.slideshow-controls{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);display:flex;gap:8px;z-index:100;background:rgba(0,0,0,.6);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:10px 18px;border-radius:50px;opacity:0;transition:opacity .3s ease}
.slideshow-page:hover .slideshow-controls{opacity:1}
.ss-btn{background:rgba(255,255,255,.15);border:none;color:var(--white);width:44px;height:44px;border-radius:50%;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;transition:var(--transition);text-decoration:none}.ss-btn:hover{background:rgba(255,255,255,.3);color:var(--white)}
.slideshow-counter{position:fixed;top:16px;right:20px;color:rgba(255,255,255,.5);font-size:.85rem;z-index:100;background:rgba(0,0,0,.4);padding:6px 14px;border-radius:20px;opacity:0;transition:opacity .3s ease}.slideshow-page:hover .slideshow-counter{opacity:1}
.slideshow-title{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.3);font-size:.9rem;font-weight:300;letter-spacing:2px;text-transform:uppercase;z-index:99;white-space:nowrap}
.admin-page{background:var(--light-gray)}.admin-header{display:flex;align-items:center;gap:16px;padding:16px 0;margin-bottom:16px;flex-wrap:wrap}.admin-header h1{font-size:1.4rem;flex:1}
.admin-login-section{display:flex;justify-content:center;padding:40px 0}
.admin-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px}.admin-stat-card{background:var(--white);border-radius:var(--radius-md);padding:20px;text-align:center;box-shadow:var(--shadow-sm)}
.stat-number{font-size:1.5rem;font-weight:700;color:var(--rose-gold);line-height:1.2}.stat-desc{font-size:.8rem;color:var(--dark-gray);margin-top:4px}
.admin-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}.admin-actions .btn{font-size:.85rem;padding:10px 16px}
.admin-files h2{font-size:1.1rem;margin-bottom:12px;color:var(--dark)}
.admin-file-list{display:flex;flex-direction:column;gap:8px}.admin-file-item{display:flex;align-items:center;gap:12px;background:var(--white);border-radius:var(--radius-md);padding:10px 14px;box-shadow:var(--shadow-sm);transition:var(--transition)}.admin-file-item:hover{box-shadow:var(--shadow-md)}
.admin-file-thumb{width:56px;height:56px;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0;background:var(--light-gray)}.admin-thumb{width:100%;height:100%;object-fit:cover}
.admin-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;background:var(--medium-gray)}
.admin-file-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.admin-file-name{font-size:.8rem;font-weight:600;color:var(--dark);word-break:break-all;line-height:1.3}.admin-file-meta{font-size:.7rem;color:var(--dark-gray)}
.admin-file-actions{display:flex;gap:6px;flex-shrink:0}.empty-text{text-align:center;color:var(--dark-gray);padding:40px 0;font-size:.95rem}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideDown{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes zoomIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.lazy{opacity:0;transition:opacity .4s ease}.lazy.loaded{opacity:1}
@media(max-width:768px){.masonry-grid{column-count:2}.container{padding:12px}.event-title{font-size:1.5rem}.login-card{padding:32px 24px}.form-row{flex-direction:column;gap:0}}
@media(max-width:480px){html{font-size:15px}.masonry-grid{column-count:1}.stats-bar{gap:20px;padding:14px}.stat-value{font-size:1.3rem}.btn-action{min-height:72px;font-size:1rem}.btn-action .btn-icon{font-size:1.5rem}.gallery-header h1{font-size:1.2rem}.admin-stats{grid-template-columns:1fr 1fr;gap:8px}.admin-stat-card{padding:14px}.stat-number{font-size:1.2rem}.admin-file-item{padding:8px 10px;gap:8px}.admin-file-thumb{width:44px;height:44px}.admin-actions{flex-direction:column}.admin-actions .btn{width:100%}.home-header{padding:20px 0 12px}.header-icon{font-size:2.5rem}.event-title{font-size:1.4rem}.qr-code img{max-width:160px}.login-card{padding:28px 20px}.login-icon{font-size:2.8rem}.login-title{font-size:1.4rem}.slideshow-controls{bottom:16px;padding:8px 12px;gap:6px}.ss-btn{width:40px;height:40px;font-size:1rem}}
@media(min-width:769px){.action-buttons{flex-direction:row}.action-buttons .btn-action{flex:1}.masonry-grid{column-count:3}.admin-stats{grid-template-columns:repeat(4,1fr)}}
@media print{.slideshow-controls,.home-footer,.back-btn,.admin-actions,.admin-file-actions{display:none!important}}

/* ======================== APP HEADER IMAGE PATCH ======================== */
.home-header.app-header-with-image{
    min-height:220px;
    border-radius:20px;
    padding:34px 18px;
    margin:12px 0 18px;
    background-size:cover;
    background-position:center center;
    background-repeat:no-repeat;
    position:relative;
    overflow:hidden;
    box-shadow:0 6px 24px rgba(0,0,0,.18);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
}
.home-header.app-header-with-image .header-icon,
.home-header.app-header-with-image .event-title,
.home-header.app-header-with-image .event-date,
.home-header.app-header-with-image .user-greeting{
    position:relative;
    z-index:2;
    color:#fff;
    text-shadow:0 2px 8px rgba(0,0,0,.65);
}
.home-header.app-header-with-image .event-title{
    font-size:2rem;
    font-weight:800;
}
.home-header.app-header-with-image .event-date,
.home-header.app-header-with-image .user-greeting{
    color:#fff;
    font-weight:600;
}
.home-header.app-header-with-image .user-greeting strong{
    color:#fff;
}
.admin-header-image-section{
    background:#fff;
    border-radius:16px;
    padding:18px;
    margin:22px 0;
    box-shadow:0 2px 8px rgba(0,0,0,.08);
}
.admin-header-image-section h2{
    font-size:1.15rem;
    margin-bottom:8px;
    color:#2C2C2C;
}
.admin-header-image-help{
    color:#666;
    font-size:.9rem;
    margin-bottom:14px;
}
.admin-header-image-preview{
    width:100%;
    max-height:220px;
    overflow:hidden;
    border-radius:14px;
    background:#F8F6F4;
    border:1px solid #E8E4E1;
    margin-bottom:14px;
}
.admin-header-image-preview img{
    width:100%;
    height:220px;
    object-fit:cover;
    display:block;
}
.admin-header-image-form,
.admin-header-image-delete{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    align-items:center;
    margin-top:10px;
}
.admin-header-image-form .form-input{
    flex:1 1 260px;
}
@media(max-width:640px){
    .home-header.app-header-with-image{min-height:180px;padding:26px 14px;}
    .home-header.app-header-with-image .event-title{font-size:1.55rem;}
    .admin-header-image-form,.admin-header-image-delete{flex-direction:column;align-items:stretch;}
    .admin-header-image-form .btn,.admin-header-image-delete .btn{width:100%;}
}
/* ====================== END APP HEADER IMAGE PATCH ====================== */
/* ================= HEADER IMAGE VERTICAL FADE PATCH =================
   Dissolvenza immagine header dall'alto verso il basso.
   La parte bassa sfuma verso il colore di sfondo dell'app.
   Titolo, data e saluto restano sopra il fade grazie a z-index superiore.
===================================================================== */
.home-header.app-header-with-image{
    isolation:isolate;
}
.home-header.app-header-with-image::after{
    content:'';
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    top:0;
    z-index:1;
    pointer-events:none;
    background:linear-gradient(
        to bottom,
        rgba(248,246,244,0) 0%,
        rgba(248,246,244,0) 42%,
        rgba(248,246,244,.28) 68%,
        rgba(248,246,244,.72) 88%,
        #F8F6F4 100%
    );
}
.home-header.app-header-with-image .header-icon,
.home-header.app-header-with-image .event-title,
.home-header.app-header-with-image .event-date,
.home-header.app-header-with-image .user-greeting{
    position:relative;
    z-index:3;
}
@media(max-width:640px){
    .home-header.app-header-with-image::after{
        background:linear-gradient(
            to bottom,
            rgba(248,246,244,0) 0%,
            rgba(248,246,244,0) 36%,
            rgba(248,246,244,.35) 66%,
            rgba(248,246,244,.78) 88%,
            #F8F6F4 100%
        );
    }
}
/* ================= END HEADER IMAGE VERTICAL FADE PATCH ============= */
/* ======================== HEADER ADAPTIVE TEXT PATCH ========================
   Migliora automaticamente la leggibilità del testo header in base allo sfondo.
   Le classi vengono applicate via JavaScript dopo analisi luminosità immagine.
============================================================================ */
.home-header.app-header-with-image{
    --header-text-color:#ffffff;
    --header-shadow-color:rgba(0,0,0,.78);
    --header-overlay-top:rgba(0,0,0,.36);
    --header-overlay-mid:rgba(0,0,0,.30);
    --header-overlay-bottom:rgba(248,246,244,.88);
}
.home-header.app-header-with-image.header-bg-light{
    --header-text-color:#ffffff;
    --header-shadow-color:rgba(0,0,0,.92);
    --header-overlay-top:rgba(0,0,0,.55);
    --header-overlay-mid:rgba(0,0,0,.44);
    --header-overlay-bottom:rgba(248,246,244,.92);
}
.home-header.app-header-with-image.header-bg-dark{
    --header-text-color:#ffffff;
    --header-shadow-color:rgba(0,0,0,.82);
    --header-overlay-top:rgba(0,0,0,.28);
    --header-overlay-mid:rgba(0,0,0,.20);
    --header-overlay-bottom:rgba(248,246,244,.82);
}
.home-header.app-header-with-image.header-bg-mixed{
    --header-text-color:#ffffff;
    --header-shadow-color:rgba(0,0,0,.90);
    --header-overlay-top:rgba(0,0,0,.44);
    --header-overlay-mid:rgba(0,0,0,.34);
    --header-overlay-bottom:rgba(248,246,244,.90);
}
.home-header.app-header-with-image::before{
    content:'';
    position:absolute;
    inset:0;
    z-index:1;
    pointer-events:none;
    background:linear-gradient(
        to bottom,
        var(--header-overlay-top) 0%,
        var(--header-overlay-mid) 42%,
        rgba(0,0,0,.14) 64%,
        rgba(248,246,244,.48) 84%,
        var(--header-overlay-bottom) 100%
    );
}
.home-header.app-header-with-image .header-icon,
.home-header.app-header-with-image .event-title,
.home-header.app-header-with-image .event-date,
.home-header.app-header-with-image .user-greeting{
    color:var(--header-text-color)!important;
    text-shadow:
        0 2px 4px var(--header-shadow-color),
        0 4px 12px var(--header-shadow-color),
        0 0 22px rgba(0,0,0,.36);
    position:relative;
    z-index:4;
}
.home-header.app-header-with-image .event-title{
    font-weight:850;
    letter-spacing:.2px;
}
.home-header.app-header-with-image.header-bg-light .event-title,
.home-header.app-header-with-image.header-bg-mixed .event-title{
    text-shadow:
        0 2px 3px rgba(0,0,0,.95),
        0 5px 14px rgba(0,0,0,.88),
        0 0 28px rgba(0,0,0,.55);
}
.home-header.app-header-with-image.header-readability-ready{
    transition:filter .25s ease, box-shadow .25s ease;
}
@media(max-width:640px){
    .home-header.app-header-with-image::before{
        background:linear-gradient(
            to bottom,
            var(--header-overlay-top) 0%,
            var(--header-overlay-mid) 38%,
            rgba(0,0,0,.16) 62%,
            rgba(248,246,244,.55) 84%,
            var(--header-overlay-bottom) 100%
        );
    }
}
/* ====================== END HEADER ADAPTIVE TEXT PATCH ====================== */
/* ======================== ADMIN EVENT SETTINGS PATCH ======================== */
.admin-event-settings-section{
    background:#fff;
    border-radius:16px;
    padding:18px;
    margin:22px 0;
    box-shadow:0 2px 8px rgba(0,0,0,.08);
}
.admin-event-settings-section h2{
    font-size:1.15rem;
    margin-bottom:8px;
    color:#2C2C2C;
}
.admin-event-settings-help{
    color:#666;
    font-size:.9rem;
    margin-bottom:14px;
}
.admin-event-settings-form{
    display:grid;
    grid-template-columns:1fr 220px auto;
    gap:12px;
    align-items:end;
}
.admin-event-settings-label{
    display:block;
    font-size:.85rem;
    font-weight:700;
    color:var(--rose-gold);
    margin-bottom:6px;
}
@media(max-width:780px){
    .admin-event-settings-form{
        grid-template-columns:1fr;
    }
    .admin-event-settings-form .btn{
        width:100%;
    }
}
/* ====================== END ADMIN EVENT SETTINGS PATCH ====================== */
/* ================= ADMIN EVENT BUTTON ALIGN PATCH =================
   Allinea il pulsante "Salva titolo e data" ai campi Titolo/Data.
   Il pulsante viene portato alla stessa altezza degli input e allineato
   alla base della riga dei campi, evitando disallineamenti verticali.
================================================================== */
.admin-event-settings-form{
    align-items:end;
}
.admin-event-settings-form .form-input{
    min-height:66px;
    height:66px;
}
.admin-event-settings-form > .btn,
.admin-event-settings-form button[type="submit"]{
    align-self:end;
    min-height:66px;
    height:66px;
    padding-top:0;
    padding-bottom:0;
    margin:0;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    white-space:nowrap;
}
@media(max-width:780px){
    .admin-event-settings-form .form-input,
    .admin-event-settings-form > .btn,
    .admin-event-settings-form button[type="submit"]{
        width:100%;
        min-height:56px;
        height:56px;
    }
}
/* =============== END ADMIN EVENT BUTTON ALIGN PATCH =============== */
/* ================= ADMIN EVENT BUTTON ALIGN V2 PATCH =================
   Correzione definitiva allineamento pulsante "Salva titolo e data".

   Motivo:
   i campi Titolo/Data hanno una label sopra l'input, mentre il pulsante no.
   Quindi il pulsante deve compensare l'altezza della label per allinearsi
   al bordo superiore degli input, non alla base dell'intera cella.
==================================================================== */
.admin-event-settings-form{
    align-items:start !important;
}
.admin-event-settings-form .form-group{
    margin-bottom:0 !important;
}
.admin-event-settings-form .form-input{
    height:66px !important;
    min-height:66px !important;
    box-sizing:border-box;
}
.admin-event-settings-form > .btn,
.admin-event-settings-form button[type="submit"]{
    align-self:start !important;
    height:66px !important;
    min-height:66px !important;
    margin-top:29px !important;
    margin-bottom:0 !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    white-space:nowrap;
    box-sizing:border-box;
}
@media(max-width:780px){
    .admin-event-settings-form{
        grid-template-columns:1fr !important;
    }
    .admin-event-settings-form .form-input{
        height:56px !important;
        min-height:56px !important;
    }
    .admin-event-settings-form > .btn,
    .admin-event-settings-form button[type="submit"]{
        width:100% !important;
        height:56px !important;
        min-height:56px !important;
        margin-top:0 !important;
    }
}
/* =============== END ADMIN EVENT BUTTON ALIGN V2 PATCH =============== */
/* ================= ADMIN USERS PAGINATION CSS PATCH ================= */
.admin-users-pagination{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    margin-top:14px;
    flex-wrap:wrap;
}
.admin-users-pagination-info{
    color:#666;
    font-size:.9rem;
    font-weight:600;
}
.admin-users-pagination button:disabled{
    opacity:.45;
    cursor:not-allowed;
}
/* =============== END ADMIN USERS PAGINATION CSS PATCH =============== */
/* ================= REMOVE GALLERY UPLOAD CSS PATCH =================
   Nasconde eventuali residui visuali della funzione rimossa.
=================================================================== */
.btn-gallery,
button[onclick="triggerGallery()"],
a[onclick="triggerGallery()"]{
    display:none !important;
}
/* =============== END REMOVE GALLERY UPLOAD CSS PATCH =============== */
/* ======================== ADMIN MODALS REORG CSS PATCH ======================== */
.admin-stat-button{
    border:0;
    cursor:pointer;
    font:inherit;
    text-align:center;
    transition:transform .15s ease, box-shadow .15s ease;
}
.admin-stat-button:hover{
    transform:translateY(-2px);
    box-shadow:0 6px 18px rgba(0,0,0,.12);
}
.admin-stat-button:focus-visible{
    outline:3px solid rgba(183,110,121,.35);
    outline-offset:3px;
}
.admin-modal-open{
    overflow:hidden;
}
.admin-modal-backdrop{
    position:fixed;
    inset:0;
    display:none;
    align-items:center;
    justify-content:center;
    padding:18px;
    background:rgba(0,0,0,.48);
    z-index:9999;
}
.admin-modal-backdrop.is-open{
    display:flex;
}
.admin-modal{
    width:min(760px, 96vw);
    max-height:88vh;
    background:#fff;
    border-radius:18px;
    box-shadow:0 18px 60px rgba(0,0,0,.30);
    overflow:hidden;
    display:flex;
    flex-direction:column;
    animation:adminModalIn .16s ease-out;
}
.admin-modal-lg{
    width:min(920px, 96vw);
}
.admin-modal-xl{
    width:min(1100px, 98vw);
}
.admin-modal-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:16px 18px;
    border-bottom:1px solid #E8E4E1;
    background:#FFF7F6;
}
.admin-modal-header h2{
    margin:0;
    color:#2C2C2C;
    font-size:1.15rem;
}
.admin-modal-close{
    width:38px;
    height:38px;
    border:0;
    border-radius:50%;
    background:#fff;
    color:var(--rose-dark);
    font-size:1.6rem;
    line-height:1;
    cursor:pointer;
    box-shadow:0 2px 8px rgba(0,0,0,.10);
}
.admin-modal-body{
    padding:18px;
    overflow-y:auto;
    flex:1 1 auto;
    min-height:0;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    padding-bottom:28px;
}
.admin-modal-body .admin-users-section,
.admin-modal-body .admin-event-settings-section,
.admin-modal-body .admin-header-image-section{
    margin:0 0 18px 0;
    box-shadow:none;
    border:1px solid #E8E4E1;
}
.admin-modal-body .admin-users-section:last-child,
.admin-modal-body .admin-event-settings-section:last-child,
.admin-modal-body .admin-header-image-section:last-child{
    margin-bottom:0;
}
.admin-settings-modal-body{
    display:flex;
    flex-direction:column;
    gap:18px;
}
.admin-users-pagination-modal{
    position:sticky;
    bottom:0;
    background:#fff;
    padding:12px 0 2px;
}
@keyframes adminModalIn{
    from{opacity:0;transform:translateY(10px) scale(.985);}
    to{opacity:1;transform:translateY(0) scale(1);}
}
@media(max-width:780px){
    .admin-modal-backdrop{
        padding:10px;
        align-items:flex-start;
    }
    .admin-modal{
        max-height:94vh;
        width:100%;
        margin-top:10px;
    }
    .admin-modal-header,
    .admin-modal-body{
        padding:14px;
    }
}
/* ====================== END ADMIN MODALS REORG CSS PATCH ====================== */
/* ======================== CONNECTED USERS ADMIN CSS PATCH ======================== */
.admin-connected-users-section{
    background:#fff;
    border-radius:16px;
    padding:18px;
    border:1px solid #E8E4E1;
}
.admin-connected-help{
    color:#666;
    font-size:.9rem;
    margin:0 0 14px 0;
}
.admin-connected-users-table small{
    color:#777;
    line-height:1.35;
}
.admin-stat-button .stat-desc{
    pointer-events:none;
}
/* ====================== END CONNECTED USERS ADMIN CSS PATCH ====================== */
/* ======================== ADMIN TILES SAME ROW PATCH ========================
   Allarga l'area utile del pannello amministrativo e compatta i tile per
   mantenerli sulla stessa riga su desktop/tablet largo.
============================================================================ */
body.admin-page .container,
.admin-page .container{
    max-width:1280px !important;
    width:calc(100% - 24px) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:12px !important;
    padding-right:12px !important;
}

.admin-stats{
    display:grid !important;
    grid-template-columns:repeat(5, minmax(140px, 1fr)) !important;
    gap:12px !important;
    align-items:stretch !important;
}

.admin-stat-card,
.admin-stat-button{
    min-width:0 !important;
    padding:14px 10px !important;
    box-sizing:border-box !important;
}

.admin-stat-card .stat-number,
.admin-stat-button .stat-number{
    font-size:clamp(1.25rem, 1.8vw, 1.85rem) !important;
    line-height:1.1 !important;
    white-space:nowrap !important;
}

.admin-stat-card .stat-desc,
.admin-stat-button .stat-desc{
    font-size:clamp(.78rem, 1vw, .95rem) !important;
    line-height:1.2 !important;
    white-space:nowrap !important;
}

.admin-actions{
    gap:10px !important;
    flex-wrap:wrap !important;
}

@media(max-width:1100px){
    .admin-stats{
        grid-template-columns:repeat(3, minmax(150px, 1fr)) !important;
    }
}

@media(max-width:720px){
    body.admin-page .container,
    .admin-page .container{
        width:calc(100% - 16px) !important;
        padding-left:8px !important;
        padding-right:8px !important;
    }
    .admin-stats{
        grid-template-columns:repeat(2, minmax(130px, 1fr)) !important;
        gap:10px !important;
    }
    .admin-stat-card,
    .admin-stat-button{
        padding:12px 8px !important;
    }
}

@media(max-width:430px){
    .admin-stats{
        grid-template-columns:1fr !important;
    }
}
/* ====================== END ADMIN TILES SAME ROW PATCH ====================== */
/* ======================== ADMIN FILE FILTER TILES CSS PATCH ======================== */
.admin-file-filter-tiles{
    display:grid;
    grid-template-columns:repeat(3, minmax(150px, 1fr));
    gap:12px;
    margin:16px 0 22px;
}
.admin-file-filter-tile{
    border:1px solid #E8E4E1;
    border-radius:16px;
    background:#fff;
    padding:14px 12px;
    cursor:pointer;
    box-shadow:0 2px 8px rgba(0,0,0,.08);
    transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;
    text-align:center;
    color:#2C2C2C;
}
.admin-file-filter-tile:hover{
    transform:translateY(-2px);
    box-shadow:0 6px 18px rgba(0,0,0,.12);
}
.admin-file-filter-tile.is-active{
    border-color:var(--rose-gold);
    background:#FFF7F6;
    box-shadow:0 6px 18px rgba(183,110,121,.18);
}
.admin-file-filter-tile .stat-number{
    font-size:clamp(1.25rem, 1.8vw, 1.85rem);
    font-weight:800;
    line-height:1.1;
    color:var(--rose-gold);
    white-space:nowrap;
}
.admin-file-filter-tile .stat-desc{
    margin-top:5px;
    font-size:clamp(.82rem, 1vw, .95rem);
    font-weight:700;
    line-height:1.2;
    white-space:nowrap;
    color:#444;
}
@media(max-width:720px){
    .admin-file-filter-tiles{
        grid-template-columns:1fr;
        gap:10px;
    }
}
/* ====================== END ADMIN FILE FILTER TILES CSS PATCH ====================== */
/* ======================== ADMIN SPACE FOOTER BAR CSS PATCH ======================== */
body.admin-page .container,
.admin-page .container{
    max-width:1280px !important;
    width:calc(100% - 24px) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:12px !important;
    padding-right:12px !important;
}

.admin-stats.admin-stats-primary-tiles{
    display:grid !important;
    grid-template-columns:repeat(2, minmax(220px, 1fr)) !important;
    gap:14px !important;
    align-items:stretch !important;
    width:100% !important;
}

.admin-stats.admin-stats-primary-tiles .admin-primary-wide-tile{
    width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
    padding:18px 14px !important;
}

.admin-stats.admin-stats-primary-tiles .admin-primary-wide-tile .stat-number{
    font-size:clamp(1.45rem, 2vw, 2.1rem) !important;
    line-height:1.1 !important;
    white-space:nowrap !important;
}

.admin-stats.admin-stats-primary-tiles .admin-primary-wide-tile .stat-desc{
    font-size:clamp(.9rem, 1.1vw, 1rem) !important;
    line-height:1.2 !important;
    white-space:nowrap !important;
}

.has-admin-space-footer{
    padding-bottom:72px !important;
}

.admin-space-footer-bar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:9998;
    background:rgba(255,255,255,.96);
    border-top:1px solid #E8E4E1;
    box-shadow:0 -6px 20px rgba(0,0,0,.10);
    backdrop-filter:saturate(140%) blur(8px);
}

.admin-space-footer-content{
    max-width:1280px;
    width:calc(100% - 24px);
    margin:0 auto;
    min-height:54px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:8px 12px;
    box-sizing:border-box;
}

.admin-space-footer-label{
    color:#666;
    font-size:.95rem;
    font-weight:700;
}

.admin-space-footer-value{
    color:var(--rose-gold);
    font-size:1.05rem;
    font-weight:800;
    white-space:nowrap;
}

@media(max-width:720px){
    body.admin-page .container,
    .admin-page .container{
        width:calc(100% - 16px) !important;
        padding-left:8px !important;
        padding-right:8px !important;
    }

    .admin-stats.admin-stats-primary-tiles{
        grid-template-columns:1fr !important;
        gap:10px !important;
    }

    .admin-space-footer-content{
        width:calc(100% - 16px);
        min-height:58px;
        padding:8px;
    }

    .admin-space-footer-label,
    .admin-space-footer-value{
        font-size:.9rem;
    }
}
/* ====================== END ADMIN SPACE FOOTER BAR CSS PATCH ====================== */
/* ======================== ADMIN UPLOADED FILES PAGINATION CSS PATCH ======================== */
.admin-files-pagination-controls{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    flex-wrap:wrap;
    background:#fff;
    border:1px solid #E8E4E1;
    border-radius:14px;
    padding:12px;
    margin:10px 0 14px;
    box-shadow:0 2px 8px rgba(0,0,0,.06);
}

.admin-files-page-size{
    display:flex;
    align-items:center;
    gap:8px;
    color:#666;
    font-size:.9rem;
    font-weight:700;
}

.admin-files-page-size-select{
    min-width:92px;
    height:38px;
    border:1px solid #E8E4E1;
    border-radius:10px;
    background:#fff;
    color:#333;
    padding:0 10px;
    font-weight:700;
}

.admin-files-pagination-main{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    flex-wrap:wrap;
}

.admin-files-pagination-info{
    color:#666;
    font-size:.9rem;
    font-weight:700;
    min-width:190px;
    text-align:center;
}

.admin-files-pagination-controls button:disabled{
    opacity:.45;
    cursor:not-allowed;
}

.admin-files-pagination-empty{
    text-align:center;
    color:#777;
    background:#fff;
    border:1px dashed #E8E4E1;
    border-radius:14px;
    padding:18px;
    margin:12px 0;
}

@media(max-width:720px){
    .admin-files-pagination-controls{
        flex-direction:column;
        align-items:stretch;
    }

    .admin-files-page-size,
    .admin-files-pagination-main{
        width:100%;
        justify-content:center;
    }

    .admin-files-pagination-main .btn{
        flex:1 1 130px;
    }

    .admin-files-pagination-info{
        order:-1;
        width:100%;
        min-width:0;
    }
}
/* ====================== END ADMIN UPLOADED FILES PAGINATION CSS PATCH ====================== */
/* ======================== ADMIN FILE THUMBNAILS FIX CSS PATCH ======================== */
.admin-file-thumb-fixed,
.admin-file-thumb{
    width:76px;
    height:76px;
    min-width:76px;
    position:relative;
    border-radius:14px;
    overflow:hidden;
    background:#F8F6F4;
    border:1px solid #E8E4E1;
    display:flex;
    align-items:center;
    justify-content:center;
}

.admin-thumb,
.admin-thumb-image,
.admin-thumb-video{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
    border-radius:14px;
    background:#F8F6F4;
}

.admin-thumb-video{
    pointer-events:none;
}

.admin-thumb-placeholder{
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.75rem;
    text-decoration:none;
    color:var(--rose-gold);
    background:linear-gradient(135deg, #FFF7F6, #F8F6F4);
}

.admin-thumb-link:hover{
    background:linear-gradient(135deg, #FBE9E7, #FFF7F6);
}

.admin-video-badge{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%, -50%);
    width:30px;
    height:30px;
    border-radius:50%;
    background:rgba(0,0,0,.55);
    color:#fff;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:.9rem;
    line-height:1;
    pointer-events:none;
}

.admin-file-item{
    align-items:center;
}

@media(max-width:640px){
    .admin-file-thumb-fixed,
    .admin-file-thumb{
        width:64px;
        height:64px;
        min-width:64px;
    }
}
/* ====================== END ADMIN FILE THUMBNAILS FIX CSS PATCH ====================== */
/* ======================== USER SHARE OPTIONS NO QR CSS PATCH ======================== */
/* C169 FIX: hide solo la QR LEGACY dentro il pannello condivisione.
   Rimossi i wildcard [id*=qr]/[class*=qrcode]/[class*=qr-code] e il
   generico .qr-section (legittimo, vedi righe ~64) che nascondevano QR validi. */
.user-share-panel .qr-section,
.user-share-panel .qrcode-section,
.user-share-panel .qr-code-section,
.user-share-options .qr-section,
.legacy-qr-share{
    display:none !important;
}

.user-share-panel{
    background:#fff;
    border-radius:20px;
    padding:18px;
    margin:18px 0;
    box-shadow:0 4px 16px rgba(0,0,0,.08);
    border:1px solid #F0E8E6;
}

.user-share-header h2{
    margin:0 0 6px;
    color:#2C2C2C;
    font-size:1.18rem;
}

.user-share-header p{
    margin:0 0 14px;
    color:#666;
    font-size:.92rem;
    line-height:1.4;
}

.user-share-actions{
    display:grid;
    grid-template-columns:repeat(4, minmax(120px, 1fr));
    gap:10px;
}

.user-share-btn{
    border:1px solid #E8E4E1;
    background:#FFFDFC;
    color:#2C2C2C;
    min-height:58px;
    border-radius:16px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    padding:10px 12px;
    text-decoration:none;
    cursor:pointer;
    font-weight:750;
    font-size:.92rem;
    box-shadow:0 2px 8px rgba(0,0,0,.06);
    transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.user-share-btn:hover,
.user-share-btn:focus-visible{
    transform:translateY(-2px);
    border-color:var(--rose-gold);
    box-shadow:0 6px 18px rgba(183,110,121,.16);
    outline:none;
}

.user-share-whatsapp{
    background:#F2FFF6;
}

.user-share-icon{
    font-size:1.15rem;
    line-height:1;
}

.user-share-copy-feedback{
    min-height:20px;
    margin-top:10px;
    color:#2F7D4E;
    font-weight:700;
    font-size:.9rem;
    opacity:0;
    transition:opacity .18s ease;
}

.user-share-copy-feedback.is-visible{
    opacity:1;
}

@media(max-width:760px){
    .user-share-actions{
        grid-template-columns:repeat(2, minmax(120px, 1fr));
    }
}

@media(max-width:420px){
    .user-share-panel{
        padding:14px;
        border-radius:16px;
    }
    .user-share-actions{
        grid-template-columns:1fr;
    }
    .user-share-btn{
        min-height:52px;
    }
}
/* ====================== END USER SHARE OPTIONS NO QR CSS PATCH ====================== */
/* ================= USER SHARE MARGINS NO FOOTER PATCH =================
   Correzione pannello condivisione pagina utente:
   - resta dentro i margini del contenuto;
   - non è fixed/sticky;
   - non occupa e non si sovrappone alla footer bar;
   - i pulsanti restano compatti e responsivi.
====================================================================== */
.user-share-panel{
    position:relative !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    top:auto !important;
    z-index:auto !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin:16px 0 18px !important;
    padding:16px !important;
}

.user-share-actions{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    display:grid !important;
    grid-template-columns:repeat(4, minmax(0, 1fr)) !important;
    gap:10px !important;
}

.user-share-btn{
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    min-height:52px !important;
    padding:9px 10px !important;
    overflow:hidden !important;
}

.user-share-btn span:last-child{
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
}

/* Se nella pagina esiste una footer bar, il pannello condivisione rimane nel flusso pagina
   e il contenuto mantiene spazio sufficiente in basso senza diventare una barra fissa. */
body.has-admin-space-footer .user-share-panel,
.has-admin-space-footer .user-share-panel{
    margin-bottom:18px !important;
}

/* Evita che eventuali regole generiche su footer/fixed bar catturino il pannello share. */
.user-share-panel,
.user-share-panel *{
    float:none !important;
}

@media(max-width:760px){
    .user-share-panel{
        margin-left:0 !important;
        margin-right:0 !important;
        padding:14px !important;
    }
    .user-share-actions{
        grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
        gap:9px !important;
    }
}

@media(max-width:420px){
    .user-share-actions{
        grid-template-columns:1fr !important;
    }
    .user-share-btn{
        min-height:50px !important;
    }
}
/* =============== END USER SHARE MARGINS NO FOOTER PATCH =============== */
/* ======================== AUTO UPDATE ON NEW UPLOAD CSS PATCH ======================== */
.auto-update-notice{
    position:fixed;
    left:50%;
    bottom:18px;
    transform:translateX(-50%) translateY(24px);
    z-index:10020;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    width:min(520px, calc(100% - 24px));
    padding:12px 14px;
    border-radius:999px;
    background:rgba(44,44,44,.95);
    color:#fff;
    box-shadow:0 10px 30px rgba(0,0,0,.25);
    opacity:0;
    pointer-events:none;
    transition:opacity .18s ease, transform .18s ease;
    font-size:.92rem;
}
.auto-update-notice.is-visible{
    opacity:1;
    pointer-events:auto;
    transform:translateX(-50%) translateY(0);
}
.auto-update-notice button{
    border:0;
    border-radius:999px;
    background:#fff;
    color:#2C2C2C;
    padding:7px 12px;
    font-weight:800;
    cursor:pointer;
    white-space:nowrap;
}
.auto-update-notice button:hover{
    background:#FFF7F6;
}
body.has-admin-space-footer .auto-update-notice,
.has-admin-space-footer .auto-update-notice{
    bottom:76px;
}
@media(max-width:520px){
    .auto-update-notice{
        border-radius:16px;
        align-items:stretch;
        flex-direction:column;
        text-align:center;
    }
    .auto-update-notice button{
        width:100%;
    }
}
/* ====================== END AUTO UPDATE ON NEW UPLOAD CSS PATCH ====================== */
/* ======================== PERF200 AUTO UPDATE CSS PATCH ======================== */
.auto-update-notice{
    position:fixed;
    left:50%;
    bottom:18px;
    transform:translateX(-50%) translateY(24px);
    z-index:10020;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    width:min(520px, calc(100% - 24px));
    padding:12px 14px;
    border-radius:999px;
    background:rgba(44,44,44,.95);
    color:#fff;
    box-shadow:0 10px 30px rgba(0,0,0,.25);
    opacity:0;
    pointer-events:none;
    transition:opacity .18s ease, transform .18s ease;
    font-size:.92rem;
}
.auto-update-notice.is-visible{
    opacity:1;
    pointer-events:auto;
    transform:translateX(-50%) translateY(0);
}
.auto-update-notice button{
    border:0;
    border-radius:999px;
    background:#fff;
    color:#2C2C2C;
    padding:7px 12px;
    font-weight:800;
    cursor:pointer;
    white-space:nowrap;
}
body.has-admin-space-footer .auto-update-notice,
.has-admin-space-footer .auto-update-notice{
    bottom:76px;
}
@media(max-width:520px){
    .auto-update-notice{
        border-radius:16px;
        align-items:stretch;
        flex-direction:column;
        text-align:center;
    }
    .auto-update-notice button{ width:100%; }
}
/* ====================== END PERF200 AUTO UPDATE CSS PATCH ====================== */
/* ======================== USER SHARE BODY POSITION CSS PATCH ========================
   Il blocco "Condividi con gli invitati" resta nel body principale,
   dentro i margini complessivi della pagina, e non occupa il footer.
==================================================================================== */
.user-share-body-slot{
    width:100%;
    max-width:100%;
    box-sizing:border-box;
    margin:16px 0 18px;
    padding:0;
    position:relative;
    z-index:auto;
}

.user-share-body-slot .user-share-panel{
    position:relative !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;
    z-index:auto !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin:0 !important;
}

.user-share-body-slot .user-share-actions{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

/* Impedisce che il pannello venga trattato come footer bar o barra fissa. */
footer .user-share-panel,
.footer .user-share-panel,
.admin-space-footer-bar .user-share-panel{
    display:none !important;
}

body.has-admin-space-footer .user-share-body-slot,
.has-admin-space-footer .user-share-body-slot{
    margin-bottom:18px !important;
}

@media(max-width:760px){
    .user-share-body-slot{
        margin:14px 0 16px;
    }
}
/* ====================== END USER SHARE BODY POSITION CSS PATCH ====================== */
/* ======================== USER SHARE LAST BODY MODULE CSS PATCH ========================
   Il blocco "Condividi con gli invitati" è l'ultimo modulo del body principale:
   - non è footer;
   - non è fixed/sticky;
   - resta nei margini complessivi;
   - rimane prima di footer/footer bar/script finali.
====================================================================================== */
.user-share-last-body-module,
.user-share-body-slot.user-share-last-body-module{
    position:relative !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;
    z-index:auto !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin:22px 0 24px !important;
    padding:0 !important;
}

.user-share-last-body-module .user-share-panel{
    position:relative !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin:0 !important;
}

.user-share-last-body-module .user-share-actions{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

footer .user-share-last-body-module,
.footer .user-share-last-body-module,
.admin-space-footer-bar .user-share-last-body-module,
footer .user-share-panel,
.footer .user-share-panel,
.admin-space-footer-bar .user-share-panel{
    display:none !important;
}

body.has-admin-space-footer .user-share-last-body-module,
.has-admin-space-footer .user-share-last-body-module{
    margin-bottom:24px !important;
}

@media(max-width:760px){
    .user-share-last-body-module,
    .user-share-body-slot.user-share-last-body-module{
        margin:18px 0 22px !important;
    }
}
/* ====================== END USER SHARE LAST BODY MODULE CSS PATCH ====================== */
/* ======================== USER HOME LAYOUT REFINE CSS PATCH ========================
   - Il blocco "Condividi con gli invitati" rientra sempre nei margini.
   - "Esci" viene mostrato accanto al nome della persona collegata.
   - "Slideshow" diventa tile a destra di "Guarda le foto".
================================================================================== */
.share-container-parent,
main.share-container-parent,
.container.share-container-parent,
.app-container.share-container-parent,
.page-container.share-container-parent{
    box-sizing:border-box !important;
    max-width:100% !important;
    overflow-x:hidden !important;
}

.user-share-contained-module,
.user-share-last-body-module,
.user-share-body-slot{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    overflow:hidden !important;
}

.user-share-contained-module .user-share-panel,
.user-share-last-body-module .user-share-panel,
.user-share-body-slot .user-share-panel,
.user-share-panel{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin-left:0 !important;
    margin-right:0 !important;
    overflow:hidden !important;
}

.user-share-actions{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    grid-template-columns:repeat(4, minmax(0, 1fr)) !important;
}

.user-share-btn{
    min-width:0 !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

.user-share-btn span:last-child{
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
}

.user-inline-session{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:10px !important;
    flex-wrap:wrap !important;
    max-width:100% !important;
    vertical-align:middle !important;
}

.user-inline-logout{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:32px !important;
    padding:6px 10px !important;
    border-radius:999px !important;
    border:1px solid #E8E4E1 !important;
    background:#fff !important;
    color:var(--rose-dark) !important;
    font-size:.86rem !important;
    font-weight:800 !important;
    line-height:1 !important;
    text-decoration:none !important;
    box-shadow:0 2px 8px rgba(0,0,0,.06) !important;
}

.user-inline-logout:hover,
.user-inline-logout:focus-visible{
    border-color:var(--rose-gold) !important;
    background:#FFF7F6 !important;
    outline:none !important;
}

.home-gallery-slideshow-row{
    display:grid !important;
    grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
    gap:12px !important;
    align-items:stretch !important;
}

.home-gallery-slideshow-row .home-gallery-tile,
.home-gallery-slideshow-row .home-slideshow-tile{
    width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
}

.home-slideshow-tile{
    text-decoration:none !important;
}

.home-slideshow-tile .home-tile-icon{
    display:block;
    font-size:1.35rem;
    line-height:1;
    margin-bottom:4px;
}

.home-slideshow-tile .home-tile-label{
    display:block;
    font-weight:800;
}

@media(max-width:760px){
    .user-share-actions{
        grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
    }
    .home-gallery-slideshow-row{
        grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
        gap:10px !important;
    }
}

@media(max-width:430px){
    .user-share-actions{
        grid-template-columns:1fr !important;
    }
    .home-gallery-slideshow-row{
        grid-template-columns:1fr !important;
    }
    .user-inline-session{
        gap:8px !important;
    }
}
/* ====================== END USER HOME LAYOUT REFINE CSS PATCH ====================== */
/* ======================== USER HOME TILES SHARE LOGOUT CSS PATCH ======================== */
.home-main-tiles-one-row{
    display:grid !important;
    grid-template-columns:repeat(auto-fit, minmax(118px, 1fr)) !important;
    gap:10px !important;
    align-items:stretch !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

.home-main-tiles-one-row .home-main-tile-compact,
.home-main-tiles-one-row a,
.home-main-tiles-one-row button{
    min-width:0 !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    min-height:74px !important;
    padding:10px 8px !important;
    font-size:.9rem !important;
    line-height:1.15 !important;
    text-align:center !important;
    overflow:hidden !important;
}

.home-main-tiles-one-row .home-tile-icon,
.home-main-tiles-one-row .tile-icon,
.home-main-tiles-one-row .action-icon{
    display:block !important;
    font-size:1.25rem !important;
    line-height:1 !important;
    margin-bottom:4px !important;
}

.home-main-tiles-one-row .home-tile-label,
.home-main-tiles-one-row .tile-label,
.home-main-tiles-one-row .action-label{
    display:block !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
}

.user-share-after-tiles-module,
.user-share-after-tiles-module.same-width-as-counters{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin:12px 0 18px !important;
    padding:0 !important;
    overflow:hidden !important;
}

.user-share-after-tiles-module .user-share-panel{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin:0 !important;
    padding:16px !important;
    border-radius:18px !important;
}

.user-share-after-tiles-module .user-share-actions{
    display:grid !important;
    grid-template-columns:repeat(4, minmax(0, 1fr)) !important;
    gap:10px !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

.user-share-after-tiles-module .user-share-btn{
    min-width:0 !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    min-height:50px !important;
    padding:8px 8px !important;
}

.user-share-after-tiles-module .user-share-btn span:last-child{
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
}

.user-inline-session{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:12px !important;
    flex-wrap:wrap !important;
    max-width:100% !important;
}

.user-logout-prominent,
.user-inline-logout,
a.user-logout-prominent,
button.user-logout-prominent{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:36px !important;
    padding:8px 14px !important;
    border-radius:999px !important;
    border:2px solid var(--rose-gold) !important;
    background:var(--rose-gold) !important;
    color:#fff !important;
    font-size:.9rem !important;
    font-weight:900 !important;
    line-height:1 !important;
    text-decoration:none !important;
    box-shadow:0 6px 16px rgba(183,110,121,.28) !important;
}

.user-logout-prominent:hover,
.user-logout-prominent:focus-visible{
    background:var(--rose-dark) !important;
    border-color:var(--rose-dark) !important;
    color:#fff !important;
    outline:none !important;
    transform:translateY(-1px) !important;
}

@media(min-width:900px){
    .home-main-tiles-one-row{
        grid-auto-flow:column !important;
        grid-auto-columns:minmax(118px, 1fr) !important;
        grid-template-columns:none !important;
    }
}

@media(max-width:760px){
    .home-main-tiles-one-row{
        grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
    }
    .user-share-after-tiles-module .user-share-actions{
        grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
    }
}

@media(max-width:430px){
    .home-main-tiles-one-row{
        grid-template-columns:1fr !important;
    }
    .user-share-after-tiles-module .user-share-actions{
        grid-template-columns:1fr !important;
    }
}
/* ====================== END USER HOME TILES SHARE LOGOUT CSS PATCH ====================== */
/* ======================== REMOVE BOTTOM SLIDESHOW BUTTON CSS PATCH ========================
   Nasconde eventuali residui del bottone Slideshow in fondo/footer.
   Il tile principale .home-slideshow-tile resta visibile.
========================================================================================= */
footer a[href*="slideshow.php"],
footer button[data-action*="slideshow"],
.footer a[href*="slideshow.php"],
.app-footer a[href*="slideshow.php"],
.bottom-actions a[href*="slideshow.php"],
.page-bottom a[href*="slideshow.php"],
.footer-bar a[href*="slideshow.php"],
.admin-space-footer-bar a[href*="slideshow.php"],
.bottom-slideshow,
.slideshow-bottom-button{
    display:none !important;
}

.home-slideshow-tile,
[data-home-slideshow-tile="1"]{
    display:flex !important;
}
/* ====================== END REMOVE BOTTOM SLIDESHOW BUTTON CSS PATCH ====================== */
/* ======================== LOGOUT AFTER EXCLAMATION CSS PATCH ======================== */
.logout-after-exclamation-host{
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:8px !important;
    flex-wrap:wrap !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

.user-logout-after-exclamation,
a.user-logout-after-exclamation,
button.user-logout-after-exclamation{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:36px !important;
    padding:8px 14px !important;
    margin-left:4px !important;
    border-radius:999px !important;
    border:2px solid var(--rose-gold) !important;
    background:var(--rose-gold) !important;
    color:#fff !important;
    font-size:.9rem !important;
    font-weight:900 !important;
    line-height:1 !important;
    text-decoration:none !important;
    box-shadow:0 6px 16px rgba(183,110,121,.28) !important;
    white-space:nowrap !important;
}

.user-logout-after-exclamation:hover,
.user-logout-after-exclamation:focus-visible{
    background:var(--rose-dark) !important;
    border-color:var(--rose-dark) !important;
    color:#fff !important;
    outline:none !important;
    transform:translateY(-1px) !important;
}

@media(max-width:430px){
    .logout-after-exclamation-host{
        gap:6px !important;
    }
    .user-logout-after-exclamation,
    a.user-logout-after-exclamation,
    button.user-logout-after-exclamation{
        min-height:34px !important;
        padding:7px 12px !important;
        font-size:.86rem !important;
    }
}
/* ====================== END LOGOUT AFTER EXCLAMATION CSS PATCH ====================== */
/* ======================== LOGOUT AFTER EXCLAMATION V2 CSS PATCH ======================== */
.logout-after-exclamation-v2-host{
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:8px !important;
    flex-wrap:wrap !important;
    max-width:100% !important;
    box-sizing:border-box !important;
}

.user-logout-after-exclamation-v2,
a.user-logout-after-exclamation-v2,
button.user-logout-after-exclamation-v2{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:36px !important;
    padding:8px 14px !important;
    margin-left:4px !important;
    border-radius:999px !important;
    border:2px solid var(--rose-gold) !important;
    background:var(--rose-gold) !important;
    color:#fff !important;
    font-size:.9rem !important;
    font-weight:900 !important;
    line-height:1 !important;
    text-decoration:none !important;
    box-shadow:0 6px 16px rgba(183,110,121,.28) !important;
    white-space:nowrap !important;
}

.user-logout-after-exclamation-v2:hover,
.user-logout-after-exclamation-v2:focus-visible{
    background:var(--rose-dark) !important;
    border-color:var(--rose-dark) !important;
    color:#fff !important;
    outline:none !important;
    transform:translateY(-1px) !important;
}

@media(max-width:430px){
    .logout-after-exclamation-v2-host{
        gap:6px !important;
    }
    .user-logout-after-exclamation-v2,
    a.user-logout-after-exclamation-v2,
    button.user-logout-after-exclamation-v2{
        min-height:34px !important;
        padding:7px 12px !important;
        font-size:.86rem !important;
    }
}
/* ====================== END LOGOUT AFTER EXCLAMATION V2 CSS PATCH ====================== */
/* ======================== WS COPYRIGHT DISCLAIMER CSS PATCH ======================== */
.ws-copyright-bar{
    width:100%;
    text-align:center;
    padding:14px 12px 16px;
    margin-top:24px;
    box-sizing:border-box;
    border-top:1px solid rgba(188,150,92,.22);
    background:transparent;
}

.ws-copyright-bar p{
    margin:0;
    padding:0;
    font-size:.78rem;
    color:rgba(80,56,58,.45);
    font-weight:500;
    letter-spacing:.3px;
    line-height:1.4;
}

.ws-copyright-disclaimer-link{
    color:rgba(183,110,121,.55) !important;
    text-decoration:none !important;
    font-weight:600 !important;
    transition:color .15s ease !important;
}

.ws-copyright-disclaimer-link:hover,
.ws-copyright-disclaimer-link:focus-visible{
    color:rgba(183,110,121,.85) !important;
    text-decoration:underline !important;
}

/* Slideshow */
.slideshow-page .ws-copyright-bar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:50;
    margin:0;
    padding:8px 12px;
    border-top:none;
    background:rgba(0,0,0,.35);
    pointer-events:auto;
}

.slideshow-page .ws-copyright-bar p{
    color:rgba(255,255,255,.4);
    font-size:.72rem;
}

.slideshow-page .ws-copyright-disclaimer-link{
    color:rgba(255,255,255,.5) !important;
}

/* Login/register */
.login-page .ws-copyright-bar{
    margin-top:0;
    padding:10px 12px 14px;
    border-top:none;
}

.login-page .ws-copyright-bar p{
    color:rgba(80,56,58,.35);
}

/* Admin footer bar */
body.has-admin-space-footer .ws-copyright-bar{
    margin-bottom:68px;
}

/* ======================== DISCLAIMER PAGE STYLES ======================== */
.disclaimer-page{
    background:linear-gradient(135deg, #FFE4E1 0%, #FFFFF0 50%, var(--rose-light) 100%);
    min-height:100vh;
    padding:24px 12px;
}

.disclaimer-container{
    max-width:860px;
    margin:0 auto;
}

.disclaimer-card{
    background:#fff;
    border-radius:20px;
    padding:32px 28px;
    box-shadow:0 8px 32px rgba(0,0,0,.12);
}

.disclaimer-back-link{
    display:inline-block;
    margin-bottom:18px;
    color:var(--rose-gold);
    text-decoration:none;
    font-weight:700;
    font-size:.95rem;
    transition:color .15s ease;
}

.disclaimer-back-link:hover{
    color:var(--rose-dark);
}

.disclaimer-card h1{
    margin:0 0 12px;
    color:#2C2C2C;
    font-size:1.6rem;
    font-weight:800;
}

.disclaimer-update{
    margin:0 0 20px;
    color:#999;
    font-size:.85rem;
    font-style:italic;
}

.disclaimer-card h2{
    margin:24px 0 8px;
    color:var(--rose-gold);
    font-size:1.05rem;
    font-weight:700;
}

.disclaimer-card p,
.disclaimer-card li{
    color:#444;
    font-size:.92rem;
    line-height:1.65;
}

.disclaimer-card ul{
    padding-left:22px;
    margin:8px 0 12px;
}

.disclaimer-card li{
    margin-bottom:4px;
}

.disclaimer-footer-note{
    margin-top:32px;
    padding-top:16px;
    border-top:1px solid rgba(188,150,92,.22);
    text-align:center;
}

.disclaimer-footer-note p{
    color:rgba(80,56,58,.4);
    font-size:.8rem;
    font-weight:500;
}

@media(max-width:640px){
    .disclaimer-card{
        padding:22px 18px;
    }
    .disclaimer-card h1{
        font-size:1.35rem;
    }
}
/* ====================== END WS COPYRIGHT DISCLAIMER CSS PATCH ====================== */

/* ======================== LOGIN CENTERED LAYOUT FIX ========================
   Centra la form di login/register e posiziona copyright/disclaimer sotto.
   Non altera le classi grafiche esistenti: corregge solo il flusso layout.
============================================================================ */

body.login-page,
.login-page {
    min-height: 100vh !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 24px 16px !important;
    box-sizing: border-box !important;
}

.login-page .login-container {
    width: 100% !important;
    max-width: 420px !important;
    padding: 0 !important;
    margin: 0 auto !important;
    flex: 0 0 auto !important;
}

.login-page .login-card {
    width: 100% !important;
    margin: 0 auto !important;
}

.login-page .login-footer {
    width: 100% !important;
    text-align: center !important;
    margin-top: 18px !important;
}

.login-page .ws-copyright-bar {
    width: 100% !important;
    max-width: 100% !important;
    margin: 18px auto 0 !important;
    padding: 0 12px !important;
    text-align: center !important;
    flex: 0 0 auto !important;
    box-sizing: border-box !important;
}

.login-page .ws-copyright-bar p {
    text-align: center !important;
}

@media (max-width: 480px) {
    body.login-page,
    .login-page {
        justify-content: flex-start !important;
        padding-top: 28px !important;
    }

    .login-page .login-container {
        max-width: 100% !important;
    }

    .login-page .ws-copyright-bar {
        margin-top: 16px !important;
    }
}

/* ====================== END LOGIN CENTERED LAYOUT FIX ====================== */

/* WS_UPLOAD_SPLASH_SCREEN */
.ws-upload-splash{position:fixed;inset:0;z-index:999999;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;transition:opacity .3s ease}
.ws-upload-splash.is-visible{display:flex;opacity:1}
.ws-upload-splash-card{background:#fff;border-radius:24px;padding:34px 28px;text-align:center;max-width:340px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,.35);transform:scale(.92);transition:transform .35s cubic-bezier(.34,1.56,.64,1),border-color .3s;border:2px solid transparent}
.ws-upload-splash.is-visible .ws-upload-splash-card{transform:scale(1)}
.ws-upload-splash-icon{font-size:3.5rem;line-height:1;margin-bottom:4px}
@keyframes wsSplashPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
.ws-upload-splash-icon.is-animating{animation:wsSplashPulse 1.1s ease infinite}
.ws-upload-splash-title{font-weight:800;color:#2C2C2C;font-size:1.12rem;margin:10px 0 6px}
.ws-upload-splash-subtitle{color:#6B6B6B;font-size:.86rem;line-height:1.4;margin:0 0 4px}
.ws-upload-splash-progress-wrap{background:#E8E4E1;border-radius:12px;height:10px;overflow:hidden;margin:16px 0 8px}
.ws-upload-splash-progress-bar{height:100%;background:linear-gradient(90deg,var(--rose-gold),var(--rose-light));border-radius:12px;width:0;transition:width .3s ease}
.ws-upload-splash-percent{font-weight:900;color:var(--rose-gold);font-size:1.5rem;letter-spacing:1px}
.ws-upload-splash-filename{font-size:.78rem;color:#999;word-break:break-all;margin-top:6px;max-height:2.6em;overflow:hidden}
.ws-upload-splash.is-success .ws-upload-splash-card{border-color:#4CAF50}
.ws-upload-splash.is-success .ws-upload-splash-percent{color:#4CAF50}
.ws-upload-splash.is-error .ws-upload-splash-card{border-color:#E74C3C}
.ws-upload-splash.is-error .ws-upload-splash-percent{color:#E74C3C}
@keyframes wsSplashPop{0%{transform:scale(0)}50%{transform:scale(1.25)}100%{transform:scale(1)}}
.ws-upload-splash.is-success .ws-upload-splash-icon,.ws-upload-splash.is-error .ws-upload-splash-icon{animation:wsSplashPop .5s ease forwards}
/* END WS_UPLOAD_SPLASH_SCREEN */
/* WS_THEME_PALETTE_SETTINGS */
.admin-theme-settings{margin:18px 0 8px;padding-top:16px;border-top:1px solid var(--medium-gray)}
.admin-theme-title{font-size:1rem;margin-bottom:4px;color:var(--dark)}
.admin-theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:12px 0}
.admin-theme-swatch{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--white);border:2px solid var(--medium-gray);border-radius:var(--radius-md);padding:10px 12px;font-size:.9rem;font-weight:600;color:var(--dark)}
.admin-theme-swatch input[type=color]{width:48px;height:34px;border:none;border-radius:8px;background:none;cursor:pointer;padding:0}
.admin-theme-reset{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--dark-gray);margin-bottom:6px;cursor:pointer}
@media(max-width:480px){.admin-theme-grid{grid-template-columns:1fr}}
/* END WS_THEME_PALETTE_SETTINGS */

/* ===== Tavolozza colori: descrizioni + anteprima live ===== */
.admin-theme-swatch{display:flex;flex-direction:column;gap:4px}
.admin-theme-swatch span{font-weight:600;font-size:.9rem;color:#2C2C2C}
.admin-theme-swatch small{color:#777;font-size:.74rem;line-height:1.25;min-height:1.9em}
.admin-theme-swatch input[type=color]{width:100%;height:38px;border:1px solid #E8E4E1;border-radius:8px;cursor:pointer;background:#fff}
.admin-theme-preview{margin-top:14px;border:1px solid #E8E4E1;border-radius:12px;padding:10px;background:#FAF8F7}
.admin-theme-preview-label{font-size:.74rem;color:#999;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.admin-theme-preview-card{border-radius:10px;overflow:hidden;border:1px solid #ECE7E4;background:#fff}
.admin-theme-preview-header{padding:14px 12px;font-weight:700;font-size:1rem}
.admin-theme-preview-body{display:flex;align-items:center;gap:12px;padding:12px}
.admin-theme-preview-btn{display:inline-block;padding:7px 16px;border-radius:999px;font-weight:600;font-size:.85rem}
.admin-theme-preview-accent{display:inline-block;padding:5px 12px;border-radius:8px;border:2px solid;font-weight:600;font-size:.8rem}


/* ============================================================================
   LEGACY WEBKIT COMPAT PATCH  (gen 20260619_2037)
   Compatibilità iPad 6 / Safari & WebKit < 14.1 (iOS 11-13 non aggiornati).
   REGOLE ADDITIVE: nessun effetto sui browser moderni.
   - flex `gap` non supportato < Safari 14.1  -> fallback con margini
   - `inset:0` non supportato < Safari 14.1   -> top/right/bottom/left espliciti
   - prefissi -webkit- per backdrop-filter / position:sticky
   Il gate @supports not (inset:0) si attiva SOLO su WebKit < 14.1
   (inset e flex-gap sono arrivati nella stessa versione: gate affidabile).
   ============================================================================ */

/* Prefissi -webkit- innocui (validi anche sui moderni) */
.admin-space-footer-bar{ -webkit-backdrop-filter:saturate(140%) blur(8px); }
.admin-users-pagination-modal{ position:-webkit-sticky; position:sticky; }

@supports not (inset: 0){
  /* Overlay full-screen: inset:0 ignorato -> offset espliciti */
  .home-header.app-header-with-image::before,
  .admin-modal-backdrop,
  .ws-upload-splash{ top:0; right:0; bottom:0; left:0; }

  /* flex-gap -> margini sui figli (ROW=margin-left, COLUMN=margin-top) */
  .btn > * + *{margin-left:8px}
  .social-buttons > * + *{margin-top:10px}
  .btn-social > * + *{margin-left:10px}
  .divider > * + *{margin-left:12px}
  .form-row > * + *{margin-left:10px}
  .stats-bar > * + *{margin-left:32px}
  .stat-item > * + *{margin-top:2px}
  .action-buttons > * + *{margin-top:14px}
  .btn-action > * + *{margin-left:12px}
  .home-footer > * + *{margin-left:24px}
  .gallery-header > * + *{margin-left:12px}
  .slideshow-controls > * + *{margin-left:8px}
  .admin-header > * + *{margin-left:16px}
  .admin-actions > * + *{margin-left:10px}
  .admin-file-list > * + *{margin-top:8px}
  .admin-file-item > * + *{margin-left:12px}
  .admin-file-info > * + *{margin-top:2px}
  .admin-file-actions > * + *{margin-left:6px}
  .admin-header-image-delete > * + *{margin-left:10px}
  .admin-users-pagination > * + *{margin-left:12px}
  .admin-modal-header > * + *{margin-left:12px}
  .admin-settings-modal-body > * + *{margin-top:18px}
  .admin-space-footer-content > * + *{margin-left:16px}
  .admin-files-pagination-controls > * + *{margin-left:14px}
  .admin-files-page-size > * + *{margin-left:8px}
  .admin-files-pagination-main > * + *{margin-left:12px}
  .user-share-btn > * + *{margin-left:8px}
  .auto-update-notice > * + *{margin-left:12px}
  .user-inline-session > * + *{margin-left:12px !important}
  .logout-after-exclamation-host > * + *{margin-left:8px !important}
  .logout-after-exclamation-v2-host > * + *{margin-left:8px !important}
  .admin-theme-swatch > * + *{margin-left:10px}
  .admin-theme-reset > * + *{margin-left:8px}
  .admin-theme-preview-body > * + *{margin-left:12px}
}
/* ===================== END LEGACY WEBKIT COMPAT PATCH ===================== */

/* ===== ADMIN HERO HEADER + TEMA GRADIENTE (gen 20260620) ===== */
.admin-page{background:linear-gradient(160deg,var(--ivory) 0%,var(--light-gray) 60%)}
.admin-header-hero{position:relative;display:block;background:linear-gradient(135deg,var(--rose-light) 0%,var(--rose-gold) 55%,var(--rose-dark) 100%);color:#fff;border-radius:var(--radius-lg);padding:22px;margin:8px 0 20px;box-shadow:0 12px 32px rgba(139,79,87,.30);overflow:hidden}
.admin-header-hero::after{content:"";position:absolute;right:-50px;top:-50px;width:190px;height:190px;border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none}
.admin-header-hero::before{content:"";position:absolute;left:-30px;bottom:-60px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.08);pointer-events:none}
.admin-hero-back{display:inline-flex;align-items:center;gap:6px;color:#fff;font-weight:700;font-size:.85rem;background:rgba(255,255,255,.18);padding:6px 13px;border-radius:999px;margin-bottom:14px;position:relative;z-index:1;text-decoration:none}
.admin-hero-back:hover{background:rgba(255,255,255,.30);color:#fff}
.admin-hero-main{display:flex;align-items:center;gap:16px;position:relative;z-index:1}
.admin-hero-icon{width:58px;height:58px;border-radius:18px;background:rgba(255,255,255,.20);display:flex;align-items:center;justify-content:center;font-size:1.9rem;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.admin-hero-text h1{margin:0;font-size:1.55rem;color:#fff;line-height:1.1}
.admin-hero-sub{margin:4px 0 0;font-size:.92rem;color:rgba(255,255,255,.88);font-weight:500}
.admin-stat-card{background-image:linear-gradient(160deg,#fff 0%,#FFF6F4 100%)}
@supports not (inset: 0){ .admin-hero-main > * + *{margin-left:16px} }
/* ===== END ADMIN HERO HEADER + TEMA GRADIENTE ===== */
