/**
 * Stile della nuova home. Caricato solo dove serve (vedi functions.php).
 *
 * L'impaginazione la fa Elementor con i contenitori: qui ci sono i colori, i
 * caratteri, il ritmo verticale e le animazioni. Cosi' la squadra modifica i
 * testi dall'editor senza poter rompere la grafica.
 */

/* I @font-face stanno in caratteri.css: servono anche al footer, che e'
   su tutte le pagine. Vedi functions.php. */

.k-home{
  --ink:#131C2E; --bg:#F3F5F6; --surface:#fff; --muted:#4A5568;
  --accent:#D03923; --accent-dark:#b12f1c;
  --line:rgba(19,28,46,.12); --line-strong:rgba(19,28,46,.22);
  --display:"Space Grotesk",system-ui,sans-serif;
  --body:"Hanken Grotesk",system-ui,sans-serif;
  background:var(--bg);
}
/* Il contenuto della pagina, non l'header e il footer del tema. */
.k-home .elementor{color:var(--ink);font-family:var(--body)}
/* Ohio applica margin:-20px orizzontale al contenitore Elementor (compensa il
   padding delle colonne). Col template a tutta larghezza quel margine fa
   sporgere la pagina di 20px e comparire lo scorrimento orizzontale. */
.k-home .elementor{margin-left:0!important;margin-right:0!important;overflow-x:clip}
/* Tipografia SOLO dentro il contenuto Elementor.
   Scritta come '.k-home p' colorava anche le voci del menu di Ohio, che sono
   dei <li>: il menu diventava grigio (2,79:1) sopra l'header trasparente. */
.k-home .elementor h1,.k-home .elementor h2,
.k-home .elementor h3,.k-home .elementor h4{font-family:var(--display);font-weight:700;line-height:1.08;letter-spacing:-.02em;color:var(--ink)}
.k-home .elementor p,.k-home .elementor li{font-family:var(--body);line-height:1.65;color:var(--muted)}

/* la firma di marca: i colori del logo */
.k-spectro .elementor-divider-separator,
.k-spectro-bar{height:4px!important;border:0!important;border-radius:99px;
  background:linear-gradient(90deg,#F5A623 0 16.6%,#0F766E 16.6% 33.2%,#D03923 33.2% 49.8%,#C23A8E 49.8% 66.4%,#3763A6 66.4% 83%,#6D28D9 83% 100%)}

/* --- hero --- */
.k-eyebrow{font-family:var(--body)!important;font-size:13px!important;font-weight:700!important;
  letter-spacing:.14em!important;text-transform:uppercase;color:var(--muted)!important}
.k-h1 h1{font-size:clamp(2.6rem,6.6vw,5.3rem)!important;max-width:16ch}
.k-sub p{font-size:clamp(1.05rem,1.7vw,1.3rem)!important;max-width:56ch}
.k-note p{font-size:15px!important;display:flex;align-items:center;gap:.55rem}
.k-note p::before{content:"✓";width:19px;height:19px;flex:0 0 19px;border-radius:50%;
  background:var(--accent);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:700}

/* pulsanti (HTML nostro: cosi' lo stile e' identico ovunque) */
.k-cta-row{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:.4rem}
.k-btn{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--body);font-weight:600;font-size:16px;
  padding:.85rem 1.5rem;border-radius:99px;text-decoration:none;border:1.5px solid transparent;transition:.22s}
.k-btn span{transition:transform .28s}
.k-btn:hover span{transform:translateX(4px)}
.k-btn-a{background:var(--accent);color:#fff}
.k-btn-a:hover{background:var(--accent-dark);transform:translateY(-2px);color:#fff}
.k-btn-g{border-color:var(--line-strong);color:var(--ink)}
.k-btn-g:hover{border-color:var(--ink);transform:translateY(-2px)}
/* ══════════════════════════════════════════════════════════════════════════
   ⚠️⚠️ OHIO RICOLORA OGNI <a> AL PASSAGGIO DEL MOUSE, e vince quasi sempre.
   La regola del tema e':
       a:not(.-unlink):hover { color: var(--clb-link-hover-color) }
   che vale (0,2,1) — l'elemento `a`, la classe dentro al `:not()` e il
   `:hover`. Una nostra `.k-btn-a:hover` vale (0,2,0) e PERDE: per questo su
   tre pagine i bottoni diventavano arancioni appena ci passavi sopra, anche
   dove il colore al passaggio era gia' scritto. Segnalato dall'utente due
   volte, sulle taglie del cloud e sull'analisi del sito.
   ⚠️ La rete qui sotto sta a (0,2,1): batte il tema e PERDE contro qualunque
   regola nostra piu' precisa (le pastiglie delle taglie, i bottoni delle
   aperture d'area), che e' esattamente il livello giusto. Alzarla di piu'
   spegnerebbe quelle.
   ⚠️ Si mette anche su `:focus-visible`: chi arriva col tasto di tabulazione
   riceve lo stesso trattamento del mouse, e il tema fa lo stesso errore li'.
   ══════════════════════════════════════════════════════════════════════════ */
a.k-btn-a:hover, a.k-btn-a:focus-visible{color:#fff}
a.k-btn-g:hover, a.k-btn-g:focus-visible{color:var(--ink)}
.k-go{display:inline-flex;align-items:center;gap:.45rem;margin-top:1.1rem;font-weight:600;font-size:15px;
  color:var(--accent-dark);text-decoration:none}
.k-go span{transition:transform .28s}
.k-card:hover .k-go span{transform:translateX(5px)}
/* sedi */
/* ⚠️ I TRE FILETTI NON SONO PIU' TUTTI ROSSI. Tre blocchi identici con lo
   stesso segno erano un elenco; tre colori diversi — presi dalle aree — li
   rendono tre cose. Scelta dell'utente il 7/8 (variante «come ora, con un
   segno»). Il modulo a destra non e' stato toccato. */
.k-sede{border-left:3px solid var(--accent);padding-left:1.1rem;margin-bottom:1.1rem}
/* la firma delle sei aree, sotto agli indirizzi */
.k-firma{display:flex;gap:5px;margin:1.9rem 0 0}
.k-firma i{width:26px;height:5px;border-radius:99px;display:block}
/* i due collegamenti social */
.k-social{display:flex;gap:.6rem;margin:1.6rem 0 0}
/* ⚠️⚠️ TERZA VOLTA CHE ESCE QUESTO DIFETTO, e si segnala sempre uguale:
   «il cerchio sembra vuoto». Fondo e colore dell'icona sfumavano INSIEME: a
   meta' strada il fondo e' ancora chiaro e l'icona e' gia' quasi bianca, quindi
   per un terzo di secondo non si vede niente. Stessa cosa dei «Vai all'area» del
   mega-menu (sotto 3,0 per 131ms su 260) e dei bottoni della pagina servizio.
   Rimedio uguale agli altri: velo in `::before` che si apre con `transform`
   (sta sulla scheda grafica) e il colore dell'icona che cambia con 60ms di
   RITARDO, quando il velo e' gia' partito.
   ⚠️ `isolation:isolate`, o lo `z-index:-1` del velo finisce dietro alla sezione. */
.k-social a{display:flex;align-items:center;justify-content:center;width:42px;height:42px;
  border-radius:50%;border:1px solid rgba(19,28,46,.2);color:var(--ink);
  position:relative;isolation:isolate;overflow:hidden;
  transition:color .3s .06s,border-color .3s,transform .35s cubic-bezier(.22,.8,.24,1)}
.k-social a::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:50%;
  background:var(--ink);transform:scale(0);
  transition:transform .38s cubic-bezier(.3,0,.2,1)}
.k-social a:hover::before,.k-social a:focus-visible::before{transform:scale(1)}
.k-social a:hover,.k-social a:focus-visible{color:#fff;border-color:var(--ink);
  transform:translateY(-3px)}
@media (prefers-reduced-motion:reduce){
  .k-social a::before{transition:none}
  .k-social a{transition:color .01s,border-color .01s}
  .k-social a:hover{transform:none}
}
.k-social svg{display:block}
.k-sede b{font-family:var(--display);font-size:1.05rem;display:block;margin-bottom:.15rem;color:var(--ink)}
.k-sede span{color:var(--muted);font-size:15px}
.k-sede a{color:var(--accent-dark);font-weight:600;text-decoration:none}
/* lavori */
.k-work-img{border-radius:16px;overflow:hidden;aspect-ratio:4/3;margin-bottom:1rem}
.k-work-img img{width:100%;height:100%;object-fit:cover;display:block}

/* numeri */
.k-stat .elementor-heading-title{font-family:var(--display);font-size:clamp(2.1rem,3.6vw,2.9rem);line-height:1}
.k-stat p{font-size:14.5px!important;margin:0}

/* --- diciture di sezione --- */
.k-kicker{font-family:var(--body)!important;font-size:13px!important;font-weight:700!important;
  letter-spacing:.14em!important;text-transform:uppercase;color:var(--accent-dark)!important}
.k-h2 h1,.k-h2 h2{font-size:clamp(2rem,4.2vw,3.2rem)!important}

/* --- schede servizio ---
   Sono colonne Elementor: lo sfondo e il bordo vanno sull'involucro interno,
   altrimenti il margine fra colonne finisce dentro la scheda. */
.k-card > .elementor-widget-wrap{background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:1.9rem!important;transition:transform .3s,box-shadow .3s,border-color .3s;position:relative;overflow:hidden;height:100%}
.k-card{background:none}
.k-card > .elementor-widget-wrap::after{content:"";position:absolute;inset:auto 0 0 0;height:3px;
  background:var(--accent);transform:scaleX(0);transform-origin:0 50%;transition:transform .35s}
.k-card:hover > .elementor-widget-wrap{transform:translateY(-5px);border-color:var(--line-strong);
  box-shadow:0 24px 60px rgba(19,28,46,.18)}
.k-card:hover > .elementor-widget-wrap::after{transform:scaleX(1)}
.k-card .k-num .elementor-heading-title{font-family:var(--display);font-size:13px;color:var(--accent-dark);letter-spacing:.08em}
.k-card h2,.k-card h3{font-size:1.5rem!important}
.k-card p{font-size:15.5px!important}

/* --- sezione scura: il processo --- */
.k-dark{background:var(--ink)}
.k-dark h2,.k-dark h3,.k-dark .elementor-heading-title{color:#fff!important}
.k-dark p{color:rgba(255,255,255,.72)!important}
/* sul navy l'accento scenderebbe a 3,48:1: serve la variante chiara */
.k-dark .k-kicker,.k-dark .k-num .elementor-heading-title{color:#FF8A6B!important}
.k-step > .elementor-widget-wrap{border-top:1px solid rgba(255,255,255,.20);padding-top:1.7rem!important}

/* --- lavori --- */
.k-work img{transition:transform .55s cubic-bezier(.22,1,.36,1)}
.k-work:hover img{transform:scale(1.06)}
.k-todo > .elementor-widget-wrap{border:1.5px dashed var(--line-strong);border-radius:16px;
  background:var(--surface);padding:2.2rem 1.5rem!important;height:100%;display:flex;align-items:center}
.k-todo p{text-align:center}

/* --- contatti --- */
.k-cta{background:var(--surface);border:1px solid var(--line);border-radius:24px;
  padding:clamp(2.2rem,5vw,3.5rem)!important;align-items:center}


/* ==========================================================================
   MOVIMENTO
   Dove il browser sa guidare le animazioni con lo scorrimento le lasciamo a
   lui: girano sul compositore e non pesano sul JavaScript della pagina.
   ========================================================================== */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-rv{animation:kEnter linear both;animation-timeline:view();animation-range:entry 8% cover 26%}
    @keyframes kEnter{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
    .k-work-img img{animation:kPan linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
    @keyframes kPan{from{transform:scale(1.12) translateY(-2.5%)}to{transform:scale(1.12) translateY(2.5%)}}
    .k-spectro .elementor-divider-separator,.k-spectro-bar{
      animation:kDraw linear both;animation-timeline:view();animation-range:entry 10% cover 22%;transform-origin:0 50%}
    @keyframes kDraw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  }
}
/* Ripiego per i browser senza animation-timeline: la classe la mette il JS. */
@supports not (animation-timeline: view()){
  .k-rv{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
  .k-rv.k-in{opacity:1;transform:none}
}


/* sipario d'ingresso */
/* ⚠️ Tempi accorciati il 4/8 su richiesta: «dobbiamo velocizzare dopo
   animazione logo». Il gesto e' lo stesso, dura un terzo di meno. Il conto da
   rispettare: la tenda non deve MAI alzarsi prima che il colore abbia finito
   di attraversare il marchio, o sembra che si sia rotto qualcosa. */
#k-curtain{position:fixed;inset:0;z-index:99999;background:#131C2E;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:1.5rem;transition:transform .62s cubic-bezier(.76,0,.24,1);will-change:transform}
#k-curtain.k-up{transform:translateY(-101%)}
/* ⚠️ LA VARIANTE DEL SALTO: colore pieno, e se ne va SFUMANDO, non alzandosi.
   E in fretta — 0,3s contro 0,62: fra una pagina e l'altra il velo non e' uno
   spettacolo, e' il tempo che si passa ad aspettare. */
#k-curtain.-salto{background:var(--sc,#131C2E);gap:0;
  transition:opacity .3s cubic-bezier(0,0,.25,1)}
#k-curtain.-salto.k-up{transform:none;opacity:0}
/* ⚠️ L'USCITA: lo stesso colore copre lo schermo prima di cambiare pagina, e
   siccome le due meta' hanno la stessa tinta il passaggio si legge come un
   gesto solo invece che come due.
   ══ IL COLORE ESPLODE DAL PUNTO IN CUI SI E' CLICCATO (26/8/2026) ══════════
   ⚠️ Non e' piu' una dissolvenza. Il velo e' sempre opaco e viene RITAGLIATO a
   cerchio: il cerchio nasce con raggio zero sotto il dito e cresce fino a
   coprire l'angolo piu' lontano dello schermo. Il colore non «compare»,
   ARRIVA — ed e' per questo che il passaggio si sente come una conseguenza del
   clic e non come un caricamento. E' l'effetto di 14islands.
   ⚠️ Le tre misure gliele scrive il gestore del clic: `--x` e `--y` sono il
   punto premuto, `--r` la distanza dall'angolo piu' lontano. Un valore fisso
   grande al posto di `--r` non va bene: `circle(150vmax)` su uno schermo largo
   passerebbe quasi tutta la durata a coprire gli ultimi pixel, e il cerchio
   sembrerebbe fermarsi.
   ⚠️⚠️ Il punto va scritto CON LA TRANSIZIONE SPENTA e poi riacceso (lo fa lo
   script): `clip-path` interpola anche il CENTRO, quindi passando da
   `circle(0 at 50% 50%)` a `circle(R at X Y)` il cerchio partirebbe dal mezzo
   dello schermo e scivolerebbe verso il dito mentre cresce.
   ⚠️ `clip-path` si anima sul compositore e non fa ridisegnare la pagina
   sotto; il velo resta opaco e non c'e' nessuna fusione da calcolare. */
#k-salto{position:fixed;inset:0;z-index:99998;pointer-events:none;
  background:var(--sc,#131C2E);
  clip-path:circle(0px at var(--x,50%) var(--y,50%));
  transition:clip-path .38s cubic-bezier(.2,.8,.2,1)}
#k-salto.-va{clip-path:circle(var(--r,150vmax) at var(--x,50%) var(--y,50%))}
@media (prefers-reduced-motion:reduce){ #k-salto{display:none} }
@keyframes kMark{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
/* ⚠️ VIA LA BARRA DI AVANZAMENTO (28/8/2026): con il marchio che si compone,
   la barra raccontava la stessa attesa una seconda volta, e piu' male — perche'
   fingeva di sapere a che punto e' il caricamento, che non sa. Adesso l'attesa
   la dice la luce che respira. */
body.k-loading{overflow:hidden}

/* avanzamento in cima */
#k-prog{position:fixed;inset:0 auto auto 0;height:3px;width:100%;z-index:9999;transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,#F5A623,#0F766E,#D03923,#C23A8E,#3763A6,#6D28D9)}
@supports (animation-timeline: scroll()){
  #k-prog{animation:kGrow linear both;animation-timeline:scroll(root)}
  @keyframes kGrow{to{transform:scaleX(1)}}
}

@media (prefers-reduced-motion:reduce){
  /* ⚠️ 5/11/2026: le piste dei loghi sono escluse. Con 0,01ms il nastro clienti
     (che qui gira sempre, vedi «CI HANNO SCELTO») faceva un giro intero ogni
     centesimo di millisecondo: «velocissimo». */
  .k-home *:not(.k-loghi__pista){animation-duration:.01ms!important;transition-duration:.01ms!important}
  .k-rv{opacity:1!important;transform:none!important}
  #k-curtain{display:none!important}
}

/* --------------------------------------------------------------------------
   Spazio fra le colonne.
   Non uso il "gap" di Elementor: e' incostante fra versioni. Metto il respiro
   come padding della colonna, mentre il riquadro visibile sta sull'involucro
   interno: cosi' lo spazio resta FUORI dalla scheda, dov'e' giusto che stia.
   -------------------------------------------------------------------------- */
.k-card, .k-todo, .k-work, .k-step {
	padding-left: .7rem !important;
	padding-right: .7rem !important;
}
.k-card, .k-todo, .k-work { margin-bottom: 1.4rem; }
.k-step { margin-bottom: 1.6rem; }

/* le due righe di schede non devono incollarsi */
.k-home .elementor-inner-section { margin-bottom: 0; }

/* riquadro contatti: il respiro interno lo do io, non le colonne */
.k-cta { padding: clamp(2.2rem, 5vw, 3.5rem) !important; }
.k-cta > .elementor-container > .elementor-column { padding-left: 0 !important; padding-right: 0 !important; }

/* ==========================================================================
   ROTATORE DELLE AREE (hero)
   Scorre da solo fra le sei aree, ognuna col proprio colore preso dallo
   spettro del logo. Niente Slider Revolution: erano 438 KB per un hero solo.
   ========================================================================== */
.k-rot{position:relative;border-radius:20px;overflow:hidden;min-height:430px;
  background:var(--c,#D03923);transition:background .8s cubic-bezier(.22,1,.36,1);
  display:flex;flex-direction:column;justify-content:flex-end;padding:2.2rem}
.k-rot__slides{position:relative;flex:1}
.k-rot__s{position:absolute;inset:auto 0 0 0;opacity:0;transform:translateY(14px);
  transition:opacity .55s cubic-bezier(.22,1,.36,1),transform .55s cubic-bezier(.22,1,.36,1);
  pointer-events:none}
.k-rot__s.is-on{opacity:1;transform:none;pointer-events:auto}
/* La specificita' deve battere '.k-home .elementor p' (0-2-1), altrimenti il
   testo del rotatore eredita il grigio del corpo e sparisce sul colore. */
.k-home .elementor .k-rot__n{font-family:var(--display);font-size:13px;font-weight:700;
  letter-spacing:.12em;color:var(--fg,#fff);opacity:.72;display:block;margin-bottom:.5rem}
.k-home .elementor .k-rot__t{font-family:var(--display);font-size:clamp(1.7rem,3vw,2.4rem);
  font-weight:700;line-height:1.1;color:var(--fg,#fff);margin:0 0 .6rem}
.k-home .elementor .k-rot__d{font-size:15.5px;line-height:1.55;color:var(--fg,#fff);opacity:.9;
  margin:0 0 1.1rem;max-width:38ch}
.k-home .elementor .k-rot__go{display:inline-flex;align-items:center;gap:.45rem;font-weight:600;
  font-size:15px;color:var(--fg,#fff);text-decoration:none;
  border-bottom:1.5px solid color-mix(in srgb, var(--fg,#fff) 45%, transparent);padding-bottom:2px}
.k-home .elementor .k-rot__go:hover{border-bottom-color:var(--fg,#fff)}

/* i sei tasti: uno per area, con la barra che si riempie su quello attivo */
.k-rot__nav{display:flex;gap:6px;margin-top:1.6rem}
.k-rot__b{flex:1;height:4px;border:0;padding:0;border-radius:99px;cursor:pointer;
  background:color-mix(in srgb, var(--fg,#fff) 28%, transparent);position:relative;overflow:hidden}
.k-rot__b span{position:absolute;inset:0;background:var(--fg,#fff);transform:scaleX(0);transform-origin:0 50%}
.k-rot__b[aria-selected="true"] span{animation:kRot var(--dur,5s) linear forwards}
.k-rot__b:focus-visible{outline:2px solid var(--fg,#fff);outline-offset:3px}
@keyframes kRot{to{transform:scaleX(1)}}
.k-rot.is-paused .k-rot__b[aria-selected="true"] span{animation-play-state:paused}

@media (max-width:1024px){ .k-rot{min-height:360px;margin-top:2.5rem} }
@media (prefers-reduced-motion:reduce){
  .k-rot{transition:none}
  .k-rot__s{transition:none}
  .k-rot__b[aria-selected="true"] span{animation:none;transform:scaleX(1)}
}

/* ==========================================================================
   FASCIA NUMERI
   Sotto il rotatore. Numeri grandi, etichette piccole, filetti sottili:
   nessun riquadro, il respiro fa da contenitore.
   ========================================================================== */
.k-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0;
  border-top:1px solid var(--line);margin-top:1rem}
.k-nums__i{padding:2rem 1.6rem 1.6rem;border-right:1px solid var(--line);position:relative}
.k-nums__i:last-child{border-right:0}
.k-nums__i::before{content:"";position:absolute;inset:-1px auto auto 0;width:34px;height:3px;
  background:var(--c,#D03923);transform:scaleX(0);transform-origin:0 50%;transition:transform .5s}
.k-nums__i.is-on::before{transform:scaleX(1)}
.k-nums__v{font-family:var(--display);font-weight:700;font-size:clamp(2.4rem,4.4vw,3.4rem);
  line-height:1;letter-spacing:-.03em;color:var(--ink);display:block;
  font-variant-numeric:tabular-nums}
.k-nums__l{font-size:14px;color:var(--muted);margin-top:.55rem;display:block;line-height:1.4}
.k-nums__i:nth-child(1)::before{--c:#F5A623}
.k-nums__i:nth-child(2)::before{--c:#0F766E}
.k-nums__i:nth-child(3)::before{--c:#C23A8E}
.k-nums__i:nth-child(4)::before{--c:#3763A6}
/* casella da compilare: si vede che manca un dato, senza inventarlo */
.k-nums__v.da-fare{color:var(--line-strong);font-size:clamp(1.5rem,2.6vw,2rem)}
@media (max-width:720px){
  .k-nums__i{border-right:0;border-bottom:1px solid var(--line);padding:1.5rem 0}
  .k-nums__i:last-child{border-bottom:0}
}

/* --------------------------------------------------------------------------
   Slider Revolution rimesso come hero (31/7).
   La sezione non deve avere margini ne' contenitore: lo slider gestisce da
   solo la propria altezza a schermo intero.
   -------------------------------------------------------------------------- */
.k-slider > .elementor-container{max-width:100%!important;width:100%!important}
.k-slider .elementor-widget-wrap{padding:0!important}
.k-slider .elementor-widget-shortcode{margin:0}
.k-home .k-slider p{margin:0}

/* --------------------------------------------------------------------------
   Un colore per area sulle schede servizio: gli stessi sei del logo.
   Il filetto in alto e il numero prendono il colore; il testo resta scuro,
   cosi' non si ripropone il problema di leggibilita' del rotatore.
   -------------------------------------------------------------------------- */
.k-card > .elementor-widget-wrap{border-top:3px solid var(--ca,var(--line))}
.k-card > .elementor-widget-wrap::after{background:var(--ca,var(--accent))}
.k-card .k-num .elementor-heading-title{color:var(--ca,var(--accent-dark))!important}
.k-card:hover > .elementor-widget-wrap{border-top-color:var(--ca,var(--accent))}
/* ⚠️ Colori PIENI, non le varianti scurite: qui il colore sta su un filetto e
   su un numero in filigrana, cioe' su dei SEGNI, non su delle parole.
   `--cd` e' la variante scurita, e serve solo dove il colore deve stare per
   forza su un testo piccolo: qui e' il caso del solo «Scopri». */
.k-a1{--ca:#F5A623;--cd:#976615}   /* Design & Branding */
.k-a2{--ca:#0F766E;--cd:#CB3F00}   /* Web */
.k-a3{--ca:#D03923;--cd:#CB3722}   /* Soluzioni per aziende */
.k-a4{--ca:#C23A8E;--cd:#BE388B}   /* Software */
.k-a5{--ca:#3763A6;--cd:#3763A6}   /* Gadget e stampe */
.k-a6{--ca:#6D28D9;--cd:#6D28D9}   /* Foto e video */

/* --------------------------------------------------------------------------
   PERCHE' UN UNICO PARTNER
   Niente riquadri: sopra ci sono gia' le schede, ripeterli appiattirebbe la
   pagina. Qui solo un filetto colorato e aria. I quattro colori sono quattro
   dei sei del logo, gia' scuriti per il contrasto.
   -------------------------------------------------------------------------- */
.k-why{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2.2rem;margin-top:2.6rem}
/* Schede che si colorano dall'alto (soluzione 1, scelta il 4/8): stesso gesto
   dei bottoni, delle tessere dei servizi e delle sei aree in chiusura. Un sito
   che fa sempre la stessa cosa si impara una volta sola.
   ⚠️ `--i` e' l'inchiostro che si legge su QUEL colore, stampato voce per voce
   nel contenuto della home: navy sul giallo, bianco su rosso, magenta e blu.
   ⚠️ `isolation:isolate`, o lo z-index:-1 del velo lo manda dietro alla sezione. */
.k-why__i{border-top:5px solid var(--cw,var(--accent));padding:1.4rem 1rem 1.4rem;
  position:relative;isolation:isolate;
  transition:transform .3s cubic-bezier(.22,.8,.24,1), border-top-width .24s}
.k-why__i::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--cw);
  transform:scaleY(0);transform-origin:50% 0;
  transition:transform .44s cubic-bezier(.3,0,.2,1)}
.k-why__i:hover::after{transform:scaleY(1)}
.k-why__i:hover{transform:translateY(-3px);border-top-width:9px}
/* ⚠️ Il colore del testo in hover sta IN FONDO al foglio, non qui: piu' avanti
   c'e' `.k-home .elementor .k-caldo .k-why__i h3{color:var(--ink)}`, che ha la
   stessa specificita' e vince perche' viene dopo. Misurato: sul riquadro
   magenta il titolo restava navy, 3,48:1. */
.k-home .elementor .k-why__i h3,
.k-home .elementor .k-why__i p{transition:color .3s .06s}
.k-home .elementor .k-why__i h3{font-family:var(--display);font-size:1.15rem;font-weight:700;
  line-height:1.25;margin:0 0 .6rem;color:var(--ink)}
.k-home .elementor .k-why__i p{font-size:15.5px;line-height:1.6;margin:0;color:var(--muted)}
@media (max-width:640px){ .k-why{gap:1.8rem} }

/* --------------------------------------------------------------------------
   Respiro verticale su schermi piccoli.
   Le sezioni hanno 7rem sopra e sotto: sul desktop e' giusto, su un telefono
   due sezioni adiacenti fanno 14rem (oltre 220px) di vuoto fra un blocco e
   l'altro, e sembra che la pagina sia finita.
   -------------------------------------------------------------------------- */
@media (max-width: 780px){
  .k-home .elementor-top-section > .elementor-container > .elementor-column > .elementor-widget-wrap{
    padding-top: 0;
    padding-bottom: 0;
  }
  .k-home .elementor-top-section{
    padding-top: 3.2rem !important;
    padding-bottom: 3.2rem !important;
  }
  /* lo slider e il nastro clienti hanno gia' i loro margini */
  .k-home .k-slider{ padding: 0 !important; }
}

/* ==========================================================================
   RITMO DELLE SEZIONI
   Il difetto era questo: sette sezioni di fila sullo stesso grigio, stesso
   allineamento, stesso passo. Nessuno stacco, e la pagina sembrava una sola
   colonna lunga. Ora tre superfici che si alternano — grigio, bianco, navy —
   e la sezione che porta la proposta commerciale e' quella scura.
   ========================================================================== */

/* --- la sezione scura: "perche' un unico partner" + i numeri --- */
.k-dark{background:var(--ink)!important;position:relative;overflow:hidden}
/* alone caldo in alto a destra: da' profondita' senza sporcare la leggibilita' */
.k-dark::before{content:"";position:absolute;width:760px;height:760px;right:-240px;top:-320px;
  border-radius:50%;pointer-events:none;
  background:radial-gradient(circle at 40% 40%,rgba(254,80,0,.16),rgba(208,57,35,.05) 45%,transparent 72%)}
.k-dark > .elementor-container{position:relative;z-index:1}
.k-dark .k-h2 h2{color:#fff!important;max-width:20ch}
.k-dark .k-kicker{color:#FF8A6B!important}
.k-home .elementor .k-dark p{color:rgba(255,255,255,.74)}
.k-home .elementor .k-dark .k-why__i h3{color:#fff}
.k-home .elementor .k-dark .k-why__i p{color:rgba(255,255,255,.66)}
.k-dark .k-why__i{border-top-color:var(--cw)}

/* i numeri dentro la sezione scura, separati da un filetto */
.k-dark .k-nums{border-top:1px solid rgba(255,255,255,.16);margin-top:4rem}
.k-dark .k-nums__i{border-right-color:rgba(255,255,255,.16)}
.k-home .elementor .k-dark .k-nums__v{color:#fff}
.k-home .elementor .k-dark .k-nums__l{color:rgba(255,255,255,.6)}
.k-dark .k-nums__v.da-fare{color:rgba(255,255,255,.28)}

/* --- "come lavoriamo" torna chiara: due sezioni scure di fila si annullano --- */
.k-proc .k-step > .elementor-widget-wrap{border-top:1px solid var(--line);padding-top:1.7rem!important}
.k-proc .k-num .elementor-heading-title{color:var(--accent-dark)!important}

/* --- i titoli di sezione respirano di piu' --- */
.k-h2 h1,.k-h2 h2{margin-bottom:1rem!important;max-width:22ch}
.k-kicker{display:inline-block;margin-bottom:.2rem}

@media (max-width:780px){
  .k-dark::before{width:420px;height:420px;right:-160px;top:-180px}
  .k-dark .k-nums{margin-top:2.4rem}
}

/* --- chiusura: i contatti sul navy, come la sezione della proposta.
       Il riquadro bianco non serve piu': sarebbe una toppa chiara su fondo scuro. --- */
.k-fine .k-cta{background:transparent!important;border:0!important;padding:0!important}
.k-fine::before{right:auto;left:-260px;top:auto;bottom:-320px}
.k-home .elementor .k-fine .k-sede b{color:#fff}
.k-home .elementor .k-fine .k-sede span{color:rgba(255,255,255,.68)}
.k-fine .k-sede{border-left-color:#FF8A6B}
.k-home .elementor .k-fine .k-sede a{color:#FF8A6B}
.k-fine .k-btn-a{background:#fff;color:var(--ink)}
.k-fine .k-btn-a:hover{background:rgba(255,255,255,.88);color:var(--ink)}

/* ==========================================================================
   CI HANNO SCELTO
   Due file che scorrono in direzioni opposte: una fila sola con 17 loghi
   sarebbe lunghissima e il movimento quasi impercettibile. I bordi sfumano,
   cosi' i loghi entrano ed escono invece di comparire di colpo.
   ========================================================================== */
/* ⚠️ Il fondo era una sfumatura da navy a BORDEAUX (#5A2016): a destra la
   banda diventava rossa, e quel colore non sta in nessuna palette del sito.
   Qui e' il navy scuro del footer e dello slider, pieno.
   ⚠️ Rimesso il 7/8 alle 16:45: un salvataggio delle 16:41 aveva riportato
   indietro questo blocco insieme alla sezione «Ultimi lavori». */
.k-loghi-banda{position:relative;overflow:hidden;background:#0F1622}
/* ⚠️ Tolto il filetto a sei colori sopra e sotto: incorniciava la banda come
   un adesivo, e i sei colori sono gia' il segno dello slider — qui facevano il
   verso a se stessi. */
/* Titolo della fascia clienti: STESSA misura degli altri titoli di sezione.
   Era un paragrafo da 34px con dicitura assente, e fra sezioni che hanno tutte
   dicitura + H2 da 51px sembrava un'altra cosa. Qui e' centrato perche' lo e'
   tutta la fascia, ed e' bianco perche' il fondo e' scuro. */
.k-loghi-banda .k-kicker,
.k-home .elementor .k-loghi-banda .k-h2 h2{text-align:center}
.k-home .elementor .k-loghi-banda .k-kicker{color:#FF8A6B!important;display:block}
.k-home .elementor .k-loghi-banda .k-h2 h2{
  color:#fff!important;max-width:22ch;margin:.2rem auto 2.6rem!important}
/* la vecchia dicitura, se resta in giro su qualche pagina */
.k-home .elementor .k-loghi__cap{text-align:center;font-family:var(--display);
  font-size:clamp(1.5rem,2.6vw,2.1rem)!important;font-weight:700!important;
  letter-spacing:-.01em;text-transform:none;line-height:1.2;
  color:#fff!important;margin:0 0 2.8rem!important}
/* ⚠️ Con quattro file 1,6rem di distacco fanno un muro alto 700px: qui
   1,15rem, e la fascia resta una striscia. */
.k-loghi{display:grid;gap:1.15rem}
.k-loghi__fila{overflow:hidden;
  /* sfumatura ai bordi: senza, i loghi appaiono e spariscono di scatto */
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}
/* La pista NON deve essere alta quanto il logo: l'ingrandimento in hover
   (scale 1.12) sborderebbe e overflow:hidden della fila lo taglierebbe.
   min-height al posto di height, piu' aria sopra e sotto. */
/* ⚠️⚠️ LA DURATA VA RICALCOLATA OGNI VOLTA CHE SI AGGIUNGONO LOGHI: la pista e'
   lunga quanto i marchi che contiene, quindi a durata ferma piu' loghi = piu'
   veloce. Il 7/8 da 15 a 53 loghi: a 62s la prima fila sarebbe passata da 23 a
   oltre 60 px/s. Conto: pista = 2*(somma larghezze) + (2N-1)*gap;
   durata = (pista/2) / velocita', con 23 / 18,5 / 21 / 19,8 px/s sulle
   QUATTRO file — quattro velocita' diverse apposta, se no le file si
   sincronizzano e sembra un blocco unico che scivola.
   ⚠️ 30/10/2026: +Brasa Steak House nella prima fila e +La Vannina nella
   terza (59 loghi): 121→127s e 132→141s, sul telefono 84→88s e 93→99s.
   Poi +i9factory nella seconda e +Redess nella quarta (61 loghi): 136→145s e
   131→138s, sul telefono 96→102s e 93→98s. Poi +Falegnameria Ruberto nella
   quarta (62 loghi): 138→147s, sul telefono 98→105s.
   ⚠️ Le file sono quattro perche' 53 loghi su tre darebbero piste da 7.200px
   e giri da oltre due minuti e mezzo. La quarta va anche all'indietro. */
.k-loghi__pista{display:flex;align-items:center;gap:4.5rem;width:max-content;
  min-height:46px;padding-block:12px;
  animation:kScorri 127s linear infinite}
.k-loghi__fila.-indietro .k-loghi__pista{animation-duration:145s;animation-direction:reverse}
.k-loghi__fila.-terza .k-loghi__pista{animation-duration:141s}
.k-loghi__fila.-quarta .k-loghi__pista{animation-duration:147s}
/* ⚠️ 5/11/2026, utente: «in home page non funzionano animazioni loghi». Su iPhone un tocco
   accende :hover e lo lascia acceso: le quattro file si fermavano e restavano ferme. La pausa
   e l'ingrandimento valgono solo con un mouse vero. */
@media (hover:hover) and (pointer:fine){
  .k-loghi:hover .k-loghi__pista{animation-play-state:paused}
}
@keyframes kScorri{to{transform:translateX(-50%)}}

/* Il colore lo uniformiamo noi: i loghi arrivano bianchi, neri e a colori.
   Renderli tutti dello stesso tono e' cio' che fa sembrare pulita una fascia. */
/* La specificita' deve battere le regole immagine di Ohio/Elementor:
   scritta come '.k-loghi img' il logo restava alla sua altezza naturale (120px),
   e l'SVG senza dimensioni intrinseche si dilatava a riempire la fila.
   brightness(0) invert(1) = qualunque logo diventa bianco pieno, chiaro o scuro
   che fosse in partenza. E' cio' che rende omogenea la fila. */
/* I file sono gia' normalizzati per AREA ottica: qui basta un tetto, cosi'
   ognuno tiene la sua proporzione e pesano tutti uguale all'occhio. */
/* NIENTE height/width con !important: batterebbero lo stile inline che porta
   l'altezza propria di ogni logo, e li riallineerebbe tutti uguali. */
.k-home .elementor .k-loghi img{width:auto!important;max-width:none!important;
  /* niente max-height: la fissava di nuovo uguale per tutti e annullava
     la normalizzazione per area. L'altezza la porta ogni img inline. */
  object-fit:contain;flex:0 0 auto;
  filter:brightness(0) invert(1) opacity(.62);
  transition:filter .35s cubic-bezier(.22,1,.36,1),transform .35s cubic-bezier(.22,1,.36,1)}
@media (hover:hover) and (pointer:fine){
  .k-home .elementor .k-loghi img:hover{filter:brightness(0) invert(1) opacity(1);transform:scale(1.12)}
}

@media (max-width:780px){
  .k-home .elementor .k-loghi img{transform:scale(.78);transform-origin:center}
  .k-loghi__pista{min-height:34px;padding-block:9px;gap:2.6rem}
  .k-loghi__pista{gap:3rem;animation-duration:88s}
  .k-loghi__fila.-indietro .k-loghi__pista{animation-duration:102s}
  .k-loghi__fila.-terza .k-loghi__pista{animation-duration:99s}
  .k-loghi__fila.-quarta .k-loghi__pista{animation-duration:105s}
}
/* ⚠️⚠️ 5/11/2026, utente: «loghi in home non si muovono ma si vedono duplicati».
   Ogni pista contiene i suoi loghi DUE VOLTE, scritti nell'HTML di Elementor: e'
   la seconda copia che fa girare il nastro senza stacchi (translateX -50%). Qui
   c'era un blocco «prefers-reduced-motion» che fermava le file e le mandava a
   capo: su ogni computer/telefono con «Riduci movimento» o «Effetti animazione»
   spenti (Windows 11 li spegne spesso da solo) la fascia restava ferma e
   mostrava ogni logo due volte. Tolto: lo scorrimento e' lento e lineare, e su
   richiesta dell'utente deve girare sempre. NON rimettere un animation:none
   sulle piste senza nascondere anche la seconda meta' dei loghi. */


/* ==========================================================================
   "PERCHE' UN UNICO PARTNER" — superficie calda
   Era navy, ma con la fascia clienti diventata anch'essa scura le due si
   fondevano in un unico blocco. Qui un tono caldo chiaro: distinto sia dal
   grigio freddo delle aree sopra, sia dalla banda scura sotto.
   ========================================================================== */
.k-caldo{background:#F2EBE3!important;position:relative;overflow:hidden}
.k-caldo::before{content:"";position:absolute;width:720px;height:720px;right:-260px;top:-300px;
  border-radius:50%;pointer-events:none;
  background:radial-gradient(circle at 40% 40%,rgba(208,57,35,.09),rgba(254,80,0,.04) 45%,transparent 72%)}
.k-caldo > .elementor-container{position:relative;z-index:1}

/* i contenuti tornano scuri su chiaro */
.k-home .elementor .k-caldo .k-h2 h2{color:var(--ink)!important;max-width:20ch}
.k-home .elementor .k-caldo .k-kicker{color:var(--accent-dark)!important}
.k-home .elementor .k-caldo p{color:var(--muted)}
.k-home .elementor .k-caldo .k-why__i h3{color:var(--ink)}
.k-home .elementor .k-caldo .k-why__i p{color:var(--muted)}

/* la fascia numeri dentro la sezione calda */
.k-caldo .k-nums{border-top:1px solid rgba(19,28,46,.14);margin-top:4rem}
.k-caldo .k-nums__i{border-right-color:rgba(19,28,46,.14)}
.k-home .elementor .k-caldo .k-nums__v{color:var(--ink)}
.k-home .elementor .k-caldo .k-nums__l{color:var(--muted)}
.k-home .elementor .k-caldo .k-nums__v.da-fare{color:rgba(19,28,46,.26)}

@media (max-width:780px){
  .k-caldo::before{width:400px;height:400px;right:-150px;top:-170px}
  .k-caldo .k-nums{margin-top:2.4rem}
}

/* --------------------------------------------------------------------------
   "PERCHE'": titolo a sinistra, argomenti a destra in 2x2
   -------------------------------------------------------------------------- */
.k-why-testa > .elementor-widget-wrap{padding-right:2.5rem!important}
.k-why-testa .k-h2 h2{max-width:14ch}
.k-why .k-why__i,.k-why__i{margin-bottom:0}
.k-why{grid-template-columns:repeat(2,1fr)!important;gap:2rem 2.4rem!important;margin-top:0!important}
.k-caldo-coda{padding-top:0!important}
.k-caldo-coda::before{display:none}
@media (max-width:980px){
  .k-why-testa > .elementor-widget-wrap{padding-right:0!important}
  .k-why{grid-template-columns:1fr!important}
}

/* --------------------------------------------------------------------------
   LAVORI: la fila di progetti che scorre in orizzontale mentre si scende

   DUE STATI, NON UNO.
   Lo stato di base e' una fila che si scorre col dito o con la rotellina: e'
   quello che si vede su telefono, con le animazioni disattivate e se il
   JavaScript non parte. Solo quando il JavaScript conferma che si puo' fare
   aggiunge la classe .is-pin e la sezione diventa la scena bloccata in cui i
   progetti entrano da destra. Se qualcosa va storto si resta sulla fila
   semplice, che funziona lo stesso: mai una sezione vuota.
   -------------------------------------------------------------------------- */
/* La sezione Elementor non mette margini interni: la scena bloccata deve
   riempire lo schermo. I margini laterali li calcola --g, cosi' le schede
   restano allineate al resto della pagina. */
.k-lavori > .elementor-container{max-width:none!important}
.k-lavori .elementor-widget-wrap{padding:0!important}

.k-hs{--g:max(1.5rem,calc((100% - var(--k-gabbia)) / 2));position:relative}
/* Senza scena bloccata il respiro sopra e sotto lo mette il blocco stesso:
   la sezione ha margini a zero e resterebbe attaccata alle vicine. */
.k-hs:not(.is-pin){padding-block:clamp(3.2rem,7vw,7rem)}

.k-hs__testa{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;
  padding-inline:var(--g);margin-bottom:clamp(1.5rem,4vh,2.4rem)}
.k-home .elementor .k-hs__h{font-size:clamp(2rem,4.2vw,3.2rem);margin:.15rem 0 .5rem}
.k-home .elementor .k-hs__s{font-size:16px;max-width:44ch;margin:0}
.k-hs__stato{flex:0 0 auto;display:flex;align-items:center;gap:1rem;padding-bottom:.5rem}
.k-hs__cont{font-family:var(--display);font-weight:700;font-size:15px;color:var(--ink);
  letter-spacing:.05em;font-variant-numeric:tabular-nums}
.k-hs__cont i{font-style:normal;opacity:.35;margin:0 .35rem}
.k-hs__barra{width:min(220px,18vw);height:3px;border-radius:99px;background:var(--line);overflow:hidden}
.k-hs__barra i{display:block;height:100%;border-radius:99px;background:var(--accent);
  transform:scaleX(0);transform-origin:left}

/* la fila: di base si scorre di lato, il pollice fa quello che ci si aspetta */
.k-hs__vp{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.k-hs__vp::-webkit-scrollbar{display:none}
.k-hs__track{display:flex;align-items:stretch;gap:1.4rem;padding-inline:var(--g);
  width:max-content}

/* --- la scheda --- */
.k-pj{flex:0 0 clamp(266px,26vw,392px);display:flex;scroll-snap-align:center}
.k-pj__a{display:flex;flex-direction:column;width:100%;background:var(--surface);
  border-radius:18px;overflow:hidden;text-decoration:none;
  box-shadow:0 1px 2px rgba(19,28,46,.06),0 14px 34px -20px rgba(19,28,46,.42);
  transition:transform .42s cubic-bezier(.22,.8,.24,1),box-shadow .42s}
/* Ohio dipinge un gradiente ARANCIONE di sfondo su ogni <a> al passaggio del
   mouse: e' il suo effetto di sottolineatura, ma su un collegamento grande
   come una scheda riempie di arancione tutto il riquadro. Va spento qui,
   non a livello di tema: altrove quell'effetto serve. */
.k-home .elementor .k-pj__a,
.k-home .elementor .k-pj__a:hover,
.k-home .elementor .k-pj__a:focus{background-image:none!important;color:var(--ink)}
.k-home .elementor .k-pj--tutti,
.k-home .elementor .k-pj--tutti:hover,
.k-home .elementor .k-pj--tutti:focus{
  background-image:linear-gradient(150deg,#131C2E,#2A1F33 55%,#5A2016)!important}
/* il segnale del passaggio del mouse resta, ma scelto da noi: la scheda si
   alza, la foto respira e il titolo va sul rosso di marca */
.k-home .elementor .k-pj__a:hover .k-pj__t{color:var(--accent-dark)}
.k-home .elementor .k-pj__t{transition:color .28s}
.k-pj__a:hover{transform:translateY(-6px);
  box-shadow:0 2px 4px rgba(19,28,46,.07),0 26px 52px -24px rgba(19,28,46,.5)}
.k-pj__ph{position:relative;overflow:hidden;background:#e7eaee;aspect-ratio:16/10}
.k-home .elementor .k-pj__ph img{width:100%;height:100%;object-fit:cover;
  object-position:top center;display:block;
  transition:transform .7s cubic-bezier(.22,.8,.24,1)}
.k-pj__a:hover .k-pj__ph img{transform:scale(1.055)}
/* la scritta compare sulla foto solo al passaggio del mouse: sul telefono non
   servirebbe a niente e coprirebbe meta' schermata */
.k-pj__ov{position:absolute;inset:0;display:flex;align-items:flex-end;padding:1.1rem;
  opacity:0;transition:opacity .34s;
  background:linear-gradient(180deg,rgba(19,28,46,0) 42%,rgba(19,28,46,.86))}
.k-pj__a:hover .k-pj__ov{opacity:1}
.k-pj__go{font-family:var(--body);font-weight:600;font-size:14.5px;color:#fff;
  display:inline-flex;align-items:center;gap:.45rem}
.k-pj__go i{font-style:normal;transition:transform .3s}
.k-pj__a:hover .k-pj__go i{transform:translateX(4px)}

.k-pj__b{padding:1.1rem 1.25rem 1.3rem;display:flex;flex-direction:column;gap:.28rem}
.k-pj__k{display:flex;align-items:center;gap:.55rem;font-family:var(--body);font-size:13px;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.k-pj__k b{color:var(--accent-dark)}
.k-pj__k span::before{content:"";display:inline-block;width:3px;height:3px;border-radius:50%;
  background:currentColor;vertical-align:middle;margin-right:.55rem;opacity:.5}
/* Prefisso .k-home .elementor obbligatorio: le regole generali su h3 e p
   valgono 0-2-1 e vincerebbero, il titolo tornerebbe grigio. */
.k-home .elementor .k-pj__t{font-size:clamp(1.15rem,1.6vw,1.4rem);margin:0;line-height:1.15}
.k-home .elementor .k-pj__d{font-size:14.5px;margin:0;color:var(--muted)}

/* --- ultimo pannello: il portfolio completo --- */
.k-pj--tutti{flex:0 0 clamp(266px,23vw,340px);display:flex;flex-direction:column;
  justify-content:center;gap:.6rem;padding:2.2rem 1.9rem;border-radius:18px;
  text-decoration:none;scroll-snap-align:center;
  background:linear-gradient(150deg,#131C2E,#2A1F33 55%,#5A2016);
  box-shadow:0 20px 44px -24px rgba(19,28,46,.62);
  transition:transform .42s cubic-bezier(.22,.8,.24,1)}
.k-pj--tutti:hover{transform:translateY(-6px)}
.k-pj--tutti__i{width:50px;height:50px;border-radius:50%;display:grid;place-items:center;
  color:#fff;background:rgba(255,255,255,.13);margin-bottom:.3rem;transition:.34s}
.k-pj--tutti:hover .k-pj--tutti__i{background:var(--accent);transform:translateX(5px)}
.k-home .elementor .k-pj--tutti__t{font-family:var(--display);font-weight:700;color:#fff;
  font-size:clamp(1.4rem,2vw,1.75rem);line-height:1.1;letter-spacing:-.02em}
.k-home .elementor .k-pj--tutti__d{font-family:var(--body);font-size:14.5px;line-height:1.55;
  color:rgba(255,255,255,.72)}
.k-pj--tutti__b{align-self:flex-start;margin-top:.7rem;pointer-events:none}

/* --------------------------------------------------------------------------
   .is-pin — la scena bloccata (la mette il JavaScript, vedi home.js)
   -------------------------------------------------------------------------- */
.k-hs.is-pin .k-hs__pin{position:sticky;top:0;height:100vh;height:100svh;
  display:flex;flex-direction:column;overflow:hidden;
  padding:clamp(84px,11vh,124px) 0 clamp(1.8rem,5vh,3.4rem)}
.k-hs.is-pin .k-hs__testa{flex:0 0 auto}
.k-hs.is-pin .k-hs__vp{flex:1;min-height:0;display:flex;align-items:center;
  overflow:hidden;scroll-snap-type:none}
.k-hs.is-pin .k-hs__track{height:auto;align-items:stretch;will-change:transform}
/* Le schede sono piu' larghe nella scena bloccata: la foto tiene il suo
   formato 16:10, quindi la larghezza decide anche quanto si vede del sito. */
.k-hs.is-pin .k-pj{flex:0 0 clamp(300px,32vw,460px)}
/* Le schede arrivano una alla volta. Lo stato nascosto vive SOLO qui dentro:
   senza .is-pin restano visibili, che e' il comportamento di ripiego giusto. */
.k-hs.is-pin .k-pj{opacity:0;transform:translateY(34px) scale(.975);
  transition:opacity .62s cubic-bezier(.22,.8,.24,1),transform .62s cubic-bezier(.22,.8,.24,1)}
.k-hs.is-pin .k-pj.is-on{opacity:1;transform:none}
/* Tutte le schede alte uguale (le descrizioni non hanno la stessa lunghezza),
   ma la FOTO non si allunga: resta 16:10 come le schermate, altrimenti
   'copri' la ritaglia e del sito del cliente se ne vede meta'. */
.k-hs.is-pin .k-pj__a{height:100%}
.k-hs.is-pin .k-pj__ph{flex:0 0 auto}
.k-hs.is-pin .k-pj__b{flex:1}

/* Le stesse schede nella pagina portfolio, tutte insieme. */
.k-pj-griglia{display:grid;gap:1.6rem;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,296px),1fr))}
.k-pj-griglia .k-pj{scroll-snap-align:none}

@media (max-width:899px){
  .k-hs__testa{display:block;padding-inline:1.25rem}
  .k-hs__stato{display:none}
  .k-hs__track{gap:1rem;padding-inline:1.25rem}
  .k-pj,.k-pj--tutti{flex-basis:min(78vw,330px)}
  .k-pj--tutti{padding:1.8rem 1.5rem}
}

/* --------------------------------------------------------------------------
   CONTATTI: info a sinistra, form a destra, sul fondo scuro
   -------------------------------------------------------------------------- */
.k-cont-info > .elementor-widget-wrap{padding-right:2.5rem!important}
.k-cont-info .k-h2 h2{max-width:15ch}
.k-cont-form .wpcf7{margin-top:.4rem}

/* SPAZI FRA I CAMPI.
   Le colonne del form sono i vecchi .vc_col-* di Visual Composer: flottano a
   sinistra e nessuno le distanzia, cosi' le righe si toccano e l'etichetta di
   una riga finisce appiccicata al campo di quella sopra. Le lascio flottanti e
   non le porto a griglia perche' il secondo menu (quello che cambia in base al
   servizio scelto) e' avvolto in sei contenitori condizionali: in griglia
   diventerebbero celle e lascerebbero buchi.
   Il riempimento laterale sulle colonne va compensato sul contenitore,
   altrimenti la fila diventa piu' stretta della colonna che la contiene. */
.k-cont-form .wpcf7 form > div{display:flow-root;margin-inline:-.55rem}
.k-cont-form .wpcf7 [class*="vc_col-"]{
  padding-inline:.55rem!important;margin-bottom:1.6rem!important}
.k-cont-form .wpcf7 label{margin-bottom:.5rem!important}
/* consenso e bottone: staccati dal resto, sono due passaggi diversi */
.k-cont-form .wpcf7 [class*="vc_col-"]:has(input[type=checkbox]){margin-top:.4rem}
.k-cont-form .wpcf7 [class*="vc_col-"]:has(input[type=submit]){margin-top:.6rem}
.k-cont-form .wpcf7 .wpcf7-list-item label{display:flex;gap:.7rem;align-items:flex-start;
  margin-bottom:0!important;font-weight:400}
.k-cont-form .wpcf7 input[type=checkbox]{margin-top:.28rem;flex:0 0 auto;
  width:17px;height:17px;accent-color:#FF8A6B}

/* I due menu a tendina sembravano campi di testo gia' compilati: senza la
   freccia non si capisce che si aprono. */
.k-cont-form .wpcf7 select{
  appearance:none;-webkit-appearance:none;padding-right:2.6rem!important;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round' opacity='.6'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .95rem center;background-size:17px}
.k-cont-form .wpcf7 label{display:block;font-size:14px;font-weight:600;
  color:rgba(255,255,255,.8);margin-bottom:.4rem}
.k-cont-form .wpcf7 input[type=text],.k-cont-form .wpcf7 input[type=email],
.k-cont-form .wpcf7 input[type=tel],.k-cont-form .wpcf7 select,
.k-cont-form .wpcf7 textarea{
  width:100%;padding:.85rem 1rem;border-radius:10px;font-size:16px;
  background-color:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);
  color:#fff;font-family:var(--body);transition:border-color .2s,background .2s}
.k-cont-form .wpcf7 input::placeholder,.k-cont-form .wpcf7 textarea::placeholder{
  color:rgba(255,255,255,.42)}
.k-cont-form .wpcf7 input:focus,.k-cont-form .wpcf7 select:focus,
.k-cont-form .wpcf7 textarea:focus{
  outline:none;border-color:#FF8A6B;background-color:rgba(255,255,255,.11)}
.k-cont-form .wpcf7 select option{background:var(--ink);color:#fff}
.k-cont-form .wpcf7 textarea{min-height:120px;resize:vertical}
.k-cont-form .wpcf7 .wpcf7-list-item{margin:0}
.k-home .elementor .k-cont-form .wpcf7 p{color:rgba(255,255,255,.72);font-size:14px}
.k-cont-form .wpcf7 a{color:#FF8A6B}
.k-cont-form .wpcf7 input[type=submit]{
  background:#fff;color:var(--ink);border:0;border-radius:99px;
  padding:.9rem 2rem;font-weight:600;font-size:16px;cursor:pointer;width:auto;
  transition:transform .2s,background .2s}
.k-cont-form .wpcf7 input[type=submit]:hover{transform:translateY(-2px);background:rgba(255,255,255,.9)}
@media (max-width:980px){ .k-cont-info > .elementor-widget-wrap{padding-right:0!important} }

/* --------------------------------------------------------------------------
   FORM CONTATTI: bottone e link sul fondo scuro
   Il tasto usciva grigio (stile del tema) e i link in rosso di marca danno
   3,48:1 sul navy: non si leggono.
   -------------------------------------------------------------------------- */
.k-home .k-cont-form .wpcf7 input[type=submit],
.k-home .k-cont-form .wpcf7 button[type=submit]{
  background:#fff!important;color:var(--ink)!important;border:0!important;
  border-radius:99px!important;padding:.95rem 2.2rem!important;
  font-family:var(--body)!important;font-weight:600!important;font-size:16px!important;
  opacity:1!important;text-transform:none!important;letter-spacing:0!important;
  box-shadow:none!important;cursor:pointer;transition:transform .2s,background .2s}
.k-home .k-cont-form .wpcf7 input[type=submit]:hover{
  background:rgba(255,255,255,.88)!important;transform:translateY(-2px)}
/* i link dentro il form e nelle sedi: variante chiara, leggibile sul navy */
.k-home .elementor .k-cont-form a,
.k-home .elementor .k-cont-info .k-sede a{ color:#FF8A6B!important; }
.k-home .elementor .k-cont-form a:hover,
.k-home .elementor .k-cont-info .k-sede a:hover{ color:#FFB59E!important; }
.k-home .elementor .k-fine .k-sede{ border-left-color:#FF8A6B; }

/* --------------------------------------------------------------------------
   CONTATTI SU FONDO CHIARO
   Erano su navy, ma il footer e' scuro: due superfici scure attaccate si
   annullano e il piede sembrava la continuazione della sezione. Sul caldo la
   pagina chiude con chiaro -> scuro, che e' anche il verso giusto: finisce il
   contenuto, comincia il piede.
   -------------------------------------------------------------------------- */
.k-cont-chiaro::before{right:auto;left:-260px;top:auto;bottom:-320px}
.k-home .elementor .k-cont-chiaro .k-sede b{color:var(--ink)}
.k-home .elementor .k-cont-chiaro .k-sede span{color:var(--muted)}
.k-cont-chiaro .k-sede{border-left-color:var(--accent)}
/* ⚠️⚠️ I TRE FILETTI, TRE COLORI. Le regole vanno QUI e non accanto a `.k-sede`
   in cima al foglio: `.k-cont-chiaro .k-sede` ha la stessa specificita' di
   `.k-sede:nth-of-type(n)` ma sta piu' avanti, quindi vinceva lei e i tre
   restavano tutti rossi. Serve l'antenato, non solo il nth-of-type.
   Tre blocchi identici con lo stesso segno erano un elenco; tre colori li
   rendono tre cose. Scelta dell'utente il 7/8. */
.k-cont-chiaro .k-sede:nth-of-type(1){border-left-color:#F5A623}
.k-cont-chiaro .k-sede:nth-of-type(2){border-left-color:#0F766E}
.k-cont-chiaro .k-sede:nth-of-type(3){border-left-color:#D03923}
.k-home .elementor .k-cont-chiaro .k-sede a{color:var(--accent-dark)}

.k-cont-chiaro .k-cont-form .wpcf7 label{color:var(--ink)}
.k-cont-chiaro .k-cont-form .wpcf7 input[type=text],
.k-cont-chiaro .k-cont-form .wpcf7 input[type=email],
.k-cont-chiaro .k-cont-form .wpcf7 input[type=tel],
.k-cont-chiaro .k-cont-form .wpcf7 select,
.k-cont-chiaro .k-cont-form .wpcf7 textarea{
  background-color:#fff;border-color:rgba(19,28,46,.16);color:var(--ink)}
.k-cont-chiaro .k-cont-form .wpcf7 input::placeholder,
.k-cont-chiaro .k-cont-form .wpcf7 textarea::placeholder{color:rgba(19,28,46,.40)}
.k-cont-chiaro .k-cont-form .wpcf7 input:focus,
.k-cont-chiaro .k-cont-form .wpcf7 select:focus,
.k-cont-chiaro .k-cont-form .wpcf7 textarea:focus{
  border-color:var(--accent);background-color:#fff;
  box-shadow:0 0 0 3px rgba(208,57,35,.12)}
.k-cont-chiaro .k-cont-form .wpcf7 select option{background:#fff;color:var(--ink)}
/* la freccia delle tendine va ridisegnata scura: quella chiara sparirebbe */
.k-cont-chiaro .k-cont-form .wpcf7 select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23131C2E' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round' opacity='.55'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
.k-home .elementor .k-cont-chiaro .k-cont-form .wpcf7 p{color:var(--muted)}
.k-cont-chiaro .k-cont-form .wpcf7 a{color:var(--accent-dark)}
.k-cont-chiaro .k-cont-form .wpcf7 input[type=checkbox]{accent-color:var(--accent)}
/* il tasto Invia: bianco su chiaro sparirebbe, va il rosso di marca */
.k-home .k-cont-chiaro .k-cont-form .wpcf7 input[type=submit]{
  background:var(--accent)!important;color:#fff!important}
.k-home .k-cont-chiaro .k-cont-form .wpcf7 input[type=submit]:hover{
  background:var(--accent-dark)!important}

/* --------------------------------------------------------------------------
   PAGINE SOLUZIONE (cloud, software su misura, assistente AI)
   -------------------------------------------------------------------------- */
.k-home .elementor .k-sol__intro{font-size:clamp(1.05rem,1.7vw,1.28rem);max-width:56ch;
  color:var(--ink)!important}
.k-sol__base{border-left:3px solid var(--accent);padding:.15rem 0 .15rem 1.1rem;
  margin-top:1.6rem;max-width:58ch}
.k-home .elementor .k-sol__base{font-size:15.5px;color:var(--muted)}
.k-home .elementor .k-sol__base b{color:var(--ink)}

.k-sol{display:grid;gap:1.4rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.k-sol__p{background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:1.7rem;transition:transform .3s,box-shadow .3s,border-color .3s}
.k-sol__p:hover{transform:translateY(-4px);border-color:var(--line-strong);
  box-shadow:0 22px 54px -30px rgba(19,28,46,.5)}
.k-home .elementor .k-sol__p h2{font-size:1.18rem!important;margin:0 0 .5rem;line-height:1.2}
.k-home .elementor .k-sol__p p{font-size:15px;margin:0}

.k-sol__chi{list-style:none;margin:1.2rem 0 0;padding:0;
  display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.k-home .elementor .k-sol__chi li{position:relative;padding-left:1.6rem;font-size:15.5px;
  color:var(--muted)}
.k-sol__chi li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;
  border-radius:50%;background:var(--accent)}
.k-sol-testa .k-h2 h1{max-width:20ch}

/* --------------------------------------------------------------------------
   MENU A TENDINA DEL FORM (vedi home.js)
   Il <select> vero resta nel form ma nascosto: qui si veste solo il tasto e
   l'elenco che disegniamo noi. Se il JavaScript non parte, il select torna
   visibile da solo perche' .k-sel__nativo non gli viene mai aggiunta.
   -------------------------------------------------------------------------- */
.k-sel{position:relative}
.k-sel__nativo{position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:0!important;opacity:0!important;pointer-events:none;
  border:0!important;overflow:hidden;clip-path:inset(50%)}

.k-sel__b{width:100%;display:flex;align-items:center;justify-content:flex-start;gap:.6rem;
  padding:.85rem 1rem;border-radius:10px;cursor:pointer;text-align:left;
  font-family:var(--body);font-size:16px;line-height:1.35;
  background:#fff;border:1px solid rgba(19,28,46,.16);color:var(--ink);
  transition:border-color .2s,box-shadow .2s}
.k-sel__b:hover{border-color:rgba(19,28,46,.3)}
.k-sel__b:focus-visible{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(208,57,35,.14)}
/* il nome del servizio puo' essere lungo: va a capo, non viene tagliato a meta'
   come faceva il select di sistema («Soluzioni per Aziend...») */
.k-sel__v{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.k-sel__b > .k-sel__i{margin-left:auto}
.k-sel__i{flex:0 0 auto;opacity:.5;transition:transform .24s}
.k-sel.is-open .k-sel__b{border-color:var(--accent);box-shadow:0 0 0 3px rgba(208,57,35,.14)}
.k-sel.is-open .k-sel__i{transform:rotate(180deg)}

/* Il pannello puo' essere piu' largo del campo: i nomi lunghi
   («Soluzioni per Aziende», «Condivisione Dati in Cloud») su una colonna da un
   terzo andrebbero a capo a meta'. Sul telefono min-width vince su max-width,
   quindi resta largo quanto il campo e non sfora. */
.k-sel__l{position:absolute;z-index:40;left:0;top:calc(100% + 6px);
  min-width:100%;width:max-content;max-width:min(22rem,calc(100vw - 2.5rem));
  margin:0;padding:.4rem;list-style:none;max-height:20rem;overflow-y:auto;
  background:#fff;border:1px solid rgba(19,28,46,.12);border-radius:12px;
  box-shadow:0 24px 48px -22px rgba(19,28,46,.45),0 2px 6px rgba(19,28,46,.06);
  opacity:0;visibility:hidden;transform:translateY(-5px);
  transition:opacity .18s,transform .18s,visibility .18s}
.k-sel.is-open .k-sel__l{opacity:1;visibility:visible;transform:none}

.k-home .elementor .k-sel__o{
  padding:.62rem .8rem;border-radius:8px;cursor:pointer;
  font-family:var(--body);font-size:15.5px;line-height:1.35;color:var(--ink);
  display:flex;align-items:center;gap:.6rem;transition:background .14s}
/* IL PALLINO PORTA IL COLORE DELL'AREA, sempre lo stesso in tutto il sito:
   schede della home, menu del footer, voci di questa tendina. Il colore lo
   assegna il JavaScript per NOME (--c), non per posizione. */
.k-sel__o::before{content:"";flex:0 0 auto;width:7px;height:7px;border-radius:50%;
  background:var(--c,transparent);opacity:.34;transition:opacity .14s}
.k-sel__o:hover{background:rgba(19,28,46,.055)}
.k-sel__o:hover::before{opacity:.72}
/* la riga scelta si riconosce dal SUO colore, non dal blu di sistema */
.k-sel__o[aria-selected="true"]{font-weight:600;
  background:rgba(19,28,46,.055);
  background:color-mix(in srgb, var(--c,var(--accent)) 11%, transparent)}
.k-sel__o[aria-selected="true"]::before{opacity:1}

/* lo stesso pallino nel campo chiuso: l'area si riconosce senza aprire */
.k-sel__p{flex:0 0 auto;width:8px;height:8px;border-radius:50%;
  background:var(--c,transparent);display:none}
.k-sel__p.is-on{display:block}

/* --------------------------------------------------------------------------
   ERRORI DEL FORM: leggeri
   Erano un bordo spesso rosa con l'alone e due righe di testo rosso sotto ogni
   campo: tre campi vuoti riempivano mezza schermata di rosso. Basta un bordo
   sottile e una riga sola.
   -------------------------------------------------------------------------- */
.k-cont-form .wpcf7 .wpcf7-not-valid{
  border-color:var(--accent)!important;
  background-color:rgba(208,57,35,.045)!important;
  box-shadow:none!important;outline:none!important}
.k-cont-form .wpcf7 .k-sel:has(.wpcf7-not-valid) .k-sel__b{border-color:var(--accent)}
.k-home .elementor .k-cont-form .wpcf7 .wpcf7-not-valid-tip{
  display:flex;align-items:center;gap:.4rem;
  font-size:13px!important;line-height:1.3;font-weight:500;
  color:var(--accent-dark)!important;margin:.4rem 0 0!important}
.k-cont-form .wpcf7 .wpcf7-not-valid-tip::before{
  content:"!";flex:0 0 auto;width:15px;height:15px;border-radius:50%;
  background:var(--accent);color:#fff;font-size:10px;font-weight:700;
  display:grid;place-items:center;line-height:1}
/* il riepilogo in fondo: una riga, non un riquadro */
.k-cont-form .wpcf7 .wpcf7-response-output{
  border:0!important;border-left:3px solid var(--accent)!important;
  border-radius:0!important;padding:.5rem 0 .5rem .9rem!important;
  margin:1.2rem 0 0!important;font-size:14.5px}

/* --------------------------------------------------------------------------
   SIPARIO D'INGRESSO: il logo si colora
   Il marchio entra spento e il colore lo attraversa da sinistra a destra,
   preceduto da un filo di luce. E' la frase che Kreita ha sotto al logo,
   «ne combiniamo di tutti i colori», resa come gesto invece che come scritta.
   Si vede una volta per sessione (vedi home.js).
   -------------------------------------------------------------------------- */
/* ⚠️ 28/8/2026: il marchio non si scopre piu' da sinistra. Si COMPONE — gli
   undici colori arrivano da fuori e si incastrano — ed e' l'animazione che
   dice quello che dice la riga sotto il marchio. Il movimento lo comanda
   home.js, che ha bisogno dei gruppi dell'SVG: qui c'e' solo la scena. */
.k-mark{position:relative;display:grid;place-items:center;width:min(520px,80vw)}
.k-mark svg{position:relative;z-index:1;width:100%;height:auto;display:block}
/* la luce dietro: si accende coi primi pezzi e RESPIRA se la pagina non e'
   ancora pronta — e' quella che dice «sto ancora lavorando».
   ⚠️ E' l'unica sfumatura del sito, e sta su fondo scuro dove non ha bordi da
   mostrare. Dentro le schede le sfumature restano bandite. */
.k-luce{position:absolute;width:150%;aspect-ratio:1;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(120,170,255,.30) 0%,rgba(120,170,255,.13) 34%,transparent 66%);
  opacity:0;transform:scale(.7);
  /* ⚠️ La luce sale insieme alla PRIMA META' dei pezzi: se ci mette molto meno
     compare di scatto e poi resta ferma, se ci mette quanto tutto il gesto si
     vede ancora salire mentre il sipario se ne va. Su 1,74s di composizione
     fanno circa nove decimi. */
  transition:opacity .9s ease,transform 1.2s cubic-bezier(.2,.9,.24,1)}
.k-luce.-su{opacity:1;transform:scale(1)}
.k-luce.-respira{animation:kRespiro 2.6s ease-in-out infinite}
@keyframes kRespiro{0%,100%{opacity:.72;transform:scale(.96)}50%{opacity:1;transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){ .k-luce.-respira{animation:none} }

/* --------------------------------------------------------------------------
   PAGINE DELLE SEI AREE
   Il colore dell'area arriva da --ac / --acd, stampati in testa alla pagina
   (vedi aree.php). ⚠️ NON basta colorare le icone: se la dicitura resta sul
   rosso globale, la pagina dice un colore e il menu ne dice un altro. Qui
   l'area si prende TUTTI gli accenti.
   -------------------------------------------------------------------------- */
/* ⚠️ k-area e k-home stanno ENTRAMBE sul body: vanno scritte attaccate.
   Scritte come discendenti («.k-area .k-home») non corrispondono mai, ed e'
   il motivo per cui la dicitura restava sul rosso globale. */
/* ==========================================================================
   DUE COLORI, NON TRE  (04/08/2026)
   Il cliente, guardando l'apertura: «il colore del bottone e tutto il resto da
   dove esce fuori? manca coerenza». Aveva ragione, e il difetto era vero: in
   pagina c'erano TRE colori — il giallo pieno dell'apertura, un giallo scurito
   (#976615) che non compare in nessuna tavolozza di Kreita, e il navy. Nessuno
   dei tre spiegava gli altri due.
   Regola nuova, una sola, valida per tutte e sei le aree:
     · quello che NON e' testo porta il colore PIENO dell'area — fondi,
       numeri grandi, filetti, trattini, bordi, riempimenti al passaggio;
     · quello che E' testo porta l'inchiostro — navy su fondo chiaro,
       --atesto sul fondo pieno.
   Cosi' il giallo che si vede in pagina e' sempre LO STESSO giallo del menu e
   della scheda in home, e non ce n'e' un secondo.
   ⚠️ --acd (la variante scurita) esisteva solo perche' un testo PICCOLO
   colorato non passa il contrasto: giallo su chiaro 3,59:1. La risposta giusta
   non e' scurire il colore fino a cambiarlo, e' non colorare il testo piccolo.
   Resta dichiarata perche' serve dove il colore deve per forza stare su una
   parola (l'etichetta dentro una pasticca bianca), non per le diciture.
   ========================================================================== */
/* La dicitura torna inchiostro, e il colore dell'area lo porta il TRATTINO che
   la precede: pieno, e alla stessa altezza dell'occhio. */
.k-area.k-home .elementor .k-kicker{color:var(--ink)!important;opacity:.68}
.k-area.k-home .elementor .k-kicker::before{content:"";display:inline-block;
  width:1.7rem;height:3px;border-radius:2px;background:var(--ac);
  vertical-align:.26em;margin-right:.75rem;
  transform:scaleX(0);transform-origin:0 50%}

/* LA PASTICCA E' SEMPRE LA STESSA: fondo d'inchiostro, etichetta nel colore
   dell'area. Su chiaro l'inchiostro e' il navy, sull'apertura e' --atesto.
   Cosi' il bottone e' fatto degli stessi due colori della sezione in cui sta,
   e non introduce un terzo colore preso da chissa' dove.

   🔴 IL RIEMPIMENTO SI FA CON `transform`, NON CON `background-size`.
   Prima cresceva animando `background-size` da `100% 0` a `100% 100%`: quella
   proprieta' il browser NON la sa animare sulla scheda grafica, la ridisegna a
   ogni fotogramma, e su una pasticca con gli angoli tondi si vede — parte in
   ritardo e va a scatti. E' il difetto segnalato dal cliente («hover dei
   bottoni strano, non parte benissimo l'effetto»). Ora e' un velo dietro al
   testo che si allunga con `scaleY`, come le sei tessere: stessa direzione,
   dall'alto verso il basso, e tutto sulla scheda grafica.
   ⚠️ Serve `isolation:isolate` sul bottone, altrimenti lo `z-index:-1` del velo
   lo manderebbe dietro alla SEZIONE e sparirebbe. */
.k-area.k-home .elementor a.k-btn-a,
.k-area.k-home .elementor a.k-btn-g{position:relative;isolation:isolate;overflow:hidden;
  background-image:none!important}
.k-area.k-home .elementor a.k-btn-a::before,
.k-area.k-home .elementor a.k-btn-g::before{content:"";position:absolute;inset:0;z-index:-1;
  background:var(--ac);transform:scaleY(0);transform-origin:50% 0;
  transition:transform .4s cubic-bezier(.3,0,.2,1)}
.k-area.k-home .elementor a.k-btn-a:hover::before,
.k-area.k-home .elementor a.k-btn-g:hover::before,
.k-area.k-home .elementor a.k-btn-a:focus-visible::before,
.k-area.k-home .elementor a.k-btn-g:focus-visible::before{transform:scaleY(1)}

.k-area.k-home .elementor a.k-btn-a{
  background-color:var(--ink);color:var(--acl);
  transition:color .3s .06s, transform .3s}
.k-area.k-home .elementor a.k-btn-a:hover{color:var(--atesto);transform:translateY(-2px)}

/* Quella contornata: bordo nel colore pieno, parola in inchiostro, e al
   passaggio si riempie dello stesso colore. */
.k-area.k-home .elementor .k-go,
.k-area.k-home .elementor a.k-btn-g{color:var(--ink);
  border-color:color-mix(in srgb, var(--ac) 58%, transparent);
  transition:color .3s .06s, border-color .3s, transform .3s}
.k-area.k-home .elementor a.k-btn-g:hover{border-color:var(--ac);
  color:var(--atesto);transform:translateY(-2px)}

.k-area .k-sede{border-left-color:var(--ac)}
.k-area.k-home .elementor .k-sede a{color:var(--ink);
  border-bottom:2px solid var(--ac)}
/* anche il segno di spunta dell'hero e i filetti prendono il colore dell'area */
.k-area .k-note p::before{background:var(--ac)}

.k-home .elementor .k-area__intro{font-size:clamp(1.08rem,1.8vw,1.3rem);max-width:50ch;
  color:var(--ink);line-height:1.6}
/* Il capoverso sotto al titolo della fascia dei servizi (26/10/2026): dice che
   cosa c'e' nelle schede prima che comincino. Corpo del testo, non dell'apertura:
   a 1,3rem faceva concorrenza al titolo che ha sopra. */
.k-home .elementor .k-area__sotto{font-size:1.06rem;line-height:1.7;max-width:64ch;
  color:#3A4555;margin:1rem 0 0}
.k-home .elementor .k-area__sotto a{color:var(--ink);text-decoration:underline;
  text-decoration-color:var(--ac,currentColor);text-underline-offset:3px}
/* Un nome di progetto citato nel testo (es. /i-nostri-lavori/): sul fondo a
   colori, senza la sottolineatura, il collegamento non si distingueva. */
.k-home .elementor a.k-sott{color:inherit;text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:3px}

/* L'elenco di cosa si consegna: numerato come le voci del menu, non con i
   soliti pallini. Il numero e' la stessa lingua che il sito parla in alto. */
.k-area__consegne{list-style:none;margin:.2rem 0 0;padding:0;counter-reset:kc}
/* Flex e non posizionamento assoluto: col numero ancorato in alto, sulle voci
   che vanno a capo restava appeso alla prima riga invece di stare in mezzo. */
.k-home .elementor .k-area__consegne li{counter-increment:kc;
  display:flex;align-items:center;gap:1.2rem;
  padding:1rem .9rem;margin:0;font-size:15.5px;line-height:1.5;
  color:var(--ink);border-top:1px solid var(--line);border-radius:12px;
  transition:background .26s, transform .26s cubic-bezier(.22,.8,.24,1)}
.k-area__consegne li:first-child{border-top:0}
.k-area__consegne li::before{content:"0" counter(kc);flex:0 0 auto;width:1.9rem;
  font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.04em;
  color:var(--acd);transition:transform .26s cubic-bezier(.22,.8,.24,1), color .26s}
/* Al passaggio del mouse la riga si accende nel colore dell'area e il numero
   cresce: erano sette righe ferme, adesso rispondono. */
.k-area__consegne li:hover{transform:translateX(5px);
  background:rgba(19,28,46,.04);
  background:color-mix(in srgb, var(--ac) 11%, transparent)}
.k-area__consegne li:hover::before{transform:scale(1.28)}
/* entrano una alla volta mentre si scorre: se ne occupa il browser, senza JS.
   Dove non e' supportato non succede niente e restano visibili. */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-area__consegne li{animation:kEnter linear both;
      animation-timeline:view();animation-range:entry 2% cover 16%}
  }
}
.k-area-testa > .elementor-widget-wrap{padding-right:3rem!important}

/* --------------------------------------------------------------------------
   I SERVIZI — INDICE TIPOGRAFICO (impianto S3, scelto il 3/8)
   Il nome del servizio grande, le tessere sotto, la descrizione a fianco piu'
   piccola. Il peso lo porta il carattere e non i riquadri: nessuna icona,
   nessun bordo. E' anche la piu' veloce da scorrere quando i servizi sono
   nove, come in Software.
   -------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------
   I SERVIZI DELL'AREA — impianto B1, «schede che si riempiono» (26/8/2026)

   PERCHE' SI E' CAMBIATO IMPIANTO. Quello di prima — indice a sinistra,
   pannello a destra — regge intorno ai sei servizi e si scompone sopra e
   sotto. Misurato prima di toccare:
     · con 2 servizi (Design & Branding, Gadget e stampe, Foto e video, cioe'
       META' DELLE AREE) l'indice e' alto 113px e il pannello 240: meta'
       sezione resta vuota;
     · con 9 (Aziende, Software) l'indice arriva a 511 e il pannello resta a
       288, e sotto il pannello si apre un buco.
   Una scheda per servizio invece cresce con la lista invece di combatterla.

   DUE COLONNE O TRE. Con auto-fit due schede si sarebbero allargate a 605px
   l'una e sarebbero sembrate due manifesti; con tre colonne fisse avrebbero
   lasciato una casella vuota. Quindi il numero di colonne lo decide il PHP,
   che sa quanti servizi ci sono: `.-due` quando sono due, tre negli altri
   casi. Con due schede si mostrano piu' voci, perche' c'e' il posto.

   ⚠️ IL RIEMPIMENTO E' `inset:-1px`, NON `inset:0`. La scheda ha un bordo da
   1px: con `inset:0` il colore si ferma dentro il bordo e negli angoli
   arrotondati resta una falce di fondo chiaro — lo stesso inciampo dei
   riquadri delle icone, corretto l'8/8 poco piu' sotto in questo foglio.
   ⚠️ NIENTE OPACITA' SUL TESTO SOPRA IL COLORE PIENO. L'opacita' mescola
   l'inchiostro col fondo e il contrasto misurato non e' piu' quello scelto.
   L'inchiostro giusto per ogni area arriva in `--ink-c` (colonna [4] di
   KREITA_AREE): navy sul giallo 8,40:1, bianco sugli altri cinque.
   ⚠️ Lo scatto in alto usa `translate`, non `transform`: `transform` e' gia'
   impegnato dall'animazione d'ingresso `kEnter`, e le due cose si
   annullerebbero a vicenda.
   -------------------------------------------------------------------------- */
/* ⚠️ I TEMPI STANNO QUI, IN DUE VARIABILI, E NON SPARSI IN VENTI REGOLE.
   Il 26/8 e' stato chiesto «piu' lento e meno scattoso»: con i valori scritti
   dentro ogni riga bisognava trovarli tutti, e bastava dimenticarne uno perche'
   una cosa partisse fuori tempo rispetto alle altre — che e' precisamente il
   difetto segnalato la volta prima.
   ⚠️⚠️ LA CURVA E' STATA SBAGLIATA DUE VOLTE, e i due errori sono opposti.
   Avanzamento misurato (quanto e' fatto dopo N millisecondi):
                                   60ms  110ms  160ms  300ms
     (.22,.8,.24,1) a 340ms         59%    83%    93%   100%   → strappo
     (.4,0,.2,1)    a 520ms          4%    15%    39%    86%   → «un attimo
                                                                bianco e poi
                                                                si colora»
     (0,0,.25,1)    a 420ms         37%    57%    71%    95%   → questa
   La prima parte sparata e si trascina. La seconda e' una `ease-in-out`: per
   un sesto di secondo non si muove, ed e' quel buco che si legge come un
   ritardo. Quella buona per un colore che si riempie parte SUBITO e frena:
   niente attesa all'inizio, niente scatto alla fine. */
.k-srv-fila{--k-t:.42s;--k-e:cubic-bezier(0,0,.25,1);
  display:grid;gap:1.1rem;margin-top:1.4rem;
  grid-template-columns:repeat(3,minmax(0,1fr))}
.k-srv-fila.-due{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:1100px){ .k-srv-fila{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:760px){ .k-srv-fila,.k-srv-fila.-due{grid-template-columns:1fr} }

.k-home .elementor a.k-srv__s{display:flex;flex-direction:column;gap:.5rem;
  position:relative;isolation:isolate;text-decoration:none;
  background:var(--surface);border:1px solid var(--line);border-radius:20px;
  padding:1.75rem 1.55rem 1.45rem;
  transition:border-color var(--k-t) var(--k-e),transform var(--k-t) var(--k-e)}
/* ⚠️⚠️ OHIO DIPINGE UN GRADIENTE ARANCIONE SU OGNI <a> AL PASSAGGIO DEL
   MOUSE. E' il suo effetto di sottolineatura, ma su un collegamento grande
   come una scheda riempie di arancione tutto il riquadro — e siccome arriva
   subito mentre il colore dell'area ci mette il suo tempo, quello che si vede
   e' bianco → LAMPO ARANCIONE → magenta. E' il «fa casino» segnalato il 26/8:
   fotografando la transizione a tempi esatti, il fotogramma a 0 ms era tutto
   arancione. Nel foglio la stessa trappola e' gia' segnata quattro volte per
   altri componenti; questa e' la quinta.
   ⚠️ Serve su tutti e tre gli stati: senza `:focus` l'arancione ricompare
   arrivando con il tasto Tab. */
.k-home .elementor a.k-srv__s,
.k-home .elementor a.k-srv__s:hover,
.k-home .elementor a.k-srv__s:focus{background-image:none!important}
.k-srv__s::before{content:"";position:absolute;inset:-1px;border-radius:inherit;z-index:-1;
  background:var(--c);opacity:0;transition:opacity var(--k-t) var(--k-e)}
.k-srv__s:hover::before,.k-srv__s:focus-visible::before{opacity:1}
/* ⚠️⚠️ L'OMBRA NON SI ANIMA PIU'. Animare `box-shadow` obbliga il browser a
   ridisegnare a ogni fotogramma un alone sfocato da 44px: e' il motivo tecnico
   per cui l'effetto risultava «scattoso» su una scheda grande. Qui l'ombra sta
   ferma su un livello suo e si accende con l'opacita', che il browser sa
   comporre senza ridisegnare niente. Stesso aspetto, costo quasi zero.
   ⚠️ `z-index:-2`: dietro al velo del colore, ma sempre davanti al fondo
   bianco della scheda. L'alone comunque si disegna FUORI dal riquadro. */
.k-srv__s::after{content:"";position:absolute;inset:0;border-radius:inherit;z-index:-2;
  opacity:0;transition:opacity var(--k-t) var(--k-e);
  box-shadow:0 20px 44px -24px color-mix(in srgb, var(--c) 75%, transparent)}
.k-srv__s:hover::after,.k-srv__s:focus-visible::after{opacity:1}
/* ⚠️⚠️ LO SCATTO IN ALTO USA `transform`, NON `translate`. `translate` e'
   occupato dall'animazione d'ingresso `kSu`, e in CSS un'ANIMAZIONE vince
   sempre su una dichiarazione normale: con `translate` la scheda non si
   sollevava affatto al passaggio del mouse, in silenzio. Sono due proprieta'
   distinte e si sommano, quindi ognuna fa la sua parte senza pestare l'altra. */
.k-home .elementor a.k-srv__s:hover,
.k-home .elementor a.k-srv__s:focus-visible{border-color:var(--c);transform:translateY(-5px)}
/* il contorno del fuoco sta DENTRO la scheda: fuori, sul bianco della pagina,
   un contorno bianco (l'inchiostro delle cinque aree su sei) sparirebbe */
.k-srv__s:focus-visible{outline:3px solid var(--ink-c,#fff);outline-offset:-7px}

/* ⚠️ IL RIQUADRO DELL'ICONA «SCATTAVA IN RITARDO» (segnalato il 26/8).
   Misurato campionando il colore mentre il puntatore era sopra: il colore
   INTERPOLA regolarmente — non era quello. Il difetto era che il riquadro
   sbiadiva verso un velo quasi trasparente MENTRE la scheda si stava ancora
   riempiendo: a meta' strada le due cose si annullavano, il riquadro spariva
   e ricompariva alla fine. Sembra un ritardo, e' un buco.
   Adesso il riquadro va da una tinta chiarissima a un colore PIENO — la
   chiarezza cambia sempre nello stesso verso e non c'e' nessun momento in cui
   il riquadro non si vede. Stessa durata e stessa curva della scheda (.34s):
   prima erano .3 contro .34 e le due cose non partivano insieme. */
.k-srv__s .k-ic{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;
  margin-bottom:.5rem;background:color-mix(in srgb, var(--c) 13%, #fff);color:var(--cd);
  transition:background var(--k-t) var(--k-e),color var(--k-t) var(--k-e)}
.k-srv__s .k-ic svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.k-srv__s:hover .k-ic,.k-srv__s:focus-visible .k-ic{
  background:var(--ink-c,#fff);color:var(--c)}

.k-home .elementor .k-srv__n{display:block;font-family:var(--display);font-weight:700;
  font-size:1.16rem;line-height:1.25;letter-spacing:-.01em;color:var(--ink);
  transition:color var(--k-t) var(--k-e)}
.k-home .elementor .k-srv__d{display:block;font-family:var(--body);font-size:15px;
  line-height:1.55;color:var(--muted);transition:color var(--k-t) var(--k-e)}

.k-srv__l{list-style:none;margin:.55rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.42rem}
.k-home .elementor .k-srv__l li{font-family:var(--body);font-size:12.5px;line-height:1.35;
  color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:99px;
  padding:.32rem .68rem;
  transition:color var(--k-t) var(--k-e),border-color var(--k-t) var(--k-e),
             background-color var(--k-t) var(--k-e)}
.k-home .elementor .k-srv__l .k-srv__piu{color:var(--cd);
  border-color:color-mix(in srgb, var(--c) 40%, transparent)}

.k-home .elementor .k-srv__go{margin-top:auto;padding-top:1.1rem;display:inline-flex;
  align-items:center;gap:.45rem;font-family:var(--display);font-weight:700;font-size:13.5px;
  color:var(--cd);transition:color var(--k-t) var(--k-e)}
.k-srv__fr{display:inline-block;transition:transform var(--k-t) var(--k-e)}
.k-srv__s:hover .k-srv__fr,.k-srv__s:focus-visible .k-srv__fr{transform:translateX(5px)}

/* il testo si rovescia tutto insieme nell'inchiostro dell'area, a piena forza */
.k-home .elementor .k-srv__s:hover .k-srv__n,
.k-home .elementor .k-srv__s:hover .k-srv__d,
.k-home .elementor .k-srv__s:hover .k-srv__go,
.k-home .elementor .k-srv__s:focus-visible .k-srv__n,
.k-home .elementor .k-srv__s:focus-visible .k-srv__d,
.k-home .elementor .k-srv__s:focus-visible .k-srv__go{color:var(--ink-c,#fff)}
/* ⚠️ LE PASTICCHE DIVENTANO PIENE (chiesto il 26/8: «il testo si perde»).
   Sul colore pieno una pasticca col solo contorno lascia il testo appoggiato
   direttamente sulla tinta dell'area: si legge — l'inchiostro e' quello
   misurato — ma non si STACCA, e con cinque o nove pasticche in fila diventa
   una macchia. Piena si legge come un'etichetta.
   ⚠️ I colori si scambiano, non se ne aggiungono: fondo nell'inchiostro
   dell'area, scritta nel colore dell'area. Sul magenta fa 4,90:1, sul giallo
   8,40, sul blu 6,00, sul viola 8,04, sul verde acqua 5,47, sul rosso 4,89.
   E' lo stesso scambio del riquadro dell'icona: una regola sola da ricordare. */
.k-home .elementor .k-srv__s:hover .k-srv__l li,
.k-home .elementor .k-srv__s:focus-visible .k-srv__l li{
  background-color:var(--ink-c,#fff);border-color:var(--ink-c,#fff);color:var(--c)}

/* ⚠️ SENZA MOUSE IL RIEMPIMENTO NON SUCCEDE MAI. Su telefono e su tavoletta
   la scheda resterebbe bianca come tutte le altre e il colore dell'area — che
   e' il segno di riconoscimento di queste sei pagine — non si vedrebbe.
   Percio' li' il riquadro dell'icona e' PIENO invece che velato: il colore c'e'
   comunque, senza inventare un aspetto diverso da quello scelto. */
@media (hover:none){
  .k-srv__s .k-ic{background:var(--c);color:var(--ink-c,#fff)}
}
@media (prefers-reduced-motion:reduce){
  .k-home .elementor a.k-srv__s,.k-srv__s::before,.k-srv__s .k-ic,.k-srv__fr{transition:none}
}

/* fascia finale nel colore dell'area: da' carattere alla pagina e chiude */
.k-area-fine{background:#F2EBE3;
  background:color-mix(in srgb, var(--ac) 13%, #FFFFFF);position:relative;overflow:hidden}
.k-area-fine::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--ac)}
.k-home .elementor .k-area-fine .k-h2 h2{max-width:18ch}
.k-area__mail{display:inline-block;font-family:var(--display);font-weight:700;
  font-size:clamp(1.3rem,2.4vw,1.8rem);letter-spacing:-.02em;color:var(--ink)!important;
  text-decoration:none;border-bottom:3px solid var(--ac);padding-bottom:.1rem}
.k-area__mail:hover{color:var(--acd)!important}
.k-home .elementor .k-area__bot{font-size:14.5px;color:var(--muted);margin-top:1.4rem;
  display:flex;align-items:center;gap:.55rem}
/* ⚠️ Questo verde NON e' il colore dell'area Foto e video: e' il pallino
   «attivo» dell'assistente. Quando l'area e' passata al viola e' rimasto
   verde apposta — un pallino viola direbbe un'altra cosa. */
.k-area__bot span{width:9px;height:9px;border-radius:50%;background:#35A853;flex:0 0 auto;
  box-shadow:0 0 0 4px rgba(53,168,83,.18)}

@media (max-width:980px){
  .k-area-testa > .elementor-widget-wrap{padding-right:0!important}
}

/* I tre fatti nella fascia finale: segno di spunta, non numeri. I numeri sono
   la lingua dei servizi; qui si parla di come si lavora, e ripetere lo stesso
   segno li farebbe leggere come un'altra lista di cose in vendita. */
.k-area__fatti{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.k-home .elementor .k-area__fatti li{display:flex;align-items:flex-start;gap:.85rem;
  font-size:15.5px;line-height:1.5;color:var(--ink)}
.k-area__fatti li::before{content:"";flex:0 0 auto;width:22px;height:22px;border-radius:50%;
  margin-top:.05rem;background:var(--ac);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round' d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center/16px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round' d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center/16px no-repeat}

/* --------------------------------------------------------------------------
   IL MOSAICO DELL'AREA (a fianco dell'introduzione)
   Lo spazio a destra restava vuoto e sembrava un buco, non una scelta. Qui
   ci sono le icone dei servizi dell'area, in grande: sono le stesse delle
   schede sotto, quindi il segno si impara una volta e si ritrova.
   -------------------------------------------------------------------------- */
.k-mos{position:relative;border-radius:22px;padding:2.4rem 2.2rem 2rem;
  background:rgba(19,28,46,.04);
  background:linear-gradient(150deg, color-mix(in srgb, var(--c) 16%, #fff),
                                     color-mix(in srgb, var(--c) 5%, #fff));
  border:1px solid color-mix(in srgb, var(--c) 26%, transparent);
  display:flex;flex-direction:column;gap:1.5rem;overflow:hidden}
.k-mos::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--c)}
.k-mos__n{font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.16em;
  color:var(--cd)}
.k-mos__g{display:grid;gap:1rem;
  grid-template-columns:repeat(auto-fit,minmax(84px,1fr))}
/* con poche icone si fanno grandi: due tessere piccole in un riquadro largo
   sarebbero piu' vuote del vuoto che devono riempire */
.k-mos[data-n="1"] .k-mos__g,
.k-mos[data-n="2"] .k-mos__g{grid-template-columns:repeat(2,1fr)}
.k-mos__i{aspect-ratio:1;display:grid;place-items:center;border-radius:16px;
  background:rgba(255,255,255,.72);color:var(--cd);
  border:1px solid color-mix(in srgb, var(--c) 22%, transparent);
  transition:transform .32s cubic-bezier(.22,.8,.24,1), background .32s}
.k-mos__i svg{width:40%;height:40%}
.k-mos[data-n="1"] .k-mos__i svg,
.k-mos[data-n="2"] .k-mos__i svg{width:46%;height:46%}
.k-mos:hover .k-mos__i{background:#fff;transform:translateY(-3px)}
.k-home .elementor .k-mos__l{font-family:var(--body);font-size:13.5px;color:var(--muted);
  margin:0}
/* si posano una alla volta mentre la sezione entra: e' lo stesso gesto delle
   schede sotto, quindi la pagina ha un solo modo di comparire */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-mos__i{animation:kPosa linear both;animation-timeline:view();
      animation-range:entry calc(4% + var(--r,0) * 3%) cover calc(24% + var(--r,0) * 3%)}
  }
}

/* L'introduzione diventa piu' grande: e' lei a reggere la composizione.
   Nel 2026 gli hero d'agenzia sono type-first - il vuoto funziona solo se
   il testo e' abbastanza grande da farlo sembrare voluto. */
.k-area-testa .k-h2 h1{font-size:clamp(2.3rem,5vw,4rem)!important;max-width:15ch}

/* --------------------------------------------------------------------------
   I TRE LAVORI IN CIMA ALLA PAGINA AREA (proposta D)
   Sono widget immagine di Elementor: si sostituiscono dall'editor. Finche'
   sono segnaposto si vede il tratteggio e la didascalia dice cosa ci va, cosi'
   e' chiaro che manca qualcosa invece di sembrare una scelta.
   -------------------------------------------------------------------------- */
.k-lav .elementor-widget-container{margin:0}
.k-lav figure{margin:0}
.k-lav img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block;
  border-radius:14px;background:var(--bg);
  transition:transform .45s cubic-bezier(.22,.8,.24,1)}
.k-lav:hover img{transform:scale(1.015)}
/* il segnaposto di Elementor si riconosce dal nome del file: finche' c'e'
   quello, il riquadro resta tratteggiato e scolorito */
.k-lav img[src*="placeholder"]{filter:grayscale(1) opacity(.14);
  outline:1.5px dashed rgba(19,28,46,.28);outline-offset:-1.5px}
.k-home .elementor .k-lav figcaption{font-family:var(--body)!important;
  font-size:13.5px!important;color:var(--muted)!important;text-align:left!important;
  margin-top:.7rem!important;line-height:1.5}
.k-lav-fila{position:relative}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-lav{animation:kEnter linear both;animation-timeline:view();
      animation-range:entry 2% cover 20%}
  }
}
.k-area-lato > .elementor-widget-wrap{padding-top:.9rem!important}
@media (max-width:900px){
  .k-lav img{aspect-ratio:3/2}
}

/* titolo stampato dallo shortcode dei lavori: non passa dal widget Elementor,
   quindi la classe .k-h2 non lo raggiunge */
.k-home .elementor h2.k-h2-solo{font-size:clamp(2rem,4.2vw,3.2rem);
  margin:.2rem 0 1.6rem;max-width:22ch}

/* Sezione con dentro solo uno shortcode che non stampa niente: la sezione di
   Elementor resta comunque con i suoi margini e lascia ~190px di buco bianco.
   ⚠️ La regola NON puo' essere legata a #lavori: sulle pagine servizio quella
   sezione ha un altro identificativo. Si riconosce dal fatto che contiene uno
   shortcode vuoto E nessun titolo - se ci fosse un titolo, nascondere tutto
   cancellerebbe del contenuto vero. */
.k-home .elementor-top-section:has(.elementor-shortcode:empty):not(:has(h1,h2,h3)){
  display:none}

/* --------------------------------------------------------------------------
   APERTURA DELL'AREA (proposta A)
   Al posto dello slider generico, che si prendeva 792px - un quarto della
   pagina - per dire la stessa frase su tutte e sei le aree. Qui la pagina si
   apre nel colore della sua area: si capisce dove si e' prima di leggere.
   ⚠️ Il colore del TESTO cambia per area (--atesto) e non e' una scelta
   estetica: sul giallo il bianco darebbe 2,03:1, sul blu il navy 2,84.
   La tabella misurata sta in aree.php.
   -------------------------------------------------------------------------- */
/* ⚠️ L'apertura e' a tutta larghezza perche' il colore deve arrivare ai bordi,
   ma il CONTENUTO va nella stessa gabbia da 1240 di tutte le altre sezioni:
   senza, il titolo partiva da 45px e i servizi sotto da 120, e le due sezioni
   non erano allineate.
   ⚠️ E il margine sopra deve tenere conto dell'header, che sta SOPRA il
   contenuto e non lo spinge giu': con 7rem restavano 8px fra il logo e la
   dicitura. */
/* ⚠️ ALTEZZA MINIMA (richiesta del cliente il 4/8: «questa prima sezione la
   farei piu' alta»). Non basta aggiungere riempimento sotto: le sei aree hanno
   introduzioni di lunghezza diversa e verrebbero alte una diversa dall'altra.
   Con una misura minima e il contenuto centrato, tutte e sei aprono uguale. */
/* ⚠️ I MARGINI QUI NON COMANDANO: piu' avanti nel foglio c'e'
   `.k-area .k-apertura`, piu' specifica, che li rifa con `--k-aria` + 117px di
   testata. Cambiare qui non ha alcun effetto — verificato l'8/8. */
.k-apertura{background:var(--ac)!important;position:relative;overflow:hidden;
  min-height:clamp(560px,64vh,700px);   /* 8/8 sera: piu' respiro anche dove il titolo e' corto */
  display:flex;flex-direction:column;justify-content:center;
  padding-top:clamp(9rem,11vw,11.5rem)!important;
  padding-bottom:clamp(4rem,7vw,7rem)!important}
.k-apertura > .elementor-container{width:100%}
.k-apertura > .elementor-container{max-width:var(--k-gabbia)!important;margin-inline:auto}
/* il numero dell'area in filigrana: rende le sei pagine riconoscibili a colpo
   d'occhio, e riempie il fianco destro senza metterci un oggetto */
.k-apertura::after{content:var(--anum);position:absolute;right:2.5vw;top:50%;
  transform:translateY(-50%);font-family:var(--display);font-weight:700;
  font-size:min(15rem,20vw);line-height:.8;color:var(--atesto);opacity:.1;
  pointer-events:none;letter-spacing:-.04em}
/* quando il JavaScript ne fa una copia vera, l'originale si spegne */
.k-apertura.k-num-vivo::after,.k-serv-apertura.k-num-vivo::after{content:none}
.k-apertura > .elementor-container{position:relative;z-index:1}

/* 🔴 NIENTE OPACITA' SUL TESTO SOPRA UN COLORE PIENO.
   Misurato su tutte e sei le aperture: la dicitura a `opacity:.7` scendeva a
   3,11 (magenta) e 3,46 (verde), l'introduzione a `.82` a 3,75 (rosso) e 4,25
   (arancio) — sotto i 4,5 che servono. L'opacita' mescola il testo col fondo:
   il colore che arriva all'occhio NON e' piu' quello scelto.
   `--atesto` e' gia' misurato per passare a piena forza su ogni area (giallo
   8,40 · arancio 5,16 · rosso 4,89 · magenta 4,90 · blu 6,00 · verde 5,58):
   la gerarchia fra dicitura, titolo e testo la fanno corpo e peso. */
.k-home .elementor .k-apertura .k-kicker{color:var(--atesto)!important}
.k-home .elementor .k-apertura h1{color:var(--atesto)!important;max-width:23ch}
.k-home .elementor .k-apertura p{color:var(--atesto)!important;
  font-size:clamp(1.05rem,1.7vw,1.22rem);max-width:64ch}

/* I BOTTONI SUL COLORE — stessa regola di quelli su fondo chiaro, solo con
   l'inchiostro dell'apertura al posto del navy: pasticca piena di --atesto,
   etichetta nella tinta dell'area (--aetichetta). Sul giallo vuol dire
   pasticca navy con la scritta gialla, 8,40:1. Al passaggio del mouse la
   pasticca si rovescia nell'altro inchiostro, cioe' resta dentro i due colori
   della sezione senza portarne dentro un terzo.
   ⚠️⚠️ 9/9: il velo della pasticca piena era BIANCO (`--acontro`) — «non mi
   piace hover bianco del bottone». Il bianco e' un TERZO colore, cioe' proprio
   quello che la riga qui sopra diceva di non portare dentro: sull'arancio una
   pasticca bianca salta fuori dalla sezione. Adesso i due bottoni si
   SCAMBIANO — la piena si svuota nel colore dell'area e tiene la forma con
   l'anello d'inchiostro, la contornata si riempie d'inchiostro e prende
   l'etichetta dell'area. Al passaggio non entra niente che non ci fosse gia'.
   ⚠️ `border-radius:inherit` sul velo: senza, l'anello esce squadrato e i
   quattro angoli se li mangia l'`overflow:hidden` della pasticca. */
.k-area.k-home .elementor .k-apertura a.k-btn-a{
  background-color:var(--atesto)!important;color:var(--aetichetta)!important}
.k-area.k-home .elementor .k-apertura a.k-btn-a::before{background:var(--ac);
  border-radius:inherit;box-shadow:inset 0 0 0 2px var(--atesto)}
.k-area.k-home .elementor .k-apertura a.k-btn-a:hover{
  color:var(--atesto)!important;transform:translateY(-2px)}
.k-area.k-home .elementor .k-apertura a.k-btn-g{
  border-color:color-mix(in srgb, var(--atesto) 45%, transparent)!important;
  color:var(--atesto)!important}
.k-area.k-home .elementor .k-apertura a.k-btn-g::before{background:var(--atesto)}
.k-area.k-home .elementor .k-apertura a.k-btn-g:hover{
  border-color:var(--atesto)!important;color:var(--aetichetta)!important;
  transform:translateY(-2px)}
/* sul colore il trattino della dicitura sarebbe invisibile: li' lo porta
   l'inchiostro, che e' l'unico altro colore ammesso nella sezione */
.k-area.k-home .elementor .k-apertura .k-kicker{color:var(--atesto)!important;opacity:1}
.k-area.k-home .elementor .k-apertura .k-kicker::before{background:var(--atesto)}

/* ==========================================================================
   MOVIMENTO  (04/08/2026) — «aggiungi qualche animazione figa, ora e' un
   mortorio». Tutto quello che si muove qui e' legato o all'INGRESSO della
   pagina o allo SCORRIMENTO: niente che si agiti da solo mentre uno legge.

   ⚠️ COME NON FAR SPARIRE IL TESTO. Lo stato di partenza (invisibile) lo mette
   la classe `k-anima`, scritta sull'<html> da uno script NELLA TESTATA: se
   arrivasse in fondo alla pagina si vedrebbe il titolo comparire, sparire e
   ricomparire. Lo stesso script programma `k-ap-go` a 2,6 s come rete di
   sicurezza, cosi' anche se home.js non parte il contenuto si vede comunque.
   Con prefers-reduced-motion la classe non viene proprio messa e qui sotto
   non si attiva niente.
   ========================================================================== */

/* 1 — IL COLORE ARRIVA. Un pannello nell'altro inchiostro copre l'apertura e
   si ritrae verso destra: la tinta dell'area entra scoprendo la pagina invece
   di essere gia' li'. Non e' bianco fisso: sulle aree scure sarebbe bianco su
   bianco e per un attimo sparirebbero le voci di menu. */
.k-anima .k-apertura::before{content:"";position:absolute;inset:0;z-index:2;
  background:var(--acontro);pointer-events:none;transform-origin:100% 50%}
.k-anima.k-ap-go .k-apertura::before{
  animation:kApScopri .78s cubic-bezier(.66,0,.24,1) both}
@keyframes kApScopri{from{transform:scaleX(1)}to{transform:scaleX(0)}}

/* 2 — I PEZZI SALGONO uno dopo l'altro. Il titolo no: quello ha le sue righe
   (punto 3), qui prende solo la dissolvenza — cosi' se il taglio in righe non
   avviene si vede comunque entrare. */
.k-anima .k-apertura .elementor-widget,
.k-anima .k-serv-apertura .elementor-widget{opacity:0}
.k-anima .k-apertura .elementor-widget:not(.elementor-widget-heading),
.k-anima .k-serv-apertura .elementor-widget:not(.elementor-widget-heading){
  transform:translateY(26px)}
.k-anima.k-ap-go .k-apertura .elementor-widget,
.k-anima.k-ap-go .k-serv-apertura .elementor-widget{
  animation:kApSali .82s cubic-bezier(.22,.8,.24,1) both}
.k-anima.k-ap-go .k-apertura .elementor-widget-heading,
.k-anima.k-ap-go .k-serv-apertura .elementor-widget-heading{
  animation-name:kApSfuma;animation-duration:1s}
@keyframes kApSali{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes kApSfuma{from{opacity:0}to{opacity:1}}
.k-anima.k-ap-go .k-apertura .elementor-widget:nth-child(1),
.k-anima.k-ap-go .k-serv-apertura .elementor-widget:nth-child(1){animation-delay:.18s}
.k-anima.k-ap-go .k-apertura .elementor-widget:nth-child(2),
.k-anima.k-ap-go .k-serv-apertura .elementor-widget:nth-child(2){animation-delay:.22s}
.k-anima.k-ap-go .k-apertura .elementor-widget:nth-child(3),
.k-anima.k-ap-go .k-serv-apertura .elementor-widget:nth-child(3){animation-delay:.46s}
.k-anima.k-ap-go .k-apertura .elementor-widget:nth-child(n+4),
.k-anima.k-ap-go .k-serv-apertura .elementor-widget:nth-child(n+4){animation-delay:.58s}

/* La pagina servizio non puo' avere il pannello che si ritrae: il suo ::before
   e' gia' il filetto in cima e il ::after il numero. Li' il gesto e' quello:
   il filetto nel colore dell'area si TRACCIA da sinistra. */
.k-anima .k-serv-apertura::before{transform:scaleX(0);transform-origin:0 50%}
.k-anima.k-ap-go .k-serv-apertura::before{
  animation:kDraw .9s cubic-bezier(.66,0,.24,1) .1s both}

/* 3 — IL TITOLO RIGA PER RIGA. Le righe le costruisce home.js, perche' dove
   va a capo un titolo lo sa solo il browser dopo aver misurato i caratteri.
   ⚠️ overflow:hidden taglia accenti e code delle lettere: il riquadro si
   allarga sotto con il padding e si riprende lo spazio col margine negativo,
   altrimenti la «à» di «identità» perde l'accento. */
.k-riga{display:block;overflow:hidden;padding-bottom:.26em;margin-bottom:-.26em}
.k-riga__i{display:block;transform:translateY(112%);will-change:transform;
  transition:transform .88s cubic-bezier(.16,.84,.24,1)}
.k-ap-go .k-riga__i{transform:none}

/* 4 — IL NUMERO IN FILIGRANA DERIVA CON LO SCORRIMENTO. Costa una riga e
   toglie alla sezione l'aria di cartolina ferma.
   ⚠️ Le battute devono ripetere translateY(-50%): sostituiscono per intero il
   transform di partenza, non lo aggiungono. */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-apertura::after{animation:kApDeriva linear both;
      animation-timeline:view();animation-range:cover 0% cover 100%}
    /* ⚠️ Niente `rotate`: inclinando, gli angoli del riquadro delle cifre
       uscivano dalla sezione, che ha overflow:hidden, e il numero appariva
       tagliato. Resta la deriva verticale, piu' corta. */
    @keyframes kApDeriva{
      from{transform:translateY(-50%) translate3d(0,-42px,0)}
      to{transform:translateY(-50%) translate3d(0,42px,0)}}
    .k-serv-apertura::after{animation:kSrvDeriva linear both;
      animation-timeline:view();animation-range:cover 0% cover 100%}
    @keyframes kSrvDeriva{
      from{transform:translateY(-46%) translate3d(0,-38px,0)}
      to{transform:translateY(-46%) translate3d(0,38px,0)}}
  }
}

/* 5 — IL TRATTINO DELLE DICITURE si traccia quando la sezione entra in vista.
   E' lo stesso gesto in tutte le sezioni, ed e' l'unico posto in cui il colore
   pieno si muove: il resto della pagina resta fermo mentre si legge. */
.k-area.k-home .elementor .k-apertura .k-kicker::before{transform:scaleX(1)}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-area.k-home .elementor .k-kicker::before{
      animation:kDraw .01s linear both;
      animation-timeline:view();animation-range:entry 12% cover 22%}
  }
}
@supports not (animation-timeline: view()){
  .k-area.k-home .elementor .k-kicker::before{transform:scaleX(1)}
}

/* --------------------------------------------------------------------------
   PAGINA LAVORI — «Caption Cursor Metro» di Ohio
   ⚠️ Il metro («Equal Height») ritaglia le immagini a QUADRATO. Le schermate
   dei siti sono 16:10: senza toccare niente, il ritaglio prende la fascia
   CENTRALE e sparisce sia l'intestazione sia il piede. Portandolo in alto
   sopravvivono logo, menu e titolo del sito - cioe' le uniche parti in cui un
   sito e' riconoscibile. Non risolve il taglio, lo rende meno dannoso.
   -------------------------------------------------------------------------- */
.k-metro .portfolio-item img,
.k-metro .item img,
.k-metro .thumbnail img{object-position:top center!important}

/* i filtri per area: le sei categorie, nello stile del sito */
/* ⚠️ La classe e' `portfolio-filter`, non `filter-bar`: la prima versione
   non agganciava niente e i filtri restavano con lo stile del tema. */
.k-metro .portfolio-filter{margin-bottom:2.4rem}
.k-metro .portfolio-filter ul{display:flex;flex-wrap:wrap;gap:.4rem;
  list-style:none;margin:0;padding:0;align-items:center}
.k-home .elementor .k-metro .portfolio-filter li{margin:0}
.k-home .elementor .k-metro .portfolio-filter li a,
.k-home .elementor .k-metro .filter-bar li a,
.k-home .elementor .k-metro .isotope-filter li a{
  font-family:var(--body)!important;font-size:14.5px!important;font-weight:600!important;
  padding:.5rem .95rem!important;border-radius:99px!important;
  color:var(--muted)!important;transition:background .22s,color .22s}
.k-home .elementor .k-metro .portfolio-filter li a:hover,
.k-home .elementor .k-metro .portfolio-filter li a.active,
.k-home .elementor .k-metro .portfolio-filter li.active a{
  background:rgba(19,28,46,.07)!important;color:var(--ink)!important}
/* Nome e contatore sono due <span> impilati: in fila il contatore finiva
   sopra la parola invece che accanto. */
.k-metro .portfolio-filter li a{display:inline-flex!important;align-items:baseline;gap:.35rem}
.k-home .elementor .k-metro .portfolio-filter li a .name{font-size:14.5px}
.k-home .elementor .k-metro .portfolio-filter li a .num{
  font-size:11px!important;opacity:.45;font-weight:700;position:static!important;
  top:auto!important;right:auto!important;transform:none!important}
/* «Filtra per» e' un'etichetta, non un filtro: non deve sembrare cliccabile */
.k-home .elementor .k-metro .portfolio-filter li:first-child{
  font-size:12.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);margin-right:.6rem}
/* la prima voce «Tutti» e' la parola d'ordine: si distingue */
.k-home .elementor .k-metro .portfolio-filter li:first-child a{color:var(--ink)!important}

/* --------------------------------------------------------------------------
   PAGINE SERVIZIO (terzo livello: area → servizio)
   L'apertura usa una TINTA del colore dell'area, non il colore pieno: il pieno
   e' dell'area, il servizio sta un gradino sotto e si deve vedere. La tinta al
   16% resta chiara su qualunque dei sei colori, quindi il testo puo' essere
   sempre navy senza rifare il conto per area.
   -------------------------------------------------------------------------- */
.k-serv-apertura{position:relative;overflow:hidden;
  min-height:clamp(520px,66vh,700px);
  display:flex;flex-direction:column;justify-content:center;
  background:#F7F4EF;
  background:color-mix(in srgb, var(--ac) 16%, #FFFFFF)!important;
  /* ⚠️ Questa riga VINCE sul padding scritto in Elementor: cambiarlo dal
     generatore non ha effetto, la misura si tocca qui. */
  padding-top:clamp(9.5rem,12.6vw,12.5rem)!important}
.k-serv-apertura::before{content:"";position:absolute;inset:0 0 auto 0;height:5px;
  background:var(--ac)}
/* stesso segno della pagina area: il numero in filigrana. Cosi' le due pagine
   si riconoscono come parenti invece che come due posti diversi. */
.k-serv-apertura::after{content:var(--anum);position:absolute;right:3vw;top:50%;
  transform:translateY(-46%);font-family:var(--display);font-weight:700;
  font-size:min(14rem,19vw);line-height:.8;color:var(--ac);opacity:.24;
  pointer-events:none;letter-spacing:-.04em}
/* ⚠️ align-items:center NO: la colonna destra e' piu' alta, quindi centrandole
   il testo di destra partiva 51px SOPRA la dicitura di sinistra (misurato:
   168 contro 219) e le due meta' sembravano scollate. Si allineano in alto, e
   la destra scende quanto basta a partire dalla riga del titolo. */
.k-serv-apertura > .elementor-container{max-width:var(--k-gabbia)!important;margin-inline:auto;
  width:100%;align-items:flex-start}
.k-serv-sx > .elementor-widget-wrap{padding-right:2.5rem!important}
.k-serv-dx > .elementor-widget-wrap{padding-top:1.7rem!important}
.k-home .elementor .k-serv-dx .k-area__intro{max-width:44ch;margin-top:0}
@media (max-width:900px){
  .k-serv-sx > .elementor-widget-wrap{padding-right:0!important}
  .k-serv-dx > .elementor-widget-wrap{padding-top:1.4rem!important}
}
/* il rimando all'area: parola in inchiostro, filetto nel colore pieno — la
   stessa regola di tutto il resto, il colore sta sul segno e non sul testo */
.k-home .elementor .k-serv-apertura .k-kicker a{color:var(--ink)!important;
  text-decoration:none;border-bottom:2px solid color-mix(in srgb,var(--ac) 55%,transparent);
  transition:border-color .26s}
.k-home .elementor .k-serv-apertura .k-kicker a:hover{border-bottom-color:var(--ac)}

/* «Che cosa facciamo nel dettaglio»: le voci che il servizio elenca gia'
   nella sua pagina, impaginate invece che dentro un elenco puntato. */
/* 🔴 DUE colonne, e dentro ogni voce il testo INCOLONNATO sotto al titolo.
   Misurato sulla versione a righe piene: il titolo finiva a 444px e la
   descrizione cominciava a 708 — 264px di buco in mezzo a ogni riga, sette
   volte. Nasceva dal fatto che i titoli sono corti («Infografiche») ma la
   colonna era larga un terzo di pagina. A due colonne il buco sparisce, la
   larghezza si usa tutta e la sezione dimezza l'altezza. */
.k-comp{display:grid;grid-template-columns:1fr 1fr;gap:0 3.2rem;
  border-top:1px solid var(--line);margin-top:2rem}
.k-comp__v{display:grid;grid-template-columns:4.2rem minmax(0,1fr);
  gap:.4rem 1.1rem;align-items:start;padding:1.5rem .6rem;
  border-bottom:1px solid var(--line);border-radius:12px;position:relative;
  transition:background .28s, transform .3s cubic-bezier(.22,.8,.24,1)}
/* filetto nel colore pieno che si scopre da sinistra: e' il segno che manca
   quando una pagina e' solo testo */
.k-comp__v::before{content:"";position:absolute;left:0;top:14%;bottom:14%;width:3px;
  border-radius:99px;background:var(--ac);transform:scaleY(0);transform-origin:50% 0;
  transition:transform .32s cubic-bezier(.22,.8,.24,1)}
.k-comp__v:hover{background:color-mix(in srgb, var(--ac) 9%, transparent);
  transform:translateX(6px)}
.k-comp__v:hover::before{transform:scaleY(1)}

/* NUMERO GRANDE nel colore dell'area (soluzione scelta il 4/8: «numeri che si
   colorano del colore del servizio»). Al posto della tessera piena.
   ⚠️ Il colore e' `--anumc`, non `--ac`, ed e' diverso SOLO per il giallo: un
   numero grande e' testo grande e vuole 3:1 sul bianco. Arancio 3,30 · rosso
   4,89 · magenta 4,90 · blu 6,00 · verde 3,05 ci arrivano col pieno; il giallo
   pieno fa 1,85, quindi per Design & Branding si usa #BE7D0E (3,43), che resta
   oro e non e' l'ocra bocciato. Vedi la colonna [7] in aree.php. */
.k-comp__n{font-family:var(--display);font-weight:700;
  font-size:clamp(1.9rem,3vw,2.6rem);line-height:.92;letter-spacing:-.045em;
  color:var(--anumc,var(--ac));
  transition:transform .32s cubic-bezier(.22,.8,.24,1)}
/* ⚠️ NIENTE opacita' a riposo. Con `opacity:.5` il colore che arriva all'occhio
   e' quello mescolato col bianco: il conto crolla da 3,43 a 1,9 e il numero
   torna illeggibile proprio nello stato in cui sta il 99% del tempo. Il segnale
   del passaggio del mouse lo danno il balzo del numero e la riga che si tinge,
   non lo sbiadire. */
.k-comp__v:hover .k-comp__n{transform:translateY(-3px) scale(1.04)}
.k-home .elementor .k-comp__t{font-family:var(--display);font-weight:700;
  font-size:1.16rem;line-height:1.25;letter-spacing:-.02em;color:var(--ink);
  grid-column:2;align-self:center}
.k-home .elementor .k-comp__d{font-family:var(--body);font-size:14.5px;line-height:1.6;
  color:var(--muted);grid-column:2}
.k-home .elementor .k-serv__chiusura{font-family:var(--display);font-weight:700;
  font-size:clamp(1.3rem,2.6vw,2rem);line-height:1.24;letter-spacing:-.025em;
  color:var(--ink)!important;max-width:30ch;margin:0;
  padding-left:1.6rem;border-left:5px solid var(--ac)}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-comp__v{animation:kEnter linear both;animation-timeline:view();
      animation-range:entry 2% cover 16%}
  }
}
@media (max-width:1000px){
  .k-comp{grid-template-columns:1fr;gap:0}
}
@media (max-width:900px){
  .k-comp__v{grid-template-columns:3.2rem 1fr;gap:.4rem 1rem}
}

/* La fascia di chiusura del servizio: la tinta della SUA area, non il caldo
   globale del sito. ⚠️ `k-caldo` e' #F2EBE3, un beige rosato: accanto al
   giallo dell'apertura sembravano due colori diversi, ed e' esattamente
   quello che il cliente ha notato. Stessa formula dell'apertura, un filo
   piu' carica per distinguerla. */
.k-serv-chiusura{position:relative;overflow:hidden;
  background:#F7F4EF;
  background:color-mix(in srgb, var(--ac) 20%, #FFFFFF)!important}
.k-serv-chiusura::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:var(--ac)}
.k-serv-chiusura > .elementor-container{position:relative;z-index:1}

/* --------------------------------------------------------------------------
   LA CHIUSURA DEL SERVIZIO (04/08/2026 — «questo molto brutto»)
   Prima era una sola frase in grande, larga 30 caratteri, in mezzo a una
   fascia larga 1240: due terzi di pallido vuoto a destra e un filetto che
   galleggiava. E soprattutto la pagina FINIVA li', senza un invito a fare
   qualcosa: da un servizio si esce solo tornando indietro.
   Ora sono due colonne: a sinistra la frase (a misura di lettura, non
   monumentale — e' un testo generico, ingrandirlo lo peggiora), a destra i due
   passi possibili. Il filetto verticale e' sparito: il segno del colore in
   questa fascia e' gia' la riga piena in cima.
   -------------------------------------------------------------------------- */
.k-fine2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,.6fr);
  gap:2.4rem 3.5rem;align-items:start}
.k-home .elementor .k-fine2__t{font-family:var(--display);font-weight:700;
  font-size:clamp(1.22rem,2.1vw,1.62rem);line-height:1.34;letter-spacing:-.02em;
  color:var(--ink)!important;max-width:42ch;margin:.35rem 0 0}
.k-fine2__b{display:flex;flex-direction:column;align-items:flex-start;gap:.7rem;
  padding-top:.4rem}
/* Incolonnati e larghi quanto la loro scritta: affiancati, in una colonna da
   un terzo, «Tutta l'area Design & Branding» andava a capo dentro la pasticca;
   larghi quanto la colonna, «Contattaci» diventava una pasticca da 345px per
   dieci lettere. */
.k-fine2__b .k-btn{align-self:flex-start}
@media (max-width:900px){
  .k-fine2{grid-template-columns:1fr;gap:1.8rem}
}


/* --------------------------------------------------------------------------
   LA CHIUSURA «LE SEI AREE» (04/08/2026 — proposta A, scelta dal cliente)
   Sta DOPO i lavori, ultima cosa prima del piede: e' la chiusura della pagina,
   non un'altra sezione in mezzo. Chiude dicendo la cosa che distingue Kreita e
   che nelle pagine servizio non stava scritta da nessuna parte.

   ⚠️ Fondo BIANCO per scelta del cliente, e va detto qual e' il prezzo: il
   filetto giallo su bianco da' 1,85:1 ed e' il piu' debole dei sei (il verde
   ne fa 2,9, il blu 4,7). Non e' un problema di accessibilita' — il nome
   dell'area sta scritto sotto in navy, il filetto e' decorazione — ma il
   giallo si vede poco. Portato da 4 a 5px per recuperare presenza senza
   cambiare il disegno.
   -------------------------------------------------------------------------- */
.k-sei{padding-top:.4rem}
.k-home .elementor .k-sei__t{font-family:var(--display);font-weight:700;
  font-size:clamp(1.5rem,2.7vw,2.2rem);line-height:1.16;letter-spacing:-.03em;
  color:var(--ink)!important;max-width:34ch;margin:1rem 0 2.1rem}

.k-sei__g{display:grid;grid-template-columns:repeat(6,1fr);gap:.7rem}
/* le tessere sono COLLEGAMENTI alle altre aree: da una pagina servizio, il
   modo piu' corto per vedere il resto. ⚠️ Quindi serve di nuovo la museruola
   all'arancione di Ohio, che riempie ogni <a> al passaggio del mouse. */
.k-home .elementor .k-sei__a,
.k-home .elementor .k-sei__a:hover,
.k-home .elementor .k-sei__a:focus{background-image:none!important;
  color:var(--ink);text-decoration:none}
/* IL COLORE SCENDE DALL'ALTO. Al passaggio del mouse il filetto in cima non
   si limita a ingrossarsi: cola giu' e riempie tutta la tessera. E' lo stesso
   gesto delle schede che «si costruiscono» in home, ed e' il modo di far
   vedere il colore pieno senza scriverci sopra delle parole.
   ⚠️ Il testo passa a --i, l'inchiostro di QUELLA area (navy su giallo,
   arancio e verde; bianco su rosso, magenta e blu): lo stampa il PHP tessera
   per tessera. Con un colore fisso, tre delle sei sarebbero illeggibili. */
.k-sei__a{display:block;padding:1rem .75rem 1rem;border-top:5px solid var(--c);
  font-size:13.5px;line-height:1.42;position:relative;isolation:isolate;
  transition:transform .3s cubic-bezier(.22,.8,.24,1), border-top-width .24s}
.k-sei__a::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--c);
  transform:scaleY(0);transform-origin:50% 0;
  transition:transform .42s cubic-bezier(.3,0,.2,1)}
.k-sei__a:hover::after,.k-sei__a:focus-visible::after{transform:scaleY(1)}
.k-sei__a b{display:block;font-family:var(--display);font-weight:700;font-size:15.5px;
  letter-spacing:-.01em;margin-bottom:.15rem;color:var(--ink);transition:color .3s .08s}
.k-sei__a span{color:var(--muted);transition:color .3s .08s}
.k-home .elementor .k-sei__a:hover b,
.k-home .elementor .k-sei__a:focus-visible b{color:var(--i,#131C2E)}
.k-sei__a:hover span,.k-sei__a:focus-visible span{color:var(--i,#131C2E);opacity:.82}
.k-sei__a:hover .k-sei__qui,.k-sei__a:focus-visible .k-sei__qui{color:var(--i,#131C2E)}
.k-sei__a:hover{transform:translateY(-3px);border-top-width:9px}
/* quella in cui ci si trova: filetto doppio e la dicitura «sei qui».
   ⚠️ Il nome NON va colorato: su bianco il giallo sarebbe 1,85:1. Il segnale
   lo porta il filetto, che e' un segno e non una parola. */
.k-sei__a.is-qui{border-top-width:9px}
.k-sei__qui{display:block;font-family:var(--body);font-style:normal;font-size:11px;
  font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink);opacity:.5;margin-bottom:.2rem;transition:color .3s .08s}
.k-sei .k-cta-row{margin-top:2.2rem}

@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-sei__a{animation:kSeiEntra linear both;animation-timeline:view();
      animation-range:entry 4% cover 26%}
    @keyframes kSeiEntra{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
  }
}
@media (max-width:1000px){ .k-sei__g{grid-template-columns:repeat(3,1fr);gap:1rem .7rem} }
@media (max-width:620px){ .k-sei__g{grid-template-columns:1fr 1fr} }


/* --------------------------------------------------------------------------
   LAVORI: I COLORI SI ALTERNANO (04/08/2026)
   Richiesta del cliente guardando la sezione: le schede erano tutte uguali e
   al passaggio del mouse il titolo andava sullo STESSO rosso su tutte e tre.
   Ora ogni scheda prende uno dei sei colori del marchio, a rotazione.

   ⚠️ Il colore NON va sul titolo. Misurato: su bianco il giallo pieno da'
   1,85:1 e il verde 3,05 - il titolo e' testo grande, servono 3:1, e il giallo
   non ci arriva. Quindi il colore sta dove non c'e' niente da leggere: il
   filetto sopra la foto e la sottolineatura che si tira sotto al titolo.
   E' la stessa regola dei numeri e delle tessere.
   -------------------------------------------------------------------------- */
.k-pj-griglia .k-pj:nth-child(6n+1){--pc:#F5A623}
.k-pj-griglia .k-pj:nth-child(6n+2){--pc:#0F766E}
.k-pj-griglia .k-pj:nth-child(6n+3){--pc:#D03923}
.k-pj-griglia .k-pj:nth-child(6n+4){--pc:#C23A8E}
.k-pj-griglia .k-pj:nth-child(6n+5){--pc:#3763A6}
.k-pj-griglia .k-pj:nth-child(6n+6){--pc:#6D28D9}
.k-pj-griglia .k-pj__ph{position:relative}
/* il filetto sopra la foto: si allunga da sinistra quando la scheda entra in
   vista, e ingrossa al passaggio del mouse */
.k-pj-griglia .k-pj__ph::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;
  background:var(--pc,#D03923);z-index:2;transform-origin:0 50%;
  transition:height .28s cubic-bezier(.22,.8,.24,1)}
.k-pj-griglia .k-pj__a:hover .k-pj__ph::before{height:9px}
/* la sottolineatura sotto al titolo, nel colore della scheda */
.k-pj-griglia .k-pj__t{display:inline;background-image:linear-gradient(var(--pc,#D03923),var(--pc,#D03923));
  background-repeat:no-repeat;background-position:0 100%;background-size:0 3px;
  transition:background-size .34s cubic-bezier(.22,.8,.24,1)}
.k-pj-griglia .k-pj__a:hover .k-pj__t{background-size:100% 3px}
/* ⚠️ E il titolo NON cambia colore: restava sul rosso di marca per tutte e tre
   le schede (era `.k-pj__a:hover .k-pj__t{color:var(--accent-dark)}`, ed e'
   proprio il difetto segnalato). Colorarlo col colore della SCHEDA sarebbe
   peggio: sul giallo darebbe 1,85:1. Il colore lo porta la sottolineatura, che
   e' un segno e non una parola. */
.k-home .elementor .k-pj-griglia .k-pj__a:hover .k-pj__t{color:var(--ink)}
/* ⚠️ Ohio riempie ogni <a> di arancione al passaggio: quarta volta. */
.k-home .elementor .k-pj-griglia .k-pj__a,
.k-home .elementor .k-pj-griglia .k-pj__a:hover,
.k-home .elementor .k-pj-griglia .k-pj__a:focus{background-image:none!important}
/* il pallino davanti alla categoria prende il colore della scheda */
.k-pj-griglia .k-pj__k{color:var(--muted)}
/* --------------------------------------------------------------------------
   MOSAICO — la griglia della pagina /i-nostri-lavori/ (26/8/2026)
   Le stesse schede della griglia normale, con un ritmo: una ogni tre si prende
   tutta la larghezza e mette il testo di fianco all'immagine invece che sotto.
   ⚠️ Tutto sotto `.-mosaico`: la griglia della home e quella in fondo alle
   pagine area non devono cambiare di una virgola.
   ⚠️ Il colore delle schede qui arriva DAL PHP in `--pc`/`--pcw` (la categoria
   del lavoro), e vince sulle regole `nth-child(6n+…)` piu' su perche' e' scritto
   nell'attributo `style`. E' la regola di marca: il colore e' del servizio, non
   del posto.
   -------------------------------------------------------------------------- */
/* ⚠️ TRE colonne dal 26/8 sera: era a due perche' serviva la scheda larga
   che ne occupava due: con la griglia uniforme due colonne fanno schede da
   587px, troppo grandi per sei lavori. */
.k-pj-griglia.-mosaico{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem 1.6rem}
@media (max-width:1100px){ .k-pj-griglia.-mosaico{grid-template-columns:repeat(2,minmax(0,1fr))} }
.k-pj-griglia.-mosaico .k-pj[hidden]{display:none}
.k-pj-griglia.-mosaico .k-pj.-largo{grid-column:1 / -1}
.k-pj-griglia.-mosaico .k-pj.-largo .k-pj__a{display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:center}
.k-pj-griglia.-mosaico .k-pj.-largo .k-pj__b{padding:2rem 2.2rem;gap:.4rem}
.k-home .elementor .k-pj-griglia.-mosaico .k-pj.-largo .k-pj__t{font-size:clamp(1.5rem,2.6vw,2.05rem)}
.k-home .elementor .k-pj-griglia.-mosaico .k-pj.-largo .k-pj__d{font-size:16px}
/* la categoria prende il colore della SUA area: `--k` e' la versione scurita
   per il bianco, `--kp` il pieno, che sta solo sul pallino */
.k-home .elementor .k-pj-griglia.-mosaico .k-pj__k span{color:var(--k,var(--muted))}
.k-pj-griglia.-mosaico .k-pj__k span::before{background:var(--kp,currentColor);opacity:1}
/* ⚠️ NIENTE NUMERI SULLE SCHEDE (26/8 sera). Il numero non diceva niente —
   non e' una classifica ne' un ordine che significhi qualcosa — e rubava il
   posto davanti alla categoria, che invece dice in che area sta il lavoro.
   Tolto dal PHP; qui resta solo il ripristino dello stacco, che il numero
   teneva. */
.k-pj-griglia.-mosaico .k-pj__k{gap:.9rem}
.k-pj-griglia.-mosaico .k-pj__k span::before{width:5px;height:5px}
.k-home .elementor .k-pj-griglia.-mosaico .k-pj__k span{font-weight:700;letter-spacing:.11em}

/* ══════════════════════════════════════════════════════════════════════════
   MENO COLORI NELLA GRIGLIA, TUTTI IN CIMA (26/8/2026 sera)
   Segnalato dal cliente: «troppi colori» e «manca colore in alto».
   Contati prima di togliere: sulla pagina c'erano **otto** tinte diverse, e
   dentro una singola scheda il colore faceva QUATTRO mestieri — il filetto
   sopra la foto, la sottolineatura del titolo, l'etichetta della categoria e
   il tondo della freccia. Quattro segnali che dicono la stessa cosa si
   annullano fra loro.
   La regola adesso e' una sola: **il colore sta tutto in cima**, nella
   testata a spettro, e nella griglia resta solo dove porta informazione
   (l'etichetta della categoria) o dove e' il gesto (la freccia).
   ══════════════════════════════════════════════════════════════════════════ */
/* via il filetto sopra la foto e la sottolineatura del titolo: erano decorazione */
.k-pj-griglia.-mosaico .k-pj__ph::before{display:none}
.k-pj-griglia.-mosaico .k-pj__t{background-image:none}
/* il numero della scheda torna neutro: era nel rosso di marca */
.k-home .elementor .k-pj-griglia.-mosaico .k-pj__k b{color:var(--muted)}

/* ── i filtri: neutri, tranne quello scelto ──────────────────────────────
   ⚠️ Cinque pasticche in cinque colori, subito sotto una testata che ha gia'
   tutti e sei i colori, erano il doppio dello stesso messaggio. Adesso sono
   grigie e **solo quella attiva prende il colore della sua area**: un colore
   per volta, e si capisce meglio quale filtro e' acceso. */
/* ⚠️ Serve `.k-lav-filtri` davanti: il blocco dei filtri sta PIU' AVANTI in
   questo foglio, e a parita' di peso vince l'ultimo scritto. Con il contenitore
   davanti questa pesa di piu' e vince comunque.
   ⚠️ IL PALLINO TORNA COLORATO (26/8 sera). Nel giro di alleggerimento l'avevo
   messo grigio insieme a tutto il resto, ma e' l'unica cosa in quella barra che
   porta INFORMAZIONE: dice a colpo d'occhio che quel filtro e' l'area gialla o
   quella viola. A restare grigi i cinque filtri diventavano indistinguibili.
   Grigia resta l'ETICHETTA, cosi' la barra non urla: il colore sta sul segno,
   non sulla parola. */
.k-lav-filtri .k-lav-f::before{background:var(--kp,currentColor)}
.k-home .elementor .k-lav-filtri button.k-lav-f:hover{color:var(--ink);border-color:var(--line-strong)}
.k-home .elementor .k-lav-filtri button.k-lav-f[aria-pressed="true"]{background-color:var(--kp);
  border-color:var(--kp);color:var(--kt,#fff)}
.k-lav-filtri .k-lav-f[aria-pressed="true"]::before{background:var(--kt,#fff)}

/* ── LA TESTATA A SPETTRO ────────────────────────────────────────────────
   Gli stessi sei colori del pannello «Prodotti» nel menu, nella stessa
   sfumatura e con lo stesso velo scuro sopra.
   ⚠️ Il velo NON e' un vezzo: sulla sfumatura nuda il testo bianco sul giallo
   misura 2,03:1. Con `rgba(11,17,28,.62)` sopra, il bianco sta sopra 7:1 su
   tutta la larghezza — verificato quando si e' fatto il pannello del menu. */
/* ⚠️⚠️ IL VELO STA NELLA STESSA PROPRIETA' `background`, NON in uno
   pseudo-elemento. ⚠️ E il velo e' al **42%**, non al 62% del pannello del
   menu: calcolato colore per colore, il bianco sul GIALLO velato fa 4,99:1 a
   .42 e crollerebbe a 4,21 gia' a .35 — sotto la soglia. Il 62% invece lo
   portava a 8,26, cioe' spegneva i colori senza che servisse a niente.
   Provato prima con `::before`: `content` e `position`
   passavano ma `background` e `z-index` no — misurato, il velo risultava
   `rgba(0,0,0,0)` e `z-index:0` — perche' una regola di Elementor sui
   `::before` delle sezioni li rifa'. Due strati in un `background` solo non
   dipendono da nessuno: il primo si dipinge sopra il secondo. */
/* ⚠️ Ci si aggancia all'ID `#portfolio-testa`, che quella sezione ha gia', e
   non a «la prima sezione»: e' piu' solido (una sezione in piu' in cima non
   sposta niente) e soprattutto serve il PESO. Nel foglio esiste gia'
   `#portfolio-testa .elementor-widget-text-editor b{color:#131C2E}`, che con
   un identificativo batte qualunque selettore di sole classi: senza salire di
   peso, meta' testata restava scritta in navy sopra il colore. */
#portfolio-testa{position:relative;
  background:linear-gradient(rgba(11,17,28,.42),rgba(11,17,28,.42)),
    linear-gradient(150deg,#F5A623 0%,#0F766E 20%,#D03923 40%,
    #C23A8E 60%,#3763A6 80%,#6D28D9 100%)}
.k-pag-lavori #portfolio-testa,
.k-pag-lavori #portfolio-testa :is(h1,h2,h3,h4,p,span,b,strong,em,i,li,a,div),
.k-pag-lavori #portfolio-testa .elementor-widget-text-editor :is(b,strong,p,span,li,a),
.k-pag-lavori #portfolio-testa .k-kicker{color:#fff}
.k-pag-lavori #portfolio-testa a{border-color:rgba(255,255,255,.4)}
/* ⚠️ I DUE SPAZI DELLA TESTATA, misurati: 240 sopra e 54 sotto. I 240 pero'
   contengono i 128 della barra del menu che galleggia, quindi lo spazio
   VISIBILE era 112 sopra contro 54 sotto — meta'. Portato anche sotto a 112
   (7rem) i due lati respirano uguale. E' la stessa regola dell'apertura delle
   pagine area, dove i 117px della barra si scontano allo stesso modo. */
.k-pag-lavori #portfolio-testa{padding-bottom:7rem}
/* ⚠️ Qui la forzatura non e' pigrizia: la dicitura porta addosso
   `.k-kicker{color:var(--accent-dark)!important}`, e contro una dichiarazione
   forzata non esiste selettore che basti — misurato, il mio pesava di piu' e
   perdeva lo stesso. Sul colore quella dicitura era rosso mattone su una
   sfumatura di mezzo tono, cioe' illeggibile. */
.k-pag-lavori #portfolio-testa .k-kicker{color:#fff!important}
.k-pag-lavori .elementor > .elementor-section:first-child a{border-color:rgba(255,255,255,.4)}

/* ══════════════════════════════════════════════════════════════════════════
   LA SCHEDA LAVORO: FRECCIA, FILMINO E PARALLASSE (26/8/2026)
   Tre cose prese dai riferimenti scelti dal cliente: la freccia in un tondo
   che segue il puntatore (studio-size.com), il filmato che parte al passaggio
   (lazarev.agency) e l'immagine che si muove dentro la cornice mentre si
   scorre (generousbranding.com). Nessuna libreria: gli originali usano un
   motore di scorrimento, qui bastano `animation-timeline: view()` e due
   ascoltatori.
   ══════════════════════════════════════════════════════════════════════════ */
/* ⚠️⚠️ NIENTE PIU' 114% E NIENTE PARALLASSE — 10/9/2026, utente:
   «immagine copertina non cover ma viene tagliata dei siti».
   La parallasse dava all'immagine il 114% dell'altezza della cornice e la
   faceva scorrere dentro il ritaglio mentre si scorreva la pagina. Ma la
   cornice e' **383x239, cioe' 1,60**, e le copertine sono fatte apposta con
   quel formato: portarne l'altezza a 273 (1,40) obbliga `object-fit: cover` a
   ingrandire l'immagine fino a **437 di larghezza**, e **27 pixel per lato
   finiscono fuori dalla cornice**. Su una fotografia si perde un bordo; su una
   RIPRESA DI SITO si perde proprio quello che conta — il marchio a sinistra e
   il menu a destra. Misurato su Board Ahead: nel file il logo sta staccato dal
   bordo, in pagina lo tocca.
   ⚠️⚠️ E NON C'E' MODO DI TENERE TUTTE E DUE LE COSE. Con la larghezza
   bloccata a 383, qualunque altezza in piu' la paga il ritaglio laterale: e'
   aritmetica di `cover`, non una regola scritta male. La copertina e' il
   contenuto, la parallasse era un ornamento: si tiene il contenuto.
   ⚠️ Se un giorno la si rivuole, la strada e' rifare le copertine piu' ALTE
   della cornice (383x273 invece di 383x239), non allargare l'immagine.
   ⚠️ L'immagine resta TOLTA DAL FLUSSO. Con l'altezza in percentuale dentro al
   flusso si crea un giro vizioso — l'altezza della cornice la decide il
   contenuto e l'altezza del contenuto e' una percentuale della cornice — e il
   browser molla l'`aspect-ratio`: misurato in prototipo, la cornice usciva
   381x363 invece di 381x238 e le immagini si accavallavano.
   ⚠️ E `.k-pj__ph` e' uno <span>: senza `display:block` ne' il formato ne' la
   larghezza si applicano, e la cornice si affloscia a 0x0. Terza volta che
   questo sito inciampa su uno <span> che doveva essere un blocco.
   ⚠️ `translate` e `animation` si spengono a mano: `translate` e' una
   proprieta' A PARTE, non entra in `transform`, e un foglio rimasto in cache
   con i vecchi fotogrammi chiave alzerebbe di nuovo l'immagine del 12%
   lasciando una striscia vuota in fondo. */
.k-pj-griglia.-mosaico .k-pj__ph{display:block;position:relative;overflow:hidden}
.k-home .elementor .k-pj-griglia.-mosaico .k-pj__ph img{position:absolute;left:0;top:0;
  width:100%;height:100%;object-fit:cover;object-position:top center;
  transform:none;translate:none;animation:none}
/* il filmato sta SOPRA la fotografia, non al posto suo: da fermi si vede la
   fotografia, e se il video non parte non se ne accorge nessuno */
.k-pj__vd{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:top center;z-index:2;opacity:0;
  transition:opacity .34s cubic-bezier(0,0,.25,1)}
.k-pj__a:hover .k-pj__vd.-pronta{opacity:1}

/* ── la freccia nel tondo ────────────────────────────────────────────────
   ⚠️ L'animazione e' «esce e rientra», NON una rotazione: la freccia scivola
   fuori in alto a destra e nello stesso istante ne rientra una identica da
   sinistra in basso. Il taglio fra le due meta' avviene quando la freccia e'
   gia' fuori dal tondo, ed e' `overflow:hidden` a renderlo invisibile. */
.k-pj__frec{position:absolute;left:0;top:0;width:76px;height:76px;border-radius:99px;
  z-index:3;margin:-38px 0 0 -38px;display:grid;place-items:center;overflow:hidden;
  pointer-events:none;background:var(--pc,#131C2E);color:#fff;
  scale:0;opacity:0;transition:scale .4s cubic-bezier(.2,.8,.2,1),opacity .28s}
.k-pj__a:hover .k-pj__frec{scale:1;opacity:1}
.k-pj__fri{display:grid;place-items:center;width:20px;height:20px}
@keyframes kFreccia{
  0%{translate:0 0} 44%{translate:190% -190%}
  45%{translate:-190% 190%} 100%{translate:0 0}
}
.k-pj__a:hover .k-pj__fri{animation:kFreccia 1.25s cubic-bezier(.55,0,.2,1) infinite}
/* ⚠️ Il velo scuro con «Vedi il progetto» non serve piu': lo dice la freccia,
   e due segnali sulla stessa immagine si coprono a vicenda. */
.k-pj-griglia.-mosaico .k-pj__ov{display:none}

@media (prefers-reduced-motion:reduce){
  .k-pj__vd,.k-pj__frec{display:none}
  .k-home .elementor .k-pj-griglia.-mosaico .k-pj__ph img{height:100%;animation:none}
}
@media (hover:none){
  /* col dito non c'e' passaggio: niente filmato (traffico sprecato) e niente
     freccia, ma il velo con la scritta torna, se no non resta nessun segnale */
  .k-pj__vd,.k-pj__frec{display:none}
  .k-pj-griglia.-mosaico .k-pj__ov{display:flex}
}

/* --- i filtri, che c'erano col widget di Ohio e restano --- */
/* ⚠️ LO STACCO DALLA FASCIA COLORATA STA QUI, non sulla sezione di Elementor:
   la barra dei filtri e' roba nostra e nessuno le contende le misure, mentre
   sulla sezione bisognerebbe battere una regola di Elementor a colpi di peso.
   Misurato prima: la sezione della griglia aveva riempimento ZERO in cima, e
   i filtri cominciavano allo stesso pixel in cui finiva il colore.
   6rem sopra e' lo stesso stacco che la sezione tiene sotto: il blocco sta in
   mezzo a due spazi uguali. */
.k-lav-filtri{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;
  margin:6rem 0 3rem;padding:0 0 1.3rem;border-bottom:1px solid var(--line)}
.k-lav-filtri__e{font-family:var(--display);font-weight:700;font-size:11.5px;
  letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-right:.5rem}
/* ⚠️ LE PASTICCHE SI APRONO E SI CHIUDONO (26/8). A riposo mostrano un
   pallino e il nome; quando sono scelte — o quando ci passi sopra — il
   pallino si allunga in una barretta e il conteggio esce di fianco.
   E' lo stesso segno che l'indice dei servizi usava prima del 26/8: punto che
   diventa linea. Vale la pena tenerlo, e' un vocabolario del sito.
   ⚠️ `gap:0` e i margini scritti a mano: con `gap` lo spazio del conteggio
   resterebbe anche a pasticca chiusa, e la pasticca non si chiuderebbe del
   tutto. ⚠️ La curva e' la stessa delle schede: parte subito e frena. */
.k-home .elementor button.k-lav-f{display:inline-flex;align-items:center;gap:0;
  font-family:var(--display);font-weight:700;font-size:12.5px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted);background:none;
  border:1px solid var(--line);border-radius:99px;padding:.46rem 1rem;cursor:pointer;
  transition:color .3s cubic-bezier(0,0,.25,1),border-color .3s cubic-bezier(0,0,.25,1),
             background-color .3s cubic-bezier(0,0,.25,1)}
.k-lav-f::before{content:"";width:7px;height:7px;border-radius:99px;flex:none;
  margin-right:.55rem;background:var(--kp,currentColor);
  transition:width .38s cubic-bezier(0,0,.25,1),background-color .3s cubic-bezier(0,0,.25,1)}
.k-lav-f:hover::before,.k-lav-f[aria-pressed="true"]::before{width:20px}
.k-lav-f i{display:inline-grid;grid-template-columns:0fr;font-style:normal;font-size:11px;
  opacity:0;margin-left:0;
  transition:grid-template-columns .38s cubic-bezier(0,0,.25,1),
             opacity .3s cubic-bezier(0,0,.25,1),margin-left .38s cubic-bezier(0,0,.25,1)}
.k-lav-f i > span{overflow:hidden;white-space:nowrap}
.k-lav-f:hover i,.k-lav-f[aria-pressed="true"] i{grid-template-columns:1fr;opacity:.7;margin-left:.45rem}
.k-home .elementor button.k-lav-f:hover{color:var(--k);border-color:var(--kp)}
.k-home .elementor button.k-lav-f[aria-pressed="true"]{background-color:var(--kp);
  border-color:var(--kp);color:var(--kt,#fff)}
.k-lav-f[aria-pressed="true"]::before{background:var(--kt,#fff)}
.k-lav-f:focus-visible{outline:3px solid var(--ink);outline-offset:2px}

@media (max-width:860px){
  .k-pj-griglia.-mosaico{grid-template-columns:1fr;gap:1.4rem}
  .k-pj-griglia.-mosaico .k-pj.-largo .k-pj__a{grid-template-columns:1fr}
  .k-pj-griglia.-mosaico .k-pj.-largo .k-pj__b{padding:1.1rem 1.25rem 1.3rem}
}
@media (prefers-reduced-motion:reduce){
  .k-home .elementor button.k-lav-f{transition:none}
}

@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-pj-griglia .k-pj__ph::before{animation:kDraw linear both;
      animation-timeline:view();animation-range:entry 6% cover 24%}
  }
}


/* --------------------------------------------------------------------------
   IL NUMERO DELL'AREA, VIVO (04/08/2026)
   Le cifre sono RITAGLIATE dentro i sei colori del marchio: non e' decorazione
   a caso, e' «ne combiniamo di tutti i colori» detto senza scriverlo. La
   sfumatura la stampa il PHP in `--agrad`, ruotata perche' cominci dal colore
   di quest'area — altrimenti tutte e sei le pagine aprirebbero col giallo in
   cima al numero e il sistema dei colori si romperebbe proprio li'.

   ⚠️ DUE TRASFORMAZIONI SU DUE ELEMENTI: la deriva con lo scorrimento e' una
   animazione CSS che scrive `transform`, il seguire il mouse lo scrive il JS.
   Sullo stesso elemento l'animazione vince sempre e il mouse non sposta
   niente. Percio' la deriva sta sul contenitore (.k-num) e il mouse muove la
   cifra dentro (.k-num__c).
   -------------------------------------------------------------------------- */
/* ⚠️ Il numero NON si muove col mouse: era la prima versione, il cliente l'ha
   tolta. Sta fermo, e l'unica cosa che cambia e' il colore.
   ⚠️ E l'accensione la comanda la SEZIONE, non il numero: passando sul titolo o
   sul bottone il numero si accende lo stesso. Cercare col mouse una filigrana
   larga due cifre per farla reagire non lo fa nessuno. */
.k-num{position:absolute;right:4vw;top:50%;transform:translateY(-50%);
  z-index:1;text-decoration:none;line-height:.8;display:block;
  /* dove non porta da nessuna parte il cursore resta la freccia normale, e le
     cifre non si selezionano come fossero un testo da copiare */
  cursor:default;user-select:none;-webkit-user-select:none}
a.k-num{cursor:pointer}
.k-num__c{display:block;font-family:var(--display);font-weight:700;
  /* ⚠️ 17vw e non 20: a 20 le due cifre erano larghe 248px e con la deriva
     inclinata uscivano dal bordo, e la sezione ha overflow:hidden (le serve
     per il pannello che si ritrae). Il numero veniva tagliato. */
  font-size:min(13rem,17vw);line-height:.8;letter-spacing:-.04em;
  /* A riposo si vede il primo terzo della sfumatura — il colore di quest'area
     e quello accanto — e la pagina resta «sua». Entrando nella sezione la
     sfumatura si stringe dentro le cifre e ci stanno tutti e sei: e' il gesto
     che il cliente ha voluto rimettere («il numero meglio prima, ora l'effetto
     hover e' sparito»). Il TAGLIO che si vedeva non era colpa di questo: era
     la rotazione della deriva, vedi piu' sotto. */
  background-image:var(--agrad);background-size:300% 100%;background-position:0 0;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  transition:transform .45s cubic-bezier(.22,.8,.24,1), opacity .45s,
             background-size 1.15s cubic-bezier(.3,0,.2,1)}
/* Sull'apertura AREA il fondo e' il colore pieno: li' i sei a piena forza
   farebbero fango, quindi il numero resta un'ombra. Sulla pagina SERVIZIO il
   fondo e' chiaro e si vede di piu'. Entrando nella sezione, in tutti e due i
   casi: piena forza e tutti e sei i colori dentro. */
.k-apertura .k-num__c{opacity:.16}
.k-serv-apertura .k-num__c{opacity:.5}
.k-apertura:hover .k-num__c,
.k-serv-apertura:hover .k-num__c{opacity:1;background-size:100% 100%;
  transform:translateY(-6px)}
.k-num:focus-visible{outline:3px solid var(--ac);outline-offset:6px;border-radius:8px}
.k-serv-apertura .k-num{top:50%;transform:translateY(-46%);right:4.5vw}
.k-serv-apertura .k-num__c{font-size:min(12rem,16vw)}

@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .k-apertura .k-num{animation:kApDeriva linear both;
      animation-timeline:view();animation-range:cover 0% cover 100%}
    .k-serv-apertura .k-num{animation:kSrvDeriva linear both;
      animation-timeline:view();animation-range:cover 0% cover 100%}
  }
}
@media (max-width:900px){
  .k-num{right:-.4rem;top:auto;bottom:1.2rem;transform:none}
  .k-serv-apertura .k-num{transform:none}
  .k-num__c{font-size:26vw}
}


/* Il testo delle schede «perche' un unico partner» quando la scheda si riempie.
   ⚠️ Sta qui in fondo e non accanto alle altre regole di .k-why__i: le regole
   di .k-caldo e .k-dark piu' su hanno la stessa specificita' e, venendo dopo,
   vincerebbero. Sul riquadro magenta il titolo restava navy: 3,48:1. */
.k-home .elementor .k-caldo .k-why__i:hover h3,
.k-home .elementor .k-dark .k-why__i:hover h3,
.k-home .elementor .k-why__i:hover h3{color:var(--i,#131C2E)}
.k-home .elementor .k-caldo .k-why__i:hover p,
.k-home .elementor .k-dark .k-why__i:hover p,
.k-home .elementor .k-why__i:hover p{color:var(--i,#131C2E);opacity:.84}


/* ==========================================================================
   LE SEI SCHEDE IN HOME — «il contenuto sale e compare l'invito»
   (soluzione D dell'anteprima, scelta dal cliente il 4/8)

   A riposo si leggono nome e descrizione, e «Scopri» NON c'e'. Passando col
   mouse il contenuto scivola su e l'invito compare da sotto, mentre il fondo
   si tinge appena del colore dell'area.
   ⚠️ Il motivo non e' solo estetico: sei schede con sei «Scopri →» sempre
   accesi sono sei volte lo stesso richiamo, e nessuno dei sei vince.
   ========================================================================== */
.k-home .elementor .k-card > .elementor-widget-wrap{
  background:var(--bg);border:1px solid transparent;
  border-top:5px solid var(--ca);border-radius:14px;
  padding:1.5rem 1.4rem 1.5rem!important;
  transition:background .34s, transform .3s cubic-bezier(.22,.8,.24,1),
             border-top-width .24s, box-shadow .3s}
.k-home .elementor .k-card:hover > .elementor-widget-wrap{
  background:color-mix(in srgb, var(--ca) 12%, #FFFFFF);
  transform:translateY(-4px);border-top-width:9px;
  box-shadow:0 18px 40px -24px rgba(19,28,46,.45)}
/* il filetto in basso della versione precedente non serve piu' */
.k-home .elementor .k-card > .elementor-widget-wrap::after{display:none}

/* il numero in filigrana, in alto a destra
   ⚠️ `width:auto` e' obbligatorio: il widget di Elementor e' largo quanto la
   scheda, quindi con `right:...` il RIQUADRO finiva a destra ma la cifra,
   allineata a sinistra dentro di lui, sbucava fuori dal bordo sinistro e la
   tagliava overflow:hidden. */
.k-home .elementor .k-card .k-num{position:absolute;right:1.1rem;top:.55rem;
  left:auto;width:auto;margin:0!important;pointer-events:none;z-index:0}
.k-home .elementor .k-card .k-num .elementor-heading-title{
  font-family:var(--display)!important;font-weight:700!important;
  font-size:2.7rem!important;line-height:1!important;letter-spacing:-.045em!important;
  color:var(--ca)!important;opacity:.2;
  transition:opacity .3s, transform .34s cubic-bezier(.22,.8,.24,1)}
.k-home .elementor .k-card:hover .k-num .elementor-heading-title{
  opacity:.45;transform:translateY(-3px)}

/* nome e descrizione salgono; l'invito arriva da sotto */
.k-home .elementor .k-card h2,
.k-home .elementor .k-card h3,
.k-home .elementor .k-card p{
  transition:transform .38s cubic-bezier(.22,.8,.24,1);position:relative;z-index:1}
.k-home .elementor .k-card:hover h2,
.k-home .elementor .k-card:hover h3,
.k-home .elementor .k-card:hover p{transform:translateY(-.4rem)}
/* ⚠️ L'invito si nasconde SOLO dove esiste un mouse (`any-hover: hover`).
   Nascosto su un telefono la scheda resterebbe senza niente da toccare: il
   collegamento e' lui, la colonna non e' cliccabile.
   ⚠️ E NON si usa `@media (any-hover: hover)`: in headless Chrome quella
   condizione risulta FALSA anche forzandola con Emulation.setEmulatedMedia
   (misurato: anyHover false, hover false, pointer false), quindi la regola
   non si potrebbe collaudare. La classe `k-mouse` la mette home.js, che
   sceglie guardando anche i punti di tocco: cosi' e' verificabile. */
.k-home .elementor .k-card .k-go{margin-top:.6rem;
  color:var(--cd,var(--accent-dark));position:relative;z-index:1;
  transition:opacity .32s, transform .32s cubic-bezier(.22,.8,.24,1)}
.k-mouse .k-home .elementor .k-card .k-go{opacity:0;transform:translateY(10px)}
.k-mouse .k-home .elementor .k-card:hover .k-go{opacity:1;transform:none}
/* chi arriva col tasto Tab deve vederlo comparire comunque */
.k-home .elementor .k-card .k-go:focus-visible{opacity:1;transform:none;
  outline:2px solid var(--ca);outline-offset:3px;border-radius:4px}


/* ==========================================================================
   PAGINA CONTATTI (04/08/2026) — proposta A col selettore della C
   Si arriva qui per scrivere: il modulo prende i due terzi e sta in alto,
   niente slider e niente giro di parole. Prima pero' si sceglie di cosa
   parlare, e il modulo si riempie e si tinge da solo — la stessa cosa che
   gia' succede arrivando da una pagina servizio (?area=…), qui resa visibile.
   ========================================================================== */
.k-cont-apertura{background:#fff}
.k-home .elementor .k-cont-testa .k-h2 h1{font-size:clamp(2.3rem,5vw,3.6rem);max-width:16ch}
.k-home .elementor .k-cont-testa .k-area__intro{max-width:56ch;margin-top:.9rem}
.k-home .elementor .k-cont-testa .k-area__intro a{color:var(--ink);
  border-bottom:2px solid var(--accent);text-decoration:none}

.k-sc__tit{display:block;font-family:var(--body);font-size:13px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink);opacity:.66;
  margin-bottom:.9rem}
.k-sc{display:grid;grid-template-columns:repeat(7,1fr);gap:.6rem}
/* ⚠️ Ohio riempie d'arancione ogni elemento cliccabile al passaggio: qui i
   pulsanti sono <button>, ma la museruola conviene metterla lo stesso. */
.k-home .elementor .k-sc__b{all:unset;cursor:pointer;box-sizing:border-box;
  display:block;padding:.85rem .7rem 1rem;border-top:5px solid var(--c);
  border-radius:0 0 12px 12px;background:var(--bg);
  position:relative;isolation:isolate;
  transition:transform .3s cubic-bezier(.22,.8,.24,1), border-top-width .24s}
.k-sc__b::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--c);
  transform:scaleY(0);transform-origin:50% 0;
  transition:transform .42s cubic-bezier(.3,0,.2,1)}
.k-sc__b:hover::after,.k-sc__b[aria-pressed="true"]::after{transform:scaleY(1)}
.k-sc__b:hover{transform:translateY(-3px)}
.k-sc__b[aria-pressed="true"]{border-top-width:9px}
.k-sc__b:focus-visible{outline:3px solid var(--c);outline-offset:3px}
.k-home .elementor .k-sc__b b{display:block;font-family:var(--display);font-weight:700;
  font-size:14.5px;letter-spacing:-.01em;margin-bottom:.12rem;color:var(--ink);
  transition:color .3s .06s}
.k-home .elementor .k-sc__b span{display:block;font-size:12px;line-height:1.35;
  color:var(--muted);transition:color .3s .06s}
.k-home .elementor .k-sc__b:hover b,.k-home .elementor .k-sc__b[aria-pressed="true"] b,
.k-home .elementor .k-sc__b:hover span,.k-home .elementor .k-sc__b[aria-pressed="true"] span{
  color:var(--i)}

/* il modulo prende il colore scelto: bordo del fuoco e tasto Invia */
.k-cont-chiaro{background:#fff}
.k-cont-form > .elementor-widget-wrap{padding-right:3rem!important}
.k-cont-lato > .elementor-widget-wrap{padding-top:.3rem!important}
.k-cinfo__v{padding:1.15rem 0;border-top:1px solid var(--line)}
.k-cinfo__v:first-child{border-top:0;padding-top:0}
.k-home .elementor .k-cinfo__v b{display:block;font-family:var(--display);font-weight:700;
  font-size:1rem;margin-bottom:.3rem;position:relative;padding-left:0}
.k-cinfo__v[style*="--c"] b::before{content:"";display:inline-block;width:.65rem;height:.65rem;
  border-radius:50%;background:var(--c);margin-right:.55rem;vertical-align:.05em}
.k-home .elementor .k-cinfo__v span{display:block;font-size:15px;line-height:1.6;color:var(--muted)}
.k-home .elementor .k-cinfo__mail{display:inline-block;font-family:var(--display);font-weight:700;
  font-size:1.35rem;letter-spacing:-.025em;color:var(--ink);text-decoration:none;
  border-bottom:3px solid var(--csc,var(--accent));margin-bottom:.5rem;
  transition:border-color .3s}
@media (max-width:1100px){ .k-sc{grid-template-columns:repeat(4,1fr)} }
@media (max-width:900px){
  .k-sc{grid-template-columns:1fr 1fr}
  .k-cont-form > .elementor-widget-wrap{padding-right:0!important}
}


/* Il link all'informativa dentro il consenso del modulo.
   🔴 Misurato su /contatti/: era #FF8A6B (la variante chiara, nata per il
   modulo sul fondo NAVY) rimasta su fondo bianco: **2,31:1**. Su chiaro la
   parola torna inchiostro e il colore sta nel filetto sotto — la stessa regola
   di tutto il resto del sito. */
.k-home .elementor .k-cont-chiaro .k-cont-form .wpcf7 a,
.k-home .elementor .k-cont-chiaro .wpcf7 .wpcf7-list-item a{
  color:var(--ink)!important;text-decoration:none;
  border-bottom:2px solid var(--csc,var(--accent));
  transition:border-color .26s}
.k-home .elementor .k-cont-chiaro .wpcf7 a:hover{border-bottom-color:var(--ink)}


/* L'indice dei servizi entra una voce alla volta quando la sezione arriva in
   vista. ⚠️ Legato allo SCORRIMENTO, non a un tempo: la comparsa segue la mano
   di chi legge e non parte quando nessuno sta guardando. */
/* ══════════════════════════════════════════════════════════════════════════
   C · LE SCHEDE ENTRANO A SCALARE (scelto il 26/8/2026)
   Una dopo l'altra invece che tutte insieme: l'occhio segue la fila e finisce
   per leggerle invece di saltarle.

   ⚠️⚠️ SALE SOLO LA POSIZIONE, MAI L'OPACITA'. `kEnter` — che questa regola
   usava prima — parte da `opacity:0`, e su una linea legata allo SCORRIMENTO
   vuol dire che tutto cio' che non scorre vede la sezione VUOTA: Googlebot
   quando disegna la pagina, i generatori di anteprime, gli strumenti di
   collaudo. Con il solo `translate` lo scatto e' identico e il contenuto c'e'
   sempre. (Trovato l'8/8 e ritrovato il 26/8 negli scatti a pagina intera, che
   uscivano bianchi.)

   ⚠️ LO SFALSAMENTO SI FA CON `animation-range`, NON con `animation-delay`:
   su una linea di scorrimento il ritardo non ha alcun effetto, perche' non
   c'e' un cronometro da ritardare. Ogni scheda ha la sua finestra, spostata
   di un po'.
   ⚠️ E la finestra e' `cover`, non `entry`: `entry` dura quanto e' ALTO
   l'elemento, quindi su una scheda bassa l'effetto finiva in pochi pixel di
   scorrimento e non si vedeva. `cover` dura quanto la finestra piu'
   l'elemento.
   ⚠️ Le righe `nth-child` arrivano a nove perche' nove sono i servizi di
   Aziende e Software; dalla decima in poi vale l'ultima finestra, e va bene:
   a quel punto sono gia' tutte in vista.
   ══════════════════════════════════════════════════════════════════════════ */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    @keyframes kSu{from{translate:0 30px}to{translate:0 0}}
    .k-srv-fila .k-srv__s,
    .k-pj-griglia .k-pj{animation:kSu linear both;animation-timeline:view();
      animation-range:cover 6% cover 26%}
    .k-srv-fila .k-srv__s:nth-child(2),.k-pj-griglia .k-pj:nth-child(2){animation-range:cover 9.5% cover 29.5%}
    .k-srv-fila .k-srv__s:nth-child(3),.k-pj-griglia .k-pj:nth-child(3){animation-range:cover 13% cover 33%}
    .k-srv-fila .k-srv__s:nth-child(4),.k-pj-griglia .k-pj:nth-child(4){animation-range:cover 16.5% cover 36.5%}
    .k-srv-fila .k-srv__s:nth-child(5),.k-pj-griglia .k-pj:nth-child(5){animation-range:cover 20% cover 40%}
    .k-srv-fila .k-srv__s:nth-child(6),.k-pj-griglia .k-pj:nth-child(6){animation-range:cover 23.5% cover 43.5%}
    .k-srv-fila .k-srv__s:nth-child(7),.k-pj-griglia .k-pj:nth-child(7){animation-range:cover 27% cover 47%}
    .k-srv-fila .k-srv__s:nth-child(8),.k-pj-griglia .k-pj:nth-child(8){animation-range:cover 30.5% cover 50.5%}
    .k-srv-fila .k-srv__s:nth-child(n+9),.k-pj-griglia .k-pj:nth-child(n+9){animation-range:cover 34% cover 54%}
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   A · IL TITOLO SALE DA DIETRO UNA RIGA (scelto il 26/8/2026)
   Succede una volta sola, al caricamento, sul titolo che apre la pagina.

   ⚠️ Le righe le costruisce il JAVASCRIPT (`kreita_titolo_script()` in
   aree.php), perche' dove va a capo un titolo lo sa solo il browser: dipende
   dal carattere, dalla larghezza e dalla lingua. Il foglio di stile qui
   anima SOLO dentro `.is-spezzato`, la classe che quello script aggiunge: se
   lo script non parte — o se qualcuno lo toglie — non succede niente e il
   titolo resta esattamente com'e'. Nessun titolo puo' restare invisibile.
   ⚠️ Il riempimento in basso e il margine negativo che lo annulla servono per
   le CODE delle lettere (p, g, q): con `overflow:hidden` e un'interlinea
   stretta la maschera le taglierebbe.
   ══════════════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion:no-preference){
  .k-titolo-spezzato .k-riga{display:block;overflow:hidden;
    padding-bottom:.14em;margin-bottom:-.14em}
  .k-titolo-spezzato .k-riga > i{display:block;font-style:normal;
    translate:0 106%;animation:kRigaSale .82s cubic-bezier(.2,.9,.25,1) both;
    animation-delay:calc(.06s + var(--r,0) * .1s)}
  @keyframes kRigaSale{to{translate:0 0}}
}

/* ==========================================================================
   LA PAGINA DI UN SERVIZIO — scheda ferma a sinistra, contenuto a destra
   Il colore viene da --ac/--atesto, che kreita_area_variabili() stampa nella
   testata: la stessa pagina cambia colore da sola a seconda dell'area.
   ========================================================================== */
.k-sv{display:grid;grid-template-columns:minmax(0,.40fr) minmax(0,.60fr);
  --molla:cubic-bezier(.22,.8,.24,1)}
/* ⚠️ Il bordo alto deve superare la barra del menu, che e' alta **108px ferma
   e 81 appiccicata**. Con 7,5rem l'occhiello restava a 12px dalla barra
   (troppo attaccato) e a destra «Cosa comprende» finiva addirittura SOTTO,
   a −56. Con 10,5rem c'e' respiro in tutti e due gli stati, e le due colonne
   partono alla stessa altezza. Misurato, non a occhio. */
.k-sv__sx{position:sticky;top:0;height:100vh;background:var(--ac);color:var(--atesto);
  display:flex;flex-direction:column;justify-content:space-between;
  /* ⚠️⚠️ IL TETTO AL MARGINE SINISTRO NON E' UN VEZZO.
     Il contenuto e' agganciato al contenitore del sito (1240px), ma la colonna
     e' il 40% della finestra: piu' lo schermo e' largo, piu' quel margine cresce
     e piu' la striscia di contenuto si STRINGE. Misurato su /e-commerce/:
     404px a 1440 · 356 a 1920 · 292 a 2560 · 260 a 2880 — e li' «E-Commerce»
     usciva spezzato su TRE righe («E-/Commerc/e»), segnalato da uno schermo
     largo. Il `min()` blocca il margine quando al contenuto resterebbe meno di
     404px, cioe' la larghezza che ha a 1440 — dove i titoli lunghi ci stanno.
     A 1440 il conto da' esattamente 124px, quindi li' NON cambia nulla. Sotto i ~1950px non cambia niente: prima del tetto si passa solo
     oltre. */
  padding:11.75rem 3rem 2.8rem
    max(1.5rem, min(calc((100vw - var(--k-gabbia))/2 + 1.5rem), calc(40vw - 28.25rem)))}
.k-sv__k{font-size:.781rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--atesto);display:flex;align-items:center;gap:.7rem}
.k-sv__k::before{content:"";width:1.6rem;height:2px;background:var(--atesto);border-radius:2px}
/* ⚠️ `!important` qui non e' pigrizia: Ohio impone il colore di h1 e p con
   una specificita' piu' alta, e senza forzare il titolo restava navy sul verde
   (3,11) e la frase grigia (1,37 — cioe' illeggibile). Misurato in pagina. */
/* ⚠️ «E-Commerce» usciva spezzato in «E-/Commerc/e»: la colonna e' stretta
   (576px a 1440) e senza queste due righe il browser rompe DENTRO la parola.
   `overflow-wrap:break-word` rompe solo se non c'e' alternativa, `hyphens:manual`
   impedisce la sillabazione automatica, e il trattino di «E-Commerce» smette di
   essere un punto d'interruzione buono. Verificato sul titolo piu' lungo,
   «Soluzioni Hardware per Uffici e Aziende». */
.k-sv .k-sv__h1{font-family:var(--k-display,"Space Grotesk",sans-serif);font-weight:700;
  color:var(--atesto) !important;font-size:clamp(2.4rem,4.6vw,3.7rem);letter-spacing:-.04em;
  line-height:1.02;margin:0;
  overflow-wrap:break-word;word-break:normal;hyphens:manual;
  -webkit-hyphens:manual}
.k-sv .k-sv__frase{color:var(--atesto) !important;font-size:1.02rem;max-width:33ch;
  margin:1rem 0 0;line-height:1.6}
.k-sv .k-sv__k,.k-sv .k-sv__quante{color:var(--atesto) !important}
.k-sv__quante{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--atesto);display:block;
  padding-bottom:1.1rem;margin-bottom:1.3rem;
  border-bottom:1px solid color-mix(in srgb,var(--atesto) 30%,transparent)}
.k-sv__bottoni{display:flex;gap:.7rem;flex-wrap:wrap}
.k-sv__btn{display:inline-flex;align-items:center;gap:.55rem;font-weight:600;font-size:15.5px;
  padding:.8rem 1.5rem;border-radius:99px;text-decoration:none;border:1.5px solid transparent;
  background:var(--atesto);color:var(--ac);
  /* ⚠️⚠️ LO STILE DEI BOTTONI E' QUELLO SCELTO IL 4/8: IL VELO CHE SALE.
     Qui era rimasta la dissolvenza del fondo, cioe' proprio la cosa che era
     stata corretta altrove. Due difetti in uno, tutti e due gia' misurati:
     1. il fondo animato lo ridisegna la CPU a ogni fotogramma e su una pasticca
        con gli angoli tondi parte in ritardo e va a scatti («hover dei bottoni
        strano», segnalato dal cliente il 4/8);
     2. ⚠️ sfumando fondo E testo INSIEME, a meta' strada il fondo e' ancora
        chiaro e il testo gia' quasi del colore d'arrivo: il tasto sembra VUOTO.
        E' lo stesso difetto trovato sui «Vai all'area» del mega-menu, dove era
        sotto 3,0 per 131ms su 260.
     Rimedio identico a quello delle pagine area: velo in `::before` mosso con
     `transform:scaleY()` (sta sulla scheda grafica) e il colore del testo che
     cambia con **60ms di ritardo**, quando il velo e' gia' partito. */
  position:relative;isolation:isolate;overflow:hidden;
  transition:color .3s .06s, transform .3s, border-color .24s}
/* ⚠️ `isolation:isolate` sul bottone, o lo `z-index:-1` del velo lo manda dietro
   alla SEZIONE e il velo sparisce. */
.k-sv__btn::before{content:"";position:absolute;inset:0;z-index:-1;
  background:var(--acontro);transform:scaleY(0);transform-origin:50% 0;
  transition:transform .4s cubic-bezier(.3,0,.2,1)}
.k-sv__btn:hover::before,.k-sv__btn:focus-visible::before{transform:scaleY(1)}
/* ⚠️⚠️ IL TRANELLO DI OHIO SUI COLLEGAMENTI
   Sotto il mouse Ohio mette il suo arancione in DUE punti: `color` e
   `background-image: linear-gradient(arancio, arancio)`. Il secondo si dipinge
   SOPRA qualunque `background-color` nostro, quindi il bottone diventava
   arancione pieno con la scritta arancione: **contrasto 1,00, testo invisibile**.
   Vanno bloccati tutti e due, e `background-image` va spento esplicitamente:
   la scorciatoia `background:` da sola non basta perche' perde la specificita'. */
.k-sv__btn{background-image:none !important}
.k-sv__btn:hover,.k-sv__btn:focus-visible{
  background-image:none !important;color:var(--atesto) !important;
  transform:translateY(-2px)}
.k-sv__btn.-vuoto{background:none;color:var(--atesto);
  border-color:color-mix(in srgb,var(--atesto) 55%,transparent)}
/* il contornato si riempie del colore del testo, e la parola passa al colore
   dell'area: gli stessi due colori, scambiati. */
.k-sv__btn.-vuoto::before{background:var(--atesto)}
.k-sv__btn.-vuoto:hover,.k-sv__btn.-vuoto:focus-visible{
  background-image:none !important;color:var(--ac) !important;
  border-color:var(--atesto) !important}
/* ⚠️ Con «movimento ridotto» il velo non deve strisciare: appare e basta. */
@media (prefers-reduced-motion:reduce){
  .k-sv__btn::before{transition:none}
  .k-sv__btn{transition:color .01s, border-color .01s}
  .k-sv__btn:hover{transform:none}
}
/* stessa cosa per le due porte in fondo, che sono collegamenti anche loro */
.k-sv__porta:hover,.k-sv__porta:hover b,.k-sv__porta:hover em{
  background-image:none !important}
.k-sv__porta:hover b{color:#131C2E !important}
.k-sv__porta:hover em{color:var(--acd,var(--ac)) !important}
/* la colonna che scorre */
.k-sv__dx{padding:11.75rem 0 3.4rem 3.2rem;
  padding-right:max(1.5rem,calc((100vw - var(--k-gabbia))/2 + 1.5rem))}
.k-sv__oc{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:11.5px;
  font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#4A5568}
.k-sv__h2{font-family:var(--k-display,"Space Grotesk",sans-serif);font-weight:700;
  font-size:clamp(1.4rem,2.2vw,1.75rem);letter-spacing:-.03em;margin:.4rem 0 0;color:#131C2E}
/* IL TESTO DESCRITTIVO, sopra le icone (campo `kreita_testo`).
   ⚠️ Misura di riga: 68 caratteri. La colonna destra e' larga 864px a 1440 e a
   tutta larghezza una riga di testo normale arriva a 110 caratteri, che si legge
   male. `max-width` in `ch` e non in px cosi' regge anche se cambia il corpo. */
.k-sv__testo{margin:0 0 2.6rem;max-width:68ch}
.k-home .elementor .k-sv__testo p,
.k-sv__testo p{font-size:1.02rem;line-height:1.7;color:#3A4555;margin:0 0 .9rem}
.k-sv__testo p:last-child{margin-bottom:0}
.k-sv__testo b,.k-sv__testo strong{color:#131C2E;font-weight:600}
/* Il sottotitolo dentro il testo («## » nel campo, 26/10/2026). ⚠️ Piu' piccolo
   di «Che cosa possiamo fare.» qui sotto: e' un titoletto del discorso, non
   l'inizio di un'altra sezione. */
.k-home .elementor .k-sv__testo .k-sv__h2t,
.k-sv__testo .k-sv__h2t{font-family:var(--k-display,"Space Grotesk",sans-serif);font-weight:700;
  font-size:1.18rem;line-height:1.35;letter-spacing:-.02em;color:#131C2E;margin:1.9rem 0 .6rem}
.k-sv__testo .k-sv__h2t:first-child{margin-top:0}
/* I titoli in pagina piu' lunghi del nome (campo `kreita_titolo_pagina`): la
   colonna e' alta quanto lo schermo, e a 3,7rem un titolo di 50 caratteri va su
   cinque righe e spinge giu' i bottoni. Soglie in `servizio.php`. */
.k-sv .k-sv__h1.-lungo{font-size:clamp(2.1rem,3.7vw,3rem);line-height:1.05}
.k-sv .k-sv__h1.-lunghissimo{font-size:clamp(1.85rem,3.1vw,2.55rem);line-height:1.08;letter-spacing:-.035em}
/* con il testo davanti, le icone hanno bisogno di piu' aria sopra */

.k-sv__griglia{display:grid;grid-template-columns:repeat(2,1fr);gap:1.9rem 2.4rem;margin-top:1.5rem}
/* ⚠️ l'entrata anima SOLO il movimento: con `from{opacity:0}` un motore di
   ricerca, che non scorre, vedrebbe il testo invisibile — e resta invisibile
   anche con una finestra alta 9000px, perche' senza scorrimento la linea
   temporale non avanza mai. Misurato, non supposto. */
@keyframes k-sv-sale{from{transform:translateY(26px)}to{transform:none}}
.k-sv__r{animation:k-sv-sale linear both;animation-timeline:view();
  animation-range:cover 6% cover 42%}
.k-sv__r:nth-child(even){animation-range:cover 10% cover 46%}
/* ⚠️⚠️ L'ICONA SPARIVA A META' HOVER, su tutte e quaranta le pagine.
   Il fondo passava da trasparente al colore e il glifo dal colore al bianco,
   **nello stesso tempo e con la stessa curva**: a meta' strada i due valori
   coincidono per definizione (fondo al 50% sul bianco = colore al 50% verso il
   bianco), e il contrasto va a **1,00**. Simulato su tutti e sei i colori
   d'area il 10/8: 1,00 in tutti e sei, sempre a t=50%.
   ⚠️ Ritardare il colore NON basta: comunque il fondo, riempiendosi, deve
   passare per la tinta del glifo. Il rimedio e' quello che il sito usa gia'
   altrove: una VELINA gia' del colore pieno, mossa da `transform`. Sotto il
   glifo c'e' sempre o bianco o colore pieno — mai una via di mezzo — e il
   contrasto resta 4,97-7,10 per tutto il transito.
   ⚠️ Il glifo cambia in 90ms dopo 130 di ritardo: e' il momento in cui la
   velina, con la molla, ha gia' coperto il centro del riquadro. Lo stesso
   ritardo vale in uscita, e li' la velina scopre il centro nello stesso punto:
   la sequenza e' simmetrica e non serve una seconda regola. */
.k-sv__r .k-ic{display:grid;place-items:center;color:var(--aicona,var(--acd,var(--ac)));
  width:2.5rem;height:2.5rem;border-radius:11px;border:1px solid rgba(19,28,46,.13);
  margin-bottom:.85rem;position:relative;isolation:isolate;
  /* ⚠️⚠️ `color 0s 60ms` NON e' un errore: e' uno SCATTO, non una dissolvenza.
     Campionata l'animazione vera ogni 20ms (10/8, su Web e Software): con una
     dissolvenza il contrasto stava a **1,00 per 85ms** — da 67 a 150 — perche'
     la velina arriva sul glifo al 63% di scala (67ms, la molla parte veloce)
     mentre il colore cominciava a cambiare solo a 130.
     ⚠️ Anticipare la dissolvenza non risolve, la specchia soltanto: il glifo
     sbiancherebbe mentre sotto c'e' ancora bianco. L'unico modo perche' il
     contrasto non scenda MAI e' che il colore cambi **di colpo** nell'istante
     in cui la velina supera il glifo — che occupa il 55% del riquadro, cioe'
     a ~60ms. Prima: colore su bianco. Dopo: bianco su colore. Mai in mezzo.
     ⚠️ Lo stesso ritardo vale in uscita, e va bene: la velina si ritira con la
     stessa molla e scopre il glifo nello stesso punto. */
  transition:color 0s 60ms,border-color .3s}
/* ⚠️⚠️ `inset:-1px`, NON `inset:0`. Uno pseudo-elemento in posizione assoluta
   si misura sul riquadro DENTRO al bordo: con `inset:0` il riempimento restava
   38x38 dentro un riquadro da 40, e siccome teneva il raggio di FUORI (11px)
   invece di quello di dentro (10), le due curve non coincidevano e in ogni
   angolo restava una **falce bianca** — «l'hover non riempie il colore
   appieno», segnalato l'8/8 e visibile solo ingrandendo al 600%.
   Con `-1px` il riempimento copre anche il bordo e le curve tornano le stesse.
   ⚠️ Va tolto `overflow:hidden` dal riquadro, se no ritaglia proprio quel pixel
   e il difetto torna. Non serviva: la velina cresce da `scale(0)` e non esce
   mai dal suo riquadro. */
.k-sv__r .k-ic::before{content:"";position:absolute;inset:-1px;border-radius:inherit;
  z-index:-1;background:var(--aicona,var(--acd,var(--ac)));
  transform:scale(0);transition:transform .34s var(--molla,cubic-bezier(.22,.8,.24,1))}
.k-sv__r:hover .k-ic::before{transform:scale(1)}
.k-sv__r .k-ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
/* ⚠️ Al passaggio il riquadro si riempie di `--acd`, che e' il colore d'area
   SCURITO per stare su fondo chiaro — non `--ac`. Ma il glifo prendeva
   `--atesto`, che e' l'inchiostro calcolato per stare sopra `--ac`: sull'area 01
   e' NAVY, e navy su ocra scuro misura **3,43**. Col bianco fa **4,97**, e sulle
   altre cinque aree `--atesto` e' gia' bianco, quindi non cambia niente. */
.k-sv__r:hover .k-ic{border-color:var(--aicona,var(--acd,var(--ac)));color:#fff}
.k-sv__t{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:1.06rem;
  font-weight:700;letter-spacing:-.02em;line-height:1.25;margin:0;color:#131C2E}
.k-sv__d{margin:.25rem 0 0;font-size:.894rem;line-height:1.6;color:#4A5568}
/* ══ I SERVIZI FRATELLI in fondo alla colonna destra ══
   Al posto delle due scatole: l'elenco dei servizi che stanno nella stessa
   area, con il nome vero. Chi e' capitato sulla pagina sbagliata trova quella
   giusta senza passare dall'area.
   ⚠️ L'iconcina prende `--acd` (il colore d'area SCURITO per fondo chiaro), non
   `--ac`: qui siamo su bianco, e sull'area 01 il giallo pieno farebbe 1,99. */
.k-sv__fratelli{margin-top:2.8rem;padding-top:2rem;border-top:1px solid #131C2E}
.k-sv__fratelli>.k-sv__oc{display:block;margin-bottom:.9rem}
.k-sv__fratelli ul{list-style:none;margin:0;padding:0}
.k-sv__fratelli li{border-bottom:1px solid rgba(19,28,46,.13)}
/* ⚠️ `li a` e NON `a`: la regola prendeva anche i due collegamenti dentro la
   riga di coda, che diventavano griglie da 2rem e si spezzavano in verticale
   una sillaba per riga («tutt/a/l'are/a/Web»). */
.k-home .elementor .k-sv__fratelli li a{display:grid;
  grid-template-columns:2rem 1fr auto;align-items:center;column-gap:.9rem;
  text-decoration:none!important;color:inherit;padding:.9rem .2rem;
  position:relative;isolation:isolate;
  /* ⚠️ il colore parte con 60ms di ritardo, come tutti gli altri passaggi del
     sito: fondo e testo che si muovono insieme fanno il buco illeggibile. */
  transition:padding-left .32s var(--molla),color .3s .06s}
/* il filetto che cresce a sinistra: e' `transform`, non larghezza */
.k-sv__fratelli li a::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--acd,var(--ac));transform:scaleY(0);transform-origin:bottom;
  transition:transform .3s var(--molla)}
.k-home .elementor .k-sv__fratelli li a:hover,
.k-home .elementor .k-sv__fratelli li a:focus-visible{padding-left:1rem;color:var(--acd,var(--ac))}
.k-sv__fratelli li a:hover::before,.k-sv__fratelli li a:focus-visible::before{transform:scaleY(1)}
.k-sv__fi{display:grid;place-items:center;width:2rem;height:2rem;
  color:var(--aicona,var(--acd,var(--ac)));transition:transform .3s var(--molla)}
.k-sv__fi svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.k-sv__fratelli li a:hover .k-sv__fi{transform:scale(1.12)}
.k-home .elementor .k-sv__fratelli b{font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-size:1.1rem;font-weight:700;letter-spacing:-.02em;color:inherit}
.k-home .elementor .k-sv__fratelli em{font-style:normal;color:#4A5568;font-size:14px;
  text-align:right;line-height:1.4}
.k-home .elementor .k-sv__coda{margin:1.5rem 0 0!important;font-size:15px;color:#4A5568}
.k-home .elementor .k-sv__coda a{font-weight:600;color:var(--acd,var(--ac));
  text-decoration:underline!important;text-underline-offset:3px}
/* ⚠️ Sul telefono il dettaglio va sotto al nome, se no la riga si strozza. */
@media (max-width:780px){
  .k-home .elementor .k-sv__fratelli li a{grid-template-columns:2rem 1fr;row-gap:.15rem}
  .k-home .elementor .k-sv__fratelli em{grid-column:2;text-align:left}
}
@media (prefers-reduced-motion:reduce){
  .k-sv__fratelli li a,.k-sv__fratelli li a::before,.k-sv__fi{transition:none}
  .k-home .elementor .k-sv__fratelli li a:hover{padding-left:.2rem}
}

/* le due porte verso l'area */
.k-sv__porte{margin-top:2.8rem;padding-top:2rem;border-top:1px solid #131C2E;
  display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.k-sv__porta{display:block;text-decoration:none;color:inherit;border-radius:14px;
  border:1px solid rgba(19,28,46,.13);padding:1.2rem 1.2rem 1.1rem;
  position:relative;isolation:isolate;transition:border-color .35s,transform .35s var(--molla)}
.k-sv__porta::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:13px;
  background:color-mix(in srgb,var(--ac) 10%,#fff);
  transform:scaleY(0);transform-origin:bottom;transition:transform .38s var(--molla)}
.k-sv__porta:hover{border-color:color-mix(in srgb,var(--acd,var(--ac)) 45%,transparent);
  transform:translateY(-2px)}
.k-sv__porta:hover::before{transform:scaleY(1)}
.k-sv__porta b{display:block;font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-size:1.06rem;letter-spacing:-.02em;color:#131C2E}
.k-sv__porta span{display:block;font-size:13.8px;color:#4A5568;margin-top:.2rem;line-height:1.5}
.k-sv__porta em{font-style:normal;color:var(--acd,var(--ac));font-weight:600;font-size:13.5px;
  display:inline-block;margin-top:.7rem}
.k-sv__porta em i{font-style:normal;display:inline-block;transition:transform .3s var(--molla)}
.k-sv__porta:hover em i{transform:translateX(4px)}
@media (prefers-reduced-motion:reduce){.k-sv__r{animation:none}
  /* la velina compare di colpo: senza transizione il contrasto non ha un transito */
  .k-sv__r .k-ic,.k-sv__r .k-ic::before{transition:none}}
@media (max-width:980px){
  .k-sv{grid-template-columns:1fr}
  /* ⚠️⚠️ SOTTO LA BARRA. Con 2,6rem e basta, a 390px l'occhiello «WEB —
     SERVIZIO» finiva NASCOSTO sotto l'intestazione e a 820 ci finiva anche
     il TITOLO (misurato: occhiello a 42, titolo a 84, barra fino a 128).
     Riguardava tutte e 27 le pagine servizio.
     Qui fra 820 e 980 la barra GALLEGGIA: parte da 20 e finisce a 128, e la
     colonna comincia a 0. Quindi 128 da coprire + 3rem d'aria. */
  .k-sv__sx{position:static;height:auto;
    padding:calc(3rem + 128px) 1.5rem 2.6rem;gap:1.4rem}
  .k-sv__dx{padding:2.4rem 1.5rem 2.8rem}
  .k-sv__griglia,.k-sv__porte{grid-template-columns:1fr}
}
/* Sotto gli 820 la barra e' ATTACCATA in alto (finisce a 108) e la colonna
   comincia gia' a 51: restano 57px da coprire, non 128. Misurato uguale su
   tutte e cinque le pagine servizio provate. Senza questa riga il telefono si
   prendeva 115px di tinta piatta prima di leggere una parola. */
@media (max-width:819px){
  .k-sv__sx{padding-top:calc(3rem + 57px)}
}

/* ═══════════════════════════════════════════════════════════════════════════
   «ULTIMI LAVORI» — la griglia della home (dal 7/8/2026, al posto della fila
   che scorreva di lato). E' la stessa della pagina portfolio, senza filtri:
   in home un filtro su sei schede e' un comando che non serve.
   ⚠️ `--c` e `--ct` li scrive il PHP sulla scheda, presi dall'area del lavoro.
   ═══════════════════════════════════════════════════════════════════════════ */
.k-ul{background:#fff;padding:6rem 0 6.5rem}
.k-ul__w{max-width:var(--k-gabbia);margin:0 auto;padding:0 1.5rem}
.k-ul__testa{display:flex;align-items:flex-end;justify-content:space-between;
  gap:2rem;flex-wrap:wrap;margin:0 0 3rem}
.k-ul__h{font-family:var(--k-display,"Space Grotesk",system-ui,sans-serif);
  font-size:clamp(1.9rem,3.6vw,2.8rem);letter-spacing:-.032em;
  color:#131C2E!important;margin:.6rem 0 0!important;line-height:1.1}
.k-ul__tutti{font-weight:600;font-size:1rem;color:#131C2E!important;
  text-decoration:none!important;border-bottom:2px solid #131C2E;padding-bottom:2px;
  white-space:nowrap}
.k-ul__tutti span{display:inline-block;transition:transform .3s cubic-bezier(.22,.8,.24,1)}
.k-ul__tutti:hover span{transform:translateX(5px)}

.k-ul__griglia{display:grid;grid-template-columns:repeat(3,1fr);gap:2.6rem 2.2rem}
.k-ul__c{--c:#131C2E;--ct:#FFFFFF;--cw:#131C2E}
.k-ul__a{display:block;text-decoration:none!important;color:inherit}
/* ⚠️⚠️ Riquadro 16:10 e non 4:3. Le copertine sono di due famiglie e hanno
   ENTRAMBE il rapporto 1,6 — i marchi 640x400, le schermate dei siti 1440x901 —
   mentre 4:3 vale 1,336: `cover` buttava via il 16,4% della larghezza, 118px
   per lato sulle schermate. In home «opus Automazione» si leggeva «zienda di …
   ndustriale», con le parole del cliente tagliate. A 16:10 il ritaglio e' zero.
   E' lo stesso inciampo gia' visto su /i-nostri-lavori/ col ritaglio quadrato:
   il formato del riquadro si prende DALLE copertine, non si sceglie a mano. */
.k-ul__ph{position:relative;display:block;aspect-ratio:16/10;border-radius:12px;
  overflow:hidden;background:#EDEFF2;
  transition:transform .45s cubic-bezier(.22,.8,.24,1),box-shadow .45s cubic-bezier(.22,.8,.24,1)}
.k-ul__ph img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.22,.8,.24,1)}
.k-ul__a:hover .k-ul__ph{transform:translateY(-6px);box-shadow:0 18px 40px rgba(19,28,46,.18)}
.k-ul__a:hover .k-ul__ph img{transform:scale(1.06)}
/* la freccia, nel colore dell'area del lavoro */
.k-ul__go{position:absolute;top:14px;right:14px;z-index:2;
  width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:var(--c);color:var(--ct);
  font-family:var(--k-display,"Space Grotesk",system-ui,sans-serif);
  font-size:19px;font-weight:700;line-height:1;
  opacity:0;transform:translateY(-8px) scale(.85);
  transition:opacity .3s,transform .42s cubic-bezier(.22,.8,.24,1)}
.k-ul__a:hover .k-ul__go{opacity:1;transform:none}
.k-ul__t{font-family:var(--k-display,"Space Grotesk",system-ui,sans-serif);
  font-size:1.3rem;letter-spacing:-.02em;color:#131C2E!important;
  margin:1rem 0 .2rem!important;transition:transform .4s cubic-bezier(.22,.8,.24,1)}
.k-ul__a:hover .k-ul__t{transform:translateX(5px)}
/* ⚠️ La categoria porta il COLORE DELLA SUA AREA sempre, non solo sotto il
   mouse: e' l'unico punto colorato della sezione, e tenerlo grigio finche' non
   ci passi sopra vuol dire che in una schermata — o su un telefono, dove il
   mouse non c'e' — la fascia dei lavori e' in bianco e nero.
   ⚠️ `--cw` e non `--c`: e' la versione misurata per stare SU BIANCO. L'ambra
   dell'area 01 come testo su chiaro fa 1,99. Vedi portfolio.php. */
.k-ul__k{color:var(--cw,#5B6373)!important;font-size:.98rem;margin:0!important;
  font-weight:600;transition:color .3s}
/* ⚠️ su bianco si scrive con `--cw`: l'ambra dell'area 01 fa 1,99 */
.k-ul__a:hover .k-ul__k{color:var(--cw)!important}

/* ⚠️ Sul telefono il passaggio del mouse non esiste: senza questo la freccia
   non comparirebbe mai e la scheda resterebbe senza segno che si apre. */
@media (hover:none){
  .k-ul__go{opacity:1;transform:none;width:36px;height:36px;font-size:16px}
}
/* IL FILMATO SULLA COPERTINA — parte al passaggio del mouse (28/8).
   ⚠️ Non e' una decorazione: la copertina e' una schermata ferma di un sito, e
   un sito si capisce quando si muove. Il file e' `{slug}-leggero.mp4`, gia'
   caricato per 22 lavori; dove non c'e' resta la copertina e non manca niente.
   ⚠️ Sta SOPRA l'immagine e si accende con l'opacita', non con `display`: cosi'
   il passaggio e' una dissolvenza e non uno scatto, e la copertina resta sotto
   come primo fotogramma.
   ⚠️ `object-fit:cover` come l'immagine, o il filmato balla di qualche pixel
   nel momento in cui compare. */
.k-ul__mov{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity .45s ease;pointer-events:none;z-index:1}
.k-ul__a:hover .k-ul__mov.-pronto{opacity:1}
/* ⚠️ Senza mouse il filmato non si carica nemmeno: su un telefono sarebbe un
   megabyte scaricato per un effetto che li' non esiste. */
@media (hover:none){ .k-ul__mov{display:none} }

/* L'INGRESSO DELLA TESTATA — occhiello, titolo, collegamento (28/8).
   ⚠️⚠️ IL TITOLO SALE DA DIETRO UNA MASCHERINA, non appare in dissolvenza.
   E' l'unico modo per avere un ingresso che si VEDE rispettando la regola di
   questo sito: niente opacita' sulle animazioni legate allo scorrimento,
   perche' negli scatti a pagina intera — che restano a scorrimento zero — la
   sezione uscirebbe vuota. Qui l'elemento non diventa mai trasparente: e' il
   ritaglio del genitore a scoprirlo mentre sale.
   ⚠️ `overflow:clip` e non `hidden`: `hidden` crea un contenitore di
   scorrimento, e su questo sito ha gia' ucciso una volta uno `sticky`.
   ⚠️ Il ritaglio va allargato SOTTO (`clip-path` con il margine negativo del
   padding): la «Q» di «Quello» ha la coda sotto la linea di base, e con un
   ritaglio a filo veniva tagliata. */
.k-ul__h{overflow:clip;padding-bottom:.12em;margin-bottom:-.12em}
.k-ul__h > span{display:block}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .k-ul__intesta .k-kicker{display:block;animation:kSu linear both;
      animation-timeline:view();animation-range:cover 0% cover 26%}
    .k-ul__h > span{animation:kRivela linear both;
      animation-timeline:view();animation-range:cover 0% cover 32%}
    .k-ul__testa .k-ul__tutti{animation:kSu linear both;
      animation-timeline:view();animation-range:cover 0% cover 38%}
    /* ⚠️ La corsa e' piu' lunga di 30px: da dietro una mascherina il titolo
       deve partire da sotto il suo stesso corpo, se no si vede spuntare a
       meta' invece che salire intero. */
    @keyframes kRivela{from{translate:0 110%}to{translate:0 0}}
  }
}

/* L'INGRESSO A SCAGLIONI.
   ⚠️⚠️ SALE SOLO LA POSIZIONE, MAI L'OPACITA': `kEnter` parte da `opacity:0`, e
   negli scatti a pagina intera — che restano a scorrimento zero — la sezione
   uscirebbe bianca. Stessa regola gia' scritta per la griglia dei progetti.
   ⚠️⚠️ Lo sfalsamento si fa con `animation-range` SCHEDA PER SCHEDA, non con
   `animation-delay`: su una linea di scorrimento il ritardo non ha alcun
   effetto. */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .k-ul__griglia .k-ul__c{animation:kSu linear both;animation-timeline:view();
      animation-range:cover 0% cover 34%}
    .k-ul__griglia .k-ul__c:nth-child(2){animation-range:cover 0% cover 40%}
    .k-ul__griglia .k-ul__c:nth-child(3){animation-range:cover 0% cover 46%}
    .k-ul__griglia .k-ul__c:nth-child(4){animation-range:cover 0% cover 34%}
    .k-ul__griglia .k-ul__c:nth-child(5){animation-range:cover 0% cover 40%}
    .k-ul__griglia .k-ul__c:nth-child(6){animation-range:cover 0% cover 46%}
  }
}

@media (max-width:1100px){ .k-ul__griglia{grid-template-columns:repeat(2,1fr)} }
@media (max-width:640px){
  .k-ul{padding:4rem 0 4.5rem}
  .k-ul__griglia{grid-template-columns:1fr;gap:2rem}
  .k-ul__testa{margin-bottom:2rem}
}
@media (prefers-reduced-motion:reduce){
  .k-ul__ph,.k-ul__ph img,.k-ul__go,.k-ul__t{transition:none!important;transform:none!important}
}

/* ═══════════════════════════════════════════════════════════════════════════
   PAGINE AREA: LO SPAZIO SOPRA E SOTTO L'APERTURA (7/8/2026)
   ⚠️ Misurato: sopra al testo restavano 46px a 1440 e 118 a 2560, sotto 101 e
   158. Non e' un errore di padding: la testata sta SOPRA alla sezione e si
   mangia il margine superiore, quindi il padding scritto (158px) diventa 46
   visibili mentre quello di sotto si vede tutto.
   ⚠️ Il rimedio non e' «piu' padding»: e' aggiungere in cima ESATTAMENTE
   l'altezza della testata, cosi' i due spazi VISIBILI restano uguali a
   qualunque larghezza. La testata da qui in su e' fissa a 117px (96 + 20 di
   margine + 1 di bordo), vedi header.css.
   ═══════════════════════════════════════════════════════════════════════════ */
.k-area .k-apertura{
  /* STORIA DI QUESTO NUMERO, perche' e' andato su e giu' due volte:
     8/8 mattina: da 6,3rem a **4,2rem** — l'apertura faceva 720px e spingeva i
     servizi a y=932, cioe' sotto la piega di uno schermo da 900.
     8/8 sera: chiesto piu' respiro → **6rem**. L'apertura passa da 684 a 742px
     e i servizi restano comunque sopra la piega, perche' nel frattempo il
     cappello sopra la prima riga di servizi e' stato accorciato di ~90px.
     ⚠️ Se un giorno si rialza quel cappello, questo numero va ricontrollato:
     sono le due cose che insieme decidono se i servizi si vedono all'apertura.
     ⚠️ I 117px di testata restano: sono l'altezza vera della barra, e servono
     perche' i due spazi VISIBILI sopra e sotto restino uguali (742 - 117 = due
     volte 96, non 213 sopra e 96 sotto). */
  --k-aria:clamp(6rem,4.6vw,7.5rem);
  padding-top:calc(var(--k-aria) + 117px)!important;
  padding-bottom:var(--k-aria)!important;
  /* ═══ LE SEI APERTURE ALTE UGUALE (richiesta del 26/8) ═══════════════════
     MISURATO PRIMA, a schermo, non a occhio: a 1440 le sei aperture facevano
       Web · Aziende · Gadget · Foto e video   711px
       Design & Branding                       742px   (introduzione di 4 righe)
       Software                                780px   (titolo di 3 righe)
     cioe' 69px di scarto fra la piu' bassa e la piu' alta. Si vede passando
     da un'area all'altra: la barra dei servizi salta su e giu'.

     PERCHE' `min-height` E NON un riempimento in piu'. Il riempimento si somma
     al contenuto e quindi porta dentro la sua differenza; una misura minima
     invece fa da pavimento comune, e con `justify-content:center` (gia' sulla
     regola base) l'aria che avanza si divide fra sopra e sotto. I due spazi
     VISIBILI restano uguali fra loro, che e' l'invariante di questa sezione.

     QUANTO RISERVARE. Il contenuto piu' alto delle sei e' sempre Software.
     Misurato al variare della larghezza (`misura-fine.js`):
       901  920  960 1024 1100 1150 1200 1280 1440 1600 1700 1920
       391  394  400  415  436  450  458  471  471  471  498  498
     Fino a 1280 cresce col vw (il titolo e' `5vw` fino a un tetto di 4rem),
     da li' in su si ferma e cresce solo col carattere di base — che a 1700
     passa da 16 a 17px, ed e' per questo che il tetto e' in **rem** e non in
     px: in px a 1920 mancherebbero 26px e Software tornerebbe piu' alta.
       riserva = min(29,5rem, 24,2vw + 10,9rem)
     Sopra ogni misura della tabella, di 1..6px: verificato riga per riga.
     ⚠️ Se un giorno si allunga un TITOLO d'area, questa riserva va rimisurata:
     l'apertura di quella pagina supererebbe il pavimento e tornerebbe piu'
     alta delle altre, in silenzio. */
  /* ⚠️⚠️ RIMISURATA IL 26/8 SERA, ed e' successo esattamente quello che la
     nota qui sopra prevedeva: il titolo di Design & Branding e' passato da DUE
     righe a TRE, il suo contenuto da 433 a 502px, e quella pagina ha ripreso a
     essere piu' alta delle altre (811 contro 781) — in silenzio, come previsto.
     Nuove misure del contenuto piu' alto (adesso e' Design & Branding):
       901  920  960 1024 1100 1150 1200 1280+ 1700+
       418  421  427  443  466  481  489   502   531
     riserva = min(31,5rem, 25,83vw + 11,63rem), sopra ogni riga di 1..7px. */
  --k-riserva:min(31.5rem,calc(25.83vw + 11.63rem));
  min-height:calc(var(--k-riserva) + var(--k-aria)*2 + 117px)}
@media (max-width:900px){
  /* ⚠️ 92px erano tarati su una barra che non esiste piu'. Rimisurato l'8/8:
     fra 820 e 900 la barra galleggia e finisce a **128**; con 92 restavano
     22px d'aria sopra il titolo dell'area, meno della meta' dei 48 che hanno
     le pagine servizio e le schede progetto. Qui il riempimento si trasferisce
     1:1 (la sezione e' piu' alta del suo minimo, quindi non centra nulla). */
  .k-area .k-apertura{--k-aria:4.4rem;padding-top:calc(4.4rem + 118px)!important}
}
@media (max-width:819px){
  /* sotto gli 820 la barra e' ATTACCATA in alto e finisce a 108, non a 128 */
  .k-area .k-apertura{padding-top:calc(3.4rem + 98px)!important}
}


/* ══════════════════════════════════════════════════════════════════════════
   APERTURA DELLA PAGINA CONTATTI — le sei aree su navy.
   `/contatti/` era l'unica pagina che cominciava di netto sul bianco. Qui la
   banda scura fa da soglia fra l'intestazione e il modulo, e le tessere
   smistano: ognuna porta a `?area=…`, che il modulo legge da solo.
   ══════════════════════════════════════════════════════════════════════════ */
/* ⚠️⚠️ I 117px SONO L'ALTEZZA DELLA BARRA CHE GALLEGGIA, non un margine
   estetico. Senza, il titolo finiva SOTTO l'intestazione: a 390px la prima
   riga («Sei aree, un solo interlocutore») era tagliata a meta' dal riquadro
   del menu, e l'occhiello non si vedeva affatto. Trovato al collaudo
   responsive dell'8/8. Stessa cura delle pagine area e delle schede
   progetto: 117px sopra i 900px di larghezza, 92 sotto. */
/* ⚠️⚠️ IL RIEMPIMENTO IN CIMA QUI NON COMANDA PIU'. L'8/8 un'altra sessione
   l'ha spostato in `style.css` con `!important` (`6rem + 128px`, e `4rem +
   108px` sotto i 900), perche' home.css si carica dopo e glielo rifaceva.
   Verificato col browser: quello che arriva a schermo e' il valore di
   style.css, non questo. Le tre righe qui sotto restano solo per lo SFONDO e
   il riempimento in basso: se serve cambiare lo spazio in cima, si va in
   style.css. La riga a 560px e' morta del tutto. */
.k-ct-aree{background:#0F1622;padding:calc(3.4rem + 117px) 0 3rem}
@media (max-width:900px){ .k-ct-aree{padding:calc(2.2rem + 92px) 0 2.2rem} }
.k-ct-aree__in{max-width:var(--k-gabbia);margin:0 auto;padding:0 1.5rem}
.k-home .elementor .k-ct-aree__oc{font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-size:11.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(255,255,255,.6)!important;display:block}
.k-home .elementor .k-ct-aree__t{font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-size:clamp(1.7rem,3.2vw,2.5rem)!important;font-weight:700;letter-spacing:-.035em;
  line-height:1.12;margin:.6rem 0 1.9rem!important;max-width:24ch;color:#fff!important}
/* ⚠️ il filetto e' `--c`, cioe' la colonna [6] di KREITA_AREE: la tinta tarata
   per il NAVY. Il colore pieno qui non si leggerebbe (il rosso fa 3,71). */
/* ⚠️ Sei colonne stanno su un portatile, non su un telefono: sotto i 900px
   diventano tre e sotto i 560 due. Una sola sarebbe un elenco lungo sei schermi. */
@media (max-width:560px){   .k-ct-aree{padding:2.4rem 0 2.2rem} }
@media (prefers-reduced-motion:reduce){
    }


/* Il SELETTORE dentro la fascia di apertura: le stesse tessere di prima, ma su
   NAVY invece che su bianco.
   ⚠️ Il riquadro a riposo era `var(--bg)`, cioe' un grigino da fondo chiaro: qui
   diventa un velo bianco al 6%. Il nome era `var(--ink)` (navy su navy = 1,0):
   qui e' bianco. Al passaggio si riempie del colore pieno dell'area e il testo
   prende `--i`, la tinta calcolata per stare SOPRA quel colore — quella non
   cambia, e' gia' giusta in tutte e sette. */
.k-ct-aree .k-sc{margin-top:1.6rem}
.k-home .elementor .k-ct-aree .k-sc__b{background:rgba(255,255,255,.06)}
.k-home .elementor .k-ct-aree .k-sc__b b{color:#fff}
.k-home .elementor .k-ct-aree .k-sc__b span{color:rgba(255,255,255,.6)}
.k-home .elementor .k-ct-aree .k-sc__b:hover b,
.k-home .elementor .k-ct-aree .k-sc__b[aria-pressed="true"] b,
.k-home .elementor .k-ct-aree .k-sc__b:hover span,
.k-home .elementor .k-ct-aree .k-sc__b[aria-pressed="true"] span{color:var(--i)}
/* ⚠️ Sette tessere non stanno su un telefono: sotto i 900px diventano quattro
   per riga, sotto i 560 due. Una per riga sarebbe un elenco lungo uno schermo. */
@media (max-width:900px){ .k-ct-aree .k-sc{grid-template-columns:repeat(4,1fr)} }
@media (max-width:560px){ .k-ct-aree .k-sc{grid-template-columns:repeat(2,1fr)} }


/* ══════════════════════════════════════════════════════════════════════════
   LA SCHEDA DI UN PROGETTO — impianto del dimostrativo Ohio (scelto l'8/8).
   Testata compatta, poi due colonne: testo e crediti a sinistra, immagini a
   destra. Nel riferimento la colonna delle immagini e' 587px su 1440.
   ══════════════════════════════════════════════════════════════════════════ */
.k-pg{background:#fff}
.k-pg__in{max-width:var(--k-gabbia);margin:0 auto;padding:0 1.5rem}
/* ⚠️ 117px = l'altezza vera della barra che galleggia, come sulle pagine area.
   ⚠️ La testata deve restare COMPATTA: da noi veniva 950px (H1 a y=814) contro
   i 333 del riferimento. */
.k-pg__testa{padding:calc(2.6rem + 117px) 0 0}
.k-home .elementor .k-pg__su,.k-pg__su{display:inline-grid;place-items:center;
  width:44px;height:44px;border-radius:50%;border:1px solid rgba(19,28,46,.16);
  color:#131C2E!important;text-decoration:none!important;font-size:19px;line-height:1;
  margin-bottom:1.6rem;position:relative;isolation:isolate;overflow:hidden;
  transition:color .3s .06s,border-color .3s,transform .3s cubic-bezier(.22,.8,.24,1)}
.k-pg__su::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:50%;
  background:#131C2E;transform:scale(0);transition:transform .34s cubic-bezier(.3,0,.2,1)}
.k-pg__su:hover::before,.k-pg__su:focus-visible::before{transform:scale(1)}
.k-pg__su:hover,.k-pg__su:focus-visible{color:#fff!important;border-color:#131C2E;
  transform:translateX(-3px)}
.k-home .elementor .k-pg__cat,.k-pg__cat{margin:0 0 .4rem!important;font-size:15px;color:#4A5568}
.k-pg__cat a{color:#4A5568!important;text-decoration:none!important;transition:color .3s}
.k-pg__cat a:hover{color:#131C2E!important}
.k-home .elementor .k-pg__h1,.k-pg__h1{font-family:var(--k-display,"Space Grotesk",sans-serif)!important;
  font-weight:700;font-size:clamp(2.6rem,5.6vw,4.4rem)!important;letter-spacing:-.045em;
  line-height:1.02;margin:0!important;color:#131C2E!important}

/* ── il corpo a due colonne ── */
.k-pg__corpo{padding:3.4rem 0 0}
.k-pg__corpo > .k-pg__in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:3.5rem;align-items:start}
.k-home .elementor .k-pg__testo p,.k-pg__testo p{font-size:1.05rem;line-height:1.7;
  color:#3A4555;margin:0 0 1rem;max-width:52ch}
/* i crediti: nel riferimento sono colonne con un filetto sopra */
.k-pg__crediti{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,auto));
  gap:1.6rem 2.2rem;margin:2.2rem 0 0;justify-content:start}
.k-pg__crediti > div{border-top:1px solid rgba(19,28,46,.2);padding-top:.8rem}
.k-home .elementor .k-pg__crediti dt,.k-pg__crediti dt{font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-size:14.5px;font-weight:700;letter-spacing:-.01em;color:#131C2E;margin:0 0 .25rem}
.k-home .elementor .k-pg__crediti dd,.k-pg__crediti dd{margin:0;font-size:14.5px;
  line-height:1.5;color:#4A5568}
/* «Apri il sito»: nel riferimento e' un collegamento con la freccia, non una pillola */
.k-home .elementor .k-pg__apri,.k-pg__apri{display:inline-flex;align-items:center;gap:.7rem;
  margin-top:2rem;font-family:var(--k-display,"Space Grotesk",sans-serif);font-weight:700;
  font-size:1.05rem;color:#131C2E!important;text-decoration:none!important;
  border-bottom:2px solid #131C2E;padding-bottom:3px}
.k-pg__apri span{display:inline-block;transition:transform .34s cubic-bezier(.22,.8,.24,1)}
.k-pg__apri:hover span{transform:translateX(6px)}
/* ── la colonna delle immagini ── */
.k-pg__dx{display:grid;gap:1.6rem}
.k-pg__dx figure{margin:0}
.k-pg__dx img{width:100%;height:auto;display:block;border-radius:14px}

/* ── precedente / successivo ── */
.k-pg__vicini{margin-top:4rem;border-top:1px solid rgba(19,28,46,.13);padding:2rem 0 4rem}
.k-pg__vicini .k-pg__in{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.k-home .elementor .k-pg__v,.k-pg__v{display:grid;gap:.2rem;text-decoration:none!important;
  color:inherit;transition:transform .3s cubic-bezier(.22,.8,.24,1)}
.k-pg__v.-succ{text-align:right}
.k-pg__v span{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:11px;
  font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#4A5568}
.k-pg__v b{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:1.2rem;
  font-weight:700;letter-spacing:-.02em;color:#131C2E;transition:color .3s .06s}
.k-pg__v.-prec:hover{transform:translateX(-4px)}
.k-pg__v.-succ:hover{transform:translateX(4px)}
.k-pg__v:hover b{color:var(--accent-dark,#CB3722)}

@media (max-width:900px){
  /* ⚠️ 92px era sbagliato, e anche 122 lo era: la barra NON misura uguale a
     tutte le larghezze. Rimisurata l'8/8 dopo averla attaccata in alto:
     fra 820 e 900 GALLEGGIA (parte da 20, finisce a **128**); sotto gli 820 e'
     attaccata e finisce a **108**. Qui i 3rem sono l'aria voluta sopra la
     freccia «indietro», uguale a quella delle pagine servizio. */
  .k-pg__testa{padding:calc(3rem + 128px) 0 0}
  /* ⚠️ Sul telefono l'immagine va PRIMA del testo: e' quella che dice di che
     lavoro si tratta, e in colonna unica il testo la spingerebbe sotto la piega. */
  .k-pg__corpo > .k-pg__in{grid-template-columns:1fr;gap:2.2rem}
  .k-pg__dx{order:-1}
  .k-pg__vicini .k-pg__in{flex-direction:column;gap:1.4rem}
  .k-pg__v.-succ{text-align:left}
}
@media (max-width:819px){
  .k-pg__testa{padding-top:calc(3rem + 108px)}
  /* ⚠️ I crediti a DUE colonne su un telefono lasciano ~160px a testa, e
     «thethinkingwatermill.com» ci si spezzava a meta' parola («…watermill.c /
     om»). A colonna unica ha tutta la larghezza e ci sta in una riga. */
  .k-pg__crediti{grid-template-columns:1fr;gap:1.2rem}
}
@media (prefers-reduced-motion:reduce){
  .k-pg__su,.k-pg__su::before,.k-pg__v,.k-pg__apri span{transition:none}
  .k-pg__su:hover,.k-pg__v:hover{transform:none}
}


/* ═══════════════════════════════════════════════════════════════════════════
   I FILTRI DEL PORTFOLIO SUL TELEFONO — /i-nostri-lavori/
   Il filtro e' quello del tema (`.portfolio-filter ul.-unlist`), disegnato per
   una riga sola su schermo largo: le voci sono separate da una barra messa con
   `li::after{content:"/"}`.
   ⚠️ A 390px (misurato l'8/8) le cinque voci vanno a capo una per riga e ogni
   barra resta APPESA in fondo alla riga, staccata da tutto: si legge
   «Design & Branding 01   /» e sembra un errore di stampa, non un separatore.
   Qui sotto gli 820: via le barre, l'etichetta «Filtra per» su una riga sua,
   e le voci impaccate come pastiglie che vanno a capo insieme.
   ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width:819px){
  .portfolio-filter ul.-unlist{gap:.3rem .45rem;align-items:center}
  .portfolio-filter ul.-unlist > li::after{content:none!important;display:none!important}
  /* «Filtra per» e' il primo <li>: riga tutta sua, cosi' le voci partono allineate */
  .portfolio-filter ul.-unlist > li:first-child{flex:0 0 100%;margin:0 0 .5rem}
  .portfolio-filter ul.-unlist > li > a{padding:7px 13px}
}

/* I DUE BOTTONI DELL'APERTURA quando vanno a capo (misurato a 390px: 149px
   «Contattaci» sopra e 173px «Cosa comprende» sotto, entrambi allineati a
   sinistra). Due pastiglie impilate di larghezza diversa sembrano un errore,
   non una scelta: sotto i 430 diventano una colonna sola, tutte e due larghe
   uguale. Sopra restano affiancate come sono state approvate.
   ⚠️ Solo dentro `.k-apertura`: la stessa classe la usano il blocco «una delle
   sei aree» e il pulsante sotto la griglia dei progetti, che stanno bene. */
@media (max-width:430px){
  .k-apertura .k-cta-row{flex-direction:column;align-items:stretch}
  .k-apertura .k-cta-row > a{justify-content:center}
}

/* La chiusura di /i-nostri-lavori/ («Raccontateci cosa avete in mente…») e'
   un widget di testo dentro una colonna a tutta gabbia: senza un tetto la riga
   arrivava a **134 caratteri** su 1198px, il doppio del leggibile. E' l'unico
   punto del sito fuori dalla finestra 45-90 — misurato il 10/8 su tutte le
   pagine a 1920 e 2560, il resto sta fra 48 e 84.
   ⚠️ Il tetto e' in `ch` e non in px: cosi' regge anche ora che sopra i 1700
   il corpo cresce. Il testo e' allineato a sinistra (`start`), quindi niente
   margini automatici: centrarlo lo staccherebbe da tutto il resto della pagina. */
.elementor-element-7718168 p{max-width:66ch}

/* ══════════════════════════════════════════════════════════════════════════
   L'APERTURA DI /i-nostri-lavori/ — alta come le altre
   ⚠️ Questa pagina NON usa `.k-apertura`: e' una sezione Elementor a se',
   `#portfolio-testa.k-port-intro`, con 7rem di riempimento sopra e 3 sotto.
   Risultato: era la piu' bassa del sito, e passando dalle pagine d'area a
   questa si sentiva il salto.
   ⚠️ SERVE `!important`: il riempimento sta negli stili generati da
   Elementor per quell'elemento, che vincono a parita' di specificita' perche'
   arrivano dopo. E' la stessa ragione per cui ce l'ha anche `.k-apertura`.
   ⚠️ Misura minima + contenuto centrato, non solo riempimento sotto: cosi'
   resta alta uguale anche il giorno che il testo a destra si accorcia.
   ══════════════════════════════════════════════════════════════════════════ */
.k-port-intro{min-height:clamp(560px,64vh,700px);
  display:flex;flex-direction:column;justify-content:center;
  padding-top:clamp(9rem,11vw,11.5rem)!important;
  padding-bottom:clamp(4rem,7vw,7rem)!important}
.k-port-intro > .elementor-container{width:100%}
@media (max-width:900px){
  .k-port-intro{min-height:clamp(420px,52vh,560px);
    padding-top:clamp(7rem,16vw,9rem)!important}
}

/* ==========================================================================
   PAGINA LAVORI — 28/8/2026
   ========================================================================== */

/* ⚠️⚠️ L'APERTURA ERA BASSA. Misurata: 558px, contro gli 813 di tutte le
   pagine d'area e gli 812 di /hosting/. Non e' una differenza che si nota
   guardando una pagina sola: si nota passando da una all'altra, perche' il
   titolo salta su di 255px.
   La formula e' LA STESSA di `.k-area .k-apertura` (piu' su in questo foglio),
   copiata e non reinventata: cosi' se un giorno si ritocca `--k-aria` o
   `--k-riserva` li', basta ritoccarlo qui e le pagine restano allineate.
   ⚠️ Serve anche il centraggio verticale: con la sola altezza minima il
   contenuto resterebbe appiccicato in alto e sotto ci sarebbero 255px di vuoto.
   ⚠️ `!important` sui riempimenti perche' li scrive Elementor in linea. */
.k-pag-lavori #portfolio-testa{
  --k-aria:clamp(6rem,4.6vw,7.5rem);
  --k-riserva:min(31.5rem,calc(25.83vw + 11.63rem));
  display:flex;flex-direction:column;justify-content:center;
  min-height:calc(var(--k-riserva) + var(--k-aria)*2 + 117px);
  padding-top:calc(var(--k-aria) + 117px)!important;
  padding-bottom:var(--k-aria)!important}

@media (max-width:900px){
  /* stessi scalini dell'apertura d'area: fra 820 e 900 la barra galleggia e
     finisce a 128, sotto gli 820 e' attaccata in alto e finisce a 108 */
  .k-pag-lavori #portfolio-testa{--k-aria:4.4rem;padding-top:calc(4.4rem + 118px)!important}
}
@media (max-width:819px){
  .k-pag-lavori #portfolio-testa{padding-top:calc(3.4rem + 98px)!important}
}

/* --- IL FILTRO DELLE CATEGORIE: un dissolvenza, non uno scatto ------------
   ⚠️ Il filtro faceva `scheda.hidden = true/false` e basta: ventisette schede
   sparivano nello stesso fotogramma e l'occhio non capiva se avesse cliccato
   giusto o se la pagina si fosse rotta. Ora escono tutte insieme (.16s) e
   rientrano a scaletta, una un filo dopo l'altra.
   ⚠️ La scaletta si ferma alla decima scheda: con ventinove, 26ms l'una
   farebbero 754ms di attesa per l'ultima — a quel punto non e' piu' un
   dettaglio, e' lentezza.
   ⚠️⚠️ NIENTE `animation`: con `both` lo stato finale resta scritto
   sull'elemento anche a cose finite, ed e' esattamente il modo in cui
   altrove i bottoni erano diventati non premibili. Qui sono transizioni, che
   quando finiscono non lasciano niente. */
.k-pj-griglia.-mosaico .k-pj{
  transition:opacity .26s ease,transform .26s ease;
  transition-delay:var(--k-sc,0ms)}
.k-pj-griglia.-mosaico.-cambia .k-pj{
  opacity:0;transform:translateY(8px) scale(.985);
  transition-duration:.16s;transition-delay:0ms}

@media (prefers-reduced-motion:reduce){
  .k-pj-griglia.-mosaico .k-pj{transition:none}
  .k-pj-griglia.-mosaico.-cambia .k-pj{opacity:1;transform:none}
}

/* ⚠️⚠️ PAGINA CONTATTI: stessa altezza d'apertura di tutte le altre.
   Misurata prima: 512px, contro gli 813 delle pagine d'area, di /hosting/ e dei
   lavori.

   ⚠️⚠️ L'ALTEZZA VA SULLA FASCIA `.k-ct-aree`, NON SULLA SEZIONE ELEMENTOR.
   Primo tentativo sbagliato, lasciato scritto perche' e' facile ricascarci: la
   sezione e' TRASPARENTE — il navy #0F1622 lo dipinge `.k-ct-aree`, che sta tre
   livelli piu' dentro (widget → shortcode → section). Dando altezza e
   `display:flex` alla sezione si ottengono due danni insieme: la fascia resta
   della sua altezza e attorno compare il bianco della pagina, e per giunta il
   contenitore Elementor smette di essere a tutta larghezza (da 1440 a 1240),
   perche' come elemento flessibile viene dimensionato in un altro modo. La
   fascia diventa un riquadro che galleggia.

   La formula e' la stessa di `.k-area .k-apertura`: se un domani si ritocca
   la', va ritoccata anche qui e nei lavori — sono i soli tre punti.
   ⚠️ Scoped su `.k-pag-contatti` (aggiunta da `kreita_classe_contatti()` in
   functions.php): `.k-ct-aree` e' un blocco riusabile e potrebbe comparire
   altrove, dove questa altezza non c'entrerebbe niente. */
/* ==========================================================================
   CONTATTI — IL FONDO CHE SI MUOVE  (29/8)

   ⚠️ Non un'animazione qualunque: e' la stessa famiglia dell'apertura della
   home, che e' un campo di rumore nei SEI COLORI DELLE AREE sopra il navy
   `#0F1622`. Stesso navy, stessi sei colori. E su questa pagina ha un motivo
   in piu': il titolo dice «Sei aree, un solo interlocutore» e sotto ci sono le
   sei tessere — il fondo dice la stessa cosa senza scriverla.
   ⚠️⚠️ FATTO IN CSS, senza canvas ne' WebGL. Qui non serve un campo calcolato:
   servono sei macchie che si spostano piano dietro a del testo. Un canvas
   vorrebbe dire un contesto grafico, un ciclo di disegno e una cosa in piu' che
   puo' rompersi su una pagina che deve solo far scrivere la gente.
   ⚠️ Le macchie stanno in un `::before` con `opacity` bassa: il testo e' bianco
   e non deve mai avvicinarsi al fondo. Misurato dopo, sul punto piu' chiaro del
   campo (vedi il commento del contrasto piu' sotto).
   ========================================================================== */
.k-pag-contatti .k-ct-aree{position:relative;overflow:hidden;isolation:isolate}

.k-pag-contatti .k-ct-aree::before{
  content:"";position:absolute;inset:-20%;z-index:-1;pointer-events:none;
  /* i sei colori delle aree, nell'ordine del sito */
  background:
    radial-gradient(38% 44% at 12% 22%, #F5A623 0%, transparent 62%),
    radial-gradient(42% 48% at 82% 16%, #0F766E 0%, transparent 64%),
    radial-gradient(40% 46% at 68% 78%, #D03923 0%, transparent 62%),
    radial-gradient(36% 42% at 26% 82%, #C23A8E 0%, transparent 62%),
    radial-gradient(44% 40% at 50% 44%, #3763A6 0%, transparent 66%),
    radial-gradient(34% 40% at 92% 60%, #6D28D9 0%, transparent 62%);
  opacity:.30;
  filter:blur(46px) saturate(1.15);
  animation:k-ct-deriva 46s ease-in-out infinite alternate;
  will-change:transform}

/* ⚠️ Si muove con `transform`, non con `background-position`: lo spostamento
   del fondo obbliga il browser a ridisegnare sei sfumature a ogni fotogramma,
   la trasformazione la gestisce il compositore e non ridisegna niente.
   ⚠️ Il giro e' lungo (46s) e l'escursione piccola: dietro a un modulo di
   contatto un fondo che si agita e' un fastidio, non un effetto. */
@keyframes k-ct-deriva{
  0%   {transform:translate3d(0,0,0) scale(1.06)}
  50%  {transform:translate3d(2.5%,-2%,0) scale(1.12) rotate(1.2deg)}
  100% {transform:translate3d(-2%,1.5%,0) scale(1.08) rotate(-1deg)}
}

/* ⚠️⚠️ Chi ha chiesto meno movimento vede il campo FERMO, non sparito: le
   macchie restano e danno lo stesso fondo, solo che non derivano. Toglierle
   vorrebbe dire mostrargli una pagina diversa da quella degli altri. */
@media (prefers-reduced-motion:reduce){
  .k-pag-contatti .k-ct-aree::before{animation:none}
}

.k-pag-contatti .k-ct-aree{
  --k-aria:clamp(6rem,4.6vw,7.5rem);
  --k-riserva:min(31.5rem,calc(25.83vw + 11.63rem));
  display:flex;flex-direction:column;justify-content:center;
  min-height:calc(var(--k-riserva) + var(--k-aria)*2 + 117px);
  padding-top:calc(var(--k-aria) + 117px);
  padding-bottom:var(--k-aria)}

@media (max-width:900px){
  .k-pag-contatti .k-ct-aree{--k-aria:4.4rem;padding-top:calc(4.4rem + 118px)}
}
@media (max-width:819px){
  .k-pag-contatti .k-ct-aree{padding-top:calc(3.4rem + 98px)}
}

/* ⚠️⚠️ I LINK DENTRO AL TESTO DI UN SERVIZIO ERANO ARANCIONI. Segnalato su
   «Mail aziendali», ma non era un problema di quella pagina: nessuna regola
   toccava gli `<a>` dentro `.k-sv__testo`, quindi vinceva quella di serie di
   Ohio — `#fe5000` — su una pagina che ha gia' il suo colore d'area. Capita su
   QUALUNQUE scheda servizio il cui testo contenga un collegamento, quindi si
   sistema qui una volta e vale per tutte.
   ⚠️ Anche la sottolineatura: lasciata al colore del testo faceva un filo
   grigio sotto una parola colorata, che sembra un difetto di rendering. */
.k-sv__testo a{
  color:var(--ac);
  text-decoration-color:color-mix(in srgb, var(--ac) 45%, transparent);
  text-underline-offset:.18em;
  transition:text-decoration-color .18s}
.k-sv__testo a:hover,
.k-sv__testo a:focus-visible{text-decoration-color:var(--ac)}

/* ── LA FASCIA CHE CHIUDE /prodotti/ ──────────────────────────
   Le sei pagine area chiudono coi lavori dell'area. I prodotti non hanno un
   portfolio loro: senza niente la pagina finiva sull'ultima scheda spaiata e
   poi di colpo sul piede. Misurato il 28/8: /prodotti/ aveva DUE sezioni
   contro le TRE delle aree, e nessun titolo di sezione.
   ⚠️ Il fondo è lo stesso navy dell'apertura e del piede: la pagina si chiude
   con lo stesso inchiostro con cui si è aperta.

   ⚠⚠ LE REGOLE NUDE QUI NON REGGONO, e non si vede finché non si misura.
   `.k-pr-chiudi__t` è 0,1,0 e perde contro `.k-home .elementor p` (0,2,1), che
   dà a ogni capoverso `var(--muted)` = #4A5568: su questo navy fanno 2,3:1,
   cioè illeggibile, e allo scatto sembrava solo «testo sbiadito».
   ⚠⚠ E il bottone lo prendeva `.k-area.k-home .elementor a.k-btn-a` (0,4,1),
   la regola dei bottoni in APERTURA d'area: il fondo diventava il colore
   dell'area — qui il navy della fascia — e la pastiglia spariva, restava
   solo del testo chiaro. Serve una catena più lunga della sua. */
/* ⚠️⚠️ IL FONDO SEGUE L'AREA, NON È PIÙ IL NAVY FISSO. Quando questa fascia è
   nata, `/prodotti/` apriva in navy e chiudere in navy era giusto. Il 28/8
   `KREITA_FUORI_AREA['prodotti']` è passata al VERDE (#2E7D32): la pagina
   apriva verde e chiudeva navy, cioè con un colore che non c'entrava più
   niente. Col colore d'area la fascia si aggiorna da sola la prossima volta
   che qualcuno cambia idea. */
.k-pr-chiudi{background:var(--acd, #131C2E);color:#fff;padding:3.4rem 1.5rem}
.k-pr-chiudi__in{max-width:1240px;margin:0 auto;display:flex;flex-wrap:wrap;
  gap:1.6rem 2.4rem;align-items:center;justify-content:space-between}
.k-home .elementor .k-pr-chiudi__t{margin:0 0 .5rem;font-family:var(--display);
  font-weight:600;font-size:clamp(1.2rem,2.2vw,1.7rem);line-height:1.3;color:#fff}
.k-home .elementor .k-pr-chiudi__d{margin:0;max-width:62ch;color:#CBD5E1;line-height:1.65}
.k-area.k-home .elementor .k-pr-chiudi a.k-btn-a{background:#fff;color:var(--acd, #131C2E);border-color:#fff}
.k-area.k-home .elementor .k-pr-chiudi a.k-btn-a:hover{background:#E2E8F0;color:var(--acd, #131C2E)}
@media (max-width:820px){
  .k-pr-chiudi{padding:2.6rem 1.2rem}
  .k-pr-chiudi__in{flex-direction:column;align-items:flex-start}
}

/* ── LE SCHERMATE DELLA SCHEDA PRODOTTO ───────────────────────────────────
   Le schede prodotto erano solo testo: su un plugin è proprio il punto, uno
   vuole vedere com'è fatto. Stanno fra il discorso e i riquadri, non in fondo.
   ⚠️ La didascalia NON descrive l'immagine, dice a che cosa serve: è quella a
   fare il lavoro, la figura da sola non aggiunge niente al testo.
   ⚠️ `figcaption` non è un `<p>`, quindi `.k-home .elementor p{color:var(--muted)}`
   non la prende: il colore va scritto qui, se no resta l'inchiostro pieno e
   sembra un capoverso staccato invece di una didascalia. */
.k-sv__scher{margin:0 0 2.9rem}
.k-sv__scher>.k-sv__oc{display:block;margin-bottom:.35rem}
.k-sv__scher>.k-sv__h2{margin-bottom:1.4rem}
.k-sv__sc{margin:0 0 1.8rem}
.k-sv__sc:last-child{margin-bottom:0}
/* ⚠️ Il raggio non e' un vezzo: le schermate sono RITAGLIATE sul riquadro del
   banner, che ha gli angoli tondi suoi. Sotto i 18px negli angoli restano
   quattro triangolini della pagina che c'era dietro, e si vedono. */
.k-sv__sc-i{display:block;width:100%;height:auto;border-radius:20px;
  border:1px solid var(--line);background:#fff;
  box-shadow:0 12px 34px rgba(19,28,46,.12)}
.k-home .elementor .k-sv__sc-d{margin:.8rem 0 0;font-size:15px;line-height:1.55;
  color:var(--muted);max-width:68ch}
@media (max-width:900px){
  .k-sv__sc{margin-bottom:1.4rem}
  .k-sv__sc-i{border-radius:14px}
}

/* ── IL SIPARIO NON RIAPPARE A OGNI PAGINA ────────────────────────────────
   `#k-curtain` è stampato in ogni pagina e lo toglie `home.js`, che gira su
   DOMContentLoaded ed è accodato in fondo: misurato su /software/ il 28/8,
   fra il primo disegno e quel momento passano **1583 ms**. Un secondo e mezzo
   di marchio Kreita a ogni cambio pagina.
   ⚠️⚠️ Non è colpa di `sessionStorage['kreita-visto']`, che funziona: quando lo
   si legge la tenda è già dipinta. Il segno `k-visto` sull'`<html>` lo mette
   uno script di tre righe in testa alla pagina (mu-plugin `kreita-sipario`),
   prima di qualunque disegno.
   ⚠️ `display:none` e non `opacity:0`: con l'opacità la tenda resterebbe sopra
   la pagina e si mangerebbe i clic per un secondo e mezzo. */
html.k-visto #k-curtain{display:none !important}

/* ── L'APERTURA «SEI AREE», VERSIONE SOBRIA (11/9/2026) ────────────────────
   Scelta dall'utente dopo le prove in `/anteprima/apertura-tono.html`: sei
   punti piccoli nei colori delle aree, i tasselli del marchio che salgono
   ognuno dal punto della sua area, e il sipario che sfuma. Nessuno schermo
   colorato: il colore sta già nella composizione, un secondo lampo era troppo.
   ⚠️ Alla prima visita i tasselli e la dicitura sono SPENTI DAL PRIMO DISEGNO
   (`k-anima` lo mette lo script in testa, mu-plugin `kreita-sipario`): se no il
   marchio intero si vede per un attimo, sparisce e si ricompone. Resta accesa
   la luce, così nel quarto di secondo prima dello script non c'è un navy morto.
   ⚠️ Lo script scrive l'opacità in linea, che batte queste regole senza bisogno
   di forzature. */
html.k-anima #k-curtain .k-tassello,
html.k-anima #k-curtain .k-dicitura{opacity:0}
html.k-anima #k-curtain .k-luce{opacity:1;transform:scale(1)}
#k-curtain .k-punto{position:fixed;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;
  opacity:0;pointer-events:none}
/* ⚠️⚠️ LA RETE DI SICUREZZA CHE NON DIPENDE DAL JAVASCRIPT. Il sipario lo toglie
   `home.js`: se lo script non arriva o si rompe prima, la tenda resterebbe sopra
   la pagina per sempre (con `k-anima`, per giunta, vuota). Dopo 6 s sfuma da
   sola e smette di prendere i clic. Con lo script in ordine non scatta mai:
   il sipario viene tolto dalla pagina molto prima. */
html.k-anima #k-curtain{animation:kSiparioVia .5s ease 6s forwards}
@keyframes kSiparioVia{to{opacity:0;visibility:hidden;pointer-events:none}}

/* ==========================================================================
   LA BARRA «FOLLOW US» FINIVA SOPRA IL CONTENUTO
   ⚠️⚠️ Misurato il 31/8/2026 a 820px su hosting, cloud aziendale e l'elenco
   dei lavori: la barra di Ohio (`ul.elements-bar`, `position:fixed`, a 27px
   dal bordo) si sovrapponeva al contenuto di 54px sulle pagine a tutta
   larghezza e di 10px sull'elenco. Non e' una cosa di una pagina sola: e' di
   tutte, e si vede appena la gabbia da 1192 smette di avere margine ai lati.
   ⚠️⚠️ La soglia e' 1400, e ci si arriva coi numeri misurati, non a occhio: la
   gabbia e' larga 1240 e sta in mezzo, quindi il suo bordo destro cade a
   (schermo + 1240) / 2; la barra e' larga 56 e sta a 20 dal bordo, quindi
   comincia a schermo - 76. Perche' non si tocchino serve schermo >= 1392.
   Primo tentativo a 1320: a 1366 si toccavano ancora di 13px — la barra e'
   larga 56, non 27 come dice il suo `right`.
   ⚠️ Nascondere e non spostare: quei collegamenti stanno anche nel piede, e
   sono gli stessi. Spostandola dentro la gabbia diventerebbe un elemento in
   piu' che copre il testo un po' piu' in la'.
   ========================================================================== */
@media (max-width:1399px){
  ul.elements-bar{display:none !important}
}

/* ==========================================================================
   L'ARANCIONE DI OHIO, SPENTO UNA VOLTA SOLA PER TUTTO IL SITO
   ⚠️⚠️ Non era scritto in nessuna regola: nessuna delle 375 regole con
   `:hover` di una pagina contiene un arancione. Passa dalle VARIABILI del
   tema, che restano quelle di serie ovunque:
     --clb-button-color            #fe5000
     --clb-button-hover-color      #ed6b1e   ← l'hover che si continuava a vedere
     --clb-border-color            #fe5000
     --clb-video-button-color      #fe5000
     --clb-paginator-button-hover-color #fe5000
     --clb-header-border-color     #fe5000
     --clb-sticky-header-border-color #fe5000
   ⚠️ Finora si correggevano SOLO dentro i blocchi delle pagine prodotto
   (`.k-ho` in hosting.css, `.k-pv` in prova-cloud.css, audit.css, cloud.css).
   Dove quei blocchi non arrivano — home, elenco dei lavori, schede progetto,
   pagine Elementor, moduli, paginatori — l'arancione tornava fuori.
   ⚠️⚠️ Si dichiarano su `body` e non su `:root`: le variabili si RISOLVONO
   dove sono dichiarate, e `--accent`, `--accent-dark` e `--ac` stanno su
   `body`. Messe su `:root` cadrebbero sul ripiego e non seguirebbero piu' il
   colore dell'area — su /hosting/, dove `--ac` e' verde acqua, tornerebbero
   rosse. Le regole di pagina, che stanno piu' in basso nell'albero, vincono
   comunque su queste.
   ⚠️ I tre «border» NON diventano rossi: sono filetti, non accenti. Un filetto
   del colore dell'area e' un altro modo di sbagliare, solo meno acceso.
   ========================================================================== */
body{
  --clb-button-color:var(--ac,var(--accent,#131C2E));
  /* ⚠️⚠️ L'hover si CALCOLA, non si prende da `--acd`. Misurato: su /hosting/ e
     su /analizza-il-tuo-sito/ `--acd` vale esattamente quanto `--ac`
     (#0F766E), quindi un hover costruito su quella variabile non cambia
     niente e il bottone sembra morto. Con `color-mix` viene sempre una
     versione piu' scura, qualunque sia il colore dell'area. */
  --clb-button-hover-color:color-mix(in srgb, var(--ac,var(--accent,#131C2E)) 84%, #000);
  --clb-video-button-color:var(--ac,var(--accent,#131C2E));
  --clb-paginator-button-hover-color:var(--ac,var(--accent,#131C2E));
  --clb-border-color:rgba(19,28,46,.14);
  --clb-header-border-color:rgba(255,255,255,.10);
  --clb-sticky-header-border-color:rgba(255,255,255,.10);
}

/* ⚠️⚠️ IL BANNER DEI COOKIE ERA L'ARANCIONE PIU' GRANDE DEL SITO, e non si
   vedeva in nessuno dei nostri controlli perche' negli scatti lo togliamo
   sempre: tre bottoni `#F56E28` su fondo nero, su OGNI pagina, alla prima
   visita di chiunque.
   ⚠️ I valori nel database di Complianz sono gia' stati corretti, ma il
   plugin serve un FOGLIO GENERATO (`uploads/complianz/css/banner-1-optin.css`)
   e i colori veri stanno nella tabella `cmplz_cookiebanners`: il 2/9 sono
   stati messi li' (bianco per le due scelte, blu del sito per il testo) e il
   foglio e' stato rigenerato con `generate_css()`. Questa regola non serve
   piu' a correggere, serve a NON far tornare l'arancione se un domani il
   foglio si rigenera da valori vecchi: dice la stessa cosa del database.
   ⚠️ Accetta e rifiuta restano dello STESSO colore e della stessa misura: e'
   un requisito, non una scelta grafica. */
#cmplz-cookiebanner-container .cmplz-btn.cmplz-accept,
#cmplz-cookiebanner-container .cmplz-btn.cmplz-deny{
  background-color:#FFFFFF !important;border-color:#FFFFFF !important;color:#131C2E !important}
#cmplz-cookiebanner-container .cmplz-btn.cmplz-accept:hover,
#cmplz-cookiebanner-container .cmplz-btn.cmplz-deny:hover{
  background-color:#E7EAEF !important;border-color:#E7EAEF !important;color:#131C2E !important}
#cmplz-cookiebanner-container .cmplz-btn.cmplz-view-preferences,
#cmplz-cookiebanner-container .cmplz-btn.cmplz-save-preferences{
  background-color:transparent !important;border-color:#5A6577 !important;color:#FFFFFF !important}
#cmplz-cookiebanner-container .cmplz-btn.cmplz-view-preferences:hover,
#cmplz-cookiebanner-container .cmplz-btn.cmplz-save-preferences:hover{
  background-color:rgba(255,255,255,.10) !important;border-color:#8A93A3 !important}

/* ==========================================================================
   L'ANTEPRIMA DELL'INTERFACCIA sulle pagine servizio
   ⚠️ Testo a sinistra e anteprima a destra: sotto al testo, a tutta larghezza,
   l'immagine finiva sotto la piega e chi leggeva i punti non li vedeva
   accanto alla cosa che nominano.
   ⚠️ La sezione e' appesa dopo lo shortcode e nasce a tutta larghezza dentro
   `.elementor-shortcode`: la gabbia se la fa qui.
   ⚠️ L'immagine ha un'ombra e un angolo tondo ma NESSUNA cornice di apparecchio:
   non e' una fotografia di un computer, e' il disegno di una schermata. Una
   finta finestra di browser la farebbe sembrare uno scatto vero, che e' proprio
   quello che non deve sembrare.
   ========================================================================== */
/* ⚠️⚠️ FASCIA CON UN FONDO SUO, e non una sezione bianca come le altre.
   Misurato: la pagina del servizio sta su una griglia a due colonne e il suo
   testo comincia a **627**; questa sezione sta sulla gabbia del sito e comincia
   a **124**. Nessuna delle due misure e' sbagliata, ma una sotto l'altra il
   salto di mezzo schermo si legge come un errore di allineamento. Col fondo
   diverso si legge per quello che e': un'altra sezione, con la sua gabbia.
   ⚠️ Il filetto in cima non serve piu': lo stacco lo fa il colore. */
/* ⚠️ Niente fascia a tutta pagina e niente gabbia propria: la sezione ora sta
   DENTRO la colonna del servizio, quindi l'allineamento e' gia' quello della
   pagina. Un fondo a tutta larghezza qui dentro taglierebbe la colonna a meta'. */
.k-sa{border-top:1px solid rgba(19,28,46,.12);margin-top:clamp(2.4rem,4vw,3.4rem);
  padding:clamp(2rem,3.4vw,3rem) 0 0}
/* ⚠️ Una colonna sola: l'immagine sta fra le linguette e i punti, e prende
   tutta la larghezza che la colonna del servizio le lascia. */
.k-sa__in{display:block}
.k-sa__figure{margin-top:1.2rem}
.k-sa__sotto-fig{margin-top:1.2rem}
/* ⚠️ I punti su due colonne quando c'e' spazio: sotto un'immagine larga, tre
   righe piene tutte una sotto l'altra facevano una colonna di testo lunga e
   sottile che nessuno lega piu' all'immagine. */
@media (min-width:52rem){
  .k-sa__voci{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
}
.k-sa__eti{margin:0 0 .5rem !important;font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ac,#C23A8E)}
.k-sa__h2{font-family:var(--k-display,"Space Grotesk",sans-serif) !important;font-weight:700;
  font-size:clamp(1.5rem,2.6vw,2.05rem) !important;letter-spacing:-.03em;line-height:1.12;
  margin:0 0 .7rem !important;color:#131C2E !important}
.k-sa__sotto{margin:0 !important;font-size:15px;line-height:1.6;color:#3A4555}

/* l'elenco: gli stessi numeri dei pallini sull'immagine */
/* ⚠️⚠️ `[hidden]` DA SOLO NON BASTA: la riga qui sotto mette `display:grid`
   sulle liste, e una dichiarazione di `display` batte il `display:none`
   implicito dell'attributo. E' lo stesso inciampo gia' visto sui contenitori
   di Ohio: si scrive esplicito. */
.k-sa [hidden]{display:none !important}

/* le linguette delle schermate */
.k-sa__ling-barra{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.5rem}
.k-sa__ling{font:inherit;font-size:12.5px;line-height:1.2;padding:.5rem .8rem;cursor:pointer;
  border:1px solid rgba(19,28,46,.14);background:#fff;color:#5A6577;border-radius:99px;
  transition:background .2s,color .2s,border-color .2s}
.k-sa__ling:hover{border-color:rgba(19,28,46,.3);color:#131C2E}
.k-sa__ling.-on{background:var(--ac,#C23A8E);border-color:var(--ac,#C23A8E);color:#fff;font-weight:600}

.k-sa__voci{list-style:none;margin:1.4rem 0 0 !important;padding:0;display:grid;gap:.75rem}
.k-sa__voci li{margin:0}
/* ⚠️ La voce e' un bottone a tutta riga: si passa col mouse, si raggiunge col
   tasto di tabulazione e si tocca col dito. Sta allineata a sinistra e non
   sembra un bottone, perche' resta testo da leggere. */
/* ⚠️ Padding SIMMETRICO: era `.35rem .5rem .35rem 0`, cioe' zero a sinistra e
   otto a destra, e il riquadro che compare al passaggio del mouse risultava
   spostato rispetto al testo che contiene. */
.k-sa__voce{display:grid;grid-template-columns:22px 1fr;gap:.7rem;align-items:start;width:100%;
  font:inherit;font-size:14px;line-height:1.5;color:#3A4555;text-align:left;cursor:pointer;
  background:#fff;border:1px solid transparent;padding:.7rem .8rem;border-radius:11px;
  transition:border-color .18s,box-shadow .22s,color .18s,translate .22s}

/* ⚠️⚠️ Al passaggio del mouse la voce si ALZA e prende un bordo, invece di
   accendersi un fondo grigino. Il fondo tenue di prima — `rgba(19,28,46,.045)`
   su bianco — non si leggeva come una scelta: si leggeva come una sbavatura, e
   su tre riquadri affiancati sembrava che uno fosse sporco. */
.k-sa__voce:hover{color:#131C2E;border-color:rgba(19,28,46,.16);
  box-shadow:0 10px 22px -14px rgba(9,14,24,.4);translate:0 -2px}
.k-sa__voce.-on{color:#131C2E;border-color:var(--ac,#C23A8E);translate:0 -2px;
  box-shadow:0 12px 26px -14px color-mix(in srgb, var(--ac,#C23A8E) 55%, transparent)}
.k-sa__voce:focus-visible{outline:2px solid var(--ac,#C23A8E);outline-offset:2px}

/* ⚠️⚠️ IL NUMERO A RIPOSO ERA ILLEGGIBILE: bianco su un grigio al 16 per cento,
   misurato **1,3 a 1**. Adesso a riposo e' inchiostro su grigio chiaro (4,8 a
   1) e si colora solo quando la voce e' accesa. */
.k-sa__voce b{width:22px;height:22px;border-radius:50%;background:rgba(19,28,46,.09);color:#5A6577;
  font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:11.5px;font-weight:700;
  display:grid;place-items:center;margin-top:1px;transition:background .18s,color .18s,scale .18s}
.k-sa__voce:hover b{background:rgba(19,28,46,.16);color:#131C2E}
.k-sa__voce.-on b{background:var(--ac,#C23A8E);color:#fff;scale:1.12}

.k-sa__figure{position:relative}
/* ⚠️⚠️ `overflow:clip` sulla figura: senza, l'immagine ingrandita esce dai
   bordi arrotondati e copre il testo accanto. `clip` e non `hidden`, che
   farebbe della figura un contenitore di scorrimento. */
.k-sa__fig{margin:0 !important;position:relative;overflow:clip;border-radius:14px}
.k-sa .k-sa__img{width:100%;height:auto;display:block;border-radius:14px;
  box-shadow:0 40px 80px -50px rgba(9,14,24,.55);border:1px solid rgba(19,28,46,.10);
  transition:transform .5s cubic-bezier(.2,.8,.2,1)}
/* il pallino acceso: piu' grande e con un alone, cosi' si vede dov'e' finito
   l'occhio anche mentre l'immagine si muove */
.k-sa__pt.-on{scale:1.18;box-shadow:0 0 0 4px rgba(255,255,255,.9),0 0 0 10px rgba(194,58,142,.28),
  0 8px 18px -6px rgba(9,14,24,.6)}
.k-sa__pt.-on .k-sa__fum{opacity:1;visibility:visible}
/* ⚠️⚠️ Mentre l'immagine e' avvicinata GLI ALTRI PALLINI SPARISCONO. Sono
   piazzati in percentuale sulla FIGURA, non sull'immagine: appena l'immagine si
   ingrandisce restano fermi e smettono di puntare la cosa che nominano —
   diventano tre numeri appoggiati a caso. Quello acceso invece resta giusto,
   perche' l'ingrandimento parte esattamente da lui. */
.k-sa__fig:has(.k-sa__pt.-on) .k-sa__pt:not(.-on){opacity:0;pointer-events:none}
.k-sa__pt{transition:opacity .3s,scale .25s,box-shadow .25s}
@media (prefers-reduced-motion:reduce){
  .k-sa .k-sa__img{transition:none}
  .k-sa__voce,.k-sa__voce b{transition:none}
}

/* ⚠️ I pallini sono BOTTONI: si raggiungono col tasto di tabulazione e il
   fumetto esce anche col fuoco, non solo col mouse. Su un dito il tocco da'
   il fuoco, quindi funzionano anche sul telefono. */
.k-sa__pt{position:absolute;translate:-50% -50%;width:26px;height:26px;padding:0;border:0;
  border-radius:50%;background:var(--ac,#C23A8E);color:#fff;cursor:pointer;
  box-shadow:0 0 0 4px rgba(255,255,255,.85),0 6px 14px -6px rgba(9,14,24,.6)}
.k-sa__pt i{font-style:normal;font-family:var(--k-display,"Space Grotesk",sans-serif);
  font-size:12px;font-weight:700;line-height:26px;display:block}
.k-sa__fum{position:absolute;left:50%;bottom:calc(100% + 12px);translate:-50% 0;width:max-content;
  max-width:240px;background:#131C2E;color:#fff;font-size:12.5px;line-height:1.45;
  padding:.6rem .75rem;border-radius:9px;text-align:left;white-space:normal;
  opacity:0;visibility:hidden;transition:opacity .18s;pointer-events:none;z-index:3}
.k-sa__fum::after{content:"";position:absolute;top:100%;left:50%;translate:-50% 0;
  border:6px solid transparent;border-top-color:#131C2E}
.k-sa__pt:hover .k-sa__fum,.k-sa__pt:focus-visible .k-sa__fum,.k-sa__pt:focus .k-sa__fum{
  opacity:1;visibility:visible}
.k-sa__sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ⚠️ Sotto i 1000px si impila e i PALLINI SPARISCONO: su una immagine larga
   350px un pallino da 26 ne copre un tredicesimo e il fumetto non ci sta.
   L'elenco numerato resta, ed e' li' che l'informazione vive davvero. */
@media (max-width:1000px){
  .k-sa__in{grid-template-columns:1fr;padding:0 20px}
  .k-sa__pt{display:none}
}

/* ⚠️ Il richiamo dell'anteprima: staccato dai punti, e la riga sotto spiega che
   cosa succede premendo — «demo» da solo non dice se e' un video, una prova o
   una telefonata. */
.k-sa__cta{margin-top:1.6rem;display:flex;flex-wrap:wrap;align-items:center;gap:.7rem 1rem}
.k-sa__cta-n{font-size:13px;line-height:1.45;color:#5A6577;max-width:30ch}

/* ⚠️ L'effetto del cambio: chi esce sfuma e scende appena, chi entra sale.
   I tempi stanno qui e non nello script, cosi' `prefers-reduced-motion` li
   spegne in un posto solo. */
.k-sa__fig,.k-sa__voci{transition:opacity .42s ease,translate .42s cubic-bezier(.2,.8,.2,1)}
.k-sa__fig.-esce,.k-sa__voci.-esce{opacity:0;translate:0 8px;transition-duration:.26s}
.k-sa__fig.-entra,.k-sa__voci.-entra{opacity:0;translate:0 -10px;transition:none}

/* ⚠️⚠️ IL BOTTONE DELLA DEMO PRENDE IL COLORE DELL'AREA. Di serie `.k-btn-a` qui
   usciva NAVY con il testo ROSA, mentre la linguetta accesa sopra e' magenta
   con il bianco: due trattamenti diversi per i due comandi principali della
   stessa sezione, a dieci centimetri l'uno dall'altro.
   ⚠️ Bianco su `#C23A8E` fa 4,9 a 1, misurato: passa. Il passaggio del mouse
   si CALCOLA piu' scuro, che e' la stessa regola del resto del sito — cosi'
   funziona anche sulle aree dove la variabile scura vale quanto la chiara. */
.k-sa .k-sa__cta .k-btn-a{background:var(--ac,#C23A8E) !important;
  border-color:var(--ac,#C23A8E) !important;color:#fff !important}
.k-sa .k-sa__cta .k-btn-a:hover{
  background:color-mix(in srgb, var(--ac,#C23A8E) 84%, #000) !important;
  border-color:color-mix(in srgb, var(--ac,#C23A8E) 84%, #000) !important;color:#fff !important}

/* ══════════════════════════════════════════════════════════════════════════
   LA SECONDA RIGA DI FILTRI: «CONSEGNATO» (3/9/2026)
   Le sei aree dicono di che mestiere è il lavoro; questa dice che cosa se n'è
   portato via il cliente — un marchio, un sito, dei biglietti da visita.
   ⚠️ Riusa la classe `.k-lav-filtri`, quindi lo stile dei bottoni è già
   quello: qui si corregge solo lo STACCO. La riga porta 96px di margine sopra
   e 48 sotto, misura giusta per una riga sola in mezzo alla pagina — ma fra
   due righe consecutive facevano **96px di vuoto**, e le due sembravano due
   sezioni diverse invece che due modi di guardare la stessa cosa.
   ⚠️ Si stringe SOLO la seconda (`.-tipi`): la prima tiene il suo respiro
   rispetto a quello che ha sopra.
   ══════════════════════════════════════════════════════════════════════════ */
.k-lav-filtri.-tipi{margin-top:1.1rem}

/* ══════════════════════════════════════════════════════════════════════════
   LE SOTTOCATEGORIE, CHE ESCONO SOLO QUANDO SI SCEGLIE UN'AREA (9/9/2026)
   Stessa riga di prima, ma non sta sempre in pagina: compare sotto l'area
   scelta e mostra soltanto le tipologie di quell'area.
   ⚠️⚠️ `[hidden]` DA SOLO NON BASTA: `display:flex` batte il `display:none`
   implicito dell'attributo, e le righe resterebbero tutte in pagina. E' lo
   stesso inciampo gia' visto sulle voci delle anteprime e sui contenitori
   Ohio. Serve la regola esplicita qui sotto.
   ⚠️ Il filo sotto lo tiene l'ULTIMA riga visibile: si toglie a quella in cima
   solo quando una sottocategoria e' davvero aperta — `:not([hidden])`, se no
   sparirebbe anche a riga chiusa.
   ⚠️ `~` e non `+`: fra la riga in cima e quella aperta possono esserci le
   altre righe nascoste, e l'adiacente non le scavalcherebbe.
   ══════════════════════════════════════════════════════════════════════════ */
.k-lav-filtri.-sotto[hidden]{display:none !important}
.k-lav-filtri.-sotto{margin-top:.9rem;gap:.3rem .15rem;padding-bottom:0;border-bottom:0;
  animation:kSottoEntra .26s cubic-bezier(0,0,.25,1) both}
@keyframes kSottoEntra{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}
.k-lav-filtri:not(.-sotto):has(~ .k-lav-filtri.-sotto:not([hidden])){
  border-bottom:0;padding-bottom:0;margin-bottom:0}

/* ⚠️⚠️ NON SI VESTONO COME LE AREE, ed è la cosa che dice come si usano.
   Sopra sono pasticche maiuscole col bordo tondo: si sceglie UN posto dove
   guardare. Qui sono CASELLE DA SPUNTARE, minuscole e senza bordo attorno:
   se ne accendono quante se ne vuole (rollup **e** magliette). Due gesti
   diversi non possono avere lo stesso vestito, o si prova a premerne una
   aspettandosi che spenga l'altra.
   ⚠️ Il quadratino non è il pallino delle aree allungato: è proprio un altro
   segno. La spunta è disegnata dentro, non è un carattere — un ✓ tipografico
   cambia forma e allineamento da un sistema all'altro.
   ⚠️ Il conteggio qui si vede SEMPRE, non solo al passaggio: dovendo
   comporre più voci, sapere quante schede porta ognuna è quello che guida la
   scelta. */
.k-home .elementor .k-lav-filtri.-sotto button.k-lav-f{
  font-family:var(--body);font-weight:600;font-size:13px;letter-spacing:0;
  text-transform:none;color:var(--muted);background:none;
  border:0;border-radius:8px;padding:.32rem .6rem}
.k-home .elementor .k-lav-filtri.-sotto button.k-lav-f:hover{
  color:var(--ink);background:color-mix(in srgb,var(--kp) 9%,transparent);border-color:transparent}
.k-home .elementor .k-lav-filtri.-sotto button.k-lav-f[aria-pressed="true"]{
  color:var(--ink);background:color-mix(in srgb,var(--kp) 12%,transparent);
  border-color:transparent}
.k-lav-filtri.-sotto .k-lav-f::before{
  width:15px;height:15px;border-radius:5px;flex:none;margin-right:.5rem;
  background:transparent;border:1.5px solid var(--line-strong);
  background-repeat:no-repeat;background-position:center;background-size:10px 10px;
  transition:background-color .2s,border-color .2s}
.k-lav-filtri.-sotto .k-lav-f:hover::before{width:15px;border-color:var(--kp)}
.k-lav-filtri.-sotto .k-lav-f[aria-pressed="true"]::before{
  width:15px;background-color:var(--kp);border-color:var(--kp);
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.6l3.2 3.2L13 4.8'/%3E%3C/svg%3E")}
/* il numero non si apre e chiude: sta li' */
.k-lav-filtri.-sotto .k-lav-f i{grid-template-columns:1fr;opacity:.55;margin-left:.4rem}
.k-lav-filtri.-sotto .k-lav-filtri__e{align-self:center}
@media (prefers-reduced-motion:reduce){
  .k-lav-filtri.-sotto{animation:none}
  .k-lav-filtri.-sotto .k-lav-f::before{transition:none}
}

/* ══════════════════════════════════════════════════════════════════════════
   IL BOTTONE DEI FILTRI, SOLO SUL TELEFONO (9/9/2026)
   A 390px le sette aree si impilano una per riga e le dieci tipologie sotto:
   uno schermo intero di filtri prima del primo lavoro. Qui si chiudono dietro
   un bottone che dice che cosa c'è dentro.
   ⚠️ Da 861px in su il bottone non c'è e le righe sono sempre aperte: è la
   stessa soglia a cui la griglia dei lavori passa a una colonna.
   ⚠️ Il bottone porta il nome dell'area scelta, non solo la parola «Filtri»:
   una griglia filtrata senza niente che lo dica sembra un portfolio a metà.
   ══════════════════════════════════════════════════════════════════════════ */
.k-lav-apri{display:none}
@media (max-width:860px){
  .k-lav-barra{margin:4rem 0 2rem;padding-bottom:1.3rem;border-bottom:1px solid var(--line)}
  .k-home .elementor .k-lav-apri,.k-lav-apri{display:inline-flex;align-items:center;gap:.6rem;
    font-family:var(--display);font-weight:700;font-size:12.5px;letter-spacing:.07em;
    text-transform:uppercase;color:var(--ink);background:none;
    border:1px solid var(--line);border-radius:99px;padding:.6rem 1.1rem;cursor:pointer}
  .k-lav-barra.-scelto .k-lav-apri{border-color:var(--line-strong)}
  /* le tre righine: lo stesso segno del panino in cima al sito */
  .k-lav-apri__i{width:15px;height:11px;flex:none;position:relative}
  .k-lav-apri__i::before,.k-lav-apri__i::after{content:"";position:absolute;left:0;right:0;height:1.6px;
    border-radius:2px;background:currentColor}
  .k-lav-apri__i::before{top:0;box-shadow:0 4.7px 0 0 currentColor}
  .k-lav-apri__i::after{bottom:0;right:4px}
  .k-lav-apri__q{min-width:19px;height:19px;border-radius:99px;display:grid;place-items:center;
    background:var(--ink);color:#fff;font-size:11px;letter-spacing:0}
  .k-lav-apri__q[hidden]{display:none}
  /* ⚠️ `display:none` e non `hidden`: la riga di sotto ha una sua regola
     `display:flex` e vincerebbe sull'attributo. Stesso inciampo di sempre. */
  .k-lav-righe{display:none}
  .k-lav-barra.-aperto .k-lav-righe{display:block;
    animation:kSottoEntra .24s cubic-bezier(0,0,.25,1) both}
  .k-lav-barra .k-lav-filtri{margin:1.2rem 0 0;padding-bottom:0;border-bottom:0}
  .k-lav-barra .k-lav-filtri.-sotto{margin-top:.9rem;
    padding-top:.9rem;border-top:1px solid var(--line)}
}
@media (max-width:860px) and (prefers-reduced-motion:reduce){
  .k-lav-barra.-aperto .k-lav-righe{animation:none}
}
/* ⚠️ Il filo sotto lo tiene solo l'ultima riga: due righe sottolineate una
   sopra l'altra disegnano una tabella che non c'è. */
.k-lav-filtri:has(+ .k-lav-filtri.-tipi){border-bottom:0;padding-bottom:0;margin-bottom:1.1rem}

/* ══════════════════════════════════════════════════════════════════════════
   «SPESSO RICHIESTI INSIEME» (prova 40, approvata il 29/10/2026): tre tessere
   al posto dell'elenco «Nell'area X c'è anche», su tutte le pagine servizio
   col campo `kreita_vicini` (servizio.php, kreita_sv_vicini). Ogni tessera ha
   il colore della SUA area (--c, --cd), scritto dal PHP.
   ⚠️ Niente più riga nera sopra (utente: «non ti sembra troppo spazio? invece
   che riga altro?»): il blocco si apre con l'occhiello colorato, come «Le
   attività». Dove il campo è vuoto resta l'elenco di prima con la sua riga.
   ══════════════════════════════════════════════════════════════════════════ */
.k-sv__fratelli.-vicini{margin-top:clamp(3.4rem,5vw,4.6rem);padding-top:0;border-top:0}
.k-sv__fratelli.-vicini>.k-sv__oc{display:inline-block;margin-bottom:0}
.k-sv__vicini{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.4rem}
.k-home .elementor a.k-sv__vc,a.k-sv__vc{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;position:relative;
  padding:1.15rem 1.2rem 1.25rem;border:1px solid rgba(19,28,46,.12);border-radius:16px;background:#fff;
  color:#131C2E;text-decoration:none!important;
  transition:border-color .25s,transform .3s var(--molla,ease),box-shadow .3s}
a.k-sv__vc:hover,a.k-sv__vc:focus-visible{border-color:var(--c);transform:translateY(-3px);box-shadow:0 14px 30px -20px rgba(19,28,46,.45)}
.k-sv__vi{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:10px;margin-bottom:.45rem;
  color:var(--cd);background:color-mix(in srgb,var(--c) 12%,#fff)}
.k-sv__vi .k-ic{display:grid;place-items:center;line-height:0}
.k-sv__vi svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.k-sv__va{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--cd)}
.k-sv__vn{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:1.08rem;font-weight:700;letter-spacing:-.02em;line-height:1.25}
.k-sv__vd{font-size:14px;line-height:1.5;color:#4A5568;padding-right:1.4rem;margin-top:.15rem}
.k-sv__vf{position:absolute;right:1.1rem;bottom:1rem;color:var(--cd);font-size:18px;transition:transform .3s var(--molla,ease)}
a.k-sv__vc:hover .k-sv__vf{transform:translateX(4px)}
.k-home .elementor .k-sv__fratelli.-vicini .k-sv__coda{margin-top:1.6rem!important}
/* sotto i 900 le tessere diventano righe: icona a sinistra, il resto a destra */
@media (max-width:900px){
  .k-sv__vicini{grid-template-columns:1fr}
  .k-home .elementor a.k-sv__vc,a.k-sv__vc{display:grid;grid-template-columns:2.4rem minmax(0,1fr);column-gap:1rem;row-gap:.1rem;padding:1rem 2.8rem 1rem 1rem}
  .k-sv__vi{grid-row:1 / 4;margin:0;align-self:center}
  .k-sv__vd{padding-right:0}
  .k-sv__vf{bottom:auto;top:50%;transform:translateY(-50%)}
  a.k-sv__vc:hover .k-sv__vf{transform:translate(4px,-50%)}
}
@media (prefers-reduced-motion:reduce){ a.k-sv__vc,.k-sv__vf{transition:none} a.k-sv__vc:hover{transform:none} }

/* ══════════════════════════════════════════════════════════════════════════
   LA PAGINA CONTATTI (prova 41, approvata il 29/10/2026; Word: «pagina
   contatti da rivedere»). Utente: «mi piace però farei prima parte colorata
   come portfolio, poi sotto ok dalla scelta delle aree».
   1. L'apertura È quella del portfolio: la sezione ha lo stesso id
      `#portfolio-testa` (sfumatura dei sei colori qui sopra in questo foglio,
      filo e misure in chisiamo.css, che si carica perché c'è `kreita_filo`).
      Qui solo quello che lì sta sotto `.k-pag-lavori`: testo bianco e altezza.
   2. Le tessere delle aree sono il primo passo del modulo
      (`[kreita_contatti_scelta]`, aree.php), piccole: 4 per riga, 2 sotto i 900.
   3. «Indicazioni» sotto le sedi; il riquadro alto quanto il suo contenuto
      (allungato fino al fondo del modulo spargeva le voci con vuoti da 100px).
   4. Sul telefono i recapiti prima del modulo, senza gli orari.
   5. Niente «Hai un progetto in mente? Raccontacelo.» nel piede: qui la mail
      c'è già due volte.
   ══════════════════════════════════════════════════════════════════════════ */
.k-pag-contatti #portfolio-testa,
.k-pag-contatti #portfolio-testa :is(h1,h2,h3,h4,p,span,b,strong,em,i,li,a,div),
.k-pag-contatti #portfolio-testa .elementor-widget-text-editor :is(b,strong,p,span,li,a){color:#fff}
.k-pag-contatti #portfolio-testa .k-kicker{color:#fff!important}
.k-pag-contatti #portfolio-testa{
  --k-aria:clamp(6rem,4.6vw,7.5rem);
  --k-riserva:min(31.5rem,calc(25.83vw + 11.63rem));
  display:flex;flex-direction:column;justify-content:center;
  min-height:calc(var(--k-riserva) + var(--k-aria)*2 + 117px);
  padding-top:calc(var(--k-aria) + 117px)!important;padding-bottom:var(--k-aria)!important}
@media (max-width:900px){ .k-pag-contatti #portfolio-testa{--k-aria:4.4rem;padding-top:calc(4.4rem + 118px)!important} }
@media (max-width:819px){ .k-pag-contatti #portfolio-testa{padding-top:calc(3.4rem + 98px)!important} }
.k-pag-contatti .k-cont-chiaro{padding-top:clamp(3.4rem,5vw,4.6rem)!important}
/* 2. il primo passo del modulo */
.k-ct-scelta{margin:0 0 2rem;padding:0 0 1.8rem;border-bottom:1px solid rgba(19,28,46,.1)}
.k-home .elementor .k-ct-scelta__t,.k-ct-scelta__t{margin:0 0 .9rem!important;font-family:var(--k-display,"Space Grotesk",sans-serif);font-weight:700;
  font-size:1.18rem;letter-spacing:-.02em;color:#131C2E!important}
.k-ct-scelta .k-sc{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;margin:0;padding:0}
.k-ct-scelta .k-sc__b{display:flex!important;flex-direction:column!important;justify-content:flex-start!important;align-items:flex-start;gap:.15rem;
  min-height:0!important;height:auto!important;margin:0!important;padding:.7rem .8rem .75rem!important;border-radius:12px!important;text-align:left;cursor:pointer;
  background:#fff!important;border:1px solid rgba(19,28,46,.14)!important;border-top:3px solid var(--c)!important;
  color:#131C2E!important;box-shadow:none!important;transform:none!important;transition:border-color .2s,background .2s}
.k-ct-scelta .k-sc__b > *{display:block!important;text-align:left!important;margin:0!important;width:auto!important}
.k-ct-scelta .k-sc__b b{font-family:var(--k-display,"Space Grotesk",sans-serif);font-size:.95rem!important;font-weight:700;color:#131C2E!important;line-height:1.2}
.k-ct-scelta .k-sc__b span{font-size:12.5px!important;line-height:1.35;color:#4A5568!important;opacity:1!important}
.k-ct-scelta .k-sc__b:hover{border-color:var(--c)!important}
/* ⚠️ il riempimento che sale (::after) delle tessere grandi qui copriva il testo */
.k-ct-scelta .k-sc__b::after{display:none!important}
.k-ct-scelta .k-sc__b[aria-pressed="true"]{background:color-mix(in srgb,var(--c) 10%,#fff)!important;border-color:var(--c)!important}
.k-ct-scelta .k-sc__b[aria-pressed="true"] b::after{content:" ✓";color:var(--c)}
.k-ct-scelta .k-sc__b:focus-visible{outline:2px solid var(--c);outline-offset:2px}
@media (max-width:900px){ .k-ct-scelta .k-sc{grid-template-columns:repeat(2,minmax(0,1fr))} }
/* 3. indicazioni e riquadro */
.k-home .elementor a.k-cinfo__mappa,a.k-cinfo__mappa{display:inline-flex;gap:.3rem;margin-top:.45rem;font-size:14px;font-weight:600;color:#fff!important;
  text-decoration:underline!important;text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.4)!important}
a.k-cinfo__mappa:hover{text-decoration-color:#fff!important}
.k-pag-contatti .k-cont-chiaro .k-cont-lato{align-self:flex-start}
.k-pag-contatti .k-cont-chiaro .k-cont-lato .elementor-widget-wrap{height:auto!important}
.k-pag-contatti .k-cinfo{height:auto!important;justify-content:flex-start!important}
/* 5. il piede senza la fascia «Hai un progetto in mente?» */
.k-pag-contatti .k-piede__alto{display:none!important}
/* 4. sul telefono i recapiti prima del modulo */
@media (max-width:767px){
  .k-pag-contatti .k-cont-chiaro .elementor-container{display:flex;flex-direction:column}
  .k-pag-contatti .k-cont-chiaro .k-cont-lato{order:-1;margin-bottom:2rem}
  /* gli orari restano anche qui (utente, 03/11/2026: «quando ci siamo, mettere i nostri orari») */
}

/* ══════════════════════════════════════════════════════════════════════════
   HOME, «RACCONTACI IL TUO PROGETTO.» (prova 45, approvata il 29/10/2026;
   utente: «nella home non mi piace sezione contatti»). Come /contatti/:
   a sinistra titolo e paragrafo e UN riquadro blu notte coi recapiti (widget
   472c900, stessa veste `.k-cinfo`, senza orari, coi social in fondo); a
   destra il modulo. Prima la colonna di sinistra era ~300px più lunga del
   modulo. ⚠️ Poi, utente: «scegli di cosa parliamo togli i riquadri…
   togli testo sotto raccontaci il tuo progetto così è più compatta»: in home
   niente tessere delle aree e niente paragrafo (widget 7797ae7 tolto; il
   testo è nella copia porto-45/elementor-247616-prima.json).
   ⚠️ Sul telefono prima il modulo, poi i recapiti: la colonna di sinistra
   diventa `display:contents` e i suoi pezzi si mettono in fila col modulo;
   così però perdono i 20px di rientro della colonna, rimessi a mano.
   ⚠️ Niente «Hai un progetto in mente? Raccontacelo.» nel piede della home:
   è la riga subito sotto questa sezione, con la stessa mail.
   ══════════════════════════════════════════════════════════════════════════ */
.home #contatti .k-cinfo{margin-top:2rem}
.home #contatti .k-cont-info{align-self:flex-start}
.k-cinfo__social .k-social{display:flex;gap:.6rem;margin:0}
.k-home .elementor .k-cinfo__social .k-social a,.k-cinfo__social .k-social a{border-color:rgba(255,255,255,.3)!important;color:#fff!important}
.k-cinfo__social .k-social a:hover{border-color:#fff!important}
.home .k-piede__alto{display:none!important}
@media (max-width:767px){
  .home #contatti > .elementor-container{display:flex;flex-direction:column}
  .home #contatti .k-cont-info,.home #contatti .k-cont-info > .elementor-widget-wrap{display:contents}
  .home #contatti .k-cont-form{order:1}
  .home #contatti .elementor-element-472c900{order:2;margin-top:2.4rem}
  .home #contatti .k-cont-info .elementor-element{padding-left:20px;padding-right:20px}
}
/* ⚠️ il blocco della scelta è un widget Elementor a sé: il suo margine sotto
   (20px) si sommava a quello della scelta */
.elementor-element-kct41sc{margin-bottom:0!important}
.elementor-element-kct41sc > .elementor-widget-container{margin:0!important}
/* in home le due sedi affiancate nel riquadro: una sotto l'altra la colonna
   di sinistra era ancora più lunga del modulo */
@media (min-width:768px){
  .home #contatti .k-cinfo{display:grid!important;grid-template-columns:1fr 1fr;column-gap:1.4rem}
  .home #contatti .k-cinfo > .k-cinfo__v:first-child,.home #contatti .k-cinfo > .k-cinfo__social{grid-column:1 / -1}
}
