@font-face{font-family:'Inter';font-weight:400;src:url('fonts/Inter-Regular.ttf')}
@font-face{font-family:'Inter';font-weight:500 600;src:url('fonts/Inter-SemiBold.ttf')}
@font-face{font-family:'Inter';font-weight:700;src:url('fonts/Inter-Bold.ttf')}
@font-face{font-family:'Inter';font-weight:800 900;src:url('fonts/Inter-Black.ttf')}
:root{
  --red:#C1152B;--red-d:#9b0f21;--red-l:#fbe9eb;--ink:#121212;--ink2:#3a3a3a;--mut:#767676;--line:#e9e7e4;--bg:#f7f6f4;--card:#fff;
  --ok:#0c8a4f;--warn:#b26a00;--miss:#e00000;--ai:#6b45f0;--r:14px;
  --thumb:#f3f2ef;--soft:#f6f5f3;--soft2:#efeeeb;--ring:0 0 0 1.5px var(--red),0 8px 20px -10px rgba(193,21,43,.45);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font:14px/1.45 Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
.ms{color:var(--miss);font-weight:700}

/* testata */
.top{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--line)}
.top .in{display:flex;align-items:center;gap:18px;padding:10px 20px;max-width:1500px;margin:auto}
.logo{display:flex;align-items:center;gap:9px;text-decoration:none}
.logo b{font-weight:800;font-size:19px;letter-spacing:-.04em}
.logo i{font-style:normal;font-size:9.5px;font-weight:700;letter-spacing:.2em;color:var(--red);text-transform:uppercase}
.nav{display:flex;gap:2px;align-items:center}
.nav a{text-decoration:none;font-weight:500;font-size:13.5px;padding:7px 12px;border-radius:99px;white-space:nowrap;color:var(--ink2)}
.nav a.on{background:var(--ink);color:#fff}
.nav .grp{position:relative}
.nav .grp>button{border:0;background:transparent;font:500 13.5px Inter;padding:7px 12px;border-radius:99px;color:var(--ink2);cursor:pointer;white-space:nowrap}
.nav .grp>button::after{content:"";display:inline-block;width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin:0 0 3px 6px;opacity:.6;transition:transform .15s}
.nav .grp.aperto>button::after{transform:rotate(-135deg);margin-bottom:0}
.nav .grp.on>button{background:var(--ink);color:#fff}
.nav .menu{display:none;position:absolute;top:100%;left:0;padding-top:6px;z-index:40;min-width:190px}
.nav .grp.aperto .menu{display:block}
.nav .menu>a{display:block;background:#fff;padding:10px 14px;border-radius:0;font-size:13px;color:var(--ink2)}
.nav .menu{filter:drop-shadow(0 14px 24px rgba(0,0,0,.14)) drop-shadow(0 1px 2px rgba(0,0,0,.08))}
.nav .menu>a:first-child{border-radius:12px 12px 0 0;padding-top:12px}
.nav .menu>a:last-child{border-radius:0 0 12px 12px;padding-bottom:12px}
.nav .menu>a:hover{background:#f6f5f3}
.nav .menu>a.on{background:#f2f1ef;color:var(--ink);font-weight:700}
/* il passaggio del mouse apre le tendine solo con un mouse vero: col dito restavano aperte e non si chiudevano */
@media (hover:hover) and (pointer:fine){
  .nav a:not(.on):hover,.nav .grp:not(.on)>button:hover{background:#f2f1ef}
  .nav .grp:not(.zitto):hover .menu{display:block}
}
.burger,.nav-testa,.nav-piede,.nav-velo{display:none}
.burger{width:40px;height:40px;border:0;background:transparent;border-radius:11px;cursor:pointer;flex:none;place-content:center;gap:4px;margin-left:-6px}
.burger span{display:block;width:18px;height:2px;border-radius:2px;background:var(--ink)}
.burger:active{background:#f2f1ef}
/* tablet in verticale e telefono: menu laterale */
@media (max-width:1023px){
  .burger{display:grid}
  .nav{position:fixed;top:0;bottom:0;left:0;width:min(320px,86vw);z-index:90;background:#fff;flex-direction:column;align-items:stretch;gap:2px;
    padding:max(14px,env(safe-area-inset-top)) 12px max(20px,env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;
    transform:translateX(-105%);transition:transform .25s cubic-bezier(.2,.8,.2,1),visibility 0s .25s;box-shadow:20px 0 50px -20px rgba(0,0,0,.3);visibility:hidden}
  body.nav-on .nav{transform:none;visibility:visible;transition:transform .25s cubic-bezier(.2,.8,.2,1),visibility 0s}
  body.nav-on .top{z-index:95}
  .nav-velo{display:block;position:fixed;inset:0;z-index:85;background:rgba(10,10,10,.4);opacity:0;pointer-events:none;transition:opacity .25s}
  body.nav-on .nav-velo{opacity:1;pointer-events:auto}
  body.nav-on{overflow:hidden}
  .nav-testa{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 10px 14px}
  .nav-testa b{font-size:17px;font-weight:800;letter-spacing:-.02em}
  .nav-chiudi{width:40px;height:40px;border:0;background:#f4f3f1;border-radius:12px;display:grid;place-items:center;cursor:pointer;color:var(--ink2)}
  .nav>a,.nav .menu>a{padding:12px 14px;font-size:15px;border-radius:12px!important;background:transparent;font-weight:500;color:var(--ink)}
  .nav>a.on,.nav .menu>a.on{background:var(--ink);color:#fff;font-weight:600}
  .nav .grp{position:static}
  .nav .grp>button{display:block;width:100%;text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);padding:18px 14px 6px;background:transparent!important;pointer-events:none;border-radius:0}
  .nav .grp.on>button{color:var(--red)}
  .nav .grp>button::after{display:none}
  .nav .menu{display:block;position:static;padding:0;min-width:0;filter:none}
  .nav .menu>a:first-child,.nav .menu>a:last-child{padding:12px 14px}
  .nav-piede{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding:16px 14px 0;border-top:1px solid var(--line);font-size:12px;color:var(--mut)}
}
a,button,input,select,label,summary{touch-action:manipulation}
.az{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--mut)}
.az select{border:1px solid var(--line);border-radius:8px;padding:5px 8px;background:#fff;font-weight:600;color:var(--ink)}

.wrap{max-width:1500px;margin:auto;padding:24px 20px 32px}
h1{font-size:30px;font-weight:800;letter-spacing:-.035em;line-height:1.1}
h2{font-size:20px;font-weight:800;letter-spacing:-.025em}
h3{font-size:15px;font-weight:700}
.sub{color:var(--mut);margin-top:4px}
.eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--red)}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sp{flex:1}
.head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:22px}

.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 13px;font-weight:600;font-size:13px;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:#cfcbc6}
.btn.p{background:var(--red);border-color:var(--red);color:#fff}
.btn.p:hover{background:var(--red-d)}
.btn.k{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.s{padding:5px 9px;font-size:12px;border-radius:8px}
.btn.g{border-color:transparent;background:transparent}
.btn:disabled{opacity:.5;cursor:default}
.help{width:20px;height:20px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:11px;font-weight:700;color:var(--mut);cursor:pointer;flex:none}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.pad{padding:18px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}

/* famiglie */
.fam{cursor:pointer;overflow:hidden;transition:transform .12s,box-shadow .12s}
@media (hover:hover){.fam:hover{transform:translateY(-2px);box-shadow:0 10px 30px -14px rgba(0,0,0,.25)}}
.fam:active{transform:scale(.99)}
.fam .ph{aspect-ratio:4/3;background:var(--thumb) center/contain no-repeat;transition:background-color .3s}
.fam .tx{padding:14px 16px}
.fam .nm{font-size:22px;font-weight:900;letter-spacing:-.03em}
.fam .og{font-size:11.5px;color:var(--mut)}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.chip{white-space:nowrap;display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 8px;border-radius:99px;background:#f2f1ef;color:var(--ink2)}
.chip.r{background:var(--red-l);color:var(--red)}
.chip.ok{background:#e6f4ec;color:var(--ok)}
.chip.ai{background:#efeafe;color:var(--ai)}
.chip.w{background:#fff3e0;color:var(--warn)}
.dot{width:10px;height:10px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);display:inline-block}

/* variante */
.var{margin-bottom:18px}
.var .vh{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.var .vb{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:0}
.var .vb>div{padding:16px 18px}
.var .vb>div+div{border-left:1px solid var(--line)}
.foto{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.ft{border-radius:12px;position:relative}
.ft .im{aspect-ratio:4/3;background:var(--thumb) center/contain no-repeat;cursor:zoom-in;border-radius:12px;transition:transform .15s,background-color .3s}
.ft .im:hover{transform:scale(1.015)}
.ft .mt{padding:7px 1px 0;font-size:11px;display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.ft{min-width:0}
.ft .mt input,.ft .mt select{min-width:0;max-width:100%;flex:1 1 90px}   /* nelle miniature strette (tablet a 2 colonne) campi e tendine si restringono invece di sbordare */
.ft .mt.col{flex-direction:column;align-items:stretch;gap:5px}
.ft .mt.col select,.ft .mt.col input{flex:0 0 auto;width:100%;height:30px;padding:4px 22px 4px 6px;font-size:12px}   /* in colonna la base flessibile diventerebbe l'altezza: tendine alte 90 px */
.ft .mt>span{min-width:0;max-width:100%}
.ft select{font-size:11px;border:1px solid var(--line);border-radius:6px;padding:1px 3px;background:#fff;max-width:100%}
.ft.prop .im{box-shadow:0 0 0 1.5px var(--ai)}
.ft .badge{position:absolute;top:6px;left:6px}
.campi{width:100%;border-collapse:collapse}
.campi td{padding:7px 4px;border-bottom:1px solid var(--line);vertical-align:middle}
.campi td:first-child{color:var(--mut);width:42%}
.campi input{width:100%;border:1px solid transparent;border-radius:7px;padding:5px 7px;font-weight:700;background:transparent}
.campi input:hover{border-color:var(--line)}
.campi input:focus{border-color:var(--red);outline:none;background:#fff}
.alt{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}
.alt button{border:1px dashed var(--red);background:var(--red-l);color:var(--red);border-radius:7px;padding:3px 8px;font-size:11.5px;font-weight:700;cursor:pointer}
.src{font-size:10.5px;color:var(--mut);display:block;margin-top:1px;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lst{list-style:none}
.lst li{display:flex;gap:6px;align-items:center;margin-bottom:5px}
.lst input{flex:1;border:1px solid var(--line);border-radius:8px;padding:6px 8px}

/* cataloghi */
.tab{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.tab th{text-align:left;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mut);padding:11px 14px;background:#fbfaf9;border-bottom:1px solid var(--line)}
.tab td{padding:12px 14px;border-bottom:1px solid var(--line)}
.tab tr:hover td{background:#fcfbfa}
.st{font-size:11px;font-weight:700;padding:3px 8px;border-radius:99px;text-transform:uppercase;letter-spacing:.06em}
.st.bozza{background:#f2f1ef;color:var(--ink2)}.st.pubblicato{background:#e6f4ec;color:var(--ok)}.st.archiviato{background:#eee;color:#999}
.filtri{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.filtri input,.filtri select,.fld input,.fld select,.fld textarea{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff;min-width:0}

.editor{display:grid;grid-template-columns:420px minmax(0,1fr);gap:18px;align-items:start}
.pan{position:sticky;top:70px;max-height:calc(100vh - 86px);overflow:auto}
.pan{--pp:18px}
.pan.pad{padding:var(--pp)}
.pubbar{position:sticky;bottom:calc(-1 * var(--pp));margin:10px calc(-1 * var(--pp)) calc(-1 * var(--pp));padding:10px var(--pp);background:#fff;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;border-radius:0 0 var(--r) var(--r);z-index:2}
.copsel .piu{background:var(--soft);color:var(--ink2);font-size:11.5px;font-weight:600;width:auto;height:28px;padding:0 11px;border-radius:99px;align-self:center;text-decoration:none;display:inline-flex;align-items:center}
.copsel .piu:hover{background:var(--line)}
.fld{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.fld label{font-size:11.5px;font-weight:700;color:var(--ink2);display:flex;align-items:center;gap:6px}
.fld textarea{min-height:60px;resize:vertical}
.seg{display:flex;background:#f2f1ef;border-radius:10px;padding:3px;gap:2px}
.seg button{flex:1;border:0;background:transparent;border-radius:8px;padding:6px 8px;font-size:12.5px;font-weight:600;cursor:pointer}
.seg button.on{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.sw{position:relative;width:38px;height:22px;flex:none}
.sw input{display:none}
.sw span{position:absolute;inset:0;background:#d8d5d1;border-radius:99px;cursor:pointer;transition:.15s}
.sw span::after{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}
.sw input:checked+span{background:var(--red)}
.sw input:checked+span::after{left:19px}
.sel{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.sel .gr{font-size:11px;font-weight:800;letter-spacing:.1em;padding:8px 12px;background:#fbfaf9;border-bottom:1px solid var(--line)}
.sel label{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-size:13px}
.sel label:hover{background:#fcfbfa}
.sel .th{width:54px;height:40px;flex:none}
.th{background:var(--thumb) center/contain no-repeat;border-radius:8px;transition:background-color .3s}
.sel input[type=checkbox]{width:17px;height:17px;accent-color:var(--red)}
.voce{display:flex;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:6px}
.voce input:not([type=checkbox]){border:1px solid var(--line);border-radius:7px;padding:5px 7px;width:100%;min-width:0;font-weight:600}
.voce input[type=checkbox]{accent-color:var(--red);vertical-align:-2px}
.prev{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.prev .bar{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.prev iframe{width:100%;height:calc(100vh - 120px);border:0;display:block;background:#faf9f7}
.head.edh{align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.head.edh h1{font-size:20px;max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.head.edh .chip{text-transform:capitalize}
.menu{position:relative}
.menu summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:34px;padding:0 10px}
.menu summary::-webkit-details-marker{display:none}
.menu>div{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px -10px rgba(0,0,0,.25);padding:6px;display:flex;flex-direction:column;min-width:160px;z-index:30}
.menu>div button{border:0;background:transparent;text-align:left;padding:8px 10px;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer}
.menu>div button:hover{background:#f5f3f1}
@media (max-width:640px){.head.edh h1{max-width:100%;flex-basis:100%;order:-1}}
.dev{display:flex;gap:2px;background:#f2f1ef;border-radius:8px;padding:2px}
.dev button{border:0;background:transparent;padding:4px 8px;border-radius:6px;font-size:12px;cursor:pointer}
.dev button.on{background:#fff}
.chk{list-style:none}
.chk li{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.chk b{min-width:150px}

/* chat */
.fab{position:fixed;right:22px;bottom:22px;z-index:40;width:58px;height:58px;border-radius:50%;border:0;background:var(--red);color:#fff;box-shadow:0 12px 30px -8px rgba(193,21,43,.6);cursor:pointer;display:grid;place-items:center}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100vw);background:#fff;z-index:50;box-shadow:-20px 0 50px -20px rgba(0,0,0,.25);display:flex;flex-direction:column;transform:translateX(105%);transition:transform .2s}
.drawer.on{transform:none}
.drawer .dh{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.msgs{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:#fbfaf9}
.msg{max-width:88%;padding:10px 13px;border-radius:14px;font-size:13.5px;white-space:pre-wrap}
.msg.u{align-self:flex-end;background:var(--ink);color:#fff;border-bottom-right-radius:4px}
.msg.a{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px}
.az-list{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.az-it{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;padding:8px;border-radius:9px;background:#f7f5ff;border:1px solid #e3dcfd}
.az-it .k{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:5px;flex:none}
.k.arch{background:var(--red-l);color:var(--red)}.k.cat{background:#e8f0ff;color:#2457c5}
.composer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);align-items:flex-end}
.composer textarea{flex:1;border:1px solid var(--line);border-radius:12px;padding:10px 12px;resize:none;max-height:140px;min-height:44px}
.mic{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;flex:none;display:grid;place-items:center}
.mic.rec{background:var(--red);border-color:var(--red);color:#fff;animation:pulse 1.2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(193,21,43,.18)}}
.esempi{display:flex;gap:6px;flex-wrap:wrap;padding:0 16px 12px;background:#fbfaf9}
.esempi button{border:1px solid var(--line);background:#fff;border-radius:99px;padding:5px 10px;font-size:11.5px;cursor:pointer;text-align:left}

/* pannello aiuto, modale, toast */
.side{position:fixed;top:0;right:0;bottom:0;width:min(380px,100vw);background:#fff;z-index:60;box-shadow:-20px 0 50px -20px rgba(0,0,0,.3);padding:22px;overflow:auto;transform:translateX(105%);transition:transform .2s}
.side.on{transform:none}
.side p{margin:10px 0;color:var(--ink2);line-height:1.55}
.modal{position:fixed;inset:0;background:rgba(10,10,10,.55);z-index:70;display:grid;place-items:center;padding:20px}
.modal .box{background:#fff;border-radius:16px;max-width:min(1000px,96vw);max-height:92vh;overflow:auto;padding:18px}
.modal img{max-width:100%;max-height:75vh;display:block;margin:auto}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;z-index:80;font-weight:600;font-size:13px;box-shadow:0 10px 30px rgba(0,0,0,.2)}
.vuoto{padding:40px;text-align:center;color:var(--mut)}
.spin{width:16px;height:16px;border:2px solid #ddd;border-top-color:var(--red);border-radius:50%;animation:sp 0.8s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}

/* smart */
.smart{max-width:640px;margin:auto}
.smart .big{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1.15}
.smart textarea{width:100%;border:1px solid var(--line);border-radius:16px;padding:14px;min-height:110px;font-size:16px;background:#fff}

@media (max-width:1000px){.editor{grid-template-columns:minmax(0,1fr)}.pan{position:static;max-height:none}.var .vb{grid-template-columns:minmax(0,1fr)}.var .vb>div+div{border-left:0;border-top:1px solid var(--line)}}
@media (max-width:640px){.az{flex:none;margin-left:auto}.az select{max-width:150px}.az #chi{display:none}.wrap{padding:16px 12px 96px}h1{font-size:24px}.top .in{padding:8px 12px;gap:10px}.az span{display:none}.logo i{display:none}}

/* nuovo modello */
.drop{border:2px dashed #d6d2cc;border-radius:14px;padding:22px;text-align:center;background:#fbfaf9;margin-top:12px;display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap}
.drop.on{border-color:var(--red);background:var(--red-l)}
.drop .sub{flex-basis:100%}
.prob{padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:#fff}
.prob.bloccante{border-color:#f3c2c8;background:#fff8f8}
.salva-bar{position:sticky;bottom:12px;z-index:5;box-shadow:0 10px 30px -12px rgba(0,0,0,.25);margin-right:76px}

/* editor foto */
.ed{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:20px}
.ed-stage{position:relative;background:#f2f1ef;border-radius:12px;overflow:hidden;line-height:0}
.ed-stage img{width:100%;height:auto;display:block}
.ed-stage canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}
.ed-ver{display:flex;gap:8px;overflow-x:auto}
.ed-ver .ft{flex:none;width:140px}
.ed-ver .ft.sel .im{box-shadow:0 0 0 2px var(--ink)}
@media (max-width:900px){.ed{grid-template-columns:1fr}}

/* editor catalogo a tutta altezza: un solo scroll per pannello, niente scroll a catena */
@media (min-width:1001px){
  body.pieno{overflow:hidden}
  body.pieno .wrap{height:calc(100vh - 57px);display:flex;flex-direction:column;padding-bottom:16px}
  body.pieno .head{flex:none;margin-bottom:14px}
  body.pieno .editor{flex:1;min-height:0;align-items:stretch}
  body.pieno .pan{position:static;max-height:none;height:100%;overflow:auto;overscroll-behavior:contain}
  body.pieno .prev{display:flex;flex-direction:column;min-height:0}
  body.pieno .prev>div:last-child{flex:1;min-height:0}
  body.pieno .prev iframe{height:100%}
}
.pan,.msgs,.ed-ver,.sel{overscroll-behavior:contain}

/* tessuti */
.camp{margin-bottom:16px;overflow:hidden}
.camp.spento{opacity:.6}
.tess{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;padding:14px 18px}
.tile{display:flex;gap:12px;align-items:flex-start;padding:8px;border-radius:14px;cursor:pointer;background:var(--soft);transition:background .15s}
.tile:hover{background:var(--soft2)}
.tile.spento{opacity:.45}
.tile .tx{font-size:13px;min-width:0}
.sw-t{width:58px;height:58px;border-radius:10px;flex:none;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.sw-t.big{width:260px;height:200px;border-radius:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.chip.k{background:var(--ink);color:#fff}
@media (max-width:640px){.grid2{grid-template-columns:1fr}}
input[type=color]{width:84px;height:40px;padding:3px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer}
.copsel{display:flex;gap:6px;flex-wrap:wrap}
.copsel button{width:64px;height:46px;border:0;border-radius:9px;background:var(--soft) center/cover;cursor:pointer;font-size:10.5px;font-weight:600;color:var(--mut)}
.copsel button.on{box-shadow:0 0 0 2.5px var(--ok);position:relative}
.copsel button.on::after{content:'✓';position:absolute;right:3px;bottom:3px;width:16px;height:16px;border-radius:50%;background:var(--ok);color:#fff;font-size:10px;line-height:16px;font-weight:700}

/* niente sbordamenti orizzontali */
.tab td{overflow-wrap:anywhere}
.src{max-width:100%}
@media (max-width:1199px){.tab{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.tab.cat td:first-child{white-space:nowrap}.tab .st{white-space:nowrap}}
@media (max-width:640px){
  .var .vh input[data-k=codice]{width:100%!important}
  .var .vh input[data-k=tipo]{min-width:0!important;width:100%}
  .campi td:first-child{width:38%}
}
.var .vb>div,.editor>*{min-width:0}
.campi{table-layout:fixed}
code,pre{overflow-wrap:anywhere;white-space:pre-wrap}

/* editor catalogo a sezioni */
.pan details{border-top:1px solid var(--line);padding:6px 0 4px}
.pan details:first-child{border-top:0}
.pan summary{cursor:pointer;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);padding:8px 0;list-style:none;display:flex;align-items:center;gap:8px}
.pan summary::before{content:"";width:6px;height:6px;border-right:1.5px solid var(--mut);border-bottom:1.5px solid var(--mut);transform:rotate(-45deg);transition:.15s;margin-right:2px}
.pan details[open] summary::before{transform:rotate(45deg)}
.laysel{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px}
.laysel button{border:0;background:var(--soft);border-radius:12px;padding:9px 5px 7px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;color:var(--mut);transition:background .15s,box-shadow .15s}
.laysel button:hover{background:var(--soft2)}
.laysel button b{color:var(--ink);font-size:11.5px}
.laysel button span{font-size:9.5px;line-height:1.1;text-align:center}
.laysel button.on{background:#fff;box-shadow:var(--ring)}
.laysel button.on b{color:var(--red)}
.laysel svg{border-radius:3px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12)}
/* studio stile */
.studio{display:grid;grid-template-columns:230px minmax(0,1fr) 400px;gap:16px;align-items:start}
.st-lista{display:flex;flex-direction:column;gap:8px}
.st-card{display:block;text-decoration:none;padding:12px 14px}
.st-card.on{box-shadow:var(--ring);border-color:transparent}
.st-main{min-width:0}
.st-main .prev iframe{height:min(70vh,760px)}
.st-chat{display:flex;flex-direction:column;height:calc(100vh - 150px);min-height:520px;position:sticky;top:70px}
.st-chat .dh{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.st-chat.drop-on{outline:2px dashed var(--red)}
.colpick{display:flex;gap:6px;align-items:center}
.colpick input[type=color]{width:44px;height:34px}
.colpick input:not([type=color]){border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-family:monospace}
@media (max-width:1200px){.studio{grid-template-columns:200px minmax(0,1fr)}.st-chat{grid-column:1/-1;position:static;height:70vh}}
@media (max-width:760px){.studio{grid-template-columns:1fr}.st-lista{flex-direction:row;overflow-x:auto}.st-card{min-width:200px}}

/* home */
.home{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.hrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);text-decoration:none;font-size:13.5px}
.hrow .th{width:48px;height:36px;flex:none}
/* smart: miniature */
.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.sm-v{background:var(--soft);border-radius:12px;padding:6px;display:flex;flex-direction:column;gap:3px;cursor:pointer;font-size:12.5px;opacity:.6;position:relative;transition:opacity .15s,box-shadow .15s}
.sm-v.on{opacity:1;background:#fff;box-shadow:var(--ring)}
.sm-v input{position:absolute;top:8px;left:8px;accent-color:var(--red);width:16px;height:16px}
.sm-v .th{aspect-ratio:4/3;border-radius:8px}
.composer label.mic{font-size:17px}

/* impostazioni: lingue */
.cerca-lg{border:0;background:var(--soft);border-radius:10px;padding:8px 12px;min-width:220px;outline:none}
.cerca-lg:focus{box-shadow:0 0 0 2px rgba(193,21,43,.3);background:#fff}
.lg-sez{margin:18px 0 10px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.lingue-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.lg{display:flex;gap:10px;align-items:center;background:var(--soft);border-radius:14px;padding:10px 12px;cursor:pointer;transition:background .15s,box-shadow .15s;min-height:62px}
.lg:hover{background:var(--soft2)}
.lg.on{background:#fff;box-shadow:var(--ring)}
.lg input{accent-color:var(--red);width:17px;height:17px;flex:none}
.lg-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.lg-tx b{font-size:14px}.lg-tx small{color:var(--mut);font-size:11.5px}
.lg .chip{font-size:10.5px;padding:2px 7px;margin-top:2px}
.dic{display:flex;flex-direction:column;gap:6px;max-height:58vh;overflow:auto;padding-right:4px}
.dic-r{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:10px;align-items:center;padding:6px 8px;border-radius:10px;background:var(--soft)}
.dic-r b{display:block;font-size:12.5px;font-weight:600}.dic-r small{display:block;color:var(--mut);font-size:11px}
.dic-r input{border:0;border-radius:8px;padding:8px 10px;background:#fff;min-width:0;width:100%}
.sel-lingua{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff;font-weight:600}
@media (max-width:640px){.dic-r{grid-template-columns:1fr}.cerca-lg{min-width:0;flex:1}}

/* voci riservate all'amministratore (sessione del laboratorio) */
body:not(.super) .solo-super { display: none !important; }

/* tendine: stesso aspetto ovunque (prima solo in .fld, .filtri, .az: le altre restavano quelle del browser) */
select{-webkit-appearance:none;appearance:none;border:1px solid var(--line);border-radius:9px;padding:7px 30px 7px 10px;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23777' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;color:var(--ink);cursor:pointer;min-width:0;max-width:100%;line-height:1.3}
select:hover{border-color:#cfcac4}
select:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(193,21,43,.12)}
select:disabled{opacity:.55;cursor:default}
.az select,.fld select,.filtri select{padding-right:30px}
.ft select{padding:1px 20px 1px 4px;background-position:right 5px center!important;border-radius:6px}

/* Home: card della spesa con stimata e reale affiancate (occupa due colonne della griglia) */
.home-doppia{grid-column:span 2;display:grid;grid-template-columns:1fr 1fr;gap:22px}
.home-doppia>div+div{border-left:1px solid var(--line);padding-left:22px}
@media (max-width:700px){.home-doppia{grid-column:auto;grid-template-columns:1fr}.home-doppia>div+div{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:14px}}

/* chiavi API: testo mascherato invece di type=password, così i gestori di password non le riempiono da soli */
input.segreto{-webkit-text-security:disc;font-family:monospace}

/* trascinamento */
.maniglia{cursor:grab;color:var(--mut);font-size:18px;line-height:1;padding:4px 2px;user-select:none;touch-action:none}
.maniglia:active{cursor:grabbing}
.trascina-ombra{opacity:.35}
.trascina-scelto{box-shadow:0 8px 24px rgba(0,0,0,.18)}
.tess .tile{cursor:grab}

/* Modelli: stato e vista a lista */
.fam.spento .ph,.fam-riga.spento .ph{filter:grayscale(.8);opacity:.6}
.fam-az{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--line)}
.lista-fam{display:flex;flex-direction:column;gap:8px}
.fam-riga{display:flex;align-items:center;gap:14px;padding:8px;cursor:pointer}
.fam-riga .ph{width:96px;height:68px;border-radius:10px;background:#f1f0ee center/contain no-repeat;flex:none}
.fam-riga .tx{flex:1;min-width:0}
.fam-riga .nm{font-weight:800;font-size:16px}
.fam-riga .og{font-weight:400;font-size:12px;color:var(--mut);margin-left:6px}
.fam-riga .fam-az{border-top:0;padding:0 6px}
@media (max-width:640px){.fam-riga{flex-wrap:wrap}.fam-riga .fam-az{width:100%}}

/* elenchi modificabili: maniglia, disattiva, elimina */
.lst li{display:flex;align-items:center;gap:6px}
.lst li input{flex:1}
.lst li.off input,.campi tr.off td{opacity:.45;text-decoration:line-through}
.btn.ico{padding:4px 6px;display:inline-flex;align-items:center;justify-content:center;min-width:26px}
.campi td.cm-man{width:22px;padding-right:0;color:inherit}
.campi td.cm-man+td{color:var(--mut);width:36%}
.campi .cm-az{width:62px;white-space:nowrap;text-align:right}
.campi tr.off .cm-az,.campi tr.off .cm-man{opacity:1;text-decoration:none}
/* foto del modello */
.foto .ft{cursor:grab}
.foto .ft.spenta .im{opacity:.35;filter:grayscale(1)}
.ft-az{display:flex;gap:0;align-items:center;margin-top:3px}
.ft-az .sp{flex:1}
.ft-az .btn.ico{padding:4px 3px;min-width:23px;color:var(--ink2)}
.ft-az .cop-on{color:var(--ok);cursor:default}
/* la copertina del modello si vede subito: anello verde e etichetta sulla foto */
.ft.cop .im{box-shadow:0 0 0 2.5px var(--ok)}
.ft .im{position:relative}
.ft .cop-tag{top:auto;bottom:6px;left:6px;background:var(--ok);color:#fff;gap:4px;padding:3px 8px 3px 6px;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.ft .cop-tag svg{width:12px;height:12px}
/* visore a schermo intero */
.visore{position:fixed;inset:0;background:#0b0b0b;z-index:1000;overflow:hidden;touch-action:none}
.visore img{position:absolute;left:50%;top:calc(50% - 28px);transform-origin:center;translate:-50% -50%;max-width:none;user-select:none;cursor:zoom-in;will-change:transform}
.vs-bar{position:absolute;left:0;right:0;bottom:0;height:56px;display:flex;align-items:center;gap:6px;padding:0 14px;background:rgba(0,0,0,.75);color:#ddd;font-size:13px}
.vs-bar button,.vs-bar a{background:#222;color:#eee;border:1px solid #333;border-radius:8px;padding:6px 10px;cursor:pointer;text-decoration:none;font:inherit}
.vs-bar button:hover,.vs-bar a:hover{background:#333}
.vs-nav{position:absolute;top:calc(50% - 50px);width:46px;height:64px;border:0;border-radius:10px;background:rgba(255,255,255,.08);color:#fff;font-size:34px;cursor:pointer}
.vs-p{left:12px}.vs-n{right:12px}
.vs-x{position:absolute;top:12px;right:12px;width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.35);border-radius:99px;background:rgba(0,0,0,.62);color:#fff;cursor:pointer;z-index:3;box-shadow:0 2px 10px rgba(0,0,0,.35)}
.vs-x:hover{background:rgba(0,0,0,.8)}
.vs-nav{z-index:2;background:rgba(0,0,0,.45)!important}
.vs-bar{z-index:2}
@media (max-width:640px){.vs-info{display:none}.vs-bar{gap:4px;padding:0 8px}}

.seg button{white-space:nowrap}
.maniglia svg{display:block}

/* colori delle schede modello: una riga che scorre (trascinando o col dito), sfumata a destra se continua */
.scorri{display:flex;gap:6px;overflow-x:auto;margin-top:6px;padding-bottom:2px;scrollbar-width:none;cursor:grab;user-select:none;touch-action:pan-x;
  -webkit-mask-image:linear-gradient(to right,#000 82%,transparent);mask-image:linear-gradient(to right,#000 82%,transparent)}
.scorri::-webkit-scrollbar{display:none}
.scorri.fine{-webkit-mask-image:none;mask-image:none}
.scorri.trascino{cursor:grabbing}
.scorri .chip{flex:none;white-space:nowrap}

/* barre di scorrimento: sottili e discrete ovunque (prima: barre spesse doppie nei pannelli interni) */
*{scrollbar-width:thin;scrollbar-color:#d3cfca transparent}
*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-thumb{background:#d3cfca;border-radius:8px;border:2px solid transparent;background-clip:padding-box}
*::-webkit-scrollbar-track{background:transparent}
/* caselle di testo che crescono col contenuto: la barra compare solo oltre l'altezza massima */
textarea{field-sizing:content}
.fld textarea{max-height:320px}
.composer textarea{field-sizing:content;overflow-y:auto}
.campi td,.lst li{scrollbar-width:none}

/* PWA: banner di installazione e di aggiornamento (in basso, sopra la chat) */
.pwa-banner{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);z-index:45;display:flex;align-items:center;gap:10px;max-width:min(560px,calc(100vw - 24px));background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;box-shadow:0 16px 40px -12px rgba(0,0,0,.3)}
.pwa-banner[hidden]{display:none}
.pwa-banner .pb-testo{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;font-size:13px}
.pwa-banner .pb-testo span{color:var(--ink2);font-size:12px}
@media (max-width:640px){.pwa-banner{bottom:90px;left:12px;right:12px;transform:none;max-width:none;flex-wrap:wrap}.pwa-banner .pb-testo{flex-basis:100%}.pwa-banner .btn{flex:1;justify-content:center}}

/* tablet (fino a 1199 px: iPad in verticale e in orizzontale): tutto più compatto, titoli su una riga.
   Qui stanno TUTTE le regole del tablet; sotto i 640 px valgono anche quelle del telefono. */
@media (max-width:1199px){
  .wrap{padding:14px 14px 90px}
  .top .in{padding:7px 14px;gap:12px}
  h1{font-size:22px}
  h2{font-size:17px}
  h3{font-size:14px}
  .pad{padding:13px}
  .grid{gap:12px}
  .fld{margin-bottom:9px}
  .tab th{padding:8px 10px}
  .tab td{padding:9px 10px}
  .pan summary{padding:6px 0}
  .pan{--pp:13px}
  .fam .tx{padding:10px 12px}
  .fam .nm{font-size:18px}
  .filtri{margin-bottom:10px;gap:6px}
  .head{gap:6px 10px;margin-bottom:12px;align-items:center}
  .head .btn{padding:6px 10px;font-size:12.5px}
  /* testata di pagina: sopratitolo · titolo · sottotitolo sulla stessa riga, sottotitolo troncato */
  .head:not(.edh)>div:first-child{flex:1 1 280px;min-width:0;display:flex;align-items:baseline;gap:2px 10px;flex-wrap:wrap}
  .head:not(.edh)>div:first-child>.eyebrow{font-size:9.5px}
  .head:not(.edh)>div:first-child>.sub{margin-top:0;flex:1 1 160px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}
  .head:not(.edh)>div:first-child>.row{margin-top:0!important;flex:1 1 auto}
  .head #fam-nome{font-size:24px!important;width:min(300px,100%)!important}
  .head.edh h1{font-size:18px}
  .home{gap:12px}
  .camp{margin-bottom:12px}
  .tess{padding:10px 13px;gap:8px}
  .salva-bar{margin-right:70px}
}

/* editor catalogo: pagine come livelli */
.livelli{display:flex;flex-direction:column;gap:3px}
.lv{display:flex;align-items:center;gap:5px;padding:4px 6px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:12.5px;min-height:34px}
.lv.sel{box-shadow:var(--ring)}
.lv.off{opacity:.5}
.lv-h{width:14px;color:#c4c0bb;font-size:14px;flex:none;text-align:center}
.lv-h.drag{cursor:grab}
.lv-b{border:0;background:transparent;cursor:pointer;font-size:12px;padding:2px 4px;border-radius:6px;color:var(--ink2);flex:none;line-height:1}
.lv-b:hover{background:#f2f1ef}
.lv-web{font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ok)}
.lv-web.off{color:var(--mut);text-decoration:line-through}
.lv-tag{font-size:9.5px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;flex:none}
.lv-i{width:18px;text-align:center;color:var(--mut);flex:none;font-size:11px}
.lv-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.lv-n.ed{cursor:text}
.lv-ren{flex:1;min-width:0;border:1px solid var(--line);border-radius:6px;padding:2px 6px;font-size:12.5px}
.lv-vers{margin:4px 0 6px 20px;display:flex;flex-direction:column;gap:4px}
.lv-v{margin-bottom:0;padding:6px 8px}
.lv-v.off{opacity:.55}
.lv-edit{margin-top:8px;background:#fbfaf9}
.menu.agg summary{padding:5px 9px}
.menu.agg>div{left:0;right:auto;min-width:200px}
.menu.agg>div button{white-space:nowrap}

/* inquadratura (punto di fuoco) */
.inq{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(220px,1fr);gap:16px;align-items:start}
.inq-src{position:relative;background:#f2f1ef;border-radius:12px;overflow:hidden;cursor:crosshair;line-height:0;touch-action:none;user-select:none}
.inq-src img{width:100%;height:auto;display:block;max-height:60vh;object-fit:contain;pointer-events:none}
.inq-mira{position:absolute;width:26px;height:26px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 2px var(--red),0 2px 10px rgba(0,0,0,.4);transform:translate(-50%,-50%);pointer-events:none}
.inq-mira::after{content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;background:var(--red);border-radius:50%;transform:translate(-50%,-50%)}
.inq-prev{width:100%;background:#eceae6;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.inq-prev img{width:100%;height:100%;display:block}
.copsel label.piu{cursor:pointer}
@media (max-width:700px){.inq{grid-template-columns:1fr}}

/* scheda modello 12/10: versioni disattivate, etichette codice/nome, colori mancanti, scelta di foto */
.var.off{opacity:.62;filter:grayscale(.7)}
.var.off .vh{border-bottom:0}
.vlab{display:flex;flex-direction:column;gap:2px}
.vlab>span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.ft.nocol .im{box-shadow:0 0 0 2px var(--miss)}
.ft select.manca{border-color:var(--miss);color:var(--miss);font-weight:700;background-color:#fff3f3}
.scegli-foto{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;max-height:300px;overflow:auto;padding:2px}
.scegli-foto.alta{max-height:52vh}
.sf{position:relative;display:flex;flex-direction:column;gap:3px;cursor:pointer;border-radius:10px;padding:4px;border:1px solid var(--line)}
.sf.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.sf input{position:absolute;top:8px;left:8px;z-index:1}
.sf .im{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:#f7f6f4 center/contain no-repeat;border-radius:7px}
.sf small{font-size:10.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drive-lista{border:1px solid var(--line);border-radius:12px;max-height:52vh;overflow:auto}
.drive-lista .dl{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);font-size:13.5px}
.drive-lista .dl:last-child{border-bottom:0}
.drive-lista .dl.dir{cursor:pointer}
.drive-lista .dl.dir:hover{background:var(--bg)}
.drive-lista .dl .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ft-az .btn.ico{min-width:19px;padding:4px 1px}
.ft-az{flex-wrap:wrap}
