@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--night:#0e1722;--night-mid:#141f2e;--night-light:#1c2d42;--night-border:#ffffff14;--gold:#e1cf9a;--gold-dim:#c9b97d;--gold-light:#f0e4bb;--gold-glow:#e1cf9a40;--text-primary:#ffffffeb;--text-secondary:#ffffff8c;--text-muted:#ffffff59;--green:#48bb78;--red:#fc8181;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--shadow-gold:0 4px 24px #e1cf9a33;--shadow-card:0 2px 16px #0006;--transition:all .18s ease}html,body{background:var(--night);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Inter,-apple-system,sans-serif}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:var(--night)}::-webkit-scrollbar-thumb{background:var(--gold-dim);border-radius:3px}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--night);border-right:1px solid var(--night-border);z-index:100;flex-direction:column;gap:0;width:240px;min-height:100vh;padding:28px 16px;display:flex;position:fixed;top:0;left:0}.sidebar-logo{justify-content:center;margin-bottom:32px;display:flex}.sidebar-logo img{filter:invert(85%)sepia(18%)saturate(450%)hue-rotate(5deg)brightness(1.05);width:120px;height:120px}.sidebar-section-label{letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px;padding:0 10px;font-size:9px;font-weight:700}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.nav-item{border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);color:var(--text-secondary);border-left:2px solid #0000;align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;font-weight:400;text-decoration:none;display:flex}.nav-item:hover{background:var(--night-light);color:var(--text-primary)}.nav-item.active{background:var(--night-light);border-left-color:var(--gold);color:var(--gold);font-weight:600}.nav-item .nav-icon{font-size:14px}.sidebar-footer{justify-content:center;margin-top:auto;padding-top:16px;display:flex}.badge-poc{letter-spacing:.12em;text-transform:uppercase;background:var(--gold);color:var(--night);border-radius:100px;padding:3px 12px;font-size:9px;font-weight:700}.main-content{flex-direction:column;flex:1;min-height:100vh;margin-left:240px;display:flex}.topbar{border-bottom:1px solid var(--night-border);background:var(--night);z-index:50;justify-content:space-between;align-items:center;gap:24px;height:80px;padding:0 40px;display:flex;position:sticky;top:0}.topbar-logo{flex-shrink:0;align-items:center;height:100%;display:flex}.topbar-logo img{width:auto;height:44px;display:block}.topbar-right{align-items:center;gap:12px;display:flex}.status-dot{background:var(--green);width:8px;height:8px;box-shadow:0 0 8px var(--green);border-radius:50%;animation:2s ease-in-out infinite pulse-green}@keyframes pulse-green{0%,to{opacity:1}50%{opacity:.5}}.status-text{color:var(--text-muted);font-size:11px}.badge-beta{letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--gold);color:var(--gold);border-radius:100px;padding:2px 10px;font-size:9px;font-weight:700}.topbar-user{background:var(--night-light);border:1px solid var(--night-border);border-radius:100px;align-items:center;gap:8px;margin-left:4px;padding:4px 6px 4px 12px;display:flex}.topbar-username{color:var(--gold);text-transform:capitalize;font-size:12px;font-weight:600}.topbar-logout{cursor:pointer;width:26px;height:26px;color:var(--red);transition:var(--transition);background:#fc81811a;border:1px solid #fc818133;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:14px;display:flex}.topbar-logout:hover{background:#fc818140;transform:scale(1.1)}.page-main{padding:28px 32px}.page-grid{grid-template-columns:1fr 380px;align-items:start;gap:24px;display:grid}.card{background:var(--night-mid);border:1px solid var(--night-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px}.card-title{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:16px;font-size:10px;font-weight:700}.form-grid-2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-grid-3{grid-template-columns:1fr 1fr 1fr;gap:14px;display:grid}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);letter-spacing:.02em;font-size:11px;font-weight:500}.form-input,.form-select{background:var(--night-light);border:1px solid var(--night-border);border-radius:var(--radius-sm);color:var(--text-primary);transition:var(--transition);outline:none;width:100%;padding:8px 12px;font-family:inherit;font-size:13.5px}.form-input:hover,.form-select:hover{border-color:var(--gold-dim)}.form-input:focus,.form-select:focus{border-color:var(--gold);box-shadow:0 0 0 2px #e1cf9a26}.form-select option{background:var(--night-mid)}.check-group{flex-wrap:wrap;gap:10px;display:flex}.check-label{cursor:pointer;color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;transition:color .15s;display:flex}.check-label:hover{color:var(--text-primary)}.check-label input[type=checkbox]{width:15px;height:15px;accent-color:var(--gold);cursor:pointer;border-radius:3px}.btn-primary{background:var(--gold);width:100%;color:var(--night);letter-spacing:.06em;text-transform:uppercase;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);border:none;justify-content:center;align-items:center;gap:8px;padding:14px 24px;font-family:inherit;font-size:14px;font-weight:700;display:flex}.btn-primary:hover:not(:disabled){background:var(--gold-light);box-shadow:var(--shadow-gold);transform:translateY(-2px)}.btn-primary:active:not(:disabled){background:var(--gold-dim);transform:none}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.spinner{border:2px solid #0e17224d;border-top-color:var(--night);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.kpi-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.kpi-card{background:var(--night-mid);border:1px solid var(--night-border);border-radius:var(--radius-lg);padding:16px}.kpi-card.accent{background:var(--gold);border-color:var(--gold)}.kpi-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-size:9px;font-weight:700}.kpi-card.accent .kpi-label{color:#0e1722a6}.kpi-value{color:var(--text-primary);margin:4px 0 2px;font-size:22px;font-weight:700;line-height:1}.kpi-card.accent .kpi-value{color:var(--night)}.kpi-help{color:var(--text-muted);font-size:10px}.kpi-card.accent .kpi-help{color:#0e17228c}.prod-row{border-bottom:1px solid var(--night-border);justify-content:space-between;align-items:center;padding:9px 0;display:flex}.prod-row:last-child{border-bottom:none}.prod-key{color:var(--text-secondary);font-size:13px}.prod-val{color:var(--text-primary);font-size:13px;font-weight:600}.skeleton{background:linear-gradient(90deg, var(--night-mid) 25%, var(--night-light) 50%, var(--night-mid) 75%);border-radius:var(--radius-lg);background-size:200% 100%;height:80px;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.empty-state{background:var(--night-mid);border-radius:var(--radius-lg);text-align:center;border:1px dashed #ffffff26;flex-direction:column;align-items:center;gap:16px;padding:56px 32px;display:flex}.empty-logo{opacity:.5;filter:invert(85%)sepia(18%)saturate(450%)hue-rotate(5deg)brightness(1.05);width:56px;height:56px}.empty-text{color:var(--text-muted);max-width:220px;font-size:13px;line-height:1.7}.empty-text span{color:var(--gold);font-weight:600}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:20px;display:flex}.page-title{font-size:20px;font-weight:700;line-height:1.2}.page-subtitle{color:var(--text-muted);margin-top:4px;font-size:13px}.badge-engine{letter-spacing:.12em;text-transform:uppercase;background:var(--gold);color:var(--night);white-space:nowrap;border-radius:100px;padding:4px 12px;font-size:10px;font-weight:700}.vstack{flex-direction:column;display:flex}.gap-4{gap:16px}.gap-5{gap:20px}.gap-6{gap:24px}.results-panel{position:sticky;top:90px}.recharts-tooltip-wrapper .recharts-default-tooltip{background:var(--night-mid)!important;border:1px solid var(--night-border)!important;border-radius:var(--radius-md)!important;font-size:12px!important}.app-footer{text-align:center;color:#ffffff47;letter-spacing:.03em;background:#070d14;border-top:1px solid #ffffff0d;flex-shrink:0;width:100%;padding:12px 24px;font-size:11px}.app-footer strong{color:#ffffff61;font-weight:600}.login-page{background:var(--night);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.login-glow{filter:blur(80px);pointer-events:none;z-index:0;border-radius:50%;position:absolute}.login-glow-1{background:#e1cf9a12;width:500px;height:500px;animation:8s ease-in-out infinite alternate glow-drift;top:-120px;left:-100px}.login-glow-2{background:#e1cf9a0a;width:400px;height:400px;animation:10s ease-in-out infinite alternate-reverse glow-drift;bottom:-80px;right:-60px}@keyframes glow-drift{0%{transform:translate(0)}to{transform:translate(30px,20px)}}.login-card{z-index:1;background:var(--night-mid);border:1px solid var(--night-border);border-radius:var(--radius-xl);width:100%;max-width:420px;padding:48px 40px 36px;animation:.5s cubic-bezier(.16,1,.3,1) both card-in;position:relative;box-shadow:0 24px 60px #00000080,0 0 0 1px #e1cf9a0f}@keyframes card-in{0%{opacity:0;transform:translateY(24px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.login-logo-wrap{justify-content:center;margin-bottom:28px;display:flex}.login-logo{border-radius:var(--radius-lg);width:200px;height:auto;overflow:hidden}.login-header{text-align:center;margin-bottom:28px}.login-title{color:var(--text-primary);letter-spacing:-.01em;font-size:22px;font-weight:700}.login-subtitle{color:var(--text-muted);margin-top:6px;font-size:13px;line-height:1.5}.login-form{flex-direction:column;gap:16px;display:flex}.login-input{border-radius:var(--radius-md);padding:11px 14px;font-size:14px}.login-pw-wrap{position:relative}.login-pw-wrap .login-input{padding-right:46px}.login-pw-toggle{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:4px;font-size:16px;line-height:1;transition:color .15s;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.login-pw-toggle:hover{color:var(--gold)}.login-error{border-radius:var(--radius-md);color:var(--red);background:#fc81811a;border:1px solid #fc818159;align-items:center;gap:8px;padding:10px 14px;font-size:13px;animation:.35s shake;display:flex}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.login-btn{letter-spacing:.03em;text-transform:none;border-radius:var(--radius-md);margin-top:4px;padding:13px 24px;font-size:15px}.login-hint{text-align:center;color:var(--text-muted);letter-spacing:.01em;margin-top:20px;font-size:11px}.login-divider:before,.login-divider:after{content:"";background:var(--night-border);flex:1;height:1px}.article-tabs-container{border-bottom:1px solid var(--night-border);align-items:center;gap:8px;margin-bottom:16px;padding:4px 0 12px;display:flex;overflow-x:auto}.article-tabs-container::-webkit-scrollbar{height:4px}.article-tabs-container::-webkit-scrollbar-thumb{background:var(--night-light);border-radius:2px}.article-tab{background:var(--night-light);border:1px solid var(--night-border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:var(--transition);align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:500;display:flex}.article-tab:hover{border-color:var(--gold-dim);color:var(--text-primary)}.article-tab.active{border-color:var(--gold);color:var(--gold);background:#e1cf9a14;box-shadow:0 0 12px #e1cf9a0a}.article-tab-remove{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:2px;font-size:12px;display:flex}.article-tab-remove:hover{color:var(--red);background:#fc818126}.add-article-btn{border-radius:var(--radius-md);background:var(--night-light);border:1px dashed var(--gold-dim);width:34px;height:34px;color:var(--gold);cursor:pointer;transition:var(--transition);flex-shrink:0;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex}.add-article-btn:hover{border-color:var(--gold);background:#e1cf9a1a;transform:scale(1.05)}.cad-dropzone{border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition);text-align:center;background:#0e172266;border:2px dashed #e1cf9a40;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:relative;overflow:hidden}.cad-dropzone:hover{border-color:var(--gold);background:#e1cf9a08;box-shadow:inset 0 0 20px #e1cf9a05}.cad-icon{color:var(--gold-dim);transition:var(--transition);margin-bottom:12px;font-size:32px}.cad-dropzone:hover .cad-icon{color:var(--gold);transform:translateY(-2px)}.cad-filename{color:var(--green);background:#48bb7814;border:1px solid #48bb7833;border-radius:100px;margin-top:8px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.param-categories{grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:16px;display:grid}.param-cat-tab{background:var(--night-light);border:1px solid var(--night-border);border-radius:var(--radius-md);color:var(--text-secondary);letter-spacing:.05em;text-transform:uppercase;text-align:center;cursor:pointer;transition:var(--transition);padding:10px;font-size:11px;font-weight:600}.param-cat-tab:hover{border-color:var(--gold-dim);color:var(--text-primary)}.param-cat-tab.active{background:var(--gold);border-color:var(--gold);color:var(--night)}.grid-param{grid-template-columns:1fr 1fr;gap:14px;display:grid}.param-slider-group{border-radius:var(--radius-md);background:#ffffff05;border:1px solid #ffffff05;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.param-slider-group:hover{background:#ffffff08;border-color:#e1cf9a0d}.slider-label-row{justify-content:space-between;align-items:center;display:flex}.slider-label{color:var(--text-secondary);font-size:11px;font-weight:500}.slider-value{color:var(--gold);background:#e1cf9a14;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:700}.slider-value.missing{color:var(--text-muted);background:#ffffff0d}.slider-input{-webkit-appearance:none;background:var(--night-light);border-radius:2px;outline:none;width:100%;height:4px}.slider-input::-webkit-slider-thumb{appearance:none;background:var(--gold);cursor:pointer;width:12px;height:12px;transition:var(--transition);border-radius:50%}.slider-input::-webkit-slider-thumb:hover{box-shadow:0 0 8px var(--gold-glow);transform:scale(1.2)}.rag-panel{border-radius:var(--radius-lg);background:#e1cf9a05;border:1px solid #e1cf9a1a;margin-top:16px;padding:16px}.rag-title{color:var(--gold);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:8px;margin-bottom:12px;font-size:11px;font-weight:700;display:flex}.rag-icon{font-size:16px}.rag-alert-box{border-left:3px solid var(--gold);border-radius:0 var(--radius-md) var(--radius-md) 0;background:#0e172299;padding:12px}.rag-text{color:var(--text-primary);font-size:12.5px;line-height:1.5}.rag-toggle-btn{border:1px solid var(--gold-dim);color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);text-transform:uppercase;letter-spacing:.05em;background:0 0;margin-top:10px;padding:6px 12px;font-size:11px;font-weight:600}.rag-toggle-btn:hover{background:var(--gold);color:var(--night);border-color:var(--gold)}.gauge-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;display:grid}.gauge-card{background:var(--night-mid);border:1px solid var(--night-border);border-radius:var(--radius-lg);text-align:center;flex-direction:column;align-items:center;padding:16px;display:flex}.gauge-title{letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:12px;font-size:9px;font-weight:700}.gauge-svg-container{width:90px;height:90px;margin-bottom:8px;position:relative}.gauge-value-text{color:var(--text-primary);font-size:18px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gauge-value-text.low{color:var(--red)}.gauge-value-text.med{color:#ffb03b}.gauge-value-text.high{color:var(--green)}.gauge-description{color:var(--text-muted);font-size:11px;line-height:1.4}.transizione-card{border-radius:var(--radius-lg);background:linear-gradient(135deg,#48bb7808 0%,#0e172299 100%);border:1px solid #48bb7826;padding:16px}.transizione-title{color:var(--green);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:8px;margin-bottom:12px;font-size:11px;font-weight:700;display:flex}.transizione-icon{font-size:16px}.transizione-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.transizione-item{flex-direction:column;gap:4px;display:flex}.transizione-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:10px}.transizione-value{color:var(--text-primary);font-size:15px;font-weight:700}.lot-pricing-comparison{margin-top:16px}.lot-pricing-title{color:var(--gold);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;font-size:11px;font-weight:700}.lot-pricing-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.lot-price-box{background:var(--night-light);border:1px solid var(--night-border);border-radius:var(--radius-md);text-align:center;transition:var(--transition);cursor:pointer;padding:10px}.lot-price-box:hover{background:#ffffff03;border-color:#e1cf9a33}.lot-price-box.selected{border-color:var(--gold);background:#e1cf9a0a}.lot-size-label{color:var(--text-muted);text-transform:uppercase;font-size:10px}.lot-price-val{color:var(--text-primary);margin-top:4px;font-size:14px;font-weight:700}.lot-price-unit{color:var(--text-muted);margin-top:2px;font-size:9px}.btn-secondary{border:1px solid var(--night-border);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);background:#ffffff08;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;display:flex}.btn-secondary:hover{color:var(--text-primary);background:#ffffff0f;border-color:#ffffff26}.btn-secondary:active{background:#ffffff05}
