*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;background:#f5f5f5}.app{display:grid;grid-template-columns:1fr 1.2fr 300px 140px;gap:16px;padding:16px;max-width:1700px;margin:0 auto}.panel{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #0000001a}.panel h2{margin:0 0 12px;font-size:14px;font-weight:600;color:#333}.panel h3{margin:16px 0 8px;font-size:13px;font-weight:600;color:#555}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:6px 8px;text-align:left;border-bottom:1px solid #eee}th{background:#f9f9f9;font-weight:500;color:#666}input[type=number],input[type=text]{width:100%;padding:6px 8px;border:1px solid #ddd;border-radius:4px;font-size:13px}input[type=number]:focus,input[type=text]:focus{outline:none;border-color:#4caf50}.btn{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background .2s}.btn-primary{background:#4caf50;color:#fff}.btn-primary:hover{background:#43a047}.btn-secondary{background:#e0e0e0;color:#333}.btn-secondary:hover{background:#d0d0d0}.btn-danger{background:#f44336;color:#fff}.btn-danger:hover{background:#e53935}.btn-sm{padding:4px 8px;font-size:12px}.btn-icon{background:none;border:none;cursor:pointer;padding:4px;color:#999}.btn-icon:hover{color:#f44336}.left-column{display:flex;flex-direction:column;gap:16px}.control-points-table input[type=number]{width:70px}.control-points-table td{padding:4px 6px}.typical-radio{cursor:pointer}.binnings-table input[type=number]{width:60px}.binnings-table input[type=text]{width:100px}.dataset-list{margin:12px 0}.dataset-item{display:flex;align-items:center;padding:8px;border:1px solid #eee;border-radius:4px;margin-bottom:8px;cursor:pointer}.dataset-item:hover{background:#f9f9f9}.dataset-item.active{border-color:#4caf50;background:#e8f5e9}.dataset-item input[type=radio]{margin-right:8px}.dataset-item-name{flex:1}.dataset-actions{display:flex;gap:4px}.new-dataset-form{display:flex;gap:8px;margin-top:12px}.new-dataset-form input{flex:1}.results-column{display:flex;flex-direction:column;gap:16px}.equations{background:#f9f9f9;padding:12px;border-radius:4px;font-family:monospace}.equations p{margin:4px 0}.voltage-model-selector{display:flex;gap:16px;margin:12px 0}.voltage-model-selector label{display:flex;align-items:center;gap:6px;cursor:pointer}.charts-container{display:grid;grid-template-columns:1fr 1fr;gap:16px}.chart-wrapper{background:#fafafa;padding:12px;border-radius:4px}.chart-wrapper h4{margin:0 0 8px;font-size:12px;color:#666}.converter{display:grid;grid-template-columns:1fr 1fr;gap:16px}.converter-group{display:flex;flex-direction:column;gap:8px}.converter-group label{font-size:12px;color:#666}.converter-group input{width:100%}.converter-result{padding:8px;background:#f0f0f0;border-radius:4px;font-weight:500}.module-results-table{margin-top:8px}.module-results-table th{background:#4caf50;color:#fff;font-size:11px;padding:8px 4px;text-align:center}.module-results-table td{text-align:center;padding:8px 4px;font-size:12px}.right-column .panel{position:sticky;top:16px}.module-params-form{display:flex;flex-direction:column;gap:12px}.form-group{display:flex;flex-direction:column;gap:4px}.form-group label{font-size:12px;color:#666}.form-group select{padding:8px;border:1px solid #ddd;border-radius:4px;font-size:13px}.binning-select-item{display:flex;align-items:center;padding:8px;border:1px solid #eee;border-radius:4px;margin-bottom:4px;cursor:pointer}.binning-select-item:hover{background:#f9f9f9}.binning-select-item.selected{border-color:#4caf50;background:#e8f5e9}.empty-state{text-align:center;padding:40px 20px;color:#999}.scrollable{max-height:200px;overflow-y:auto}.actions-row{display:flex;gap:8px;margin-top:12px}.add-row-btn{width:100%;margin-top:8px;padding:8px;background:#f5f5f5;border:1px dashed #ccc;border-radius:4px;cursor:pointer;color:#666}.add-row-btn:hover{background:#eee;border-color:#999}.error-message{color:#f44336;background:#ffebee;padding:8px 12px;border-radius:4px;font-size:13px;margin-bottom:12px}.loading{text-align:center;padding:20px;color:#999}.app-sidebar{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;align-items:center;gap:16px;height:fit-content;position:sticky;top:16px}.sidebar-title{font-size:20px;font-weight:700;color:#4caf50;text-align:center}.sidebar-info{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.sidebar-company{font-weight:500;color:#333;font-size:13px}.sidebar-expires{color:#666;font-size:12px}.sidebar-expires.unlimited{color:#4caf50}.btn-logout{background:#f5f5f5;color:#666;padding:6px 12px;width:100%}.btn-logout:hover{background:#e0e0e0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.login-container{background:#fff;padding:48px;border-radius:16px;box-shadow:0 10px 40px #0003;text-align:center;max-width:400px;width:90%}.login-container h1{margin:0 0 8px;font-size:32px;color:#333}.login-subtitle{color:#666;margin:0 0 32px}.login-form{text-align:left}.login-form .form-group{margin-bottom:20px}.login-form label{display:block;margin-bottom:6px;font-weight:500;color:#333}.login-form input{width:100%;padding:12px;border:1px solid #ddd;border-radius:8px;font-size:14px}.login-form input:focus{outline:none;border-color:#667eea}.btn-large{width:100%;padding:14px;font-size:16px}.login-hint{color:#999;font-size:13px;margin:24px 0 0;text-align:center}.loading-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#666}.loading-spinner{width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #4CAF50;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.admin-page{min-height:100vh;background:#f5f5f5}.admin-login{min-height:100vh;display:flex;align-items:center;justify-content:center}.admin-login-form{background:#fff;padding:32px;border-radius:8px;box-shadow:0 2px 10px #0000001a;width:300px}.admin-login-form h2{margin:0 0 24px;text-align:center}.admin-login-form .form-group{margin-bottom:16px}.admin-login-form label{display:block;margin-bottom:4px;font-weight:500}.admin-login-form input{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px}.admin-container{max-width:1400px;margin:0 auto;padding:20px}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.admin-header h1{margin:0;color:#333}.admin-panel{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.admin-table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{padding:12px;text-align:left;border-bottom:1px solid #eee}.admin-table th{background:#f9f9f9;font-weight:600}.admin-table .key-cell{font-family:monospace;font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis}.status-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.status-badge.active{background:#e8f5e9;color:#2e7d32}.status-badge.expired{background:#ffebee;color:#c62828}.status-badge.not-activated{background:#fff3e0;color:#e65100}.status-badge.unlimited{background:#e3f2fd;color:#1565c0}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;padding:24px;width:500px;max-width:90%;max-height:90vh;overflow-y:auto}.modal h3{margin:0 0 20px}.modal .form-group{margin-bottom:16px}.modal label{display:block;margin-bottom:4px;font-weight:500}.modal input,.modal textarea{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px}.modal textarea{resize:vertical;min-height:80px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn-group{display:flex;gap:4px}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#333;background-color:#f5f5f5}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;max-width:100%;margin:0;padding:0}
