/* ============================================================================
   pt-fx.css — PrestaTutto FX layer (2026)
   Motion + interaction system ispirato a reactbits.dev, in CSS/JS puro.
   Additivo: si aggancia alle classi esistenti, non riscrive nulla.
   Caricato DOPO modern.css / admin-modern.css su TUTTE le pagine (front + admin).
   Regola d'oro: se il JS non parte, il contenuto resta VISIBILE (fail-open).
   ========================================================================== */

:root{
  --ptfx-dur:.55s;
  --ptfx-ease:cubic-bezier(.22,.61,.36,1);
  --ptfx-ease-spring:cubic-bezier(.34,1.36,.64,1);
  --ptfx-accent:#E5541F;
  --ptfx-accent-2:#FF8A4C;
  --ptfx-ring:rgba(229,84,31,.45);
  --ptfx-shadow-2:0 4px 12px rgba(15,23,42,.08),0 12px 28px rgba(15,23,42,.10);
  --ptfx-shadow-3:0 10px 30px rgba(15,23,42,.14),0 24px 60px rgba(15,23,42,.16);
  --ptfx-hair:rgba(15,23,42,.08);
}
html[data-theme="dark"]{
  --ptfx-shadow-2:0 6px 18px rgba(0,0,0,.45);
  --ptfx-shadow-3:0 14px 40px rgba(0,0,0,.55);
  --ptfx-hair:rgba(255,255,255,.10);
}

/* ---------------------------------------------------------------- 0. base */
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* focus visibile e coerente (a11y CRITICAL) */
.ptfx *:focus-visible{
  outline:2px solid var(--ptfx-accent)!important;
  outline-offset:2px!important;
  border-radius:6px;
}
.ptfx a:focus:not(:focus-visible),
.ptfx button:focus:not(:focus-visible){outline:none}

/* numeri tabulari dove contano (prezzi, contatori, tabelle) */
.ptfx .dash-widget-info h3,.ptfx .price,.ptfx .pt-about-stat-num,
.ptfx [data-ptfx-count]{font-variant-numeric:tabular-nums}

/* ------------------------------------------------- 1. Reveal on scroll
   (reactbits: AnimatedContent / FadeContent / ScrollReveal)               */
.ptfx-js [data-ptfx-reveal]{
  opacity:0;
  will-change:opacity,transform;
  transition:opacity var(--ptfx-dur) var(--ptfx-ease),
             transform var(--ptfx-dur) var(--ptfx-ease),
             filter var(--ptfx-dur) var(--ptfx-ease);
  transition-delay:calc(var(--ptfx-i,0) * 60ms);
}
.ptfx-js [data-ptfx-reveal="up"]{transform:translate3d(0,26px,0)}
.ptfx-js [data-ptfx-reveal="down"]{transform:translate3d(0,-20px,0)}
.ptfx-js [data-ptfx-reveal="left"]{transform:translate3d(-26px,0,0)}
.ptfx-js [data-ptfx-reveal="right"]{transform:translate3d(26px,0,0)}
.ptfx-js [data-ptfx-reveal="scale"]{transform:scale(.965)}
.ptfx-js [data-ptfx-reveal="blur"]{transform:translate3d(0,14px,0) scale(.99)}
.ptfx-js [data-ptfx-reveal].is-in{opacity:1!important;transform:none!important;filter:none!important;
  /* 2026-08-08: liberare il livello di composizione a rivelazione finita.
     Lasciare will-change per sempre teneva l'elemento promosso e rompeva
     l'area cliccabile dei contenuti aggiunti dopo (pulsante "Copia tutti"). */
  will-change:auto!important}

/* -------------------------------------- 2. SplitText / BlurText headings */
.ptfx-split{display:inline-block}
.ptfx-word{display:inline-block;white-space:nowrap}
.ptfx-char{
  display:inline-block;
  opacity:0;transform:translate3d(0,.45em,0);
  transition:opacity .5s var(--ptfx-ease),transform .5s var(--ptfx-ease-spring),filter .5s var(--ptfx-ease);
  transition-delay:calc(var(--ptfx-ci,0) * 22ms);
}
.ptfx-split.is-in .ptfx-char{opacity:1;transform:none;filter:none}

/* --------------------------------------------- 3. GradientText / ShinyText */
.ptfx-grad-text{
  background:linear-gradient(90deg,var(--ptfx-accent) 0%,#FFB067 25%,var(--ptfx-accent) 50%,#FF7A3D 75%,var(--ptfx-accent) 100%);
  background-size:300% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:ptfx-grad 7s linear infinite;
}
@keyframes ptfx-grad{to{background-position:300% 0}}

.ptfx-shiny{position:relative;overflow:hidden;isolation:isolate}
.ptfx-shiny::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);
  transform:translateX(-120%);
}
.ptfx-shiny:hover::after,.ptfx-shiny:focus-visible::after{animation:ptfx-shine .85s var(--ptfx-ease) forwards}
@keyframes ptfx-shine{to{transform:translateX(120%)}}

/* --------------------------------------------------- 4. StarBorder CTA */
.ptfx-star{position:relative}
.ptfx-star::before{
  content:"";position:absolute;inset:-2px;border-radius:inherit;z-index:-1;
  background:conic-gradient(from 0deg,transparent 0 68%,var(--ptfx-accent-2) 82%,#fff 90%,transparent 100%);
  animation:ptfx-spin 3.6s linear infinite;
  opacity:0;transition:opacity .3s var(--ptfx-ease);
}
.ptfx-star:hover::before,.ptfx-star:focus-visible::before{opacity:.95}
@keyframes ptfx-spin{to{transform:rotate(1turn)}}

/* ------------------------------------ 5. SpotlightCard + TiltedCard hover */
.ptfx-spot{position:relative;isolation:isolate}
.ptfx-spot::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  z-index:2;opacity:0;transition:opacity .35s var(--ptfx-ease);
  background:radial-gradient(320px circle at var(--ptfx-mx,50%) var(--ptfx-my,50%),
             rgba(229,84,31,.14),rgba(229,84,31,.05) 40%,transparent 68%);
}
.ptfx-spot:hover::before{opacity:1}
html[data-theme="dark"] .ptfx-spot::before{
  background:radial-gradient(320px circle at var(--ptfx-mx,50%) var(--ptfx-my,50%),
             rgba(255,138,76,.20),rgba(255,138,76,.07) 42%,transparent 70%);
}
.ptfx-tilt{
  transform:perspective(900px) rotateX(var(--ptfx-rx,0deg)) rotateY(var(--ptfx-ry,0deg)) translateZ(0);
  transition:transform .35s var(--ptfx-ease),box-shadow .35s var(--ptfx-ease);
}
.ptfx-tilt.is-hover{box-shadow:var(--ptfx-shadow-3)}

/* lift coerente su tutte le card (front + admin) */
.ptfx .feature-shop,.ptfx .shop-widget,.ptfx .pt-card,.ptfx .service-widget,
.ptfx .blog-widget,.ptfx .card,.ptfx .product-custom,.ptfx .pt-product-card{
  transition:transform .3s var(--ptfx-ease),box-shadow .3s var(--ptfx-ease),border-color .3s var(--ptfx-ease);
}
@media (hover:hover) and (pointer:fine){
  .ptfx .feature-shop:hover,.ptfx .shop-widget:hover,.ptfx .pt-card:hover,
  .ptfx .service-widget:hover,.ptfx .blog-widget:hover,
  .ptfx .product-custom:hover,.ptfx .pt-product-card:hover{
    transform:translateY(-6px);box-shadow:var(--ptfx-shadow-3);
  }
  /* l'immagine si avvicina, come sulle schede annuncio */
  .ptfx .shop-widget .shop-img img,
  .ptfx .shop-widget .shop-img{transition:transform .35s var(--ptfx-ease)}
  .ptfx .shop-widget:hover .shop-img img{transform:scale(1.06)}
  .ptfx .pt-product-card:hover img,
  .ptfx .product-custom:hover .product-img img{transform:scale(1.04)}
  .ptfx .pt-product-card img,
  .ptfx .product-custom .product-img img{transition:transform .35s var(--ptfx-ease)}
}

/* ------------------------------------------- 6. Magnet button + ClickSpark */
.ptfx-magnet{
  transform:translate3d(var(--ptfx-tx,0),var(--ptfx-ty,0),0);
  transition:transform .28s var(--ptfx-ease-spring),box-shadow .28s var(--ptfx-ease);
}
.ptfx-press{transition:transform .12s var(--ptfx-ease)}
.ptfx-press:active{transform:scale(.97)}

.ptfx-rip{position:relative;overflow:hidden}
.ptfx-rip-ink{
  position:absolute;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(255,255,255,.55),rgba(255,255,255,0) 70%);
  transform:translate(-50%,-50%) scale(0);
  animation:ptfx-ink .6s var(--ptfx-ease) forwards;
  mix-blend-mode:screen;
}
.ptfx-rip-ink.is-dark{background:radial-gradient(circle,rgba(15,23,42,.20),rgba(15,23,42,0) 70%);mix-blend-mode:normal}
@keyframes ptfx-ink{to{transform:translate(-50%,-50%) scale(1);opacity:0}}

.ptfx-spark{position:fixed;pointer-events:none;z-index:99999;width:0;height:0}
.ptfx-spark i{
  position:absolute;left:0;top:0;width:2px;height:10px;border-radius:2px;
  background:linear-gradient(var(--ptfx-accent-2),var(--ptfx-accent));
  transform-origin:50% 0;animation:ptfx-spark .45s var(--ptfx-ease) forwards;
}
@keyframes ptfx-spark{
  0%{opacity:1;transform:rotate(var(--a)) translateY(4px) scaleY(.6)}
  100%{opacity:0;transform:rotate(var(--a)) translateY(22px) scaleY(1)}
}

/* ------------------------------------- 7. Aurora / Squares hero background */
.ptfx-aurora{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;opacity:.9}
.ptfx-aurora span{position:absolute;display:block;border-radius:50%;filter:blur(64px);opacity:.30}
.ptfx-aurora span:nth-child(1){width:46vw;height:46vw;left:-8vw;top:-16vw;
  background:radial-gradient(circle,#FF8A4C,transparent 68%);animation:ptfx-float1 18s ease-in-out infinite}
.ptfx-aurora span:nth-child(2){width:38vw;height:38vw;right:-6vw;top:-8vw;
  background:radial-gradient(circle,#4C7DFF,transparent 68%);animation:ptfx-float2 22s ease-in-out infinite}
.ptfx-aurora span:nth-child(3){width:34vw;height:34vw;left:32vw;bottom:-18vw;
  background:radial-gradient(circle,#20C997,transparent 68%);animation:ptfx-float3 26s ease-in-out infinite}
@keyframes ptfx-float1{50%{transform:translate3d(6vw,4vw,0) scale(1.12)}}
@keyframes ptfx-float2{50%{transform:translate3d(-5vw,6vw,0) scale(1.08)}}
@keyframes ptfx-float3{50%{transform:translate3d(4vw,-5vw,0) scale(1.14)}}
.hero-section,.breadcrumb-bar,.pt-about-hero{position:relative}
.hero-section>.container,.breadcrumb-bar>.container{position:relative;z-index:2}

.ptfx-gridbg{
  position:absolute;inset:0;pointer-events:none;z-index:1;
  background-image:linear-gradient(var(--ptfx-hair) 1px,transparent 1px),
                   linear-gradient(90deg,var(--ptfx-hair) 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 0%,#000 20%,transparent 75%);
  mask-image:radial-gradient(ellipse 70% 60% at 50% 0%,#000 20%,transparent 75%);
  opacity:.55;
}

/* ----------------------------------------------- 8. Scroll progress + FAB */
#ptfx-progress{
  position:fixed;top:0;left:0;height:3px;width:100%;z-index:9998;
  transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--ptfx-accent),#FFB067,#4C7DFF);
  will-change:transform;pointer-events:none;
}
#ptfx-top{
  position:fixed;right:18px;bottom:22px;z-index:9997;
  width:46px;height:46px;border:0;border-radius:14px;cursor:pointer;
  display:grid;place-items:center;
  background:var(--ptfx-accent);color:#fff;box-shadow:var(--ptfx-shadow-2);
  opacity:0;transform:translateY(14px) scale(.9);pointer-events:none;
  transition:opacity .3s var(--ptfx-ease),transform .3s var(--ptfx-ease-spring),background .2s;
}
#ptfx-top.is-on{opacity:1;transform:none;pointer-events:auto}
#ptfx-top:hover{background:#CF4717}
#ptfx-top svg{width:20px;height:20px;stroke:#fff;stroke-width:2.4;fill:none}
@media (max-width:767px){#ptfx-top{right:12px;bottom:76px;width:42px;height:42px}}

/* ------------------------------------------------ 9. Header on scroll */
.ptfx header.sticktop,.ptfx .header.sticktop{
  transition:box-shadow .3s var(--ptfx-ease),backdrop-filter .3s,background-color .3s;
}
.ptfx header.sticktop.ptfx-scrolled,.ptfx .header.sticktop.ptfx-scrolled{
  box-shadow:0 6px 24px rgba(15,23,42,.10);
}
.ptfx .main-nav>li>a{position:relative}
.ptfx .main-nav>li>a::after{
  content:"";position:absolute;left:12px;right:12px;bottom:2px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--ptfx-accent),var(--ptfx-accent-2));
  transform:scaleX(0);transform-origin:0 50%;
  transition:transform .3s var(--ptfx-ease);
}
.ptfx .main-nav>li>a:hover::after,
.ptfx .main-nav>li.active>a::after{transform:scaleX(1)}

/* ------------------------------------------------- 10. Immagini blur-up */
.ptfx img.ptfx-img{opacity:0;transform:scale(1.012);filter:blur(8px);
  transition:opacity .5s var(--ptfx-ease),transform .6s var(--ptfx-ease),filter .5s var(--ptfx-ease)}
.ptfx img.ptfx-img.is-loaded{opacity:1;transform:none;filter:none}

/* --------------------------------------------------- 11. Skeleton shimmer */
.ptfx-skel{
  position:relative;overflow:hidden;border-radius:12px;
  background:linear-gradient(90deg,rgba(15,23,42,.05) 25%,rgba(15,23,42,.10) 37%,rgba(15,23,42,.05) 63%);
  background-size:400% 100%;animation:ptfx-skel 1.35s ease-in-out infinite;
}
html[data-theme="dark"] .ptfx-skel{
  background:linear-gradient(90deg,rgba(255,255,255,.05) 25%,rgba(255,255,255,.11) 37%,rgba(255,255,255,.05) 63%);
  background-size:400% 100%;
}
@keyframes ptfx-skel{0%{background-position:100% 0}100%{background-position:0 0}}
.ptfx-skel-line{height:12px;margin:8px 0;border-radius:6px}

/* ------------------------------------------------- 12. Marquee / LogoLoop */
.ptfx-marquee{display:flex;overflow:hidden;gap:36px;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.ptfx-marquee>*{flex:0 0 auto;animation:ptfx-marq var(--ptfx-marq-dur,26s) linear infinite}
.ptfx-marquee:hover>*{animation-play-state:paused}
@keyframes ptfx-marq{to{transform:translateX(-100%)}}

/* ============================ FORM & FEEDBACK (tutte le pagine) ========= */
.ptfx .form-control,.ptfx .form-select,.ptfx .select2-selection{
  transition:border-color .2s var(--ptfx-ease),box-shadow .2s var(--ptfx-ease),background-color .2s;
}
.ptfx .form-control:focus,.ptfx .form-select:focus,
.ptfx .select2-container--open .select2-selection{
  border-color:var(--ptfx-accent)!important;
  box-shadow:0 0 0 4px var(--ptfx-ring)!important;
}
.ptfx .form-control.is-invalid,.ptfx .is-invalid .form-control,.ptfx .error .form-control{
  border-color:#DC2626!important;box-shadow:0 0 0 4px rgba(220,38,38,.18)!important;
  animation:ptfx-shake .3s var(--ptfx-ease);
}
@keyframes ptfx-shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.ptfx .invalid-feedback,.ptfx label.error{
  display:block;font-size:12.5px;line-height:1.4;margin-top:5px;color:#DC2626;
}
@media (max-width:991px){
  .ptfx .btn,.ptfx button.btn,.ptfx .form-control,.ptfx .form-select{min-height:44px}
  .ptfx .main-nav>li>a{min-height:44px;display:flex;align-items:center}
}
.ptfx .btn.is-loading{position:relative;color:transparent!important;pointer-events:none}
.ptfx .btn.is-loading::after{
  content:"";position:absolute;inset:0;margin:auto;width:17px;height:17px;border-radius:50%;
  border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:ptfx-rot .7s linear infinite;
}
@keyframes ptfx-rot{to{transform:rotate(1turn)}}
.ptfx .btn:disabled,.ptfx .btn.disabled{opacity:.5;cursor:not-allowed}

.ptfx .modal.fade .modal-dialog{transform:translateY(16px) scale(.98);
  transition:transform .28s var(--ptfx-ease-spring),opacity .22s}
.ptfx .modal.show .modal-dialog{transform:none}
.ptfx .modal-backdrop.show{opacity:.55}
.ptfx #toast-container>div{box-shadow:var(--ptfx-shadow-2)!important;border-radius:12px!important;opacity:1!important}

/* ================================ ADMIN (tutte le pagine /admin) ======== */
.ptfx .sidebar-menu ul li>a{
  position:relative;border-radius:10px;
  transition:background-color .2s var(--ptfx-ease),color .2s,transform .2s var(--ptfx-ease);
}
.ptfx .sidebar-menu ul li>a::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%) scaleY(0);
  width:3px;height:60%;border-radius:0 3px 3px 0;background:var(--ptfx-accent);
  transition:transform .25s var(--ptfx-ease-spring);
}
.ptfx .sidebar-menu ul li.active>a::before,
.ptfx .sidebar-menu ul li>a.active::before{transform:translateY(-50%) scaleY(1)}
@media (hover:hover){.ptfx .sidebar-menu ul li>a:hover{transform:translateX(3px)}}
.ptfx .sidebar-menu ul li>a i{transition:transform .25s var(--ptfx-ease-spring)}
.ptfx .sidebar-menu ul li>a:hover i{transform:scale(1.12)}

.ptfx .card.ptfx-stat{position:relative;overflow:hidden}
.ptfx .card.ptfx-stat::after{
  content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--ptfx-accent),var(--ptfx-accent-2),transparent);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .5s var(--ptfx-ease);
}
.ptfx .card.ptfx-stat.is-in::after{transform:scaleX(1)}
.ptfx .dash-widget-icon{transition:transform .3s var(--ptfx-ease-spring),box-shadow .3s}
.ptfx .card.ptfx-stat:hover .dash-widget-icon{transform:scale(1.08) rotate(-4deg)}

.ptfx .table-responsive{scrollbar-width:thin}
.ptfx table.table tbody tr{transition:background-color .18s var(--ptfx-ease)}
.ptfx table.table tbody tr:hover{background:rgba(229,84,31,.045)}
html[data-theme="dark"] .ptfx table.table tbody tr:hover{background:rgba(255,138,76,.07)}
.ptfx-js table.table tbody tr[data-ptfx-row]{opacity:0;transform:translateY(8px);
  transition:opacity .4s var(--ptfx-ease),transform .4s var(--ptfx-ease);
  transition-delay:calc(var(--ptfx-i,0) * 28ms)}
.ptfx-js table.table tbody tr[data-ptfx-row].is-in{opacity:1;transform:none}

.ptfx .dataTables_wrapper .dataTables_paginate .paginate_button{
  min-width:38px;min-height:38px;line-height:36px;border-radius:10px!important;
  transition:background-color .2s,color .2s,transform .2s var(--ptfx-ease);
}
.ptfx .dataTables_wrapper .dataTables_paginate .paginate_button:hover{transform:translateY(-1px)}
.ptfx .dataTables_wrapper .dataTables_filter input{min-height:40px;border-radius:10px}

.ptfx-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;padding:44px 20px;text-align:center}
.ptfx-empty svg{width:46px;height:46px;opacity:.5}
.ptfx-empty h4{font-size:17px;font-weight:700;margin:0}
.ptfx-empty p{margin:0;font-size:14px;opacity:.7;max-width:46ch}

/* =============================== REDUCED MOTION (a11y) ================== */
@media (prefers-reduced-motion:reduce){
  html:not(.ptfx-motion) [data-ptfx-reveal],
  html:not(.ptfx-motion) table.table tbody tr[data-ptfx-row]{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  html:not(.ptfx-motion) .ptfx-char{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  html:not(.ptfx-motion) .ptfx-aurora span,
  html:not(.ptfx-motion) .ptfx-grad-text,
  html:not(.ptfx-motion) .ptfx-star::before,
  html:not(.ptfx-motion) .ptfx-skel,
  html:not(.ptfx-motion) .ptfx-marquee>*{animation:none!important}
  html:not(.ptfx-motion) .ptfx-tilt{transform:none!important}
  html:not(.ptfx-motion) img.ptfx-img{opacity:1!important;filter:none!important;transform:none!important;transition:none!important}
  html:not(.ptfx-motion) #ptfx-progress{display:none}
}
@media (max-width:767px){
  .ptfx-aurora{display:none}
  .ptfx-tilt{transform:none!important}
  .ptfx-spot::before{display:none}
}
@media print{#ptfx-progress,#ptfx-top,.ptfx-aurora,.ptfx-gridbg{display:none!important}}


/* --- WebKit/Safari hardening (2026-07-30) --------------------------------
   Safari rende male i transform 3D su card con overflow+border-radius:
   fuori il tilt, resta lo spotlight + il lift. --------------------------- */
@supports (-webkit-hyphens:none){
  .ptfx-tilt{transform:none!important;transform-style:flat!important}
  .ptfx-aurora span{filter:blur(48px);opacity:.22}
}

/* ============================================================================
   Lightbox immagini (2026-07-30) — negozio, gallerie. Funziona per tutti,
   loggati e non, perche' vive nel layer globale pt-fx.
   ========================================================================== */
.ptfx-zoomable{cursor:zoom-in}
#ptfx-lb{
  position:fixed;inset:0;z-index:100000;display:none;align-items:center;justify-content:center;
  padding:24px;background:rgba(8,12,20,.9);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}
#ptfx-lb.is-on{display:flex}
#ptfx-lb img{
  max-width:min(94vw,1400px);max-height:86vh;border-radius:14px;background:#fff;
  box-shadow:0 30px 80px rgba(0,0,0,.6);opacity:0;transform:scale(.96);
  transition:opacity .2s ease,transform .28s cubic-bezier(.34,1.36,.64,1);
}
#ptfx-lb.is-on img{opacity:1;transform:none}
#ptfx-lb .ptfx-lb-close{
  position:absolute;top:18px;right:18px;width:44px;height:44px;border:0;border-radius:12px;cursor:pointer;
  background:rgba(255,255,255,.14);color:#fff;display:grid;place-items:center;transition:background .2s;
}
#ptfx-lb .ptfx-lb-close:hover{background:rgba(255,255,255,.28)}
#ptfx-lb .ptfx-lb-close svg{width:20px;height:20px;stroke:#fff;stroke-width:2.4;fill:none}
#ptfx-lb .ptfx-lb-hint{position:absolute;bottom:20px;left:0;right:0;text-align:center;
  color:rgba(255,255,255,.72);font-size:12.5px;pointer-events:none}
@media (prefers-reduced-motion:reduce){
  html:not(.ptfx-motion) #ptfx-lb img{transition:none;opacity:1;transform:none}
}

/* ============================================================================
   PrestaTutto brand kit 1.0 — logo chiaro/scuro
   Il tema espone data-theme="dark" su <html>: mostriamo la variante negativa.
   ========================================================================== */
.pt-logo-dark{display:none!important}
html[data-theme="dark"] .pt-logo-light{display:none!important}
html[data-theme="dark"] .pt-logo-dark{display:inline-block!important}
html[data-theme="dark"] img.footer-logo-img.pt-logo-dark{display:block!important}

/* dimensioni coerenti col kit (il lockup compatto in barra, mai quello col payoff) */
#pt-bar .navbar-brand.logo img,
.header .navbar-brand.logo img{height:auto;max-height:calc(var(--bm-size,52px) * .58);width:auto}
.footer-logo-img{height:auto;width:auto;max-width:220px;max-height:74px}
.menu-logo img{max-height:38px;width:auto}
.navbar-brand.logo-small img{max-height:34px;width:auto}

/* admin: il logo in sidebar */
.header-left .logo img{max-height:34px;width:auto}
.header-left .logo.logo-small img{max-height:30px;width:auto}


/* ============================================================================
   Admin — liste senza "scheda" (2026-07-30)
   Le tabelle stavano dentro una card bianca su fondo bianco: doppio bordo e
   doppio padding per niente. Qui la card che contiene una tabella diventa
   piatta e il contenuto sta direttamente nella pagina.
   Scoped a .page-wrapper = solo admin (il front-end usa .main-wrapper).
   ========================================================================== */
.page-wrapper .card.filter-card,
.page-wrapper .card:has(> .card-body > .table-responsive),
.page-wrapper .card:has(> .card-body > .dataTables_wrapper),
.page-wrapper .card:has(.dataTables_wrapper),
.page-wrapper .card:has(> .card-body > form > .table-responsive){
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  border-radius:0!important;
  margin-bottom:22px;
}
.page-wrapper .card.filter-card > .card-body,
.page-wrapper .card:has(> .card-body > .table-responsive) > .card-body,
.page-wrapper .card:has(.dataTables_wrapper) > .card-body{
  padding:0!important;
  background:transparent!important;
}
/* la tabella si regge da sola: intestazione con una linea, righe separate */
.page-wrapper .table-responsive{background:transparent!important}
.page-wrapper table.table{background:transparent!important}
.page-wrapper table.table > thead th{
  background:transparent!important;
  border-bottom:1.5px solid rgba(15,23,42,.14)!important;
  border-top:0!important;
}
.page-wrapper table.table > tbody > tr > td{border-top:0!important;border-bottom:1px solid rgba(15,23,42,.07)!important}
.page-wrapper table.table > tbody > tr:last-child > td{border-bottom:0!important}
/* controlli DataTables allineati al bordo del contenuto, senza cornice */
.page-wrapper .dataTables_wrapper .dataTables_length,
.page-wrapper .dataTables_wrapper .dataTables_filter{margin-bottom:10px}

html[data-theme="dark"] .page-wrapper table.table > thead th{border-bottom-color:rgba(255,255,255,.16)!important}
html[data-theme="dark"] .page-wrapper table.table > tbody > tr > td{border-bottom-color:rgba(255,255,255,.08)!important}

