@import"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700&display=swap";:root{--success-color: #10b981;--danger-color: #ef4444;--warning-color: #f59e0b;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--transition-fast: all .2s cubic-bezier(.4, 0, .2, 1);--transition-smooth: all .4s cubic-bezier(.4, 0, .2, 1)}.dark-theme,:root{--bg-main: #0a0b10;--bg-darker: #050507;--bg-card: #161821;--bg-card-hover: #1c1f2b;--primary-color: #3b82f6;--secondary-color: #6366f1;--text-main: #f8fafc;--text-secondary: #94a3b8;--text-muted: #64748b;--glass-bg: rgba(22, 24, 33, .7);--glass-border: rgba(255, 255, 255, .05);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .5);--gradient-main: linear-gradient(135deg, rgba(59, 130, 246, .1) 0%, rgba(99, 102, 241, .1) 100%);--gradient-text: linear-gradient(135deg, #fff 0%, #94a3b8 100%)}.light-theme{--bg-main: #f1f5f9;--bg-darker: #e2e8f0;--bg-card: #ffffff;--bg-card-hover: #f8fafc;--primary-color: #2563eb;--secondary-color: #4f46e5;--text-main: #0f172a;--text-secondary: #475569;--text-muted: #64748b;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(0, 0, 0, .05);--glass-shadow: 0 8px 32px 0 rgba(15, 23, 42, .08);--gradient-main: linear-gradient(135deg, rgba(37, 99, 235, .05) 0%, rgba(79, 70, 229, .05) 100%);--gradient-text: linear-gradient(135deg, #0f172a 0%, #334155 100%)}.dark-theme,.light-theme,:root{--bg-dark: var(--bg-main)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,-apple-system,sans-serif;background-color:var(--bg-main);color:var(--text-main);min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color .3s ease,color .3s ease}h1,h2,h3,h4,h5,h6{font-family:Outfit,sans-serif;font-weight:700;color:var(--text-main)}h1{font-size:clamp(2rem,5vw,3.5rem);letter-spacing:-.02em;background:var(--gradient-text);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-darker)}::-webkit-scrollbar-thumb{background:var(--secondary-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--primary-color)}.glass-panel{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:var(--radius-md)}.btn-action{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;cursor:pointer;transition:var(--transition-fast);border:1px solid var(--glass-border);background:var(--bg-card);color:var(--text-main)}.btn-action:hover{background:var(--bg-card-hover);border-color:var(--primary-color)}.btn-danger{color:var(--danger-color);border-color:#ef444433}.btn-danger:hover{background:#ef44441a;border-color:var(--danger-color)}.btn-success{color:var(--success-color);border-color:#10b98133}.btn-success:hover{background:#10b9811a;border-color:var(--success-color)}.btn-warning{color:var(--warning-color);border-color:#f59e0b33}.btn-warning:hover{background:#f59e0b1a;border-color:var(--warning-color)}input,select,textarea{background:var(--bg-card);border:1px solid var(--glass-border);color:var(--text-main);padding:.75rem 1rem;border-radius:var(--radius-sm);width:100%;font-family:inherit;transition:var(--transition-fast)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #3b82f633}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .6s ease-out forwards}.App{width:100%;min-height:100vh}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:2rem;background:var(--bg-main)}.auth-card{background:var(--bg-card);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);padding:3rem;border-radius:var(--radius-lg);width:100%;max-width:440px;text-align:center;animation:fadeIn .6s ease-out}@media (max-width: 480px){.auth-card{padding:2rem 1.5rem}.auth-title{font-size:1.8rem}}.auth-title{font-size:2.2rem;margin-bottom:2rem;background:var(--gradient-text);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:700;letter-spacing:-.03em}.auth-form{display:flex;flex-direction:column;gap:1.5rem}.auth-group{text-align:left}.auth-label{display:block;margin-bottom:.5rem;color:var(--text-secondary);font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.auth-button{margin-top:1rem;padding:1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:700;cursor:pointer;transition:var(--transition-fast)}.auth-button:hover{background:var(--secondary-color);transform:translateY(-2px);box-shadow:0 8px 20px #0003}.auth-link{margin-top:1.5rem;color:var(--primary-color);font-size:.95rem;font-weight:600;text-decoration:none}.auth-error{color:var(--danger-color);background:#ef44441a;padding:.75rem;border-radius:var(--radius-sm);font-size:.9rem;border:1px solid rgba(239,68,68,.2)}.app-header{background:var(--bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:0 2rem;height:72px;border-bottom:1px solid var(--glass-border);position:sticky;top:0;z-index:100;display:flex;justify-content:space-between;align-items:center;transition:background-color .3s ease}.header-logo{font-size:1.6rem;font-weight:800;background:var(--gradient-text);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;display:flex;align-items:center;gap:.5rem;font-family:Outfit,sans-serif}.header-button{background:var(--bg-darker);border:1px solid var(--glass-border);color:var(--text-main);padding:.5rem 1rem;border-radius:999px;font-size:.85rem;font-weight:600;transition:var(--transition-fast)}.header-button:hover{background:var(--primary-color);color:#fff;transform:translateY(-1px)}@media (max-width: 480px){.header-logo{font-size:1.3rem;gap:.3rem}.app-header{padding:0 .75rem;gap:.5rem}.header-button{padding:.4rem .7rem;font-size:.75rem}}.theme-toggle{background:var(--bg-darker);border:1px solid var(--glass-border);color:var(--text-main);width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-fast)}.theme-toggle:hover{background:var(--primary-color);color:#fff}.dashboard-container{padding:2.5rem 2rem;max-width:1400px;margin:0 auto}.dashboard-header{margin-bottom:4rem}.dashboard-title{font-size:3rem;margin-bottom:.5rem}.dashboard-subtitle{color:var(--text-secondary);font-size:1.1rem}@media (max-width: 768px){.dashboard-container{padding:1.5rem 1rem}.dashboard-header{margin-bottom:2rem}.dashboard-title{font-size:2.2rem}.dashboard-subtitle{font-size:.95rem}}.sensors-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.sensors-title{font-size:1.8rem;font-weight:700}.add-sensor-button{background:var(--primary-color);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:999px;font-weight:700;display:flex;align-items:center;gap:.5rem;transition:var(--transition-fast)}.add-sensor-button:hover{transform:translateY(-2px);background:var(--secondary-color)}.sensors-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:2rem}@media (max-width: 400px){.sensors-grid{grid-template-columns:1fr;gap:1rem}}.sensor-card{background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:2rem;transition:var(--transition-smooth);position:relative;box-shadow:var(--glass-shadow)}@media (max-width: 480px){.sensor-card{padding:1.25rem}}.sensor-card:hover{transform:translateY(-5px);border-color:var(--primary-color);box-shadow:0 12px 40px #00000026}.sensor-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;min-height:48px;width:100%}.sensor-icon{width:48px;height:48px;background:var(--bg-darker);border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--primary-color)}.sensor-name{font-size:1.25rem;font-weight:700;color:var(--text-main);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.sensor-state-indicator{display:flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;padding:.4rem .75rem;border-radius:999px;background:var(--bg-darker);border:1px solid var(--glass-border);flex-shrink:0}@media (max-width: 480px){.sensor-header{flex-wrap:wrap;gap:.75rem}.sensor-state-indicator{order:3;width:100%;margin-top:.25rem;justify-content:center}}.state-dot{width:8px;height:8px;border-radius:50%;position:relative}.sensor-state-indicator.online{color:var(--success-color);border-color:#10b98133}.sensor-state-indicator.online .state-dot{background:var(--success-color);box-shadow:0 0 8px var(--success-color);animation:pulse-green 2s infinite}.sensor-state-indicator.error{color:var(--warning-color);border-color:#f59e0b33}.sensor-state-indicator.error .state-dot{background:var(--warning-color);box-shadow:0 0 8px var(--warning-color);animation:pulse-orange 1.5s infinite}.sensor-state-indicator.offline{color:var(--text-muted);border-color:var(--glass-border)}.sensor-state-indicator.offline .state-dot{background:var(--text-muted)}@keyframes pulse-green{0%{box-shadow:0 0 #10b981b3}70%{box-shadow:0 0 0 6px #10b98100}to{box-shadow:0 0 #10b98100}}@keyframes pulse-orange{0%{box-shadow:0 0 #f59e0bb3}70%{box-shadow:0 0 0 6px #f59e0b00}to{box-shadow:0 0 #f59e0b00}}.sensor-location{display:flex;align-items:center;justify-content:flex-start;gap:.5rem;color:var(--text-secondary);font-size:.85rem;margin-bottom:.5rem}.sensor-actions{display:flex;gap:.75rem;margin-top:2rem}.sensor-button{flex:1;padding:.75rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:700;border:1px solid var(--glass-border);background:var(--bg-darker);color:var(--text-main);transition:var(--transition-fast)}.sensor-button:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.detail-view{max-width:1200px;margin:0 auto;padding:2rem}.detail-card{background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:3rem;box-shadow:var(--glass-shadow)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin:2.5rem 0}.info-item{background:var(--bg-darker);padding:1.5rem;border-radius:var(--radius-md);text-align:center;word-wrap:break-word;overflow-wrap:break-word}.info-label{color:var(--text-secondary);font-size:.8rem;text-transform:uppercase;font-weight:700;letter-spacing:.05em;margin-bottom:.5rem}.info-value{font-size:1.8rem;color:var(--primary-color);font-weight:800;font-family:Outfit,sans-serif}.notification-bell{position:relative;cursor:pointer;color:var(--text-secondary);transition:var(--transition-fast)}.dropdown-menu{position:absolute;top:100%;right:0;margin-top:.75rem;background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--glass-shadow);padding:.5rem;min-width:200px;z-index:1000;animation:slideUp .3s ease-out}.dropdown-header{padding:.5rem .75rem;font-size:.7rem;font-weight:800;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--glass-border);margin-bottom:.25rem}.dropdown-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem;border:none;background:transparent;color:var(--text-main);font-size:.85rem;font-weight:600;text-align:left;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast)}.dropdown-item:hover{background:var(--bg-card-hover);color:var(--primary-color);padding-left:1rem}.dropdown-item.danger{color:var(--danger-color)}.dropdown-item.danger:hover{background:#ef44441a}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.notification-bell:hover{color:var(--primary-color)}.notification-badge{position:absolute;top:-8px;right:-8px;background:var(--danger-color);color:#fff;font-size:.7rem;font-weight:800;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg-card)}.notification-center{background:var(--bg-card);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:var(--radius-md);width:320px}.loading-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:var(--bg-main);color:var(--primary-color)}.animate-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.notification-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.notification-panel{position:fixed;top:80px;right:20px;width:400px;max-width:calc(100vw - 40px);max-height:80vh;background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:0 20px 60px #0000004d;z-index:1000;overflow:hidden;animation:slideDown .3s ease;display:flex;flex-direction:column}.toast-container{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:10px;z-index:10000;max-width:calc(100vw - 40px)}@media (max-width: 580px){.notification-panel{top:0;right:0;width:100%;max-width:100%;height:100vh;max-height:100vh;border-radius:0}.toast-container{bottom:10px;right:10px;left:10px}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-item{display:flex!important;align-items:center;gap:1rem}.toast-emoji{font-size:1.5rem;flex-shrink:0}.toast-message{font-size:.9rem;font-weight:500;line-height:1.4;word-break:break-word}@media (max-width: 480px){.sensor-actions{flex-direction:column;gap:.5rem}.info-value{font-size:1.5rem}}@media (max-width: 768px){.app-header{padding:0 1rem;height:64px}.header-logo span{display:none}.detail-view{padding:1rem}.detail-card{padding:1.5rem}.detail-card h1{font-size:2rem}.info-grid{grid-template-columns:1fr;gap:1rem;margin:1.5rem 0}.info-item-full{grid-column:span 1!important}.graph-container{height:250px!important;margin-top:1rem}.info-grid{grid-template-columns:1fr!important;gap:.75rem!important;margin:1rem 0!important}.info-item{padding:1.25rem!important}.info-value{font-size:1.5rem!important;word-break:break-word}.api-key-text{font-size:1rem!important;word-break:break-all!important;letter-spacing:0px!important}.sensors-header{flex-direction:column;align-items:flex-start;gap:1rem}.add-sensor-button{width:100%;justify-content:center}.reading-row{flex-direction:column!important;align-items:flex-start!important;gap:1rem!important;padding:1rem!important}.reading-data-group{gap:1.5rem!important;width:100%;justify-content:space-between}.reading-status-badge{width:100%;text-align:center}.detail-header-actions{width:100%;flex-direction:column!important}.detail-header-actions .btn-action{width:100%;justify-content:center}}@media (max-width: 480px){.detail-view{padding:.75rem!important}.detail-card{padding:1rem!important;border-radius:var(--radius-md)}.detail-card h1{font-size:1.4rem!important}.info-value{font-size:1.3rem!important}.info-item{padding:1rem!important}.info-item-full .info-value{font-size:.85rem!important;letter-spacing:.5px!important}.reading-data-group{flex-direction:column;align-items:flex-start!important;gap:1rem!important}.section-header-mobile{flex-direction:column!important;align-items:flex-start!important}}.info-item-full{grid-column:span 3}.graph-container{width:100%;height:400px;margin-top:2rem}.reading-row{display:flex;align-items:center;padding:1.25rem 1.5rem;gap:2rem;transition:transform .2s ease}.reading-time-group{display:flex;flex-direction:column;min-width:100px}.reading-data-group{display:flex;gap:3rem;flex:1;align-items:center}.reading-status-badge{padding:.4rem .75rem;border-radius:999px;font-size:.7rem;font-weight:800;text-transform:uppercase}.download-apk-button{position:relative;overflow:hidden}.download-apk-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.download-apk-button:hover:before{left:100%}@media (max-width: 480px){.download-apk-button{font-size:.9rem!important;padding:.875rem 1.5rem!important}}
