:root{--blue:#0b63f6;--blue2:#eaf2ff;--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--bg:#f8fafc;--card:#fff;--green:#16a34a;--orange:#f97316;--danger:#ef4444;--shadow:0 18px 45px rgba(15,23,42,.08)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--blue);text-decoration:none}h1,h2,h3{margin:0}h1{font-size:28px;letter-spacing:-.03em}h2{font-size:18px;letter-spacing:-.02em}small,.small{font-size:12px}.muted{color:var(--muted)}.block{display:block}.mt{margin-top:18px}.mt-small{margin-top:10px}.nowrap{white-space:nowrap}.hidden{display:none!important}.full{width:100%}.empty{padding:28px;text-align:center;color:var(--muted)}
.app-shell{--sidebar-width:220px;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh;transition:grid-template-columns .22s ease}.sidebar{background:#fff;border-right:1px solid var(--line);padding:22px 10px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:30;min-width:0;transition:padding .22s ease}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 28px;color:var(--ink);font-weight:800;font-size:21px;min-height:42px;white-space:nowrap;overflow:hidden}.brand-icon{width:34px;height:34px;min-width:34px;border:3px solid var(--blue);color:var(--blue);border-radius:12px;display:grid;place-items:center;font-weight:900}.brand-label,.nav-label{transition:opacity .12s ease,transform .18s ease;overflow:hidden}.nav{display:flex;flex-direction:column;gap:8px}.nav-item{display:flex;align-items:center;gap:13px;color:#263244;padding:13px 14px;border-radius:12px;font-weight:650;white-space:nowrap;overflow:hidden;min-height:48px}.nav-icon{font-size:20px;width:26px;min-width:26px;text-align:center}.nav-item.active,.nav-item:hover{background:var(--blue2);color:var(--blue)}.sidebar-toggle{position:absolute;top:96px;right:-17px;width:34px;height:50px;border:1px solid var(--line);border-radius:12px;background:#fff;color:#334155;display:grid;place-items:center;font-size:24px;line-height:1;cursor:pointer;box-shadow:0 5px 16px rgba(15,23,42,.08);z-index:40;transition:color .15s ease,background .15s ease,transform .22s ease}.sidebar-toggle:hover{background:var(--blue2);color:var(--blue)}.main{min-width:0;width:100%}.topbar{height:86px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px 0 26px;position:sticky;top:0;z-index:20;gap:18px}.topbar-title{min-width:0}.top-actions{display:flex;gap:12px;align-items:center;flex:0 0 auto}.user-summary{line-height:1.15}.avatar{width:34px;height:34px;min-width:34px;background:var(--blue);color:white;border-radius:50%;display:grid;place-items:center;font-weight:800}.content{padding:24px 26px;width:100%;max-width:none}.sidebar-collapsed .app-shell{--sidebar-width:76px}.sidebar-collapsed .sidebar{padding-left:8px;padding-right:8px}.sidebar-collapsed .brand{justify-content:center;padding-left:0;padding-right:0}.sidebar-collapsed .brand-label,.sidebar-collapsed .nav-label{opacity:0;transform:translateX(-8px);width:0;pointer-events:none}.sidebar-collapsed .nav-item{justify-content:center;padding-left:10px;padding-right:10px;gap:0}.sidebar-collapsed .sidebar-toggle{transform:rotate(180deg)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 2px rgba(15,23,42,.03);padding:22px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;padding:10px 15px;font-weight:750;cursor:pointer;font-size:14px}.btn-primary{background:var(--blue);color:#fff}.btn-outline{background:#fff;color:var(--blue);border:1px solid #9ec5ff}.btn-light{background:#f8fafc;color:#1e293b;border:1px solid var(--line)}.btn-danger{background:var(--danger);color:white}.toolbar{display:flex;flex-wrap:wrap;gap:8px}.alert{padding:12px;border-radius:12px;margin:10px 0}.alert-danger{background:#fee2e2;color:#991b1b}.note-box,.info-box,.info-strip{background:var(--blue2);color:#0752c5;border-radius:12px;padding:12px;line-height:1.4}.info-strip{margin-top:16px}.pill,.status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:#eef2ff;color:#315aa9;font-size:12px;font-weight:750}.pill.green,.status.in-corso{background:#dcfce7;color:#166534}.pill.gray,.status.bozza{background:#f1f5f9;color:#475569}.status.in-revisione{background:#e0f2fe;color:#075985}.form-stack{display:flex;flex-direction:column;gap:14px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.span-2{grid-column:span 2}label{display:flex;flex-direction:column;gap:7px;font-weight:700;color:#334155;font-size:13px}input,select,textarea{border:1px solid var(--line);border-radius:10px;padding:11px 12px;font:inherit;background:#fff;color:var(--ink);width:100%}textarea{resize:vertical}.table{width:100%;border-collapse:collapse}.table th{text-align:left;color:#64748b;font-size:12px;font-weight:800;padding:13px;border-bottom:1px solid var(--line)}.table td{padding:14px 13px;border-bottom:1px solid var(--line);vertical-align:middle}.table td small{display:block;color:var(--muted);margin-top:3px}.layout-2{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px}.layout-2.narrow-right{grid-template-columns:minmax(0,1fr) 360px}.dashboard-grid{display:grid;grid-template-columns:repeat(4,1fr) 300px;gap:18px;margin-bottom:22px}.kpi-card,.welcome-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;display:flex;gap:18px;align-items:center}.kpi-icon{width:52px;height:52px;border-radius:14px;background:var(--blue2);color:var(--blue);display:grid;place-items:center;font-size:26px}.kpi-card span{display:block;color:#334155}.kpi-card strong{display:block;font-size:34px;margin:5px 0}.kpi-card small b{color:var(--blue)}.site-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.site-card{border:1px solid var(--line);border-radius:14px;padding:16px;color:var(--ink);display:grid;gap:6px}.site-card span{font-size:28px}.site-card em{font-style:normal;color:var(--muted);font-size:13px}.right-column .quick{display:flex;justify-content:space-between;background:var(--blue2);padding:14px;border-radius:12px;margin-top:10px;font-weight:750}.activity{border-bottom:1px solid var(--line);padding:12px 0}.activity small{display:block;color:var(--muted);margin-top:4px}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(140deg,#eef6ff,#fff)}.login-card{width:min(450px,92vw);background:white;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;padding:34px}.login-brand{padding:0;margin-bottom:18px}.site-meta{display:flex;gap:16px;padding:12px 0 20px;color:var(--muted)}
.stepper{display:flex;justify-content:center;align-items:center;gap:18px;margin:0 0 22px;background:white;border:1px solid var(--line);border-radius:16px;padding:14px}.step{display:flex;align-items:center;gap:9px;color:#475569;font-weight:750;text-decoration:none}.step b{width:38px;height:38px;border-radius:50%;border:1px solid #cbd5e1;display:grid;place-items:center;background:#fff;color:#64748b;transition:border-color .18s ease,background-color .18s ease,color .18s ease,transform .18s ease}.step .step-icon{width:18px;height:18px;display:block}.step.active,.step.done{color:var(--blue)}.step.active b,.step.done b{border-color:var(--blue);color:var(--blue);background:var(--blue2)}.step.active b{transform:translateY(-1px)}.stepper i{display:block;width:70px;height:1px;background:#cbd5e1}.planner-layout{display:grid;grid-template-columns:310px minmax(620px,1fr) 330px;gap:18px;align-items:start}.camera-list,.properties{padding:18px;position:sticky;top:105px}.device-list{display:flex;flex-direction:column;gap:9px;margin:16px 0}.device-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px;cursor:pointer;background:#fff}.device-row.active{border-color:var(--blue);box-shadow:0 0 0 3px rgba(11,99,246,.12)}.device-row .thumb{width:44px;height:36px;border-radius:8px;background:#f1f5f9;display:grid;place-items:center}.upload-box{border-top:1px solid var(--line);margin-top:18px;padding-top:16px;display:flex;flex-direction:column;gap:10px}.canvas-wrap{padding:16px}.canvas-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:12px}#plannerCanvas{width:100%;height:auto;border-radius:14px;background:#fff;border:1px solid var(--line);display:block}.canvas-bottom{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px;padding:10px 4px 0}.scale{font-weight:750;color:#111827}.selected-product{display:flex;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:14px}.product-thumb{width:64px;height:54px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;display:grid;place-items:center;overflow:hidden}.product-thumb img,.camera-preview-img img{max-width:100%;max-height:100%;object-fit:contain}.legend-row{display:flex;align-items:center;gap:8px;color:#334155}.dot{width:12px;height:12px;border-radius:4px}.dot.blue{background:#0b63f6}.dot.green{background:#16a34a}.icon-danger{background:#fee2e2;border:0;color:#b91c1c;border-radius:9px;padding:7px 10px;font-size:20px;cursor:pointer}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.35);display:grid;place-items:center;z-index:100}.modal{width:min(780px,92vw);background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:28px;position:relative}.big-modal{width:min(850px,95vw)}.modal-x{position:absolute;top:16px;right:16px;border:0;background:#fff;font-size:24px;cursor:pointer;color:#475569}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:18px}.product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px}.product-card{border:1px solid var(--line);border-radius:14px;padding:14px;cursor:pointer;display:grid;gap:8px;background:#fff}.product-card:hover,.product-card.selected{border-color:var(--blue);box-shadow:0 0 0 3px rgba(11,99,246,.10)}.product-card .pic{height:85px;border-radius:12px;background:#f8fafc;display:grid;place-items:center;font-size:32px;overflow:hidden}.product-card img{max-width:100%;max-height:100%;object-fit:contain}.product-card strong{font-size:15px}.product-editor{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:22px}.spec-section{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.compat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.compat-card{border:1px solid var(--line);border-radius:14px;padding:12px;display:grid;gap:5px;cursor:pointer}.compat-card:has(input:checked){border-color:var(--blue);box-shadow:0 0 0 3px rgba(11,99,246,.10)}.mini-thumb{height:58px;border-radius:10px;background:#f8fafc;display:grid;place-items:center}.product-preview{position:sticky;top:105px}.camera-preview-img{height:230px;border-bottom:1px solid var(--line);display:grid;place-items:center;font-size:64px;margin:-22px -22px 22px;background:#fff;border-radius:16px 16px 0 0}.product-preview dl,.pdf-page dl{display:grid;grid-template-columns:110px 1fr;gap:10px}.product-preview dt,.pdf-page dt{color:var(--muted);font-size:13px}.product-preview dd,.pdf-page dd{margin:0}.quote-layout{display:grid;grid-template-columns:520px minmax(0,1fr);gap:20px}.pdf-preview{padding:0;overflow:hidden}.pdf-bar{height:54px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;padding:0 20px;color:#334155}.pdf-page{background:#fff;margin:0 auto;padding:34px;width:420px;min-height:610px}.fake-logo{color:var(--blue);font-size:20px;margin-bottom:38px}.fake-logo small{display:block;color:#64748b;margin-left:34px}.pdf-page h2{color:var(--blue);font-size:22px;margin-bottom:10px}.pdf-page h1{font-size:26px;margin-bottom:24px}.mini-map-preview{width:210px;height:160px;background:linear-gradient(90deg,#f8fafc 24px,transparent 1%) center/42px 42px,linear-gradient(#f8fafc 24px,transparent 1%) center/42px 42px;border:1px solid var(--line);margin:22px 0 20px 140px;position:relative}.mini-map-preview span{position:absolute;background:var(--blue);color:white;border-radius:6px;padding:3px 6px;font-size:12px}.mini-map-preview span:nth-child(1){left:30px;top:30px}.mini-map-preview span:nth-child(2){left:100px;top:80px}.mini-map-preview span:nth-child(3){right:20px;bottom:20px}.pdf-page footer{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;border-top:1px solid #dbeafe;background:#eff6ff;margin:20px -34px -34px;padding:18px 22px;color:#0b63f6;font-size:11px;text-align:center}.quote-main{display:flex;flex-direction:column;gap:16px}.summary-cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.mini-card{background:white;border:1px solid var(--line);border-radius:14px;padding:14px;display:grid;gap:6px}.mini-card small{color:var(--muted)}.mini-card strong{font-size:16px}.mini-card.total{background:#f5f9ff}.quote-settings{padding:16px}.inline-form{display:grid;grid-template-columns:2fr 110px 120px 90px auto;gap:10px;align-items:end}.inline-form.mt-small{grid-template-columns:1fr 90px auto}.quote-table td:nth-child(n+3),.quote-table th:nth-child(n+3){text-align:right}.totals{display:flex;justify-content:flex-end;align-items:center;gap:24px;margin-top:16px}.totals div{background:var(--blue2);color:var(--blue);border-radius:14px;padding:14px 22px;display:grid;text-align:center}.totals strong{font-size:24px}.bottom-actions{display:flex;justify-content:flex-end;gap:12px}.bottom-actions .btn:first-child{margin-right:auto}@media(max-width:1300px){.dashboard-grid{grid-template-columns:repeat(2,1fr)}.planner-layout{grid-template-columns:1fr}.camera-list,.properties,.product-preview{position:static}.quote-layout,.product-editor,.layout-2{grid-template-columns:1fr}.summary-cards{grid-template-columns:repeat(2,1fr)}}
.action-cell{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.action-cell form{margin:0}.action-cell select{min-width:130px;padding:9px}.inline-form-mini{display:inline-flex;margin:0}.check-list{display:grid;gap:10px;margin-top:12px}.check-list span{padding:10px 12px;background:#f8fafc;border:1px solid var(--line);border-radius:12px;color:#334155}.color-swatch{display:inline-block;width:18px;height:18px;border-radius:5px;margin-right:8px;vertical-align:middle;border:1px solid rgba(15,23,42,.15)}.code-sample{white-space:pre-wrap;background:#0f172a;color:#e2e8f0;border-radius:14px;padding:16px;font-size:12px;line-height:1.55;overflow:auto}.object-chip-grid{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 18px}.chip-check{display:flex;flex-direction:row;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;padding:9px 12px;background:#fff;cursor:pointer}.chip-check input{width:auto}.chip-check:has(input:checked){border-color:var(--blue);background:var(--blue2);color:var(--blue)}.chip-check small{color:var(--muted);font-weight:600}.table form{margin:0}


@media(max-width:900px){
  .app-shell{--sidebar-width:76px}
  .brand{justify-content:center;padding-left:0;padding-right:0}
  .brand-label,.nav-label{display:none}
  .nav-item{justify-content:center;padding-left:10px;padding-right:10px;gap:0}
  .sidebar-toggle{transform:rotate(180deg)}
  .sidebar-collapsed .app-shell{--sidebar-width:0px}
  .sidebar-collapsed .sidebar{transform:translateX(-100%);border-right:0;padding:0}
  .sidebar-collapsed .sidebar-toggle{right:-42px;top:96px;transform:rotate(0deg);background:#fff;border-left:1px solid var(--line)}
  .topbar{padding-left:24px}
  .content{padding:20px}
  .user-summary{display:none}
}
@media(max-width:560px){
  .topbar{height:74px;padding-right:14px}
  .top-actions{gap:8px}
  .content{padding:14px}
  .avatar{display:none}
}

/* Catalogo prodotti v2.3: macro categorie, sottocategorie e vista portfolio */
.catalog-shell{padding:24px}.catalog-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}.catalog-heading p{margin:7px 0 0;max-width:760px}.macro-tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:22px 0 18px}.macro-tab{display:flex;align-items:center;gap:10px;min-width:0;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.macro-tab:hover{border-color:#9ec5ff;transform:translateY(-1px)}.macro-tab.active{border-color:var(--blue);background:var(--blue2);box-shadow:0 0 0 3px rgba(11,99,246,.08)}.macro-tab-icon{width:38px;height:38px;min-width:38px;border-radius:11px;background:#f1f5f9;color:var(--blue);display:grid;place-items:center;font-size:21px}.macro-tab span:last-child{min-width:0;display:grid;gap:3px}.macro-tab strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.macro-tab small{color:var(--muted);white-space:nowrap}.catalog-filters{display:grid;grid-template-columns:minmax(250px,1.6fr) minmax(180px,.7fr) minmax(220px,.9fr) auto;gap:12px;align-items:end;padding:16px;background:#f8fafc;border:1px solid var(--line);border-radius:14px}.catalog-filter-actions{display:flex;gap:8px}.catalog-results-head{display:flex;justify-content:space-between;align-items:center;margin:22px 0 14px;color:#334155}.catalog-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.catalog-card{min-width:0;border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden;display:flex;flex-direction:column;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.catalog-card:hover{transform:translateY(-3px);border-color:#bdd5ff;box-shadow:0 16px 34px rgba(15,23,42,.10)}.catalog-image{height:220px;position:relative;display:grid;place-items:center;background:linear-gradient(145deg,#fff,#f5f8fc);border-bottom:1px solid var(--line);padding:18px}.catalog-image img{width:100%;height:100%;object-fit:contain}.catalog-placeholder{font-size:64px;filter:saturate(.7);opacity:.8}.catalog-status{position:absolute;top:12px;right:12px;padding:5px 9px;border-radius:999px;background:#dcfce7;color:#166534;font-size:11px;font-weight:800}.catalog-status.off{background:#f1f5f9;color:#64748b}.catalog-card-body{padding:17px;display:flex;flex-direction:column;gap:8px;flex:1}.catalog-category-line{display:flex;align-items:center;gap:6px;color:var(--blue);font-size:11px;font-weight:750;min-height:16px}.catalog-code{font-weight:800;color:#64748b;letter-spacing:.04em}.catalog-card h3{font-size:17px;line-height:1.25;min-height:43px}.catalog-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:38px}.catalog-price-row{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}.catalog-price-row div{display:grid;gap:2px}.catalog-price-row small{color:var(--muted)}.catalog-price-row strong{font-size:20px}.catalog-empty{grid-column:1/-1;padding:60px 20px;text-align:center;border:1px dashed #cbd5e1;border-radius:16px;background:#f8fafc}.catalog-empty p{margin:8px 0 0}.category-intro{display:flex;justify-content:space-between;align-items:center;gap:20px}.category-intro p{margin:7px 0 0}.category-example{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--blue2);border-radius:12px;color:#0752c5;font-weight:750}.category-example span{background:#fff;border:1px solid #cfe0ff;border-radius:9px;padding:7px 10px}.category-admin-grid{display:grid;grid-template-columns:minmax(360px,.85fr) minmax(620px,1.5fr);gap:22px;align-items:start}.macro-admin-list{display:grid;gap:10px}.macro-admin-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:13px;padding:12px}.macro-admin-icon{width:40px;height:40px;border-radius:11px;background:var(--blue2);color:var(--blue);display:grid;place-items:center;font-size:20px}.macro-admin-row div:nth-child(2){display:grid;gap:3px}.macro-admin-row small{color:var(--muted)}.category-create-form{padding-top:16px;border-top:1px solid var(--line)}.subcategory-table-wrap{max-height:520px;overflow:auto;border:1px solid var(--line);border-radius:12px}.compact-table td,.compact-table th{padding:11px 12px}.site-flow-note{display:flex;align-items:center;justify-content:center;gap:20px}.site-flow-note>i{width:80px;height:1px;background:#cbd5e1}.site-flow-step{display:flex;align-items:center;gap:11px}.site-flow-step>b{width:36px;height:36px;border-radius:50%;background:var(--blue2);color:var(--blue);display:grid;place-items:center}.site-flow-step>span{display:grid;gap:2px}.site-flow-step small{color:var(--muted)}.site-breadcrumb{display:flex;align-items:center;gap:8px;color:var(--muted);margin-bottom:14px}.right-column .quick small{font-weight:600;color:#64748b;margin-left:auto}.mini-thumb img{max-width:100%;max-height:100%;object-fit:contain}
@media(max-width:1550px){.macro-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1180px){.catalog-filters{grid-template-columns:1fr 1fr}.catalog-filter-actions{align-self:end}.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.category-admin-grid{grid-template-columns:1fr}.site-flow-note{justify-content:flex-start;overflow:auto}}
@media(max-width:720px){.catalog-heading,.category-intro{flex-direction:column}.macro-tabs{grid-template-columns:1fr 1fr}.catalog-filters{grid-template-columns:1fr}.catalog-filter-actions{width:100%}.catalog-filter-actions .btn{flex:1}.catalog-grid{grid-template-columns:1fr}.catalog-image{height:240px}.site-flow-note{display:grid;gap:10px}.site-flow-note>i{width:1px;height:20px;margin-left:18px}}

/* Project Planner v3.0 - GUI moderna */
:root{--surface:#fff;--soft:#f7f9fc;--navy:#0b1534;--blue:#1268f3;--line:#e5eaf2;--green:#16a34a;--violet:#6d28d9;--amber:#d97706;--red:#dc2626}
body{background:#f7f9fc;color:var(--navy)}.content{padding:28px 34px}.topbar{height:94px;padding:0 30px 0 40px}.brand{font-size:19px;padding-top:6px}.brand-mark{width:36px;height:36px;position:relative;display:grid;grid-template-columns:1fr 1fr;gap:3px;transform:rotate(30deg)}.brand-mark i{display:block;background:linear-gradient(145deg,#2f86ff,#0a4fd2);border-radius:4px}.brand-mark i:nth-child(3){grid-column:1/3;width:55%;justify-self:center}.sidebar-foot{margin-top:auto;display:flex;align-items:center;gap:12px;padding:13px 14px;color:#53627a;cursor:pointer}.top-actions .user-summary{display:grid;gap:3px}.top-actions .user-summary small{color:#64748b}.btn-lg{padding:13px 20px;font-size:15px}.btn-sm{padding:8px 12px;font-size:12px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:900;color:var(--blue)}.page-heading,.catalog-topline,.hero-row,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.page-heading h2,.catalog-topline h2,.hero-row h2{font-size:34px;margin:5px 0 8px}.hero-row{background:linear-gradient(135deg,#fff,#f0f6ff);border:1px solid var(--line);border-radius:22px;padding:28px 30px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:24px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;align-items:center;gap:15px;color:var(--navy);box-shadow:0 8px 30px rgba(15,23,42,.04)}.stat-card small,.stat-card em{display:block;color:#64748b;font-style:normal}.stat-card strong{font-size:30px;display:block;margin:3px 0}.stat-icon{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;font-size:25px}.stat-icon.blue{background:#eaf2ff;color:#1268f3}.stat-icon.green{background:#e7f9ef;color:#159947}.stat-icon.violet{background:#f1ebff;color:#6d28d9}.stat-icon.amber{background:#fff3da;color:#c97700}.dashboard-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px}.project-list-modern{display:grid}.project-row-modern{display:grid;grid-template-columns:48px minmax(0,1fr) auto 160px auto;gap:14px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.project-row-modern small{display:block;color:#64748b;margin-top:4px}.project-type-icon{width:42px;height:42px;border-radius:12px;background:#eaf2ff;color:#1268f3;display:grid;place-items:center}.quick-actions{display:grid;gap:10px;margin-top:16px}.quick-actions a{display:flex;justify-content:space-between;background:#f0f5ff;border:1px solid #dbe7ff;padding:14px;border-radius:12px;font-weight:800}.site-grid-modern{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.site-panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 8px 28px rgba(15,23,42,.05)}.site-panel-head{display:grid;grid-template-columns:84px minmax(0,1fr) auto;gap:18px;align-items:start}.site-icon{width:84px;height:84px;border-radius:22px;background:#eaf2ff;color:var(--blue);display:grid;place-items:center;font-size:40px}.site-panel h3{font-size:22px;margin-bottom:10px}.site-panel p{margin:5px 0;color:#53627a}.more-button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 10px;color:#39475e;font-weight:900}.site-panel-divider{height:1px;background:var(--line);margin:22px 0 16px}.site-project-head{display:flex;justify-content:space-between;align-items:center}.project-chips{display:flex;flex-wrap:wrap;gap:9px;margin:14px 0}.project-chips a{background:#edf4ff;border:1px solid #d7e6ff;color:#0c5bcf;border-radius:9px;padding:8px 11px;font-weight:750;font-size:13px}.site-open-link{display:block;border-top:1px solid var(--line);padding-top:15px;font-weight:800}.site-detail-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:30px;margin-bottom:28px}.site-detail-hero h2{font-size:48px;letter-spacing:-.04em;margin:10px 0 14px}.site-detail-hero p{color:#53627a;font-size:15px}.back-link{font-weight:800}.site-stats{display:grid;grid-template-columns:repeat(3,220px);gap:14px}.site-stats>div{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;display:grid;grid-template-columns:54px 1fr;grid-template-rows:auto auto;column-gap:14px;box-shadow:0 7px 24px rgba(15,23,42,.04)}.site-stats .stat-icon{grid-row:1/3}.site-stats small{color:#64748b}.site-stats strong{font-size:28px}.project-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.project-card-modern{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 8px 25px rgba(15,23,42,.05)}.project-card-title{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:16px;align-items:start}.project-icon{width:64px;height:64px;border-radius:17px;display:grid;place-items:center;font-size:29px}.project-icon.blue{background:#eaf2ff;color:#1268f3}.project-icon.red{background:#fee9e9;color:#dc2626}.project-icon.amber{background:#fff3d6;color:#b66a00}.project-icon.violet{background:#f2eaff;color:#6d28d9}.project-card-title h3{font-size:19px;margin-bottom:8px}.project-description{min-height:22px}.project-metrics{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:18px 0;padding:14px 0}.project-metrics span{padding:0 12px;border-right:1px solid var(--line)}.project-metrics span:last-child{border-right:0}.project-metrics small,.project-metrics strong{display:block}.project-metrics small{color:#748197;margin-bottom:5px}.project-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.project-actions form,.project-actions button{width:100%}.catalog-filter-shell{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:18px}.macro-pill-row{display:flex;flex-wrap:wrap;gap:10px}.macro-pill{border:1px solid var(--line);border-radius:11px;padding:10px 15px;color:#26364e;font-weight:800;display:flex;align-items:center;gap:8px}.macro-pill.active{border-color:var(--blue);color:var(--blue);background:#f2f7ff}.catalog-search-row{display:grid;grid-template-columns:minmax(280px,1fr) 260px auto auto;gap:10px;margin-top:14px}.search-field{position:relative}.search-field{display:flex;flex-direction:row;align-items:center;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.search-field input{border:0}.subcategory-chip-row{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.sub-chip{border:1px solid #b8cff7;border-radius:9px;padding:7px 13px;font-weight:800}.sub-chip.active{background:var(--blue);color:#fff}.modern-products{grid-template-columns:repeat(4,minmax(0,1fr))}.product-shop-card .catalog-image{height:230px}.product-symbol{font-size:78px;color:#b7c7df}.promo-ribbon{position:absolute;left:0;top:16px;background:var(--promo);color:#fff;padding:8px 14px;border-radius:0 8px 8px 0;font-size:11px;font-weight:900;box-shadow:0 6px 16px rgba(0,0,0,.15)}.tag-row{display:flex;gap:6px;flex-wrap:wrap}.tag-row span{background:#eef4ff;color:#165dc4;border:1px solid #d5e5ff;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.shop-price-row{margin-top:auto;border-top:1px solid var(--line);padding-top:12px;display:grid;gap:10px}.shop-price-row>div{display:flex;align-items:end;gap:8px}.shop-price-row strong{font-size:21px}.old-price{text-decoration:line-through;color:#8b97a9}.shop-price-row em{background:#fee2e2;color:#b91c1c;border-radius:999px;padding:4px 8px;font-style:normal;font-size:11px;font-weight:900}.full-card-button{width:100%}.modern-editor{grid-template-columns:minmax(0,1fr) 320px}.editor-section{border-top:1px solid var(--line);margin-top:24px;padding-top:22px}.editor-section h2{margin-bottom:14px}.promo-editor{background:#fff8f8;margin-left:-8px;margin-right:-8px;padding:18px;border-radius:14px}.relation-list{display:grid;gap:8px;max-height:560px;overflow:auto}.relation-row{display:grid;grid-template-columns:minmax(300px,1fr) 145px 150px 80px;gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px}.relation-check{display:flex;flex-direction:row;align-items:center;gap:10px}.relation-check input{width:auto}.relation-check span{display:grid}.relation-check small{color:#718096}.relation-row input,.relation-row select{padding:9px}.planner-project-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.planner-project-bar>div{display:flex;gap:9px;align-items:center}.modern-stepper{border-radius:14px}.warning-stack{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.project-warning{display:flex;gap:8px;align-items:center;border-radius:10px;padding:9px 12px;font-size:12px;font-weight:700}.project-warning.blocking{background:#fee2e2;color:#991b1b}.project-warning.important{background:#fff4d6;color:#92400e}.project-warning.info{background:#e8f2ff;color:#0752c5}.tip-box{background:#f5f8fd;border:1px dashed #bfd0e8;border-radius:12px;padding:14px;color:#53627a;font-size:13px}.icon-add{width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--blue);font-size:23px}.map-step-layout{grid-template-columns:280px minmax(620px,1fr) 300px}.calibration-readout{background:#f5f8fd;border-radius:12px;padding:15px;display:flex;justify-content:space-between;margin:14px 0}.calibration-readout span{color:#64748b}.properties .info-box{display:grid;gap:5px}.device-row .thumb img{width:100%;height:100%;object-fit:contain}.device-row i{width:9px;height:9px;border-radius:50%;background:#22c55e;margin-left:auto}.color-fields{grid-template-columns:repeat(3,1fr)}.color-fields input{height:42px;padding:4px}.selected-accessories{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}.selected-accessories span{background:#eef4ff;color:#0b5ed7;border-radius:999px;padding:4px 8px;font-size:11px}.product-select-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-height:65vh;overflow:auto}.product-choice{border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px;text-align:left;display:grid;gap:5px;cursor:pointer}.product-choice:hover{border-color:var(--blue);box-shadow:0 0 0 3px #eaf2ff}.choice-image{height:120px;display:grid;place-items:center;background:#f8fafc;border-radius:10px;font-size:42px}.choice-image img{max-width:100%;max-height:100%;object-fit:contain}.product-choice small,.product-choice em{color:#64748b;font-style:normal}.product-choice b{color:var(--blue)}.accessory-groups{max-height:58vh;overflow:auto;display:grid;gap:18px}.accessory-choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.accessory-choice{border:1px solid var(--line);border-radius:12px;padding:10px;display:grid;grid-template-columns:auto 54px 1fr;gap:7px;align-items:center}.accessory-choice input{width:auto}.accessory-choice span{width:54px;height:48px;background:#f8fafc;border-radius:8px;display:grid;place-items:center}.accessory-choice img{max-width:100%;max-height:100%;object-fit:contain}.accessory-choice b,.accessory-choice small,.accessory-choice em{grid-column:2/4}.accessory-choice em{font-size:11px;color:#64748b;font-style:normal}.linked-option{display:flex;flex-direction:row;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:10px;margin-top:8px}.linked-option input{width:auto}.linked-option span{display:grid}.linked-option small{color:#64748b}.recorder-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:22px}.storage-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0 22px}.disk-picker{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:10px}.check-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.storage-result{position:sticky;top:115px}.storage-result h2{font-size:34px;margin:8px 0}.storage-result dl{display:grid;grid-template-columns:1fr auto;gap:10px}.storage-result dt{color:#64748b}.storage-result dd{margin:0;font-weight:800}.storage-gauge{height:10px;background:#e7edf5;border-radius:99px;overflow:hidden;margin:14px 0 20px}.storage-gauge i{display:block;height:100%;background:linear-gradient(90deg,#1268f3,#22c55e)}.storage-status{border-radius:12px;padding:12px;text-align:center;font-weight:900}.storage-status.ok{background:#dcfce7;color:#166534}.storage-status.insufficient{background:#fee2e2;color:#991b1b}.accessory-step-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px}.project-item-grid{display:grid;gap:10px}.project-item-card{display:grid;grid-template-columns:66px minmax(0,1fr) auto auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:13px;padding:12px}.mini-product-image{width:66px;height:58px;background:#f8fafc;border-radius:9px;display:grid;place-items:center;font-size:28px}.mini-product-image img{max-width:100%;max-height:100%;object-fit:contain}.project-item-card>div:nth-child(2){display:grid}.project-item-card small,.project-item-card span{color:#64748b}.pdf-step-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px}.commercial-bar{display:grid;grid-template-columns:180px 220px minmax(240px,1fr) auto;gap:10px;align-items:end;margin-bottom:18px;padding:15px;background:#f8fafc;border-radius:13px}.span-grow{min-width:0}.quote-table-wrap{overflow:auto}.quote-edit-table input{min-width:75px;padding:8px}.quote-edit-table .description-inline{min-width:260px}.promo-small{background:#fee2e2;color:#b91c1c;padding:4px 7px;border-radius:99px;font-size:11px;font-weight:900}.quote-totals-modern{display:flex;justify-content:flex-end;gap:18px;align-items:center;margin-top:18px;flex-wrap:wrap}.quote-totals-modern span{display:grid;color:#64748b}.quote-totals-modern b{color:var(--navy)}.quote-totals-modern>strong{background:#eaf2ff;color:var(--blue);font-size:20px;padding:14px 18px;border-radius:12px}.modern-checks label{display:flex;flex-direction:row;align-items:center;gap:9px}.modern-checks input{width:auto}
@media(max-width:1450px){.modern-products{grid-template-columns:repeat(3,1fr)}.site-stats{grid-template-columns:repeat(3,180px)}.planner-layout{grid-template-columns:270px minmax(560px,1fr) 300px}.commercial-bar{grid-template-columns:1fr 1fr}.commercial-bar .span-grow{grid-column:1/3}}
@media(max-width:1150px){.stat-grid,.modern-products{grid-template-columns:repeat(2,1fr)}.dashboard-layout,.site-detail-hero,.recorder-layout,.accessory-step-layout,.pdf-step-layout{grid-template-columns:1fr;display:grid}.site-detail-hero{display:grid}.site-stats{grid-template-columns:repeat(3,1fr)}.site-grid-modern,.project-card-grid{grid-template-columns:1fr}.storage-result{position:static}.planner-layout,.map-step-layout{grid-template-columns:1fr}.camera-list,.properties{position:static}.product-select-grid,.accessory-choice-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.content{padding:18px}.stat-grid,.modern-products,.site-stats{grid-template-columns:1fr}.page-heading,.catalog-topline,.hero-row,.section-heading{align-items:flex-start;flex-direction:column}.catalog-search-row,.storage-form-grid,.commercial-bar{grid-template-columns:1fr}.commercial-bar .span-grow{grid-column:auto}.site-panel-head{grid-template-columns:60px 1fr}.site-icon{width:60px;height:60px}.project-metrics{grid-template-columns:1fr}.project-metrics span{border-right:0;border-bottom:1px solid var(--line);padding:8px}.project-actions{grid-template-columns:1fr}.relation-row{grid-template-columns:1fr}.product-select-grid,.accessory-choice-grid,.check-card-grid{grid-template-columns:1fr}.modern-stepper{overflow:auto;justify-content:flex-start}.modern-stepper i{min-width:35px}}
.role-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.role-summary-grid-three{grid-template-columns:repeat(3,1fr)}.role-summary-grid .card{box-shadow:none}.role-summary-grid strong{font-size:18px;color:var(--blue)}.role-summary-grid p{color:#64748b;line-height:1.45;margin-bottom:0}@media(max-width:1000px){.role-summary-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.role-summary-grid{grid-template-columns:1fr}}
.editor-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.btn-danger-soft{background:#fff1f2;border:1px solid #fecdd3;color:#be123c}.btn-danger-soft:hover{background:#ffe4e6}

/* v3.0.1 – correzioni GUI, icone e responsive */
.ui-icon,.nav-icon,.btn-icon,.inline-icon,.metric-icon,.section-icon,.chip-icon,.warning-icon,.status-icon{display:inline-block;width:1.15em;height:1.15em;flex:0 0 auto;vertical-align:-.18em}
.nav-icon{width:22px;height:22px;min-width:22px;font-size:0}
.btn-icon{width:17px;height:17px}
.inline-icon{width:16px;height:16px}
.metric-icon{width:15px;height:15px}
.section-icon{width:20px;height:20px;vertical-align:-.25em}
.chip-icon{width:14px;height:14px}
.warning-icon{width:17px;height:17px}
.status-icon{width:18px;height:18px}
.stat-icon .ui-icon,.project-icon .ui-icon,.project-type-icon .ui-icon,.site-icon .ui-icon{width:52%;height:52%}
.brand{gap:9px;padding-left:6px;padding-right:6px;font-size:18px}
.brand-label{min-width:0;text-overflow:ellipsis}
.sidebar-foot{margin-top:auto;width:100%;border:0;background:transparent;font:inherit;text-align:left;border-radius:12px}
.sidebar-foot:hover{background:var(--blue2);color:var(--blue)}
.topbar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar-title h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.main,.content,.card,.site-panel,.project-card-modern{min-width:0}
.logout-button{white-space:nowrap}
.quick-actions a>span:first-child{display:flex;align-items:center;gap:8px}
.site-panel p{display:flex;align-items:center;gap:6px}
.project-metrics strong{display:flex;align-items:center;gap:6px}
.section-heading h2{display:flex;align-items:center;gap:8px}
.icon-add{display:grid;place-items:center;cursor:pointer}
.icon-add .ui-icon{width:20px;height:20px}
.icon-danger{display:grid;place-items:center}
.icon-danger .ui-icon{width:19px;height:19px}
.project-warning{min-width:0}
.project-warning span{min-width:0}
.file-picker{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:8px;background:#fff;cursor:pointer}
.file-picker input{position:absolute;inset:0;opacity:0;cursor:pointer}
.file-picker-button{display:inline-flex;align-items:center;gap:7px;background:var(--blue2);color:var(--blue);font-weight:800;border-radius:8px;padding:9px 11px;white-space:nowrap}
.file-picker-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-weight:600}
.empty-table-cell{text-align:center!important;color:var(--muted);padding:28px!important}
.storage-status{display:flex;align-items:center;justify-content:center;gap:8px}
.storage-status.empty{background:#e8f2ff;color:#0752c5}
.storage-status.no_disks{background:#fff4d6;color:#92400e}
.catalog-search-row>*{min-width:0}
.category-admin-grid>*{min-width:0}
.subcategory-table-wrap{overflow:auto}
.table{max-width:100%}

/* Mantiene quattro prodotti per riga sui desktop, come richiesto. */
@media (min-width:1281px) and (max-width:1550px){
  .modern-products{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* Planner a tre colonne su notebook 1366px senza scroll orizzontale. */
@media (min-width:1281px) and (max-width:1499px){
  .planner-layout,.map-step-layout{grid-template-columns:minmax(220px,240px) minmax(440px,1fr) minmax(250px,280px);gap:14px}
  .camera-list,.properties{padding:15px}
  .content{padding-left:24px;padding-right:24px}
}

@media (max-width:1350px){
  .category-admin-grid{grid-template-columns:1fr}
  .relation-row{grid-template-columns:minmax(240px,1fr) 130px 135px 72px}
}

@media (max-width:1280px){
  .planner-layout,.map-step-layout{grid-template-columns:1fr}
  .camera-list,.properties{position:static}
  .modern-products{grid-template-columns:repeat(3,minmax(0,1fr))}
  .site-detail-hero{display:grid;grid-template-columns:1fr}
  .site-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media (max-width:1100px){
  .modern-stepper{justify-content:flex-start;overflow-x:auto;scrollbar-width:thin}
  .modern-stepper .step{flex:0 0 auto}
  .modern-stepper i{min-width:44px}
  .project-row-modern{grid-template-columns:44px minmax(0,1fr) auto auto}
  .project-row-modern time{grid-column:2/4;color:var(--muted);font-size:13px}
  .category-admin-grid{grid-template-columns:1fr}
}

@media (max-width:980px){
  .modern-products{grid-template-columns:repeat(2,minmax(0,1fr))}
  .catalog-search-row{grid-template-columns:1fr 1fr}
  .catalog-search-row .search-field{grid-column:1/-1}
  .catalog-topline{align-items:flex-start;flex-direction:column}
  .topbar{padding-left:22px;padding-right:16px}
  .user-summary{display:none!important}
  .site-grid-modern,.project-card-grid{grid-template-columns:1fr}
  .site-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .storage-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:760px){
  .topbar-title h1{font-size:21px}
  .top-actions .avatar{display:none}
  .logout-button{padding:9px 11px}
  .catalog-search-row{grid-template-columns:1fr}
  .catalog-search-row .search-field{grid-column:auto}
  .modern-products{grid-template-columns:1fr}
  .site-stats{grid-template-columns:1fr}
  .storage-form-grid{grid-template-columns:1fr}
  .commercial-bar{grid-template-columns:1fr}
  .commercial-bar .span-grow{grid-column:auto}
  .quote-totals-modern{justify-content:flex-start}
  .project-card-title{grid-template-columns:54px minmax(0,1fr)}
  .project-icon{width:54px;height:54px}
  .file-picker{grid-template-columns:1fr}
  .file-picker-button{justify-content:center}
}

@media (max-width:560px){
  .logout-button span{display:none}
  .logout-button{width:42px;height:42px;padding:0}
  .topbar{padding-left:14px}
  .planner-project-bar{align-items:flex-start;gap:10px}
  .planner-project-bar>div{flex-wrap:wrap}
  .stepper{padding:10px}
}

/* v3.0.2 — pagina Siti: intestazione interamente cliccabile */
.site-panel-link{
  color:inherit;
  text-decoration:none;
  border-radius:15px;
  margin:-10px;
  padding:10px;
  transition:background-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.site-panel-link:hover{
  background:#f4f8ff;
  box-shadow:0 0 0 1px #d7e6ff inset;
  transform:translateY(-1px);
}
.site-panel-link:focus-visible{
  outline:3px solid rgba(11,99,246,.22);
  outline-offset:3px;
  background:#f4f8ff;
}
.site-panel-summary{
  min-width:0;
  display:grid;
  gap:5px;
  color:#53627a;
}
.site-panel-summary>span{
  display:flex;
  align-items:center;
  gap:6px;
}
.site-panel-title{
  display:block;
  color:var(--navy);
  font-size:22px;
  line-height:1.25;
  margin-bottom:4px;
  overflow-wrap:anywhere;
}
.site-panel-open{
  display:inline-flex;
  align-items:center;
  gap:5px;
  align-self:start;
  padding:8px 11px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fff;
  color:var(--blue);
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}
.site-panel-link:hover .site-panel-open{
  border-color:#9ec5ff;
  background:var(--blue2);
}
.site-project-head{
  min-height:28px;
}
@media(max-width:760px){
  .site-panel-link{margin:-6px;padding:6px}
  .site-panel-open{grid-column:2;justify-self:start;margin-top:4px}
  .site-panel-summary{grid-column:2}
}

/* v3.0.3 - actions for site details */
.alert-success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}
.site-detail-side{display:grid;gap:14px;align-content:start;min-width:0}
.site-detail-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.site-detail-actions .btn{min-width:118px}
.site-action-modal{width:min(560px,92vw)}
.delete-site-modal{text-align:left}
.danger-modal-icon{width:52px;height:52px;border-radius:15px;background:#fee2e2;color:#b91c1c;display:grid;place-items:center;margin-bottom:14px}
.danger-modal-icon .ui-icon{width:26px;height:26px}
.delete-site-modal>p{line-height:1.55;color:#475569}
@media(max-width:1150px){.site-detail-actions{justify-content:flex-start}}
@media(max-width:600px){.site-detail-actions{display:grid;grid-template-columns:1fr 1fr}.site-detail-actions .btn{min-width:0}.delete-site-modal .modal-actions,.site-action-modal .modal-actions{display:grid;grid-template-columns:1fr}.delete-site-modal .modal-actions .btn,.site-action-modal .modal-actions .btn{width:100%}}


/* v3.0.5 – Step Mappa: calibrazione nella colonna sinistra e canvas più ampio */
.map-step-layout{
  grid-template-columns:minmax(250px,280px) minmax(0,1fr);
  gap:18px;
}
.map-side-panel{
  align-self:start;
}
.map-calibration-panel{
  border-top:1px solid var(--line);
  margin-top:22px;
  padding-top:20px;
  display:flex;
  flex-direction:column;
  gap:14px;
}
.map-calibration-panel .calibration-readout{
  margin:0;
}
.map-calibration-panel .info-box{
  display:grid;
  gap:5px;
}
.map-canvas-card{
  min-width:0;
  width:100%;
}
.map-canvas-card #plannerCanvas{
  width:100%;
  max-width:none;
}

@media (min-width:1281px) and (max-width:1499px){
  .map-step-layout{
    grid-template-columns:minmax(230px,255px) minmax(0,1fr);
    gap:14px;
  }
}

@media (min-width:1001px) and (max-width:1280px){
  .map-step-layout{
    grid-template-columns:minmax(220px,245px) minmax(0,1fr);
    gap:14px;
  }
  .map-side-panel{
    position:sticky;
    top:105px;
  }
}

@media (max-width:1000px){
  .map-step-layout{
    grid-template-columns:1fr;
  }
  .map-side-panel{
    position:static;
  }
}


/* v3.0.6 – Step Mappa semplificato */
.visually-hidden{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
.map-calibration-panel h2{
  margin-bottom:2px;
}
.calibration-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:9px;
}
.calibration-actions .btn{
  width:100%;
  justify-content:center;
}
.calibration-status{
  display:block;
  min-height:0;
  color:#52637a;
  font-size:12px;
  line-height:1.35;
}
.calibration-status:empty{
  display:none;
}
.map-canvas-toolbar{
  justify-content:flex-end;
}
.map-canvas-card{
  padding-bottom:14px;
}
@media (min-width:560px) and (max-width:1000px){
  .calibration-actions{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

/* v3.0.8 - pulizia step Telecamere e allineamento salvataggio */
.camera-canvas-toolbar{
  width:100%;
}
.camera-save-status{
  margin-left:auto;
  min-width:0;
  text-align:right;
}
.camera-save-button{
  flex:0 0 auto;
}
@media(max-width:640px){
  .camera-canvas-toolbar{
    flex-wrap:wrap;
  }
  .camera-save-status{
    order:3;
    width:100%;
    margin-left:0;
    text-align:left;
  }
  .camera-save-button{
    margin-left:auto;
  }
}


/* v3.0.9 – filtri e ricerca nella selezione telecamera */
.camera-picker-modal{width:min(1120px,94vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.camera-picker-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-right:42px}
.camera-picker-heading h2{margin-bottom:4px}
.camera-picker-heading p{margin:0}
.camera-picker-tools{display:grid;gap:12px;margin:18px 0 10px}
.camera-picker-search{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:0 12px;transition:border-color .15s,box-shadow .15s}
.camera-picker-search:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #eaf2ff}
.camera-picker-search>span{font-size:21px;line-height:1;color:#64748b}
.camera-picker-search input{border:0!important;box-shadow:none!important;padding:12px 0;min-width:0;background:transparent}
.camera-search-clear{width:28px;height:28px;border:0;border-radius:8px;background:#eef3fa;color:#475569;font-size:18px;cursor:pointer;display:grid;place-items:center}
.camera-search-clear:hover{background:#e2e8f0;color:#0f172a}
.camera-filter-block{border:1px solid var(--line);background:#fbfdff;border-radius:13px;padding:10px;display:grid;gap:8px}.camera-filter-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.camera-filter-title span{font-size:12px;font-weight:900;color:#1e293b;text-transform:uppercase;letter-spacing:.04em}.camera-filter-title small{color:#64748b;font-size:11px}.camera-category-filters{display:flex;flex-wrap:wrap;gap:8px}.camera-spec-filter-list{display:grid;gap:9px}.camera-spec-filter-group{display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px;align-items:start}.camera-spec-filter-group strong{font-size:12px;color:#334155;padding-top:8px}.camera-spec-filter-group>div{display:flex;flex-wrap:wrap;gap:7px}.camera-filter-chip{border:1px solid #bfd3f5;border-radius:999px;background:#fff;color:#165dc4;padding:7px 13px;font-weight:800;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.camera-filter-chip small{font-size:10px;opacity:.72;margin-left:3px}.camera-filter-chip:hover{background:#eef5ff;border-color:#7fabee}.camera-filter-chip.active{background:var(--blue);border-color:var(--blue);color:#fff}.camera-filter-empty{color:#64748b;font-size:12px}.camera-secondary-toggle{justify-self:start;border:1px solid #bfd3f5;background:#fff;color:#165dc4;border-radius:999px;padding:8px 13px;font-weight:900;cursor:pointer}.camera-secondary-toggle:hover{background:#eef5ff}.camera-secondary-toggle[aria-expanded="true"]{background:var(--blue);border-color:var(--blue);color:#fff}.camera-active-filters{display:flex;align-items:center;flex-wrap:wrap;gap:7px;background:#f1f5f9;border-radius:12px;padding:8px}.camera-active-filters span{font-size:11px;font-weight:900;color:#64748b;text-transform:uppercase}.camera-active-filters button{border:1px solid #cbd5e1;background:#fff;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;color:#334155;cursor:pointer}.camera-active-filters .camera-clear-all{color:#b91c1c}.camera-results-summary{min-height:20px;color:#64748b;font-size:12px;font-weight:700;margin-bottom:8px}
.camera-product-grid{min-height:180px;padding-right:4px}
.camera-choice-category{justify-self:start;background:#eef4ff;color:#165dc4;border:1px solid #d5e5ff;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:900}
.camera-picker-empty{min-height:210px;display:grid;place-items:center;align-content:center;gap:6px;text-align:center;color:#64748b;border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc}
.camera-picker-empty strong{color:#0f172a;font-size:17px}
@media(max-width:760px){.camera-picker-modal{width:96vw}.camera-category-filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.camera-spec-filter-group{grid-template-columns:1fr}.camera-filter-chip{white-space:nowrap}.camera-picker-heading p{font-size:12px}}

/* v3.0.10 - Step Registratore semplificato */
.recorder-clean-page{display:block}
.recorder-main-card{padding:24px;min-height:560px}
.recorder-page-head{margin-bottom:20px}
.recorder-page-head h2{font-size:25px;margin:5px 0 0}
.recorder-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:22px}
.recorder-action-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:17px;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;text-align:left;cursor:pointer;color:var(--navy);transition:border-color .15s,box-shadow .15s,transform .15s}
.recorder-action-card:hover{border-color:#8eb9ff;box-shadow:0 8px 24px rgba(11,99,246,.09);transform:translateY(-1px)}
.recorder-action-card>i{font-style:normal;color:var(--blue);font-size:22px}
.recorder-action-card span:nth-child(2){display:grid;gap:4px}.recorder-action-card small{color:#64748b;font-weight:600}.recorder-action-icon{width:48px;height:48px;border-radius:13px;background:#eaf2ff;color:var(--blue);display:grid;place-items:center}.recorder-action-icon svg{width:23px;height:23px}
.recorder-overview-grid{display:grid;grid-template-columns:1.25fr .8fr 1fr;gap:16px}
.recorder-overview-card{border:1px solid var(--line);border-radius:16px;padding:18px;background:#fbfdff;min-height:190px}
.overview-label{display:block;color:#64748b;font-size:12px;font-weight:850;text-transform:uppercase;letter-spacing:.06em;margin-bottom:14px}
.selected-recorder-summary{min-height:130px;display:flex;align-items:center;gap:15px}
.selected-recorder-image{width:112px;height:92px;border-radius:12px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;overflow:hidden;flex:0 0 auto}
.selected-recorder-image img{width:100%;height:100%;object-fit:contain}.catalog-image-placeholder{font-size:35px;color:#b7c7df}
.selected-recorder-copy{min-width:0;display:grid;gap:4px}.selected-recorder-copy small,.selected-recorder-copy span,.selected-recorder-copy p{color:#64748b}.selected-recorder-copy strong{font-size:17px}.selected-recorder-copy p{font-size:12px;margin:2px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.selected-recorder-price{margin-left:auto;white-space:nowrap;color:var(--blue);font-size:18px}
.recorder-empty-selection{display:flex;align-items:center;gap:12px;color:#64748b}.recorder-empty-selection>span{width:42px;height:42px;border-radius:12px;background:#eef4ff;color:var(--blue);display:grid;place-items:center;font-size:25px}.recorder-empty-selection>div{display:grid;gap:4px}.recorder-empty-selection b{color:var(--navy)}
.storage-overview-number{display:flex;align-items:baseline;gap:7px;margin:14px 0}.storage-overview-number strong{font-size:42px;color:var(--blue);letter-spacing:-.04em}.storage-overview-number span{font-weight:800;color:#64748b}.overview-details{display:flex;gap:9px;flex-wrap:wrap}.overview-details span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 9px;color:#64748b;font-size:12px}.overview-details b{color:var(--navy)}
.recorder-items-summary{display:grid;gap:8px;max-height:135px;overflow:auto}.recorder-items-summary>span{display:grid;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px}.recorder-items-summary small{color:#64748b;margin-top:2px}
.recorder-footer-actions{border-top:1px solid var(--line);margin-top:22px;padding-top:18px;display:flex;align-items:center;justify-content:space-between;gap:15px}
.catalog-picker-modal{width:min(1120px,94vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}.picker-modal-title{padding-right:44px}.picker-modal-title h2{margin-bottom:4px}.picker-modal-title p{margin:0}
.recorder-product-grid{grid-template-columns:repeat(4,minmax(0,1fr));max-height:58vh}.catalog-product-choice.selected{border-color:var(--blue);box-shadow:0 0 0 3px #dceaff}.catalog-product-choice.compact .choice-image{height:92px}
.storage-calculator-modal{width:min(1060px,94vw);max-height:92vh;overflow:auto}.storage-calculator-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;margin-top:18px}.storage-calculator-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.storage-live-result{background:#f6f9ff;border:1px solid #dbe7ff;border-radius:16px;padding:20px}.storage-live-total{display:grid;margin:12px 0 18px}.storage-live-total strong{font-size:38px;color:var(--blue)}.storage-live-total span{color:#64748b;font-weight:700}.storage-live-result dl{display:grid;grid-template-columns:1fr auto;gap:10px;margin:0 0 16px}.storage-live-result dt{color:#64748b}.storage-live-result dd{margin:0;font-weight:800}.storage-status.empty,.storage-status.no_disks{background:#fff4d6;color:#92400e}
.recorder-items-modal{width:min(1160px,95vw);max-height:92vh;overflow:auto}.recorder-items-section{border-top:1px solid var(--line);padding-top:17px;margin-top:17px}.section-title-row{display:flex;align-items:end;justify-content:space-between;gap:14px}.disk-quantity-inline{width:130px}.recorder-items-grid{grid-template-columns:repeat(4,minmax(0,1fr));max-height:none;overflow:visible}.catalog-accessory-choice{grid-template-columns:auto 60px minmax(0,1fr);cursor:pointer}.catalog-accessory-choice.selected{border-color:var(--blue);background:#f4f8ff}.catalog-accessory-choice>span{width:60px;height:55px;overflow:hidden}.catalog-accessory-choice>span img{width:100%;height:100%;object-fit:contain}.catalog-accessory-choice input{align-self:start}.catalog-accessory-choice b,.catalog-accessory-choice small,.catalog-accessory-choice em{grid-column:3/4}

@media(max-width:1150px){.recorder-action-grid{grid-template-columns:1fr}.recorder-overview-grid{grid-template-columns:1fr}.storage-calculator-layout{grid-template-columns:1fr}.recorder-product-grid,.recorder-items-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.recorder-main-card{padding:16px}.recorder-page-head{align-items:flex-start}.recorder-page-head .btn{width:100%}.recorder-page-head{display:grid}.storage-calculator-fields{grid-template-columns:1fr}.recorder-product-grid,.recorder-items-grid{grid-template-columns:1fr}.selected-recorder-summary{align-items:flex-start;flex-wrap:wrap}.selected-recorder-price{margin-left:0}.recorder-footer-actions{display:grid}.recorder-footer-actions .btn{width:100%}.section-title-row{align-items:stretch;display:grid}.disk-quantity-inline{width:auto}}

/* v3.0.11 - layout registratore e catalogo accessori */
.recorder-overview-single{grid-template-columns:minmax(0,1fr)}
.recorder-selection-stack{display:grid;gap:0;min-height:0;padding:0;overflow:hidden}
.recorder-selected-block{padding:18px}
.recorder-selected-linked-section{border-top:1px solid var(--line);padding:18px;background:#f8fbff}
.recorder-selected-linked-section .recorder-items-summary{margin-top:12px}
.recorder-selection-stack .selected-recorder-summary{min-height:112px}
.recorder-selection-stack .recorder-items-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.recorder-selection-stack .recorder-items-summary>span{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;display:grid;gap:3px}
.recorder-selection-stack .recorder-items-summary small{color:#64748b}

.accessory-clean-page{display:block}
.accessory-main-card{padding:22px}
.accessory-page-head{align-items:center}
.accessory-page-head h2{margin:4px 0 5px}
.accessory-action-card{width:100%;margin:4px 0 22px}
.accessory-selected-section{border-top:1px solid var(--line);padding-top:18px}
.accessory-project-grid{margin-top:12px}
.accessory-empty-state{grid-column:1/-1}
.generic-accessory-modal .product-select-grid{min-height:180px}
.generic-accessory-confirm{border-top:1px solid var(--line);margin-top:18px;padding-top:18px;display:grid;gap:16px}
.generic-accessory-confirm.hidden{display:none}
.generic-accessory-options{display:grid;grid-template-columns:170px minmax(0,1fr);gap:18px;align-items:start}
.generic-linked-accessories{min-width:0}
.generic-linked-accessories>strong{display:block;margin-bottom:6px}
.generic-accessory-confirm .selected-recorder-summary{min-height:90px;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfdff}

@media(max-width:760px){
  .accessory-page-head{display:grid;align-items:start}
  .accessory-page-head .btn{width:100%}
  .generic-accessory-options{grid-template-columns:1fr}
  .recorder-selection-stack .recorder-items-summary{grid-template-columns:1fr}
}

/* v3.0.12 – gestione categorie: form in alto e azioni modifica/elimina */
.category-create-form-top{
  margin:16px 0 18px;
  padding:16px;
  border:1px solid #dce7f7;
  border-radius:14px;
  background:#f8fbff;
}
.category-form-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-bottom:2px;
}
.category-form-title strong{font-size:14px;color:var(--navy)}
.category-list-after-form{margin-top:2px}
.macro-admin-row{
  grid-template-columns:42px minmax(0,1fr) auto;
  grid-template-areas:
    "macro-icon macro-info macro-actions"
    "macro-icon macro-pill macro-actions";
}
.macro-admin-row>.macro-admin-icon{grid-area:macro-icon}
.macro-admin-row>div:nth-child(2){grid-area:macro-info}
.macro-admin-row>.pill{grid-area:macro-pill;justify-self:start}
.macro-admin-row>.category-row-actions{grid-area:macro-actions}
.category-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;white-space:nowrap}
.category-row-actions form{margin:0}
.category-row-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:0}
.macro-admin-row>.category-row-actions{flex-direction:column;align-items:stretch}
.macro-admin-row>.category-row-actions .btn{width:100%}
.category-action-table th:last-child,.category-action-table td:last-child{width:190px;min-width:190px}
.category-actions-heading{text-align:right}
.table-actions{justify-content:flex-end}
.compact-empty{padding:22px;text-align:center;color:var(--muted)}

@media(max-width:760px){
  .category-create-form-top{padding:13px}
  .macro-admin-row{
    grid-template-columns:42px minmax(0,1fr);
    grid-template-areas:
      "macro-icon macro-info"
      "macro-icon macro-pill"
      "macro-actions macro-actions";
  }
  .macro-admin-row>.category-row-actions{flex-direction:row;margin-top:8px}
  .macro-admin-row>.category-row-actions .btn{flex:1}
  .category-action-table th:last-child,.category-action-table td:last-child{width:150px;min-width:150px}
  .table-actions{flex-direction:column;align-items:stretch}
  .table-actions .btn{width:100%}
}

/* v3.0.15 — controlli visibilità coni telecamera */
.cone-visibility-list{display:grid;gap:8px;margin-top:2px}
.property-section-label{font-size:.76rem;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.045em}
.cone-visibility-row{display:flex!important;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;margin:0!important}
.cone-visibility-row>span{display:flex;align-items:center;gap:8px;font-size:.84rem;font-weight:650;color:#1e293b}
.cone-visibility-row input[type="checkbox"]{width:17px;height:17px;margin:0;accent-color:#0b63f6}
.cone-visibility-row input[type="color"]{width:38px;height:28px;padding:2px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;cursor:pointer}

/* v3.0.16 - logo personalizzato nella barra laterale */
.brand-custom-logo{display:none;width:auto;height:auto;max-width:184px;max-height:58px;object-fit:contain;object-position:left center}
.brand-fallback{display:flex;align-items:center;gap:12px;min-width:0}
.brand.has-custom-logo{padding-top:0;padding-bottom:24px;min-height:66px}
.brand.has-custom-logo .brand-custom-logo{display:block}
.brand.has-custom-logo .brand-fallback{display:none}
.sidebar-collapsed .brand.has-custom-logo .brand-custom-logo{display:none}
.sidebar-collapsed .brand.has-custom-logo .brand-fallback{display:flex}
.sidebar-collapsed .brand-fallback{justify-content:center}
@media(max-width:900px){.brand-custom-logo{max-width:160px;max-height:52px}}

/* v3.0.17 - logo proporzionato e contenuto nella testata del menu */
.brand.has-custom-logo{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:92px;
  min-height:92px;
  max-height:92px;
  padding:4px 8px 18px;
  overflow:hidden;
}
.brand-logo-frame{
  display:none;
  align-items:center;
  justify-content:center;
  width:100%;
  max-width:190px;
  height:64px;
  max-height:64px;
  overflow:hidden;
}
.brand.has-custom-logo .brand-logo-frame{display:flex}
.brand.has-custom-logo .brand-custom-logo{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  min-width:0!important;
  min-height:0!important;
  object-fit:contain!important;
  object-position:center center!important;
  margin:0!important;
  padding:0!important;
  flex:0 1 auto;
}
.brand.has-custom-logo .brand-fallback{display:none}
.sidebar-collapsed .brand.has-custom-logo{
  height:64px;
  min-height:64px;
  max-height:64px;
  padding:0 0 18px;
}
.sidebar-collapsed .brand.has-custom-logo .brand-logo-frame{display:none}
.sidebar-collapsed .brand.has-custom-logo .brand-fallback{display:flex}
@media(max-width:900px){
  .brand.has-custom-logo{height:84px;min-height:84px;max-height:84px;padding:3px 6px 16px}
  .brand-logo-frame{max-width:172px;height:58px;max-height:58px}
}

/* v3.0.18 - specifiche prodotto dinamiche per categoria */
.compact-head{align-items:flex-start}.spec-template-pill{display:inline-flex;align-items:center;gap:6px;background:#eaf2ff;color:var(--blue);font-size:12px;font-weight:900;border-radius:999px;padding:6px 10px;margin:-4px 0 14px}.spec-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.spec-group-card{border:1px solid var(--line);border-radius:15px;background:#fbfdff;padding:12px;display:grid;gap:10px}.spec-main-group{border-color:#bfdbfe;background:#f8fbff}.spec-secondary-group{background:#fff}.spec-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.spec-group-head h3{margin:0;font-size:15px}.spec-group-head small{display:block;color:#64748b;margin-top:3px;font-size:11px}.spec-group-add{width:34px;height:34px;border:1px solid #bfd3f5;border-radius:10px;background:#fff;color:var(--blue);font-size:19px;font-weight:900;cursor:pointer}.spec-group-add:hover{background:#eaf2ff}.spec-editor-list{display:grid;gap:10px}.small-empty{min-height:auto;padding:12px;font-size:12px}.spec-row{display:grid;grid-template-columns:210px minmax(0,1fr) 92px;gap:12px;align-items:center;border:1px solid var(--line);border-radius:13px;background:#fff;padding:12px}.spec-row.locked{border-color:#bfdbfe;background:#f8fbff}.spec-label-cell{display:grid;gap:3px}.spec-label-cell strong{color:#1e293b}.spec-label-cell small{color:#64748b;font-size:11px;font-weight:800}.spec-label-input{padding:9px 10px}.spec-input-cell{min-width:0}.spec-value-wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.spec-value-wrap span{color:#64748b;font-weight:900}.spec-multi{display:flex;flex-wrap:wrap;gap:8px}.spec-multi label{display:flex;flex-direction:row;align-items:center;gap:6px;width:auto;border:1px solid var(--line);border-radius:999px;padding:7px 10px;background:#f8fafc;font-size:12px}.spec-multi input{width:auto}.spec-row-actions{display:flex;justify-content:flex-end;gap:7px}.spec-icon-btn,.spec-icon-placeholder{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);display:grid;place-items:center;background:#fff;color:var(--blue);font-size:18px;font-weight:900;line-height:1}.spec-icon-btn{cursor:pointer}.spec-icon-btn:hover{background:#eaf2ff;border-color:#9ec5ff}.spec-icon-btn.danger{color:#b91c1c}.spec-icon-btn.danger:hover{background:#fee2e2;border-color:#fecaca}.spec-icon-placeholder{color:#94a3b8;font-size:15px;background:#f8fafc}.spec-add-inline{margin-top:12px;border:1px dashed #9ec5ff;background:#f8fbff;border-radius:13px;padding:12px;display:grid;grid-template-columns:150px minmax(180px,.8fr) minmax(220px,1fr) auto auto;gap:10px}.camera-ai-section{margin-top:22px}.product-spec-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 14px}.product-spec-chips span{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:850}@media(max-width:900px){.spec-groups{grid-template-columns:1fr}.spec-row{grid-template-columns:1fr}.spec-row-actions{justify-content:flex-start}.spec-add-inline{grid-template-columns:1fr}}

/* v3.0.20 - selezione telecamera su mappa più guidata */
.camera-picker-modal{
  width:min(1320px,97vw);
  height:min(900px,94vh);
  max-height:94vh;
  padding:24px;
}
.camera-picker-tools{
  flex:0 0 auto;
  gap:11px;
  margin:16px 0 10px;
}
.camera-category-filters{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(145px,1fr));
  gap:8px;
}
.camera-category-card{
  border:1px solid #d7e4f7;
  border-radius:13px;
  background:#fff;
  padding:11px 12px;
  text-align:left;
  display:grid;
  gap:4px;
  cursor:pointer;
  color:#1e293b;
  transition:background .15s,border-color .15s,box-shadow .15s,color .15s;
}
.camera-category-card strong{font-size:13px;font-weight:900;line-height:1.15}
.camera-category-card small{font-size:11px;color:#64748b;font-weight:800}
.camera-category-card:hover{border-color:#9ec5ff;background:#f8fbff;box-shadow:0 0 0 3px rgba(11,99,246,.08)}
.camera-category-card.active{border-color:var(--blue);background:var(--blue);color:#fff;box-shadow:0 8px 20px rgba(11,99,246,.18)}
.camera-category-card.active small{color:#dbeafe}
.camera-spec-filter-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.camera-spec-dropdown{
  border:1px solid #dce7f5;
  border-radius:13px;
  background:#fff;
  overflow:hidden;
}
.camera-spec-dropdown[open]{border-color:#b9d4fb;box-shadow:0 0 0 3px rgba(11,99,246,.06)}
.camera-spec-dropdown summary{
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  cursor:pointer;
  user-select:none;
}
.camera-spec-dropdown summary::-webkit-details-marker{display:none}
.camera-spec-dropdown summary span{display:grid;gap:2px;min-width:0}
.camera-spec-dropdown summary b{font-size:12px;color:#1e293b;text-transform:uppercase;letter-spacing:.035em}
.camera-spec-dropdown summary small{font-size:11px;color:#64748b;font-weight:800}
.camera-spec-dropdown summary i{font-style:normal;color:#64748b;font-weight:900;transition:transform .15s}
.camera-spec-dropdown[open] summary i{transform:rotate(180deg)}
.camera-filter-dropdown-options{
  border-top:1px solid #edf2f7;
  background:#fbfdff;
  padding:10px;
  display:flex;
  flex-wrap:wrap;
  gap:7px;
}
.camera-secondary-toggle{border-radius:12px;padding:9px 13px}
.camera-results-summary{flex:0 0 auto;margin:0 0 8px}
.camera-picker-modal .camera-product-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  max-height:none;
  overflow-y:auto;
  flex:1 1 auto;
  min-height:230px;
  padding:2px 6px 2px 2px;
  align-content:start;
}
.camera-choice-card{min-height:286px;position:relative}
.camera-choice-card .choice-image{height:112px}
.camera-choice-hint{font-size:11px;color:#64748b;font-weight:800;background:#f1f5f9;border-radius:999px;padding:4px 8px;justify-self:start}
.camera-picker-empty{flex:1 1 auto}
@media(max-width:1150px){.camera-picker-modal .camera-product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.camera-spec-filter-list{grid-template-columns:1fr}}
@media(max-width:760px){.camera-picker-modal{height:96vh;padding:20px}.camera-category-filters{display:flex;overflow-x:auto;grid-template-columns:none}.camera-category-card{min-width:145px}.camera-picker-modal .camera-product-grid{grid-template-columns:1fr}.camera-choice-card{min-height:auto}}

/* v3.0.21 - picker telecamera più compatto, proprietà colore pallina e accessori manuali */
.camera-canvas-toolbar{align-items:center;gap:10px}.camera-canvas-toolbar .camera-save-status{margin-left:auto}.camera-canvas-toolbar #gridBtn.hidden{display:none!important}.camera-filter-panel{border:1px solid #dce7f5;border-radius:14px;background:#fff;overflow:hidden}.camera-filter-panel>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;user-select:none}.camera-filter-panel>summary::-webkit-details-marker{display:none}.camera-filter-panel>summary span{font-weight:900;color:#1e293b}.camera-filter-panel>summary small{margin-left:auto;color:#64748b;font-size:11px;font-weight:800}.camera-filter-panel>summary i{font-style:normal;color:#64748b;font-weight:900;transition:transform .15s}.camera-filter-panel[open]>summary i{transform:rotate(180deg)}.camera-filter-panel[open]{border-color:#b9d4fb;box-shadow:0 0 0 3px rgba(11,99,246,.06)}.camera-filter-panel-body{border-top:1px solid #eef3f8;padding:12px;background:#fbfdff}.camera-category-filters{grid-template-columns:repeat(auto-fit,minmax(112px,1fr))}.camera-category-card{justify-content:center;text-align:center;min-height:42px;padding:10px 12px}.camera-category-card strong{font-size:13px}.camera-category-card small{display:none!important}.camera-picker-modal .camera-product-grid{grid-template-columns:repeat(4,minmax(0,1fr));max-height:none;overflow-y:auto}.camera-choice-card{min-height:274px}.camera-marker-color-row label{display:grid;grid-template-columns:minmax(0,1fr) 54px;align-items:center;gap:10px}.camera-marker-color-row input[type="color"]{height:40px;padding:3px;border:1px solid #cbd5e1;border-radius:10px;background:#fff}.property-hidden-inputs{display:none!important}.cone-visibility-compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.cone-visibility-compact .property-section-label{grid-column:1/-1}.cone-visibility-compact .cone-visibility-row{display:grid!important;grid-template-columns:1fr auto;padding:8px;gap:6px}.cone-visibility-compact .cone-visibility-row>span{font-size:11px;gap:5px;white-space:nowrap}.cone-visibility-compact .cone-visibility-row input[type="checkbox"]{width:15px;height:15px}.cone-visibility-compact .cone-visibility-row input[type="color"]{width:32px;height:24px;border-radius:7px}.camera-list-thumb{width:46px!important;height:34px!important;overflow:hidden;background:#fff!important;border:1px solid #e2e8f0}.camera-list-thumb img{width:100%;height:100%;object-fit:contain}.camera-list-thumb span{font-size:10px;font-weight:900;color:#64748b;letter-spacing:.03em}.device-row{align-items:center}.device-row .thumb{flex:0 0 auto}.device-row i{box-shadow:0 0 0 2px #fff,0 0 0 3px rgba(15,23,42,.1)}.camera-thumb-fallback{font-size:11px;font-weight:900;color:#64748b}.accessory-groups section h3{margin:0 0 8px}.accessory-groups .empty{min-height:100px}.generic-accessory-modal .recorder-product-grid{grid-template-columns:repeat(4,minmax(0,1fr));max-height:48vh}.generic-accessory-confirm{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}
@media(max-width:1150px){.camera-picker-modal .camera-product-grid,.generic-accessory-modal .recorder-product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.cone-visibility-compact{grid-template-columns:1fr}.cone-visibility-compact .property-section-label{grid-column:auto}}
@media(max-width:760px){.camera-category-card{min-width:118px}.camera-picker-modal .camera-product-grid,.generic-accessory-modal .recorder-product-grid{grid-template-columns:1fr}}
.camera-distance-box{display:grid;grid-template-columns:1fr;gap:6px}.camera-distance-box span{display:flex;justify-content:space-between;gap:10px}.camera-distance-box strong{white-space:nowrap}.properties label small{color:#64748b;font-weight:600}

/* v3.0.24 - proprietà telecamera guidate da distanza bersaglio e icone marker */
.camera-props-compact{display:grid;grid-template-columns:1fr;gap:10px}.camera-props-compact label{display:grid;gap:5px}.camera-props-compact select{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;background:#fff;color:#0f172a}.camera-props-compact input[type="color"]{height:40px;padding:3px;border:1px solid #cbd5e1;border-radius:10px;background:#fff}.camera-distance-box{background:#f8fbff;border-color:#dbeafe}.camera-distance-box span{font-size:12px}.camera-distance-box strong{color:#0b63f6}.cone-visibility-compact .cone-visibility-row span{align-items:center}.selected-product+.camera-props-compact{margin-top:2px}.properties .card-head .icon-danger{margin-left:auto}
.camera-target-box .coverage-ok{color:#15803d!important}.camera-target-box .coverage-warning{color:#b45309!important}.camera-target-box .coverage-bad{color:#b91c1c!important}.camera-target-box{border:1px solid #dbeafe}

/* v3.0.26 - riepilogo registratore più completo e pagina accessori pulita */
.selected-recorder-price{display:grid;gap:2px;text-align:right;line-height:1.25}
.selected-recorder-price small{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.recorder-selection-stack .recorder-items-summary{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));max-height:none;overflow:visible;gap:12px}
.recorder-selection-stack .recorder-items-summary>span{display:none}
.recorder-summary-item-card{border:1px solid var(--line);border-radius:13px;background:#fff;display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;min-height:82px}
.recorder-summary-item-image{width:64px;height:58px;border-radius:10px;background:#f8fafc;border:1px solid #e8eef7;display:grid;place-items:center;overflow:hidden;color:#b7c7df;font-size:26px}
.recorder-summary-item-image img{width:100%;height:100%;object-fit:contain}
.recorder-summary-item-copy{display:grid;gap:3px;min-width:0}
.recorder-summary-item-copy small,.recorder-summary-item-copy span,.recorder-summary-item-copy p{color:#64748b}
.recorder-summary-item-copy small{font-size:11px;font-weight:800}
.recorder-summary-item-copy strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--navy)}
.recorder-summary-item-copy span{font-size:12px;font-weight:750}
.recorder-summary-item-copy p{font-size:12px;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.recorder-summary-item-price{display:grid;gap:2px;text-align:right;color:var(--blue);font-size:14px;white-space:nowrap;line-height:1.25}
.recorder-summary-item-price small{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.accessory-clean-page .accessory-main-card{padding-top:18px}
.accessory-action-card{margin-bottom:22px}
.accessory-bottom-actions{border-top:1px solid var(--line);margin-top:18px;padding-top:16px;display:flex;justify-content:flex-end}
@media(max-width:760px){.recorder-summary-item-card{grid-template-columns:58px minmax(0,1fr);align-items:start}.recorder-summary-item-price{grid-column:2;text-align:left}.accessory-bottom-actions .btn{width:100%}}

/* v3.0.27 - Righe prodotto unificate e colore mappa */
.map-color-panel{border-top:1px solid var(--line);margin-top:18px;padding-top:18px;display:grid;gap:10px}
.map-color-panel h2{font-size:18px;margin:0;color:#0f172a}
.toggle-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:11px 12px;font-weight:800;color:#26364e}
.toggle-row input{width:auto;accent-color:var(--blue)}
.project-product-row{display:grid;grid-template-columns:58px minmax(86px,.75fr) 110px minmax(220px,1.8fr) auto 42px 42px;gap:12px;align-items:center;border:1px solid var(--line);border-radius:13px;background:#fff;padding:10px 12px;min-height:78px}
.project-product-row+.project-product-row{margin-top:8px}
.project-product-image{width:58px;height:54px;border-radius:10px;background:#f8fafc;border:1px solid #e8eef7;display:grid;place-items:center;overflow:hidden;color:#b7c7df;font-size:24px}
.project-product-image img{width:100%;height:100%;object-fit:contain}
.project-product-code,.project-product-desc,.project-product-price,.project-product-qty-control,.project-product-qty-form label{display:grid;gap:3px;min-width:0}
.project-product-code small,.project-product-desc small,.project-product-price small,.project-product-qty-control small,.project-product-qty-form small{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:#64748b;font-weight:900}
.project-product-code strong,.project-product-desc strong{font-size:13px;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.project-product-desc span{font-size:12px;color:#64748b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25}
.project-product-price{color:var(--blue);text-align:right;white-space:nowrap;font-size:13px;line-height:1.25}
.project-product-qty-control input,.project-product-qty-form input{height:36px;padding:8px 9px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font-weight:800}
.project-product-qty-form{display:grid;grid-template-columns:minmax(76px,1fr) 38px;gap:6px;align-items:end;margin:0}
.icon-light{width:38px;height:38px;border:1px solid #dbe7ff;background:#f5f9ff;color:var(--blue);border-radius:10px;display:grid;place-items:center;cursor:pointer;font-weight:900}
.icon-light .ui-icon{width:18px;height:18px}
.project-product-delete-form{margin:0}
.product-row-delete,.product-row-edit{width:38px;height:38px;padding:0;font-size:18px}
.recorder-items-summary{display:grid;gap:8px}
.accessory-project-grid{display:grid;gap:8px}
@media(max-width:980px){.project-product-row{grid-template-columns:54px minmax(0,1fr) 100px 42px 42px}.project-product-desc{grid-column:2/6}.project-product-price{grid-column:2/4;text-align:left}.project-product-qty-form{grid-template-columns:1fr 38px}}

/* v3.0.29 - più videoregistratori nello stesso progetto */
.recorder-selection-stack .selected-recorder-summary{
  display:grid;
  grid-template-columns:1fr;
  align-items:stretch;
  gap:8px;
}
.recorder-selection-stack .selected-recorder-summary .recorder-empty-selection{
  min-height:92px;
}
.recorder-selection-stack .selected-recorder-summary .project-product-row{
  margin-top:0;
}


/* v3.0.32 - righe prodotto uniformi, note in preventivo e PDF */
.selected-recorder-summary,
.recorder-ordered-summary,
.accessory-project-grid,
.quote-product-list{
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  align-items:stretch;
}
.recorder-items-summary .project-product-row,
.selected-recorder-summary .project-product-row,
.accessory-project-grid .project-product-row,
.quote-product-list .project-product-row{
  width:100%;
  margin-top:0;
}
.project-product-row{
  grid-template-columns:58px minmax(92px,.75fr) 110px minmax(240px,1.9fr) minmax(118px,auto) 42px 42px;
}
.project-product-qty-form{grid-template-columns:minmax(82px,1fr) 38px}
.project-product-qty-form .product-row-edit[type="button"]{cursor:pointer}
.project-product-price em{font-style:normal;color:#64748b;font-size:11px;font-weight:800}
.quote-product-list{margin-top:14px}
.quote-product-row{grid-template-columns:58px minmax(92px,.7fr) 110px minmax(260px,1.8fr) minmax(106px,auto) minmax(230px,1.1fr) minmax(100px,auto)}
.quote-product-row .project-product-price{text-align:right}
.quote-description-inline{height:36px;padding:8px 9px;font-size:13px;font-weight:800}
.quote-price-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0}
.quote-price-controls label{display:grid;gap:3px;font-size:10px;text-transform:uppercase;color:#64748b;font-weight:900}
.quote-price-controls input{height:36px;padding:8px 9px}
.quote-row-total{display:grid;gap:3px;text-align:right;color:var(--blue);font-size:13px;white-space:nowrap}
.quote-row-total small,.quote-include-toggle{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;font-weight:900}
.quote-include-toggle{margin-top:5px;display:flex;flex-direction:row!important;align-items:center;gap:5px}
.quote-include-toggle input{width:auto}
.quote-note-row{background:#f8fbff;border-style:dashed}
.note-product-image{color:var(--blue);background:#eef6ff}
.quote-empty-state{border:1px dashed var(--line);border-radius:13px;padding:18px;background:#fff;color:#64748b}
@media(max-width:1180px){.quote-product-row{grid-template-columns:54px minmax(0,1fr) 100px 42px}.quote-product-row .project-product-desc,.quote-product-row .quote-price-controls,.quote-product-row .quote-row-total{grid-column:2/5}.quote-product-row .project-product-price{text-align:left}.quote-note-row .project-product-delete-form{grid-column:4}.project-product-row{grid-template-columns:54px minmax(0,1fr) 100px 42px 42px}.project-product-desc{grid-column:2/6}.project-product-price{grid-column:2/4;text-align:left}}
/* v3.0.33 - Riga PDF ordinabile e selezione prodotti con un click */
.picker-click-hint{margin:14px 2px 0;color:#64748b}
.quote-product-row{grid-template-columns:54px minmax(82px,.8fr) minmax(92px,.8fr) minmax(240px,2fr) minmax(90px,.8fr) minmax(190px,1.1fr) minmax(76px,.65fr) auto auto;align-items:center}
.quote-note-row{grid-template-columns:54px minmax(82px,.8fr) minmax(92px,.8fr) minmax(320px,2.2fr) minmax(70px,.6fr) auto auto}
.quote-row-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end}
.quote-row-actions .icon-light{width:34px;height:34px;padding:0;border-radius:9px}
.quote-row-actions .ui-icon{width:17px;height:17px}
.quote-note-editor textarea{min-height:58px;padding:9px 11px;border-radius:10px;font-weight:600;color:#1f2937}
.quote-product-row>.icon-danger{width:36px;height:36px;padding:0;display:grid;place-items:center}
.quote-product-row>.icon-danger .ui-icon{width:18px;height:18px}
@media(max-width:1450px){.quote-product-row,.quote-note-row{grid-template-columns:54px minmax(90px,1fr) minmax(80px,.7fr) minmax(260px,2fr);gap:10px}.quote-price-controls,.quote-row-total,.quote-row-actions,.quote-product-row>.icon-danger{grid-column:auto}.quote-note-row .quote-row-actions{justify-content:flex-start}}

/* v3.0.42 — pulizia Dashboard, Siti e anteprime Progetti */
.dashboard-layout-single{display:block}
.dashboard-layout-single>.card{width:100%}
.dashboard-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}

.site-search-card{display:grid;grid-template-columns:minmax(240px,1fr) minmax(190px,.55fr) minmax(180px,.45fr) auto;gap:12px;align-items:end;margin:0 0 20px;padding:14px;border:1px solid rgba(148,163,184,.35);border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(15,23,42,.06)}
.site-search-card label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:#475569}
.site-search-card input,.site-search-card select{min-height:40px;border:1px solid #d7dee8;border-radius:11px;padding:8px 11px;background:#f8fafc;color:#0f172a}
.site-search-actions{display:flex;gap:8px}
.site-search-actions .btn{min-height:40px;white-space:nowrap}

.site-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px}
.site-card-clean{min-width:0;background:#fff;border:1px solid var(--line);border-radius:19px;box-shadow:0 8px 28px rgba(15,23,42,.05);overflow:hidden;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.site-card-clean:hover{transform:translateY(-2px);border-color:#9ec5ff;box-shadow:0 14px 34px rgba(15,23,42,.09)}
.site-card-link{position:relative;display:grid;grid-template-columns:68px minmax(0,1fr);grid-template-rows:minmax(104px,auto) auto;gap:0 16px;align-items:center;padding:16px 16px 12px;color:inherit;text-decoration:none}
.site-card-icon{width:68px;height:68px;border-radius:18px;display:grid;place-items:center;color:var(--blue);background:#eaf2ff;align-self:start;margin-top:4px}
.site-card-icon-svg{width:34px;height:34px}
.site-card-content{min-width:0;align-self:start;display:grid;gap:6px;padding-top:2px}
.site-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.site-card-heading strong{min-width:0;color:var(--navy);font-size:18px;line-height:1.25;overflow-wrap:anywhere}
.site-card-heading>span{flex:none;padding:4px 8px;border-radius:999px;background:#eef4ff;color:#0c5bcf;font-size:11px;font-weight:850}
.site-card-customer{font-weight:750;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-card-location{display:flex;align-items:center;gap:5px;color:#64748b;font-size:12px;line-height:1.4}
.site-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}
.site-card-tags em{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:999px;background:#f1f5f9;color:#475569;font-size:11px;font-style:normal;font-weight:750}

.site-card-open{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line);color:var(--blue);font-size:12px;font-weight:850}

.site-detail-hero-clean{padding:20px 22px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,#fff,#f7faff);box-shadow:0 8px 28px rgba(15,23,42,.04)}
.site-detail-identity{display:flex;align-items:flex-start;gap:18px;min-width:0}
.site-detail-main-icon{width:78px;height:78px;flex:none;border-radius:21px;display:grid;place-items:center;color:var(--blue);background:#eaf2ff;margin-top:28px}
.site-detail-main-icon-svg{width:40px;height:40px}
.site-detail-hero-clean h2{font-size:38px;margin:7px 0 10px}
.site-stats-compact{grid-template-columns:repeat(3,minmax(132px,1fr))}
.site-stats-compact>div{grid-template-columns:42px 1fr;padding:14px;column-gap:10px;border-radius:15px}
.site-stats-compact .stat-icon{width:42px;height:42px;border-radius:12px}
.site-stats-compact strong{font-size:22px}

.project-card-grid-clean{grid-template-columns:repeat(auto-fill,minmax(520px,1fr));gap:18px}
.project-card-clean{padding:16px;border-radius:19px}
.project-card-layout{display:grid;grid-template-columns:148px minmax(0,1fr);gap:16px;align-items:start}
.project-map-preview{width:148px;height:108px;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,#e2e8f0,#f8fafc);text-decoration:none}
.project-map-preview img{width:100%;height:100%;object-fit:cover;transition:transform .18s ease}
.project-map-preview:hover img{transform:scale(1.025)}
.project-map-preview>span{display:grid;place-items:center;gap:6px;color:#64748b}
.project-map-preview small{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.project-map-placeholder-icon{width:28px;height:28px}
.project-card-main{min-width:0}
.project-card-title-clean{grid-template-columns:52px minmax(0,1fr);gap:12px}
.project-card-title-clean .project-icon{width:52px;height:52px;border-radius:14px}
.project-card-title-clean h3{font-size:18px;margin:1px 0 7px;overflow-wrap:anywhere}
.project-type-line{margin:10px 0 5px;color:#334155;font-size:13px;font-weight:800}
.project-card-clean .project-description{min-height:0;margin:4px 0 0;font-size:12px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.project-metrics-clean{margin:14px 0 12px;padding:11px 0}
.project-metrics-clean small{font-size:11px}
.project-metrics-clean strong{font-size:12px;white-space:nowrap}
.project-actions-clean{grid-template-columns:1fr 1fr 46px;gap:8px}
.project-actions-clean form,.project-actions-clean form .btn{width:100%}
.project-actions-clean .btn{min-height:39px;padding:9px 10px}
.project-actions-clean form:last-child{width:46px}
.project-actions-clean .project-delete-button{width:46px;color:#be123c;background:#fff1f2;border-color:#fecdd3;padding:9px}
.project-actions-clean .project-delete-button:hover{background:#ffe4e6}
.project-actions-clean .project-delete-button .btn-icon{width:19px;height:19px}

@media(max-width:1150px){
  .dashboard-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .site-detail-hero-clean{grid-template-columns:1fr}
  .site-detail-main-icon{margin-top:0}
  .site-stats-compact{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:820px){
  .site-search-card{grid-template-columns:1fr 1fr}
  .site-search-actions{align-self:end}
  .site-card-grid,.project-card-grid-clean{grid-template-columns:1fr}
}
@media(max-width:650px){
  .dashboard-stat-grid{grid-template-columns:1fr}
  .site-search-card{grid-template-columns:1fr}
  .site-card-link{grid-template-columns:58px minmax(0,1fr);grid-template-rows:auto auto auto;padding:14px;gap:12px}
  .site-card-icon{width:58px;height:58px;border-radius:16px;margin-top:0}
  .site-card-icon-svg{width:29px;height:29px}
  .site-card-open{margin-top:0}
  .site-detail-identity{display:grid;grid-template-columns:62px minmax(0,1fr);gap:13px}
  .site-detail-main-icon{width:62px;height:62px;border-radius:17px}
  .site-detail-main-icon-svg{width:32px;height:32px}
  .site-detail-hero-clean h2{font-size:30px}
  .site-stats-compact{grid-template-columns:1fr}
  .project-card-layout{grid-template-columns:1fr}
  .project-map-preview{width:100%;height:148px}
  .project-actions-clean{grid-template-columns:1fr 46px}
  .project-actions-clean>a:first-child,.project-actions-clean>form:nth-child(2){grid-column:1/-1}
  .project-actions-clean form:last-child{grid-column:2;justify-self:end}
}


/* v3.0.43 — profilo utente nella barra superiore */
.user-profile-button{
  width:42px;
  height:42px;
  padding:0;
  color:var(--blue);
  background:var(--card);
  border:1px solid var(--line);
}
.user-profile-button:hover{background:var(--blue2);color:var(--blue)}
.logout-button{background:#dc2626;color:#fff;border:1px solid #dc2626}
.logout-button:hover{background:#b91c1c;border-color:#b91c1c;color:#fff}
.user-profile-modal{width:min(650px,92vw)}
.user-profile-heading{display:flex;align-items:center;gap:16px;padding:0 44px 20px 0;border-bottom:1px solid var(--line)}
.user-profile-heading h2{font-size:23px;margin-top:3px}
.user-profile-heading p{margin:5px 0 0;color:var(--muted);font-size:13px;font-weight:700}
.user-profile-avatar{width:58px;height:58px;min-width:58px;border-radius:17px;background:var(--blue);color:#fff;display:grid;place-items:center;font-size:19px;font-weight:900;box-shadow:0 0 0 5px var(--blue2)}
.user-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:20px}
.user-profile-field{min-width:0;display:grid;gap:5px;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.user-profile-field span{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.055em}
.user-profile-field strong{min-width:0;overflow-wrap:anywhere;font-size:14px;color:var(--ink)}
.user-profile-field.span-2{grid-column:span 2}
@media(max-width:760px){
  .user-profile-grid{grid-template-columns:1fr}
  .user-profile-field.span-2{grid-column:auto}
}
@media(max-width:560px){
  .user-profile-button{width:42px;height:42px}
  .user-profile-modal{padding:22px}
  .user-profile-heading{align-items:flex-start}
}

/* v3.0.45 — azioni progetto compatte e profilo utente modificabile */
.project-metrics-two{grid-template-columns:repeat(2,minmax(0,1fr))}
.project-actions-icons{grid-template-columns:minmax(120px,1fr) repeat(3,46px);align-items:stretch}
.project-actions-icons .project-open-button{width:100%;justify-content:center}
.project-actions-icons .project-action-form{width:46px!important;display:block}
.project-actions-icons .project-action-icon{width:46px!important;min-width:46px;min-height:39px;padding:9px!important;display:grid;place-items:center}
.project-actions-icons .project-action-icon .btn-icon{width:19px;height:19px}
.project-actions-icons .project-delete-button{color:#be123c;background:#fff1f2;border-color:#fecdd3}
.project-actions-icons .project-delete-button:hover{background:#ffe4e6;border-color:#fda4af}
.project-edit-modal{width:min(650px,92vw)}
.project-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}

.user-profile-modal{width:min(700px,92vw)}
.user-profile-form{display:grid;gap:16px;margin-top:18px}
.user-profile-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.user-profile-form-grid label{min-width:0;display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:800}
.user-profile-form-grid label.span-2{grid-column:span 2}
.user-profile-form-grid input{width:100%;color:var(--ink);background:var(--card);border:1px solid var(--line)}
.profile-form-note{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.profile-update-alert{margin:16px 0 0}

@media(max-width:650px){
  .project-actions-icons{grid-template-columns:minmax(100px,1fr) repeat(3,42px)}
  .project-actions-icons .project-action-form,.project-actions-icons .project-action-icon{width:42px!important;min-width:42px}
  .project-edit-grid,.user-profile-form-grid{grid-template-columns:1fr}
  .user-profile-form-grid label.span-2{grid-column:auto}
}
@media(max-width:650px){
  .project-actions-icons>a:first-child,
  .project-actions-icons>form:nth-child(2),
  .project-actions-icons>form:last-child{grid-column:auto;justify-self:stretch}
}

/* v3.0.46 – catalogo prodotti: gerarchia card e paginazione */
.catalog-results-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:4px 0 14px;
  color:#475569;
}
.catalog-results-bar strong{color:var(--navy)}
.catalog-results-bar small{color:var(--muted)}
.product-card-clean-body{gap:12px;padding:16px}
.product-card-name{
  color:var(--navy);
  font-size:14px;
  font-weight:500;
  line-height:1.4;
  min-height:40px;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
}
.product-card-code{
  display:grid;
  gap:3px;
  padding:12px 14px;
  border-radius:12px;
  background:linear-gradient(135deg,#17243a,#253b5c);
  color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.product-card-code small{
  color:rgba(255,255,255,.7);
  font-size:10px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.product-card-code strong{
  color:#fff;
  font-size:21px;
  line-height:1.15;
  letter-spacing:.025em;
  overflow-wrap:anywhere;
}
.product-card-description{
  min-height:57px!important;
  -webkit-line-clamp:3!important;
  color:var(--muted)!important;
  font-size:13px!important;
  font-weight:400;
}
.product-card-footer{
  display:grid;
  gap:12px;
  margin-top:auto;
  padding-top:13px;
  border-top:1px solid var(--line);
}
.product-list-price{display:grid;gap:2px}
.product-list-price small{color:var(--muted);font-size:11px}
.product-list-price strong{color:var(--blue);font-size:22px;line-height:1.2}
.product-list-price span{color:#b91c1c;font-size:11px;font-weight:800}
.product-edit-button{width:100%}
.catalog-pagination{
  display:grid;
  grid-template-columns:minmax(130px,1fr) auto minmax(130px,1fr);
  align-items:center;
  gap:14px;
  margin-top:24px;
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--card);
}
.pagination-arrow{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:var(--blue);
  font-weight:800;
  text-decoration:none;
}
.pagination-arrow:last-child{justify-self:end}
.pagination-arrow.disabled{color:#94a3b8;cursor:not-allowed}
.pagination-pages{display:flex;align-items:center;justify-content:center;gap:6px}
.pagination-pages a,
.pagination-pages span{
  min-width:36px;
  height:36px;
  padding:0 9px;
  border-radius:10px;
  display:grid;
  place-items:center;
  color:#475569;
  font-weight:800;
  text-decoration:none;
}
.pagination-pages a{border:1px solid transparent}
.pagination-pages a:hover{border-color:#bfd5fb;background:#f4f8ff;color:var(--blue)}
.pagination-pages a.active{background:var(--blue);color:#fff;border-color:var(--blue)}
@media(max-width:760px){
  .catalog-results-bar{align-items:flex-start;flex-direction:column;gap:4px}
  .catalog-pagination{grid-template-columns:1fr 1fr}
  .pagination-pages{grid-column:1/-1;grid-row:1;flex-wrap:wrap}
  .pagination-arrow{grid-row:2}
  .product-card-name{min-height:auto}
}

/* v3.0.47 - area amministrativa per la pulizia controllata del database */
.settings-main-layout{align-items:start}
.settings-result-alert{margin:0 0 18px}
.settings-danger-zone{margin-top:24px;border:1px solid #fecaca;border-radius:18px;background:#fff7f7;padding:22px}
.settings-danger-heading{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px}
.settings-danger-heading h2{margin:2px 0 6px}
.settings-danger-heading p{margin:0;color:#7f1d1d;line-height:1.5}
.settings-danger-heading code{display:inline-block;padding:2px 6px;border-radius:6px;background:#fee2e2;color:#991b1b;font-size:12px}
.settings-danger-icon,.settings-danger-modal-icon{width:44px;height:44px;min-width:44px;border-radius:13px;display:grid;place-items:center;background:#fee2e2;color:#b91c1c}
.settings-danger-icon .ui-icon,.settings-danger-modal-icon .ui-icon{width:24px;height:24px}
.settings-danger-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.settings-danger-card{display:flex;flex-direction:column;gap:15px;border:1px solid #fecaca;border-radius:16px;background:#fff;padding:18px}
.settings-danger-card-head{display:flex;align-items:flex-start;gap:12px}
.settings-danger-card-head h3{margin:0 0 5px}
.settings-danger-card-head p{margin:0;color:var(--muted);line-height:1.45}
.settings-danger-card-icon{width:40px;height:40px;min-width:40px;border-radius:12px;display:grid;place-items:center;background:#fff1f2;color:#be123c}
.settings-danger-card-icon .ui-icon{width:21px;height:21px}
.settings-danger-stats{display:flex;flex-wrap:wrap;gap:8px}
.settings-danger-stats span{display:inline-flex;align-items:baseline;gap:5px;border:1px solid #fecdd3;border-radius:999px;padding:6px 10px;background:#fff1f2;color:#9f1239;font-size:12px}
.settings-danger-stats strong{font-size:15px;color:#881337}
.settings-danger-effects{margin:0;padding-left:19px;color:#475569;line-height:1.55;font-size:13px}
.settings-danger-action{align-self:flex-start;margin-top:auto}
.settings-danger-modal{width:min(660px,92vw);border:1px solid #fecaca}
.settings-danger-modal-heading{display:flex;align-items:flex-start;gap:14px;padding-right:30px;margin-bottom:20px}
.settings-danger-modal-heading h2{margin:2px 0 6px}
.settings-danger-modal-heading p{margin:0;color:var(--muted);line-height:1.45}
.settings-danger-form{display:grid;gap:14px}
.settings-danger-form label strong{color:#b91c1c}

body.app-dark-theme .settings-danger-zone{background:rgba(127,29,29,.16);border-color:#7f1d1d}
body.app-dark-theme .settings-danger-heading p{color:#fecaca}
body.app-dark-theme .settings-danger-heading code{background:rgba(127,29,29,.35);color:#fecaca}
body.app-dark-theme .settings-danger-card{background:#111827;border-color:#7f1d1d}
body.app-dark-theme .settings-danger-card-icon,
body.app-dark-theme .settings-danger-icon,
body.app-dark-theme .settings-danger-modal-icon{background:rgba(127,29,29,.35);color:#fca5a5}
body.app-dark-theme .settings-danger-stats span{background:rgba(136,19,55,.24);border-color:#881337;color:#fda4af}
body.app-dark-theme .settings-danger-stats strong{color:#fecdd3}
body.app-dark-theme .settings-danger-effects{color:#cbd5e1}
body.app-dark-theme .settings-danger-modal{background:#111827;border-color:#7f1d1d}

@media(max-width:900px){.settings-danger-grid{grid-template-columns:1fr}}
@media(max-width:600px){.settings-danger-zone{padding:16px}.settings-danger-heading,.settings-danger-modal-heading{gap:10px}.settings-danger-card{padding:15px}.settings-danger-modal .modal-actions{display:grid;grid-template-columns:1fr}.settings-danger-modal .modal-actions .btn{width:100%}}

/* Telecamere mappa - pannello proprietà organizzato in sezioni espandibili */
.camera-planner-layout{grid-template-columns:300px minmax(620px,1fr) 370px}
.camera-canvas-toolbar-clean{min-height:0;margin-bottom:8px}
.camera-properties-panel{padding:16px}
.camera-selected-product{padding:2px 2px 14px}
.camera-selected-product>div:last-child{display:grid;gap:3px;min-width:0}
.camera-selected-product strong,.camera-selected-product small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camera-property-accordion{display:grid;gap:10px}
.camera-property-panel{overflow:hidden;border:1px solid var(--line);border-radius:13px;background:var(--card);transition:border-color .16s ease,box-shadow .16s ease}
.camera-property-panel[open]{border-color:color-mix(in srgb,var(--blue) 45%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 10%,transparent)}
.camera-property-panel>summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:52px;padding:11px 12px;cursor:pointer;list-style:none;background:var(--bg);user-select:none}
.camera-property-panel>summary::-webkit-details-marker{display:none}
.camera-property-panel>summary::after{content:'›';grid-column:2;grid-row:1;color:var(--muted);font-size:22px;font-weight:700;line-height:1;transform:rotate(90deg);transition:transform .16s ease,color .16s ease}
.camera-property-panel[open]>summary::after{transform:rotate(-90deg);color:var(--blue)}
.camera-property-panel>summary>small{grid-column:1/-1;margin-left:34px;margin-top:-8px;color:var(--muted);font-size:10px;font-weight:700;line-height:1.3}
.camera-property-summary-main{display:flex;align-items:center;gap:9px;min-width:0;color:var(--ink);font-size:13px;font-weight:900}
.camera-property-summary-icon{display:grid;place-items:center;flex:0 0 auto;width:25px;height:25px;border-radius:8px;background:var(--blue2);color:var(--blue);font-size:10px;font-weight:950}
.camera-property-summary-icon.visual{font-size:15px}
.camera-property-summary-icon.accessories{color:var(--orange);background:color-mix(in srgb,var(--orange) 14%,transparent);font-size:15px}
.camera-property-summary-icon.info{color:var(--green);background:color-mix(in srgb,var(--green) 14%,transparent);font-size:13px;font-family:Georgia,serif}
.camera-property-panel-body{display:grid;gap:11px;padding:12px;border-top:1px solid var(--line);background:var(--card)}
.camera-property-panel-body .camera-props-compact{gap:10px}
.camera-property-panel-body label{font-size:11px}
.camera-property-panel-body input,.camera-property-panel-body select{padding:9px 10px;font-size:12px}
.camera-property-panel-body input[type='color']{height:38px;padding:3px}
.camera-visual-panel-body>.optic-properties-section{margin:0;padding:0;border:0;background:transparent}
.camera-visual-panel-body>.optic-properties-section>.optic-properties-title{padding:2px 0}
.camera-accessory-panel-body .selected-accessories{margin:0;min-height:28px}
.camera-accessory-panel-body .btn{margin-top:2px}
.camera-info-grid{display:grid;gap:0;overflow:hidden;border:1px solid var(--line);border-radius:11px;background:var(--bg)}
.camera-info-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;padding:10px 11px;border-bottom:1px solid var(--line)}
.camera-info-row:last-child{border-bottom:0}
.camera-info-row span{color:var(--muted);font-size:10px;font-weight:750;line-height:1.35}
.camera-info-row strong{max-width:190px;color:var(--ink);font-size:11px;font-weight:850;line-height:1.4;text-align:right;overflow-wrap:anywhere}
.camera-info-verification{background:var(--card)}
.camera-info-verification strong.coverage-ok{color:#16a34a}
.camera-info-verification strong.coverage-warning{color:#d97706}
.camera-info-verification strong.coverage-bad{color:#dc2626}
@media(max-width:1450px) and (min-width:1151px){.camera-planner-layout{grid-template-columns:270px minmax(540px,1fr) 340px}}
@media(max-width:1150px){.camera-planner-layout{grid-template-columns:1fr}.camera-properties-panel{position:static}.camera-property-panel>summary>small{margin-left:34px}}

/* v3.0.50 – banner prodotti coerenti nel planner e selezione telecamera espandibile */
.camera-selection-panel{
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:15px;
  background:var(--card);
}
.camera-selection-panel>summary{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  min-height:58px;
  padding:12px 13px;
  cursor:pointer;
  list-style:none;
  background:var(--bg);
  user-select:none;
}
.camera-selection-panel>summary::-webkit-details-marker{display:none}
.camera-selection-panel>summary::after{
  content:'›';
  grid-column:2;
  grid-row:1;
  color:var(--muted);
  font-size:24px;
  font-weight:750;
  line-height:1;
  transform:rotate(90deg);
  transition:transform .16s ease,color .16s ease;
}
.camera-selection-panel[open]>summary::after{transform:rotate(-90deg);color:var(--blue)}
.camera-selection-panel>summary>small{
  grid-column:1/-1;
  margin:-8px 0 0 34px;
  color:var(--muted);
  font-size:10px;
  font-weight:750;
  line-height:1.35;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.camera-property-summary-icon.selected-camera{font-size:9px}
.camera-selection-panel-body{display:grid;gap:12px;padding:12px;border-top:1px solid var(--line)}
.camera-selection-panel-body>.empty{margin:0}

.planner-product-banner{
  position:relative;
  display:grid;
  overflow:hidden;
  min-width:0;
  border:1px solid var(--line);
  border-radius:15px;
  background:var(--card);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.planner-product-banner-image{
  display:grid;
  place-items:center;
  min-width:0;
  height:128px;
  padding:10px;
  overflow:hidden;
  border-bottom:1px solid var(--line);
  background:var(--bg);
  color:var(--muted);
  font-size:26px;
  font-weight:900;
}
.planner-product-banner-image img,
.planner-product-banner-image>svg{
  display:block;
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
}
.planner-product-banner-content{display:grid;gap:10px;min-width:0;padding:13px}
.planner-product-banner-name{
  color:var(--ink);
  font-size:13px;
  font-weight:500;
  line-height:1.35;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
}
.planner-product-banner-code{
  display:grid;
  gap:2px;
  min-width:0;
  padding:10px 11px;
  border-radius:11px;
  background:linear-gradient(135deg,#17243a,#253b5c);
  color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.planner-product-banner-code small,
.planner-product-banner-price small,
.planner-product-quantity small{
  color:var(--muted);
  font-size:9px;
  font-weight:850;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.planner-product-banner-code small{color:rgba(255,255,255,.68)}
.planner-product-banner-code strong{
  color:#fff;
  font-size:17px;
  line-height:1.15;
  letter-spacing:.02em;
  overflow-wrap:anywhere;
}
.planner-product-banner-description{
  min-width:0;
  margin:0;
  color:var(--muted);
  font-size:11px;
  font-weight:400;
  line-height:1.45;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
  overflow:hidden;
}
.planner-product-banner-footer{
  display:flex;
  align-items:end;
  gap:8px;
  min-width:0;
  padding-top:10px;
  border-top:1px solid var(--line);
}
.planner-product-banner-price{display:grid;gap:2px;min-width:0;margin-right:auto}
.planner-product-banner-price strong{color:var(--blue);font-size:16px;line-height:1.2;overflow-wrap:anywhere}
.planner-product-action,
.planner-product-delete{
  display:grid;
  place-items:center;
  flex:0 0 auto;
  width:36px;
  height:36px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--card);
  color:var(--blue);
  cursor:pointer;
}
.planner-product-delete{border-color:color-mix(in srgb,#dc2626 28%,var(--line));background:color-mix(in srgb,#dc2626 9%,var(--card));color:#dc2626}
.planner-product-action svg,.planner-product-delete svg{width:18px;height:18px}
.planner-product-action:hover{border-color:var(--blue);background:var(--blue2)}
.planner-product-delete:hover{border-color:#dc2626;background:color-mix(in srgb,#dc2626 15%,var(--card))}
.planner-product-quantity{display:grid;grid-template-columns:58px;gap:3px;min-width:58px}
.planner-product-quantity input{width:100%;min-width:0;padding:7px 8px;text-align:center}

.planner-camera-banner{cursor:pointer}
.planner-camera-banner:hover{border-color:color-mix(in srgb,var(--blue) 55%,var(--line));transform:translateY(-1px)}
.planner-camera-banner.active{border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 14%,transparent)}
.planner-camera-banner .planner-product-banner-image{height:104px}
.planner-camera-banner .planner-product-banner-content{gap:8px;padding:11px}
.planner-camera-banner .planner-product-banner-description{-webkit-line-clamp:2}
.planner-camera-banner .planner-product-banner-code{padding:9px 10px}
.planner-camera-banner .planner-product-banner-code strong{font-size:15px}
.planner-camera-banner .planner-product-banner-price strong{font-size:14px}
.camera-marker-preview{
  flex:0 0 auto;
  width:12px;
  height:12px;
  margin:0 3px 12px 0;
  border-radius:999px;
  background:var(--marker-color,var(--blue));
  box-shadow:0 0 0 2px var(--card),0 0 0 3px color-mix(in srgb,var(--ink) 15%,transparent);
}
.device-list{gap:12px}
.device-accessory-chips{display:flex;flex-wrap:wrap;gap:4px;min-width:0}
.device-accessory-chip{display:inline-flex;align-items:center;max-width:100%;padding:4px 6px;border:1px solid color-mix(in srgb,var(--blue) 24%,var(--line));border-radius:8px;background:var(--blue2);color:var(--blue);font-size:9px;font-weight:850;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.device-accessory-chip.empty{border-color:var(--line);background:var(--bg);color:var(--muted)}

.camera-selected-product{margin:0;padding:0;border:1px solid var(--line)}
.camera-selected-product .planner-product-banner-image{height:150px}
.camera-selected-product .planner-product-banner-description{-webkit-line-clamp:3}
.camera-selected-product+.camera-property-accordion{margin-top:0}

.planner-product-banner-row{
  grid-template-columns:118px minmax(0,1fr);
  align-items:stretch;
}
.planner-product-banner-row .planner-product-banner-image{
  height:auto;
  min-height:160px;
  border-right:1px solid var(--line);
  border-bottom:0;
}
.planner-product-banner-row .planner-product-banner-content{padding:14px}
.planner-product-banner-row .planner-product-banner-name{min-height:auto}
.planner-product-banner-row .planner-product-banner-description{-webkit-line-clamp:2}
.planner-product-banner-row .planner-product-banner-footer{flex-wrap:wrap}
.project-added-product+.project-added-product{margin-top:10px}
.recorder-ordered-summary,.recorder-items-summary,.accessory-project-grid{gap:10px}

body.app-dark-theme .planner-product-banner-code{background:linear-gradient(135deg,#0f1b2e,#1e3352)}
body.app-dark-theme .planner-product-delete{color:#f87171;border-color:rgba(248,113,113,.34);background:rgba(127,29,29,.18)}
body.app-dark-theme .planner-product-delete:hover{border-color:#f87171;background:rgba(127,29,29,.3)}

@media(max-width:1450px) and (min-width:1151px){
  .planner-camera-banner .planner-product-banner-image{height:90px}
  .planner-camera-banner .planner-product-banner-content{padding:10px}
}
@media(max-width:760px){
  .planner-product-banner-row{grid-template-columns:86px minmax(0,1fr)}
  .planner-product-banner-row .planner-product-banner-image{min-height:150px;padding:7px}
  .planner-product-banner-footer{align-items:center}
  .planner-product-banner-price{width:100%;margin-right:0}
  .planner-product-quantity{grid-template-columns:70px}
}
@media(max-width:520px){
  .planner-product-banner-row{grid-template-columns:1fr}
  .planner-product-banner-row .planner-product-banner-image{height:130px;min-height:0;border-right:0;border-bottom:1px solid var(--line)}
}
.camera-selected-product>.planner-product-banner-content{display:grid;gap:10px;min-width:0;padding:13px}

/* v3.0.51 - selettore telecamere con card coerenti al catalogo Prodotti */
.camera-picker-product-card{
  appearance:none;
  min-width:0;
  padding:0;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  text-align:left;
  color:var(--ink);
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  cursor:pointer;
  box-shadow:0 8px 22px rgba(15,23,42,.06);
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;
}
.camera-picker-product-card:hover,
.camera-picker-product-card:focus-visible{
  transform:translateY(-2px);
  border-color:var(--blue);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 13%,transparent),0 16px 34px rgba(15,23,42,.12);
  outline:none;
}
.camera-picker-card-image{
  width:100%;
  height:190px;
  min-height:190px;
  padding:18px;
  background:#fff!important;
  border-bottom:1px solid var(--line);
  color-scheme:light;
}
.camera-picker-card-image img{
  width:100%;
  height:100%;
  object-fit:contain;
}
.camera-picker-image-placeholder{
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  color:#94a3b8;
  font-size:58px;
}
.camera-picker-card-body{
  width:100%;
  min-width:0;
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  gap:11px;
  padding:15px;
}
.camera-picker-card-body .product-card-name{
  min-height:40px;
}
.camera-picker-card-body .product-card-description{
  min-height:57px!important;
  margin:0;
}
.camera-picker-spec-line{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  color:var(--muted);
  font-size:11px;
  font-weight:700;
  line-height:1.45;
}
.camera-picker-card-footer{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:10px;
}
.camera-picker-insert-hint{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  padding:7px 10px;
  border:1px solid color-mix(in srgb,var(--blue) 32%,var(--line));
  border-radius:10px;
  background:var(--blue2);
  color:var(--blue);
  font-size:10px;
  font-weight:850;
  line-height:1.15;
  text-align:center;
}
.camera-picker-product-card:hover .camera-picker-insert-hint,
.camera-picker-product-card:focus-visible .camera-picker-insert-hint{
  color:#fff;
  background:var(--blue);
  border-color:var(--blue);
}
@media(max-width:760px){
  .camera-picker-card-image{height:220px;min-height:220px}
  .camera-picker-card-footer{align-items:center}
}
