.error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px 24px;text-align:center;font-family:var(--font-family, Arial, sans-serif)}.error-boundary__icon{font-size:2.5rem;line-height:1}.error-boundary__title{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text-primary, #1f2937)}.error-boundary__message{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280);max-width:480px;line-height:1.5}.error-boundary__actions{display:flex;gap:10px;margin-top:4px}.error-boundary__btn{padding:8px 18px;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;border:none;transition:opacity .15s}.error-boundary__btn:hover{opacity:.85}.error-boundary__btn--primary{background:var(--color-primary, #2196F3);color:#fff}.error-boundary__btn--secondary{background:var(--color-bg-secondary, #f3f4f6);color:var(--color-text-primary, #1f2937);border:1px solid var(--color-border, #e5e7eb)}.error-boundary--canvas{height:100%;min-height:300px;background:var(--color-bg-secondary, #f9fafb);border:2px dashed var(--color-border, #e5e7eb);border-radius:12px}.error-boundary--modal{padding:24px 16px;background:var(--color-bg-secondary, #f9fafb);border-radius:8px;border:1px solid var(--color-border, #e5e7eb)}.error-boundary--app{min-height:100vh;background:#f9fafb}.error-boundary__card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:40px 48px;max-width:520px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 4px 24px #00000014}.error-boundary__detail{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:6px;padding:10px 14px;font-size:.8rem;color:#6b7280;max-width:100%;overflow-x:auto;text-align:left;white-space:pre-wrap;word-break:break-word}.toast-container{position:fixed;top:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:stretch;gap:10px;z-index:var(--z-toast, 20000);pointer-events:none;width:min(720px,calc(100vw - 48px))}@keyframes toastSlideDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.toast{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:toastSlideDown .22s ease;pointer-events:all;font-family:Arial,sans-serif;font-size:var(--font-size-md, 14px);line-height:1.45}.toast--success{background:var(--color-success-light);border-left:4px solid var(--color-success);color:#065f46}.toast--error{background:var(--color-danger-light);border-left:4px solid var(--color-danger);color:#7f1d1d}.toast--warning{background:var(--color-warning-light);border-left:4px solid var(--color-warning);color:#78350f}.toast--info{background:var(--color-primary-light);border-left:4px solid var(--color-primary);color:#1e3a5f}.toast__icon{font-size:16px;flex-shrink:0;margin-top:1px}.toast__message{flex:1;word-break:break-word}.toast__close{background:none;border:none;cursor:pointer;font-size:18px;line-height:1;padding:0;color:currentColor;opacity:.6;flex-shrink:0;margin-top:-1px}.toast__close:hover{opacity:1}.lp{--lp-bg: #07090F;--lp-surface: #0C0F18;--lp-border: rgba(255,255,255,.06);--lp-border-hi:rgba(255,255,255,.11);--lp-text: #DDE4F2;--lp-text-sub: #7D8BA8;--lp-text-dim: #3F4D68;--lp-blue: #4B8BFF;--lp-blue-mid: #2563EB;--lp-blue-dim: rgba(75,139,255,.1);--lp-estrai: #34C17A;--lp-manipola: #9B6DFF;--lp-arricch: #F5A623;--lp-err: #F87171;--lp-font-d: "Syne", "Trebuchet MS", "Arial Black", sans-serif;--lp-font-b: "Inter", "Segoe UI", "Helvetica Neue", sans-serif;--lp-font-m: "DM Mono", "Consolas", "Courier New", monospace}[data-theme=light] .lp{--lp-bg: #EFF2F9;--lp-surface: #FFFFFF;--lp-border: rgba(0,0,0,.07);--lp-border-hi:rgba(0,0,0,.13);--lp-text: #0B1120;--lp-text-sub: #4A5678;--lp-text-dim: #96A3BE;--lp-blue: #2563EB;--lp-blue-mid: #1D4ED8;--lp-blue-dim: rgba(37,99,235,.1);--lp-err: #DC2626}.lp{width:100vw;height:100vh;display:flex;overflow:hidden;position:relative;background:var(--lp-bg);color:var(--lp-text);font-family:var(--lp-font-b);font-size:13px}.lp__hex-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:20;pointer-events:none}.lp__brand{width:52%;flex-shrink:0;background:var(--lp-surface);position:relative;display:flex;align-items:stretch;overflow:visible}.lp__brand:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 40% at 30% 35%,rgba(75,139,255,.07) 0%,transparent 70%),radial-gradient(ellipse 50% 35% at 70% 70%,rgba(52,193,122,.05) 0%,transparent 70%);pointer-events:none;z-index:0}[data-theme=light] .lp__brand:before{background:radial-gradient(ellipse 60% 40% at 30% 35%,rgba(37,99,235,.06) 0%,transparent 70%),radial-gradient(ellipse 50% 35% at 70% 70%,rgba(22,163,74,.04) 0%,transparent 70%)}.lp__brand-inner{position:relative;z-index:30;padding:52px 56px;display:flex;flex-direction:column;justify-content:space-between;width:100%}.lp__logo{display:flex;align-items:center}.lp__headline{margin:auto 0;padding:48px 0 36px}.lp__title{font-family:var(--lp-font-d);font-size:42px;font-weight:800;letter-spacing:-.03em;line-height:1.08;color:var(--lp-text);margin-bottom:16px}.lp__desc{font-family:var(--lp-font-b);font-size:16px;font-weight:300;color:var(--lp-text-sub);letter-spacing:.01em;line-height:1.6}.lp__modules{display:flex;flex-direction:column;gap:12px;margin-bottom:40px}.lp__module{display:flex;align-items:flex-start;gap:14px;padding:12px 16px;background:#0c0f18b8;border:1px solid var(--lp-border-hi);border-radius:10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .18s;cursor:default}[data-theme=light] .lp__module{background:#ffffffd9;border-color:#00000017}.lp__module:hover{transform:translate(3px)}.lp__module-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:5px}.lp__module-dot--estrai{background:var(--lp-estrai);box-shadow:0 0 8px var(--lp-estrai)}.lp__module-dot--manipola{background:var(--lp-manipola);box-shadow:0 0 8px var(--lp-manipola)}.lp__module-dot--arricchisci{background:var(--lp-arricch);box-shadow:0 0 8px var(--lp-arricch)}.lp__module-label{font-family:var(--lp-font-d);font-size:13px;font-weight:700;color:var(--lp-text);margin-bottom:2px}.lp__module-desc{font-family:var(--lp-font-b);font-size:11.5px;color:var(--lp-text-dim);line-height:1.4}.lp__brand-footer{display:flex;align-items:center}.lp__brand-badge{font-family:var(--lp-font-m);font-size:10px;color:var(--lp-text-dim);letter-spacing:.08em;text-transform:uppercase}.lp__form-side{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 48px;background:transparent;position:relative;z-index:25}.lp__form-wrap{width:100%;max-width:360px;position:relative;z-index:31}.lp__form-header{margin-bottom:36px}.lp__form-title{font-family:var(--lp-font-d);font-size:26px;font-weight:700;letter-spacing:-.025em;color:var(--lp-text);margin-bottom:6px}.lp__form-sub{font-family:var(--lp-font-b);font-size:13px;color:var(--lp-text-dim)}.lp__form{display:flex;flex-direction:column;gap:20px}.lp__field{display:flex;flex-direction:column;gap:7px}.lp__label{font-family:var(--lp-font-m);font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--lp-text-sub)}.lp__input{width:100%;padding:11px 14px;background:var(--lp-surface);border:1px solid var(--lp-border-hi);border-radius:9px;font-family:var(--lp-font-b);font-size:13.5px;color:var(--lp-text);outline:none;transition:border-color .15s,box-shadow .15s}.lp__input::placeholder{color:var(--lp-text-dim)}.lp__input:focus{border-color:var(--lp-blue);box-shadow:0 0 0 3px var(--lp-blue-dim)}.lp__input:disabled{opacity:.5;cursor:not-allowed}.lp__input-wrap{position:relative}.lp__input--pw{padding-right:42px}.lp__pw-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:14px;color:var(--lp-text-dim);padding:3px;line-height:1}.lp__error{display:flex;align-items:center;gap:8px;padding:11px 14px;background:#f8717114;border:1px solid rgba(248,113,113,.22);border-radius:9px;font-family:var(--lp-font-b);font-size:12.5px;color:var(--lp-err)}.lp__btn{display:flex;align-items:center;justify-content:center;width:100%;padding:13px 20px;background:var(--lp-blue);color:#fff;border:none;border-radius:9px;font-family:var(--lp-font-b);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,transform .1s;margin-top:4px}.lp__btn:hover:not(:disabled){background:var(--lp-blue-mid);transform:translateY(-1px)}.lp__btn:disabled{opacity:.6;cursor:not-allowed}.lp__form-footer{position:absolute;bottom:24px;z-index:31;font-family:var(--lp-font-m);font-size:10.5px;color:var(--lp-text-dim);letter-spacing:.05em;text-align:center}.lp__theme-toggle{position:fixed;top:16px;right:16px;z-index:100;background:var(--lp-surface);border:1px solid var(--lp-border-hi);border-radius:20px;padding:6px 14px;font-size:13px;color:var(--lp-text-sub);cursor:pointer;font-family:var(--lp-font-m);transition:background .15s,border-color .15s}.lp__theme-toggle:hover{border-color:var(--lp-blue);color:var(--lp-text)}:root,[data-theme=dark]{--plen-bg: #07090F;--plen-surface: #0C0F18;--plen-surface-2: #111525;--plen-surface-3: #171C2E;--plen-border: rgba(255, 255, 255, .06);--plen-border-hi: rgba(255, 255, 255, .11);--plen-text: #DDE4F2;--plen-text-sub: #7D8BA8;--plen-text-dim: #5A6B8A;--plen-estrai: #34C17A;--plen-manipola: #9B6DFF;--plen-arricchisci: #F5A623;--plen-blue: #4B8BFF;--plen-blue-mid: #2563EB;--plen-ok: #34D399;--plen-warn: #FBBF24;--plen-err: #F87171;--plen-topbar: 52px;--plen-sidebar: 260px;--plen-font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--plen-font-display: "Syne", sans-serif;--plen-font-body: "Inter", sans-serif;--plen-font-mono: "DM Mono", monospace;--plen-focus-ring: #4B8BFF;--plen-focus-ring-width: 2px;--plen-focus-ring-offset: 2px}[data-theme=light]{--plen-bg: #EFF2F9;--plen-surface: #FFFFFF;--plen-surface-2: #E8EDF8;--plen-surface-3: #DDE4F2;--plen-border: rgba(0, 0, 0, .07);--plen-border-hi: rgba(0, 0, 0, .11);--plen-text: #0F1729;--plen-text-sub: #4A5568;--plen-text-dim: #5F6E8C;--plen-estrai: #2AAD69;--plen-manipola: #7C3AED;--plen-arricchisci: #D97706;--plen-blue: #2563EB;--plen-blue-mid: #1D4ED8;--plen-ok: #059669;--plen-warn: #D97706;--plen-err: #DC2626;--plen-focus-ring: #1D4ED8}html{background-color:var(--plen-bg, #07090F)}body{background-color:var(--plen-bg, #07090F);color:var(--plen-text, #DDE4F2);font-family:var(--plen-font-body);margin:0}:root{--color-primary: #3b82f6;--color-primary-dark: #2563eb;--color-primary-light: #dbeafe;--color-primary-50: #eff6ff;--color-primary-700: #1d4ed8;--color-accent: #009688;--color-success: #10b981;--color-success-dark: #059669;--color-success-light: #d1fae5;--color-warning: #f59e0b;--color-warning-dark: #d97706;--color-warning-light: #fef3c7;--color-danger: #ef4444;--color-danger-dark: #dc2626;--color-danger-light: #fee2e2;--color-info: #3b82f6;--color-info-dark: #2563eb;--color-info-light: #dbeafe;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-150: #eef0f2;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-350: #b0b8c1;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-bg-primary: #ffffff;--color-bg-secondary: #f9fafb;--color-bg-tertiary: #f3f4f6;--color-bg-hover: #e5e7eb;--color-text-primary: #1f2937;--color-text-secondary: #4b5563;--color-text-disabled: #9ca3af;--color-text-tertiary: #9ca3af;--color-text-muted: #6b7280;--color-border: #e5e7eb;--color-border-light: #f3f4f6;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-full: 9999px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--transition-fast: .1s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--z-sidebar: 200;--z-dropdown: 800;--z-modal: 1000;--z-modal-backdrop: 1000;--z-modal-priority: 10000;--z-toast: 20000;--color-estrai: #2196F3;--color-manipola: #9C27B0;--color-manipola-dark: #5B21B6;--color-geo: #00897B;--color-geo-light: #E0F2F1;--color-geo-dark: #00695C;--color-arricchisci: #009688;--color-node-source: #4CAF50;--color-node-transform: #9C27B0;--color-node-result: #FF9800;--color-node-api: #00BCD4;--color-node-file: #607D8B;--color-node-static: #795548;--color-edge-spatial: #E91E63;--sidebar-width: 280px;--sidebar-collapsed-width: 60px;--sidebar-bg: #f8fafc;--header-height: 60px;--color-danger-light: #ffebee;--color-danger-bg: #fef2f2;--color-danger-border: #ffcdd2;--color-error-light: #ffcdd2;--color-danger-dark: #c62828;--color-success-bg: #e8f5e9;--color-success-border: #c8e6c9;--color-primary-100: #bbdefb;--color-primary-200: #90caf9;--color-primary-600: #1976d2;--color-primary-700: #1565c0;--color-gray-50: #f8f9fa;--color-gray-150: #f0f0f0;--color-gray-250: #e8e8e8;--color-slate-200: #e2e8f0;--color-slate-400: #94a3b8;--color-slate-500: #64748b;--color-warning-dark: #f57c00;--color-warning-bg: #fff8e1;--color-indigo-500: #3F51B5;--color-indigo: #6366f1;--color-indigo-dark: #5e35b1;--color-indigo-bg: #f3e8ff;--color-feature-layer: #e67e22;--color-feature-layer-dark: #f39c12;--btn-secondary-bg: white;--btn-secondary-text: var(--color-text-primary);--btn-secondary-border: var(--color-border);--btn-danger-bg: var(--color-danger);--btn-danger-text: white;--btn-success-bg: var(--color-success);--btn-success-text: white;--btn-cancel-bg: transparent;--btn-cancel-text: var(--color-text-tertiary);--gradient-header-estrai: linear-gradient(135deg, #e3f2fd 0%, var(--color-bg-secondary) 100%);--gradient-header-manipola: linear-gradient(135deg, #f3e5f5 0%, var(--color-bg-secondary) 100%);--gradient-header-arricchisci: linear-gradient(135deg, #fff3e0 0%, var(--color-bg-secondary) 100%);--gradient-header-carica: linear-gradient(135deg, #ede9fe 0%, var(--color-bg-secondary) 100%);--gradient-header-datasource: linear-gradient(135deg, #dcfce7 0%, var(--color-bg-secondary) 100%);--gradient-header-geo: linear-gradient(135deg, #ccfbf1 0%, var(--color-bg-secondary) 100%);--gradient-header-file: linear-gradient(135deg, #e2e8f0 0%, var(--color-bg-secondary) 100%);--gradient-header-indigo: linear-gradient(135deg, #e0e7ff 0%, var(--color-bg-secondary) 100%);--color-type-bool: #7B1FA2;--color-type-bool-light: #F3E5F5;--color-type-int: var(--color-success-dark);--color-type-int-light: var(--color-success-light);--color-type-str: #9E9E9E;--color-type-str-light: #F5F5F5;--color-type-date: #E65100;--color-type-date-light: #FFF3E0;--color-type-geometry: var(--color-geo);--color-type-geometry-light: var(--color-geo-light);--color-type-real: var(--color-node-result);--color-format-csv: var(--color-success);--color-format-json: var(--color-node-result);--color-format-shp: #673AB7;--color-format-gpkg: var(--color-manipola);--color-format-geojson: var(--color-geo);--color-format-xlsx: var(--color-primary);--color-type-num: var(--color-success);--color-type-num-light: var(--color-success-light);--color-type-geo: var(--color-geo);--color-type-geo-light: var(--color-geo-light);--color-type-bool-bg: var(--color-type-bool-light);--color-type-str-bg: var(--color-type-str-light);--color-type-date-bg: var(--color-type-date-light);--color-type-geo-bg: var(--color-type-geometry-light);--color-type-num-bg: var(--color-type-int-light);--color-primary-lighter: rgba(59, 130, 246, .15);--color-primary-lightest: rgba(59, 130, 246, .07);--shadow-sm: 0 2px 8px rgba(0,0,0,.08);--shadow-lg: 0 8px 32px rgba(0,0,0,.12);--radius-xl: 12px;--color-arricchisci: #FF6B35;--color-arricchisci-dark: #E65100;--color-arricchisci-light: #FFF3E0;--color-arricchisci-secondary: #F7931E;--color-datasource: #2E7D32;--color-datasource-dark: #1B5E20;--color-datasource-accent: #43A047;--color-datasource-light: rgba(46, 125, 50, .1);--color-carica: #7c3aed;--color-edge-carica: #7c3aed}:root{--color-bg-primary: var(--plen-surface);--color-bg-secondary: var(--plen-surface-2);--color-bg-tertiary: var(--plen-surface-3);--color-bg-hover: var(--plen-surface-2);--color-border: var(--plen-border);--color-border-light: var(--plen-border-hi);--color-text-primary: var(--plen-text);--color-text-secondary: var(--plen-text-sub);--color-text-tertiary: var(--plen-text-dim);--color-text-muted: var(--plen-text-sub);--color-text-disabled: var(--plen-text-dim);--btn-secondary-bg: var(--plen-surface);--btn-secondary-text: var(--plen-text);--btn-secondary-border: var(--plen-border);--color-primary: var(--plen-blue);--color-primary-dark: var(--plen-blue-mid);--color-primary-600: var(--plen-blue-mid);--color-primary-700: var(--plen-blue-mid);--sidebar-bg: var(--plen-surface)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes previewModalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes skeletonShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes dotPulse{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}@keyframes pulse-live{0%,to{opacity:1}50%{opacity:.6}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-backdrop, 1000)}.modal{background:var(--color-bg-primary);border-radius:8px;padding:24px;min-width:400px;max-width:600px;box-shadow:0 20px 60px #0000004d}.estrai-toolbar,.manipola-toolbar,.arricchisci-toolbar{height:var(--header-height);padding:0 20px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;border-bottom:1px solid var(--color-border)}.estrai-toolbar__left,.manipola-toolbar__left{display:flex;gap:10px;align-items:center}.estrai-toolbar__center,.manipola-toolbar__center,.arricchisci-toolbar__center{display:flex;align-items:center;gap:12px}.estrai-toolbar__right,.manipola-toolbar__right,.arricchisci-toolbar__right{display:flex;align-items:center;gap:10px}.arricchisci-toolbar__actions{display:flex;gap:8px;align-items:center}.estrai-toolbar__title,.manipola-toolbar__title{margin:0;font-size:18px;font-weight:600;color:var(--color-text-primary)}.arricchisci-toolbar__title{margin:0;font-size:18px;font-weight:600;color:#fff;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.estrai-toolbar__btn,.manipola-toolbar__btn,.arricchisci-toolbar__btn{padding:8px 16px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:6px;white-space:nowrap}.arricchisci-toolbar__divider{width:1px;height:30px;background:#ffffff4d;margin:0 8px}.estrai-toolbar__stats{margin-right:16px;color:var(--color-text-muted);font-size:14px}@media(max-width:768px){.estrai-toolbar,.manipola-toolbar,.arricchisci-toolbar{padding:0 10px}.estrai-toolbar__title,.manipola-toolbar__title,.arricchisci-toolbar__title{font-size:14px}}.estrai-toolbar{--btn-primary-bg: var(--color-primary);--btn-primary-hover: var(--color-primary-dark)}.manipola-toolbar{--btn-primary-bg: var(--color-manipola);--btn-primary-hover: var(--color-manipola-dark)}.arricchisci-toolbar{--btn-primary-bg: var(--color-arricchisci);--btn-primary-hover: var(--color-arricchisci-dark)}.estrai-toolbar__user,.manipola-toolbar__user,.arricchisci-toolbar__user{font-size:13px;color:var(--color-text-secondary);padding:4px 10px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-full);white-space:nowrap}.estrai-toolbar__btn--logout,.manipola-toolbar__btn--logout,.arricchisci-toolbar__btn--logout{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);padding:6px 10px;font-size:16px}.estrai-toolbar__btn--logout:hover,.manipola-toolbar__btn--logout:hover,.arricchisci-toolbar__btn--logout:hover{background:var(--color-danger-light);color:var(--color-danger);border-color:var(--color-danger)}.btn-base,.btn-primary,.btn-secondary,.btn-danger,.btn-success,.btn-base:disabled,.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled,.btn-success:disabled,.estrai-editor,.estrai-toolbar,.modal-wrapper--estrai{--btn-primary-bg: var(--color-primary);--btn-primary-hover: var(--color-primary-dark)}.manipola-editor,.manipola-toolbar,.modal-wrapper--manipola{--btn-primary-bg: var(--color-manipola);--btn-primary-hover: var(--color-manipola-dark)}.arricchisci-editor,.arricchisci-toolbar,.modal-wrapper--arricchisci{--btn-primary-bg: var(--color-arricchisci);--btn-primary-hover: var(--color-arricchisci-dark)}.canvas-readonly{position:relative}.canvas-readonly:before{content:"👁  Modalità sola lettura — non puoi modificare il canvas";position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:10;padding:6px 14px;font-size:12px;font-weight:600;color:#ffd27a;background:#231a08eb;border:1px solid rgba(245,166,35,.45);border-radius:999px;pointer-events:none;letter-spacing:.3px}.canvas-readonly [class*=__delete-btn],.canvas-readonly [class*=__delete],.canvas-readonly [class*=__remove],.canvas-readonly [class*=-remove],.canvas-readonly [class*=--del],.canvas-readonly [class*=__node-del],.canvas-readonly .dsn__delete-btn{display:none!important}.canvas-readonly .react-flow__node input,.canvas-readonly .react-flow__node textarea,.canvas-readonly .react-flow__node select{pointer-events:none!important;opacity:.75;cursor:not-allowed}.canvas-readonly .react-flow__node input[type=checkbox]{pointer-events:none!important;cursor:not-allowed}.canvas-readonly .react-flow__node button[class*=add],.canvas-readonly .react-flow__node button[class*=edit],.canvas-readonly .react-flow__node button[class*=modify],.canvas-readonly .react-flow__node button[class*=calculated]{pointer-events:none!important;opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a[href]:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,[role=dialog]:focus-visible,[role=link]:focus-visible,[role=menuitem]:focus-visible,[role=tab]:focus-visible,summary:focus-visible{outline:var(--plen-focus-ring-width, 2px) solid var(--plen-focus-ring, #4B8BFF)!important;outline-offset:var(--plen-focus-ring-offset, 2px)!important}:focus:not(:focus-visible){outline:0}.plen-banner-warn{background:#fff4e5;border:1px solid #d97706;color:#92400e;border-radius:4px;padding:8px 10px;margin-bottom:8px}.plen-banner-warn--lg{border-radius:6px;padding:12px 14px;margin-bottom:16px}.plen-banner-warn__detail{font-size:.85em;margin-top:4px;opacity:.85;line-height:1.4}.plen-banner-warn__detail--md{font-size:.92em;opacity:1}:root{--imdf-modal-bg: var(--plen-surface, #0C0F18);--imdf-modal-surface: var(--plen-surface-2, #111525);--imdf-modal-inset: var(--plen-bg, #07090F);--imdf-modal-border: var(--plen-border, rgba(255,255,255,.08));--imdf-modal-accent: #7C3AED;--imdf-modal-accent2: var(--plen-manipola, #7c3aed);--imdf-modal-text: var(--plen-text, #DDE4F2);--imdf-modal-muted: var(--plen-text-sub, #7D8BA8);--imdf-modal-dim: var(--plen-text-dim, #3F4D68);--imdf-modal-danger: var(--plen-err, #F87171);--imdf-modal-warn: var(--plen-warn, #FBBF24);--imdf-modal-success: var(--plen-ok, #34D399);--imdf-modal-font: var(--plen-font-mono, "JetBrains Mono"), ui-monospace, Menlo, monospace}.imdf-modal__overlay{position:fixed;inset:0;background:#000000b8;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-priority, 10000);font-family:var(--imdf-modal-font)}.imdf-modal__panel{background:var(--imdf-modal-bg);color:var(--imdf-modal-text);border:1px solid var(--imdf-modal-border);border-radius:10px;box-shadow:0 24px 80px #000000b3;display:flex;flex-direction:column;overflow:hidden}.imdf-modal__panel--md{width:min(780px,94vw);max-height:90vh}.imdf-modal__panel--lg{width:min(900px,96vw);height:min(720px,90vh)}.imdf-modal__panel--xl{width:min(980px,96vw);height:min(780px,92vh)}.imdf-modal__panel--xxl{width:min(1100px,96vw);height:min(760px,90vh)}.imdf-modal__header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--imdf-modal-surface);border-bottom:1px solid var(--imdf-modal-border)}.imdf-modal__header--wide{padding:16px 22px}.imdf-modal__header-info{display:flex;align-items:center;gap:12px}.imdf-modal__header-info--gap-lg{gap:14px}.imdf-modal__title{margin:0;font-size:15px;font-weight:800;color:var(--imdf-modal-accent);letter-spacing:.3px}.imdf-modal__subtitle{font-size:9px;color:var(--imdf-modal-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.imdf-modal__close{background:none;border:none;color:var(--imdf-modal-muted);font-size:18px;cursor:pointer;padding:4px}.imdf-modal__body{overflow:auto;padding:20px}.imdf-modal__body--col{display:flex;flex-direction:column;gap:18px}.imdf-modal__body--flex{flex:1;overflow:auto}.imdf-modal__empty{padding:30px 20px;color:var(--imdf-modal-muted);font-size:12px;text-align:center}.imdf-modal__empty--lg{padding:40px 20px}.imdf-modal__filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--imdf-modal-border)}.imdf-modal__filters--gap-md{gap:10px}.imdf-modal__filters-spacer{flex:1}.imdf-modal__field{flex:1;background:var(--imdf-modal-surface);border:1px solid var(--imdf-modal-border);color:var(--imdf-modal-text);padding:6px 10px;border-radius:4px;font-size:11px;font-family:var(--imdf-modal-font)}.imdf-modal__select{background:var(--imdf-modal-surface);border:1px solid var(--imdf-modal-border);color:var(--imdf-modal-text);padding:6px 10px;border-radius:4px;font-size:11px;font-family:var(--imdf-modal-font)}.imdf-modal__section-title{font-size:9px;color:var(--imdf-modal-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--imdf-modal-border)}.imdf-modal__card{background:var(--imdf-modal-surface);border:1px solid var(--imdf-modal-border);border-left:3px solid var(--imdf-modal-accent2);border-radius:6px;padding:10px 12px;margin-bottom:8px}.imdf-modal__card-title{font-size:12px;font-weight:700;color:var(--imdf-modal-accent);margin-bottom:6px;letter-spacing:.3px}.imdf-modal__kv{display:flex;gap:12px;font-size:11px;padding:4px 0}.imdf-modal__kv-label{min-width:140px;color:var(--imdf-modal-muted)}.imdf-modal__kv-value{flex:1;color:var(--imdf-modal-text);word-break:break-word}.imdf-modal__kv-value--mono{font-family:var(--imdf-modal-font)}.imdf-modal__table{width:100%;border-collapse:collapse;font-size:11px}.imdf-modal__table-wrap{background:var(--imdf-modal-surface);border:1px solid var(--imdf-modal-border);border-radius:6px;overflow:hidden}.imdf-modal__thead-row{background:var(--imdf-modal-surface);position:sticky;top:0;z-index:1}.imdf-modal__thead-row--inset{background:var(--imdf-modal-inset);position:static}.imdf-modal__th{padding:10px 12px;font-weight:700;font-size:9px;color:var(--imdf-modal-muted);text-transform:uppercase;letter-spacing:1px;text-align:left;border-bottom:1px solid var(--imdf-modal-border)}.imdf-modal__td{padding:8px 12px;vertical-align:middle}.imdf-modal__td--top{vertical-align:top}.imdf-modal__td--pad-lg{padding:9px 12px}.imdf-modal__code{font-family:var(--imdf-modal-font);font-size:10px;background:var(--imdf-modal-surface);padding:2px 6px;border-radius:3px;border:1px solid var(--imdf-modal-border)}.imdf-modal__code--xs{font-size:9px;padding:1px 5px;color:var(--imdf-modal-muted)}.imdf-modal__pre{background:var(--imdf-modal-inset);border:1px solid var(--imdf-modal-border);padding:12px;border-radius:6px;font-size:10px;max-height:340px;overflow:auto;margin:0;color:var(--imdf-modal-muted)}.imdf-modal__toggle{align-self:flex-start;background:var(--imdf-modal-surface);border:1px solid var(--imdf-modal-border);color:var(--imdf-modal-text);padding:6px 12px;border-radius:5px;cursor:pointer;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;font-family:var(--imdf-modal-font)}.imdf-modal__footer{padding:12px 20px;border-top:1px solid var(--imdf-modal-border);background:var(--imdf-modal-surface);font-size:9px;color:var(--imdf-modal-muted);text-align:center}.imdf-modal__footer--actions{display:flex;gap:10px;padding:14px 20px;border-top:1px solid var(--imdf-modal-border);background:var(--imdf-modal-surface);justify-content:flex-end;text-align:initial}.imdf-modal__btn{padding:9px 18px;border-radius:5px;font-family:var(--imdf-modal-font);font-size:11px;font-weight:700;cursor:pointer;border:none;text-transform:uppercase;letter-spacing:.5px}.imdf-modal__btn--primary{background:var(--imdf-modal-accent);color:#000}.imdf-modal__btn--secondary{background:transparent;color:var(--imdf-modal-text);border:1px solid var(--imdf-modal-border)}.imdf-modal__btn--disabled{background:#64748b26;color:var(--imdf-modal-muted);cursor:not-allowed}.imdf-modal__loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--imdf-modal-muted);font-size:12px;flex-direction:column;gap:10px}.imdf-modal__spinner{width:28px;height:28px;border:2px solid var(--imdf-modal-border);border-top-color:var(--imdf-modal-accent);border-radius:50%;animation:imdf-modal-spin .8s linear infinite}@keyframes imdf-modal-spin{to{transform:rotate(360deg)}}.imdf-modal__error{color:var(--imdf-modal-danger);font-size:12px;background:#f8717114;border:1px solid rgba(248,113,113,.4);border-radius:6px;padding:12px 14px}.imdf-modal__error-title{font-weight:700;margin-bottom:4px}.imdf-modal__error-detail{font-family:var(--imdf-modal-font)}.imdf-modal__hint{font-size:9px;color:var(--imdf-modal-muted);margin-top:6px}.imdf-modal__body--col-lg{display:flex;flex-direction:column;gap:18px}.imdf-modal__summary-row{display:flex;gap:10px;flex-wrap:wrap}.imdf-modal__td--accent{color:var(--imdf-modal-accent);font-weight:700}.imdf-modal__td--text{color:var(--imdf-modal-text)}.imdf-modal__td--muted{color:var(--imdf-modal-muted)}.imdf-modal__td--mono{font-family:var(--imdf-modal-font);font-size:10px}.imdf-modal__expand-mark{color:var(--imdf-modal-muted);margin-right:4px}.imdf-modal__cell-ok{color:var(--imdf-modal-success);font-size:11px}.imdf-modal__expanded-cell{padding:10px 14px;background:var(--imdf-modal-inset);border-top:1px solid var(--imdf-modal-border)}.imdf-modal__nested-label{font-size:9px;color:var(--imdf-modal-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:5px}.imdf-modal__nested-block{margin-bottom:8px}.imdf-modal__nested-meta{font-size:9px;color:var(--imdf-modal-muted);margin-top:8px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--plen-font-body);background-color:var(--plen-bg, #07090F);color:var(--plen-text, #DDE4F2);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{width:100vw;min-height:100vh;overflow-x:hidden;overflow-y:auto}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:14px;font-weight:500;margin-bottom:6px;color:var(--color-text-primary)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:4px;font-size:14px}.form-group textarea{resize:vertical;min-height:80px}.loading{display:flex;align-items:center;justify-content:center;height:100%;font-size:16px;color:var(--color-text-muted)}.error{color:var(--color-danger);padding:20px;text-align:center}
