@font-face{font-family:Inter;font-weight:400;font-display:swap;src:url(/fonts/Inter-400.woff2) format("woff2")}@font-face{font-family:Inter;font-weight:500;font-display:swap;src:url(/fonts/Inter-500.woff2) format("woff2")}@font-face{font-family:Inter;font-weight:600;font-display:swap;src:url(/fonts/Inter-600.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500.woff2) format("woff2")}:root{--paper: #F3F0E9;--paper-deep: #E9E4DA;--card: #FFFFFF;--card-hover: #F8F6F1;--sunken: #F1EDE5;--line: #E6E0D4;--line-strong: #D6CFC1;--field: #958D7F;--text: #151A22;--text-2: #4F5663;--text-3: #646A75;--text-disabled: #9A9488;--ink: #0B1018;--ink-2: #121924;--ink-3: #1A2330;--ink-line: #2A3443;--ink-text: #F2F0EA;--ink-text-2: #B0B7C3;--ink-text-3: #828A98;--primary: #141A23;--primary-hover: #273141;--glacier: #2563D6;--glacier-text: #1D4FAE;--glacier-tint: #E8EFFC;--glacier-ink: #6EA0FF;--ember: #E75623;--ember-text: #C8461B;--ember-tint: #FDEBE3;--good: #1F8F4E;--good-text: #13703B;--good-tint: #E5F3EA;--warning: #F0B323;--warning-text: #8A5B00;--warning-tint: #FDF2D3;--critical: #D92D43;--critical-text: #B3192F;--critical-tint: #FBE7EA;--data-1: #2A71D6;--data-2: #E75623;--data-3: #05A291;--data-4: #7853D5;--data-5: #499537;--data-6: #903D8B;--data-7: #E6A313;--data-8: #DF5E97;--cold-3: #0C499A;--cold-2: #377EE3;--cold-1: #88B6FA;--neutral-t: #E4DFD5;--warm-1: #F19B81;--warm-2: #D9480F;--font: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--shadow: 0 1px 2px rgba(21, 26, 34, .06), 0 2px 8px rgba(21, 26, 34, .05)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:20px;color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}fieldset{min-width:0}.ico{display:inline-block;vertical-align:-2px}a{color:var(--glacier-text)}code,.mono{font-family:var(--mono);font-size:13px}:focus-visible{outline:2px solid var(--glacier);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.shell{display:grid;grid-template-columns:248px 1fr;min-height:100%}.side{background:var(--ink);color:var(--ink-text);padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:10px;align-items:center;padding:0 6px}.brand-mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(160deg,var(--glacier) 0%,#0C499A 100%);display:grid;place-items:center}.brand-name{font-weight:600;font-size:16px;letter-spacing:-.01em}.brand-sub{font-size:12px;color:var(--ink-text-3);line-height:16px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:var(--r-sm);color:var(--ink-text-2);text-decoration:none;font-weight:500}.nav a:hover{background:var(--ink-3);color:var(--ink-text)}.nav a.active{background:var(--ink-3);color:var(--ink-text);box-shadow:inset 2px 0 0 var(--glacier-ink)}.side-foot{margin-top:auto;font-size:12px;color:var(--ink-text-3);padding:0 6px;line-height:17px}.side-foot .eex{color:#e35a2d;font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:11px}.main{min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 32px 14px;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:5}.topbar h1{font-size:20px;line-height:28px;margin:0;font-weight:600;letter-spacing:-.01em}.topbar .crumb{color:var(--text-3);font-size:13px}.content{padding:24px 32px 64px;max-width:1480px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:18px 20px;min-width:0}.card h2{font-size:15px;line-height:20px;margin:0 0 12px;font-weight:600}.card h3{font-size:13px;margin:14px 0 8px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.06em}.card.sunken{background:var(--sunken);box-shadow:none}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.split{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}@media(max-width:1180px){.split,.g3,.g4{grid-template-columns:1fr 1fr}}@media(max-width:860px){.shell{grid-template-columns:1fr}.side{position:static;height:auto}.split,.g2,.g3,.g4{grid-template-columns:1fr}.content{padding:16px}.topbar{padding:14px 16px}}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.muted{color:var(--text-3)}.small{font-size:12px;line-height:16px}.lead{font-size:15px;line-height:23px;color:var(--text-2);max-width:80ch}.sep{height:1px;background:var(--line);margin:12px 0}.kpi{padding:14px 16px}.kpi .k-label{font-size:12px;color:var(--text-3);display:flex;gap:6px;align-items:center}.kpi .k-value{font-size:26px;line-height:32px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:4px}.kpi .k-unit{font-size:13px;color:var(--text-3);font-weight:500;margin-left:4px}.kpi .k-note{font-size:12px;color:var(--text-3);margin-top:2px}.sq{width:8px;height:8px;border-radius:2px;display:inline-block}.btn{border:1px solid var(--line-strong);background:var(--card);padding:8px 14px;border-radius:var(--r-sm);cursor:pointer;font-weight:500;display:inline-flex;gap:8px;align-items:center;white-space:nowrap}.btn:hover{background:var(--card-hover)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-hover)}.btn.accent{background:var(--glacier);border-color:var(--glacier);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.small{padding:4px 9px;font-size:13px}.card.stack>.btn{white-space:normal;text-align:left;justify-content:flex-start}.btn:disabled{opacity:.5;cursor:not-allowed}input[type=text],input[type=number],input[type=password],select,textarea{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:#fff;padding:7px 9px;min-width:0}input:focus,select:focus,textarea:focus{border-color:var(--glacier);outline:none;box-shadow:0 0 0 3px var(--glacier-tint)}label.lbl{font-size:12px;color:var(--text-2);font-weight:500;display:block;margin-bottom:4px}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:1px 8px;font-size:12px;line-height:18px;font-weight:500;white-space:nowrap;border:1px solid transparent}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.b-cad_nativo{background:var(--glacier-tint);color:var(--glacier-text)}.b-descrizione_cad{background:#eee9fb;color:#5b3bb5}.b-stima{background:var(--warning-tint);color:var(--warning-text)}.b-workbook,.b-record{background:#e3f4f1;color:#046e62}.b-comune_esempi{background:var(--paper-deep);color:var(--text-2)}.b-utente{background:var(--ember-tint);color:var(--ember-text)}.b-app{background:var(--sunken);color:var(--text-2)}.b-vuoto{background:transparent;color:var(--text-3);border-color:var(--line)}.b-mancante{background:var(--critical-tint);color:var(--critical-text)}.s-ok{background:var(--good-tint);color:var(--good-text)}.s-info{background:var(--sunken);color:var(--text-2)}.s-attenzione,.s-CHECK{background:var(--warning-tint);color:var(--warning-text)}.s-errore{background:var(--critical-tint);color:var(--critical-text)}.s-OK{background:var(--good-tint);color:var(--good-text)}.banner{border-radius:var(--r-md);padding:12px 14px;border:1px solid var(--line);background:var(--card);display:flex;gap:10px;align-items:flex-start}.banner.warn{background:var(--warning-tint);border-color:#f2d58a;color:#5e3f00}.banner.info{background:var(--glacier-tint);border-color:#c7d8f7;color:#163e87}.banner.err{background:var(--critical-tint);border-color:#f2b8c1;color:#7d1121}.banner.ok{background:var(--good-tint);border-color:#b8dec7;color:#0e5a2f}.banner ul{margin:4px 0 0;padding-left:18px}.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}table.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;font-weight:600;color:var(--text-2);background:var(--sunken);padding:7px 10px;position:sticky;top:0;z-index:1;border-bottom:1px solid var(--line);white-space:nowrap}.tbl td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}.tbl tr:last-child td{border-bottom:none}.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tbl tr.hl td{background:#fffbef}.tbl tr.diff td{background:#fff6f2}.max-h{max-height:460px}.steps{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:18px}.step{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--text-3);font-weight:500;cursor:pointer;font-size:13px}.step .n{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--sunken);font-size:12px}.step.done{color:var(--text)}.step.done .n{background:var(--good-tint);color:var(--good-text)}.step.current{border-color:var(--glacier);color:var(--glacier-text);background:var(--glacier-tint)}.step.current .n{background:var(--glacier);color:#fff}.step.sel{box-shadow:0 0 0 2px var(--glacier-tint)}.step:disabled{cursor:default;opacity:.55}.field{display:grid;grid-template-columns:minmax(140px,1fr) 150px minmax(170px,1.25fr);gap:12px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.field:last-child{border-bottom:none}.field .f-label{font-weight:500}.field .f-name{font-family:var(--mono);font-size:11px;color:var(--text-3)}.field .f-help{font-size:12px;color:var(--text-3);margin-top:2px;line-height:16px}.field .f-input{display:flex;gap:6px;align-items:center}.field .f-input input,.field .f-input select{width:100%}.field .f-unit{font-size:12px;color:var(--text-3);min-width:34px}.field .f-prov{font-size:12px;line-height:17px;color:var(--text-2);display:flex;flex-direction:column;gap:4px}.field .f-unc{color:var(--warning-text)}.field .f-ref{color:var(--text-3)}.field.missing{background:linear-gradient(90deg,var(--critical-tint),transparent 60%)}.field.edited .f-input input{border-color:var(--ember)}@media(max-width:1100px){.field{grid-template-columns:minmax(0,1fr) 150px}.field .f-prov{grid-column:1 / -1}}@media(max-width:860px){.field{grid-template-columns:1fr}}details.sec{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);padding:0 18px}details.sec>summary{cursor:pointer;padding:14px 0;font-weight:600;display:flex;justify-content:space-between;align-items:center;list-style:none}details.sec>summary::-webkit-details-marker{display:none}details.sec[open]>summary{border-bottom:1px solid var(--line)}pre.code{background:var(--ink-2);color:#e7e4dc;border-radius:var(--r-md);padding:14px 16px;overflow:auto;font-family:var(--mono);font-size:12.5px;line-height:19px;margin:0;max-height:620px}.diff-blk{border:1px solid var(--line);border-radius:var(--r-sm);margin-bottom:8px;overflow:hidden}.diff-blk .d-a{background:#fff1ee;padding:4px 10px;font-family:var(--mono);font-size:12px;white-space:pre-wrap;word-break:break-all}.diff-blk .d-b{background:#eef7f1;padding:4px 10px;font-family:var(--mono);font-size:12px;white-space:pre-wrap;word-break:break-all}.diff-blk .d-h{background:var(--sunken);padding:3px 10px;font-size:11px;color:var(--text-3)}svg text{font-family:var(--font)}.chart-note{font-size:12px;color:var(--text-3)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2)}.legend span{display:inline-flex;gap:6px;align-items:center}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px}.tab{padding:8px 12px;border:none;background:none;cursor:pointer;color:var(--text-3);font-weight:500;border-bottom:2px solid transparent}.tab.on{color:var(--text);border-bottom-color:var(--glacier)}.empty{padding:28px;text-align:center;color:var(--text-3)}.spinner{width:16px;height:16px;border:2px solid var(--line-strong);border-top-color:var(--glacier);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b10188c;display:grid;place-items:center;z-index:50;padding:16px}.modal{background:var(--card);border-radius:var(--r-lg);padding:24px;width:420px;max-width:100%;box-shadow:0 20px 60px #00000040}.preview-img{width:100%;border-radius:var(--r-md);border:1px solid var(--line);background:#fff;aspect-ratio:4 / 3;object-fit:contain}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px}.kv dt{color:var(--text-3)}.kv dd{margin:0;font-variant-numeric:tabular-nums;min-width:0;overflow-wrap:anywhere}.chip{display:inline-flex;gap:6px;align-items:center;padding:3px 9px;border-radius:999px;background:var(--sunken);font-size:12px;color:var(--text-2)}.toast{position:fixed;right:20px;bottom:20px;background:var(--ink-2);color:var(--ink-text);padding:10px 14px;border-radius:var(--r-md);box-shadow:0 10px 30px #00000040;z-index:60;max-width:420px}.toast.err{background:#5e1020}.ex-card{display:flex;flex-direction:column;gap:8px}.ex-card .warn-list{font-size:12px;color:var(--warning-text);margin:0;padding-left:16px;line-height:17px}.dropzone{border:1.5px dashed var(--line-strong);border-radius:var(--r-md);padding:14px;background:var(--sunken)}
