:root{--primary: #2563eb;--primary-foreground: #ffffff;--secondary: #64748b;--secondary-foreground: #ffffff;--success: #10b981;--success-foreground: #ffffff;--warning: #f59e0b;--warning-foreground: #ffffff;--destructive: #ef4444;--destructive-foreground: #ffffff;--muted: #64748b;--muted-foreground: #94a3b8;--accent: #f1f5f9;--accent-foreground: #0f172a;--background: #0f172a;--foreground: #f8fafc;--card: #1e293b;--card-foreground: #f8fafc;--border: #334155;--input: #1e293b;--ring: #3b82f6;--iot-online: #10b981;--iot-offline: #ef4444;--iot-signal: #3b82f6;--iot-battery: #8b5cf6;--radius: .5rem;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-6: 1.5rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--background);color:var(--foreground);line-height:1.6;min-height:100vh}.header{background:var(--card);border-bottom:1px solid var(--border);padding:var(--spacing-4) var(--spacing-6);position:sticky;top:0;z-index:100}.header-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.header h1{font-size:1.5rem;font-weight:600;color:var(--foreground)}.main{max-width:1200px;margin:0 auto;padding:var(--spacing-6);display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:var(--spacing-6)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:all .2s ease}.card:hover{border-color:var(--ring);box-shadow:var(--shadow-lg)}.card-header{padding:var(--spacing-4);border-bottom:1px solid var(--border)}.card-header h2{font-size:1.125rem;font-weight:600;color:var(--foreground)}.card-content{padding:var(--spacing-4)}.card-footer{padding:var(--spacing-3) var(--spacing-4);border-top:1px solid var(--border);background:#0003}.card-footer p{font-size:.875rem;color:var(--muted-foreground)}.distance-display{grid-column:span 2}@media (max-width: 768px){.distance-display{grid-column:span 1}}.distance-value{text-align:center;padding:var(--spacing-6)}.distance-value .value{font-size:5rem;font-weight:700;line-height:1;color:var(--iot-signal);font-variant-numeric:tabular-nums}.distance-value .unit{font-size:1.5rem;color:var(--muted-foreground);margin-left:var(--spacing-2)}.distance-bar{height:1rem;background:var(--input);border-radius:var(--radius);overflow:hidden;margin:var(--spacing-4) 0}.bar-fill{height:100%;background:var(--iot-signal);border-radius:var(--radius);transition:width .3s ease,background .3s ease}.distance-info{display:flex;justify-content:center;gap:var(--spacing-6);color:var(--muted-foreground);font-size:.875rem}.badge{display:inline-flex;align-items:center;padding:var(--spacing-1) var(--spacing-2);font-size:.75rem;font-weight:500;border-radius:9999px;text-transform:uppercase;letter-spacing:.05em}.badge-primary{background:var(--primary);color:var(--primary-foreground)}.badge-success{background:var(--success);color:var(--success-foreground)}.badge-warning{background:var(--warning);color:var(--warning-foreground)}.badge-error{background:var(--destructive);color:var(--destructive-foreground)}.badge-info{background:var(--iot-signal);color:var(--foreground)}.spec-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-3)}.spec-item{display:flex;flex-direction:column;gap:var(--spacing-1);padding:var(--spacing-3);background:var(--input);border-radius:var(--radius)}.spec-label{font-size:.75rem;color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.05em}.spec-value{font-size:1rem;font-weight:600;color:var(--foreground)}.wiring-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--spacing-3)}@media (max-width: 500px){.wiring-grid{grid-template-columns:repeat(2,1fr)}}.pin-item{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-2);padding:var(--spacing-4);background:var(--input);border-radius:var(--radius);text-align:center}.pin-label{font-size:.875rem;font-weight:600;color:var(--primary)}.pin-value{font-size:.75rem;color:var(--muted-foreground)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-2) var(--spacing-4);font-size:.875rem;font-weight:500;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;transition:all .2s ease;gap:var(--spacing-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover:not(:disabled){background:#1d4ed8}.btn-secondary{background:var(--secondary);color:var(--secondary-foreground)}.btn-secondary:hover:not(:disabled){background:#475569}.btn-success{background:var(--success);color:var(--success-foreground)}.btn-success:hover:not(:disabled){background:#059669}.btn-outline{background:transparent;border-color:var(--border);color:var(--foreground)}.btn-outline:hover:not(:disabled){background:var(--input)}.btn.active{box-shadow:0 0 0 2px var(--ring)}.input{width:100%;padding:var(--spacing-2) var(--spacing-3);font-size:.875rem;background:var(--input);border:1px solid var(--border);border-radius:var(--radius);color:var(--foreground);transition:all .2s ease}.input:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 2px #3b82f633}.input-group{margin-bottom:var(--spacing-3)}.input-group label{display:block;font-size:.875rem;font-weight:500;color:var(--foreground);margin-bottom:var(--spacing-1)}.mode-selector{display:flex;gap:var(--spacing-2);margin-bottom:var(--spacing-4)}.mode-selector .btn{flex:1}.config-panel{padding:var(--spacing-4);background:var(--input);border-radius:var(--radius)}#toast-container{position:fixed;bottom:var(--spacing-6);right:var(--spacing-6);display:flex;flex-direction:column;gap:var(--spacing-2);z-index:1000}.toast{padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius);font-size:.875rem;font-weight:500;animation:slideIn .3s ease;box-shadow:var(--shadow-lg)}.toast-success{background:var(--success);color:var(--success-foreground)}.toast-error{background:var(--destructive);color:var(--destructive-foreground)}.toast-info{background:var(--iot-signal);color:var(--foreground)}.toast.fade-out{opacity:0;transform:translate(100%);transition:all .3s ease}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.hidden{display:none!important}.footer{text-align:center;padding:var(--spacing-6);color:var(--muted-foreground);font-size:.875rem;border-top:1px solid var(--border);margin-top:var(--spacing-6)}@media (max-width: 640px){.main{padding:var(--spacing-4);grid-template-columns:1fr}.distance-value .value{font-size:3.5rem}.mode-selector{flex-direction:column}}
