@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;700;800&family=JetBrains+Mono&display=swap";.iot-layout{display:flex;min-height:100vh;font-family:Plus Jakarta Sans,sans-serif}.iot-theme-dark{--iot-bg: #09090b;--iot-surface: #18181b;--iot-sidebar: #0c0c10;--iot-border: rgba(255, 255, 255, .06);--iot-text: #f4f4f5;--iot-text-dim: #a1a1aa;--iot-accent: #818cf8;--iot-accent-hover: #6366f1;--iot-card: #18181baa;--iot-code-bg: #0c0c10;--iot-hover-bg: rgba(255, 255, 255, .04);--iot-danger: #ef4444}.iot-theme-light{--iot-bg: #f8fafc;--iot-surface: #ffffff;--iot-sidebar: #ffffff;--iot-border: #e2e8f0;--iot-text: #0f172a;--iot-text-dim: #64748b;--iot-accent: #4f46e5;--iot-accent-hover: #4338ca;--iot-card: #ffffff;--iot-code-bg: #f1f5f9;--iot-hover-bg: rgba(0, 0, 0, .04);--iot-danger: #dc2626}.iot-sidebar{width:260px;min-width:260px;background:var(--iot-sidebar);border-right:1px solid var(--iot-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:transform .3s ease}.iot-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 16px}.iot-logo{font-size:20px;font-weight:800;letter-spacing:-.5px;color:var(--iot-accent);margin:0}.iot-close-btn{display:none;background:none;border:none;color:var(--iot-text);font-size:18px;cursor:pointer;padding:4px}.iot-nav{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:2px}.iot-nav-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:var(--iot-text-dim);text-decoration:none;font-weight:600;font-size:14px;transition:.15s}.iot-nav-link:hover{background:var(--iot-hover-bg);color:var(--iot-text)}.iot-nav-link.active{background:var(--iot-accent);color:#fff}.iot-nav-icon{font-size:16px;width:20px;text-align:center}.iot-sidebar-footer{padding:12px;border-top:1px solid var(--iot-border)}.iot-logout-btn{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:10px;border:none;background:none;color:var(--iot-text-dim);cursor:pointer;font-weight:600;font-size:14px;transition:.15s}.iot-logout-btn:hover{background:var(--iot-danger);color:#fff}.iot-main{flex:1;margin-left:260px;display:flex;flex-direction:column;min-height:100vh;background:var(--iot-bg)}.iot-topbar{display:flex;align-items:center;padding:12px 24px;background:var(--iot-surface);border-bottom:1px solid var(--iot-border);position:sticky;top:0;z-index:50}.iot-hamburger{display:none;background:none;border:none;color:var(--iot-text);font-size:20px;cursor:pointer;padding:6px}.iot-topbar-spacer{flex:1}.iot-theme-btn{background:var(--iot-hover-bg);border:1px solid var(--iot-border);color:var(--iot-text);width:38px;height:38px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}.iot-theme-btn:hover{background:var(--iot-hover-bg);filter:brightness(1.2)}.iot-content{flex:1;padding:24px;overflow-y:auto}.iot-sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:99}.iot-page-title{font-size:24px;font-weight:800;letter-spacing:-.5px;margin:0 0 8px;color:var(--iot-text)}.iot-page-subtitle{color:var(--iot-text-dim);margin:0 0 24px;font-size:14px}.iot-card{background:var(--iot-card);border:1px solid var(--iot-border);border-radius:16px;padding:20px}.iot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.iot-stat-card{background:var(--iot-card);border:1px solid var(--iot-border);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:8px}.iot-stat-label{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--iot-text-dim);font-weight:600}.iot-stat-value{font-size:32px;font-weight:800;color:var(--iot-text)}.iot-stat-accent{color:var(--iot-accent)}.iot-table-wrap{overflow-x:auto}.iot-table{width:100%;border-collapse:collapse;font-size:14px}.iot-table th{text-align:left;padding:10px 12px;font-weight:700;color:var(--iot-text-dim);border-bottom:1px solid var(--iot-border);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.iot-table td{padding:10px 12px;border-bottom:1px solid var(--iot-border);color:var(--iot-text)}.iot-badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700}.iot-badge-online{background:#10b98126;color:#10b981}.iot-badge-offline{background:#ef444426;color:#ef4444}.iot-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:10px;font-weight:700;font-size:13px;cursor:pointer;border:none;transition:.15s;text-decoration:none}.iot-btn-primary{background:var(--iot-accent);color:#fff}.iot-btn-primary:hover{background:var(--iot-accent-hover)}.iot-btn-outline{background:transparent;border:1px solid var(--iot-border);color:var(--iot-text)}.iot-btn-outline:hover{background:var(--iot-hover-bg)}.iot-btn-danger{background:transparent;border:1px solid var(--iot-danger);color:var(--iot-danger)}.iot-btn-danger:hover{background:var(--iot-danger);color:#fff}.iot-btn-sm{padding:5px 10px;font-size:11px;border-radius:6px}.iot-btn-group{display:flex;gap:8px;flex-wrap:wrap}.iot-form{display:flex;flex-direction:column;gap:16px;max-width:560px}.iot-form-group{display:flex;flex-direction:column;gap:6px}.iot-form-group label{font-size:13px;font-weight:700;color:var(--iot-text)}.iot-form-group input,.iot-form-group textarea,.iot-form-group select{background:var(--iot-code-bg);border:1px solid var(--iot-border);color:var(--iot-text);padding:10px 14px;border-radius:10px;font-size:14px;outline:none;font-family:inherit}.iot-form-group input:focus,.iot-form-group textarea:focus,.iot-form-group select:focus{border-color:var(--iot-accent)}.iot-form-group textarea{min-height:80px;resize:vertical}.iot-search{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.iot-search input{flex:1;min-width:200px;background:var(--iot-card);border:1px solid var(--iot-border);color:var(--iot-text);padding:10px 14px;border-radius:10px;font-size:14px;outline:none}.iot-search input:focus{border-color:var(--iot-accent)}.iot-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.iot-detail-item{display:flex;flex-direction:column;gap:4px}.iot-detail-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--iot-text-dim);font-weight:700}.iot-detail-value{font-size:14px;color:var(--iot-text)}.iot-code{font-family:JetBrains Mono,monospace;background:var(--iot-code-bg);color:#34d399;padding:10px 14px;border-radius:10px;font-size:13px;word-break:break-all;border:1px solid rgba(16,185,129,.1);display:block}.iot-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.iot-modal{background:var(--iot-card);border:1px solid var(--iot-border);padding:28px;border-radius:20px;width:100%;max-width:440px;text-align:center;box-shadow:0 25px 50px -12px #00000080;animation:iotModalPop .25s cubic-bezier(.34,1.56,.64,1)}.iot-modal h3{margin:0 0 8px;color:var(--iot-text)}.iot-modal p{color:var(--iot-text-dim);margin:0 0 20px;font-size:14px}@keyframes iotModalPop{0%{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.iot-toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,100px);background:var(--iot-accent);color:#fff;padding:10px 24px;border-radius:50px;font-weight:700;z-index:300;opacity:0;transition:all .3s ease;pointer-events:none}.iot-toast.show{opacity:1;transform:translate(-50%)}.iot-loading{display:flex;align-items:center;justify-content:center;padding:60px;color:var(--iot-text-dim);font-size:14px}@media(max-width:768px){.iot-sidebar{transform:translate(-100%)}.iot-sidebar.open{transform:translate(0)}.iot-sidebar-overlay{display:block}.iot-main{margin-left:0}.iot-hamburger,.iot-close-btn{display:block}.iot-content{padding:16px}}*,*:before,*:after{box-sizing:border-box}:has(.pv-standalone) nav,:has(.pv-standalone) .navbar,:has(.pv-standalone) header:not(.pv-header){display:none!important}.pv-standalone{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;overflow-y:auto;overflow-x:hidden;margin:0!important}.pv-theme-dark{--bg: #09090b;--card: #18181baa;--text: #f4f4f5;--text-dim: #a1a1aa;--border: rgba(255, 255, 255, .06);--accent: #818cf8;--accent-glow: rgba(129, 140, 248, .15);--code-bg: #0c0c10;--code-text: #34d399;--tag-bg: rgba(255, 255, 255, .04);--modal-overlay: rgba(0, 0, 0, .85);--btn-cancel-bg: rgba(255, 255, 255, .04)}.pv-theme-light{--bg: #f8fafc;--card: #ffffff;--text: #0f172a;--text-dim: #64748b;--border: #e2e8f0;--accent: #4f46e5;--accent-glow: rgba(79, 70, 229, .08);--code-bg: #f1f5f9;--code-text: #059669;--tag-bg: rgba(0, 0, 0, .04);--modal-overlay: rgba(0, 0, 0, .6);--btn-cancel-bg: rgba(0, 0, 0, .04)}.pv-wrap{min-height:100%;background-color:var(--bg);color:var(--text);font-family:Plus Jakarta Sans,sans-serif;padding:20px 24px 60px;position:relative}.pv-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.pv-blob{position:absolute;width:600px;height:600px;background:var(--accent);filter:blur(120px);opacity:.12;top:-300px;right:-150px}.login-center{display:flex;align-items:center;justify-content:center}.login-form{width:100%;max-width:380px;text-align:center}.login-icon{font-size:40px;color:var(--accent);margin-bottom:10px}.pv-header{position:relative;z-index:1;max-width:1200px;margin:0 auto 30px}.pv-header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.pv-badge{background:var(--accent);color:#fff;padding:4px 12px;border-radius:30px;font-size:11px;font-weight:800}.pv-controls{display:flex;gap:8px}.pv-add-btn,.pv-theme-toggle,.pv-logout-btn{background:var(--card);border:1px solid var(--border);color:var(--text);width:40px;height:40px;border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s}.pv-add-btn{background:var(--accent);color:#fff;border:none}.pv-logout-btn:hover{background:#ef4444;color:#fff;border-color:#ef4444}.pv-title{font-size:clamp(12px,6vw,24px);margin:0;font-weight:800;letter-spacing:-1px}.pv-admin-form{background:var(--card);padding:24px;border-radius:20px;border:1px solid var(--border);margin-top:20px;display:grid;gap:12px;animation:slideIn .3s ease-out;position:relative;z-index:2}.pv-admin-form input{background:var(--code-bg);border:1px solid var(--border);color:var(--text);padding:12px;border-radius:10px;outline:none}.pv-submit-btn{background:var(--accent);color:#fff;border:none;padding:12px;border-radius:10px;font-weight:800;cursor:pointer}.pv-grid{position:relative;z-index:1;max-width:1200px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.pv-card{background:var(--card);border:1px solid var(--border);border-radius:24px;padding:24px;display:flex;flex-direction:column;min-width:0}.pv-card-top-section{flex-grow:1;min-width:0}.pv-card-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.pv-type-icon{color:var(--accent);font-size:18px;flex-shrink:0}.pv-card-title{margin:0;font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pv-code-block{display:block;font-family:JetBrains Mono,monospace;background:var(--code-bg);color:var(--code-text);padding:12px;border-radius:10px;font-size:13px;word-break:break-all;border:1px solid rgba(16,185,129,.1)}.pv-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.pv-tag{background:var(--tag-bg);color:var(--text-dim);font-size:11px;padding:4px 10px;border-radius:6px;border:1px solid var(--border)}.pv-card-actions{display:flex;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.pv-action-btn{background:var(--card);border:1px solid var(--border);color:var(--text);width:38px;height:38px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center}.pv-action-btn.del-btn:hover{background:#ef4444;color:#fff;border-color:#ef4444}.pv-toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,100px);background:var(--accent);color:#fff;padding:10px 24px;border-radius:50px;font-weight:700;z-index:100000;opacity:0;transition:all .3s ease}.pv-toast.show{opacity:1;transform:translate(-50%)}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.pv-loading-overlay,.v-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--modal-overlay);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:999999;padding:20px}.pv-loading-card,.v-modal{background:var(--card);border:1px solid var(--border);padding:30px;border-radius:28px;width:100%;max-width:420px;text-align:center;box-shadow:0 25px 50px -12px #00000080;animation:modalPop .3s cubic-bezier(.34,1.56,.64,1)}.v-modal h3{margin-top:0;color:var(--text)}.v-modal p{color:var(--text-dim);margin-bottom:1.5rem}.v-modal-footer{display:flex;gap:12px;justify-content:center;margin-top:25px}.pv-icon-btn{width:45px;height:45px;border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s;border:none;font-size:1.2rem}.btn-confirm{background:var(--accent);color:#fff}.btn-cancel{background:var(--tag-bg);color:var(--text);border:1px solid var(--border)}.btn-danger{background:#ef4444;color:#fff}.pv-icon-btn:hover{transform:scale(1.05);filter:brightness(1.1)}@keyframes modalPop{0%{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes loading-slide{0%{transform:translate(-100%)}to{transform:translate(250%)}}.pv-loading-bar{height:4px;width:100%;background:#ffffff1a;border-radius:10px;overflow:hidden}.pv-loading-progress{height:100%;width:40%;background:linear-gradient(90deg,#6366f1,#a855f7);border-radius:10px;animation:loading-slide 1.5s infinite ease-in-out}.pulse{animation:pulse 2s infinite ease-in-out}@keyframes pulse{0%{transform:scale(1);opacity:.8}50%{transform:scale(1.1);opacity:1}to{transform:scale(1);opacity:.8}}
