{"id":90636,"date":"2026-07-22T13:02:17","date_gmt":"2026-07-22T11:02:17","guid":{"rendered":"https:\/\/shop.dronebase.it\/?page_id=90636"},"modified":"2026-07-22T13:02:19","modified_gmt":"2026-07-22T11:02:19","slug":"noleggio-breve-termine-2","status":"publish","type":"page","link":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/","title":{"rendered":"Noleggio breve termine"},"content":{"rendered":"<!DOCTYPE html>\n<html lang=\"it\">\n<head>\n<meta charset=\"UTF-8\"\/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n<title>Calcolatore Noleggio &#038; Contratto \u2014 DroneBase<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\/>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,700&#038;family=Barlow+Condensed:wght@400;600;700;800&#038;family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&#038;display=swap\" rel=\"stylesheet\"\/>\n<style>\n\/* \u2500\u2500 RESET & VARS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n:root {\n  --red:#e84040; --red-bg:#fff5f5; --red-border:rgba(232,64,64,.2);\n  --bg:#f4f4f2; --bg-white:#fff; --bg-off:#f9f9f7; --bg-input:#f7f7f5;\n  --border:#e3e3df; --border2:#d4d4ce;\n  --text:#1a1a18; --text-muted:#6b6b65; --text-dim:#a8a8a2;\n  --amber:#a16207; --amber-bg:#fffbeb; --amber-border:#fde68a;\n  --blue:#1d4ed8; --blue-bg:#eff6ff; --blue-border:#bfdbfe;\n  --green:#15803d; --green-bg:#f0fdf4; --green-border:#bbf7d0;\n  --radius:6px; --radius-lg:10px; --max:1100px;\n  --shadow:0 1px 4px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);\n}\nhtml { font-size:16px; scroll-behavior:smooth; }\nbody { font-family:'Barlow',sans-serif; background:var(--bg); color:var(--text); min-height:100vh; }\n\n\/* \u2500\u2500 HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nheader { background:var(--bg-white); border-bottom:1px solid var(--border); padding:0 40px; height:64px; display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:100; box-shadow:var(--shadow); }\n.logo-wrap { display:flex; align-items:center; gap:11px; text-decoration:none; }\n.logo-mark { width:34px; height:34px; background:var(--red); border-radius:5px; display:flex; align-items:center; justify-content:center; }\n.logo-mark svg { width:20px; height:20px; fill:#fff; }\n.logo-name { font-family:'Barlow Condensed',sans-serif; font-size:20px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text); }\n.logo-tag { font-size:10px; color:var(--text-dim); letter-spacing:.07em; text-transform:uppercase; }\n.hdr-right { display:flex; align-items:center; gap:18px; }\n.hdr-tel { font-size:13px; color:var(--text-muted); text-decoration:none; }\n.hdr-tel:hover { color:var(--red); }\n.hdr-badge { font-size:10px; letter-spacing:.06em; text-transform:uppercase; font-weight:600; color:var(--red); border:1px solid var(--red-border); padding:3px 9px; border-radius:3px; background:var(--red-bg); }\n\n\/* \u2500\u2500 HERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.hero { background:var(--bg-white); border-bottom:1px solid var(--border); padding:48px 40px 40px; text-align:center; }\n.hero-kicker { display:inline-flex; align-items:center; gap:8px; font-size:11px; letter-spacing:.1em; text-transform:uppercase; font-weight:600; color:var(--red); margin-bottom:16px; }\n.hero-kicker::before,.hero-kicker::after { content:''; display:block; width:22px; height:1.5px; background:var(--red); opacity:.5; }\n.hero h1 { font-family:'Barlow Condensed',sans-serif; font-size:clamp(28px,4.5vw,50px); font-weight:800; text-transform:uppercase; line-height:1.05; color:var(--text); margin-bottom:12px; }\n.hero h1 em { font-style:italic; color:var(--red); }\n.hero-desc { font-size:15px; color:var(--text-muted); line-height:1.7; max-width:520px; margin:0 auto; font-weight:300; }\n\n\/* \u2500\u2500 TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.tabs-wrap { background:var(--bg-white); border-bottom:1px solid var(--border); position:sticky; top:64px; z-index:90; }\n.tabs { max-width:var(--max); margin:0 auto; padding:0 40px; display:flex; }\n.tab-btn { padding:13px 20px; background:none; border:none; border-bottom:3px solid transparent; cursor:pointer; font-family:'Barlow Condensed',sans-serif; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--text-dim); transition:all .15s; }\n.tab-btn.active { color:var(--red); border-bottom-color:var(--red); }\n.tab-btn:hover:not(.active) { color:var(--text); }\n.tab-num { display:inline-flex; align-items:center; justify-content:center; width:17px; height:17px; border-radius:50%; background:var(--bg-off); border:1px solid var(--border2); font-size:10px; font-family:'Barlow',sans-serif; font-weight:700; margin-right:6px; color:var(--text-dim); }\n.tab-btn.active .tab-num { background:var(--red); border-color:var(--red); color:#fff; }\n\n\/* \u2500\u2500 SECTION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.section { padding:40px; border-bottom:1px solid var(--border); }\n.section.alt { background:var(--bg-white); }\n.section-inner { max-width:var(--max); margin:0 auto; }\n.section-label { display:flex; align-items:center; gap:9px; font-size:11px; letter-spacing:.1em; text-transform:uppercase; font-weight:600; color:var(--red); margin-bottom:5px; }\n.section-label::before { content:''; width:16px; height:2px; background:var(--red); }\n.section-title { font-family:'Barlow Condensed',sans-serif; font-size:clamp(20px,2.5vw,26px); font-weight:700; text-transform:uppercase; color:var(--text); margin-bottom:20px; }\n.section-title em { font-style:italic; color:var(--red); }\n\n\/* \u2500\u2500 CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.card { background:var(--bg-white); border:1px solid var(--border); border-radius:var(--radius-lg); padding:22px 26px; margin-bottom:14px; box-shadow:var(--shadow); }\n.card-hdr { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }\n.card-lbl { font-size:10px; letter-spacing:.09em; text-transform:uppercase; font-weight:600; color:var(--text-dim); display:flex; align-items:center; gap:8px; }\n.card-lbl::before { content:''; width:3px; height:12px; background:var(--red); border-radius:2px; }\n\n\/* \u2500\u2500 INPUTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.g2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; }\n.g3 { display:grid; grid-template-columns:2fr 1fr 1fr; gap:14px; }\n.g4 { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:14px; }\n.field { display:flex; flex-direction:column; gap:5px; }\n.field label { font-size:11px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.07em; font-weight:600; }\n.field input,.field select,.field textarea { padding:0 12px; font-size:14px; font-family:'Barlow',sans-serif; font-weight:500; background:var(--bg-input); border:1px solid var(--border2); border-radius:var(--radius); color:var(--text); transition:border-color .15s; -moz-appearance:textfield; }\n.field input,.field select { height:42px; }\n.field textarea { padding:10px 12px; resize:vertical; min-height:56px; }\n.field input::-webkit-outer-spin-button,.field input::-webkit-inner-spin-button { -webkit-appearance:none; }\n.field input:focus,.field select:focus,.field textarea:focus { outline:none; border-color:var(--red); box-shadow:0 0 0 3px rgba(232,64,64,.1); background:#fff; }\n.pfx { position:relative; }\n.pfx>span { position:absolute; left:12px; top:50%; transform:translateY(-50%); font-size:14px; color:var(--text-dim); pointer-events:none; }\n.pfx input { padding-left:24px; }\n.sfx { position:relative; }\n.sfx>span { position:absolute; right:10px; top:50%; transform:translateY(-50%); font-size:11px; color:var(--text-dim); pointer-events:none; }\n.sfx input { padding-right:26px; }\n\n\/* \u2500\u2500 ARTICOLO ROWS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.art-rows { display:flex; flex-direction:column; gap:10px; margin-bottom:14px; }\n.art-row { display:grid; grid-template-columns:2fr 1.2fr 0.7fr 1fr 34px; gap:10px; align-items:end; background:var(--bg-off); border:1px solid var(--border); border-radius:var(--radius); padding:12px 14px; }\n.art-computed { grid-column:1\/-1; display:flex; gap:18px; flex-wrap:wrap; font-size:12px; color:var(--text-muted); padding-top:6px; border-top:1px solid var(--border); margin-top:4px; }\n.art-computed strong { color:var(--text); font-weight:600; }\n.art-computed .vl { color:var(--red); }\n.btn-rm { width:32px; height:32px; background:none; border:1px solid var(--border2); border-radius:var(--radius); cursor:pointer; color:var(--text-dim); font-size:18px; display:flex; align-items:center; justify-content:center; align-self:end; transition:all .15s; }\n.btn-rm:hover { background:var(--red-bg); border-color:var(--red-border); color:var(--red); }\n.btn-add { display:inline-flex; align-items:center; gap:8px; padding:9px 16px; background:none; border:1px dashed var(--border2); border-radius:var(--radius); cursor:pointer; font-size:13px; font-family:'Barlow',sans-serif; font-weight:600; color:var(--text-muted); transition:all .15s; }\n.btn-add:hover { border-color:var(--red); color:var(--red); background:var(--red-bg); }\n\n\/* \u2500\u2500 TOGGLE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.tbtn { background:none; border:none; cursor:pointer; font-size:11px; letter-spacing:.07em; text-transform:uppercase; font-weight:600; color:var(--text-dim); font-family:'Barlow',sans-serif; display:flex; align-items:center; gap:6px; transition:color .15s; }\n.tbtn:hover { color:var(--red); }\n.params-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:16px; }\n.params-sep { font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-dim); font-weight:600; margin:14px 0 10px; padding-bottom:8px; border-bottom:1px solid var(--border); }\n\n\/* \u2500\u2500 PERIODO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ptabs { display:flex; gap:8px; margin-bottom:18px; flex-wrap:wrap; }\n.ptab { padding:8px 16px; background:var(--bg-off); border:1px solid var(--border2); border-radius:var(--radius); cursor:pointer; font-family:'Barlow Condensed',sans-serif; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--text-dim); transition:all .15s; }\n.ptab.active { background:var(--red-bg); border-color:var(--red-border); color:var(--red); }\n\n\/* \u2500\u2500 GARANZIA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.gsw { display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--border2); border-radius:var(--radius); overflow:hidden; margin-bottom:18px; }\n.gsw-btn { padding:12px 14px; background:var(--bg-off); border:none; cursor:pointer; font-family:'Barlow Condensed',sans-serif; font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--text-dim); transition:all .18s; text-align:center; line-height:1.4; }\n.gsw-btn:first-child { border-right:1px solid var(--border2); }\n.gsw-btn small { display:block; font-size:10px; font-weight:400; opacity:.8; text-transform:none; letter-spacing:.02em; margin-top:2px; font-family:'Barlow',sans-serif; }\n.gsw-btn.ak { background:var(--amber-bg); color:var(--amber); }\n.gsw-btn.ad { background:var(--blue-bg); color:var(--blue); }\n.gnote { font-size:13px; color:var(--text-muted); line-height:1.75; border-left:3px solid var(--border2); padding:10px 14px; margin-bottom:14px; border-radius:0 var(--radius) var(--radius) 0; background:var(--bg-off); }\n.gnote strong { color:var(--text); font-weight:600; }\n.gnote.amber { border-left-color:#f59e0b; background:var(--amber-bg); }\n.gnote.blue { border-left-color:#3b82f6; background:var(--blue-bg); }\n.kt { width:100%; border-collapse:collapse; }\n.kt tr { border-bottom:1px solid var(--border); }\n.kt tr:last-child { border-bottom:none; }\n.kt td { padding:9px 6px; font-size:13px; vertical-align:middle; }\n.kt td:first-child { color:var(--text-dim); font-size:11px; letter-spacing:.07em; text-transform:uppercase; font-weight:600; width:110px; }\n.cv { font-size:13px; font-weight:600; }\n\n\/* \u2500\u2500 RESULTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.results-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:14px; }\n.rc { background:var(--bg-white); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 16px; position:relative; overflow:hidden; box-shadow:var(--shadow); }\n.rc::before { content:''; position:absolute; top:0; left:0; right:0; height:3px; background:transparent; }\n.rc.best { border-color:var(--green-border); }\n.rc.best::before { background:var(--green); }\n.rc.sel { border-color:var(--red-border); box-shadow:0 0 0 2px rgba(232,64,64,.1); }\n.rc.sel::before { background:var(--red); }\n.rc-period { font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:600; color:var(--text-dim); display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }\n.tag { font-size:9px; font-weight:700; padding:2px 7px; border-radius:3px; }\n.tag-green { background:var(--green-bg); color:var(--green); border:1px solid var(--green-border); }\n.tag-red { background:var(--red-bg); color:var(--red); border:1px solid var(--red-border); }\n.rc-base { font-family:'Barlow Condensed',sans-serif; font-size:26px; font-weight:800; color:var(--text); letter-spacing:-.01em; line-height:1; margin-bottom:3px; }\n.rc-disc { font-size:11px; color:var(--green); font-weight:700; min-height:14px; margin-bottom:10px; }\n.rc-div { border:none; border-top:1px solid var(--border); margin:10px 0; }\n.rc-glabel { font-size:10px; color:var(--text-dim); text-transform:uppercase; letter-spacing:.07em; font-weight:600; margin-bottom:2px; }\n.rc-gval-a { font-size:14px; font-weight:700; color:var(--amber); }\n.rc-gval-b { font-size:14px; font-weight:700; color:var(--blue); }\n.rc-tlabel { font-size:10px; color:var(--text-dim); text-transform:uppercase; letter-spacing:.07em; font-weight:600; margin:10px 0 2px; }\n.rc-total { font-family:'Barlow Condensed',sans-serif; font-size:18px; font-weight:700; color:var(--text); }\n.chips { display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }\n.chip { display:flex; align-items:center; gap:7px; font-size:12px; color:var(--text-muted); background:var(--bg-white); border:1px solid var(--border); padding:5px 12px; border-radius:4px; box-shadow:var(--shadow); }\n.chip strong { color:var(--text); font-weight:600; }\n.rbox { background:var(--bg-white); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; margin-top:18px; box-shadow:var(--shadow); }\n.rbox-row { display:flex; justify-content:space-between; align-items:center; padding:11px 18px; border-bottom:1px solid var(--border); font-size:14px; }\n.rbox-row:last-child { border-bottom:none; }\n.rbox-row.tot { background:var(--red-bg); font-weight:700; }\n.rbox-row.tot .rval { color:var(--red); font-family:'Barlow Condensed',sans-serif; font-size:20px; font-weight:800; }\n.rlbl { color:var(--text-muted); }\n.rval { font-weight:600; color:var(--text); }\n\n\/* \u2500\u2500 BUTTONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.btn-primary { display:inline-flex; align-items:center; gap:8px; padding:11px 22px; background:var(--red); color:#fff; font-family:'Barlow Condensed',sans-serif; font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; border-radius:var(--radius); border:none; cursor:pointer; transition:opacity .15s; }\n.btn-primary:hover { opacity:.88; }\n.btn-secondary { display:inline-flex; align-items:center; gap:8px; padding:10px 20px; background:none; color:var(--text); font-family:'Barlow Condensed',sans-serif; font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; border-radius:var(--radius); border:1px solid var(--border2); cursor:pointer; transition:all .15s; }\n.btn-secondary:hover { border-color:var(--text); background:var(--bg-off); }\n.btn-outline-red { display:inline-flex; align-items:center; gap:8px; padding:10px 20px; background:none; color:var(--red); font-family:'Barlow Condensed',sans-serif; font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; border-radius:var(--radius); border:1px solid var(--red-border); cursor:pointer; transition:all .15s; }\n.btn-outline-red:hover { background:var(--red-bg); }\n\n\/* \u2500\u2500 CONTRACT PREVIEW \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#contract-section { display:none; }\n.contract-toolbar { background:var(--bg-white); border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px 22px; margin-bottom:20px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:14px; box-shadow:var(--shadow); }\n.contract-toolbar-left .t { font-family:'Barlow Condensed',sans-serif; font-size:17px; font-weight:700; text-transform:uppercase; color:var(--text); }\n.contract-toolbar-left .s { font-size:13px; color:var(--text-muted); margin-top:2px; font-weight:300; }\n.contract-actions { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }\n\n\/* CONTRACT DOCUMENT STYLES *\/\n.contract-doc {\n  background:#fff;\n  border:1px solid var(--border);\n  border-radius:var(--radius-lg);\n  padding:60px 72px;\n  box-shadow:0 4px 24px rgba(0,0,0,.08);\n  font-family:'Libre Baskerville',Georgia,serif;\n  font-size:11pt;\n  line-height:1.7;\n  color:#1a1a18;\n  max-width:860px;\n  margin:0 auto;\n  position:relative;\n}\n.contract-doc * { font-family:'Libre Baskerville',Georgia,serif; }\n.doc-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:32px; padding-bottom:20px; border-bottom:2px solid #e84040; }\n.doc-logo-name { font-family:'Barlow Condensed',sans-serif; font-size:22px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:#e84040; }\n.doc-logo-sub { font-size:10pt; color:#888; margin-top:2px; font-family:'Barlow',sans-serif; font-weight:400; }\n.doc-meta { text-align:right; font-size:9.5pt; color:#555; font-family:'Barlow',sans-serif; line-height:1.6; }\n.doc-title { font-family:'Barlow Condensed',sans-serif; font-size:26pt; font-weight:800; text-transform:uppercase; letter-spacing:.02em; color:#1a1a18; margin-bottom:4px; }\n.doc-subtitle { font-size:10.5pt; color:#888; font-family:'Barlow',sans-serif; font-weight:400; margin-bottom:32px; }\n.doc-h1 { font-family:'Barlow Condensed',sans-serif; font-size:13pt; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#e84040; margin:28px 0 10px; padding-bottom:6px; border-bottom:1.5px solid #e84040; }\n.doc-h2 { font-family:'Barlow',sans-serif; font-size:10.5pt; font-weight:700; color:#1a1a18; margin:16px 0 6px; }\n.doc-p { margin-bottom:8px; font-size:10.5pt; }\n.doc-p-small { font-size:9.5pt; color:#555; margin-bottom:6px; }\n.doc-ul { margin:6px 0 10px 18px; }\n.doc-ul li { margin-bottom:4px; font-size:10.5pt; }\n\n\/* CONTRACT TABLE *\/\n.doc-table { width:100%; border-collapse:collapse; margin:12px 0; font-size:9pt; }\n.doc-table th { background:#f4f4f2; border:1px solid #e3e3df; padding:6px 8px; text-align:left; font-family:'Barlow',sans-serif; font-weight:700; font-size:8.5pt; text-transform:uppercase; letter-spacing:.04em; color:#555; }\n.doc-table td { border:1px solid #e3e3df; padding:6px 8px; vertical-align:top; }\n.doc-table tr:last-child td { background:#fff5f5; font-weight:700; }\n.doc-table .num { text-align:right; font-family:'Barlow',monospace; white-space:nowrap; }\n.doc-table .qty { text-align:center; font-family:'Barlow',monospace; }\n\n\/* ECONOMIC TABLE *\/\n.eco-table { width:100%; border-collapse:collapse; margin:12px 0; font-size:10.5pt; }\n.eco-table td { padding:8px 12px; border-bottom:1px solid #e3e3df; }\n.eco-table tr:last-child td { border-bottom:none; background:#fff5f5; font-weight:700; }\n.eco-table .eco-val { text-align:right; font-family:'Barlow',monospace; font-weight:600; }\n.eco-table .eco-tot { color:#e84040; font-family:'Barlow Condensed',sans-serif; font-size:14pt; font-weight:800; }\n.eco-table .eco-lbl-tot { font-family:'Barlow',sans-serif; font-weight:700; }\n\n\/* ARTICLE *\/\n.doc-art { margin-bottom:14px; }\n.doc-art-num { font-family:'Barlow',sans-serif; font-size:9pt; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:#e84040; margin-bottom:3px; }\n.doc-art-title { font-family:'Barlow',sans-serif; font-size:10.5pt; font-weight:700; color:#1a1a18; margin-bottom:4px; }\n.doc-art-body { font-size:10pt; color:#333; line-height:1.7; }\n.doc-art-body ul { margin:6px 0 6px 16px; }\n.doc-art-body li { margin-bottom:3px; }\n.doc-art-body strong { color:#1a1a18; font-weight:700; }\n.doc-highlight { background:#eff6ff; border-left:3px solid #3b82f6; padding:8px 12px; margin:8px 0; font-size:9.5pt; color:#1d4ed8; border-radius:0 4px 4px 0; }\n.doc-highlight.amber { background:#fffbeb; border-left-color:#f59e0b; color:#a16207; }\n\n\/* SIGN SECTION *\/\n.doc-sign-grid { display:grid; grid-template-columns:1fr 1fr; gap:40px; margin-top:20px; }\n.doc-sign-block { display:flex; flex-direction:column; gap:4px; }\n.doc-sign-label { font-family:'Barlow',sans-serif; font-size:9pt; color:#888; font-weight:400; }\n.doc-sign-name { font-family:'Barlow',sans-serif; font-size:10.5pt; font-weight:600; color:#1a1a18; margin-bottom:32px; }\n.doc-sign-line { border-top:1.5px solid #888; padding-top:5px; font-family:'Barlow',sans-serif; font-size:9pt; color:#888; }\n.doc-accept-box { background:#f9f9f7; border:1px solid #e3e3df; border-radius:6px; padding:14px 18px; margin-top:20px; font-size:9.5pt; color:#555; line-height:1.65; }\n.doc-accept-box strong { color:#1a1a18; font-family:'Barlow',sans-serif; font-weight:700; }\n.doc-footer-note { margin-top:32px; padding-top:16px; border-top:1px solid #e3e3df; font-size:8.5pt; color:#aaa; text-align:center; font-family:'Barlow',sans-serif; line-height:1.6; }\n\n\/* PRINT STYLES *\/\n@media print {\n  header,.tabs-wrap,.section:not(#print-section),.cta-band,footer,.contract-toolbar { display:none !important; }\n  #contract-section { display:block !important; }\n  body { background:#fff; }\n  .contract-doc { box-shadow:none; border:none; padding:0; }\n  .section { border:none; padding:0; }\n  .section.alt { background:#fff; }\n  #print-section { border:none; }\n}\n\n\/* \u2500\u2500 CTA BAND & FOOTER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.cta-band { background:var(--red); padding:30px 40px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; }\n.cta-t { font-family:'Barlow Condensed',sans-serif; font-size:20px; font-weight:800; text-transform:uppercase; color:#fff; }\n.cta-s { font-size:13px; color:rgba(255,255,255,.75); margin-top:3px; font-weight:300; }\n.btn-w { display:inline-flex; align-items:center; padding:10px 20px; background:#fff; color:var(--red); font-family:'Barlow Condensed',sans-serif; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; border-radius:var(--radius); text-decoration:none; }\n.btn-ow { display:inline-flex; align-items:center; padding:9px 20px; background:none; color:#fff; border:1px solid rgba(255,255,255,.5); font-family:'Barlow Condensed',sans-serif; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; border-radius:var(--radius); text-decoration:none; }\nfooter { background:var(--bg-white); border-top:1px solid var(--border); padding:22px 40px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }\nfooter p { font-size:12px; color:var(--text-dim); }\nfooter a { color:var(--red); text-decoration:none; }\n.fbadges { display:flex; gap:8px; flex-wrap:wrap; }\n.fbadge { font-size:10px; letter-spacing:.06em; text-transform:uppercase; font-weight:600; color:var(--text-dim); border:1px solid var(--border2); padding:3px 9px; border-radius:3px; background:var(--bg-off); }\n\n\/* \u2500\u2500 TOAST \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(80px); background:var(--text); color:#fff; padding:11px 22px; border-radius:var(--radius); font-size:14px; font-weight:500; z-index:9999; transition:transform .3s ease; pointer-events:none; white-space:nowrap; }\n.toast.show { transform:translateX(-50%) translateY(0); }\n.toast.ok { background:var(--green); }\n\n@media (max-width:680px) {\n  header { padding:0 20px; }\n  .hero,.section,.cta-band,footer { padding-left:20px; padding-right:20px; }\n  .tabs { padding:0 20px; }\n  .g2,.g3,.g4,.params-grid { grid-template-columns:1fr; }\n  .results-grid { grid-template-columns:1fr; }\n  .gsw { grid-template-columns:1fr; }\n  .art-row { grid-template-columns:1fr; }\n  .art-row .btn-rm { justify-self:end; }\n  .contract-doc { padding:30px 22px; }\n  .doc-header { flex-direction:column; gap:12px; }\n  .doc-sign-grid { grid-template-columns:1fr; }\n  .doc-table { font-size:8pt; }\n}\n<\/style>\n<\/head>\n<body>\n\n<header>\n  <a href=\"https:\/\/shop.dronebase.it\" class=\"logo-wrap\">\n    <div class=\"logo-mark\"><svg viewBox=\"0 0 20 20\"><path d=\"M10 2L2 7v6l8 5 8-5V7L10 2zm0 2.3l5.8 3.6-5.8 3.6L4.2 7.9 10 4.3zM3.5 9.3l6 3.7v4.6L3.5 14V9.3zm7.5 8.3v-4.6l6-3.7V14l-6 3.6z\"\/><\/svg><\/div>\n    <div><div class=\"logo-name\">DroneBase<\/div><div class=\"logo-tag\">DJI Gold 5 \u00b7 ISO 9001:2015<\/div><\/div>\n  <\/a>\n  <div class=\"hdr-right\">\n    <a href=\"tel:+390541179041\" class=\"hdr-tel\">+39 0541 179 0411<\/a>\n    <span class=\"hdr-badge\">Noleggio<\/span>\n  <\/div>\n<\/header>\n\n<div class=\"hero\">\n  <div class=\"hero-kicker\">Strumento Commerciale<\/div>\n  <h1>Calcolatore <em>Noleggio<\/em> &#038; Contratto<\/h1>\n  <p class=\"hero-desc\">Inserisci i dati, calcola le tariffe e visualizza il contratto completo pronto da copiare, stampare o inviare.<\/p>\n  <div style=\"display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:6px 14px;background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--amber);\">\n    <svg width=\"13\" height=\"13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\n    Tutti gli importi sono IVA esclusa (22%)\n  <\/div>\n<\/div>\n\n<div class=\"tabs-wrap\">\n  <div class=\"tabs\">\n    <button class=\"tab-btn active\" onclick=\"goTab(0)\"><span class=\"tab-num\" id=\"tn0\">1<\/span>Cliente &#038; Articoli<\/button>\n    <button class=\"tab-btn\" onclick=\"goTab(1)\"><span class=\"tab-num\" id=\"tn1\">2<\/span>Periodo &#038; Garanzia<\/button>\n    <button class=\"tab-btn\" onclick=\"goTab(2)\"><span class=\"tab-num\" id=\"tn2\">3<\/span>Riepilogo &#038; Contratto<\/button>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550 TAB 0 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"tab0\">\n  <div class=\"section alt\">\n    <div class=\"section-inner\">\n      <div class=\"section-label\">Passo 1<\/div>\n      <div class=\"section-title\">Dati <em>Cliente<\/em><\/div>\n      <div class=\"card\">\n        <div class=\"card-hdr\"><div class=\"card-lbl\">Contratto<\/div><\/div>\n        <div class=\"g4\">\n          <div class=\"field\"><label>N. Contratto<\/label><input type=\"text\" id=\"num_contratto\" value=\"NL-2025-001\" oninput=\"onAnyChange()\"\/><\/div>\n          <div class=\"field\"><label>Data emissione<\/label><input type=\"date\" id=\"data_emissione\" oninput=\"onAnyChange()\"\/><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"card\">\n        <div class=\"card-hdr\"><div class=\"card-lbl\">Anagrafica<\/div><\/div>\n        <div class=\"g2\" style=\"margin-bottom:14px;\">\n          <div class=\"field\"><label>Ragione sociale<\/label><input type=\"text\" id=\"ragione_sociale\" placeholder=\"Acme S.r.l.\" oninput=\"onAnyChange()\"\/><\/div>\n          <div class=\"field\"><label>P.IVA \/ C.F.<\/label><input type=\"text\" id=\"piva\" placeholder=\"IT12345678901\" oninput=\"onAnyChange()\"\/><\/div>\n        <\/div>\n        <div class=\"g2\" style=\"margin-bottom:14px;\">\n          <div class=\"field\"><label>Sede legale<\/label><input type=\"text\" id=\"indirizzo\" placeholder=\"Via Roma 1, 20100 Milano\" oninput=\"onAnyChange()\"\/><\/div>\n          <div class=\"field\"><label>Referente<\/label><input type=\"text\" id=\"referente\" placeholder=\"Mario Rossi\" oninput=\"onAnyChange()\"\/><\/div>\n        <\/div>\n        <div class=\"g2\">\n          <div class=\"field\"><label>Email<\/label><input type=\"email\" id=\"email\" placeholder=\"mario@acme.it\" oninput=\"onAnyChange()\"\/><\/div>\n          <div class=\"field\"><label>Telefono<\/label><input type=\"tel\" id=\"telefono\" placeholder=\"+39 02 1234567\" oninput=\"onAnyChange()\"\/><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"section\">\n    <div class=\"section-inner\">\n      <div class=\"section-label\">Passo 1<\/div>\n      <div class=\"section-title\">Articoli da <em>Noleggiare<\/em><\/div>\n      <div class=\"card\">\n        <div class=\"card-hdr\">\n          <div class=\"card-lbl\">Lista articoli<\/div>\n          <button class=\"tbtn\" onclick=\"toggleParams()\"><span id=\"arrow\">\u25b6<\/span>&nbsp;Parametri tariffari<\/button>\n        <\/div>\n        <div id=\"params-box\" style=\"display:none;margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid var(--border);\">\n          <p class=\"params-sep\">Moltiplicatori base \u2014 % del valore di acquisto<\/p>\n          <div class=\"params-grid\">\n            <div class=\"field\"><label>Giornaliero<\/label><div class=\"sfx\"><input type=\"number\" id=\"m_day\" value=\"2.5\" step=\"0.1\" min=\"0.1\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n            <div class=\"field\"><label>Settimanale<\/label><div class=\"sfx\"><input type=\"number\" id=\"m_week\" value=\"6.5\" step=\"0.1\" min=\"0.1\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n            <div class=\"field\"><label>Mensile<\/label><div class=\"sfx\"><input type=\"number\" id=\"m_month\" value=\"15\" step=\"0.1\" min=\"0.1\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n          <\/div>\n          <p class=\"params-sep\">Sconti progressivi<\/p>\n          <div class=\"params-grid\">\n            <div class=\"field\"><label>Sconto settimana<\/label><div class=\"sfx\"><input type=\"number\" id=\"d_week\" value=\"8\" step=\"1\" min=\"0\" max=\"50\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n            <div class=\"field\"><label>Sconto mese<\/label><div class=\"sfx\"><input type=\"number\" id=\"d_month\" value=\"18\" step=\"1\" min=\"0\" max=\"50\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n          <\/div>\n          <p class=\"params-sep\">Kasko % del valore totale<\/p>\n          <div class=\"params-grid\">\n            <div class=\"field\"><label>Kasko\/gg<\/label><div class=\"sfx\"><input type=\"number\" id=\"k_day_p\" value=\"1.2\" step=\"0.1\" min=\"0\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n            <div class=\"field\"><label>Kasko\/sett<\/label><div class=\"sfx\"><input type=\"number\" id=\"k_week_p\" value=\"2.8\" step=\"0.1\" min=\"0\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n            <div class=\"field\"><label>Kasko\/mese<\/label><div class=\"sfx\"><input type=\"number\" id=\"k_month_p\" value=\"5.5\" step=\"0.1\" min=\"0\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><\/div>\n          <\/div>\n          <p class=\"params-sep\">Sconto commerciale sul canone<\/p>\n          <div class=\"params-grid\">\n            <div class=\"field\"><label>Sconto extra sul totale<\/label><div class=\"sfx\"><input type=\"number\" id=\"d_extra\" value=\"0\" step=\"1\" min=\"0\" max=\"100\" oninput=\"onAnyChange()\"\/><span>%<\/span><\/div><small style=\"font-size:11px;color:var(--text-dim);margin-top:4px;\">Applicato al canone (escluso kasko\/deposito)<\/small><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"art-rows\" id=\"art-rows\"><\/div>\n        <button class=\"btn-add\" onclick=\"addArticolo()\">+ Aggiungi articolo<\/button>\n      <\/div>\n      <div style=\"display:flex;justify-content:flex-end;margin-top:10px;\">\n        <button class=\"btn-primary\" onclick=\"goTab(1)\">Continua \u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550 TAB 1 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"tab1\" style=\"display:none;\">\n  <div class=\"section alt\">\n    <div class=\"section-inner\">\n      <div class=\"section-label\">Passo 2<\/div>\n      <div class=\"section-title\">Periodo di <em>Noleggio<\/em><\/div>\n      <div class=\"card\">\n        <div class=\"card-hdr\"><div class=\"card-lbl\">Selezione periodo<\/div><\/div>\n        <div class=\"ptabs\">\n          <button class=\"ptab\" id=\"pt-giornaliero\" onclick=\"setPeriodo('giornaliero')\">Giornaliero<\/button>\n          <button class=\"ptab active\" id=\"pt-settimanale\" onclick=\"setPeriodo('settimanale')\">Settimanale<\/button>\n          <button class=\"ptab\" id=\"pt-mensile\" onclick=\"setPeriodo('mensile')\">Mensile<\/button>\n          <button class=\"ptab\" id=\"pt-custom\" onclick=\"setPeriodo('custom')\">Date personalizzate<\/button>\n        <\/div>\n        <div id=\"pc-giornaliero\" style=\"display:none;\">\n          <div class=\"g4\">\n            <div class=\"field\"><label>Numero di giorni<\/label><input type=\"number\" id=\"n_giorni\" value=\"1\" min=\"1\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data inizio<\/label><input type=\"date\" id=\"pi_day\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data fine<\/label><input type=\"date\" id=\"pf_day\" readonly style=\"background:var(--bg-off);color:var(--text-muted);\"\/><\/div>\n          <\/div>\n        <\/div>\n        <div id=\"pc-settimanale\">\n          <div class=\"g4\">\n            <div class=\"field\"><label>Numero di settimane<\/label><input type=\"number\" id=\"n_sett\" value=\"1\" min=\"1\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data inizio<\/label><input type=\"date\" id=\"pi_week\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data fine<\/label><input type=\"date\" id=\"pf_week\" readonly style=\"background:var(--bg-off);color:var(--text-muted);\"\/><\/div>\n          <\/div>\n        <\/div>\n        <div id=\"pc-mensile\" style=\"display:none;\">\n          <div class=\"g4\">\n            <div class=\"field\"><label>Numero di mesi<\/label><input type=\"number\" id=\"n_mesi\" value=\"1\" min=\"1\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data inizio<\/label><input type=\"date\" id=\"pi_month\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data fine<\/label><input type=\"date\" id=\"pf_month\" readonly style=\"background:var(--bg-off);color:var(--text-muted);\"\/><\/div>\n          <\/div>\n        <\/div>\n        <div id=\"pc-custom\" style=\"display:none;\">\n          <div class=\"g2\" style=\"max-width:400px;\">\n            <div class=\"field\"><label>Data inizio<\/label><input type=\"date\" id=\"pi_custom\" oninput=\"calcPeriodo()\"\/><\/div>\n            <div class=\"field\"><label>Data fine<\/label><input type=\"date\" id=\"pf_custom\" oninput=\"calcPeriodo()\"\/><\/div>\n          <\/div>\n          <div id=\"custom-giorni\" style=\"margin-top:8px;font-size:13px;color:var(--text-muted);\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"section\">\n    <div class=\"section-inner\">\n      <div class=\"section-label\">Passo 2<\/div>\n      <div class=\"section-title\">Copertura e <em>Garanzia<\/em><\/div>\n      <div class=\"card\">\n        <div class=\"card-hdr\" style=\"margin-bottom:16px;\"><div class=\"card-lbl\">Seleziona opzione<\/div><\/div>\n        <div class=\"gsw\">\n          <button class=\"gsw-btn ak\" id=\"btn-kasko\" onclick=\"setGaranzia('kasko')\">POLIZZA KASKO ALL RISK<small>inclusa nel canone \u2014 default<\/small><\/button>\n          <button class=\"gsw-btn\" id=\"btn-deposito\" onclick=\"setGaranzia('deposito')\">DEPOSITO CAUZIONALE<small>90% del valore \u2014 rimborsabile<\/small><\/button>\n        <\/div>\n        <div id=\"panel-kasko\">\n          <p class=\"gnote amber\">La <strong>polizza Kasko All Risk<\/strong> \u00e8 inclusa di default nel canone. Copre danni accidentali, furto e smarrimento. Esclusi: dolo, colpa grave, utilizzi non conformi. Sinistri da comunicare entro <strong>24 ore<\/strong>.<\/p>\n          <table class=\"kt\">\n            <tr><td>Giornaliero<\/td><td><span class=\"cv\" id=\"k_day_val\" style=\"color:var(--amber);\">\u2014<\/span><\/td><td style=\"color:var(--text-muted);font-size:12px;\"><span id=\"k_day_pct\">1.2<\/span>% del valore<\/td><\/tr>\n            <tr><td>Settimanale<\/td><td><span class=\"cv\" id=\"k_week_val\" style=\"color:var(--amber);\">\u2014<\/span><\/td><td style=\"color:var(--text-muted);font-size:12px;\"><span id=\"k_week_pct\">2.8<\/span>% del valore<\/td><\/tr>\n            <tr><td>Mensile<\/td><td><span class=\"cv\" id=\"k_month_val\" style=\"color:var(--amber);\">\u2014<\/span><\/td><td style=\"color:var(--text-muted);font-size:12px;\"><span id=\"k_month_pct\">5.5<\/span>% del valore<\/td><\/tr>\n          <\/table>\n        <\/div>\n        <div id=\"panel-deposito\" style=\"display:none;\">\n          <p class=\"gnote blue\">Il Cliente versa un <strong>deposito cauzionale pari al 90% del valore totale dei beni<\/strong>. Rimborsato entro <strong>7 giorni lavorativi<\/strong> dalla verifica integrit\u00e0, deducendo canone, penali ritardo, estensioni e danni.<\/p>\n          <div style=\"display:flex;align-items:center;gap:20px;padding:8px 0;flex-wrap:wrap;\">\n            <div style=\"font-family:'Barlow Condensed',sans-serif;font-size:32px;font-weight:800;color:var(--blue);\" id=\"dep-display\">\u20ac \u2014<\/div>\n            <div style=\"font-size:13px;color:var(--text-muted);line-height:1.8;\">Deposito (90% di <strong id=\"dep-base\">\u20ac \u2014<\/strong>)<br\/>Rimborso entro <strong>7 gg lavorativi<\/strong><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div style=\"display:flex;justify-content:space-between;margin-top:10px;flex-wrap:wrap;gap:10px;\">\n        <button class=\"btn-secondary\" onclick=\"goTab(0)\">\u2190 Indietro<\/button>\n        <button class=\"btn-primary\" onclick=\"goTab(2)\">Continua \u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550 TAB 2 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"tab2\" style=\"display:none;\">\n  <div class=\"section alt\">\n    <div class=\"section-inner\">\n      <div class=\"section-label\">Passo 3<\/div>\n      <div class=\"section-title\">Tariffe <em>Calcolate<\/em><\/div>\n      <div style=\"display:inline-flex;align-items:center;gap:8px;margin-bottom:16px;padding:6px 12px;background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:4px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--amber);\">\n        <svg width=\"12\" height=\"12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\n        Tutti gli importi sono IVA esclusa (22%) \u2014 totale finale comprensivo di IVA\n      <\/div>\n      <div class=\"results-grid\" id=\"results-grid\"><\/div>\n      <div class=\"chips\" id=\"chips-row\"><\/div>\n      <div class=\"rbox\" id=\"rbox\"><\/div>\n      <div style=\"display:flex;justify-content:space-between;margin-top:16px;flex-wrap:wrap;gap:10px;\">\n        <button class=\"btn-secondary\" onclick=\"goTab(1)\">\u2190 Indietro<\/button>\n        <button class=\"btn-primary\" onclick=\"showContract()\">\n          <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z\"\/><polyline points=\"14,2 14,8 20,8\"\/><\/svg>\n          Genera contratto \u2192\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550 CONTRACT PREVIEW \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"contract-section\">\n  <div class=\"section\" id=\"print-section\" style=\"background:var(--bg);\">\n    <div class=\"section-inner\">\n\n      <div class=\"contract-toolbar\">\n        <div class=\"contract-toolbar-left\">\n          <div class=\"t\">Contratto generato<\/div>\n          <div class=\"s\">Visualizza, copia o stampa il documento. Aggiorna automaticamente a ogni modifica dei dati.<\/div>\n        <\/div>\n        <div class=\"contract-actions\">\n          <button class=\"btn-outline-red\" onclick=\"copyContract()\">\n            <svg width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n            Copia testo\n          <\/button>\n          <button class=\"btn-secondary\" onclick=\"window.print()\">\n            <svg width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><polyline points=\"6 9 6 2 18 2 18 9\"\/><path d=\"M6 18H4a2 2 0 01-2-2v-5a2 2 0 012-2h16a2 2 0 012 2v5a2 2 0 01-2 2h-2\"\/><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"\/><\/svg>\n            Stampa \/ PDF\n          <\/button>\n          <button class=\"btn-primary\" onclick=\"goTab(0);document.getElementById('contract-section').style.display='none';\">\n            \u2190 Modifica dati\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"contract-doc\" id=\"contract-doc\"><\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"cta-band\">\n  <div><div class=\"cta-t\">Hai bisogno di un preventivo DaaS?<\/div><div class=\"cta-s\">Lun\u2013Ven 9:00\u201318:00 \u00b7 +39 0541 179 0411 \u00b7 info@dronebase.it<\/div><\/div>\n  <div style=\"display:flex;gap:10px;flex-wrap:wrap;\">\n    <a href=\"https:\/\/shop.dronebase.it\/noleggio\/\" class=\"btn-w\">Noleggio DroneBase<\/a>\n    <a href=\"https:\/\/shop.dronebase.it\/contatti\/\" class=\"btn-ow\">Contattaci<\/a>\n  <\/div>\n<\/div>\n<footer>\n  <p>\u00a9 <span id=\"yr\"><\/span> <a href=\"https:\/\/shop.dronebase.it\">DroneBase S.R.L.<\/a> \u2014 Via San Giovenale 86, 47922 Rimini \u00b7 Tariffe indicative.<\/p>\n  <div class=\"fbadges\"><span class=\"fbadge\">DJI Gold 5<\/span><span class=\"fbadge\">ISO 9001:2015<\/span><span class=\"fbadge\">ENAC \/ EASA<\/span><\/div>\n<\/footer>\n<div class=\"toast\" id=\"toast\"><\/div>\n\n<script>\n\/\/ \u2500\u2500 STATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst CATS = ['Drone completo','Payload \/ Sensori','Kit \/ Accessori','Attrezzatura terrestre','Software \/ Licenza'];\ndocument.getElementById('yr').textContent = new Date().getFullYear();\nlet articoli = [], periodoTipo = 'settimanale', garanziaMode = 'kasko', artCounter = 0;\n\n\/\/ \u2500\u2500 TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction goTab(n) {\n  [0,1,2].forEach(i => {\n    document.getElementById('tab'+i).style.display = i===n ? 'block' : 'none';\n    document.querySelectorAll('.tab-btn')[i].classList.toggle('active', i===n);\n  });\n  document.getElementById('contract-section').style.display = 'none';\n  if (n===2) renderResultati();\n  window.scrollTo({ top: 64, behavior: 'smooth' });\n}\n\n\/\/ \u2500\u2500 HELPERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction eur(n) { return '\u20ac\\u202f' + Number(n).toLocaleString('it-IT',{minimumFractionDigits:2,maximumFractionDigits:2}); }\nfunction gp(id) { return parseFloat(document.getElementById(id).value)||0; }\nfunction getMDay()   { return gp('m_day')\/100; }\nfunction getMWeek()  { return gp('m_week')\/100; }\nfunction getMMonth() { return gp('m_month')\/100; }\nfunction getDWeek()  { return gp('d_week')\/100; }\nfunction getDMonth() { return gp('d_month')\/100; }\nfunction getKDay()   { return gp('k_day_p')\/100; }\nfunction getKWeek()  { return gp('k_week_p')\/100; }\nfunction getKMonth() { return gp('k_month_p')\/100; }\nfunction getDExtra() { return gp('d_extra')\/100; }\n\/\/ valore di riga = valore unitario \u00d7 quantit\u00e0\nfunction valLinea(a) { return (a.valore||0) * (a.quantita||1); }\nfunction totVal()    { return articoli.reduce((s,a)=>s+valLinea(a),0); }\n\nfunction addDays(s,n) { if(!s)return''; const d=new Date(s); d.setDate(d.getDate()+n); return d.toISOString().split('T')[0]; }\nfunction addMonths(s,n) { if(!s)return''; const d=new Date(s); d.setMonth(d.getMonth()+n); return d.toISOString().split('T')[0]; }\nfunction fmtDate(s) { if(!s)return'\u2014'; const [y,m,d]=s.split('-'); return `${d}\/${m}\/${y}`; }\n\nfunction toggleParams() {\n  const b=document.getElementById('params-box'),a=document.getElementById('arrow');\n  const o=b.style.display==='none'; b.style.display=o?'block':'none'; a.textContent=o?'\u25bc':'\u25b6';\n}\nfunction onAnyChange() { \/* triggers nothing by itself; contract re-renders on showContract *\/ }\n\n\/\/ \u2500\u2500 ARTICOLI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction addArticolo() {\n  const id = artCounter++;\n  articoli.push({id, nome:'', categoria:CATS[2], quantita:1, valore:0});\n  renderArticoli();\n}\nfunction removeArticolo(id) { articoli = articoli.filter(a=>a.id!==id); renderArticoli(); }\nfunction updateArticolo(id,field,value) {\n  const a = articoli.find(x=>x.id===id);\n  if(a){\n    if(field==='valore') a[field]=parseFloat(value)||0;\n    else if(field==='quantita') a[field]=Math.max(1,parseInt(value)||1);\n    else a[field]=value;\n  }\n  renderComputed(id); updateKasko();\n}\nfunction renderArticoli() {\n  const c = document.getElementById('art-rows'); c.innerHTML='';\n  articoli.forEach(a => {\n    const d = document.createElement('div'); d.className='art-row'; d.id='ar-'+a.id;\n    d.innerHTML=`\n      <div class=\"field\"><label>Nome articolo<\/label><input type=\"text\" value=\"${a.nome}\" placeholder=\"es. DJI Matrice 4TD\" oninput=\"updateArticolo(${a.id},'nome',this.value)\"\/><\/div>\n      <div class=\"field\"><label>Categoria<\/label><select onchange=\"updateArticolo(${a.id},'categoria',this.value)\">${CATS.map(c=>`<option${c===a.categoria?' selected':''}>${c}<\/option>`).join('')}<\/select><\/div>\n      <div class=\"field\"><label>Q.t\u00e0<\/label><input type=\"number\" value=\"${a.quantita||1}\" min=\"1\" step=\"1\" oninput=\"updateArticolo(${a.id},'quantita',this.value)\"\/><\/div>\n      <div class=\"field\"><label>Valore unit. \u20ac<\/label><div class=\"pfx\"><span>\u20ac<\/span><input type=\"number\" value=\"${a.valore||''}\" min=\"0\" step=\"50\" placeholder=\"0\" oninput=\"updateArticolo(${a.id},'valore',this.value)\"\/><\/div><\/div>\n      <button class=\"btn-rm\" onclick=\"removeArticolo(${a.id})\" title=\"Rimuovi\">\u00d7<\/button>\n      <div class=\"art-computed\" id=\"ac-${a.id}\"><\/div>\n    `;\n    c.appendChild(d); renderComputed(a.id);\n  });\n  updateKasko();\n}\nfunction renderComputed(id) {\n  const a=articoli.find(x=>x.id===id), el=document.getElementById('ac-'+id);\n  if(!a||!el)return;\n  if(!a.valore){el.innerHTML='';return;}\n  const q=a.quantita||1, vl=valLinea(a);\n  const bd=vl*getMDay(), bw=vl*getMWeek()*(1-getDWeek()), bm=vl*getMMonth()*(1-getDMonth());\n  el.innerHTML=`<span class=\"vl\">Valore riga (${q}\u00d7 ${eur(a.valore)}): <strong>${eur(vl)}<\/strong><\/span><span>Giorn: <strong>${eur(bd)}<\/strong><\/span><span>Sett: <strong>${eur(bw)}<\/strong><\/span><span>Mens: <strong>${eur(bm)}<\/strong><\/span>`;\n}\n\n\/\/ \u2500\u2500 PERIODO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction setPeriodo(t) {\n  periodoTipo=t;\n  ['giornaliero','settimanale','mensile','custom'].forEach(x=>{\n    document.getElementById('pc-'+x).style.display=x===t?'block':'none';\n    document.getElementById('pt-'+x).classList.toggle('active',x===t);\n  });\n  calcPeriodo();\n}\nfunction calcPeriodo() {\n  if(periodoTipo==='giornaliero'){\n    const n=parseInt(document.getElementById('n_giorni').value)||1, pi=document.getElementById('pi_day').value;\n    document.getElementById('pf_day').value=addDays(pi,n-1);\n  } else if(periodoTipo==='settimanale'){\n    const n=parseInt(document.getElementById('n_sett').value)||1, pi=document.getElementById('pi_week').value;\n    document.getElementById('pf_week').value=addDays(pi,n*7-1);\n  } else if(periodoTipo==='mensile'){\n    const n=parseInt(document.getElementById('n_mesi').value)||1, pi=document.getElementById('pi_month').value;\n    document.getElementById('pf_month').value=addDays(addMonths(pi,n),-1);\n  } else {\n    const pi=document.getElementById('pi_custom').value, pf=document.getElementById('pf_custom').value;\n    if(pi&&pf){const d=Math.round((new Date(pf)-new Date(pi))\/86400000)+1; document.getElementById('custom-giorni').textContent=d>0?`Durata: ${d} giorno\/i`:'Date non valide';}\n  }\n  updateKasko();\n}\nfunction getPeriodo() {\n  if(periodoTipo==='giornaliero') return {tipo:'giornaliero',giorni:parseInt(document.getElementById('n_giorni').value)||1,giorni_totali:parseInt(document.getElementById('n_giorni').value)||1,data_inizio:fmtDate(document.getElementById('pi_day').value),data_fine:fmtDate(document.getElementById('pf_day').value)};\n  if(periodoTipo==='settimanale') return {tipo:'settimanale',settimane:parseInt(document.getElementById('n_sett').value)||1,giorni_totali:(parseInt(document.getElementById('n_sett').value)||1)*7,data_inizio:fmtDate(document.getElementById('pi_week').value),data_fine:fmtDate(document.getElementById('pf_week').value)};\n  if(periodoTipo==='mensile') return {tipo:'mensile',mesi:parseInt(document.getElementById('n_mesi').value)||1,giorni_totali:(parseInt(document.getElementById('n_mesi').value)||1)*30,data_inizio:fmtDate(document.getElementById('pi_month').value),data_fine:fmtDate(document.getElementById('pf_month').value)};\n  const pi=document.getElementById('pi_custom').value, pf=document.getElementById('pf_custom').value;\n  const d=pi&&pf?Math.round((new Date(pf)-new Date(pi))\/86400000)+1:0;\n  return {tipo:'custom',giorni_totali:d,data_inizio:fmtDate(pi),data_fine:fmtDate(pf)};\n}\nfunction descPeriodo(p) {\n  if(p.tipo==='giornaliero') return `${p.giorni} giorno\/i \u2014 dal ${p.data_inizio} al ${p.data_fine}`;\n  if(p.tipo==='settimanale') return `${p.settimane} settimana\/e \u2014 dal ${p.data_inizio} al ${p.data_fine}`;\n  if(p.tipo==='mensile') return `${p.mesi} mese\/i \u2014 dal ${p.data_inizio} al ${p.data_fine}`;\n  return `${p.giorni_totali} giorni \u2014 dal ${p.data_inizio} al ${p.data_fine}`;\n}\n\n\/\/ \u2500\u2500 GARANZIA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction setGaranzia(m) {\n  garanziaMode=m;\n  document.getElementById('btn-kasko').className='gsw-btn'+(m==='kasko'?' ak':'');\n  document.getElementById('btn-deposito').className='gsw-btn'+(m==='deposito'?' ad':'');\n  document.getElementById('panel-kasko').style.display=m==='kasko'?'block':'none';\n  document.getElementById('panel-deposito').style.display=m==='deposito'?'block':'none';\n}\nfunction updateKasko() {\n  const tv=totVal();\n  document.getElementById('k_day_val').textContent=eur(tv*getKDay());\n  document.getElementById('k_week_val').textContent=eur(tv*getKWeek());\n  document.getElementById('k_month_val').textContent=eur(tv*getKMonth());\n  document.getElementById('k_day_pct').textContent=gp('k_day_p');\n  document.getElementById('k_week_pct').textContent=gp('k_week_p');\n  document.getElementById('k_month_pct').textContent=gp('k_month_p');\n  document.getElementById('dep-display').textContent=eur(tv*.9);\n  document.getElementById('dep-base').textContent=eur(tv);\n}\n\n\/\/ \u2500\u2500 CALCOLO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction calcTariffe() {\n  const p=getPeriodo(), tv=totVal();\n  \/\/ le tariffe di riga (bd\/bw\/bm) sono gi\u00e0 comprensive della quantit\u00e0\n  const righe=articoli.map(a=>{\n    const q=a.quantita||1, vl=valLinea(a);\n    return {...a, quantita:q, valore:a.valore||0, vlinea:vl,\n      bd:vl*getMDay(), bw:vl*getMWeek()*(1-getDWeek()), bm:vl*getMMonth()*(1-getDMonth())};\n  });\n  let canoneLordo=0;\n  righe.forEach(r=>{\n    if(p.tipo==='giornaliero') canoneLordo+=r.bd*(p.giorni||1);\n    else if(p.tipo==='settimanale') canoneLordo+=r.bw*(p.settimane||1);\n    else if(p.tipo==='mensile') canoneLordo+=r.bm*(p.mesi||1);\n    else canoneLordo+=r.bd*p.giorni_totali;\n  });\n  const dExtra=getDExtra();\n  const scontoEuro=canoneLordo*dExtra;\n  const canone=canoneLordo-scontoEuro;\n  const km=p.tipo==='giornaliero'?getKDay()*(p.giorni||1):p.tipo==='settimanale'?getKWeek()*(p.settimane||1):p.tipo==='mensile'?getKMonth()*(p.mesi||1):getKDay()*p.giorni_totali;\n  const kasko=tv*km, dep=tv*.9, penale=p.giorni_totali>0?canone\/p.giorni_totali:0;\n  const totDay=righe.reduce((s,r)=>s+r.bd,0)*(1-dExtra), totWeek=righe.reduce((s,r)=>s+r.bw,0)*(1-dExtra), totMonth=righe.reduce((s,r)=>s+r.bm,0)*(1-dExtra);\n  return {p,tv,righe,canone,canoneLordo,scontoEuro,dExtra,kasko,dep,penale,totDay,totWeek,totMonth};\n}\n\n\/\/ \u2500\u2500 RENDER RISULTATI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction renderResultati() {\n  const {p,tv,canone,kasko,dep,penale,totDay,totWeek,totMonth}=calcTariffe();\n  const isD=garanziaMode==='deposito';\n  const cards=[\n    {label:'Giornaliero',base:totDay,disc:0,g:tv*getKDay(),isBest:false},\n    {label:'Settimanale',base:totWeek,disc:getDWeek(),g:tv*getKWeek(),isBest:true},\n    {label:'Mensile',base:totMonth,disc:getDMonth(),g:tv*getKMonth(),isBest:false}\n  ];\n  const rg=document.getElementById('results-grid'); rg.innerHTML='';\n  cards.forEach(c=>{\n    const gar=isD?dep:c.g, tot=c.base+gar;\n    const isSel=periodoTipo===c.label.toLowerCase();\n    const div=document.createElement('div');\n    div.className='rc'+(c.isBest?' best':'')+(isSel?' sel':'');\n    div.innerHTML=`\n      <div class=\"rc-period\">${c.label.toUpperCase()}\n        <span>${c.isBest?'<span class=\"tag tag-green\">Miglior valore<\/span>':''} ${isSel?'<span class=\"tag tag-red\">Selezionato<\/span>':''}<\/span>\n      <\/div>\n      <div class=\"rc-base\">${eur(c.base)}<\/div>\n      <div style=\"font-size:9px;color:var(--text-dim);letter-spacing:.05em;text-transform:uppercase;font-weight:600;margin-top:-2px;margin-bottom:4px;\">IVA esclusa<\/div>\n      <div class=\"rc-disc\">${c.disc>0?'\u2193 SCONTO '+Math.round(c.disc*100)+'% APPLICATO':''}<\/div>\n      <hr class=\"rc-div\"\/>\n      <div class=\"rc-glabel\">${isD?'Deposito cauzionale':'+ Polizza kasko'}<\/div>\n      <div class=\"${isD?'rc-gval-b':'rc-gval-a'}\">${eur(gar)}<\/div>\n      <div class=\"rc-tlabel\">${isD?'Canone + deposito iniziale':'Totale con kasko'}<\/div>\n      <div class=\"rc-total\">${eur(tot)}<\/div>\n      <div style=\"font-size:9px;color:var(--text-dim);letter-spacing:.05em;text-transform:uppercase;font-weight:600;margin-top:2px;\">IVA esclusa<\/div>`;\n    rg.appendChild(div);\n  });\n  const nPezzi=articoli.reduce((s,a)=>s+(a.quantita||1),0);\n  document.getElementById('chips-row').innerHTML=`\n    <div class=\"chip\">Articoli \/ pezzi <strong>${articoli.length} \/ ${nPezzi}<\/strong><\/div>\n    <div class=\"chip\">Totale valore beni <strong>${eur(tv)}<\/strong><\/div>\n    <div class=\"chip\">Deposito 90% <strong>${eur(dep)}<\/strong><\/div>\n    <div class=\"chip\">Penale ritardo\/gg <strong>${eur(penale)}<\/strong><\/div>`;\n  const rb=document.getElementById('rbox');\n  const pl=descPeriodo(p);\n  const {canoneLordo,scontoEuro,dExtra}=calcTariffe();\n  const IVA_RATE=0.22;\n  let rows='';\n  if(dExtra>0){\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">Canone noleggio lordo \u2014 ${pl}<\/span><span class=\"rval\">${eur(canoneLordo)}<\/span><\/div>`;\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\" style=\"color:var(--green);\">\u2212 Sconto commerciale ${Math.round(dExtra*100)}%<\/span><span class=\"rval\" style=\"color:var(--green);\">\u2212${eur(scontoEuro)}<\/span><\/div>`;\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">Canone netto<\/span><span class=\"rval\">${eur(canone)}<\/span><\/div>`;\n  } else {\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">Canone noleggio \u2014 ${pl}<\/span><span class=\"rval\">${eur(canone)}<\/span><\/div>`;\n  }\n  let imponibile;\n  if(isD){\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\" style=\"color:var(--blue);\">+ Deposito cauzionale (90% \u2014 rimborsabile, esente IVA)<\/span><span class=\"rval\" style=\"color:var(--blue);\">${eur(dep)}<\/span><\/div>`;\n    imponibile=canone;\n    const iva=imponibile*IVA_RATE;\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">Imponibile (canone)<\/span><span class=\"rval\">${eur(imponibile)}<\/span><\/div>`;\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">+ IVA 22%<\/span><span class=\"rval\">${eur(iva)}<\/span><\/div>`;\n    rows+=`<div class=\"rbox-row tot\"><span class=\"rlbl\">TOTALE DA VERSARE (IVA inclusa + deposito)<\/span><span class=\"rval\">${eur(imponibile+iva+dep)}<\/span><\/div>`;\n  } else {\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\" style=\"color:var(--amber);\">+ Polizza Kasko All Risk<\/span><span class=\"rval\" style=\"color:var(--amber);\">${eur(kasko)}<\/span><\/div>`;\n    imponibile=canone+kasko;\n    const iva=imponibile*IVA_RATE;\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">Imponibile<\/span><span class=\"rval\">${eur(imponibile)}<\/span><\/div>`;\n    rows+=`<div class=\"rbox-row\"><span class=\"rlbl\">+ IVA 22%<\/span><span class=\"rval\">${eur(iva)}<\/span><\/div>`;\n    rows+=`<div class=\"rbox-row tot\"><span class=\"rlbl\">TOTALE CONTRATTO (IVA inclusa)<\/span><span class=\"rval\">${eur(imponibile+iva)}<\/span><\/div>`;\n  }\n  rb.innerHTML=rows;\n}\n\n\/\/ \u2500\u2500 GENERA CONTRATTO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction showContract() {\n  renderResultati();\n  buildContractHTML();\n  document.getElementById('contract-section').style.display='block';\n  document.getElementById('tab2').style.display='none';\n  document.querySelectorAll('.tab-btn').forEach(b=>b.classList.remove('active'));\n  setTimeout(()=>{ document.getElementById('contract-section').scrollIntoView({behavior:'smooth'}); },100);\n}\n\nfunction gv(id){ const e=document.getElementById(id); return e?(e.value.trim()||'\u2014'):'\u2014'; }\n\nfunction buildContractHTML() {\n  const {p,tv,righe,canone,canoneLordo,scontoEuro,dExtra,kasko,dep,penale}=calcTariffe();\n  const isD=garanziaMode==='deposito';\n  const nc=gv('num_contratto'), de=fmtDate(gv('data_emissione'));\n  const rs=gv('ragione_sociale'), piva=gv('piva'), ind=gv('indirizzo'), ref=gv('referente'), email=gv('email'), tel=gv('telefono');\n  const pl=descPeriodo(p);\n\n  \/\/ articoli table rows \u2014 con Q.t\u00e0 e Valore unitario\n  const artRows=righe.map(r=>`\n    <tr>\n      <td>${r.nome||'\u2014'}<\/td>\n      <td>${r.categoria}<\/td>\n      <td class=\"qty\">${r.quantita}<\/td>\n      <td class=\"num\">${eur(r.valore)}<\/td>\n      <td class=\"num\">${eur(r.bd)}<\/td>\n      <td class=\"num\">${eur(r.bw)}<\/td>\n      <td class=\"num\">${eur(r.bm)}<\/td>\n    <\/tr>`).join('');\n\n  const nPezzi=righe.reduce((s,r)=>s+(r.quantita||1),0);\n  const artTotRow=`<tr>\n    <td colspan=\"2\"><strong>TOTALE<\/strong><\/td>\n    <td class=\"qty\"><strong>${nPezzi}<\/strong><\/td>\n    <td class=\"num\"><strong>${eur(tv)}<\/strong><\/td>\n    <td class=\"num\"><strong>${eur(righe.reduce((s,r)=>s+r.bd,0))}<\/strong><\/td>\n    <td class=\"num\"><strong>${eur(righe.reduce((s,r)=>s+r.bw,0))}<\/strong><\/td>\n    <td class=\"num\"><strong>${eur(righe.reduce((s,r)=>s+r.bm,0))}<\/strong><\/td>\n  <\/tr>`;\n\n  \/\/ economic table\n  const IVA_RATE=0.22;\n  const imponibile=isD?canone:canone+kasko;\n  const iva=imponibile*IVA_RATE;\n  const totaleIvaInclusa=imponibile+iva;\n  const totFinale=isD?totaleIvaInclusa+dep:totaleIvaInclusa;\n\n  const scontoRow=dExtra>0?`\n    <tr><td>Canone di noleggio lordo \u2014 ${pl}<\/td><td class=\"eco-val\">${eur(canoneLordo)}<\/td><\/tr>\n    <tr><td style=\"color:#15803d;\">\u2212 Sconto commerciale ${Math.round(dExtra*100)}%<\/td><td class=\"eco-val\" style=\"color:#15803d;\">\u2212${eur(scontoEuro)}<\/td><\/tr>\n    <tr><td>Canone netto<\/td><td class=\"eco-val\">${eur(canone)}<\/td><\/tr>`\n  :`<tr><td>Canone di noleggio \u2014 ${pl}<\/td><td class=\"eco-val\">${eur(canone)}<\/td><\/tr>`;\n\n  const ecoRows=isD?`\n    ${scontoRow}\n    <tr><td>Imponibile (canone)<\/td><td class=\"eco-val\">${eur(imponibile)}<\/td><\/tr>\n    <tr><td>+ IVA 22%<\/td><td class=\"eco-val\">${eur(iva)}<\/td><\/tr>\n    <tr><td>Subtotale canone IVA inclusa<\/td><td class=\"eco-val\">${eur(totaleIvaInclusa)}<\/td><\/tr>\n    <tr><td>+ Deposito cauzionale (90% del valore \u2014 rimborsabile, esente IVA)<\/td><td class=\"eco-val\" style=\"color:#1d4ed8;\">${eur(dep)}<\/td><\/tr>\n    <tr><td class=\"eco-lbl-tot\">TOTALE DA VERSARE (IVA inclusa + deposito)<\/td><td class=\"eco-val eco-tot\">${eur(totFinale)}<\/td><\/tr>`\n  :`${scontoRow}\n    <tr><td>+ Polizza Kasko All Risk<\/td><td class=\"eco-val\" style=\"color:#a16207;\">${eur(kasko)}<\/td><\/tr>\n    <tr><td>Imponibile<\/td><td class=\"eco-val\">${eur(imponibile)}<\/td><\/tr>\n    <tr><td>+ IVA 22%<\/td><td class=\"eco-val\">${eur(iva)}<\/td><\/tr>\n    <tr><td class=\"eco-lbl-tot\">TOTALE CONTRATTO (IVA inclusa)<\/td><td class=\"eco-val eco-tot\">${eur(totFinale)}<\/td><\/tr>`;\n\n  const garanziaNote=isD\n    ? `In sostituzione della polizza kasko, il Cliente ha optato per il versamento di un <strong>deposito cauzionale pari al 90% del valore del bene (${eur(dep)})<\/strong>. Il deposito \u00e8 rimborsato entro 7 giorni lavorativi dalla restituzione e verifica integrit\u00e0, deducendo: canone del periodo, penali per ritardo, estensioni, costi riparazione\/sostituzione. Il Cliente rimane responsabile per ogni danno eccedente il deposito versato.`\n    : `Tutte le attrezzature sono coperte di <strong>default da polizza Kasko All Risk<\/strong> inclusa nel canone. Esclusi: danni da dolo o colpa grave, utilizzi non conformi. Franchigie e scoperti a carico del Cliente. Sinistri da comunicare entro <strong>24 ore<\/strong>.`;\n\n  const deposBlock=isD\n    ? `<div class=\"doc-highlight\">Il deposito cauzionale di <strong>${eur(dep)}<\/strong> sar\u00e0 rimborsato entro 7 giorni lavorativi dalla restituzione e verifica integrit\u00e0 del bene, deducendo: canone, penali per ritardo (tariffa giornaliera netta \u00d7 giorni), estensioni e costi danni non coperti.<\/div>` : '';\n\n  document.getElementById('contract-doc').innerHTML=`\n    <div class=\"doc-header\">\n      <div>\n        <div class=\"doc-logo-name\">DroneBase<\/div>\n        <div class=\"doc-logo-sub\">S.r.l. \u2014 DJI Gold 5 Authorized Dealer \u2014 ISO 9001:2015<br\/>Via San Giovenale 86, 47922 Rimini \u00b7 info@dronebase.it<\/div>\n      <\/div>\n      <div class=\"doc-meta\">\n        Contratto N. <strong>${nc}<\/strong><br\/>\n        Data emissione: ${de}\n      <\/div>\n    <\/div>\n\n    <div class=\"doc-title\">Contratto di Noleggio<\/div>\n    <div class=\"doc-subtitle\">Noleggio a freddo (Dry Hire) \u2014 DroneBase S.r.l.<\/div>\n\n    <div class=\"doc-h1\">Parti Contraenti<\/div>\n    <div class=\"doc-h2\">Locatore<\/div>\n    <p class=\"doc-p\"><strong>DroneBase S.r.l.<\/strong> \u2014 Via San Giovenale 86, 47922 Rimini (RN)<br\/>\n    P.IVA: IT04456990409 \u00b7 Tel: +39 0541 179 0411 \u00b7 info@dronebase.it<br\/>\n    DJI Gold 5 Authorized Dealer \u00b7 Certificazione ISO 9001:2015<\/p>\n\n    <div class=\"doc-h2\">Conduttore (Cliente)<\/div>\n    <p class=\"doc-p\">\n      <strong>Ragione sociale:<\/strong> ${rs}<br\/>\n      <strong>P.IVA \/ C.F.:<\/strong> ${piva}<br\/>\n      <strong>Sede legale:<\/strong> ${ind}<br\/>\n      <strong>Referente:<\/strong> ${ref}<br\/>\n      <strong>Email:<\/strong> ${email} &nbsp;\u00b7&nbsp; <strong>Tel:<\/strong> ${tel}\n    <\/p>\n\n    <div class=\"doc-h1\">Attrezzatura Noleggiata<\/div>\n    <p class=\"doc-p-small\">Modalit\u00e0: <strong>Noleggio a freddo (Dry Hire)<\/strong> \u2014 fornitura hardware senza operatore. Il Cliente assume piena responsabilit\u00e0 operativa e normativa (ENAC\/EASA).<br\/><strong style=\"color:#e84040;\">Tutte le tariffe indicate sono IVA esclusa (aliquota IVA 22%).<\/strong> Le tariffe di riga sono comprensive della quantit\u00e0 indicata.<\/p>\n    <table class=\"doc-table\">\n      <thead><tr><th>Articolo<\/th><th>Categoria<\/th><th>Q.t\u00e0<\/th><th>Valore unit.<br\/><span style=\"font-size:7.5pt;font-weight:400;color:#888;\">(IVA escl.)<\/span><\/th><th>Tariffa\/gg<br\/><span style=\"font-size:7.5pt;font-weight:400;color:#888;\">(riga, IVA escl.)<\/span><\/th><th>Tariffa\/sett<br\/><span style=\"font-size:7.5pt;font-weight:400;color:#888;\">(riga, IVA escl.)<\/span><\/th><th>Tariffa\/mese<br\/><span style=\"font-size:7.5pt;font-weight:400;color:#888;\">(riga, IVA escl.)<\/span><\/th><\/tr><\/thead>\n      <tbody>${artRows}${artTotRow}<\/tbody>\n    <\/table>\n\n    <div class=\"doc-h1\">Periodo e Corrispettivo<\/div>\n    <p class=\"doc-p\">\n      <strong>Periodo di noleggio:<\/strong> ${pl}<br\/>\n      <strong>Garanzia:<\/strong> ${isD?'Deposito cauzionale 90% del valore (rimborsabile)':'Polizza Kasko All Risk (inclusa nel canone)'}\n    <\/p>\n    <div class=\"doc-highlight amber\" style=\"margin-bottom:10px;\"><strong>Aliquota IVA applicata: 22%<\/strong> sul canone e sulla polizza kasko. Il deposito cauzionale \u00e8 esente IVA in quanto somma rimborsabile.<\/div>\n    <table class=\"eco-table\">\n      <tbody>${ecoRows}<\/tbody>\n    <\/table>\n    ${deposBlock}\n\n    <div class=\"doc-h1\">Termini e Condizioni di Noleggio<\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 1 \u2014 Oggetto del contratto<\/div>\n      <div class=\"doc-art-body\">Il presente contratto disciplina il noleggio delle attrezzature indicate nell'offerta commerciale, di propriet\u00e0 di DroneBase S.r.l., concesse in uso temporaneo al Cliente alle condizioni di seguito specificate.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 2 \u2014 Stato e utilizzo dell'attrezzatura<\/div>\n      <div class=\"doc-art-body\">Le attrezzature vengono consegnate perfettamente funzionanti e conformi alle specifiche tecniche dichiarate. Il Cliente si impegna a:\n        <ul><li>utilizzare i beni esclusivamente per scopi leciti e professionali<\/li><li>impiegare personale qualificato e adeguatamente formato<\/li><li>rispettare le istruzioni tecniche del produttore e di DroneBase<\/li><\/ul>\n        \u00c8 vietato qualsiasi utilizzo improprio, negligente o non conforme alla destinazione d'uso.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 2-bis \u2014 Modalit\u00e0 di noleggio \u2014 Dry Hire (noleggio a freddo)<\/div>\n      <div class=\"doc-art-body\">Il presente contratto ha ad oggetto il noleggio a freddo (<em>dry hire<\/em>). DroneBase S.r.l. fornisce esclusivamente il bene materiale, senza operatore, senza assistenza tecnica in loco e senza gestione della missione. Il Cliente dichiara di essere in possesso delle abilitazioni, certificazioni e autorizzazioni richieste dalla normativa aeronautica vigente (ENAC\/EASA) per la conduzione autonoma del mezzo. DroneBase S.r.l. non assume alcuna responsabilit\u00e0 per le attivit\u00e0 operative svolte dal Cliente con il bene noleggiato.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 3 \u2014 Responsabilit\u00e0 e manleva<\/div>\n      <div class=\"doc-art-body\">Il Cliente assume ogni responsabilit\u00e0 derivante dall'utilizzo delle attrezzature noleggiate. DroneBase S.r.l. non potr\u00e0 essere ritenuta responsabile per utilizzo improprio, danni diretti\/indiretti o violazioni della normativa aeronautica ENAC\/EASA. Il Cliente manleva espressamente DroneBase da qualsiasi responsabilit\u00e0 civile, penale o amministrativa.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 4 \u2014 Registrazione e assicurazione del drone<\/div>\n      <div class=\"doc-art-body\">Qualora l'offerta includa un drone, il mezzo sar\u00e0 fornito regolarmente registrato sul portale <strong>D-Flight<\/strong> e coperto da polizza <strong>RC (Responsabilit\u00e0 Civile)<\/strong> conforme alla normativa vigente. Resta in capo al Cliente la responsabilit\u00e0 per l'utilizzo operativo.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 5 \u2014 Copertura assicurativa<\/div>\n      <div class=\"doc-art-body\">${garanziaNote}<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 6 \u2014 Durata del noleggio e restituzione<\/div>\n      <div class=\"doc-art-body\">La durata del noleggio \u00e8: <strong>${pl}<\/strong>. La restituzione avverr\u00e0 tramite ritiro a cura di corriere incaricato da DroneBase. Il Cliente restituir\u00e0 i beni integri, completi di accessori e adeguatamente imballati.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 7 \u2014 Consegna e ritiro<\/div>\n      <div class=\"doc-art-body\">Il preventivo include consegna presso la sede del Cliente e ritiro al termine tramite <strong>corriere espresso assicurato<\/strong>. Il Cliente garantisce la presenza per consegna\/ritiro, verifica l'integrit\u00e0 della merce e predispone imballo idoneo. Anomalie da segnalare immediatamente.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 8 \u2014 Trasferimento della responsabilit\u00e0<\/div>\n      <div class=\"doc-art-body\">La responsabilit\u00e0 si trasferisce al Cliente alla firma del DDT di consegna. Da tale momento il Cliente \u00e8 unico responsabile per danni, furti, smarrimenti o uso improprio. La responsabilit\u00e0 torna a DroneBase al momento del ritiro dal corriere, comprovato da documentazione.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 9 \u2014 Penali per ritardo<\/div>\n      <div class=\"doc-art-body\">Per ogni giorno di ritardo nella riconsegna verr\u00e0 applicata una penale pari alla <strong>tariffa giornaliera netta di noleggio (${eur(penale)}\/giorno)<\/strong>, fino alla data effettiva di ritiro. Nei contratti con deposito cauzionale le penali sono dedotte dall'importo da rimborsare.\n        <div class=\"doc-highlight amber\">Penale ritardo = canone giornaliero netto \u00d7 giorni di ritardo<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 10 \u2014 Danni, smarrimento e furto<\/div>\n      <div class=\"doc-art-body\">Il Cliente \u00e8 responsabile per danni, perdita e furto. I costi non coperti da assicurazione (o non compensati dal deposito cauzionale) saranno interamente a carico del Cliente.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 11 \u2014 Divieto di sub-noleggio<\/div>\n      <div class=\"doc-art-body\">\u00c8 vietata qualsiasi forma di sub-noleggio o cessione del contratto senza <strong>autorizzazione scritta<\/strong> di DroneBase S.r.l.<\/div>\n    <\/div>\n\n    <div class=\"doc-art\">\n      <div class=\"doc-art-num\">Art. 12 \u2014 Foro competente e legge applicabile<\/div>\n      <div class=\"doc-art-body\">Il contratto \u00e8 regolato dalla <strong>legge italiana<\/strong>. Foro competente esclusivo: <strong>Rimini<\/strong>.<\/div>\n    <\/div>\n\n    <div class=\"doc-h1\">Accettazione e Firme<\/div>\n    <p class=\"doc-p\">L'accettazione del presente contratto comporta accettazione integrale e senza riserve di tutte le presenti Condizioni di Noleggio. Le clausole di cui agli Artt. 3, 5, 9 e 10, comportando limitazioni di responsabilit\u00e0 e oneri economici specifici, si intendono espressamente approvate ai sensi degli artt. 1341 e 1342 c.c.<\/p>\n    <p class=\"doc-p\">Luogo e data: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n\n    <div class=\"doc-sign-grid\">\n      <div class=\"doc-sign-block\">\n        <div class=\"doc-sign-label\">Firma del Locatore<\/div>\n        <div class=\"doc-sign-name\">DroneBase S.r.l. \u2014 Legale Rappresentante<\/div>\n        <div class=\"doc-sign-line\">Firma e timbro<\/div>\n      <\/div>\n      <div class=\"doc-sign-block\">\n        <div class=\"doc-sign-label\">Firma del Conduttore<\/div>\n        <div class=\"doc-sign-name\">${rs} \u2014 ${ref}<\/div>\n        <div class=\"doc-sign-line\">Firma e timbro<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"doc-accept-box\">\n      <strong>Ai sensi degli artt. 1341 e 1342 c.c.<\/strong>, il Cliente dichiara di approvare specificamente le seguenti clausole:<br\/>\n      Art. 3 (Responsabilit\u00e0 e manleva) \u00b7 Art. 5 (Copertura assicurativa) \u00b7 Art. 9 (Penali per ritardo) \u00b7 Art. 10 (Danni, smarrimento e furto) \u00b7 Art. 11 (Divieto sub-noleggio) \u00b7 Art. 12 (Foro competente)\n    <\/div>\n\n    <div class=\"doc-sign-grid\" style=\"margin-top:18px;\">\n      <div><\/div>\n      <div class=\"doc-sign-block\">\n        <div class=\"doc-sign-label\">Firma per specifica approvazione clausole<\/div>\n        <div class=\"doc-sign-name\">${rs}<\/div>\n        <div class=\"doc-sign-line\">Firma<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"doc-footer-note\">\n      DroneBase S.r.l. \u00b7 DJI Gold 5 Authorized Dealer \u00b7 ISO 9001:2015 \u00b7 shop.dronebase.it<br\/>\n      Contratto N. ${nc} \u2014 Emesso il ${de} \u2014 Documento generato automaticamente dal Sistema Calcolatore Noleggio DroneBase\n    <\/div>\n  `;\n}\n\n\/\/ \u2500\u2500 COPY CONTRACT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction copyContract() {\n  const el = document.getElementById('contract-doc');\n  const text = el.innerText;\n  navigator.clipboard.writeText(text).then(()=>{\n    showToast('\u2713 Contratto copiato negli appunti', 'ok');\n  }).catch(()=>{\n    const sel = window.getSelection(), range = document.createRange();\n    range.selectNodeContents(el); sel.removeAllRanges(); sel.addRange(range);\n    document.execCommand('copy');\n    sel.removeAllRanges();\n    showToast('\u2713 Contratto copiato', 'ok');\n  });\n}\n\nfunction showToast(msg, type) {\n  const t=document.getElementById('toast');\n  t.textContent=msg; t.className='toast show '+(type||'');\n  setTimeout(()=>{t.className='toast';},3000);\n}\n\n\/\/ listen to all inputs for live kasko update\ndocument.addEventListener('input', updateKasko);\n\n\/\/ \u2500\u2500 INIT (after all functions defined) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst today = new Date().toISOString().split('T')[0];\ndocument.getElementById('data_emissione').value = today;\n['pi_day','pi_week','pi_month','pi_custom'].forEach(id => { const e = document.getElementById(id); if(e) e.value = today; });\ncalcPeriodo();\naddArticolo();\n<\/script>\n<\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Calcolatore Noleggio &#038; Contratto \u2014 DroneBase DroneBaseDJI Gold 5 \u00b7 ISO 9001:2015 +39 0541 179 0411 Noleggio Strumento Commerciale Calcolatore Noleggio &#038; Contratto Inserisci i dati, calcola le tariffe e<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-90636","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.0 (Yoast SEO v28.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Noleggio breve termine - DroneBase | Droni Professionali<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Noleggio breve termine\" \/>\n<meta property=\"og:description\" content=\"Calcolatore Noleggio &#038; Contratto \u2014 DroneBase DroneBaseDJI Gold 5 \u00b7 ISO 9001:2015 +39 0541 179 0411 Noleggio Strumento Commerciale Calcolatore Noleggio &#038; Contratto Inserisci i dati, calcola le tariffe e\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/\" \/>\n<meta property=\"og:site_name\" content=\"DroneBase | Droni Professionali\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dronebase.it\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-22T11:02:19+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/noleggio-breve-termine-2\\\/\",\"url\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/noleggio-breve-termine-2\\\/\",\"name\":\"Noleggio breve termine - DroneBase | Droni Professionali\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/#website\"},\"datePublished\":\"2026-07-22T11:02:17+00:00\",\"dateModified\":\"2026-07-22T11:02:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/noleggio-breve-termine-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/noleggio-breve-termine-2\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/noleggio-breve-termine-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Noleggio breve termine\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/\",\"name\":\"DroneBase | Droni Professionali\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/#organization\",\"name\":\"%%title%% %%page%% | DroneBase\",\"url\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/shop.dronebase.it\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Logo_Dronebase-e1716297706218.png\",\"contentUrl\":\"https:\\\/\\\/shop.dronebase.it\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Logo_Dronebase-e1716297706218.png\",\"width\":200,\"height\":21,\"caption\":\"%%title%% %%page%% | DroneBase\"},\"image\":{\"@id\":\"https:\\\/\\\/shop.dronebase.it\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dronebase.it\",\"https:\\\/\\\/www.youtube.com\\\/@DronebaseItdronebase\"],\"description\":\"DJI Gold Dealer e ISO 9001:2015 certificati. Soluzioni drone enterprise per i professionisti.\",\"email\":\"info@dronebase.it\",\"telephone\":\"+3905411790411\",\"legalName\":\"DroneBase srl\",\"vatID\":\"IT04456990409\",\"taxID\":\"04456990409\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Noleggio breve termine - DroneBase | Droni Professionali","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/","og_locale":"en_US","og_type":"article","og_title":"Noleggio breve termine","og_description":"Calcolatore Noleggio &#038; Contratto \u2014 DroneBase DroneBaseDJI Gold 5 \u00b7 ISO 9001:2015 +39 0541 179 0411 Noleggio Strumento Commerciale Calcolatore Noleggio &#038; Contratto Inserisci i dati, calcola le tariffe e","og_url":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/","og_site_name":"DroneBase | Droni Professionali","article_publisher":"https:\/\/www.facebook.com\/dronebase.it","article_modified_time":"2026-07-22T11:02:19+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/","url":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/","name":"Noleggio breve termine - DroneBase | Droni Professionali","isPartOf":{"@id":"https:\/\/shop.dronebase.it\/en\/#website"},"datePublished":"2026-07-22T11:02:17+00:00","dateModified":"2026-07-22T11:02:19+00:00","breadcrumb":{"@id":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/shop.dronebase.it\/en\/noleggio-breve-termine-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/shop.dronebase.it\/en\/"},{"@type":"ListItem","position":2,"name":"Noleggio breve termine"}]},{"@type":"WebSite","@id":"https:\/\/shop.dronebase.it\/en\/#website","url":"https:\/\/shop.dronebase.it\/en\/","name":"DroneBase | Droni Professionali","description":"","publisher":{"@id":"https:\/\/shop.dronebase.it\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shop.dronebase.it\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/shop.dronebase.it\/en\/#organization","name":"%%title%% %%page%% | DroneBase","url":"https:\/\/shop.dronebase.it\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shop.dronebase.it\/en\/#\/schema\/logo\/image\/","url":"https:\/\/shop.dronebase.it\/wp-content\/uploads\/2025\/06\/Logo_Dronebase-e1716297706218.png","contentUrl":"https:\/\/shop.dronebase.it\/wp-content\/uploads\/2025\/06\/Logo_Dronebase-e1716297706218.png","width":200,"height":21,"caption":"%%title%% %%page%% | DroneBase"},"image":{"@id":"https:\/\/shop.dronebase.it\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dronebase.it","https:\/\/www.youtube.com\/@DronebaseItdronebase"],"description":"DJI Gold Dealer e ISO 9001:2015 certificati. Soluzioni drone enterprise per i professionisti.","email":"info@dronebase.it","telephone":"+3905411790411","legalName":"DroneBase srl","vatID":"IT04456990409","taxID":"04456990409","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}}]}},"_links":{"self":[{"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/pages\/90636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/comments?post=90636"}],"version-history":[{"count":0,"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/pages\/90636\/revisions"}],"wp:attachment":[{"href":"https:\/\/shop.dronebase.it\/en\/wp-json\/wp\/v2\/media?parent=90636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}