*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f172a;--surface: #1e293b;--surface-hover: #273549;--border: #334155;--text: #f1f5f9;--text-muted: #94a3b8;--green: #22c55e;--red: #ef4444;--yellow: #eab308;--blue: #60a5fa;--gray: #64748b;--radius: 8px;--gap: 12px}html,body{min-height:100vh;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;z-index:10}.app-title{font-size:18px;font-weight:800;color:var(--blue);letter-spacing:-.3px}.installer-info{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-muted)}.btn-text{background:none;border:none;color:var(--blue);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:4px;transition:background .15s}.btn-text:hover{background:var(--surface-hover)}.app-main{flex:1;padding:16px;max-width:680px;margin:0 auto;width:100%}.imei-form{display:flex;gap:8px;margin-bottom:16px}.imei-input{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:16px;font-family:Courier New,monospace;letter-spacing:1px;padding:10px 12px;outline:none;transition:border-color .15s;min-width:0}.imei-input:focus{border-color:var(--blue)}.imei-input::placeholder{color:var(--gray);letter-spacing:0;font-family:inherit}.btn-primary{background:var(--blue);border:none;border-radius:var(--radius);color:#0f172a;cursor:pointer;font-size:15px;font-weight:700;padding:10px 20px;white-space:nowrap;transition:opacity .15s;display:flex;align-items:center;gap:6px}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-primary:not(:disabled):hover{opacity:.88}.alert{border-radius:var(--radius);padding:12px 16px;margin-bottom:16px;font-size:14px}.alert-warning{background:#eab3081f;border:1px solid rgba(234,179,8,.35);color:#fde047}.alert-error{background:#ef44441f;border:1px solid rgba(239,68,68,.35);color:#fca5a5}.debug-panel{margin-top:12px;padding:12px;border-radius:var(--radius);border:1px solid rgba(239,68,68,.25);background:#0f172abf;color:#fecaca;font-size:12px;line-height:1.45;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.alert-info{background:#60a5fa1f;border:1px solid rgba(96,165,250,.35);color:#93c5fd;display:flex;align-items:center;gap:10px}.device-panel{display:flex;flex-direction:column;gap:var(--gap)}.device-header{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.device-status-row{display:flex;align-items:center;gap:10px;margin-bottom:4px;flex-wrap:wrap}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-dot.green{background:var(--green);box-shadow:0 0 8px var(--green)}.status-dot.red{background:var(--red)}.status-dot.gray{background:var(--gray)}.device-name{font-size:16px;font-weight:600;flex:1}.live-badge{background:#22c55e26;border:1px solid rgba(34,197,94,.4);border-radius:4px;color:var(--green);font-size:11px;font-weight:700;letter-spacing:1.5px;padding:2px 7px}.device-timestamp{color:var(--text-muted);font-size:13px}.info-grid{display:grid;gap:var(--gap);grid-template-columns:1fr}@media (min-width: 480px){.info-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.info-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.info-card-label{color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;margin-bottom:6px}.info-card-value{font-size:15px;font-weight:500;margin-bottom:2px;word-break:break-all}.info-card-sub{color:var(--text-muted);font-size:13px;margin-top:2px}.maps-link{color:var(--blue);display:inline-block;font-size:13px;margin-top:8px;text-decoration:none}.maps-link:hover{text-decoration:underline}.sensors-section{display:flex;flex-direction:column;gap:8px}.sensors-section h3{color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase}.sensor-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.sensor-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--gray);border-radius:var(--radius);padding:10px 12px}.sensor-card.sensor-green{border-left-color:var(--green)}.sensor-card.sensor-red{border-left-color:var(--red)}.sensor-card.sensor-yellow{border-left-color:var(--yellow)}.sensor-name{color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;margin-bottom:4px}.sensor-value{font-size:15px;font-weight:700}.sensor-card.sensor-green .sensor-value{color:var(--green)}.sensor-card.sensor-red .sensor-value{color:var(--red)}.sensor-card.sensor-yellow .sensor-value{color:var(--yellow)}.setup-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;background:var(--bg)}.setup-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:36px 28px;width:100%;max-width:380px;text-align:center}.setup-card h1{color:var(--blue);font-size:30px;font-weight:800;letter-spacing:-.5px;margin-bottom:6px}.setup-card p{color:var(--text-muted);margin-bottom:28px;font-size:14px}.setup-card form{display:flex;flex-direction:column;gap:12px}.setup-card input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:16px;padding:12px 14px;text-align:center;outline:none;width:100%;transition:border-color .15s}.setup-card input:focus{border-color:var(--blue)}.setup-card button{background:var(--blue);border:none;border-radius:var(--radius);color:#0f172a;cursor:pointer;font-size:16px;font-weight:700;padding:13px;transition:opacity .15s}.setup-card button:disabled{opacity:.45;cursor:not-allowed}.setup-card button:not(:disabled):hover{opacity:.88}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;width:15px;height:15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .65s linear infinite;flex-shrink:0}
