#klroot .xlw{max-width:none!important}@media(min-width:901px){#klroot .xl{display:block;white-space:nowrap}}@media(max-width:900px){#klroot .xl+.xl:before{content:" "}} #klroot .wlg img{width:72%!important;max-width:none!important;height:clamp(44px,4.8vw,68px)!important;max-height:none!important;object-fit:contain} @media(max-width:760px){#klroot .wlg img{height:38px!important;width:78%!important}} #klroot #lrib{--ls:1;gap:0!important} #klroot #lrib a{display:flex!important;align-items:center;justify-content:center;flex:none;margin:0 clamp(26px,3vw,48px)!important;padding:0!important} #klroot #lrib img{width:calc(var(--w)*var(--ls))!important;height:calc(var(--h)*var(--ls))!important;max-width:none!important;max-height:none!important;object-fit:contain} @media(max-width:760px){#klroot #lrib{--ls:.72}#klroot #lrib a{margin:0 20px!important}} (function(){function fit(){[].forEach.call(document.querySelectorAll('#klroot .xlw'),function(el){el.style.fontSize='';if(innerWidthw+1){var fs=parseFloat(getComputedStyle(el).fontSize);el.style.fontSize=Math.floor(fs*w/m*0.98)+'px'}})}addEventListener('load',fit);addEventListener('resize',fit);setTimeout(fit,400);setTimeout(fit,2500);if(document.fonts)document.fonts.ready.then(fit)})();@media(max-width:900px){#klroot #fotografia .pgrid{grid-template-columns:minmax(0,1fr)!important}#klroot #fotografia .pgrid>*{min-width:0;max-width:100%}}#klroot h1,#klroot h2,#klroot h3,#klroot h4,#klroot .big,#klroot .claim p,#klroot .x-tt,#klroot .px-h1{text-wrap:balance}#klroot p,#klroot .lead,#klroot .body,#klroot .rgt,#klroot .hero-foot p,#klroot .it span,#klroot figcaption,#klroot .cap{text-wrap:pretty} html,body{margin:0;padding:0;background:#E4E3DB!important;color:#181818!important;overflow-x:hidden}html{margin-top:0!important}#wpadminbar{display:none!important}#klroot{position:relative;background:#E4E3DB;color:#181818}:root{--bg:#E4E3DB; --bg2:#DAD9D0; --ink:#181818; --brand:#A4845B; --brand-a:#907450; --brand-t:#69543A; --mut:#6E6A60; --line:rgba(24,24,24,.16); --line2:rgba(24,24,24,.09); --pad:clamp(20px,4vw,56px); --sec:clamp(64px,8.4vw,124px);}#klroot *{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:"Space Grotesk",sans-serif;font-weight:400; line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}#klroot a{color:inherit;text-decoration:none}#klroot img{display:block;max-width:100%}#klroot .mono{font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase; font-weight:400;color:var(--mut)}#klroot .mono.am{color:var(--brand-t)}#klroot .wrap{padding:0 var(--pad)}:root{--cols:minmax(0,1.08fr) minmax(0,.92fr);--hdrh:86px}#klroot .rv{opacity:0;transform:translateY(22px)}html.js #klroot .rv{transition:opacity 1s cubic-bezier(.2,.7,.3,1),transform 1s cubic-bezier(.2,.7,.3,1)}html.js #klroot .rv.in,html:not(.js) #klroot .rv{opacity:1;transform:none}#klroot .rv.d1{transition-delay:.07s}#klroot .rv.d2{transition-delay:.14s}#klroot .rv.d3{transition-delay:.21s}#klroot .rv.d4{transition-delay:.28s}#klroot .cur{position:fixed;top:0;left:0;width:7px;height:7px;border-radius:50%;background:var(--brand-t);z-index:9000; pointer-events:none;transform:translate3d(-50%,-50%,0);transition:opacity .3s,background .3s}#klroot .cur.off{opacity:0}#klroot .cring{position:fixed;top:0;left:0;width:34px;height:34px;border-radius:17px; border:1px solid rgba(24,24,24,.3);z-index:8995;pointer-events:none; transform:translate3d(-50%,-50%,0);will-change:transform,width,height; transition:background .35s,border-color .35s,opacity .3s}#klroot .cring span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--bg); font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase; opacity:0;transition:opacity .25s;white-space:nowrap}#klroot .cring.sm{border-color:var(--brand-t);background:rgba(164,132,91,.12)}#klroot .cring.lg{background:rgba(24,24,24,.92);border-color:transparent}#klroot .cring.lg span{opacity:1}#klroot .cring.txt{background:var(--ink);border-color:transparent}#klroot .rl{display:inline-block;overflow:hidden;position:relative;vertical-align:top}#klroot .rl i{display:block;font-style:normal;white-space:nowrap; transition:transform .58s cubic-bezier(.2,.85,.25,1)}#klroot .rl i+i{position:absolute;left:0;top:100%;width:100%}#klroot a:hover .rl i,#klroot a:focus-visible .rl i{transform:translateY(-100%)} @media(hover:none){#klroot a:active .rl i{transform:translateY(-100%)}}body.on-am #klroot .cring{border-color:rgba(24,24,24,.55)}body.on-am #klroot .cur{background:var(--ink)} @media(hover:none),(max-width:900px){#klroot .cur,#klroot .cring{display:none}}#klroot .rip{position:fixed;width:18px;height:18px;border-radius:50%;border:1px solid var(--brand-t); pointer-events:none;z-index:8980;opacity:.85;transform:translate(-50%,-50%) scale(.35); animation:rip .62s cubic-bezier(.2,.7,.3,1) forwards} @keyframes rip{to{transform:translate(-50%,-50%) scale(5);opacity:0}}#klroot a,#klroot button{-webkit-tap-highlight-color:transparent} @media(hover:none){#klroot .plist a:active,#klroot .prod .it:active,#klroot .wrow:active,#klroot .wlg:active,#klroot .pcta:active,#klroot .bar a:active,#klroot .wlg:active,#klroot nav.top a:active{opacity:.68;transition:opacity .1s}}#klroot .kale{position:fixed;inset:0;z-index:9400;display:grid;place-items:center;opacity:0;pointer-events:none; background:rgba(228,227,219,.92);transition:opacity .7s ease}#klroot .kale.on{opacity:1;pointer-events:auto;cursor:pointer}#klroot .kale .rose{position:relative;width:min(74vmin,660px);aspect-ratio:1;border-radius:50%;overflow:hidden}#klroot .kale .ly{position:absolute;transform-origin:50% 50%}#klroot .kale .l1{inset:0;animation:rot 36s linear infinite}#klroot .kale .l2{inset:15%;animation:rot 24s linear infinite reverse}#klroot .kale .l3{inset:32%;animation:rot 48s linear infinite}#klroot .kale .ly i{position:absolute;inset:0;transform-origin:50% 50%;mix-blend-mode:multiply}#klroot .kale .core{position:absolute;left:44%;top:44%;width:12%;height:12%;border-radius:50%; background:var(--brand-t);opacity:.85}#klroot .kale .lab{position:absolute;left:0;right:0;bottom:8vh;text-align:center;padding:0 var(--pad)}#klroot .kale .lab b{display:block;font-family:"Space Grotesk",sans-serif;font-size:clamp(24px,4.6vw,52px); line-height:1;letter-spacing:-.035em;font-weight:500;color:var(--ink);text-transform:none;margin-bottom:12px} @keyframes rot{to{transform:rotate(360deg)}} @media(prefers-reduced-motion:reduce){#klroot .kale .ly{animation:none}#klroot .rip{animation-duration:.01s}}#klroot .prog{position:fixed;top:0;left:0;right:0;height:2px;z-index:780;pointer-events:none}#klroot .prog i{display:block;height:100%;background:var(--brand);transform:scaleX(0);transform-origin:left}body.on-am #klroot .prog i{background:var(--ink)}#klroot .mskd{display:block;overflow:hidden;padding:.2em 0 .22em;margin:-.2em 0 -.22em}#klroot .mskd .msk{display:block}html.js #klroot .mskd .msk{transform:translateY(134%);transition:transform 1.05s cubic-bezier(.16,.84,.28,1)}html.js #klroot .rv.mskd{opacity:1;transform:none}html.js #klroot .mskd.in .msk{transform:none}html:not(.js) #klroot .mskd .msk{transform:none}html.js #klroot .rv .ph img,html.js #klroot .pmedia.rv img{transform:scale(1.07); transition:transform 1.5s cubic-bezier(.16,.84,.28,1)}html.js #klroot .rv.in .ph img,html.js #klroot .pmedia.rv.in img{transform:none}#klroot header{position:fixed;top:0;left:0;right:0;z-index:700;padding:0 var(--pad); height:var(--hdrh);box-sizing:border-box; display:flex;align-items:center;justify-content:space-between;mix-blend-mode:normal; transition:background .3s ease,border-color .3s ease}#klroot header.stuck{background:rgba(228,227,219,.92);backdrop-filter:blur(10px)}#klroot header:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px; background:var(--line2);opacity:0;transition:opacity .3s ease}#klroot header.stuck:after{opacity:1}#klroot header .mnav{display:none;align-items:center;gap:9px;background:none;border:0;cursor:pointer; padding:12px 0 12px 16px;color:var(--ink);font-family:"JetBrains Mono",monospace; font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:500}#klroot header .mnav i{width:20px;height:11px;position:relative;display:block;flex:none}#klroot header .mnav i:before,#klroot header .mnav i:after{content:"";position:absolute;left:0;right:0;height:1.5px; background:currentColor;transition:transform .35s cubic-bezier(.6,0,.2,1)}#klroot header .mnav i:before{top:0}#klroot header .mnav i:after{bottom:0}#klroot header .mnav.open i:before{transform:translateY(4.75px) rotate(45deg)}#klroot header .mnav.open i:after{transform:translateY(-4.75px) rotate(-45deg)}#klroot header .lg{display:flex;align-items:center;gap:12px}#klroot header .lg img{height:30px}#klroot header .meta{text-align:right;line-height:1.55;min-width:22ch}#klroot header .meta .d1{color:var(--brand-t);transition:color .3s}#klroot header .meta .d2{transition:color .3s}#klroot header .meta.sez .d1{font-weight:500}#klroot section[id],#klroot #hero{scroll-margin-top:calc(var(--hdrh) + 14px)}#klroot .menubtn{display:none}#klroot nav.top ul{display:flex;gap:26px;list-style:none;align-items:center}#klroot nav.top li{display:flex;align-items:center}#klroot nav.top a{font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase; color:var(--ink);position:relative;display:flex;align-items:center;line-height:1.15;padding:3px 0}#klroot nav.top a:after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:var(--brand-t); transform:scaleX(0);transform-origin:right;transition:transform .45s cubic-bezier(.6,0,.2,1)}#klroot nav.top a:hover:after{transform:scaleX(1);transform-origin:left}#klroot nav.top a.cta{color:var(--brand-t)}body.on-am #klroot nav.top a,body.on-am #klroot nav.top a.cta{color:var(--ink)}body.on-am #klroot nav.top a:after{background:var(--ink)}#klroot nav.top li.has{position:relative}#klroot nav.top{align-self:stretch;display:flex;align-items:center}#klroot nav.top ul{height:100%}#klroot nav.top li{height:100%}#klroot nav.top .sub{position:absolute;top:100%;left:-18px;min-width:288px;z-index:40; background:rgba(228,227,219,.97);backdrop-filter:blur(12px); border:1px solid var(--line);padding:10px 0; opacity:0;visibility:hidden;transform:translateY(-8px); transition:opacity .3s ease,transform .45s cubic-bezier(.2,.7,.3,1),visibility .3s}#klroot nav.top li.has:hover .sub,#klroot nav.top li.has:focus-within .sub{opacity:1;visibility:visible;transform:none}#klroot nav.top .sub a{display:flex;align-items:baseline;gap:12px;padding:11px 22px;white-space:nowrap; text-transform:none;letter-spacing:0;font-family:"Space Grotesk",sans-serif;font-size:14px; color:var(--ink);position:relative;line-height:1.2;transition:color .3s,transform .5s cubic-bezier(.33,0,.12,1)}#klroot nav.top .sub a:after{display:none}#klroot nav.top .sub a em{font-style:normal;font-family:"JetBrains Mono",monospace;font-size:10px; letter-spacing:.12em;color:var(--brand-t);flex:none;transition:color .3s}#klroot nav.top .sub a:before{content:"";position:absolute;inset:0;background:rgba(164,132,91,.16); transform:scaleX(0);transform-origin:var(--org,left);transition:transform .45s cubic-bezier(.6,0,.2,1)}#klroot nav.top .sub a:hover:before,#klroot nav.top .sub a.here:before{transform:scaleX(1)}#klroot nav.top .sub a:hover,#klroot nav.top .sub a.here{color:var(--brand-t);transform:translateX(5px)}body.on-am #klroot nav.top .sub a{color:var(--ink)}body.on-am #klroot header .meta{color:rgba(24,24,24,.6)}body.on-am #klroot header.stuck{background:rgba(170,139,98,.42)}body.on-am #klroot header:after{background:rgba(24,24,24,.18)}body.on-am #klroot .bar{background:rgba(164,132,91,.97);border-top-color:rgba(24,24,24,.2)}body.on-am #klroot .bar button{color:var(--ink)}body.on-am #klroot .bar a{background:var(--ink);color:var(--bg)}#klroot #hero{min-height:100svh;position:relative;display:flex;flex-direction:column;justify-content:center; padding:96px var(--pad) 58px;overflow:hidden}#klroot .grid-lines{position:absolute;inset:0;z-index:0;pointer-events:none}#klroot .grid-lines i{position:absolute;top:0;bottom:0;width:1px;background:var(--line2)}#klroot h1{font-size:clamp(40px,7.8vw,124px);line-height:.94;letter-spacing:-.04em;font-weight:500;text-wrap:balance; position:relative;z-index:2;max-width:16ch}#klroot h1 .am{color:var(--brand-a)}#klroot h1 .ln{display:block;overflow:hidden;padding:.16em 0 .22em;margin:-.16em 0 -.22em}#klroot h1 .ln>span{display:block;transform:translateY(142%)}html.js #klroot #hero.go h1 .ln>span{transform:none;transition:transform 1.15s cubic-bezier(.16,.84,.28,1)}html.js #klroot #hero.go h1 .ln:nth-child(2)>span{transition-delay:.09s}html.js #klroot #hero.go h1 .ln:nth-child(3)>span{transition-delay:.18s}html:not(.js) #klroot h1 .ln>span{transform:none}#klroot .hero-foot{position:relative;z-index:2;margin-top:clamp(18px,2.3vw,32px);display:flex;justify-content:space-between; align-items:flex-end;gap:40px;flex-wrap:wrap}#klroot .hero-foot p{font-size:clamp(15px,1.3vw,18.5px);max-width:48ch;color:#3A362C;line-height:1.7; text-wrap:pretty}#klroot .corner{position:absolute;z-index:2}#klroot .corner.bl{left:var(--pad);bottom:26px}#klroot .corner.br{right:var(--pad);bottom:26px;text-align:right}#klroot .hsrv{position:relative;z-index:2;margin-top:clamp(18px,2.4vw,32px);background:var(--bg); display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--line)}#klroot .hsrv a{position:relative;display:flex;flex-direction:column;overflow:hidden; padding:clamp(13px,1.4vw,19px) clamp(11px,1.1vw,16px) clamp(15px,1.7vw,23px); border-right:1px solid var(--line2)}#klroot .hsrv a:last-child{border-right:0}#klroot .hsrv a:before{content:"";position:absolute;inset:0;background:var(--brand); transform:scaleX(0);transform-origin:var(--org,left); transition:transform .55s cubic-bezier(.6,0,.2,1)}#klroot .hsrv a:hover:before{transform:scaleX(1)}#klroot .hsrv a>span{position:relative;display:block}#klroot .hsrv .n{font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.16em; color:var(--brand-t);margin-bottom:9px;transition:color .4s}#klroot .hsrv .t{font-size:clamp(13.5px,1.12vw,17px);font-weight:500;letter-spacing:-.015em;line-height:1.24; transition:transform .5s cubic-bezier(.33,0,.12,1)}#klroot .hsrv .k{margin-top:auto;padding-top:11px;font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.09em; text-transform:uppercase;color:var(--mut);line-height:1.75;transition:color .4s}#klroot .hsrv a:hover .n,#klroot .hsrv a:hover .k{color:rgba(24,24,24,.6)}#klroot .hsrv a:hover .t{transform:translateX(6px)}#klroot .lribbon{position:relative;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line); padding:clamp(20px,2.4vw,32px) 0;margin-top:clamp(24px,3vw,40px)} #klroot .lribbon:before,#klroot .lribbon:after{content:"";position:absolute;top:0;bottom:0;width:clamp(40px,7vw,110px);z-index:2;pointer-events:none} #klroot .lribbon:before{left:0;background:linear-gradient(90deg,var(--bg),rgba(0,0,0,0))} #klroot .lribbon:after{right:0;background:linear-gradient(270deg,var(--bg),rgba(0,0,0,0))} #klroot .lribbon{cursor:grab;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-x:contain} #klroot .lribbon::-webkit-scrollbar{display:none} #klroot .lribbon.drag{cursor:grabbing} #klroot .lrib-in{display:flex;align-items:center;gap:clamp(34px,4.6vw,72px);width:max-content} #klroot .lrib-in a{flex:none;display:block;opacity:.42;filter:grayscale(1);transition:opacity .45s,filter .45s,transform .45s} #klroot .lrib-in a:hover{opacity:1;filter:none;transform:translateY(-2px)} #klroot .lrib-in img{display:block;height:clamp(44px,5vw,72px);width:auto;object-fit:contain} #klroot .hpeek{position:fixed;top:0;left:0;z-index:70;pointer-events:none;opacity:0; width:clamp(190px,16vw,250px);transition:opacity .35s ease;will-change:transform} #klroot .hpeek.on{opacity:1} #klroot .hpeek .hpk-in{position:relative;overflow:hidden;aspect-ratio:4/5;background:var(--bg2); clip-path:inset(100% 0 0 0);transition:clip-path .6s cubic-bezier(.16,.84,.28,1); box-shadow:0 26px 60px -28px rgba(24,24,24,.5)} #klroot .hpeek.on .hpk-in{clip-path:inset(0 0 0 0)} #klroot .hpeek img{width:100%;height:100%;object-fit:cover;display:block; transform:scale(1.14);transition:transform 1.3s cubic-bezier(.16,.84,.28,1)} #klroot .hpeek.on img{transform:scale(1)} #klroot .hpeek .hpk-cap{display:block;padding-top:9px;font-family:"JetBrains Mono",monospace; font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut); opacity:0;transform:translateY(5px);transition:opacity .45s .12s,transform .45s .12s} #klroot .hpeek.on .hpk-cap{opacity:1;transform:none} #klroot .hsrv.peeking a{opacity:.4;transition:opacity .4s} #klroot .hsrv.peeking a.hot{opacity:1} #klroot .hsrv a>span.hthumb{display:none} #klroot .hsrv a>span.htx{display:flex;flex-direction:column;flex:1;min-width:0;align-self:stretch} @media(hover:none),(max-width:900px){ #klroot .hpeek{display:none} #klroot .hsrv a{flex-direction:row;align-items:center;gap:13px} #klroot .hsrv a>span.hthumb{display:block;flex:none;width:66px;align-self:stretch;min-height:66px; position:relative;overflow:hidden;background:var(--bg2)} #klroot .hthumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover} } #klroot .hprod{position:relative;z-index:2;background:var(--bg);border-top:1px solid var(--line); padding-top:clamp(11px,1.2vw,16px);display:flex;justify-content:space-between;gap:8px 26px; flex-wrap:wrap;align-items:baseline}#klroot .hprod div{display:flex;gap:6px 18px;flex-wrap:wrap;align-items:baseline}#klroot .hprod b,#klroot .hprod span,#klroot .hprod i{font-family:"JetBrains Mono",monospace;font-size:10.5px; letter-spacing:.13em;text-transform:uppercase;font-weight:400;font-style:normal}#klroot .hprod b{color:var(--brand-t)}#klroot .hprod span{color:var(--mut)}#klroot .hprod i{color:var(--mut);white-space:nowrap}#klroot .mq{border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;padding-top:13px;padding-bottom:13px; background:var(--bg)}#klroot .mq-in{display:flex;width:max-content;animation:mq 38s linear infinite}#klroot .mq span{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase; padding:0 22px;white-space:nowrap;color:var(--ink)}#klroot .mq span b{color:var(--brand-t);font-weight:400} @keyframes mq{to{transform:translateX(-50%)}}#klroot section{position:relative}#klroot .sec{padding-top:var(--sec);padding-bottom:var(--sec)}#klroot .head{display:grid;grid-template-columns:var(--cols);gap:clamp(18px,2.4vw,34px) clamp(30px,6vw,90px); align-items:end;padding-bottom:clamp(34px,4.4vw,62px)}#klroot .eb{display:flex;align-items:center;gap:clamp(12px,1.4vw,18px); margin-bottom:clamp(16px,2vw,26px)}#klroot .eb b{flex:none;font-size:clamp(30px,3.6vw,52px);line-height:.8;font-weight:500; letter-spacing:-.04em;color:var(--brand-a)}#klroot .eb i{flex:none;font-style:normal;font-family:"JetBrains Mono",monospace;font-size:11.5px; letter-spacing:.17em;text-transform:uppercase;color:var(--brand-t)}#klroot .eb:after{content:"";flex:1;height:1px;background:var(--line);min-width:20px}#klroot .head .eb{grid-column:1/-1;margin-bottom:0} @media(max-width:600px){#klroot .eb b{font-size:34px}#klroot .eb i{font-size:10.5px;letter-spacing:.13em}}#klroot .head .rgt{padding-bottom:.35em;line-height:1.75;max-width:34ch;text-wrap:pretty}#klroot .head .rgt.mono{font-family:"Space Grotesk",sans-serif;text-transform:none; letter-spacing:-.005em;font-size:clamp(15.5px,1.35vw,19px);line-height:1.6; color:var(--mut);max-width:40ch;padding-bottom:.45em}#klroot h2{font-size:clamp(28px,4.2vw,62px);line-height:1.06;letter-spacing:-.038em;font-weight:500; max-width:17ch;text-wrap:balance}#klroot h2 .am{color:var(--brand-a)}#klroot h1:has(br),#klroot h2:has(br),#klroot h3:has(br){max-width:none}#klroot .lead{font-size:clamp(19px,2.3vw,32px);line-height:1.4;letter-spacing:-.018em;font-weight:400; max-width:28ch;text-wrap:balance}#klroot .body{font-size:clamp(15.5px,1.25vw,18px);line-height:1.72;color:#3A362C;max-width:58ch; text-wrap:pretty}#klroot .body + .body{margin-top:18px}#klroot .inline-link{color:var(--brand-t);border-bottom:1px solid rgba(105,84,58,.45);transition:border-color .3s}#klroot h3,#klroot .subh,#klroot .plist .t,#klroot .wrow h3,#klroot .wst h3,#klroot .prod .it b,#klroot .manca b,#klroot .step b,#klroot .srow .nm,#klroot .tcard h3,#klroot .cgrid .blk a.b,#klroot .hsrv .t,#klroot .mani p,#klroot .quote p{text-wrap:balance}#klroot p,#klroot li,#klroot .rgt,#klroot .prod .it>span,#klroot .wst p,#klroot .srow p,#klroot .manca p,#klroot .step p,#klroot .plist .pd p,#klroot .wlg .nm,#klroot .cap-row span{text-wrap:pretty}#klroot h1,#klroot h2,#klroot h3,#klroot p,#klroot li,#klroot b,#klroot span,#klroot a,#klroot em,#klroot i{overflow-wrap:break-word}#klroot .inline-link:hover{border-color:var(--brand-t)}#klroot #studio .g,#klroot #lostudio .g{display:grid;grid-template-columns:var(--cols);gap:clamp(30px,6vw,90px);align-items:start}#klroot #studio .g>.c2,#klroot #lostudio .g>.c2{grid-column:2}#klroot #servizi{border-top:1px solid var(--line)}#klroot .pil{display:grid;grid-template-columns:var(--cols);gap:clamp(24px,4vw,64px) clamp(30px,6vw,90px);align-items:center; padding-top:clamp(24px,3vw,40px)}#klroot .plist{list-style:none;position:relative;z-index:3}#klroot .plist li{border-bottom:1px solid var(--line2)}#klroot .plist li:first-child{border-top:1px solid var(--line2)}#klroot .plist li>a{display:flex;align-items:baseline;gap:16px;padding:clamp(14px,1.7vw,24px) 0;position:relative}#klroot .plist .n,#klroot .plist .t{transition:transform .7s cubic-bezier(.33,0,.12,1),color .35s}#klroot .plist li.on>a .n,#klroot .plist li.on>a .t{transform:translateX(13px)}#klroot .plist .n{font-family:"JetBrains Mono",monospace;font-size:10.5px;color:var(--mut);flex:0 0 auto}#klroot .plist .t{font-size:clamp(21px,2.9vw,42px);line-height:1.02;letter-spacing:-.035em;font-weight:500}#klroot .plist li>a:after{content:"";position:absolute;left:-14px;right:-14px;top:6px;bottom:6px;background:var(--brand); z-index:-1;transform:scaleX(0);transform-origin:var(--org,left);transition:transform .5s cubic-bezier(.6,0,.2,1)}#klroot .plist li.on>a:after{transform:scaleX(1)}#klroot .plist li.on .t{color:var(--ink)}#klroot .plist li.on .n{color:rgba(24,24,24,.62)}#klroot .pmedia{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--bg2)}#klroot .pmedia figure{position:absolute;inset:0;opacity:0;transition:opacity .7s ease}#klroot .pmedia figure.on{opacity:1}#klroot .pmedia img{width:100%;height:100%;object-fit:cover}#klroot .pmedia .cap{position:absolute;left:0;bottom:0;z-index:3;background:var(--bg);padding:11px 16px}#klroot .plist .go{margin-left:auto;color:var(--brand-t);white-space:nowrap;opacity:0; transform:translateX(-8px);transition:opacity .35s,transform .45s cubic-bezier(.2,.7,.3,1)}#klroot .plist li.on .go,#klroot .plist li>a:hover .go{opacity:1;transform:none}#klroot .plist .pd{overflow:hidden;max-height:0;opacity:0; transition:max-height .5s cubic-bezier(.2,.7,.3,1),opacity .4s}#klroot .plist li.on .pd{max-height:260px;opacity:1}#klroot .plist .pd .in{min-height:133px}#klroot .plist .pd p{font-size:15.5px;line-height:1.7;color:#3A362C;max-width:46ch;padding-top:2px}#klroot .plist .pcta{margin:14px 0 18px}#klroot .claim{position:relative;isolation:isolate;overflow:hidden;color:var(--ink); background:radial-gradient(125% 155% at 8% -25%,#C2A378 0%,#A4845B 48%,#8E7452 100%); padding-top:var(--sec);padding-bottom:var(--sec)}#klroot .claim>*{position:relative;z-index:2}#klroot .claim>.cfx{position:absolute;z-index:0}#klroot .claim p{font-size:clamp(27px,3.5vw,52px);line-height:1.12;letter-spacing:-.032em;font-weight:500; max-width:46ch;text-wrap:normal}#klroot .claim .mono{color:rgba(24,24,24,.9);margin-bottom:clamp(20px,3vw,40px)}#klroot .cfx{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;contain:paint}#klroot .cfx .dots,#klroot .cfx .dots2{position:absolute;inset:-20%;will-change:transform;backface-visibility:hidden}#klroot .cfx .dots{background-image:radial-gradient(rgba(46,32,18,.16) 1.1px,transparent 1.2px); background-size:13px 13px;animation:cdot1 40s linear infinite}#klroot .cfx .dots2{background-image:radial-gradient(rgba(255,247,233,.20) 1.3px,transparent 1.4px); background-size:29px 29px;animation:cdot2 64s linear infinite}#klroot .cfx .fade{position:absolute;inset:0; background:radial-gradient(115% 125% at 10% -10%,rgba(232,216,192,.5),transparent 64%)}#klroot .cfx .grain{position:absolute;inset:0;opacity:.2;mix-blend-mode:overlay; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}#klroot .cfx .glow{position:absolute;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%; opacity:0;transition:opacity .55s ease; background:radial-gradient(closest-side,rgba(255,247,234,.32),transparent 72%)} @keyframes cdot1{to{transform:translate3d(13px,13px,0)}} @keyframes cdot2{to{transform:translate3d(-29px,14px,0)}}#klroot .subh{display:flex;align-items:baseline;gap:clamp(12px,1.4vw,18px); font-size:clamp(19px,1.9vw,27px);font-weight:500;letter-spacing:-.028em;line-height:1.2; margin:clamp(50px,5.6vw,88px) 0 clamp(18px,2.2vw,30px)}#klroot .subh:after{content:"";flex:1;height:1px;background:var(--line);min-width:20px}#klroot .subh em{font-style:normal;color:var(--brand-a)}#klroot .wall{display:grid;grid-template-columns:minmax(0,.94fr) minmax(0,1.06fr); gap:clamp(26px,3vw,44px) clamp(30px,5vw,76px);align-items:start}#klroot .wlogos{display:grid;grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line);border-left:1px solid var(--line2)}#klroot .wlg{position:relative;display:flex;align-items:center;justify-content:center;text-align:center; aspect-ratio:3/2;padding:14px 12px;background:none;cursor:pointer;overflow:hidden; border:0;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2)}#klroot .wlg .bg{position:absolute;inset:0;background:rgba(164,132,91,.16); transform:scaleX(0);transform-origin:left; transition:transform .5s cubic-bezier(.6,0,.2,1)}#klroot .wlg.on .bg{transform:scaleX(1)}#klroot .wlg img{position:relative;max-height:clamp(50px,6.4vw,92px);max-width:82%;width:auto;object-fit:contain; filter:invert(1) brightness(.15);opacity:.46;transition:opacity .4s,transform .5s cubic-bezier(.2,.7,.3,1)}#klroot .wlg .nm{position:relative;font-size:clamp(12.5px,1vw,15px);font-weight:500;line-height:1.22; letter-spacing:-.015em;color:var(--ink);opacity:.5; transition:opacity .4s,transform .5s cubic-bezier(.2,.7,.3,1)}#klroot .wlg.on img,#klroot .wlg.on .nm{opacity:1;transform:scale(1.04)}#klroot .wlg:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--brand-t); transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.6,0,.2,1)}#klroot .wlg.on:after{transform:scaleX(1)}#klroot .wstage{position:sticky;top:calc(var(--hdrh) + 20px);display:grid}#klroot .wst{grid-area:1/1;opacity:0;visibility:hidden;transform:translateY(10px); transition:opacity .5s ease,transform .6s cubic-bezier(.2,.7,.3,1),visibility .5s}#klroot .wst.on{opacity:1;visibility:visible;transform:none}#klroot .wst .ph{overflow:hidden;background:var(--bg2);aspect-ratio:4/3;border:1px solid var(--line2)}#klroot .wst .ph img{width:100%;height:100%;object-fit:cover;display:block}#klroot .wst .tx{padding-top:clamp(16px,1.8vw,24px)}#klroot .wst .tx .mono.am{display:block;margin-bottom:10px}#klroot .wst h3{font-size:clamp(24px,2.6vw,38px);line-height:1.04;letter-spacing:-.035em;font-weight:500}#klroot .wst p{font-size:clamp(15px,1.25vw,17px);line-height:1.7;color:#3A362C;max-width:52ch; margin-top:clamp(10px,1.2vw,16px)}#klroot .wst .btn{margin-top:clamp(18px,2vw,28px)}#klroot .wst .dm{margin-top:14px;color:var(--mut)}#klroot .wmore{margin-top:clamp(22px,2.6vw,36px);border-top:1px solid var(--line); padding-top:clamp(14px,1.6vw,20px)}#klroot .wmore>.mono{display:block;color:var(--mut);margin-bottom:clamp(12px,1.4vw,18px)}#klroot .wmlist{display:flex;align-items:center;flex-wrap:wrap;gap:14px 22px}#klroot .wmlist a{display:flex;align-items:center;justify-content:center;padding:2px 0}#klroot .wmlist img{max-height:clamp(30px,3vw,44px);max-width:104px;width:auto;object-fit:contain; filter:invert(1) brightness(.15);opacity:.45;transition:opacity .4s,transform .4s}#klroot .wmlist a:hover img{opacity:1;transform:scale(1.06)} @media(max-width:1024px){#klroot .wall{grid-template-columns:none;display:flex;flex-direction:column;gap:22px}#klroot .wcol{display:contents}#klroot .wlogos{order:1}#klroot .wstage{order:2;position:static}#klroot .wmore{order:3;margin-top:6px}#klroot .wst .ph{aspect-ratio:16/10}}#klroot .secta{margin-top:clamp(30px,3.8vw,58px)}#klroot .btn{display:inline-flex;align-items:center;gap:16px;position:relative;overflow:hidden; border:1px solid var(--brand-t);padding:12px 14px 12px 24px;color:var(--ink); vertical-align:top;max-width:100%}#klroot .btn:before{content:"";position:absolute;inset:0;z-index:0;background:var(--brand-t); transform:scaleX(0);transform-origin:var(--org,left); transition:transform .55s cubic-bezier(.6,0,.2,1)}#klroot .btn .t,#klroot .btn .ico{position:relative;z-index:1}#klroot .btn .t{font-size:clamp(15px,1.45vw,19px);letter-spacing:-.02em;line-height:1.25; transition:color .35s}#klroot .btn .ico{flex:none;width:38px;height:38px;border-radius:50%;border:1px solid var(--brand-t); display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1; color:var(--brand-t); transition:color .35s,border-color .35s,background .35s,transform .45s cubic-bezier(.33,0,.12,1)}#klroot .btn:hover:before,#klroot .btn:focus-visible:before{transform:scaleX(1)}#klroot .btn:hover .t,#klroot .btn:focus-visible .t{color:var(--bg)}#klroot .btn:hover .ico,#klroot .btn:focus-visible .ico{color:var(--bg);border-color:rgba(228,227,219,.7);transform:translateX(4px)}#klroot .btn.sm{padding:8px 8px 8px 18px;gap:12px}#klroot .btn.sm .t{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.13em; text-transform:uppercase}#klroot .btn.sm .ico{width:28px;height:28px;font-size:12px} @media(hover:none){#klroot .btn:active:before{transform:scaleX(1)}#klroot .btn:active .t{color:var(--bg)}#klroot .btn:active .ico{color:var(--bg);border-color:rgba(228,227,219,.7)}}#klroot .photo{border-top:1px solid var(--line);position:relative;overflow:hidden; padding-top:var(--sec);padding-bottom:var(--sec)}#klroot .photo .guides{position:absolute;inset:0;pointer-events:none;z-index:0}#klroot .photo .guides i{position:absolute;background:var(--line2)}#klroot .photo .col{position:relative;z-index:2;width:min(560px,72vw);margin:0 auto;display:flex;flex-direction:column; gap:clamp(20px,3vw,44px)}#klroot .photo .col figure{overflow:hidden;background:var(--bg2);aspect-ratio:4/5}#klroot .photo .col img{width:100%;height:100%;object-fit:cover;will-change:transform}#klroot .photo>.wrap{position:relative;z-index:2}#klroot .photo .pfoot{margin-top:clamp(34px,4.4vw,64px)}#klroot .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0 clamp(20px,3vw,50px);border-top:1px solid var(--line)}#klroot .step{padding:22px 0 32px;border-bottom:1px solid var(--line2)}#klroot .step b{display:block;font-size:clamp(17px,1.6vw,24px);font-weight:500;letter-spacing:-.025em;margin:10px 0 8px}#klroot .step p{font-size:14.5px;line-height:1.7;color:#3A362C}#klroot .prod{display:grid;grid-template-columns:repeat(2,1fr);gap:0 clamp(30px,6vw,90px); border-top:1px solid var(--line)}#klroot .prod .it{position:relative;display:flex;align-items:baseline;justify-content:space-between; gap:clamp(18px,2vw,34px); padding:clamp(14px,1.6vw,22px) 0;border-bottom:1px solid var(--line2)}#klroot .prod .it:before{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--brand-t); transform:scaleX(0);transform-origin:var(--org,left);transition:transform .6s cubic-bezier(.6,0,.2,1)}#klroot .prod .it:hover:before{transform:scaleX(1)}#klroot .prod .it b{flex:0 1 44%;font-size:clamp(17px,1.8vw,26px);font-weight:500;letter-spacing:-.025em; transition:color .35s,transform .7s cubic-bezier(.33,0,.12,1)}#klroot .prod .it:hover b{transform:translateX(9px)}#klroot .prod .it:hover b{color:var(--brand-t)}#klroot .prod .it b:after{content:"\2197";margin-left:.34em;color:var(--brand-t);display:inline-block;opacity:0; transform:translateX(-7px);transition:opacity .35s,transform .5s cubic-bezier(.2,.7,.3,1)}#klroot .prod .it:hover b:after{opacity:1;transform:none}#klroot .prod .it .mono{transition:color .35s}#klroot .prod .it:hover .mono{color:var(--brand-t)}#klroot .prod .it>span:not(.mono){font-size:14px;line-height:1.6;color:#3A362C;max-width:46ch; text-align:left;flex:1 1 46%;min-width:0} @media(max-width:760px){#klroot .prod .it{flex-direction:column;align-items:flex-start;gap:4px}#klroot .prod .it>span:not(.mono){text-align:left;max-width:none;font-size:13.5px}#klroot .prod .it b{font-size:16.5px}}#klroot .team{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.4vw,34px); border-top:1px solid var(--line);padding-top:clamp(26px,3vw,40px)}#klroot .tcard{display:block}#klroot .tcard .ph{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--bg2)}#klroot .tcard .ph img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.04); transition:filter .6s ease,transform 1.2s cubic-bezier(.2,.7,.3,1)}#klroot .tcard:hover .ph img{filter:none;transform:scale(1.04)}#klroot .tcard .ph:after{content:"";position:absolute;inset:0;border:1px solid var(--brand);opacity:0; transition:opacity .45s;pointer-events:none}#klroot .tcard:hover .ph:after{opacity:1}#klroot .tcard h3{font-size:clamp(17px,1.5vw,22px);font-weight:500;letter-spacing:-.025em;line-height:1.2; margin-top:15px;transition:color .35s,transform .5s cubic-bezier(.2,.7,.3,1)}#klroot .tcard:hover h3{color:var(--brand-t);transform:translateX(4px)}#klroot .tcard .ruolo{color:var(--brand-t);margin-top:7px}#klroot .tcard .nota{margin-top:9px;font-size:14px;line-height:1.65;color:#3A362C;max-width:34ch}#klroot .tcard.vuoto .ph{border:1px dashed rgba(164,132,91,.55);background:rgba(164,132,91,.07); display:flex;align-items:center;justify-content:center}#klroot .tcard.vuoto .ph span{color:var(--brand-t);text-align:center;padding:0 14px;line-height:1.7}#klroot .tcard.vuoto h3,#klroot .tcard.vuoto .ruolo{color:var(--mut)} @media(max-width:900px){#klroot .team{grid-template-columns:repeat(2,1fr)}}#klroot #contatti{border-top:1px solid var(--line);padding-top:var(--sec);padding-bottom:0}#klroot .big{font-size:clamp(52px,12vw,196px);line-height:.9;letter-spacing:-.05em;font-weight:500}#klroot .big .am{color:var(--brand-a)}#klroot .cgrid{display:grid;grid-template-columns:var(--cols);gap:clamp(24px,4vw,60px) clamp(30px,6vw,90px);margin-top:clamp(36px,5vw,72px); padding-bottom:clamp(50px,7vw,100px)}#klroot .cgrid .blk{border-top:1px solid var(--line);padding-top:18px}#klroot .cgrid .blk a.b{font-size:clamp(17px,1.8vw,26px);letter-spacing:-.02em;display:inline-block;margin-top:8px; border-bottom:1px solid transparent;transition:.3s}#klroot .cgrid .blk a.b:hover{color:var(--brand-t);border-color:var(--brand-t)}#klroot .cgrid .blk p{font-size:15.5px;line-height:1.7;color:#3A362C;margin-top:8px}#klroot footer{border-top:1px solid var(--line);padding:22px 0 26px;display:flex;justify-content:space-between; gap:20px;flex-wrap:wrap}#klroot .bar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:800; border-top:1px solid var(--line);background:rgba(228,227,219,.96);backdrop-filter:blur(12px)}#klroot .bar div{display:grid;grid-template-columns:1fr 1fr}#klroot .bar button,#klroot .bar a{display:flex;align-items:center;justify-content:center;gap:9px;padding:18px 10px; font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase; background:none;border:0;color:var(--ink);cursor:pointer;font-weight:500}#klroot .bar a{background:var(--brand);color:var(--ink)}#klroot .bar button i{width:16px;height:9px;position:relative;display:block}#klroot .bar button i:before,#klroot .bar button i:after{content:"";position:absolute;left:0;right:0;height:1.5px; background:currentColor;transition:transform .35s cubic-bezier(.6,0,.2,1)}#klroot .bar button i:before{top:0}#klroot .bar button i:after{bottom:0}#klroot .bar button.open i:before{transform:translateY(3.7px) rotate(45deg)}#klroot .bar button.open i:after{transform:translateY(-3.7px) rotate(-45deg)}#klroot .sheet{display:none;position:fixed;inset:0;z-index:790;background:var(--bg);padding:80px var(--pad) 110px; overflow-y:auto;transform:translateY(100%);transition:transform .55s cubic-bezier(.7,0,.2,1)}#klroot .sheet.open{transform:none}#klroot .sheet a.ml{display:flex;align-items:baseline;gap:14px;padding:17px 0;border-bottom:1px solid var(--line2); font-size:26px;letter-spacing:-.03em;font-weight:500}#klroot .sheet a.ml em{font-style:normal;font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--mut)}#klroot .sheet a.ml.sm{font-size:17px;padding:13px 0 13px 16px;color:#3A362C}#klroot .sheet .foot{margin-top:30px;line-height:2}#klroot .sheet .foot a{color:var(--brand-t)} @media(max-width:1250px){#klroot .hsrv{grid-template-columns:repeat(3,1fr)}#klroot .hsrv a:nth-child(3n){border-right:0}#klroot .hsrv a:nth-child(-n+3){border-bottom:1px solid var(--line2)}} @media(max-width:1024px){:root{--cols:1fr}#klroot #studio .g,#klroot #lostudio .g{gap:26px}#klroot #studio .g>.c2,#klroot #lostudio .g>.c2{grid-column:1}#klroot .head{align-items:start}#klroot .steps{grid-template-columns:repeat(2,1fr);gap:0 clamp(20px,4vw,40px)}#klroot .prod{grid-template-columns:1fr}#klroot .cgrid{grid-template-columns:1fr}#klroot .photo .col{width:min(560px,88vw)}} @media(max-width:900px){body{padding-bottom:60px}#klroot nav.top,#klroot header .meta{display:none}#klroot header .mnav{display:flex}#klroot .bar{display:block}#klroot .sheet{z-index:690}#klroot .bar div{grid-template-columns:1fr}#klroot .bar #mbtn{display:none}#klroot .sheet{display:block}#klroot header{--hdrh:64px}#klroot #hero{padding:92px var(--pad) 56px;min-height:auto}#klroot .hsrv{grid-template-columns:repeat(2,1fr)}#klroot .hsrv a{border-bottom:1px solid var(--line2)}#klroot .hsrv a:nth-child(2n){border-right:0}#klroot .hsrv .k{display:none}#klroot .hprod{justify-content:flex-start}#klroot .corner{display:none}#klroot .pmedia{aspect-ratio:3/2}#klroot .plist li.on>a .n,#klroot .plist li.on>a .t{transform:translateX(9px)}#klroot .plist .go{opacity:1;transform:none}#klroot .plist .pd{max-height:260px;opacity:1}#klroot .plist .pd .in{min-height:0}#klroot .steps{grid-template-columns:1fr}#klroot .plist li>a{padding:15px 0}#klroot .plist .t{font-size:19px}#klroot .plist .pd{max-height:0;opacity:0; transition:max-height .55s cubic-bezier(.6,0,.2,1),opacity .35s ease}#klroot .plist li.on .pd{max-height:340px;opacity:1}#klroot .plist .pd .in{min-height:0;padding-bottom:6px}#klroot .pmedia{display:none}#klroot .pil{gap:0}} @media(max-width:760px){#klroot .mono{font-size:10px;letter-spacing:.12em}#klroot .head .rgt.mono,#klroot .rgt.mono{font-family:inherit;text-transform:none;letter-spacing:0; font-size:14.5px;line-height:1.6;color:var(--mut);max-width:none}#klroot h1{line-height:1}#klroot h2{font-size:clamp(27px,7.4vw,33px);line-height:1.1;max-width:20ch}#klroot .lead{font-size:19px;line-height:1.5;max-width:none}#klroot .body{font-size:15.5px;line-height:1.72}#klroot .claim p{font-size:clamp(26px,7vw,32px);line-height:1.2;max-width:none}#klroot .hero-foot p{font-size:15.5px;line-height:1.68;max-width:none}:root{--sec:58px}#klroot .head{padding-bottom:24px}#klroot .eb{margin-bottom:13px}#klroot .eb b{font-size:30px}#klroot .secta{margin-top:26px}#klroot .big{line-height:.86}#klroot .subh{font-size:19px}#klroot .wlg{aspect-ratio:auto;min-height:92px;padding:13px 8px}#klroot .wlg img{max-height:42px;max-width:84%}#klroot .wlg .nm{font-size:11.5px;line-height:1.2}#klroot .wst h3{font-size:25px}#klroot .wst p{font-size:15px}#klroot .wmlist{gap:14px 20px}#klroot .wmlist img{max-height:32px;max-width:88px}#klroot .steps{grid-template-columns:repeat(2,1fr);gap:0 18px}#klroot .step{padding-top:16px;padding-bottom:16px}#klroot .hsrv a{padding:12px 12px 14px}#klroot .hsrv .t{font-size:14.5px}#klroot .hprod{gap:6px 14px}#klroot .hprod b,#klroot .hprod span,#klroot .hprod i{font-size:9.5px;letter-spacing:.1em}} @media(max-width:760px){#klroot .photo .col{width:auto;margin:0;padding:0 var(--pad); flex-direction:row;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}#klroot .photo .col::-webkit-scrollbar{display:none}#klroot .photo .col figure{flex:0 0 72%;scroll-snap-align:start}#klroot .more{max-height:0;overflow:hidden;opacity:0; transition:max-height .65s cubic-bezier(.6,0,.2,1),opacity .4s ease}#klroot .more.open{max-height:1200px;opacity:1}#klroot .morebtn{display:inline-flex;align-items:center;gap:10px;margin-top:18px;background:none;border:0; padding:0;color:var(--brand-t);cursor:pointer;font-family:"JetBrains Mono",monospace; font-size:10.5px;letter-spacing:.16em;text-transform:uppercase}#klroot .morebtn:after{content:"";width:26px;height:1px;background:currentColor; transition:width .4s cubic-bezier(.6,0,.2,1)}#klroot .morebtn.open:after{width:12px}#klroot .photo .swipe{padding:0 var(--pad)}#klroot .swipe{display:flex;align-items:center;gap:9px;margin-top:12px; font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.14em; text-transform:uppercase;color:var(--mut)}#klroot .swipe:before{content:"";width:26px;height:1px;background:var(--line);flex:none}} @media(hover:none){#klroot .prod .it b:after{opacity:1;transform:none}#klroot .prod .it:before{transform:scaleX(1)}}#klroot .zoomable{cursor:zoom-in}#klroot .lb{position:fixed;inset:0;z-index:9500;display:flex;align-items:center;justify-content:center; background:rgba(20,20,19,.975);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px); opacity:0;visibility:hidden;transition:opacity .42s cubic-bezier(.2,.7,.3,1),visibility .42s}#klroot .lb.open{opacity:1;visibility:visible}#klroot .lb .stage{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center; padding:clamp(46px,5vw,74px) clamp(16px,6vw,110px)}#klroot .lb figure{margin:0;position:relative;width:100%;height:100%;display:flex; align-items:center;justify-content:center}#klroot .lb img{width:100%;height:100%;object-fit:contain;display:block; filter:drop-shadow(0 26px 60px rgba(0,0,0,.55)); opacity:0;transform:scale(.97);transition:opacity .5s cubic-bezier(.2,.7,.3,1),transform .6s cubic-bezier(.2,.7,.3,1)}#klroot .lb.ready img{opacity:1;transform:none}#klroot .lb .cap{position:absolute;left:0;right:0;bottom:clamp(14px,2.2vw,26px);text-align:center; color:rgba(255,255,255,.78);font-family:var(--mono);font-size:11px;letter-spacing:.09em; text-transform:uppercase;padding:0 clamp(16px,6vw,110px)}#klroot .lb .cap b{font-weight:400;color:#fff}#klroot .lb .cap i{font-style:normal;opacity:.5;margin-left:10px}#klroot .lb .x,#klroot .lb .nav{position:absolute;background:none;border:0;color:rgba(255,255,255,.72);cursor:pointer; padding:0;line-height:1;transition:color .3s,transform .3s cubic-bezier(.2,.7,.3,1)}#klroot .lb .x{top:clamp(14px,2vw,26px);right:clamp(14px,2.4vw,32px);width:38px;height:38px; font-size:22px;font-family:var(--mono)}#klroot .lb .nav{top:50%;width:52px;height:52px;margin-top:-26px;font-size:22px;font-family:var(--mono)}#klroot .lb .prev{left:clamp(6px,1.6vw,26px)}#klroot .lb .next{right:clamp(6px,1.6vw,26px)}#klroot .lb .x:hover,#klroot .lb .nav:hover{color:#fff}#klroot .lb .prev:hover{transform:translateX(-4px)}#klroot .lb .next:hover{transform:translateX(4px)}#klroot .lb .num{position:absolute;top:clamp(16px,2.2vw,28px);left:clamp(16px,2.6vw,34px); font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:rgba(255,255,255,.5)}#klroot .lb .ld{position:absolute;width:26px;height:26px;border-radius:50%;border:1px solid rgba(255,255,255,.25); border-top-color:rgba(255,255,255,.8);animation:lbspin .8s linear infinite;opacity:0;transition:opacity .2s}#klroot .lb.wait .ld{opacity:1} @keyframes lbspin{to{transform:rotate(360deg)}}body.lb-open{overflow:hidden} @media(max-width:900px){#klroot .lb .stage{padding:64px 12px 74px}#klroot .lb img{filter:none}#klroot .lb .nav{display:none}} @media(prefers-reduced-motion:reduce){#klroot .lb,#klroot .lb img{transition:none}#klroot .lb .ld{animation:none}} @media(prefers-reduced-motion:reduce){#klroot .cfx .dots,#klroot .cfx .dots2{animation:none}#klroot .cfx .glow{display:none}#klroot .mq-in{animation:none}html.js #klroot .rv{transition:none}html.js #klroot .mskd .msk{transform:none;transition:none}} /* ---- 04 Fotografia: vetrina ---- */ #klroot .photo{padding-top:clamp(48px,6vw,88px);padding-bottom:clamp(48px,6vw,88px)} #klroot .pgrid{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);grid-template-rows:auto 1fr;column-gap:clamp(22px,2.6vw,48px);row-gap:clamp(20px,2.6vw,38px);align-items:start} #klroot .pstrip{grid-column:1;grid-row:1;position:relative;padding:0 clamp(20px,2.2vw,30px)} #klroot .pthumbs{display:flex;gap:clamp(8px,.9vw,13px);overflow-x:auto;scroll-behavior:smooth; scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:2px} #klroot .pthumbs::-webkit-scrollbar{display:none} #klroot .pstrip:after{content:"";position:absolute;right:clamp(20px,2.2vw,30px);top:0;bottom:0;width:44px;pointer-events:none; background:linear-gradient(270deg,var(--bg),rgba(0,0,0,0));z-index:2} #klroot .pthumbs>.pth{flex:0 0 clamp(84px,8.4vw,116px);scroll-snap-align:start} #klroot .pth{position:relative;border:0;overflow:hidden;aspect-ratio:1/1;background:var(--bg2);cursor:pointer;padding:0;display:block;border-radius:16px;box-shadow:0 0 0 1px var(--line2) inset} #klroot .pth img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(.35);transition:transform 1.1s cubic-bezier(.16,.84,.28,1),filter .5s} #klroot .pth:hover img,#klroot .pth.on img{transform:scale(1.07);filter:none} #klroot .pth.on{box-shadow:0 0 0 2px var(--brand) inset} #klroot .pth .pthlb{position:absolute;left:8px;right:8px;bottom:8px;padding:7px 10px;border-radius:999px;background:rgba(228,227,219,.9);font-family:"JetBrains Mono",monospace;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} #klroot .parr{position:absolute;top:50%;transform:translateY(-50%);width:clamp(34px,2.6vw,40px);height:clamp(34px,2.6vw,40px);border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:5;transition:background .35s,color .35s,border-color .35s} #klroot .parr:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)} #klroot .pprev{left:0}#klroot .pnext{right:0} #klroot .pleft{grid-column:1;grid-row:2;display:flex;flex-direction:column;gap:clamp(12px,1.5vw,20px);padding-top:clamp(6px,1vw,14px)} #klroot .pleft h2{max-width:12ch;font-size:clamp(30px,4.6vw,66px);line-height:1.02} #klroot .pbody{font-size:clamp(13px,1vw,15px);line-height:1.6;color:var(--mut);max-width:42ch;text-transform:none} #klroot .ptags{display:flex;flex-wrap:wrap;gap:7px;margin-top:clamp(4px,1vw,14px)} #klroot .ptags span{border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.08em;text-transform:lowercase;color:var(--mut)} #klroot .pmain{grid-column:2;grid-row:1 / span 2;position:relative;height:100%;min-height:clamp(520px,57vw,860px);border-radius:20px;overflow:hidden} #klroot .pshot{position:absolute;inset:0;background:var(--bg2)} #klroot .pshot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.05);transition:opacity .7s ease,transform 1.5s cubic-bezier(.16,.84,.28,1)} #klroot .pshot img.on{opacity:1;transform:none} #klroot .pnums{position:absolute;left:clamp(14px,1.4vw,22px);top:clamp(16px,2vw,28px); display:flex;flex-direction:column;gap:9px;z-index:3} #klroot .pnums button{width:clamp(26px,2vw,32px);height:clamp(26px,2vw,32px);backdrop-filter:blur(3px);border-radius:50%;border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.12);color:#fff;font-family:"JetBrains Mono",monospace;font-size:10.5px;cursor:pointer;transition:background .35s,color .35s,border-color .35s} #klroot .pnums button.on{background:#fff;color:var(--ink);border-color:#fff} #klroot .pbadge{position:absolute;display:flex;align-items:center;gap:9px;padding:9px 16px;border-radius:999px;background:rgba(255,255,255,.94);font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink);z-index:4;pointer-events:none;white-space:nowrap} #klroot .pbadge i{width:6px;height:6px;border-radius:50%;background:var(--brand);display:block;flex:0 0 auto} #klroot .pb1{top:clamp(16px,2vw,28px);right:clamp(14px,1.4vw,22px)} #klroot .pb2{bottom:clamp(66px,7vw,104px);left:clamp(52px,5vw,78px)} #klroot .fcap{position:absolute;left:0;right:0;bottom:0;padding:clamp(12px,1.4vw,20px) clamp(14px,1.6vw,24px);background:linear-gradient(to top,rgba(0,0,0,.55),rgba(0,0,0,0));color:rgba(255,255,255,.9);font-size:9px;letter-spacing:.09em;z-index:3;pointer-events:none} #klroot .pgrid{row-gap:clamp(12px,1.4vw,20px)} #klroot .pleft .eb{margin-bottom:clamp(14px,1.8vw,26px)} #klroot .pleft .eb b{font-size:clamp(22px,2.1vw,32px)} #klroot .pleft h2{font-size:clamp(28px,4vw,56px)} #klroot .photo{padding-top:clamp(40px,4.4vw,64px);padding-bottom:clamp(40px,4.4vw,64px)} @media(max-width:1024px){#klroot .pgrid{grid-template-columns:1fr;grid-template-rows:auto auto auto}#klroot .pstrip{grid-column:1;grid-row:1}#klroot .pmain{grid-column:1;grid-row:2;min-height:min(78vh,560px)}#klroot .pleft{grid-column:1;grid-row:3}#klroot .pleft h2{max-width:none}} @media(max-width:640px){#klroot .pthumbs{grid-auto-columns:minmax(38%,1fr)}#klroot .parr{display:none}#klroot .pstrip{padding:0}#klroot .pb2{left:auto;right:clamp(14px,1.4vw,22px);bottom:clamp(58px,9vw,80px)}} /* ---- 01 immagine di sezione ---- */ #klroot .smedia{grid-column:1/-1;margin:clamp(30px,4vw,58px) 0 0;position:relative;border-radius:clamp(14px,1.6vw,22px);overflow:hidden;background:var(--bg2)} #klroot .smedia img{width:100%;display:block;aspect-ratio:21/9;object-fit:cover;object-position:center 58%;filter:grayscale(.2) contrast(1.02);transform:scale(1.07);transition:transform 1.6s cubic-bezier(.16,.84,.28,1),filter .9s} #klroot .smedia.in img{transform:scale(1)} #klroot .smedia:hover img{filter:none;transform:scale(1.03)} #klroot .smedia .smcap{position:absolute;left:clamp(12px,1.4vw,20px);bottom:clamp(12px,1.4vw,20px);padding:8px 14px;border-radius:999px;background:rgba(228,227,219,.92);font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink)} @media(max-width:700px){#klroot .smedia img{aspect-ratio:3/2}} /* ---- 03 selettore di categoria ---- */ #klroot .pthumbs{padding:4px 2px 10px} #klroot .pthumbs>.pth{flex:0 0 clamp(96px,10vw,140px)} #klroot .pth{border-radius:14px;transition:transform .5s cubic-bezier(.16,.84,.28,1),box-shadow .35s;transform:translateY(0)} #klroot .pth img{filter:grayscale(1) brightness(.92);transition:transform 1.1s cubic-bezier(.16,.84,.28,1),filter .5s} #klroot .pth .pthov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(24,24,24,0) 34%,rgba(24,24,24,.72));opacity:.55;transition:opacity .4s} #klroot .pth:hover{transform:translateY(-3px)} #klroot .pth:hover img{filter:grayscale(.35);transform:scale(1.06)} #klroot .pth.on{transform:translateY(-6px);box-shadow:0 0 0 2px var(--brand) inset,0 14px 30px -18px rgba(24,24,24,.5)} #klroot .pth.on img{filter:none;transform:scale(1.04)} #klroot .pth.on .pthov{opacity:1;background:linear-gradient(180deg,rgba(24,24,24,0) 28%,rgba(24,24,24,.8))} #klroot .pth .pthlb{left:6px;right:6px;bottom:6px;display:flex;align-items:center;justify-content:center;gap:6px;background:rgba(228,227,219,.86);color:var(--ink);padding:6px 9px;transition:background .35s,color .35s} #klroot .pth .pthlb i{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} #klroot .pth .pthlb b{font-weight:500;opacity:.55;font-size:8px} #klroot .pth.on .pthlb{background:var(--ink);color:var(--bg)} #klroot .pth.on .pthlb b{opacity:.6} #klroot .pth::after{content:"";position:absolute;left:50%;bottom:0;width:0;height:3px;background:var(--brand);transform:translateX(-50%);transition:width .45s cubic-bezier(.16,.84,.28,1);z-index:3} #klroot .pth.on::after{width:64%} @media(max-width:700px){#klroot .pthumbs>.pth{flex:0 0 108px}} nav.top a.nolink,.sheet a.nolink{cursor:default;pointer-events:none}
CaleidoscopioTocca per chiudere
Kaleidoscopiolab
Abbiamo dato
forma a mille idee.
La prossima è la tua.
Studio di comunicazione e fotografia.

Tutta lacomunicazione.Un solo partner.

KaleidoscopioLab non è una semplice azienda: è una fucina di idee dove ogni frammento di visione trova la sua forma ideale.
Un unico ecosistema in cui strategia, design e fotografia convergono per trasformare le intuizioni in progetti concreti.

La nostra mission↓
La tua identità, tra visione e racconto.
Comunica. Colpisci. Ricorda.
.hpeek{display:none!important}.hsrv a{transition:background .4s ease}.hsrv a:hover,.hsrv a.hot{background:rgba(105,84,58,.07)!important}#klroot .hsrv a::before{opacity:.14}#klroot .hsrv a:hover .n,#klroot .hsrv a:hover .k{color:#6e6a60}#klroot .hsrv a:hover .t{color:#181818}.hsrv a .n{transition:color .35s ease}.hsrv a:hover .n{color:#69543a}.hband{position:relative;width:100%;height:clamp(300px,58vh,660px);overflow:hidden;background:#dedcd3;border-top:.8px solid rgba(24,24,24,.16)}.hband figure{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .7s ease}.hband figure img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.05);transition:transform 1.6s ease}.hband figure:first-child{opacity:1}.hband figcaption{position:absolute;left:0;bottom:0;background:#e4e3db;color:#181818;font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:1.4px;text-transform:uppercase;padding:9px 16px}section.go:has(.hsrv a:nth-of-type(1):hover)~.hband figure:first-child{opacity:0}section.go:has(.hsrv a:nth-of-type(1):hover)~.hband figure:nth-of-type(1){opacity:1;z-index:2}section.go:has(.hsrv a:nth-of-type(1):hover)~.hband figure:nth-of-type(1) img{transform:scale(1)}section.go:has(.hsrv a:nth-of-type(2):hover)~.hband figure:first-child{opacity:0}section.go:has(.hsrv a:nth-of-type(2):hover)~.hband figure:nth-of-type(2){opacity:1;z-index:2}section.go:has(.hsrv a:nth-of-type(2):hover)~.hband figure:nth-of-type(2) img{transform:scale(1)}section.go:has(.hsrv a:nth-of-type(3):hover)~.hband figure:first-child{opacity:0}section.go:has(.hsrv a:nth-of-type(3):hover)~.hband figure:nth-of-type(3){opacity:1;z-index:2}section.go:has(.hsrv a:nth-of-type(3):hover)~.hband figure:nth-of-type(3) img{transform:scale(1)}section.go:has(.hsrv a:nth-of-type(4):hover)~.hband figure:first-child{opacity:0}section.go:has(.hsrv a:nth-of-type(4):hover)~.hband figure:nth-of-type(4){opacity:1;z-index:2}section.go:has(.hsrv a:nth-of-type(4):hover)~.hband figure:nth-of-type(4) img{transform:scale(1)}section.go:has(.hsrv a:nth-of-type(5):hover)~.hband figure:first-child{opacity:0}section.go:has(.hsrv a:nth-of-type(5):hover)~.hband figure:nth-of-type(5){opacity:1;z-index:2}section.go:has(.hsrv a:nth-of-type(5):hover)~.hband figure:nth-of-type(5) img{transform:scale(1)}section.go:has(.hsrv a:nth-of-type(6):hover)~.hband figure:first-child{opacity:0}section.go:has(.hsrv a:nth-of-type(6):hover)~.hband figure:nth-of-type(6){opacity:1;z-index:2}section.go:has(.hsrv a:nth-of-type(6):hover)~.hband figure:nth-of-type(6) img{transform:scale(1)}@media(max-width:900px){.hband{height:clamp(240px,40vh,420px)}}
Strategia e comunicazione
Strategia e comunicazione
Siti web ed e-commerce
Siti web ed e-commerce
Social media management
Social media management
Fotografia
Fotografia
Brand identity e design
Brand identity e design
Produzione e stampa
Produzione e stampa
01La nostra mission

Idee.
Creatività.
Connessioni.

La fotografia e la comunicazione visiva prendono vita quando il talento creativo si sposa con una produzione impeccabile.
Disegniamo su misura l’identità visiva del tuo brand: uniamo l’arte dello scatto alla cura artigianale della produzione per creare contenuti che arrivano al cuore del pubblico.
Le mani di un artigiano che lavorano l’argilla
Il mestiere, prima dell’immagine
02Cosa facciamo

Affianchiamo brand e agenzie
nel processo creativo,
curando ogni fase.

Fotografia, video, web, social, grafica e produzione diventano parti di un unico progetto, pensato e coordinato dall’inizio alla fine.
  • 01Strategia e ComunicazioneScopri →

    Pianificazione, identità e narrazione. Sviluppiamo strategie su misura e campagne di comunicazione integrate per connettere le aziende con i loro pubblici chiave.

    Apri il servizio→
  • 02Siti Web & E-commerceScopri →

    Creare un sito internet significa combinare estetica e funzionalità per accogliere i visitatori nel modo migliore. Si tratta di progettare non solo l’aspetto visivo ma anche l’esperienza d’uso, assicurandosi che ogni informazione sia facile da trovare e che la navigazione sia fluida su ogni tipo di schermo.

    Apri il servizio→
  • 03Social Media ManagementScopri →

    Più di un semplice feed curato: raccontiamo la storia del tuo brand. Ci occupiamo di grafiche, Reel, copywriting e strategie su misura per intercettare il tuo pubblico ideale e trasformare i follower in clienti fidelizzati. Tu ti concentri sul tuo lavoro, al resto ci pensiamo noi.

    Apri il servizio→
  • 04FotografiaScopri →

    Ogni immagine racconta un’intenzione, un’emozione o un valore. Dai dettagli spontanei di un matrimonio alla precisione richiesta da un catalogo e-commerce, fino alla narrazione di eventi, volti aziendali e feed social: curiamo ogni scatto nei minimi dettagli per creare immagini che non si limitano a farsi guardare, ma si fanno ricordare.

    Apri il servizio→
  • 05Brand Identity & DesignScopri →

    Diamo forma, struttura e coerenza al tuo marchio.
    Dallo studio del logo alla realizzazione dell’intero sistema d’immagine coordinata, definiamo gli standard visivi che rendono la tua azienda immediatamente riconoscibile su ogni supporto web, cartaceo e pubblicitario.

    Apri il servizio→
  • 06Produzione e stampaScopri →

    Soluzioni di stampa e personalizzazione su misura per la tua comunicazione e i tuoi eventi. Ci occupiamo dell’intero processo produttivo per offrirti abbigliamento brandizzato, gadget promozionali, packaging d’impatto, cataloghi di pregio e prototipazione 3D. Un unico partner affidabile per trasformare la tua identità visiva in prodotti tangibili.

    Apri il servizio→
03Fotografia

Immagini autentiche,prodotte su misura per te

Dall’identità visiva di un brand alla magia di un matrimonio o di un grande evento: realizziamo scatti autentici e su misura, capaci di catturare l’essenza di ogni storia senza ricorrere ad immagini d’archivio.

Reportage
Scatto nostro
04Produzione e stampa

Dal pixel al prodotto:
le tue idee prendono forma concreta.

Progettazione, personalizzazione e stampa per dare corpo ai tuoi progetti.
    05Lavori e clienti

    Idee che diventano progetti, brand che diventano partner!

    Una selezione delle nostre collaborazioni più recenti.
    06Hai un’idea in mente?
    Parliamone.
    Dove siamo

    Via Fratelli Rosselli, SNC
    74013 Ginosa (TA)

    Cosa succede dopo

    Ogni grande progetto nasce da una sintonia reciproca.
    Usiamo il primo contatto per capire se siamo i partner giusti per far crescere il tuo brand.

    (function(){ "use strict"; document.documentElement.className += ' js'; var U = 'https://www.kaleidoscopiolab.it/wp-content/uploads/'; var MOB = matchMedia('(max-width:900px)').matches; /* ---------- linee guida ---------- */ var gl = document.getElementById('gl'); if(gl){ for(var i=1;i<4;i++){ var b=document.createElement('i'); b.style.left=(i*25)+'%'; gl.appendChild(b); } } var gd = document.getElementById('guides'); if(gd){ [['left','24%','w'],['left','76%','w'],['top','30%','h'],['top','70%','h']].forEach(function(g){ var e=document.createElement('i'); if(g[2]==='w'){ e.style.cssText='top:0;bottom:0;width:1px;left:'+g[1]; } else { e.style.cssText='left:0;right:0;height:1px;top:'+g[1]; } gd.appendChild(e); }); } /* ---------- marquee ---------- */ var words=['Strategia','Siti Web','E-commerce','Social Media','Fotografia','Brand Identity', 'Stampa 3D','Incisione laser','Packaging','Cataloghi']; var mq=document.getElementById('mq'), h=''; for(var r=0;r<2;r++){ words.forEach(function(w){ h+=''+w+'•'; }); } mq.innerHTML=h; /* ---------- pilastri: immagine guidata dal mouse ---------- */ /* Un'immagine per pilastro, nello stesso ordine dell'elenco, ed e' la stessa che si ritrova aprendo la pagina del servizio: cosi' l'anteprima e' una promessa e non una decorazione. Ritagliate 4:5, che e' il formato del riquadro; il terzo valore sposta il punto d'interesse dove serve. */ var PIMG=[ ['2026/09/kl-srv-strategia.jpg','Strategia e comunicazione','center'], ['2026/09/kl-srv-sitiweb.jpg','Siti web ed e-commerce','center'], ['2026/09/kl-srv-social.jpg','Social media management','center'], ['2026/09/kl-srv-fotografia.jpg','Fotografia','center'], ['2026/09/kl-srv-brand.jpg','Brand identity e design','center'], ['2026/09/kl-srv-produzione.jpg','Produzione e stampa','center'] ]; var pm=document.getElementById('pmedia'); pm.innerHTML = PIMG.map(function(p,i){ return '
    '; }).join('') + '
    '+PIMG[0][1]+'
    '; /* ---------- hero: finestra che insegue il cursore ---------- */ (function(){ var hs=document.querySelector('.hsrv'); if(!hs||typeof PIMG==='undefined') return; var as=[].slice.call(hs.querySelectorAll('a')); as.forEach(function(a,i){ var p=PIMG[i]; if(!p) return; var tx=document.createElement('span'); tx.className='htx'; while(a.firstChild) tx.appendChild(a.firstChild); var th=document.createElement('span'); th.className='hthumb'; th.innerHTML=''; a.appendChild(th); a.appendChild(tx); }); if(window.matchMedia('(hover:none)').matches||innerWidth<900) return; var pk=document.createElement('div'); pk.className='hpeek'; pk.innerHTML='
    '; (document.getElementById('klroot')||document.body).appendChild(pk); var pim=pk.querySelector('img'), pcp=pk.querySelector('.hpk-cap'); var tx=innerWidth/2,ty=innerHeight/2,cx=tx,cy=ty,raf=null,cur=-1; function loop(){ cx+=(tx-cx)*0.16; cy+=(ty-cy)*0.16; pk.style.transform='translate3d('+cx+'px,'+cy+'px,0)'; raf=requestAnimationFrame(loop); } function move(e){ var w=pk.offsetWidth||220, hh=pk.offsetHeight||300; var x=e.clientX+26, y=e.clientY-hh*0.45; if(x+w>innerWidth-14) x=e.clientX-w-26; if(yinnerHeight-12) y=innerHeight-hh-12; tx=x; ty=y; } as.forEach(function(a,i){ a.addEventListener('mouseenter',function(e){ var p=PIMG[i]; if(!p) return; if(cur!==i){ cur=i; pim.src=U+p[0]; pcp.innerHTML=p[1]; } hs.classList.add('peeking'); a.classList.add('hot'); move(e); if(!raf){ cx=tx; cy=ty; pk.style.transform='translate3d('+cx+'px,'+cy+'px,0)'; loop(); } requestAnimationFrame(function(){ pk.classList.add('on'); }); }); a.addEventListener('mousemove',move,{passive:true}); a.addEventListener('mouseleave',function(){ a.classList.remove('hot'); }); }); hs.addEventListener('mouseleave',function(){ hs.classList.remove('peeking'); pk.classList.remove('on'); setTimeout(function(){ if(!pk.classList.contains('on')&&raf){ cancelAnimationFrame(raf); raf=null; cur=-1; } },600); }); })(); var lis=[].slice.call(document.querySelectorAll('#plist li')); var figs=[].slice.call(pm.querySelectorAll('figure')); var cap=document.getElementById('pcap'); var cur=0, auto=null; function setPil(i){ if(i===cur) return; cur=i; lis.forEach(function(l,n){ l.classList.toggle('on', n===i); }); figs.forEach(function(f,n){ f.classList.toggle('on', n===i); }); cap.innerHTML = PIMG[i][1]; /* le didascalie contengono entita' HTML nostre */ } lis.forEach(function(l,i){ var a=l.querySelector('a'); a.addEventListener('mouseenter', function(){ setPil(i); stopAuto(); }); a.addEventListener('focus', function(){ setPil(i); stopAuto(); }); a.addEventListener('click', function(e){ /* Su telefono la prima toccata apre la descrizione, la seconda porta alla pagina: e' il comportamento che la gente si aspetta da una fisarmonica, e evita che un dito di passaggio faccia cambiare pagina. */ if(MOB && !l.classList.contains('on')){ e.preventDefault(); setPil(i); return; } setPil(i); }); }); function startAuto(){ if(MOB||auto) return; auto=setInterval(function(){ setPil((cur+1)%lis.length); }, 3400); } function stopAuto(){ if(auto){ clearInterval(auto); auto=null; } } var pilSec=document.getElementById('servizi'); if('IntersectionObserver' in window){ new IntersectionObserver(function(es){ es.forEach(function(e){ e.isIntersecting ? startAuto() : stopAuto(); }); },{threshold:.35}).observe(pilSec); } document.querySelector('.pil').addEventListener('mouseleave', startAuto); /* ---------- 04 Fotografia: vetrina ---------- */ var PH=[ ['Matrimoni','2026/09/kl-wed-arco-mare.jpg',[ ['2026/09/kl-wed-arco-mare.jpg','Matrimonio — l’arco di pietra sul mare'], ['2026/09/kl-wed-tramonto.jpg','Matrimonio — il ritratto al tramonto'], ['2026/09/kl-wed-uscita-riso.jpg','Matrimonio — l’uscita dalla chiesa'], ['2026/09/kl-wed-velo.jpg','Matrimonio — il velo, prima della cerimonia']]], ['Eventi','2026/09/kl-evt-mangiafuoco.jpg',[ ['2026/09/kl-evt-mangiafuoco.jpg','Rievocazione storica — il mangiafuoco'], ['2026/09/kl-evt-giocoliere-bambino.jpg','Rievocazione storica — il gioco in piazza'], ['2026/09/kl-evt-corteo-storico.jpg','Rievocazione storica — il corteo'], ['2026/08/kl-gal-passio-fumo.jpg','Passio Christi — il corteo nel fumo']]], ['Moda','2026/09/kl-moda-completo-azzurro.jpg',[ ['2026/09/kl-moda-completo-azzurro.jpg','Editoriale moda — completo in studio'], ['2026/09/kl-moda-total-white.jpg','Editoriale moda — total white'], ['2026/09/kl-moda-giacca-pelle.jpg','Editoriale moda — capo indossato'], ['2026/09/kl-moda-esterna-gravina.jpg','Editoriale moda — scatto in esterna']]], ['Still life','2026/09/kl-still-borsa-dettaglio.jpg',[ ['2026/09/kl-still-borsa-dettaglio.jpg','Still life — dettaglio di una borsa'], ['2026/09/kl-still-anfibio.jpg','Still life — calzatura su fondo colore'], ['2026/09/kl-still-pochette.jpg','Still life — pochette in pelle'], ['2026/09/kl-still-stivaletti.jpg','Still life — stivaletti'], ['2026/08/kl-gal-hosteria.jpg','Brand identity e design']]], ['Aziendale','2026/08/kl-gal-edilmaggi.jpg',[ ['2026/08/kl-gal-edilmaggi.jpg','Cantiere Edil Maggì — fotografia aziendale'], ['2026/08/kl-set-edile-1.jpg','Cantiere — lavorazione in quota'], ['2026/08/kl-set-termo-2.jpg','Impianto termico — intervento in cantiere'], ['2026/08/kl-set-costruzioni-2.jpg','Cantiere ripreso dall’alto']]] ]; (function(){ var shot=document.getElementById('pshot'), th=document.getElementById('pthumbs'), nm=document.getElementById('pnums'), cap=document.getElementById('fcap'), b1=document.getElementById('pb1'), tg=document.getElementById('ptags'); if(!shot||!th) return; /* le miniature sono le categorie: una per tipo di lavoro */ th.innerHTML=PH.map(function(c,i){ return ''; }).join(''); if(tg) tg.innerHTML=['#reportage','#aziendale','#matrimoni','#eventi','#ritratto','#stilllife'].map(function(t){ return ''+t+''; }).join(''); var cat=0, idx=0; function render(){ var foto=PH[cat][2]; shot.innerHTML=foto.map(function(f,i){ return ''; }).join(''); nm.innerHTML=foto.map(function(f,i){ return ''; }).join(''); [].forEach.call(nm.children,function(el,i){ el.addEventListener('click',function(){ idx=i; paint(); }); }); paint(); } function paint(){ var foto=PH[cat][2]; [].forEach.call(shot.children,function(el,n){ el.classList.toggle('on',n===idx); }); [].forEach.call(nm.children,function(el,n){ el.classList.toggle('on',n===idx); }); [].forEach.call(th.children,function(el,n){ var a=(n===cat); el.classList.toggle('on',a); el.setAttribute('aria-pressed',a); if(a&&el.scrollIntoView){ try{ var pr=th.getBoundingClientRect(), er=el.getBoundingClientRect(); if(er.leftpr.right) th.scrollTo({left:el.offsetLeft-(th.clientWidth-el.offsetWidth)/2,behavior:'smooth'}); }catch(e){} } }); if(b1){ var s=b1.querySelector('span'); if(s) s.innerHTML=PH[cat][0]; } if(cap) cap.innerHTML=foto[idx][1]; } function setCat(i,keep){ cat=(i+PH.length)%PH.length; if(!keep) idx=0; render(); } function step(d){ var foto=PH[cat][2]; var n=idx+d; if(n=foto.length){ setCat(cat+1); return; } idx=n; paint(); } [].forEach.call(th.children,function(el,i){ el.addEventListener('click',function(){ setCat(i); }); }); var pv=document.getElementById('pprev'), nx=document.getElementById('pnext'); if(pv) pv.addEventListener('click',function(){ step(-1); }); if(nx) nx.addEventListener('click',function(){ step(1); }); /* si sfoglia anche trascinando o con le frecce della tastiera */ var x0=null; shot.addEventListener('pointerdown',function(e){ x0=e.clientX; }); shot.addEventListener('pointerup',function(e){ if(x0===null) return; var d=e.clientX-x0; x0=null; if(Math.abs(d)>45) step(d<0?1:-1); }); shot.setAttribute('tabindex','0'); shot.addEventListener('keydown',function(e){ if(e.key==='ArrowRight'){ e.preventDefault(); step(1); } if(e.key==='ArrowLeft'){ e.preventDefault(); step(-1); } }); render(); })(); /* ---------- produzione ---------- */ /* Ogni lavorazione ha la sua pagina: qui il link ci va davvero. */ var PROD=[['Stampa 3D','Dal prototipo all’oggetto finito: trasformiamo le tue idee e i tuoi progetti digitali in forme reali, curando ogni dettaglio e materiale.',6675,'2026/09/kl-pro-stampa3d.jpg','Stampa 3D'], ['Incisione laser','Ogni incisione è realizzata con cura e tecnologia di ultima generazione, per un risultato elegante, duraturo e senza limiti di creatività.',6676,'2026/09/kl-pro-laser.jpg','Incisione laser'], ['Packaging ed etichette','Soluzioni di confezionamento su misura studiate per catturare il cliente al primo sguardo.',6677,'2026/09/kl-pro-packaging.jpg','Packaging ed etichette'], ['Cataloghi e brochure','Racconta la tua azienda e i tuoi prodotti con strumenti editoriali di qualità. Carta, colori e finiture ideati per trasformare i lettori in acquirenti.',6678,'2026/09/kl-pro-cataloghi.jpg','Cataloghi e brochure']]; (function(){ var ul=document.getElementById('plist2'), pm=document.getElementById('pmedia2'); if(!ul||!pm) return; ul.innerHTML=PROD.map(function(p,i){ var n=(i+1<10?'0':'')+(i+1); return '
  • ' +''+n+''+p[0]+'' +'

    '+p[1]+'

    ' +'
  • '; }).join(''); pm.innerHTML=PROD.map(function(p,i){ return '
    '; }).join('')+'
    '+PROD[0][4]+'
    '; var lis=[].slice.call(ul.querySelectorAll('li')), figs=[].slice.call(pm.querySelectorAll('figure')), cap=document.getElementById('pcap2'), cur=0, MOB2=window.matchMedia('(hover:none)').matches||innerWidth<900; function set(i){ if(i===cur) return; cur=i; lis.forEach(function(l,n){ l.classList.toggle('on',n===i); }); figs.forEach(function(f,n){ f.classList.toggle('on',n===i); }); cap.innerHTML=PROD[i][4]; } lis.forEach(function(l,i){ var a=l.querySelector('a'); a.addEventListener('mouseenter',function(){ if(!MOB2) set(i); }); a.addEventListener('focus',function(){ set(i); }); a.addEventListener('click',function(e){ if(MOB2 && !l.classList.contains('on')){ e.preventDefault(); set(i); } }); }); })(); /* ---------- gli altri clienti ---------- Le altre tredici aziende dei ventuno loghi consegnati da Simi: nessuna ha una casella nella griglia qui sopra (SIFIN e Galante il progetto ce l'hanno, ma sta nella pagina Lavori). Il logo si vede, la scheda non si finge: il clic porta alla pagina dei lavori. */ /* ---------- 05 clienti: nastro dei loghi ---------- */ (function(){ var box=document.getElementById('lrib'); if(!box) return; var B='/wp-content/uploads/2026/08/kl-logo-'; var DIM={"wonder-ginosa":[100,62],"isolarsi":[155,41],"hosteria-del-secolo":[137,47],"mupa":[76,62],"eden-spazio-bellezza":[76,62],"climasat":[134,48],"tecnica-diesel":[143,45],"mediterranea-beton":[137,47],"loforese-group":[118,54],"edil-maggi":[100,62],"edils":[138,46],"agri-ionica":[158,40],"sifin-immobiliare":[99,62],"agenzia-galante":[110,58],"snaipay-vincendo":[104,61],"eclipse":[141,45],"il-quadrifoglio":[190,31],"piccoli-sogni":[80,62],"il-piccolo-principe":[129,50],"jogo-playhouse":[98,62],"alima":[95,62]}; var L=[['wonder-ginosa','Wonder Ginosa e Marina'],['isolarsi','Isolarsì'], ['hosteria-del-secolo','Hosteria del Secolo'],['mupa','MUPA'], ['eden-spazio-bellezza','Eden Spazio Bellezza'],['climasat','ClimaSat'], ['tecnica-diesel','Tecnica Diesel'],['mediterranea-beton','Mediterranea Beton'], ['loforese-group','Loforese Group'],['edil-maggi','Edil Maggì'],['edils','EDILS'], ['agri-ionica','Agri Ionica'],['sifin-immobiliare','SIFIN Immobiliare'], ['agenzia-galante','Agenzia Galante'],['snaipay-vincendo','Snaipay Vincendo'], ['eclipse','Eclipse'],['il-quadrifoglio','Il Quadrifoglio'],['piccoli-sogni','Piccoli Sogni'], ['il-piccolo-principe','Il Piccolo Principe'],['jogo-playhouse','Jogo Playhouse'],['alima','Alima']]; var one=L.map(function(l){ var d=DIM[l[0]]||[110,50];return ''; }).join(''); box.innerHTML=one+one+one; })(); /* ---------- cursore: punto veloce + anello che insegue ---------- */ var curEl=document.querySelector('.cur'), ring=document.querySelector('.cring'); var ringLab=ring?ring.firstElementChild:null; if(!MOB && curEl && ring){ var mx=innerWidth/2, my=innerHeight/2, dx=mx, dy=my, rx=mx, ry=my, pressed=false; var TW=34, TH=34, TR=17, rw=34, rh=34, rr=17, mode='', snapEl=null, px=mx, py=my, sq=0; addEventListener('mousemove',function(e){ mx=e.clientX; my=e.clientY; },{passive:true}); addEventListener('mousedown',function(){ pressed=true; },{passive:true}); addEventListener('mouseup',function(){ pressed=false; },{passive:true}); /* un link in linea che va a capo ha PIU' riquadri: getBoundingClientRect() restituisce l'unione, cioe' tutto il paragrafo. Serve la riga sotto il puntatore. */ function rectFor(el,x,y){ var rs=el.getClientRects(); if(rs.length<2) return el.getBoundingClientRect(); var best=rs[0], bd=Infinity; for(var i=0;i<rs.length;i++){ var r=rs[i]; var ax=Math.max(r.left-x,0,x-r.right), ay=Math.max(r.top-y,0,y-r.bottom); var dd=ax*ax+ay*ay; if(dd.004) ? Math.atan2(my-ry,mx-rx)*57.2958 : 0; curEl.style.transform='translate3d('+dx.toFixed(1)+'px,'+dy.toFixed(1)+'px,0) translate(-50%,-50%)'; ring.style.transform='translate3d('+rx.toFixed(1)+'px,'+ry.toFixed(1)+'px,0) translate(-50%,-50%) ' +'rotate('+ang.toFixed(1)+'deg) scale('+((1+sq)*(pressed?.82:1)).toFixed(3)+',' +((1-sq)*(pressed?.82:1)).toFixed(3)+') rotate('+(-ang).toFixed(1)+'deg)'; requestAnimationFrame(loop); })(); function setCur(cls,txt,el){ var cn='cring'+(cls?' '+cls:''); if(ring.className!==cn) ring.className=cn; if(ringLab.textContent!==(txt||'')) ringLab.textContent=txt||''; curEl.classList.toggle('off', cls==='lg'||cls==='txt'); mode=cls||''; snapEl=null; if(el){ var rb=el.getBoundingClientRect(); if(rb.width<=SNAP_MAX_W && rb.height<=SNAP_MAX_H) snapEl=el; } if(cls==='lg'){ TW=TH=94; TR=47; } else if(cls==='txt'){ TW=2; TH=30; TR=1; } else if(cls==='sm' && !el){ TW=TH=54; TR=27; } else if(!cls){ TW=TH=34; TR=17; } } /* Solo comandi piccoli e cliccabili. C'era dentro anche .mono.am, che pero' non e' un comando ed e' sempre un
    largo quanto la colonna: l'anello ci si posava sopra diventando una pillola lunga mezzo schermo, e il magnetismo spostava l'etichetta. */ var MAG='nav.top a,.inline-link,.cgrid .blk a.b,.crumb a,.bar a'; /* rete di sicurezza: per quanto stretto sia il selettore, l'anello non deve mai posarsi su qualcosa piu' grande di un comando. */ var SNAP_MAX_W=300, SNAP_MAX_H=64; document.addEventListener('mouseover',function(e){ var t=e.target; if(!t || !t.closest) return; if(t.closest('[data-c]')) return setCur('lg','Vedi'); if(t.closest('.plist li,.hsrv a')) return setCur('lg','Apri'); if(t.closest('.prod a.it')) return setCur('lg','Apri'); if(t.closest('.btn')) return setCur('lg','Apri'); if(t.closest('.wlg,.wmlist a')) return setCur('lg','Cliente'); if(t.closest('a[href^="mailto"]')) return setCur('lg','Scrivi'); if(t.closest('a[href^="tel"]')) return setCur('lg','Chiama'); if(t.closest('.lb button')) return setCur('sm',''); if(t.closest('.lb')) return setCur('lg','Chiudi'); if(t.classList && t.classList.contains('zoomable')) return setCur('lg','Ingrandisci'); if(t.closest('.bleed figure,.photo figure,.pmedia')) return setCur('lg','Ingrandisci'); var sn=t.closest(MAG); if(sn) return setCur('sm','',sn); if(t.closest('a,button')) return setCur('sm',''); if(t.closest('p,.body,.lead,h1,h2,.big,.step,.crumb')) return setCur('txt',''); setCur('',''); }); /* magnetismo: i piccoli comandi si avvicinano al puntatore */ [].slice.call(document.querySelectorAll(MAG)).forEach(function(el){ if(el.getClientRects().length>1) return; /* niente magnetismo se va a capo */ if(el.getBoundingClientRect().width>SNAP_MAX_W) return; /* ne' se e' largo come una colonna */ el.style.transition='transform .55s cubic-bezier(.2,.7,.3,1)'; el.addEventListener('mousemove',function(e){ var r=el.getBoundingClientRect(); el.style.transitionDuration='.09s'; el.style.transform='translate('+((e.clientX-(r.left+r.width/2))*.26).toFixed(1)+'px,' +((e.clientY-(r.top+r.height/2))*.45).toFixed(1)+'px)'; },{passive:true}); el.addEventListener('mouseleave',function(){ el.style.transitionDuration='.55s'; el.style.transform='none'; }); }); } /* ---------- l'animazione parte dal lato da cui arriva il cursore ---------- */ var HOVER = matchMedia('(hover:hover)').matches; function originFrom(el,e){ if(!e.clientX && !e.clientY) return; /* eventi sintetici senza coordinate */ var r=el.getBoundingClientRect(); var x=(e.clientX-r.left)/(r.width||1)-.5, y=(e.clientY-r.top)/(r.height||1)-.5; el.style.setProperty('--org', Math.abs(x)>=Math.abs(y) ? (x>0?'right':'left') : (y>0?'bottom':'top')); } [].slice.call(document.querySelectorAll('.plist li>a,.prod .it,.btn,nav.top .sub a')).forEach(function(el){ if(HOVER){ el.addEventListener('mouseenter',function(e){ originFrom(el,e); },{passive:true}); el.addEventListener('mouseleave',function(e){ originFrom(el,e); },{passive:true}); } else { el.addEventListener('pointerdown',function(e){ originFrom(el,e); },{passive:true}); } }); /* ---------- etichette che ruotano al passaggio ---------- */ [].slice.call(document.querySelectorAll( 'nav.top a,.bar a,.cgrid .blk a.b,.mono.am,.crumb a,.sheet .foot a')) .forEach(function(a){ if(a.children.length) return; var txt=a.textContent; if(!txt || !txt.trim()) return; var wrap=document.createElement('span'); wrap.className='rl'; var i1=document.createElement('i'); i1.textContent=txt; var i2=document.createElement('i'); i2.textContent=txt; i2.setAttribute('aria-hidden','true'); wrap.appendChild(i1); wrap.appendChild(i2); a.textContent=''; a.appendChild(wrap); }); /* ---------- onda al clic e al tocco (desktop e telefono) ---------- */ var ripRoot=document.getElementById('klroot')||document.body; addEventListener('pointerdown',function(e){ var t=e.target; if(!t || !t.closest || !t.closest('a,button,.it,.wrow,.plist li')) return; var d=document.createElement('span'); d.className='rip'; d.style.left=e.clientX+'px'; d.style.top=e.clientY+'px'; ripRoot.appendChild(d); setTimeout(function(){ if(d.parentNode) d.parentNode.removeChild(d); }, 800); },{passive:true}); /* ---------- caleidoscopio: tieni premuto il logo, digita "kaleido", o Konami ---------- */ var kale=document.getElementById('kale'); if(kale){ var rose=kale.querySelector('.rose'); /* tre corone di spicchi specchiati che ruotano a velocita' diverse */ [[ 'l1',18,3.4,'linear-gradient(180deg,#A4845B 0%,rgba(164,132,91,.05) 78%)'], [ 'l2',12,5.2,'linear-gradient(180deg,rgba(24,24,24,.62) 0%,rgba(24,24,24,0) 72%)'], [ 'l3', 8,8.5,'linear-gradient(180deg,#69543A 0%,rgba(105,84,58,.05) 70%)']].forEach(function(L){ var ly=document.createElement('div'); ly.className='ly '+L[0]; for(var i=0;i=0){ buf=''; kaleOn(); } }); var KON=['arrowup','arrowup','arrowdown','arrowdown','arrowleft','arrowright','arrowleft','arrowright','b','a']; var kp=0; addEventListener('keydown',function(e){ if(!e.key) return; var k=e.key.toLowerCase(); kp = (k===KON[kp]) ? kp+1 : (k===KON[0]?1:0); if(kp===KON.length){ kp=0; kaleOn(); } }); var lgo=document.querySelector('header .lg'), lpT=null, longPress=false; if(lgo){ lgo.addEventListener('pointerdown',function(){ longPress=false; lpT=setTimeout(function(){ longPress=true; kaleOn(); },700); },{passive:true}); ['pointerup','pointerleave','pointercancel'].forEach(function(ev){ lgo.addEventListener(ev,function(){ clearTimeout(lpT); },{passive:true}); }); lgo.addEventListener('click',function(e){ if(longPress){ e.preventDefault(); longPress=false; } }); } } /* ---------- rivelazioni + header + parallasse ---------- */ /* ---------- titoli che salgono da dietro una maschera ---------- */ document.querySelectorAll('h2,.big,.claim p').forEach(function(h){ if(h.classList.contains('mskd')) return; var sp=document.createElement('span'); sp.className='msk'; sp.innerHTML=h.innerHTML; h.innerHTML=''; h.appendChild(sp); h.classList.add('mskd'); }); var els=[].slice.call(document.querySelectorAll('.rv')); /* ---------- comparse a cascata ---------- */ els.forEach(function(n){ if(/\bd[1-4]\b/.test(n.className)) return; var p=n.parentNode; if(p.__klg===undefined) p.__klg=0; var i=p.__klg++; if(i>0){ var d=(Math.min(i,7)*0.065)+'s'; n.style.transitionDelay=d; var m=n.firstElementChild; if(m && m.className==='msk') m.style.transitionDelay=d; } }); var pcolImgs=[].slice.call(document.querySelectorAll('#pcol img')); /* rete di sicurezza per le maschere: se la transizione resta bloccata (succede quando la scheda e' in secondo piano e la timeline si ferma) il testo deve comparire lo stesso. Una transizione bloccata vince anche sullo stile inline: per sbloccarla va prima annullata la transizione. */ function guardMask(m){ setTimeout(function(){ if(document.hidden){ guardMask(m); return; } var t=getComputedStyle(m).transform; if(t!=='none' && t!=='matrix(1, 0, 0, 1, 0, 0)'){ m.style.transition='none'; m.style.transform='none'; } }, 1900); } function markIn(n){ if(n.classList.contains('in')) return; n.classList.add('in'); var m=n.firstElementChild; if(m && m.className==='msk') guardMask(m); } function reveal(){ for(var i=els.length-1;i>=0;i--){ if(els[i].getBoundingClientRect().top < innerHeight - 40){ markIn(els[i]); els.splice(i,1); } } } function parallax(){ if(MOB) return; pcolImgs.forEach(function(im,n){ var r=im.parentNode.getBoundingClientRect(); if(r.bottominnerHeight) return; var p=(r.top+r.height/2-innerHeight/2)/innerHeight; im.style.transform='translate3d(0,'+(p*-26*(n%2?-1:1)).toFixed(1)+'px,0) scale(1.07)'; }); } /* ---------- fascia claim: fondo vivo ---------- */ var RM = matchMedia('(prefers-reduced-motion: reduce)').matches; (function(){ [].slice.call(document.querySelectorAll('.claim')).forEach(function(c){ if(c.querySelector('.cfx')) return; var f=document.createElement('div'); f.className='cfx'; f.setAttribute('aria-hidden','true'); f.innerHTML='' + ''; c.insertBefore(f, c.firstChild); var g=f.querySelector('.glow'); if(!MOB && !RM){ c.addEventListener('pointermove',function(e){ var r=c.getBoundingClientRect(); g.style.transform='translate3d('+(e.clientX-r.left).toFixed(0)+'px,'+(e.clientY-r.top).toFixed(0)+'px,0)'; g.style.opacity='1'; },{passive:true}); c.addEventListener('pointerleave',function(){ g.style.opacity='0'; },{passive:true}); } }); })(); /* ---------- dove sono: l'header segue i capitoli ---------- */ var doveEl=document.getElementById('dove'); var capitoli=[].slice.call(document.querySelectorAll('.eb')).map(function(e){ var sez=e.closest('section'); return {sez:sez, n:e.querySelector('b').textContent.trim(), nome:e.querySelector('i').textContent.trim()}; }).filter(function(c){ return c.sez; }); var doveDef = doveEl ? doveEl.innerHTML : ''; var dovePrev = ''; function dove(){ if(!doveEl || !capitoli.length) return; var att=null; for(var i=0;i<capitoli.length;i++){ if(capitoli[i].sez.getBoundingClientRect().top < 140) att=capitoli[i]; } var html = att ? ''+att.n+' / '+(capitoli.length<10?'0':'')+capitoli.length+'
    '+att.nome+'' : doveDef; if(html!==dovePrev){ doveEl.innerHTML=html; doveEl.classList.toggle('sez', !!att); dovePrev=html; } } var hdr=document.getElementById('hdr'); var claimEl=document.querySelector('.claim'); var prog=document.querySelector('.prog i'); var mqi=document.querySelector('.mq-in'); function sy(){ var y=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0; return y>0?y:0; } /* il rimbalzo elastico va a zero, non sotto */ /* ---------- header ---------- La barra resta sempre visibile e sempre della stessa altezza: non si ritira e non cambia riquadro. L'unica cosa che commuta e' il fondo, e lo fa con isteresi (accende a 76px, spegne a 44px) perche' una soglia secca sfarfalla appena lo scroll oscilla di un pixel. */ var STUCK_ON=76, STUCK_OFF=44; var yPrev=sy(), tPrev=0, stuck=false, dirPrev=''; function header(y,d,jump){ if(!hdr) return; if(!stuck && y>STUCK_ON){ stuck=true; hdr.classList.add('stuck'); } else if(stuck && y260 || Math.abs(d)>innerHeight; yPrev=y; tPrev=t; header(y,d,jump); if(prog){ var m=(document.documentElement.scrollHeight-innerHeight)||1; prog.style.transform='scaleX('+Math.max(0,Math.min(1,y/m)).toFixed(4)+')'; } if(mqi && !jump && Math.abs(d)>2){ var nd = d<0 ? 'reverse' : 'normal'; if(nd!==dirPrev){ mqi.style.animationDirection=nd; dirPrev=nd; } } if(claimEl){ var r=claimEl.getBoundingClientRect(); document.body.classList.toggle('on-am', r.top 90); } dove(); } /* niente dipendenza dagli eventi di scroll: alcuni temi li intercettano */ var lastY=-1, idle=0; (function frame(ts){ var y=sy(); if(y!==lastY){ lastY=y; idle=0; tick(ts); } else if(idle .msk').forEach(guardMask); }, 6000); /* ---------- entrata hero ---------- */ setTimeout(function(){ document.getElementById('hero').classList.add('go'); }, 180); /* ---------- menu mobile ---------- */ /* ---------- visore immagini ---------------------------------------------- Tutte le fotografie editoriali (fasce, gallerie, ritratti) diventano cliccabili e si aprono a tutto schermo. Restano fuori le immagini che stanno dentro un link, perche' li' il clic deve continuare a portare da un'altra parte, e i loghi. */ (function(){ var root=document.getElementById('klroot')||document.body; /* niente .pmedia: sulla home quelle immagini seguono il passaggio del mouse sui cinque pilastri e il clic deve restare al pilastro. */ var SEL='.bleed figure img,.gal figure img,.photo figure img,' + '.sitedemo .shot img,.wrow .ph img,.team .ph img'; var shots=[]; [].slice.call(root.querySelectorAll(SEL)).forEach(function(im){ if(im.closest('a')) return; if(!im.getAttribute('src')) return; var fig=im.closest('figure')||im.parentElement; var capEl=fig?fig.querySelector('figcaption'):null; var tit=(capEl?capEl.textContent:'')||im.getAttribute('alt')||''; var sub=''; /* le fasce hanno la didascalia in una riga a parte, sotto */ var band=im.closest('.bleed'); if(band){ var sp=band.querySelectorAll('.cap-row span'); if(sp[0]) tit=sp[0].textContent; if(sp[1]) sub=sp[1].textContent; } im.classList.add('zoomable'); im.setAttribute('role','button'); im.setAttribute('tabindex','0'); im.setAttribute('aria-label','Ingrandisci: '+(tit||'immagine')); shots.push({el:im, t:tit.trim(), s:sub.trim()}); }); if(!shots.length) return; /* ATTENZIONE: qui non si usa innerHTML con dentro un tag immagine scritto per esteso. WordPress riscrive TUTTI i tag immagine che trova nella pagina per aggiungerci gli attributi di ottimizzazione, e non distingue fra un'immagine vera e una che sta dentro una stringa di codice: ci infila dentro fetchpriority con gli apici, quegli apici chiudono la stringa a meta' e il browser scarta l'intero file. Da qui, il 19 agosto, nove pagine su tredici senza cursore, senza animazioni e con meta' della home vuota. Il nodo si costruisce a mano: cosi' non c'e' niente da riscrivere. */ function el(tag, cls){ var e=document.createElement(tag); if(cls) e.className=cls; return e; } function btn(cls, lab, seg){ var b=document.createElement('button'); b.type='button'; b.className=cls; b.setAttribute('aria-label',lab); b.textContent=seg; return b; } var lb=el('div','lb'); lb.setAttribute('role','dialog'); lb.setAttribute('aria-modal','true'); lb.setAttribute('aria-hidden','true'); var stage=el('div','stage'); var fig=document.createElement('figure'); var img=document.createElement('img'); img.alt=''; fig.appendChild(img); stage.appendChild(el('span','ld')); stage.appendChild(fig); var num=el('div','num mono'), cap=el('div','cap'); var bx=btn('x','Chiudi','\u2715'); var bp=btn('nav prev','Immagine precedente','\u2190'); var bn=btn('nav next','Immagine successiva','\u2192'); lb.appendChild(stage); lb.appendChild(num); lb.appendChild(bx); lb.appendChild(bp); lb.appendChild(bn); lb.appendChild(cap); root.appendChild(lb); var i=0, open=false, lastFocus=null; function show(n,dir){ i=(n+shots.length)%shots.length; var s=shots[i]; lb.classList.remove('ready'); lb.classList.add('wait'); var src=s.el.currentSrc||s.el.src; var pre=new Image(); pre.onload=pre.onerror=function(){ img.src=src; img.alt=s.t||''; lb.classList.remove('wait'); requestAnimationFrame(function(){ lb.classList.add('ready'); }); }; pre.src=src; while(cap.firstChild) cap.removeChild(cap.firstChild); if(s.t){ var eb=document.createElement('b'); eb.textContent=s.t; cap.appendChild(eb); } if(s.s){ var ei=document.createElement('i'); ei.textContent=s.s; cap.appendChild(ei); } num.textContent=(i+1<10?'0':'')+(i+1)+' / '+(shots.length52) show(i+(d<0?1:-1)); },{passive:true}); window.KLLB={open:openAt, close:close}; })(); /* due bottoni per lo stesso pannello: quello nella barra alta su telefono e quello in fondo, che resta nel markup ma li' e' nascosto */ /* ---------- telefono: il testo lungo si apre a richiesta ---------------- Il capitolo 01 su telefono erano due paragrafi da nove righe l'uno: un muro. Il primo resta, il resto sta dietro un "Continua a leggere". Niente contenuto tolto, solo non tutto addosso al primo colpo d'occhio. */ if(MOB){ [['#studio .c2',1],['#lostudio .c2',1]].forEach(function(cfg){ var box=document.querySelector(cfg[0]); if(!box) return; var ps=[].slice.call(box.querySelectorAll('p.body')); if(ps.length40){ half=n; if(!ready){ ready=true; set(half); } } } function pause(ms){ paused=true; clearTimeout(tmr); tmr=setTimeout(function(){ paused=false; },ms||1600); } function wrap(){ if(!half) return; if(p>=half*2) set(p-half); else if(p<=0) set(p+half); } function loop(t){ if(!last) last=t; var dt=Math.min(64,t-last); last=t; if(!half) measure(); if(down){ p=get(); } else if(inert){ set(p+inert*dt/16); inert*=0.93; if(Math.abs(inert)0){ vel=-(c-lp)/dt*16; lt=now; lp=c; } e.preventDefault(); }); function up(e){ if(!down) return; down=false; p=get(); box.classList.remove('drag'); box.style.cursor='grab'; try{ box.releasePointerCapture(e.pointerId); }catch(x){} inert=Math.max(-80,Math.min(80,vel||0)); pause(1500); } box.addEventListener('pointerup',up); box.addEventListener('pointercancel',up); box.addEventListener('click',function(e){ if(moved>6){ e.preventDefault(); e.stopPropagation(); } },true); }; (function(){ var b=document.querySelector('.lribbon'); if(b) klRibbon(b,26); })(); /* ---------- i titoli si adattano allo spazio che hanno ---------- */ /* KLFIT */ (function(){ function fit(el){ if(!el) return; el.style.fontSize=''; var box=el.clientWidth; if(!box) return; var parts=[].slice.call(el.querySelectorAll('.ln>span,.msk')); var max=0; parts.forEach(function(s){ max=Math.max(max,s.scrollWidth); }); if(!max) max=el.scrollWidth; if(max>box-1){ var cs=parseFloat(getComputedStyle(el).fontSize)||40; el.style.fontSize=Math.max(20,Math.floor(cs*(box/max)*0.985))+'px'; } } function all(){ [].slice.call(document.querySelectorAll('#klroot h1,#klroot .big,#klroot h2')).forEach(fit); } addEventListener('resize',all); addEventListener('load',all); if(document.fonts&&document.fonts.ready) document.fonts.ready.then(all); setTimeout(all,200); setTimeout(all,900); setTimeout(all,2200); all(); })();