body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}.container{margin:0 auto;max-width:1200px;padding:20px}.header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;margin-bottom:30px;padding:20px 0;text-align:center}.header h1{font-size:2.5rem;margin:0}.header p{margin:10px 0 0;opacity:.9}.card{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin-bottom:20px;padding:20px}.card h2{border-bottom:2px solid #667eea;color:#333;margin-top:0;padding-bottom:10px}.form-group{margin-bottom:15px}.form-group label{color:#555;font-weight:500;margin-bottom:5px}.form-group input,.form-group select{border:1px solid #ddd;border-radius:4px;padding:10px;width:100%}.btn{background:#667eea;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;margin-bottom:10px;margin-right:10px;padding:10px 20px}.btn:hover{background:#5a6fd8}.btn-danger{background:#e74c3c}.btn-danger:hover{background:#c0392b}.btn-success{background:#27ae60}.btn-success:hover{background:#229954}.device-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:20px}.device-card{border:1px solid #ddd;border-radius:8px;box-shadow:0 2px 5px #0000001a;padding:15px}.device-card h3{color:#333;margin-top:0}.device-info{margin-bottom:10px}.device-info strong{color:#555}.status-active{color:#27ae60;font-weight:700}.status-inactive{color:#e74c3c;font-weight:700}.alert{border-radius:4px;margin-bottom:15px;padding:10px}.alert-success{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.alert-error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.loading{color:#666;padding:20px;text-align:center}.fabric-status{background:#e8f5e8;border:1px solid #4caf50;border-radius:4px;color:#2e7d32}.fabric-status,.mock-status{margin-bottom:20px;padding:10px;text-align:center}.mock-status{background:#fff3cd;border:1px solid #ffc107;border-radius:4px;color:#856404}.App{background-color:#f5f5f5;min-height:100vh}pre{font-family:Courier New,Courier,monospace;font-size:12px;line-height:1.4}button:disabled{cursor:not-allowed;opacity:.6}.form-group input:focus,.form-group select:focus{box-shadow:0 0 0 2px #667eea33}.device-card:hover{box-shadow:0 4px 15px #00000026;transform:translateY(-2px)}.btn,.device-card:hover{transition:all .3s ease}.btn:hover:not(:disabled){box-shadow:0 4px 8px #0003;transform:translateY(-1px)}.alert button{cursor:pointer;font-size:18px;font-weight:700}.alert button:hover{opacity:.7}.admin-nav{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:15px}.nav-btn{background:#f8f9fa;border:2px solid #e1e5e9;border-radius:8px;color:#333;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .3s ease}.nav-btn:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.nav-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;color:#fff}.nav-btn.admin{background:linear-gradient(135deg,#28a745,#20c997)}.nav-btn.admin,.nav-btn.user{border-color:#0000;color:#fff}.nav-btn.user{background:linear-gradient(135deg,#17a2b8,#138496)}.nav-btn.home{background:linear-gradient(135deg,#6f42c1,#5a32a3);border-color:#0000;color:#fff}.nav-btn.encrypted-data{background:linear-gradient(135deg,#fd7e14,#e55a00);border-color:#0000;color:#fff}.nav-btn.logout{background:linear-gradient(135deg,#dc3545,#c82333);border-color:#0000;color:#fff}.nav-btn.logout:hover{background:linear-gradient(135deg,#c82333,#bd2130)}@media (max-width:768px){.admin-nav{align-items:center;flex-direction:column}.nav-btn{max-width:200px;width:100%}}.admin-login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.admin-login-card{animation:slideUp .5s ease-out;background:#fff;border-radius:20px;box-shadow:0 20px 40px #0000001a;max-width:400px;padding:40px;width:100%}.admin-login-header{margin-bottom:30px;text-align:center}.admin-login-header h2{color:#333;font-size:28px;font-weight:700;margin:0 0 10px}.admin-login-header p{color:#666;font-size:14px;margin:0}.admin-login-form{margin-bottom:30px}.admin-login-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:10px;padding:14px;transition:all .3s ease;width:100%}.admin-login-btn:hover:not(:disabled){box-shadow:0 10px 20px #667eea4d;transform:translateY(-2px)}.admin-login-btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.admin-login-info{background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;padding:20px;text-align:center}.admin-login-info p{color:#666;font-size:14px;margin:5px 0}.admin-login-info code{background:#e9ecef;border-radius:4px;color:#333;font-family:Courier New,monospace;padding:2px 6px}.admin-login-info strong{color:#333}.user-management{margin:0 auto;max-width:1200px;padding:20px}.user-management-header{align-items:center;border-bottom:2px solid #e1e5e9;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.user-management-header h2{color:#333;font-size:24px;font-weight:700;margin:0}.add-user-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.add-user-btn:hover{box-shadow:0 8px 16px #667eea4d;transform:translateY(-2px)}.error-message,.success-message{border-radius:8px;cursor:pointer;margin-bottom:20px;padding:12px 16px;transition:opacity .3s ease}.success-message{background:#d4edda;border-left:4px solid #28a745;color:#155724}.error-message{background:#f8d7da;border-left:4px solid #dc3545;color:#721c24}.error-message:hover,.success-message:hover{opacity:.8}.user-form-container{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.user-form-card{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 40px #0003;max-width:500px;padding:30px;width:90%}.user-form-card h3{color:#333;font-size:20px;font-weight:600;margin:0 0 20px}.user-form{gap:20px}.form-group,.user-form{display:flex;flex-direction:column}.form-group{gap:8px}.form-group input,.form-group select{border:2px solid #e1e5e9;border-radius:8px;font-size:14px;padding:12px;transition:all .3s ease}.form-group input:focus,.form-group select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-actions{display:flex;gap:12px;margin-top:10px}.cancel-btn,.save-btn{border:none;border-radius:8px;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.save-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.save-btn:hover:not(:disabled){box-shadow:0 8px 16px #667eea4d;transform:translateY(-2px)}.save-btn:disabled{cursor:not-allowed;opacity:.7}.cancel-btn{background:#6c757d;color:#fff}.cancel-btn:hover{background:#5a6268;transform:translateY(-2px)}.users-list h3{color:#333;font-size:18px;font-weight:600;margin-bottom:20px}.loading,.no-users{color:#666;font-size:16px;padding:40px;text-align:center}.users-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.user-card{background:#fff;border:1px solid #e1e5e9;border-radius:12px;box-shadow:0 4px 12px #0000001a;padding:20px;transition:all .3s ease}.user-card:hover{box-shadow:0 8px 24px #00000026;transform:translateY(-4px)}.user-header{align-items:center;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:15px}.user-header h4{color:#333;font-size:18px;font-weight:600;margin:0}.role-badge{border-radius:20px;font-size:12px;font-weight:600;padding:4px 12px;text-transform:uppercase}.role-admin{background:#dc3545;color:#fff}.role-user{background:#28a745;color:#fff}.role-operator{background:#ffc107;color:#333}.user-details{margin-bottom:20px}.user-details p{color:#666;font-size:14px;margin:8px 0}.user-details strong{color:#333}.status-active{color:#28a745;font-weight:600}.status-inactive{color:#dc3545;font-weight:600}.user-actions{display:flex;gap:10px}.delete-btn,.edit-btn{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:12px;font-weight:600;padding:8px 16px;transition:all .3s ease}.edit-btn{background:#17a2b8;color:#fff}.edit-btn:hover{background:#138496;transform:translateY(-2px)}.delete-btn{background:#dc3545;color:#fff}.delete-btn:hover{background:#c82333;transform:translateY(-2px)}@media (max-width:768px){.user-management-header{align-items:stretch;flex-direction:column;gap:15px}.users-grid{grid-template-columns:1fr}.form-actions{flex-direction:column}}.user-login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.user-login-card{animation:slideUp .5s ease-out;background:#fff;border-radius:20px;box-shadow:0 20px 40px #0000001a;max-width:400px;padding:40px;width:100%}.user-login-header{margin-bottom:30px;text-align:center}.user-login-header h2{color:#333;font-size:28px;font-weight:700;margin:0 0 10px}.user-login-header p{color:#666;font-size:16px;margin:0}.user-login-form{margin-bottom:30px}.login-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:10px;padding:14px;transition:all .3s ease;width:100%}.login-btn:hover:not(:disabled){box-shadow:0 10px 20px #667eea4d;transform:translateY(-2px)}.login-btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.login-footer{border-top:1px solid #e1e5e9;padding-top:20px;text-align:center}.login-footer p{color:#666;font-size:14px;margin:0 0 15px}.switch-to-register-btn{background:#0000;border:2px solid #667eea;border-radius:8px;color:#667eea;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .3s ease}.switch-to-register-btn:hover{background:#667eea;color:#fff;transform:translateY(-2px)}@media (max-width:768px){.user-login-card{padding:30px 20px}.user-login-header h2{font-size:24px}}.user-registration-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.user-registration-card{animation:slideUp .5s ease-out;background:#fff;border-radius:20px;box-shadow:0 20px 40px #0000001a;max-width:500px;padding:40px;width:100%}.user-registration-header{margin-bottom:30px;text-align:center}.user-registration-header h2{color:#333;font-size:28px;font-weight:700;margin:0 0 10px}.user-registration-header p{color:#666;font-size:16px;margin:0}.user-registration-form{margin-bottom:30px}.form-row{grid-gap:15px;display:grid;gap:15px;grid-template-columns:1fr 1fr}.form-group,.form-row{margin-bottom:20px}.form-group label{color:#333;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-group input{border:2px solid #e1e5e9;border-radius:10px;box-sizing:border-box;font-size:16px;padding:12px 16px;transition:all .3s ease;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.register-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:10px;padding:14px;transition:all .3s ease;width:100%}.register-btn:hover:not(:disabled){box-shadow:0 10px 20px #667eea4d;transform:translateY(-2px)}.register-btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.error-message{padding:12px}.registration-footer{border-top:1px solid #e1e5e9;padding-top:20px;text-align:center}.registration-footer p{color:#666;font-size:14px;margin:0 0 15px}.switch-to-login-btn{background:#0000;border:2px solid #667eea;border-radius:8px;color:#667eea;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .3s ease}.switch-to-login-btn:hover{background:#667eea;color:#fff;transform:translateY(-2px)}@media (max-width:768px){.user-registration-card{padding:30px 20px}.form-row{gap:0;grid-template-columns:1fr}.user-registration-header h2{font-size:24px}}.landing-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.landing-card{animation:slideUp .5s ease-out;background:#fff;border-radius:20px;box-shadow:0 20px 40px #0000001a;max-width:800px;padding:40px;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.landing-header{margin-bottom:40px;text-align:center}.landing-header h1{color:#333;font-size:36px;font-weight:700;margin:0 0 10px}.landing-header p{color:#666;font-size:18px;margin:0}.landing-content{display:flex;flex-direction:column;gap:40px}.welcome-section{text-align:center}.welcome-section h2{color:#333;font-size:24px;font-weight:600;margin:0 0 10px}.welcome-section p{color:#666;font-size:16px;margin:0}.auth-options{align-items:center;display:flex;flex-wrap:wrap;gap:30px;justify-content:center}.auth-option{background:#f8f9fa;border:2px solid #e1e5e9;border-radius:15px;min-width:250px;padding:30px;text-align:center;transition:all .3s ease}.auth-option:hover{border-color:#667eea;box-shadow:0 10px 25px #0000001a;transform:translateY(-5px)}.auth-icon{display:block;font-size:48px;margin-bottom:15px}.auth-option h3{color:#333;font-size:20px;font-weight:600;margin:0 0 10px}.auth-option p{color:#666;font-size:14px;line-height:1.5;margin:0 0 20px}.auth-btn{border:none;border-radius:10px;cursor:pointer;font-size:16px;font-weight:600;padding:12px 20px;transition:all .3s ease;width:100%}.user-btn{background:linear-gradient(135deg,#17a2b8,#138496);color:#fff}.user-btn:hover{box-shadow:0 8px 16px #17a2b84d;transform:translateY(-2px)}.admin-btn{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.admin-btn:hover{box-shadow:0 8px 16px #28a7454d;transform:translateY(-2px)}.auth-divider{align-items:center;color:#666;display:flex;font-size:14px;font-weight:600}.auth-divider:after,.auth-divider:before{background:#e1e5e9;content:"";flex:1 1;height:1px;margin:0 15px}.features-section{text-align:center}.features-section h3{color:#333;font-size:20px;font-weight:600;margin:0 0 20px}.features-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.feature{align-items:center;background:#f8f9fa;border:1px solid #e1e5e9;border-radius:10px;display:flex;gap:10px;padding:15px;transition:all .3s ease}.feature:hover{border-color:#667eea;box-shadow:0 5px 15px #0000001a;transform:translateY(-2px)}.feature-icon{font-size:24px}.feature span:last-child{color:#333;font-size:14px;font-weight:500}@media (max-width:768px){.landing-card{padding:30px 20px}.landing-header h1{font-size:28px}.landing-header p{font-size:16px}.auth-options{flex-direction:column;gap:20px}.auth-option{min-width:auto;width:100%}.features-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.features-grid{grid-template-columns:1fr}}.encrypted-data-viewer{margin:0 auto;max-width:1200px;padding:20px}.viewer-header{border-bottom:2px solid #e1e5e9;margin-bottom:30px;padding-bottom:20px;text-align:center}.viewer-header h2{color:#333;font-size:28px;font-weight:700;margin:0 0 10px}.viewer-header p{color:#666;font-size:16px;margin:0}.encryption-key-section{background:#f8f9fa;border:1px solid #e1e5e9;border-radius:12px;margin-bottom:30px;padding:20px}.key-input-group{align-items:center;display:flex;flex-wrap:wrap;gap:15px;margin-bottom:15px}.key-input-group label{color:#333;font-weight:600;min-width:120px}.key-input{border:2px solid #e1e5e9;border-radius:8px;flex:1 1;font-size:14px;min-width:200px;padding:12px;transition:all .3s ease}.key-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.set-key-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 20px;transition:all .3s ease}.set-key-btn:hover{box-shadow:0 8px 16px #667eea4d;transform:translateY(-2px)}.key-info{color:#666;font-size:14px;margin:0}.error-message{background:#fee;border-left:4px solid #c53030;border-radius:8px;color:#c53030;cursor:pointer;font-size:14px;margin-bottom:20px;padding:12px 16px;transition:opacity .3s ease}.error-message:hover{opacity:.8}.loading,.no-data{color:#666;font-size:16px;padding:40px;text-align:center}.devices-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));margin-bottom:30px}.device-card{background:#fff;border:1px solid #e1e5e9;border-radius:12px;box-shadow:0 4px 12px #0000001a;padding:20px;transition:all .3s ease}.device-card:hover{box-shadow:0 8px 24px #00000026;transform:translateY(-4px)}.device-header{align-items:center;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:15px}.device-header h3{color:#333;font-size:18px;font-weight:600;margin:0}.status-badge{border-radius:20px;font-size:12px;font-weight:600;padding:4px 12px;text-transform:uppercase}.status-badge.active{background:#28a745;color:#fff}.status-badge.inactive{background:#dc3545;color:#fff}.device-info{margin-bottom:20px}.device-info p{color:#666;font-size:14px;margin:8px 0}.device-info strong{color:#333}.encrypted-section{background:#f8f9fa;border:1px solid #e1e5e9;border-radius:8px;padding:15px}.encrypted-section h4{color:#333;font-size:16px;font-weight:600;margin:0 0 15px}.encrypted-field{border-bottom:1px solid #e1e5e9;margin-bottom:15px;padding-bottom:15px}.encrypted-field:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.field-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.field-name{color:#333;font-weight:600;text-transform:capitalize}.encryption-indicator{border-radius:12px;font-size:11px;font-weight:600;padding:2px 8px}.encryption-indicator.encrypted{background:#dc3545;color:#fff}.encryption-indicator.plain{background:#28a745;color:#fff}.field-value{margin-left:10px}.decrypted-value,.encrypted-value{margin-bottom:10px}.decrypted-value strong,.encrypted-value strong{color:#333;display:block;font-size:12px;letter-spacing:.5px;margin-bottom:5px;text-transform:uppercase}.decrypted-value code,.encrypted-value code{background:#f1f3f4;border:1px solid #e1e5e9;border-radius:6px;color:#333;display:block;font-family:Courier New,monospace;font-size:12px;padding:8px 12px;word-break:break-all}.decrypt-btn{background:linear-gradient(135deg,#17a2b8,#138496);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;margin-top:15px;padding:10px;transition:all .3s ease;width:100%}.decrypt-btn:hover:not(:disabled){box-shadow:0 8px 16px #17a2b84d;transform:translateY(-2px)}.decrypt-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.no-encrypted-data{color:#666;font-style:italic;padding:20px;text-align:center}.encryption-stats{background:#fff;border:1px solid #e1e5e9;border-radius:12px;box-shadow:0 4px 12px #0000001a;padding:25px}.encryption-stats h3{color:#333;font-size:20px;font-weight:600;margin:0 0 20px;text-align:center}.stats-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stat-item{background:#f8f9fa;border:1px solid #e1e5e9;border-radius:10px;padding:20px;text-align:center;transition:all .3s ease}.stat-item:hover{box-shadow:0 5px 15px #0000001a;transform:translateY(-2px)}.stat-number{color:#667eea;display:block;font-size:32px;font-weight:700;margin-bottom:8px}.stat-label{color:#666;font-size:14px;font-weight:500}@media (max-width:768px){.encrypted-data-viewer{padding:15px}.devices-grid{grid-template-columns:1fr}.key-input-group{align-items:stretch;flex-direction:column}.key-input{min-width:auto}.stats-grid{grid-template-columns:1fr}}
/*# sourceMappingURL=main.8ebb8432.css.map*/