.home[data-v-55ad239e]{padding:100px 20px}.home-inner[data-v-55ad239e]{max-width:1200px;margin:0 auto}.eyebrow[data-v-55ad239e]{letter-spacing:2px;color:#2563eb;margin:0 0 15px;font-size:13px;font-weight:700}h1[data-v-55ad239e]{color:#111827;margin:0;font-size:56px}.description[data-v-55ad239e]{color:#6b7280;margin:20px 0 50px;font-size:18px}.home-cards[data-v-55ad239e]{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.home-card[data-v-55ad239e]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;min-height:180px;padding:30px}.home-card h2[data-v-55ad239e]{margin:0 0 15px}.home-card p[data-v-55ad239e]{color:#6b7280;margin:0;line-height:1.7}@media (width<=800px){h1[data-v-55ad239e]{font-size:42px}.home-cards[data-v-55ad239e]{grid-template-columns:1fr}}.upload-page[data-v-afcfc669]{min-height:calc(100vh - 190px);padding:70px 20px}.upload-container[data-v-afcfc669]{max-width:900px;margin:0 auto}.page-header[data-v-afcfc669]{margin-bottom:30px}.page-header h1[data-v-afcfc669]{color:#111827;margin:0 0 10px;font-size:32px}.page-header p[data-v-afcfc669]{color:#6b7280;margin:0}.upload-card[data-v-afcfc669],.result-card[data-v-afcfc669]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:30px}.file-select[data-v-afcfc669]{color:#374151;cursor:pointer;border:2px dashed #d1d5db;border-radius:8px;justify-content:center;align-items:center;height:120px;display:flex}.file-select[data-v-afcfc669]:hover{border-color:#2563eb}.file-select input[data-v-afcfc669]{display:none}.file-list[data-v-afcfc669]{margin-top:20px}.file-item[data-v-afcfc669],.result-item[data-v-afcfc669]{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:15px;display:flex}.file-info[data-v-afcfc669]{flex-direction:column;gap:5px;min-width:0;display:flex}.file-info strong[data-v-afcfc669],.result-item strong[data-v-afcfc669]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-info span[data-v-afcfc669],.result-item span[data-v-afcfc669]{color:#6b7280;font-size:13px}.remove-button[data-v-afcfc669]{color:#dc2626;cursor:pointer;background:0 0;border:0}.empty-files[data-v-afcfc669]{text-align:center;color:#9ca3af;padding:30px}.message[data-v-afcfc669]{color:#2563eb;margin:20px 0 0}.upload-button[data-v-afcfc669]{color:#fff;cursor:pointer;background:#111827;border:0;border-radius:6px;width:100%;height:46px;margin-top:25px;font-weight:600}.upload-button[data-v-afcfc669]:hover{background:#1f2937}.upload-button[data-v-afcfc669]:disabled{opacity:.5;cursor:not-allowed}.result-card[data-v-afcfc669]{margin-top:25px}.result-card h2[data-v-afcfc669]{margin:0 0 10px;font-size:20px}.login-page[data-v-b558f357]{justify-content:center;align-items:center;min-height:calc(100vh - 190px);padding:50px 20px;display:flex}.login-card[data-v-b558f357]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;width:100%;max-width:420px;padding:40px;box-shadow:0 10px 30px #0000000f}.login-header[data-v-b558f357]{text-align:center;margin-bottom:30px}.login-header h1[data-v-b558f357]{color:#111827;margin:0 0 10px;font-size:28px}.login-header p[data-v-b558f357]{color:#6b7280;margin:0;font-size:14px}.login-form[data-v-b558f357]{flex-direction:column;gap:20px;display:flex}.form-group[data-v-b558f357]{flex-direction:column;gap:8px;display:flex}.form-group label[data-v-b558f357]{font-size:14px;font-weight:600}.form-group input[data-v-b558f357]{border:1px solid #d1d5db;border-radius:6px;outline:none;width:100%;height:46px;padding:0 13px}.form-group input[data-v-b558f357]:focus{border-color:#2563eb}.remember[data-v-b558f357]{color:#4b5563;align-items:center;gap:8px;font-size:14px;display:flex}.login-message[data-v-b558f357]{color:#dc2626;margin:0;font-size:14px}.submit-button[data-v-b558f357]{color:#fff;cursor:pointer;background:#111827;border:0;border-radius:6px;height:46px;font-weight:600}.submit-button[data-v-b558f357]:hover{background:#1f2937}.submit-button[data-v-b558f357]:disabled{opacity:.6;cursor:not-allowed}.download-page[data-v-f6223f5c]{min-height:calc(100vh - 190px);padding:70px 20px}.download-container[data-v-f6223f5c]{max-width:1000px;margin:0 auto}.page-header[data-v-f6223f5c]{margin-bottom:30px}.page-header h1[data-v-f6223f5c]{color:#111827;margin:0 0 10px;font-size:32px}.page-header p[data-v-f6223f5c]{color:#6b7280;margin:0}.file-card[data-v-f6223f5c]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;overflow:hidden}.toolbar[data-v-f6223f5c]{background:#f9fafb;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:20px;padding:16px 25px;display:flex}.select-all[data-v-f6223f5c]{color:#374151;cursor:pointer;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.select-all input[data-v-f6223f5c],.file-select input[data-v-f6223f5c]{cursor:pointer;width:17px;height:17px}.toolbar-right[data-v-f6223f5c]{align-items:center;gap:15px;display:flex}.selected-count[data-v-f6223f5c]{color:#4b5563;font-size:14px}.zip-button[data-v-f6223f5c]{color:#fff;cursor:pointer;background:#111827;border:0;border-radius:6px;height:40px;padding:0 18px;font-weight:600}.zip-button[data-v-f6223f5c]:hover{background:#1f2937}.zip-button[data-v-f6223f5c]:disabled{opacity:.5;cursor:not-allowed}.file-list[data-v-f6223f5c]{flex-direction:column;display:flex}.file-item[data-v-f6223f5c]{border-bottom:1px solid #e5e7eb;align-items:center;gap:15px;padding:20px 25px;display:flex}.file-item[data-v-f6223f5c]:last-child{border-bottom:0}.file-select[data-v-f6223f5c]{flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-info[data-v-f6223f5c]{flex:1;min-width:0}.file-info strong[data-v-f6223f5c]{color:#111827;text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px;display:block;overflow:hidden}.file-meta[data-v-f6223f5c]{color:#6b7280;flex-wrap:wrap;gap:12px;font-size:13px;display:flex}.file-actions[data-v-f6223f5c]{flex-shrink:0;gap:8px;display:flex}.download-button[data-v-f6223f5c],.delete-button[data-v-f6223f5c]{color:#fff;cursor:pointer;border:0;border-radius:6px;height:40px;padding:0 18px;font-weight:600}.download-button[data-v-f6223f5c]{background:#111827}.download-button[data-v-f6223f5c]:hover{background:#1f2937}.delete-button[data-v-f6223f5c]{background:#dc2626}.delete-button[data-v-f6223f5c]:hover{background:#b91c1c}.state-message[data-v-f6223f5c]{text-align:center;color:#6b7280;padding:50px 20px}.state-message.error[data-v-f6223f5c]{color:#dc2626}.delete-selected-button[data-v-f6223f5c]{color:#fff;cursor:pointer;background:#dc2626;border:0;border-radius:6px;height:40px;padding:0 18px;font-weight:600}.delete-selected-button[data-v-f6223f5c]:hover{background:#b91c1c}.delete-selected-button[data-v-f6223f5c]:disabled{opacity:.5;cursor:not-allowed}@media (width<=700px){.toolbar[data-v-f6223f5c]{flex-direction:column;align-items:flex-start}.toolbar-right[data-v-f6223f5c]{flex-wrap:wrap;justify-content:space-between;width:100%}.file-item[data-v-f6223f5c]{align-items:flex-start}.file-actions[data-v-f6223f5c]{flex-direction:column}.download-button[data-v-f6223f5c],.delete-button[data-v-f6223f5c]{min-width:90px}.file-meta[data-v-f6223f5c]{flex-direction:column;gap:4px}}.iot-page[data-v-aee3e110]{min-height:calc(100vh - 190px);padding:70px 20px}.iot-container[data-v-aee3e110]{max-width:1000px;margin:0 auto}.page-header[data-v-aee3e110]{margin-bottom:30px}.page-header h1[data-v-aee3e110]{color:#111827;margin:0 0 10px;font-size:32px}.page-header p[data-v-aee3e110]{color:#6b7280;margin:0}.device-card[data-v-aee3e110]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;overflow:hidden}.device-header[data-v-aee3e110]{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:25px;display:flex}.device-title[data-v-aee3e110]{align-items:center;gap:15px;display:flex}.device-icon[data-v-aee3e110]{color:#fff;background:#111827;border-radius:10px;justify-content:center;align-items:center;width:52px;height:52px;font-size:13px;font-weight:700;display:flex}.device-title h2[data-v-aee3e110]{color:#111827;margin:0 0 5px;font-size:20px}.device-title p[data-v-aee3e110]{color:#6b7280;margin:0;font-size:14px}.status[data-v-aee3e110]{border-radius:6px;align-items:center;gap:7px;padding:6px 10px;font-size:13px;font-weight:600;display:flex}.status-dot[data-v-aee3e110]{border-radius:50%;width:7px;height:7px}.status.online[data-v-aee3e110]{color:#166534;background:#dcfce7}.status.online .status-dot[data-v-aee3e110]{background:#16a34a}.status.offline[data-v-aee3e110]{color:#991b1b;background:#fee2e2}.status.offline .status-dot[data-v-aee3e110]{background:#dc2626}.status.loading[data-v-aee3e110]{color:#6b7280;background:#f3f4f6}.device-body[data-v-aee3e110]{padding:25px}.pc-info[data-v-aee3e110]{margin-bottom:25px}.info-row[data-v-aee3e110]{border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;padding:12px 0;display:flex}.info-row[data-v-aee3e110]:last-child{border-bottom:0}.info-label[data-v-aee3e110]{color:#6b7280;font-size:14px}.info-row strong[data-v-aee3e110]{color:#111827;font-size:14px}.pc-actions[data-v-aee3e110]{justify-content:flex-end;gap:10px;display:flex}.pc-actions button[data-v-aee3e110]{cursor:pointer;border:0;border-radius:6px;height:42px;padding:0 18px;font-weight:600}.pc-actions button[data-v-aee3e110]:disabled{opacity:.45;cursor:not-allowed}.refresh-button[data-v-aee3e110]{color:#111827;background:#e5e7eb}.refresh-button[data-v-aee3e110]:hover:not(:disabled){background:#d1d5db}.power-on-button[data-v-aee3e110]{color:#fff;background:#16a34a}.power-on-button[data-v-aee3e110]:hover:not(:disabled){background:#15803d}.shutdown-button[data-v-aee3e110]{color:#fff;background:#dc2626}.shutdown-button[data-v-aee3e110]:hover:not(:disabled){background:#b91c1c}.success-message[data-v-aee3e110]{color:#16a34a;margin:20px 0 0}.error-message[data-v-aee3e110]{color:#dc2626;margin:20px 0 0}@media (width<=700px){.iot-page[data-v-aee3e110]{padding:40px 15px}.device-header[data-v-aee3e110]{flex-direction:column;align-items:flex-start;gap:15px}.device-body[data-v-aee3e110]{padding:20px}.pc-actions[data-v-aee3e110]{flex-direction:column}.pc-actions button[data-v-aee3e110]{width:100%}}.admin-page[data-v-f0d27a38]{min-height:calc(100vh - 190px);padding:60px 20px}.admin-container[data-v-f0d27a38]{max-width:1400px;margin:0 auto}.page-header[data-v-f0d27a38]{justify-content:space-between;align-items:center;margin-bottom:25px;display:flex}.page-header h1[data-v-f0d27a38]{color:#111827;margin:0 0 8px;font-size:32px}.page-header p[data-v-f0d27a38]{color:#6b7280;margin:0}.card[data-v-f0d27a38]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:25px;padding:30px}.card-header[data-v-f0d27a38]{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.card h2[data-v-f0d27a38]{color:#111827;margin:0;font-size:20px}.primary-button[data-v-f0d27a38],.secondary-button[data-v-f0d27a38]{cursor:pointer;border:0;border-radius:6px;height:40px;padding:0 18px;font-weight:600}.primary-button[data-v-f0d27a38]{color:#fff;background:#111827}.primary-button[data-v-f0d27a38]:hover{background:#1f2937}.secondary-button[data-v-f0d27a38]{color:#111827;background:#e5e7eb}.secondary-button[data-v-f0d27a38]:hover{background:#d1d5db}.secondary-button[data-v-f0d27a38]:disabled{opacity:.5;cursor:not-allowed}.create-card[data-v-f0d27a38]{margin-bottom:25px}.form-grid[data-v-f0d27a38]{grid-template-columns:repeat(2,1fr);gap:20px;margin-top:20px;display:grid}.form-group[data-v-f0d27a38]{flex-direction:column;gap:8px;display:flex}.form-group label[data-v-f0d27a38]{font-size:14px;font-weight:600}.form-group input[data-v-f0d27a38],.form-group select[data-v-f0d27a38]{background:#fff;border:1px solid #d1d5db;border-radius:6px;outline:none;height:44px;padding:0 12px}.form-group input[data-v-f0d27a38]:focus,.form-group select[data-v-f0d27a38]:focus{border-color:#2563eb}.create-button[data-v-f0d27a38]{margin-top:25px}.success-message[data-v-f0d27a38]{color:#16a34a;margin:0 0 20px}.error-message[data-v-f0d27a38]{color:#dc2626;margin:0 0 20px}.empty[data-v-f0d27a38]{text-align:center;color:#9ca3af;padding:40px}.table-wrapper[data-v-f0d27a38]{width:100%;overflow-x:auto}table[data-v-f0d27a38]{border-collapse:collapse;width:100%;min-width:1200px}th[data-v-f0d27a38],td[data-v-f0d27a38]{text-align:left;white-space:nowrap;border-bottom:1px solid #e5e7eb;padding:14px 12px}th[data-v-f0d27a38]{color:#374151;background:#f9fafb;font-size:13px}td[data-v-f0d27a38]{color:#374151;font-size:14px}.status[data-v-f0d27a38]{border-radius:4px;padding:4px 8px;font-size:12px;font-weight:600;display:inline-block}.status.active[data-v-f0d27a38]{color:#166534;background:#dcfce7}.status.blocked[data-v-f0d27a38]{color:#991b1b;background:#fee2e2}.status.warning[data-v-f0d27a38]{color:#92400e;background:#fef3c7}.action-area[data-v-f0d27a38]{align-items:center;gap:6px;display:flex}.small-button[data-v-f0d27a38]{cursor:pointer;white-space:nowrap;border:0;border-radius:5px;height:32px;padding:0 10px;font-size:12px;font-weight:600}.edit-button[data-v-f0d27a38]{color:#111827;background:#e5e7eb}.edit-button[data-v-f0d27a38]:hover{background:#d1d5db}.save-button[data-v-f0d27a38]{color:#fff;background:#2563eb}.save-button[data-v-f0d27a38]:hover{background:#1d4ed8}.cancel-button[data-v-f0d27a38]{color:#374151;background:#e5e7eb}.cancel-button[data-v-f0d27a38]:hover{background:#d1d5db}.password-button[data-v-f0d27a38]{color:#92400e;background:#fef3c7}.password-button[data-v-f0d27a38]:hover{background:#fde68a}.block-button[data-v-f0d27a38]{color:#991b1b;background:#fee2e2}.block-button[data-v-f0d27a38]:hover{background:#fecaca}.delete-button[data-v-f0d27a38]{color:#fff;background:#991b1b}.delete-button[data-v-f0d27a38]:hover{background:#7f1d1d}.inline-edit[data-v-f0d27a38]{align-items:center;display:flex}.inline-edit input[data-v-f0d27a38],.inline-edit select[data-v-f0d27a38]{border:1px solid #d1d5db;border-radius:5px;outline:none;height:32px;padding:0 8px}.inline-edit input[data-v-f0d27a38]:focus,.inline-edit select[data-v-f0d27a38]:focus{border-color:#2563eb}.password-input[data-v-f0d27a38]{border:1px solid #d1d5db;border-radius:5px;outline:none;width:140px;height:32px;padding:0 8px}.password-input[data-v-f0d27a38]:focus{border-color:#2563eb}@media (width<=700px){.page-header[data-v-f0d27a38]{flex-direction:column;align-items:flex-start;gap:15px}.form-grid[data-v-f0d27a38]{grid-template-columns:1fr}.card[data-v-f0d27a38]{padding:20px}}.not-found[data-v-61c88ee8]{justify-content:center;align-items:center;min-height:calc(100vh - 190px);padding:50px 20px;display:flex}.not-found-inner[data-v-61c88ee8]{text-align:center}.error-code[data-v-61c88ee8]{color:#111827;font-size:100px;font-weight:800;line-height:1}h1[data-v-61c88ee8]{color:#111827;margin:25px 0 10px;font-size:28px}p[data-v-61c88ee8]{color:#6b7280;margin:0 0 30px}.home-button[data-v-61c88ee8]{color:#fff;background:#111827;border-radius:6px;justify-content:center;align-items:center;padding:11px 20px;font-weight:600;display:inline-flex}.home-button[data-v-61c88ee8]:hover{background:#1f2937}.account-page[data-v-6a7f7ab3]{min-height:calc(100vh - 190px);padding:60px 20px}.account-container[data-v-6a7f7ab3]{max-width:700px;margin:0 auto}.page-header[data-v-6a7f7ab3]{margin-bottom:25px}.page-header h1[data-v-6a7f7ab3]{color:#111827;margin:0 0 8px;font-size:32px}.page-header p[data-v-6a7f7ab3]{color:#6b7280;margin:0}.card[data-v-6a7f7ab3]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:25px;padding:30px}.card h2[data-v-6a7f7ab3]{color:#111827;margin:0;font-size:20px}.account-info[data-v-6a7f7ab3]{border-top:1px solid #e5e7eb;margin-top:20px}.info-row[data-v-6a7f7ab3]{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:15px 0;display:flex}.info-row .label[data-v-6a7f7ab3]{color:#6b7280;font-size:14px}.info-row strong[data-v-6a7f7ab3]{color:#111827}.description[data-v-6a7f7ab3]{color:#6b7280;margin:10px 0 25px;font-size:14px}.password-form[data-v-6a7f7ab3]{flex-direction:column;gap:20px;display:flex}.form-group[data-v-6a7f7ab3]{flex-direction:column;gap:8px;display:flex}.form-group label[data-v-6a7f7ab3]{color:#374151;font-size:14px;font-weight:600}.form-group input[data-v-6a7f7ab3]{box-sizing:border-box;border:1px solid #d1d5db;border-radius:6px;outline:none;width:100%;height:46px;padding:0 13px}.form-group input[data-v-6a7f7ab3]:focus{border-color:#2563eb}.error-message[data-v-6a7f7ab3]{color:#dc2626;margin:0;font-size:14px}.success-message[data-v-6a7f7ab3]{color:#16a34a;margin:0;font-size:14px}.submit-button[data-v-6a7f7ab3]{color:#fff;cursor:pointer;background:#111827;border:0;border-radius:6px;width:100%;height:46px;font-weight:600}.submit-button[data-v-6a7f7ab3]:hover{background:#1f2937}.submit-button[data-v-6a7f7ab3]:disabled{opacity:.5;cursor:not-allowed}@media (width<=600px){.account-page[data-v-6a7f7ab3]{padding:40px 15px}.card[data-v-6a7f7ab3]{padding:20px}.info-row[data-v-6a7f7ab3]{gap:15px}}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{color:#1f2937;background:#f5f7fa;font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,input{font:inherit}.app{flex-direction:column;min-height:100vh;display:flex}.main-content{flex:1;width:100%}.site-header{color:#fff;background:#111827;width:100%}.header-inner{align-items:center;max-width:1200px;height:70px;margin:0 auto;padding:0 24px;display:flex}.logo{white-space:nowrap;font-size:22px;font-weight:700}.main-nav{align-items:center;gap:28px;margin-left:50px;display:flex}.main-nav a{color:#d1d5db;font-size:15px;transition:color .2s}.main-nav a:hover,.main-nav a.router-link-active{color:#fff}.account-area{align-items:center;gap:15px;margin-left:auto;display:flex}.user-name{color:#d1d5db;font-size:14px}.login-button{color:#fff;cursor:pointer;background:0 0;border:1px solid #4b5563;border-radius:6px;padding:8px 15px;transition:background .2s}.login-button:hover{background:#374151}.site-footer{color:#9ca3af;background:#111827;margin-top:auto}.footer-inner{justify-content:space-between;align-items:center;max-width:1200px;min-height:120px;margin:0 auto;padding:25px 24px;display:flex}.footer-inner strong{color:#fff;font-size:16px}.footer-inner p{margin:8px 0 0;font-size:13px}.footer-copy{font-size:13px}.account-button{color:#111827;background:#e5e7eb;border-radius:6px;justify-content:center;align-items:center;height:36px;padding:0 12px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.account-button:hover{background:#d1d5db}@media (width<=800px){.header-inner{flex-wrap:wrap;gap:15px;height:auto;min-height:70px;padding:15px 20px}.main-nav{order:3;gap:20px;width:100%;margin-left:0;padding-bottom:5px;overflow-x:auto}.account-area{margin-left:auto}.footer-inner{flex-direction:column;align-items:flex-start;gap:20px}}
