/* ULTRASONIX — Mobile-first + Desktop Dual Layout */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;-webkit-text-size-adjust:100%}
body{font-family:'Inter',sans-serif;background:#080c14;color:#e2e8f0;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}
input[type=number]{-moz-appearance:textfield}
button{cursor:pointer;border:none;background:none;font-family:inherit}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(0,212,255,0.2);border-radius:4px}

/* LOADING */
#loading-overlay{position:fixed;inset:0;background:#080c14;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:9999;transition:opacity 0.4s ease}
#loading-overlay.hidden{opacity:0;pointer-events:none;display:none}
.loading-spinner-wrap{position:relative;width:72px;height:72px}
.loading-logo-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.spin-circle{animation:spinArc 1.4s linear infinite;transform-origin:36px 36px}
@keyframes spinArc{to{transform:rotate(360deg)}}
.loading-text{font-size:10px;font-weight:700;letter-spacing:4px;color:rgba(0,212,255,0.7);animation:pulse 1.5s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:0.5}50%{opacity:1}}

/* TOAST */
#toast-container{position:fixed;top:16px;right:16px;z-index:8000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{padding:10px 16px;border-radius:10px;font-size:12px;font-weight:500;backdrop-filter:blur(20px);border:1px solid;animation:toastIn 0.3s ease;max-width:280px;pointer-events:all}
.toast-success{background:rgba(52,211,153,0.15);border-color:rgba(52,211,153,0.3);color:#34d399}
.toast-error{background:rgba(239,68,68,0.15);border-color:rgba(239,68,68,0.3);color:#ef4444}
.toast-info{background:rgba(0,212,255,0.15);border-color:rgba(0,212,255,0.3);color:#00d4ff}
.toast-warning{background:rgba(251,191,36,0.15);border-color:rgba(251,191,36,0.3);color:#fbbf24}
@keyframes toastIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ── LOGIN PAGE ── */
#page-login{display:none;position:fixed;inset:0;background:radial-gradient(ellipse at 20% 50%,rgba(0,102,255,0.12),transparent 60%),radial-gradient(ellipse at 80% 20%,rgba(139,92,246,0.1),transparent 50%),#080c14;align-items:center;justify-content:center;z-index:100;padding:20px;overflow:hidden}
#page-login.active{display:flex}
.orb1{position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(0,212,255,0.08),transparent 70%);top:-80px;left:-80px;animation:orbFloat 8s ease-in-out infinite;pointer-events:none}
.orb2{position:absolute;width:250px;height:250px;border-radius:50%;background:radial-gradient(circle,rgba(139,92,246,0.08),transparent 70%);bottom:-60px;right:-60px;animation:orbFloat 10s ease-in-out infinite reverse;pointer-events:none}
@keyframes orbFloat{0%,100%{transform:translate(0,0)}50%{transform:translate(20px,-20px)}}
.login-card{position:relative;background:rgba(12,18,30,0.95);border:1px solid rgba(0,212,255,0.15);border-radius:22px;padding:36px 28px;width:100%;max-width:380px;backdrop-filter:blur(20px);box-shadow:0 0 60px rgba(0,212,255,0.06),0 20px 60px rgba(0,0,0,0.5);z-index:2}
.login-logo{text-align:center;margin-bottom:28px}
.login-logo-icon{width:68px;height:68px;border-radius:18px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.25);display:flex;align-items:center;justify-content:center;margin:0 auto 12px;box-shadow:0 0 30px rgba(0,212,255,0.12);animation:iconFloat 3s ease-in-out infinite}
@keyframes iconFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.login-title{font-size:22px;font-weight:900;letter-spacing:4px;background:linear-gradient(135deg,#00d4ff,#0066ff,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.login-subtitle{font-size:11px;color:#64748b;margin-top:4px;letter-spacing:1px}
.login-error{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.25);color:#ef4444;padding:10px 14px;border-radius:10px;font-size:12px;margin-bottom:14px}
.form-group{margin-bottom:14px}
.form-label{display:block;font-size:10px;font-weight:700;color:#64748b;letter-spacing:1.5px;margin-bottom:6px;text-transform:uppercase}
.form-input{width:100%;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:10px;padding:11px 14px;font-size:13px;color:#e2e8f0;font-family:inherit;transition:all 0.2s;outline:none}
.form-input:focus{border-color:rgba(0,212,255,0.4);background:rgba(0,212,255,0.04);box-shadow:0 0 0 3px rgba(0,212,255,0.08)}
.form-input::placeholder{color:#334155}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:10px;font-size:13px;font-weight:600;transition:all 0.2s;outline:none;border:none;cursor:pointer;font-family:inherit}
.btn-primary{background:linear-gradient(135deg,#0066ff,#00d4ff);color:#fff;box-shadow:0 4px 20px rgba(0,102,255,0.3)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 24px rgba(0,102,255,0.4)}
.btn-secondary{background:rgba(255,255,255,0.05);color:#94a3b8;border:1px solid rgba(255,255,255,0.08)}
.btn-secondary:hover{background:rgba(255,255,255,0.08);color:#e2e8f0}
.btn-success{background:linear-gradient(135deg,#10b981,#34d399);color:#fff;box-shadow:0 4px 20px rgba(16,185,129,0.3)}
.btn-ghost{background:transparent;color:#64748b;border:1px solid rgba(255,255,255,0.06);font-size:12px;padding:7px 12px;border-radius:8px}
.btn-ghost:hover{background:rgba(255,255,255,0.04);color:#94a3b8}
.btn-full{width:100%}
.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}
.btn:disabled{opacity:0.4;cursor:not-allowed}
.hidden{display:none!important}

/* ── APP SHELL ── */
#app-shell{display:none;width:100%;min-height:100vh;flex-direction:row}
#app-shell.visible{display:flex}

/* ── SIDEBAR (desktop only, hidden on mobile) ── */
.sidebar{display:none;width:220px;min-height:100vh;background:rgba(8,12,20,0.98);border-right:1px solid rgba(255,255,255,0.05);flex-direction:column;position:fixed;left:0;top:0;bottom:0;z-index:200;overflow-y:auto}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:18px 16px;border-bottom:1px solid rgba(255,255,255,0.05);flex-shrink:0}
.sidebar-brand-icon{width:32px;height:32px;border-radius:8px;background:rgba(0,212,255,0.1);border:1px solid rgba(0,212,255,0.2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sidebar-brand span{font-size:11px;font-weight:900;letter-spacing:2.5px;background:linear-gradient(135deg,#00d4ff,#0066ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.sidebar-nav{flex:1;padding:14px 10px;display:flex;flex-direction:column;gap:3px}
.snav-btn{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-size:13px;font-weight:500;color:#64748b;transition:all 0.2s;width:100%;text-align:left;border:1px solid transparent;cursor:pointer;font-family:inherit;background:transparent}
.snav-btn:hover{background:rgba(255,255,255,0.04);color:#94a3b8}
.snav-btn.active{background:rgba(0,212,255,0.08);color:#00d4ff;border-color:rgba(0,212,255,0.15)}
.snav-btn:disabled{opacity:0.3;cursor:not-allowed}
.sidebar-footer{padding:12px 10px;border-top:1px solid rgba(255,255,255,0.05);flex-shrink:0}
.sidebar-user-row{display:flex;align-items:center;gap:10px;padding:8px;border-radius:10px;background:rgba(255,255,255,0.02);margin-bottom:8px}
.sidebar-avatar{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#0066ff,#00d4ff);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}
.sidebar-user-info{flex:1;min-width:0}
.sidebar-user-name{font-size:12px;font-weight:600;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-email{font-size:10px;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-logout-btn{width:100%;padding:8px;border-radius:8px;background:rgba(239,68,68,0.06);border:1px solid rgba(239,68,68,0.12);color:#ef4444;font-size:12px;display:flex;align-items:center;justify-content:center;gap:6px;transition:all 0.2s;cursor:pointer;font-family:inherit}
.sidebar-logout-btn:hover{background:rgba(239,68,68,0.12)}

/* ── MAIN WRAP ── */
.main-wrap{flex:1;display:flex;flex-direction:column;min-height:100vh;overflow:hidden;min-width:0}

/* ── MOBILE TOP BAR (visible on mobile, hidden on desktop) ── */
.mobile-topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:rgba(8,12,20,0.97);border-bottom:1px solid rgba(255,255,255,0.05);position:sticky;top:0;z-index:100;backdrop-filter:blur(20px);flex-shrink:0}
.mtb-left{display:flex;align-items:center;gap:8px}
.mtb-logo-icon{width:26px;height:26px;border-radius:6px;background:rgba(0,212,255,0.1);border:1px solid rgba(0,212,255,0.2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.mtb-brand{font-size:11px;font-weight:900;letter-spacing:2.5px;background:linear-gradient(135deg,#00d4ff,#0066ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.mtb-right{display:flex;align-items:center;gap:8px}
.mobile-device-badge{display:flex;align-items:center;gap:5px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.2);border-radius:20px;padding:3px 10px;font-size:10px;font-weight:600;color:#00d4ff}
.mtb-avatar{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#0066ff,#00d4ff);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}

/* ── DESKTOP TOP BAR (hidden on mobile, shown on desktop) ── */
.desktop-topbar{display:none;align-items:center;justify-content:space-between;padding:14px 28px;background:rgba(8,12,20,0.97);border-bottom:1px solid rgba(255,255,255,0.05);position:sticky;top:0;z-index:100;backdrop-filter:blur(20px);flex-shrink:0}
.dtb-title{font-size:16px;font-weight:700;color:#e2e8f0}
.dtb-right{display:flex;align-items:center;gap:14px}
.desktop-device-badge{display:flex;align-items:center;gap:5px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.2);border-radius:20px;padding:4px 12px;font-size:11px;font-weight:600;color:#00d4ff}
.dtb-user{display:flex;align-items:center;gap:8px}
.dtb-avatar{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#0066ff,#00d4ff);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}
#desktop-user-name{font-size:13px;font-weight:500;color:#94a3b8}

/* ── APP PAGES ── */
.app-page{display:none;flex:1;overflow:hidden;flex-direction:column}
.app-page.active{display:flex}
.page-scroll{flex:1;overflow-y:auto;padding:14px 14px 90px;display:flex;flex-direction:column;gap:12px}

/* ── MOBILE BOTTOM NAV ── */
.bottom-nav{display:flex;align-items:center;background:rgba(8,12,20,0.98);border-top:1px solid rgba(255,255,255,0.06);position:fixed;bottom:0;left:0;right:0;z-index:200;padding:6px 0 calc(6px + env(safe-area-inset-bottom));backdrop-filter:blur(20px)}
.bnav-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px;color:#475569;font-size:9px;font-weight:600;letter-spacing:0.5px;transition:all 0.2s;border-radius:10px;margin:0 4px;cursor:pointer;font-family:inherit;background:transparent;border:none}
.bnav-btn.active{color:#00d4ff}
.bnav-btn.active svg{filter:drop-shadow(0 0 6px rgba(0,212,255,0.5))}
.bnav-btn:disabled{opacity:0.3;cursor:not-allowed}

/* ── STATS ROW ── */
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.stat-chip{background:rgba(12,18,30,0.9);border:1px solid rgba(255,255,255,0.06);border-radius:12px;padding:10px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.stat-chip-icon{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.stat-chip-val{font-size:16px;font-weight:800;color:#e2e8f0;line-height:1;font-family:'JetBrains Mono',monospace}
.stat-chip-lbl{font-size:9px;color:#475569;font-weight:600;letter-spacing:0.5px}

/* ── SECTION HEADER ── */
.section-hdr{display:flex;align-items:center;justify-content:space-between;padding:2px 0}
.section-hdr-title{font-size:13px;font-weight:700;color:#94a3b8;letter-spacing:0.5px}
.btn-add-device{display:flex;align-items:center;gap:5px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.2);color:#00d4ff;padding:6px 12px;border-radius:8px;font-size:11px;font-weight:600;transition:all 0.2s;cursor:pointer;font-family:inherit}
.btn-add-device:hover{background:rgba(0,212,255,0.14)}

/* ── EMPTY / LOADING ── */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 20px;color:#334155;font-size:12px;text-align:center}
.loading-dots{display:flex;gap:6px}
.loading-dots span{width:6px;height:6px;border-radius:50%;background:#00d4ff;animation:dotPulse 1.4s ease-in-out infinite}
.loading-dots span:nth-child(2){animation-delay:0.2s}
.loading-dots span:nth-child(3){animation-delay:0.4s}
@keyframes dotPulse{0%,80%,100%{opacity:0.2;transform:scale(0.8)}40%{opacity:1;transform:scale(1)}}

/* ── DEVICE CARDS ── */
.devices-list{display:flex;flex-direction:column;gap:8px}
.device-card{background:rgba(12,18,30,0.9);border:1px solid rgba(255,255,255,0.06);border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all 0.25s;position:relative;overflow:hidden}
.device-card:hover{border-color:rgba(0,212,255,0.25);transform:translateY(-1px);box-shadow:0 4px 20px rgba(0,0,0,0.3)}
.device-card-icon{width:40px;height:40px;border-radius:12px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.15);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.device-card-info{flex:1;min-width:0}
.device-card-name{font-size:14px;font-weight:700;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.device-card-id{font-size:10px;color:#475569;font-family:'JetBrains Mono',monospace;margin-top:2px}
.device-card-meta{display:flex;align-items:center;gap:8px;margin-top:5px}
.device-status-pill{display:flex;align-items:center;gap:4px;font-size:9px;font-weight:600;letter-spacing:0.5px;padding:2px 8px;border-radius:20px}
.status-online{background:rgba(52,211,153,0.12);color:#34d399;border:1px solid rgba(52,211,153,0.2)}
.status-offline{background:rgba(100,116,139,0.12);color:#64748b;border:1px solid rgba(100,116,139,0.2)}
.status-alarm{background:rgba(239,68,68,0.12);color:#ef4444;border:1px solid rgba(239,68,68,0.2)}
.device-card-arrow{color:#334155;flex-shrink:0}

/* ── LIVE DOT ── */
.live-dot{width:6px;height:6px;border-radius:50%;background:#34d399;animation:livePulse 2s ease-in-out infinite;flex-shrink:0;display:inline-block}
@keyframes livePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(1.3)}}

/* ── ALARM BANNER ── */
.alarm-banner{display:flex;align-items:center;gap:10px;background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.3);border-radius:12px;padding:10px 14px;animation:alarmPulse 2s ease-in-out infinite}
@keyframes alarmPulse{0%,100%{border-color:rgba(239,68,68,0.3)}50%{border-color:rgba(239,68,68,0.7)}}
.alarm-banner svg{color:#ef4444;flex-shrink:0}
.alarm-banner span{flex:1;font-size:12px;font-weight:700;color:#ef4444;letter-spacing:1px}
.alarm-dismiss{background:rgba(239,68,68,0.15);border:1px solid rgba(239,68,68,0.25);color:#ef4444;width:22px;height:22px;border-radius:6px;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;font-family:inherit}

/* ── SENSOR CHIPS ── */
.sensor-scroll-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -14px;padding:0 14px 4px}
.sensor-chips-row{display:flex;gap:8px;min-width:max-content}
.sensor-chip{background:rgba(12,18,30,0.9);border:1px solid rgba(255,255,255,0.06);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:68px;transition:all 0.2s}
.sensor-chip:hover{border-color:rgba(0,212,255,0.2)}
.sc-icon{width:28px;height:28px;border-radius:8px;border:1px solid;display:flex;align-items:center;justify-content:center}
.sc-val{font-size:16px;font-weight:800;color:#e2e8f0;font-family:'JetBrains Mono',monospace;line-height:1}
.sc-unit{font-size:9px;color:#475569;font-weight:600}
.sc-lbl{font-size:9px;color:#334155;font-weight:700;letter-spacing:1px}
.sc-alarm .sc-val{color:#ef4444;animation:pulse 1s infinite}

/* ── CONTROLS GRID ── */
.ctrl-grid{display:grid;grid-template-columns:1fr;gap:10px}
.ctrl-card{background:rgba(12,18,30,0.9);border:1px solid rgba(255,255,255,0.06);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}
.ctrl-hdr{display:flex;align-items:center;gap:8px}
.ctrl-icon{width:28px;height:28px;border-radius:8px;border:1px solid;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ctrl-title{font-size:10px;font-weight:800;letter-spacing:2px;color:#94a3b8;flex:1}
.live-badge{display:flex;align-items:center;gap:4px;font-size:9px;font-weight:700;color:#34d399;letter-spacing:1px}

/* ── TIMER ── */
.timer-wheel-wrap{position:relative;display:flex;align-items:center;justify-content:center;margin:4px 0}
.timer-svg{display:block;filter:drop-shadow(0 0 16px rgba(0,212,255,0.15))}
.timer-center-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.timer-display{font-size:28px;font-weight:800;font-family:'JetBrains Mono',monospace;background:linear-gradient(135deg,#00d4ff,#0066ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:2px;line-height:1}
.timer-mm-ss{font-size:9px;color:#334155;font-weight:600;letter-spacing:3px}
.timer-status-dot{width:6px;height:6px;border-radius:50%;background:#334155;transition:background 0.3s}
.timer-status-dot.running{background:#34d399;animation:livePulse 1s infinite}
.timer-inputs-row{display:flex;align-items:center;justify-content:center;gap:8px}
.timer-input-grp{display:flex;flex-direction:column;align-items:center;gap:4px}
.timer-num-input{width:64px;text-align:center;background:rgba(0,212,255,0.05);border:1px solid rgba(0,212,255,0.15);border-radius:10px;padding:8px 6px;font-size:18px;font-weight:800;color:#00d4ff;font-family:'JetBrains Mono',monospace;outline:none;transition:all 0.2s}
.timer-num-input:focus{border-color:rgba(0,212,255,0.4);background:rgba(0,212,255,0.08);box-shadow:0 0 0 3px rgba(0,212,255,0.08)}
.timer-input-lbl{font-size:9px;font-weight:700;color:#475569;letter-spacing:2px}
.timer-colon-sep{font-size:22px;font-weight:800;color:#334155;margin-bottom:16px}
.timer-presets-row{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.preset-pill{padding:5px 12px;border-radius:20px;background:rgba(0,212,255,0.06);border:1px solid rgba(0,212,255,0.12);color:#64748b;font-size:11px;font-weight:600;transition:all 0.2s;cursor:pointer;font-family:inherit}
.preset-pill:hover,.preset-pill.active{background:rgba(0,212,255,0.12);border-color:rgba(0,212,255,0.3);color:#00d4ff}
.timer-ctrl-row{display:flex;gap:8px;align-items:center;justify-content:center}
.tbtn{display:flex;align-items:center;justify-content:center;gap:5px;border-radius:10px;font-size:12px;font-weight:700;padding:9px 18px;transition:all 0.2s;border:none;cursor:pointer;font-family:inherit}
.tbtn-start{background:linear-gradient(135deg,#10b981,#34d399);color:#fff;flex:1;box-shadow:0 4px 16px rgba(16,185,129,0.25)}
.tbtn-start:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(16,185,129,0.35)}
.tbtn-pause{background:rgba(251,191,36,0.1);border:1px solid rgba(251,191,36,0.2);color:#fbbf24;width:38px;height:38px;padding:0;border-radius:10px}
.tbtn-pause:hover{background:rgba(251,191,36,0.18)}
.tbtn-reset{display:flex;align-items:center;gap:6px;padding:0 18px;height:42px;border-radius:12px;background:rgba(100,116,139,0.12);border:1px solid rgba(100,116,139,0.2);color:#94a3b8;font-size:0.82rem;font-weight:600;letter-spacing:0.04em;cursor:pointer;transition:all 0.2s}
.tbtn-reset:hover{background:rgba(100,116,139,0.22);color:#cbd5e1;transform:translateY(-1px)}
.tbtn-toggle-resume{background:linear-gradient(135deg,#f59e0b,#d97706)!important;box-shadow:0 4px 16px rgba(245,158,11,0.35)!important}
.tbtn-toggle-resume:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(245,158,11,0.55)!important}
.pwr-btn{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all 0.2s;flex-shrink:0;cursor:pointer;font-family:inherit;border:1px solid}
.pwr-off{background:rgba(100,116,139,0.1);border-color:rgba(100,116,139,0.2);color:#64748b}
.pwr-on{background:rgba(52,211,153,0.12);border-color:rgba(52,211,153,0.3);color:#34d399;box-shadow:0 0 12px rgba(52,211,153,0.2)}

/* ── PLC MODE ── */
.plc-body{display:flex;flex-direction:column;gap:12px}
.plc-toggle-row{display:flex;align-items:center;justify-content:center;gap:14px}
.plc-mode-lbl{font-size:12px;font-weight:600;color:#475569;min-width:36px}
#plc-lbl-timer{text-align:right}
#plc-lbl-plc{text-align:left}
.plc-switch{position:relative;width:48px;height:26px;cursor:pointer;display:inline-block}
.plc-switch input{opacity:0;width:0;height:0;position:absolute}
.plc-track{position:absolute;inset:0;border-radius:13px;background:rgba(0,212,255,0.1);border:1px solid rgba(0,212,255,0.2);transition:all 0.3s}
.plc-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,#00d4ff,#0066ff);transition:all 0.3s;box-shadow:0 2px 8px rgba(0,102,255,0.4)}
.plc-switch input:checked~.plc-track{background:rgba(139,92,246,0.1);border-color:rgba(139,92,246,0.3)}
.plc-switch input:checked~.plc-thumb{transform:translateX(22px);background:linear-gradient(135deg,#8b5cf6,#ec4899);box-shadow:0 2px 8px rgba(139,92,246,0.4)}
.plc-status-box{background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.05);border-radius:12px;padding:14px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.plc-status-icon{width:44px;height:44px;border-radius:12px;background:rgba(0,212,255,0.06);border:1px solid rgba(0,212,255,0.12);display:flex;align-items:center;justify-content:center}
.plc-status-txt{font-size:13px;font-weight:700;color:#e2e8f0}
.plc-status-sub{font-size:11px;color:#475569}

/* ── PWM POWER ── */
.power-body{display:flex;flex-direction:column;gap:12px}
.power-big-num{font-size:52px;font-weight:900;font-family:'JetBrains Mono',monospace;background:linear-gradient(135deg,#f97316,#fbbf24);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-align:center;line-height:1}
.power-unit-lbl{text-align:center;font-size:11px;color:#64748b;font-weight:500;margin-top:-4px}
.slider-wrap{padding:4px 0}
.power-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:rgba(255,255,255,0.06);outline:none;cursor:pointer;display:block}
.power-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#f97316,#fbbf24);cursor:pointer;box-shadow:0 0 12px rgba(249,115,22,0.5),0 2px 6px rgba(0,0,0,0.4);border:2px solid rgba(255,255,255,0.2);transition:transform 0.15s}
.power-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#f97316,#fbbf24);cursor:pointer;box-shadow:0 0 12px rgba(249,115,22,0.5);border:2px solid rgba(255,255,255,0.2)}
.power-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}
.power-quick-btns{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.pq-btn{padding:7px 4px;border-radius:8px;background:rgba(249,115,22,0.06);border:1px solid rgba(249,115,22,0.15);color:#f97316;font-size:11px;font-weight:700;transition:all 0.2s;cursor:pointer;font-family:inherit}
.pq-btn:hover,.pq-btn.active{background:rgba(249,115,22,0.14);border-color:rgba(249,115,22,0.35)}
.pwm-duty-row{display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.05);border-radius:8px;padding:8px 12px}
.pwm-duty-lbl{font-size:10px;color:#475569;font-weight:600;letter-spacing:0.5px}
.pwm-duty-val{font-size:11px;color:#f97316;font-family:'JetBrains Mono',monospace;font-weight:700}

/* ── AI PANEL ── */
.ai-panel{background:rgba(12,18,30,0.9);border:1px solid rgba(139,92,246,0.15);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:14px}
.ai-panel-hdr{display:flex;align-items:center;justify-content:space-between}
.ai-panel-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:#94a3b8;letter-spacing:0.5px}
.ai-active-badge{display:flex;align-items:center;gap:4px;font-size:9px;font-weight:700;color:#8b5cf6;letter-spacing:1px}
.ai-rings-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ai-ring-item{display:flex;flex-direction:column;align-items:center;gap:4px}
.ai-ring-wrap{position:relative;width:72px;height:72px}
.ai-ring-wrap svg{width:72px;height:72px}
.ai-ring-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;font-family:'JetBrains Mono',monospace}
.ai-ring-lbl{font-size:9px;color:#475569;font-weight:600;letter-spacing:0.3px;text-align:center}
.ai-rec-box{background:rgba(139,92,246,0.04);border:1px solid rgba(139,92,246,0.1);border-radius:12px;padding:12px}
.ai-rec-hdr{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;color:#8b5cf6;letter-spacing:1px;margin-bottom:8px}
.ai-rec-list{display:flex;flex-direction:column;gap:6px}
.ai-rec-item{display:flex;align-items:flex-start;gap:7px;font-size:11px;color:#94a3b8;line-height:1.4}
.ai-rec-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:4px}

/* ── MAINTENANCE ── */
.maint-panel{background:rgba(12,18,30,0.9);border:1px solid rgba(255,255,255,0.06);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}
.maint-panel-hdr{display:flex;align-items:center;justify-content:space-between}
.maint-panel-title{font-size:12px;font-weight:700;color:#94a3b8;letter-spacing:0.5px}
.btn-notify{background:rgba(139,92,246,0.08);border:1px solid rgba(139,92,246,0.2);color:#a78bfa;padding:5px 12px;border-radius:8px;font-size:11px;font-weight:600;transition:all 0.2s;cursor:pointer;font-family:inherit}
.btn-notify:hover{background:rgba(139,92,246,0.15)}
.maint-cards-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.maint-chip{background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.05);border-radius:12px;padding:12px 10px;display:flex;align-items:center;gap:8px}
.maint-chip-icon{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.maint-chip-info{min-width:0}
.maint-chip-lbl{font-size:9px;color:#475569;font-weight:600;letter-spacing:0.5px}
.maint-chip-val{font-size:13px;font-weight:800;color:#e2e8f0;font-family:'JetBrains Mono',monospace;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── ANALYTICS ── */
.analytics-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}
.date-tabs{display:flex;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.date-tab{padding:6px 12px;border-radius:8px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.06);color:#64748b;font-size:11px;font-weight:600;white-space:nowrap;transition:all 0.2s;cursor:pointer;font-family:inherit}
.date-tab.active{background:rgba(0,212,255,0.1);border-color:rgba(0,212,255,0.25);color:#00d4ff}
.btn-export{display:flex;align-items:center;gap:5px;background:rgba(52,211,153,0.08);border:1px solid rgba(52,211,153,0.2);color:#34d399;padding:6px 12px;border-radius:8px;font-size:11px;font-weight:600;white-space:nowrap;transition:all 0.2s;flex-shrink:0;cursor:pointer;font-family:inherit}
.btn-export:hover{background:rgba(52,211,153,0.14)}
.charts-stack{display:flex;flex-direction:column;gap:10px}
.chart-card{background:rgba(12,18,30,0.9);border:1px solid rgba(255,255,255,0.06);border-radius:14px;padding:14px}
.chart-card-title{font-size:11px;font-weight:700;color:#64748b;letter-spacing:0.5px;margin-bottom:12px}
.chart-wrap{position:relative;height:160px}
.chart-wrap canvas{width:100%!important;height:100%!important}

/* ── MODAL ── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:500;padding:20px}
.modal-card{background:rgba(12,18,30,0.99);border:1px solid rgba(255,255,255,0.08);border-radius:18px;padding:24px;width:100%;max-width:360px;box-shadow:0 20px 60px rgba(0,0,0,0.5)}
.modal-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.modal-title{font-size:15px;font-weight:700;color:#e2e8f0}
.modal-close{width:28px;height:28px;border-radius:8px;background:rgba(255,255,255,0.05);color:#64748b;font-size:13px;display:flex;align-items:center;justify-content:center;transition:all 0.2s;cursor:pointer;font-family:inherit;border:none}
.modal-close:hover{background:rgba(239,68,68,0.1);color:#ef4444}

/* ═══════════════════════════════════════════════
   DESKTOP LAYOUT (>=768px)
   Sidebar visible, bottom nav hidden, wider layout
═══════════════════════════════════════════════ */
@media (min-width:768px){
  /* Show desktop elements, hide mobile elements */
  .mobile-topbar{display:none}
  .bottom-nav{display:none}
  .sidebar{display:flex}
  .desktop-topbar{display:flex}
  /* Push main content to the right of sidebar */
  .main-wrap{margin-left:220px}
  /* More spacious page padding, no bottom padding for nav */
  .page-scroll{padding:20px 24px 24px}
  /* Controls in 3 columns on desktop */
  .ctrl-grid{grid-template-columns:repeat(3,1fr)}
  /* Taller charts on desktop */
  .chart-wrap{height:200px}
  /* Larger timer text */
  .timer-display{font-size:32px}
  /* Sensor chips wrap instead of scroll on desktop */
  .sensor-scroll-wrap{overflow-x:visible;margin:0;padding:0}
  .sensor-chips-row{flex-wrap:wrap;min-width:unset;gap:8px}
  .sensor-chip{min-width:90px;flex:1}
  /* Device cards in grid on desktop */
  .devices-list{display:grid;grid-template-columns:repeat(2,1fr)}
  /* Stats row horizontal */
  .stats-row{grid-template-columns:repeat(4,1fr)}
  .stat-chip{flex-direction:row;align-items:center;gap:10px;text-align:left;padding:10px}
  .stat-chip-icon{flex-shrink:0}
  /* AI rings 4 columns */
  .ai-rings-grid{grid-template-columns:repeat(4,1fr)}
}

@media (min-width:1100px){
  .devices-list{grid-template-columns:repeat(3,1fr)}
  .charts-stack{display:grid;grid-template-columns:repeat(2,1fr)}
  .charts-stack .chart-card:last-child{grid-column:1/-1}
  .ai-rings-grid{grid-template-columns:repeat(8,1fr)}
}


/* ── SENSOR GRID 2x3 ── */
.sensor-grid-wrap{margin-bottom:12px}
.sensor-chips-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sensor-chips-grid .sensor-chip{min-width:unset;flex:unset;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 6px}

/* ── FREQUENCY GRAPH ── */
.freq-graph-wrap{background:rgba(0,0,0,0.3);border:1px solid rgba(0,212,255,0.1);border-radius:10px;padding:8px;margin-bottom:6px}
.freq-graph-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.freq-graph-lbl{font-size:9px;font-weight:700;color:#475569;letter-spacing:1px;text-transform:uppercase}
.freq-graph-val{font-size:11px;font-weight:700;color:#00d4ff;font-family:'JetBrains Mono',monospace}
.freq-wave-canvas{width:100%;height:60px;display:block;border-radius:6px}
.freq-graph-state{font-size:9px;color:#334155;text-align:center;margin-top:4px}
.freq-graph-state.active{color:#00d4ff}
.freq-graph-state.running{color:#10b981}

/* ── MOBILE TOP BAR ── */
.mobile-topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:rgba(8,12,20,0.97);border-bottom:1px solid rgba(0,212,255,0.08);position:sticky;top:0;z-index:100;flex-shrink:0}
.mtb-left{display:flex;align-items:center;gap:8px}
.mtb-right{display:flex;align-items:center;gap:8px}
.mtb-brand{display:flex;align-items:center;gap:6px}
.mtb-logo-icon{width:26px;height:26px;border-radius:7px;background:rgba(0,212,255,0.1);border:1px solid rgba(0,212,255,0.2);display:flex;align-items:center;justify-content:center}
.mobile-device-badge{display:flex;align-items:center;gap:5px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.15);border-radius:20px;padding:4px 10px;font-size:10px;font-weight:600;color:#00d4ff;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mtb-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#0066ff,#00d4ff);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}

/* ── DESKTOP TOP BAR ── */
.desktop-topbar{display:none;align-items:center;justify-content:space-between;padding:12px 24px;background:rgba(8,12,20,0.97);border-bottom:1px solid rgba(0,212,255,0.08);flex-shrink:0;position:sticky;top:0;z-index:50}
.dtb-title{font-size:16px;font-weight:800;color:#e2e8f0;letter-spacing:0.5px}
.dtb-right{display:flex;align-items:center;gap:12px}
.desktop-device-badge{display:flex;align-items:center;gap:6px;background:rgba(0,212,255,0.08);border:1px solid rgba(0,212,255,0.15);border-radius:20px;padding:5px 12px;font-size:11px;font-weight:600;color:#00d4ff}
.dtb-user{display:flex;align-items:center;gap:8px}
.dtb-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#0066ff,#00d4ff);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}

/* ── BOTTOM NAV LOGOUT ── */
.bnav-logout{color:#ef4444!important}
.bnav-logout svg{opacity:0.7!important}

/* ── RESPONSIVE DESKTOP OVERRIDE ── */
@media(min-width:768px){
  .mobile-topbar{display:none!important}
  .bottom-nav{display:none!important}
  .desktop-topbar{display:flex!important}
  .sidebar{display:flex!important}
}


/* ═══════════════════════════════════════════════════════════════
   NEW LOGIN PAGE STYLES
═══════════════════════════════════════════════════════════════ */
.login-particles { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.login-particles span {
  position:absolute; display:block; border-radius:50%;
  background:rgba(0,212,255,0.08); animation:floatParticle 8s infinite ease-in-out;
}
.login-particles span:nth-child(1) { width:80px; height:80px; left:10%; top:20%; animation-delay:0s; }
.login-particles span:nth-child(2) { width:50px; height:50px; right:15%; top:40%; animation-delay:1.5s; }
.login-particles span:nth-child(3) { width:120px; height:120px; left:60%; bottom:20%; animation-delay:3s; }
.login-particles span:nth-child(4) { width:40px; height:40px; left:30%; bottom:30%; animation-delay:4.5s; }
.login-particles span:nth-child(5) { width:60px; height:60px; right:30%; top:15%; animation-delay:2s; }
@keyframes floatParticle {
  0%,100% { transform:translateY(0) scale(1); opacity:0.4; }
  50% { transform:translateY(-30px) scale(1.1); opacity:0.8; }
}

/* Login tabs */
.login-tabs {
  display:flex; position:relative; background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.08); border-radius:12px;
  padding:4px; margin-bottom:20px; gap:4px;
}
.login-tab {
  flex:1; padding:9px 12px; border:none; background:transparent;
  color:var(--text-muted); font-size:0.82rem; font-weight:600;
  border-radius:9px; cursor:pointer; transition:all 0.25s; position:relative; z-index:1;
  font-family:inherit; letter-spacing:0.02em;
}
.login-tab.active { color:#fff; }
.login-tab-indicator {
  position:absolute; top:4px; left:4px; bottom:4px;
  width:calc(50% - 6px);
  background:linear-gradient(135deg, rgba(0,212,255,0.2), rgba(0,102,255,0.2));
  border:1px solid rgba(0,212,255,0.3); border-radius:9px;
  transition:transform 0.3s cubic-bezier(0.4,0,0.2,1);
  box-shadow:0 0 12px rgba(0,212,255,0.15);
}
.login-tab-indicator.right { transform:translateX(calc(100% + 4px)); }

/* Input with icon */
.input-icon-wrap { position:relative; }
.input-icon {
  position:absolute; left:12px; top:50%; transform:translateY(-50%);
  color:var(--text-muted); pointer-events:none;
}
.form-input-icon { padding-left:38px !important; padding-right:40px !important; }
.input-eye {
  position:absolute; right:10px; top:50%; transform:translateY(-50%);
  background:none; border:none; color:var(--text-muted); cursor:pointer;
  padding:4px; border-radius:4px; transition:color 0.2s;
}
.input-eye:hover { color:var(--text-primary); }

/* Submit button */
.btn-login-submit {
  width:100%; display:flex; align-items:center; justify-content:center; gap:10px;
  padding:13px 20px; border:none; border-radius:12px; cursor:pointer;
  font-size:0.92rem; font-weight:700; font-family:inherit; letter-spacing:0.04em;
  background:linear-gradient(135deg, #0066ff, #00d4ff);
  color:#fff; transition:all 0.25s; position:relative; overflow:hidden;
  box-shadow:0 4px 20px rgba(0,102,255,0.35);
}
.btn-login-submit:hover { transform:translateY(-2px); box-shadow:0 8px 28px rgba(0,102,255,0.5); }
.btn-login-submit:active { transform:translateY(0); }
.btn-register-submit {
  background:linear-gradient(135deg, #7c3aed, #0066ff);
  box-shadow:0 4px 20px rgba(124,58,237,0.35);
}
.btn-register-submit:hover { box-shadow:0 8px 28px rgba(124,58,237,0.5); }

/* Login footer */
.login-footer {
  text-align:center; font-size:0.7rem; color:var(--text-muted);
  margin-top:18px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.06);
  letter-spacing:0.03em;
}

/* ═══════════════════════════════════════════════════════════════
   SINGLE TIMER TOGGLE BUTTON
═══════════════════════════════════════════════════════════════ */
.timer-ctrl-single { justify-content:center; }
.tbtn-toggle {
  display:flex; align-items:center; justify-content:center; gap:8px;
  padding:11px 32px; border:none; border-radius:12px; cursor:pointer;
  font-size:0.88rem; font-weight:700; font-family:inherit; letter-spacing:0.05em;
  transition:all 0.25s; min-width:130px;
}
.tbtn-toggle-start {
  background:linear-gradient(135deg, #10b981, #059669);
  color:#fff; box-shadow:0 4px 16px rgba(16,185,129,0.4);
}
.tbtn-toggle-start:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(16,185,129,0.55); }
.tbtn-toggle-stop {
  background:linear-gradient(135deg, #ef4444, #dc2626);
  color:#fff; box-shadow:0 4px 16px rgba(239,68,68,0.4);
}
.tbtn-toggle-stop:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(239,68,68,0.55); }
.tbtn-toggle:active { transform:translateY(0) scale(0.97); }
