*,:before,:after{box-sizing:border-box}html{background-color:#fff;width:100%;min-width:320px;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif}body{color:#000;background-color:#fff;width:100%;min-width:320px;min-height:100vh;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;overflow-x:hidden}#root{width:100%;min-width:320px;min-height:100vh;margin:0;padding:0}img,video,canvas{max-width:100%;display:block}button,input,textarea,select{font:inherit}h1,h2,h3,h4,h5,h6,p{margin-top:0}a{color:inherit;text-decoration:none}.header-card{box-sizing:border-box;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:10000;background:#fbfbfcf5;border-top:2px solid #38222b;border-bottom:1px solid #dce3ec;justify-content:space-between;align-items:center;gap:25px;height:90px;padding:0 32px;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 3px 12px #0f172a0f}.header-left{flex-shrink:0;align-items:center;gap:14px;display:flex}.header-logo{object-fit:contain;cursor:pointer;width:auto;transition:transform .25s}.header-logo:hover{transform:scale(1.05)}.logo-primary{max-width:115px;height:68px}.logo-secondary{max-width:100px;height:55px}.logo-right{max-width:125px;height:58px}.logo-divider{background:#d5dce5;width:1px;height:45px}.company-name{color:#071507;white-space:nowrap;cursor:pointer;letter-spacing:.4px;font-size:1.55rem;font-weight:700;transition:color .25s}.company-name:hover{color:#0284c7}.header-center{flex:1;justify-content:center;align-items:center;gap:5px;display:flex}.nav-link{color:#0e0447;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:10px 12px;font-size:14px;transition:color .25s,background .25s}.nav-link:hover{color:#0284c7;background:#0284c714}.dropdown{position:relative}.dropdown-menu{opacity:0;visibility:hidden;z-index:99999;background:#0a0f19fa;border:1px solid #ffffff14;border-radius:13px;min-width:270px;padding:10px;transition:opacity .2s,visibility .2s,transform .2s;position:absolute;top:46px;left:0;transform:translateY(8px);box-shadow:0 20px 45px #00000059}.dropdown:hover .dropdown-menu{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-item{color:#fff;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;width:100%;padding:12px 14px}.dropdown-item:hover{color:#00d4ff;background:#ffffff14}.header-right{flex-shrink:0;justify-content:flex-end;align-items:center;gap:15px;display:flex}.login-btn{color:#334155;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:9px;padding:10px 17px;font-weight:600;transition:all .25s}.login-btn:hover{color:#0284c7;background:#f0f9ff;border-color:#0284c7}.auth-actions{text-align:center}.logout-button{color:#fff;cursor:pointer;background:#c62828;border:none;border-radius:6px;min-width:100px;padding:9px 18px;font-size:14px;font-weight:600;transition:opacity .2s,transform .2s}.logout-button:hover:not(:disabled){transform:translateY(-1px)}.logout-button:disabled{cursor:not-allowed;opacity:.65}.logout-error{color:#c62828;margin-top:8px;font-size:13px}@media (width<=1250px){.company-name{font-size:1.25rem}.header-center{gap:0}.nav-link{padding:9px 8px;font-size:13px}.logo-primary{max-width:90px}.logo-secondary{max-width:80px}.logo-right{max-width:95px}}@media (width<=1000px){.header-center{display:none}}@media (width<=700px){.header-card{height:75px;padding:0 15px}.company-name,.logo-divider{display:none}.logo-primary{max-width:80px;height:55px}.logo-secondary{max-width:70px;height:45px}.logo-right{max-width:75px;height:45px}.login-btn{display:none}}.login-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:99999;background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.login-modal{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;background:#0f172af2;border:1px solid #ffffff14;border-radius:20px;width:450px;max-width:95%;padding:35px;animation:.25s modalAppear;box-shadow:0 20px 50px #00000073}@keyframes modalAppear{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.login-modal h2{text-align:center;margin-bottom:25px;font-size:2rem;font-weight:700}.login-modal form{flex-direction:column;gap:15px;display:flex}.login-modal input{color:#fff;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;outline:none;padding:14px 16px;font-size:15px;transition:all .3s}.login-modal input::placeholder{color:#ffffff80}.login-modal input:focus{border-color:#00d4ff;box-shadow:0 0 0 3px #00d4ff26}.login-modal button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#00d4ff,#4f46e5);border:none;border-radius:12px;padding:14px;font-size:15px;font-weight:600;transition:all .3s}.login-modal button:hover{transform:translateY(-2px);box-shadow:0 10px 25px #4f46e559}.login-modal .forgot-password-button{color:#00d4ff;background:0 0;align-self:flex-end;width:auto;margin-top:-8px;padding:0;font-size:14px;font-weight:600}.login-modal .forgot-password-button:hover{box-shadow:none;color:#fff;text-decoration:underline;transform:none}.login-error{color:#b42318;background-color:#fff1f1;border:1px solid #dc3545;border-radius:6px;width:100%;margin-bottom:14px;padding:10px 12px;font-size:14px;line-height:1.4}button:disabled{cursor:not-allowed;opacity:.65}.login-footer{text-align:center;color:#94a3b8;margin-top:25px;font-size:14px}.auth-link{color:#00d4ff;cursor:pointer;margin-left:6px;font-weight:600;transition:all .3s}.auth-link:hover{color:#fff;text-decoration:underline}@media (width<=600px){.login-modal{width:95%;padding:25px}.login-modal h2{font-size:1.7rem}}.footer-card{color:#fff;z-index:1000;background:#111;justify-content:space-between;align-items:center;height:75px;padding:0 20px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 8px #0000004d}.footer-status{color:#a7f3d0;white-space:nowrap;text-overflow:ellipsis;background:#1f1f1f;border-radius:10px;flex:1;margin-right:20px;padding:10px 14px;font-size:14px;overflow:hidden}.footer-ai{align-items:center;gap:10px;display:flex}.ai-input{border:none;border-radius:10px;outline:none;width:240px;padding:10px 12px;font-size:14px}.ai-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:10px;padding:10px 16px;font-size:14px}.ai-btn:hover{background:#1d4ed8}.launcher-content{box-sizing:border-box;width:100%;min-height:calc(100vh - 165px);margin-top:90px;margin-bottom:75px;padding:20px}.card{background:#f7f9fa;border-radius:18px;flex-direction:column;width:300px;height:calc(100vh - 200px);padding:20px;display:flex;position:fixed;top:100px;left:0;overflow-y:auto;box-shadow:0 4px 12px #9dc395ad}.right-card{background:#f8fafc;border-radius:18px;width:320px;height:calc(100vh - 200px);padding:20px;position:fixed;top:100px;right:0;overflow-y:auto;box-shadow:0 4px 12px #00000026}.layout-content{min-height:calc(100vh - 165px);margin:90px 320px 75px 300px;padding:20px}.landing{background:#0f607f;justify-content:center;align-items:center;min-height:calc(100vh - 90px);margin-top:90px;display:flex}.launcher{text-align:center;width:90%;max-width:1100px}.launcher-title{color:#fff;margin-bottom:70px}.launcher-title h1{margin-bottom:12px;font-size:42px;font-weight:700}.launcher-title p{opacity:.9;font-size:20px}.launcher-grid{grid-template-columns:repeat(3,260px);justify-content:center;gap:45px;display:grid}.launcher-card{cursor:pointer;border:2px solid #ffffff26;border-radius:22px;flex-direction:column;justify-content:center;align-items:center;height:180px;transition:all .25s;display:flex;box-shadow:0 8px 25px #0003}.launcher-card:hover{transform:translateY(-8px);box-shadow:0 20px 40px #00000059}.launcher-icon{margin-bottom:18px;font-size:42px}.launcher-card h2{color:#fff;font-size:24px;font-weight:500}.blue{background:linear-gradient(135deg,#4f8fd9,#6ba8ef)}.green{background:linear-gradient(135deg,#1ea672,#42c98d)}.cyan{background:linear-gradient(135deg,#59b4d8,#82d0ef)}.orange{background:linear-gradient(135deg,#f39c12,#ffbf4d)}.purple{background:linear-gradient(135deg,#7d5fff,#9980fa)}.gray{background:linear-gradient(135deg,#6c7a89,#95a5a6)}@media (width<=1100px){.launcher-grid{grid-template-columns:repeat(2,260px)}}@media (width<=700px){.launcher-grid{grid-template-columns:1fr}.launcher-card{width:280px;margin:auto}.launcher-title h1{font-size:30px}}.dashboard{color:#263238;background:#f4f7fb;min-height:100vh;padding:25px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.hero{color:#fff;background:linear-gradient(135deg,#1565c0,#1e88e5);border-radius:15px;justify-content:space-between;align-items:center;margin-bottom:25px;padding:35px;display:flex;box-shadow:0 8px 20px #00000026}.hero h1{margin-bottom:10px;font-size:34px}.hero p{margin-bottom:8px;font-size:18px}.hero span{opacity:.9;font-size:15px}.liveButton{color:#1565c0;cursor:pointer;background:#fff;border:none;border-radius:10px;padding:15px 30px;font-size:16px;font-weight:700;transition:all .3s}.liveButton:hover{background:#f0f4ff;transform:translateY(-2px)}.kpiGrid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin-bottom:25px;display:grid}.kpiCard{background:#fff;border-left:6px solid #1565c0;border-radius:12px;padding:25px;transition:all .3s;box-shadow:0 5px 15px #00000014}.kpiCard:hover{transform:translateY(-5px)}.kpiCard h2{margin-bottom:10px;font-size:38px}.kpiCard p{color:#607d8b;text-transform:uppercase;letter-spacing:1px;font-size:15px}.success{border-left-color:#2e7d32}.success h2{color:#2e7d32}.danger{border-left-color:#d32f2f}.danger h2{color:#d32f2f}.primary{border-left-color:#1565c0}.primary h2{color:#1565c0}.chartGrid{grid-template-columns:repeat(auto-fit,minmax(450px,1fr));gap:20px;margin-bottom:25px;display:grid}.panel{background:#fff;border-radius:12px;margin-bottom:25px;overflow:hidden;box-shadow:0 5px 15px #00000014}.panelHeader{color:#37474f;background:#f8fafc;border-bottom:1px solid #e5e7eb;padding:16px 22px;font-size:17px;font-weight:600}.panelBody{padding:25px}.placeholderChart{color:#78909c;background:#fafafa;border:2px dashed #cfd8dc;justify-content:center;align-items:center;height:280px;font-size:18px;display:flex}.cameraGrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;padding:25px;display:grid}.cameraCard{background:#fafafa;border:1px solid #e0e0e0;border-radius:10px;padding:20px;transition:all .3s}.cameraCard:hover{box-shadow:0 5px 12px #00000014}.cameraCard h3{margin-bottom:15px}.running{color:#2e7d32;background:#e8f5e9;border-radius:30px;padding:6px 15px;font-weight:700;display:inline-block}.offline{color:#d32f2f;background:#ffebee;border-radius:30px;padding:6px 15px;font-weight:700;display:inline-block}.inspectionTable{border-collapse:collapse;width:100%}.inspectionTable thead{color:#fff;background:#1565c0}.inspectionTable th{text-align:left;padding:15px}.inspectionTable td{border-bottom:1px solid #eceff1;padding:15px}.inspectionTable tbody tr:hover{background:#f5f7fa}.eventList{padding:20px}.eventCard{border-bottom:1px solid #eceff1;grid-template-columns:100px 1fr 1fr 120px 120px;align-items:center;gap:15px;padding:15px;display:grid}.eventCard:last-child{border-bottom:none}.eventCard:hover{background:#f7f9fb}@media (width<=1100px){.chartGrid{grid-template-columns:1fr}}@media (width<=900px){.hero{text-align:center;flex-direction:column;gap:25px}.eventCard{grid-template-columns:1fr}}@media (width<=700px){.dashboard{padding:15px}.hero{padding:25px}.hero h1{font-size:28px}.liveButton{width:100%}.inspectionTable{display:block;overflow-x:auto}}.passfail-chart-container{box-sizing:border-box;background:#fff;border-radius:10px;flex-direction:column;width:100%;height:100%;padding:15px;display:flex;box-shadow:0 2px 8px #0000001f}.chart-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.chart-header h3{color:#222;margin:0;font-size:18px}.chart-header span{color:#888;font-size:13px}.event-chart-container{background:0 0;justify-content:center;align-items:center;width:100%;height:320px;display:flex}.camera-card{background:#111827;border:1px solid #ffffff1a;border-radius:14px;overflow:hidden;box-shadow:0 8px 25px #0000004d}.camera-video-container{aspect-ratio:16/9;background:#000;width:100%;position:relative}.camera-video{object-fit:cover;width:100%;height:100%;display:block}.camera-no-signal{color:#94a3b8;justify-content:center;align-items:center;width:100%;height:100%;font-size:15px;display:flex}.camera-status{color:#fff;border-radius:20px;padding:5px 10px;font-size:11px;font-weight:700;position:absolute;top:12px;right:12px}.camera-online{background:#16a34a}.camera-offline{background:#dc2626}.camera-card-footer{padding:14px 16px}.camera-card-footer h3{color:#fff;margin:0;font-size:16px;font-weight:600}.inspection-section{background:#fff;border:1px solid #d8e1eb;border-radius:12px;margin-top:24px;overflow:hidden}.inspection-header{border-bottom:1px solid #dce3ec;justify-content:space-between;align-items:center;gap:15px;min-height:68px;padding:14px 18px;display:flex}.inspection-header h2{color:#0f172a;margin:0;font-size:18px}.inspection-header p{color:#64748b;margin:5px 0 0;font-size:12px}.socket-status{border-radius:20px;align-items:center;gap:7px;padding:7px 11px;font-size:11px;font-weight:700;display:flex}.socket-status-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.socket-status.connected{color:#15803d;background:#dcfce7}.socket-status.disconnected{color:#dc2626;background:#fee2e2}.inspection-table-container{scrollbar-width:thin;scrollbar-color:#94a3b8 #f1f5f9;width:100%;max-height:420px;overflow:auto}.inspection-table{border-collapse:collapse;color:#334155;width:100%;min-width:1250px;font-size:12px}.inspection-table th{color:#0f172a;text-align:center;white-space:nowrap;background:#bceaf7;border-bottom:1px solid #94a3b8;border-right:1px solid #94a3b8;padding:12px 10px;font-size:13px;font-weight:700}.inspection-table td{text-align:center;vertical-align:middle;border-bottom:1px solid #d5dde7;border-right:1px solid #d5dde7;min-height:42px;padding:11px 10px}.inspection-table tbody tr{transition:background .2s}.inspection-table tbody tr:hover{background:#f1f7fc}.inspection-table tbody tr:nth-child(2n){background:#f8fafc}.captured-data{color:#075985;font-weight:600}.inspection-result{border-radius:15px;min-width:58px;padding:5px 9px;font-size:10px;font-weight:800;display:inline-block}.inspection-result.pass{color:#15803d;background:#dcfce7}.inspection-result.fail{color:#dc2626;background:#fee2e2}.inspection-result.warning{color:#b45309;background:#fef3c7}.inspection-result.unknown{color:#475569;background:#e2e8f0}.inspection-table a{color:#0284c7;font-weight:600;text-decoration:none}.inspection-table a:hover{text-decoration:underline}.empty-inspection{color:#64748b;text-align:center;height:100px;font-size:13px}.industrial-workspace{box-sizing:border-box;background:#eef2f7;grid-template-columns:210px minmax(0,1fr) 230px;gap:18px;min-height:100vh;padding:110px 20px 95px;display:grid}.workspace-left,.workspace-middle,.workspace-right{background:#fff;border:1px solid #dce3ec;border-radius:14px;box-shadow:0 5px 20px #0f172a14}.workspace-left{padding:18px}.panel-title{color:#0f172a;margin-bottom:18px;font-size:17px;font-weight:700}.menu-button{color:#475569;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:9px;width:100%;margin-bottom:10px;padding:13px;transition:all .25s}.menu-button:hover{color:#2563eb;background:#eef6ff}.menu-button.active{color:#fff;background:linear-gradient(135deg,#0284c7,#2563eb)}.workspace-middle{min-width:0;overflow:hidden}.middle-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;min-height:75px;padding:15px 20px;display:flex}.middle-header h1{color:#0f172a;margin:0;font-size:23px}.middle-header p{color:#64748b;margin:5px 0 0;font-size:13px}.system-status{color:#15803d;background:#dcfce7;border-radius:20px;padding:7px 12px;font-size:11px;font-weight:700}.middle-content{padding:18px}.camera-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;display:grid}.content-placeholder{color:#64748b;flex-direction:column;justify-content:center;align-items:center;min-height:400px;display:flex}.content-placeholder h2{color:#0f172a}.workspace-right{padding:18px}.action-button,.control-button{cursor:pointer;border-radius:8px;width:100%;margin-bottom:11px;padding:12px}.action-button{color:#fff;background:linear-gradient(135deg,#06b6d4,#2563eb);border:none}.control-button{color:#334155;background:#fff;border:1px solid #cbd5e1}.system-information{background:#f8fafc;border-radius:10px;margin-top:25px;padding:14px}.system-information h3{color:#0f172a;font-size:14px}.system-information p{color:#64748b;font-size:13px}@media (width<=1200px){.camera-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.industrial-workspace,.camera-grid{grid-template-columns:1fr}}.report-page{flex-direction:column;gap:20px;padding:20px;display:flex}.report-filters{background:#fff;border-radius:8px;flex-wrap:wrap;gap:12px;padding:15px;display:flex;box-shadow:0 2px 6px #0000001a}.report-filters select,.report-filters input{min-width:150px;padding:8px 12px}.report-filters button{cursor:pointer;padding:8px 18px}.report-summary{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;display:grid}.summary-card{text-align:center;background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 6px #0000001a}.summary-card.success{border-left:5px solid #28a745}.summary-card.danger{border-left:5px solid #dc3545}.report-table{background:#fff;border-radius:8px;overflow:auto;box-shadow:0 2px 6px #0000001a}.report-table table{border-collapse:collapse;width:100%}.report-table th,.report-table td{text-align:left;border-bottom:1px solid #eee;padding:12px}.report-table th{background:#f7f7f7}.pass{color:#28a745;font-weight:700}.fail{color:#dc3545;font-weight:700}.auth-checking{color:#334155;background:#f5f7fa;justify-content:center;align-items:center;min-height:100vh;font-size:16px;font-weight:600;display:flex}
