:root{--bg: #f2f6ff;--card: #ffffff;--line: #d6e0f0;--ink: #122037;--accent: #1173ff;--accent-2: #02a66a;--sidebar-width: 248px;--desktop-min-width: 1360px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:var(--ink);background:radial-gradient(circle at 20% 10%,#dfeaff,#f7fbff 45%,#ecf4ff);overflow-x:auto}a{text-decoration:none}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr)}@media(min-width:769px){.app-shell{min-width:var(--desktop-min-width)}}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);max-width:var(--sidebar-width);background:linear-gradient(180deg,#0f203e,#173567);color:#e6f0ff;padding:24px 16px;display:flex;flex-direction:column;gap:12px}.sidebar .brand{color:#fff;font-weight:700;font-size:22px;margin-bottom:12px}.sidebar nav{display:flex;flex-direction:column;gap:8px}.sidebar nav a{color:#bfd7ff;padding:10px 12px;border-radius:10px}.sidebar nav a.active,.sidebar nav a:hover{background:#ffffff1f;color:#fff}.sidebar>button{margin-top:auto;border:1px solid #74a3ff;background:transparent;color:#fff;padding:10px;border-radius:10px;cursor:pointer}.language-switch{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid rgba(145,182,243,.28);border-radius:12px;background:#ffffff0f}.language-switch__icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;color:#d6e6ff;flex:0 0 auto}.language-switch__globe{width:18px;height:18px}.language-switch__button{margin:0;padding:6px 10px;border:1px solid rgba(145,182,243,.28);border-radius:9px;background:transparent;color:#d6e6ff;font-size:12px;font-weight:700;cursor:pointer}.language-switch__button.active{background:#ffffff29;color:#fff;border-color:#d6e6ff5c}.main-content{padding:24px;min-width:0}h1{margin-top:0}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px;box-shadow:0 8px 24px #1029520f}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.inline-form{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.users-create-form{grid-template-columns:repeat(6,minmax(0,1fr));align-items:center}.toggle-field{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 4px;color:#22497f;font-size:14px;font-weight:600}.toggle-field input{width:16px;height:16px;margin:0}.device-search-card{display:grid;gap:14px}.device-add-section{display:grid;gap:12px;padding-top:12px;border-top:1px solid #e2ebfb}.device-add-section__head h3{margin:0 0 4px;font-size:16px}.device-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.device-card-actions{display:flex;gap:10px;flex-wrap:wrap}.device-card-head h2{margin:0 0 6px;font-size:20px}.device-search-grid{display:grid;grid-template-columns:2fr 1fr 1fr 220px;gap:10px;align-items:stretch}.devices-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.device-highlight{display:grid;align-content:center;justify-items:center;border-radius:12px;border:1px solid #cfe0ff;background:linear-gradient(135deg,#eef5ff,#f8fbff);color:#1d3d74;text-align:center}.device-highlight strong{font-size:28px;line-height:1}.device-highlight span{font-size:12px;font-weight:600}.detected-device-list{display:flex;flex-wrap:wrap;gap:10px}.detected-device-chip{min-width:180px;display:grid;gap:4px;padding:12px 14px;border-radius:12px;border:1px solid #cfe0ff;background:linear-gradient(180deg,#f8fbff,#edf4ff);color:#16325c;text-align:left}.detected-device-chip strong{font-size:14px}.detected-device-chip span{font-size:12px;color:#55709a}.device-detected-empty,.device-scan-note{margin:0}.secondary-button{border:1px solid #c9d8ef;background:#f4f8ff;color:#22497f}.success{color:#0f7a45;margin:10px 0}.auth-card{display:grid;gap:14px}.auth-toggle{display:flex;gap:10px}.login-google{display:grid;gap:12px;margin-top:14px}.login-google--standalone{margin-top:0}.login-google__divider{display:flex;align-items:center;gap:10px;color:#55709a;font-size:13px}.login-google__divider:before,.login-google__divider:after{content:"";height:1px;flex:1;background:#d6e0f0}.login-google__button{min-height:44px}.login-google__action{width:100%;justify-content:center}.login-google__primary{width:100%}.empty-table-cell{text-align:center;color:#55709a;padding:20px 10px}.devices-form__submit{grid-column:span 4;justify-self:start;min-width:180px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.experiment-page{display:grid;gap:16px}.experiment-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}input,select,button{border-radius:10px;border:1px solid var(--line);padding:10px 12px;font-size:14px}button{background:linear-gradient(90deg,var(--accent),#0f56cc);color:#fff;cursor:pointer;border:none}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px;border-bottom:1px solid #edf2fa;font-size:14px}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.row-actions button{padding:6px 10px;font-size:12px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#0f2d56,#2168c7,#39ab95)}.login-wrap .card{width:min(420px,92vw);display:grid;gap:10px}.helper-text{margin:0;font-size:13px;color:#46628f}.error{color:#cc2943}.success{color:#0b6d44}.loading{padding:40px}button:disabled{opacity:.7;cursor:not-allowed}.profile-form{display:grid;gap:10px;max-width:480px}.profile-form h2{margin:0}.telemetry-page{display:grid;gap:16px}.telemetry-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.telemetry-controls{display:flex;gap:8px;flex-wrap:wrap}.telemetry-live{display:inline-flex;align-items:center;padding:8px 10px;border:1px solid #cfe0ff;border-radius:10px;background:#f3f8ff;color:#1f3f78;font-size:13px;font-weight:600}.telemetry-inline-setting{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid #cfe0ff;border-radius:10px;background:#f8fbff;color:#1f3f78;font-size:13px;font-weight:600}.telemetry-inline-setting select{min-width:76px;padding:8px 10px}.telemetry-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.telemetry-stat h3{margin:0 0 8px;font-size:14px;color:#46628f}.telemetry-stat p{margin:0;font-size:20px;font-weight:700}.status-pill{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;line-height:1.4}.status-pill.active{color:#0b6d44;background:#dbf7ea;border:1px solid #8fd8b6}.status-pill.inactive{color:#a52424;background:#ffe5e5;border:1px solid #f3aeae}@media(max-width:1200px){.device-search-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1100px){.devices-form{grid-template-columns:repeat(2,minmax(0,1fr))}.devices-form__submit{grid-column:span 2}}@media(max-width:768px){.app-shell{grid-template-columns:1fr;min-width:100%}.device-card-head{flex-direction:column}.device-card-actions{width:100%}.device-search-grid,.inline-form,.experiment-form,.telemetry-stats,.stats{grid-template-columns:1fr}}@media(max-width:720px){.sidebar{gap:8px}.main-content{padding:16px}.devices-form{grid-template-columns:1fr}.devices-form__submit{grid-column:span 1;width:100%;justify-self:stretch}}.status-pill.unknown{color:#4b607f;background:#edf2fb;border:1px solid #ccd8ee}.telemetry-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.telemetry-grid--devices{grid-template-columns:repeat(auto-fit,minmax(520px,1fr));align-items:start}.telemetry-device-card{min-width:0;padding:18px;background:linear-gradient(180deg,#eef5ff,#e7f0ff);border:1px solid #c7dafb;box-shadow:0 14px 32px #1173ff1a;overflow:hidden}.telemetry-device-card h3{margin:0 0 12px}.telemetry-device-subtitle{margin:0 0 8px;color:#46628f;font-size:13px;font-weight:500}.telemetry-chart{width:100%;height:auto;aspect-ratio:16 / 7;display:block;max-width:100%;background:linear-gradient(180deg,#f7faff,#eff5ff);border:1px solid #e4ecfb;border-radius:10px}.telemetry-empty{aspect-ratio:16 / 7;min-height:240px;display:grid;place-items:center;color:#5f7495;background:#f7faff;border:1px dashed #d1ddf4;border-radius:10px}.telemetry-range-form{margin-bottom:12px}.telemetry-view-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.telemetry-view-tab{min-width:120px;padding:10px 16px;border-radius:999px;border:1px solid #c7d9fb;background:#eef4ff;color:#1d3d74;font-weight:600}.telemetry-view-tab.active{background:linear-gradient(90deg,var(--accent),#0f56cc);color:#fff;border-color:transparent;box-shadow:0 10px 22px #0f56cc2e}.telemetry-range-summary{display:flex;align-items:center;min-height:44px;padding:10px 12px;border:1px solid #d5e2f8;border-radius:10px;background:#f7faff;color:#2b4f86;font-weight:600}.telemetry-export-row{margin-bottom:12px}.telemetry-export-menu{position:relative;width:fit-content}.telemetry-export-trigger{list-style:none;min-width:240px;padding:10px 14px;border-radius:10px;background:linear-gradient(90deg,var(--accent),#0f56cc);color:#fff;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none}.telemetry-export-trigger::-webkit-details-marker{display:none}.telemetry-export-trigger.disabled{opacity:.7;pointer-events:none}.telemetry-export-options{position:absolute;top:calc(100% + 8px);left:0;z-index:5;min-width:240px;padding:8px;border:1px solid #d8e3f7;border-radius:12px;background:#fff;box-shadow:0 16px 34px #1220371f;display:grid;gap:8px}.telemetry-export-options button{width:100%}.telemetry-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.telemetry-preset{min-width:88px;background:#eef4ff;color:#1d3d74;border:1px solid #c7d9fb}.telemetry-preset.active{background:linear-gradient(90deg,var(--accent),#0f56cc);color:#fff;border-color:transparent}.telemetry-range-status{margin:0 0 12px;color:#2b4f86;font-size:13px;font-weight:600}.telemetry-range-all-devices{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#f5f8ff;color:#2b4f86;font-size:14px;font-weight:600}.telemetry-coordination-card{margin-top:14px}.telemetry-coordination-head h3{margin:0 0 8px}.telemetry-coordination-picker{margin:12px 0 16px;padding:14px;border:1px solid #dbe6f8;border-radius:12px;background:linear-gradient(180deg,#f8fbff,#f2f7ff)}.telemetry-coordination-picker__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.telemetry-coordination-picker__toolbar{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.telemetry-coordination-picker__actions{display:flex;flex-wrap:wrap;gap:8px}.telemetry-coordination-picker__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.telemetry-coordination-picker__item{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border:1px solid #d5e2f8;border-radius:10px;background:#fff;color:#1d3d74;font-weight:600}.telemetry-coordination-picker__item input{margin:0}.telemetry-coordination-section+.telemetry-coordination-section{margin-top:16px}.telemetry-coordination-title{margin:0 0 10px;font-size:16px}.telemetry-coordination-title--temperature{color:#c9333f}.telemetry-coordination-title--humidity{color:#0f61db}.telemetry-coordination-table-wrap{overflow-x:auto;border:1px solid #dbe6f8;border-radius:12px;background:#fbfdff}.telemetry-coordination-table{min-width:720px}.telemetry-coordination-table th{background:#eef4ff;color:#1d3d74;font-size:13px;font-weight:700;white-space:nowrap}.telemetry-coordination-table td{vertical-align:top;color:#24497d;font-weight:600}.telemetry-coordination-table td:first-child{white-space:nowrap;color:#1d3d74}.timezone-note{margin:0 0 10px;font-size:13px;color:#46628f}@media(max-width:1200px){.telemetry-grid--devices{grid-template-columns:1fr}}@media(max-width:768px){.app-shell{grid-template-columns:1fr;min-width:100%}.sidebar{position:sticky;top:0;z-index:10;width:100%;min-width:100%;max-width:100%}.inline-form,.stats{grid-template-columns:1fr}.telemetry-head{flex-direction:column;align-items:flex-start}.telemetry-stats{grid-template-columns:1fr 1fr}.telemetry-grid{grid-template-columns:1fr}.telemetry-coordination-picker__head{flex-direction:column;align-items:flex-start}.telemetry-coordination-picker__toolbar{width:100%;justify-content:flex-start}}
