.js .rv{opacity:0;transform:translateY(20px);transition:opacity .6s var(--d,0ms),transform .6s var(--d,0ms)}
.js .rv.in{opacity:1;transform:none}
.js .rv.in.card:hover,.js .rv.in.more a:hover{transform:translateY(-5px)}
.card,.more a{transition:box-shadow .3s}
.card:hover{box-shadow:0 20px 34px #0003}
.glass:before{content:"";position:absolute;inset:0;background:radial-gradient(circle 240px at var(--mx,70%) var(--my,8%),#fff3c866,transparent);pointer-events:none;z-index:0}
/* mappa */
.fab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:30;background:linear-gradient(var(--brassL),var(--brass));color:#1d1710;border:1px solid #f1d8a6;border-radius:999px;padding:.65rem 1.25rem;font:500 1rem var(--head);box-shadow:0 10px 24px #0007;cursor:pointer}
body.home:not(.open) .fab{display:none}
dialog{border:2px solid var(--brass);background:var(--bg);color:var(--ink);width:min(820px,94vw);padding:20px;max-height:92vh;overflow:auto}
dialog::backdrop{background:#000b}
.dh{display:flex;justify-content:space-between;align-items:center}
.dh h2{font:500 1.8rem var(--head)}
.x{background:none;border:1px solid var(--ink);color:var(--ink);width:40px;height:40px;border-radius:50%;font-size:1.4rem;cursor:pointer}
dialog p{color:var(--mute);margin:6px 0 16px}
.fp{position:relative;height:480px;max-width:760px;margin:0 auto;background:var(--bg2);border:1px solid var(--line);overflow:hidden}
.fp:before{content:"";position:absolute;left:50%;transform:translateX(-50%);top:0;bottom:0;width:90px;background:linear-gradient(90deg,transparent 43px,var(--brassL) 43px 47px,transparent 47px),repeating-linear-gradient(0deg,#0001 0 2px,transparent 2px 60px),var(--card)}
.fp-s{position:absolute;width:calc(50% - 70px);height:96px;top:var(--y);transform:translateY(-50%);display:flex;flex-direction:column;justify-content:center;padding:0 16px;text-decoration:none;background:var(--card);border:1px solid var(--line);color:var(--ink);transition:transform .2s,box-shadow .2s;z-index:1}
.fp-s.l{left:14px;border-left:6px solid var(--c)}.fp-s.r{right:14px;border-right:6px solid var(--c)}
.fp-s:hover,.fp-s[aria-current]{box-shadow:0 0 0 2px var(--c),0 12px 24px #0003;transform:translateY(-50%) scale(1.03)}
.fp-s b{font:500 1.05rem var(--head)}.fp-s small{color:var(--mute);line-height:1.3}
.fp-s.dk{background:#22262c;color:#f1ebdd;--c:var(--brass)}.fp-s.dk small{color:#bdb7a8}
.fp-in,.fp-top{position:absolute;left:50%;transform:translateX(-50%);font:500 .85rem var(--head);z-index:2;padding:2px 14px}
.fp-in{bottom:6px;background:#22262c;color:var(--glow);border:1px solid var(--brass)}
.fp-top{top:8px;color:var(--mute);background:var(--card)}
.pin{position:absolute;left:50%;top:var(--py);width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:#e23b3b;border:3px solid #fff;animation:ping 1.8s infinite;transition:top .65s cubic-bezier(.5,0,.2,1);z-index:3}
.pin:after{content:"Sei qui";position:absolute;top:-26px;left:50%;transform:translateX(-50%);background:#e23b3b;color:#fff;font:500 .7rem var(--head);padding:1px 8px;border-radius:99px;white-space:nowrap}
@keyframes ping{0%{box-shadow:0 0 0 0 #e23b3b99}100%{box-shadow:0 0 0 16px #e23b3b00}}
@media (max-width:560px){.fp-s{width:calc(50% - 54px);padding:0 10px}.fp-s small{display:none}.fp-s b{font-size:.92rem}}
/* laboratori */
.lab{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:26px;align-items:start;background:var(--card);border:1px solid var(--line);border-top:5px solid var(--c,var(--brass));padding:26px;box-shadow:0 18px 34px #0002}
.labintro{color:var(--mute);max-width:62ch;margin:0 0 22px}
.lbl{font:500 1rem var(--head);margin:0 0 8px}
.fld{display:block;font:500 .95rem var(--head);margin-bottom:16px}
.fld input{display:block;width:100%;margin-top:6px;padding:.6rem .8rem;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:400 1rem var(--body);border-radius:6px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.chip{position:relative}.chip input{position:absolute;opacity:0;pointer-events:none}
.chip span{display:inline-block;padding:.4rem .95rem;border:1px solid var(--ink);border-radius:999px;font:400 .95rem var(--head);cursor:pointer;user-select:none;transition:background .2s,color .2s}
.chip input:checked+span{background:var(--ink);color:var(--bg)}
.chip input:focus-visible+span{outline:3px solid var(--brass);outline-offset:2px}
.sum{color:var(--mute);font-size:.98rem;margin:14px 0}
.chk{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);margin-bottom:8px;cursor:pointer;background:var(--bg)}
.chk input{accent-color:var(--brass);width:20px;height:20px;flex:none}
.br{border:1px solid #555;border-radius:10px;overflow:hidden;background:#fff;color:#222;box-shadow:0 14px 30px #0003}
.brb{background:#e6e3dc;display:flex;align-items:center;gap:6px;padding:8px 10px}.brb i{width:10px;height:10px;border-radius:50%;background:#bbb}
.brb span{margin-left:8px;flex:1;background:#fff;border-radius:99px;padding:1px 12px;font-size:.8rem;color:#555}
.brs{padding:12px;display:grid;gap:10px;min-height:260px;align-content:start}
.mh{display:flex;justify-content:space-between;align-items:center;font:600 1rem var(--head)}
.cart{font:500 .85rem var(--body);background:#ffe3b0;border-radius:99px;padding:2px 10px;opacity:.3;transition:opacity .3s}.cart.on{opacity:1}
.mhero{height:64px;border-radius:6px;background:linear-gradient(120deg,var(--brass),#2a2e35)}.mhero span{display:block;height:8px;width:50%;background:#fff8;margin:14px 12px 0;border-radius:4px}.mhero span+span{width:30%}
.brs [data-s]{max-height:0;opacity:0;overflow:hidden;transition:max-height .5s,opacity .4s}
.brs [data-s].on{max-height:140px;opacity:1}
.brs .cart[data-s]{max-height:none;overflow:visible;opacity:.3}.brs .cart[data-s].on{opacity:1}
.mg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mg i{height:58px;border-radius:6px;background:linear-gradient(135deg,#e8d7b5,#c9a56b);cursor:pointer;transition:transform .15s}.mg i:hover{transform:scale(1.06)}
.mt span{display:block;height:7px;background:#ddd;border-radius:4px;margin:6px 0;width:80%}.mt span+span{width:95%}.mt span+span+span{width:60%}
.mb{justify-self:start;background:#1f7a5a;color:#fff;padding:3px 12px;border-radius:99px;font-size:.8rem}
.mm{height:64px;background:repeating-linear-gradient(45deg,#e7efe3 0 10px,#dbe7d6 10px 20px);border-radius:6px;display:grid;place-items:center;font-size:.85rem;color:#456}
.mf{display:grid;gap:6px}.mf span{height:20px;border:1px solid #ccc;border-radius:4px}.mf b{background:#222;color:#fff;border-radius:4px;padding:3px 10px;justify-self:start;font-size:.8rem}
.res{text-align:center}
.gauge{--p:0;width:150px;height:150px;border-radius:50%;background:conic-gradient(var(--brass) calc(var(--p) * 1%),var(--line) 0);display:grid;place-items:center;margin:0 auto 14px}
.gauge div{width:114px;height:114px;border-radius:50%;background:var(--card);display:grid;place-items:center;font:500 2rem var(--head)}
.msg{font:500 1.15rem var(--head);margin:0 0 10px}
.miss{list-style:none;padding:0;margin:0 0 16px;text-align:left}
.miss li{padding:8px 0 8px 22px;border-bottom:1px solid var(--line);position:relative;color:var(--mute)}
.miss li:before{content:"";position:absolute;left:4px;top:17px;width:8px;height:8px;border:1px solid var(--brass);transform:rotate(45deg)}
.tl{position:relative;margin:0 0 16px;padding:0 0 0 34px;list-style:none}
.tl:before{content:"";position:absolute;left:11px;top:6px;bottom:14px;width:2px;background:var(--line)}
.tl li{position:relative;padding:0 0 16px;animation:sl .45s both}
.tl li:before{content:"";position:absolute;left:-30px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--brass);box-shadow:0 0 0 4px var(--card)}
.tl b{font:500 1.1rem var(--head);display:block}.tl span{color:var(--mute);font-size:.97rem}.tl a{margin-left:8px;border-bottom:2px solid var(--brass);text-decoration:none;font-weight:600;font-size:.95rem}
@keyframes sl{from{opacity:0;transform:translateX(-12px)}}
.scr{margin:0 auto 14px;aspect-ratio:var(--ar,16/9);width:min(100%,var(--w,440px));background:#111;border:6px solid #2c3037;border-radius:10px;position:relative;overflow:hidden;color:#fff;transition:width .4s}
.sc{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:14px;font:500 clamp(1.1rem,3vw,1.7rem) var(--head);opacity:0;transition:opacity .6s}
.sc.on{opacity:1}.sc small{display:block;font:400 .8rem var(--body);opacity:.8;margin-top:4px}
.pg{position:absolute;left:0;bottom:0;height:5px;background:var(--brassL);width:0;transition:width 2.2s linear;z-index:2}
.ctl{display:flex;justify-content:center;gap:10px;align-items:center}
.ph{width:250px;margin:0 auto;border:8px solid #15181c;border-radius:30px;background:#fff;color:#222;overflow:hidden;box-shadow:0 20px 40px #0004;min-height:440px}
.ph .cv{height:70px;background:linear-gradient(120deg,#3b5998,#5b7bd5)}
.ph .av{width:64px;height:64px;border-radius:50%;background:#2a2e35;color:#fff;display:grid;place-items:center;font:600 1.5rem var(--head);border:4px solid #fff;margin:-30px 12px 0;position:relative}
.ph.ig .cv{height:16px;background:#fff}.ph.ig .av{margin-top:0;box-shadow:0 0 0 3px #d6249f;background:linear-gradient(45deg,#f9a03f,#d6249f,#4f5bd5)}
.ph .nm{padding:6px 12px 0;font:600 1.05rem var(--head);overflow-wrap:anywhere}.ph .hd{padding:0 12px;color:#777;font-size:.85rem}
.ph .bt{display:flex;gap:8px;padding:10px 12px}.ph .bt b{flex:1;text-align:center;padding:5px;border-radius:6px;font:500 .85rem var(--head);color:#fff;background:#3b5998}.ph.ig .bt b:first-child{background:#d6249f}.ph.ig .bt b+b{background:#eee;color:#222}
.ph .tb{display:flex;border-top:1px solid #eee;border-bottom:1px solid #eee}.ph .tb button{flex:1;background:none;border:0;border-bottom:2px solid transparent;padding:7px;font:500 .85rem var(--head);color:#999;cursor:pointer}.ph .tb button.a{color:#222;border-color:#222}
.ph .gd{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:2px}.ph .gd i{aspect-ratio:1;background:var(--t);display:grid;place-items:center;font-style:normal;transition:transform .2s}.ph .gd i:hover{transform:scale(.94)}
@media (max-width:820px){.lab{grid-template-columns:1fr;padding:18px}}
