/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}body,html{background-color:#ebf1f4;font-family:Roboto,sans-serif}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;width:100%;background-color:#fff;font-size:16px}h1{color:#006ebb}.nav,h1{margin:0}.nav{background-color:#006ebb;display:flex;padding:16px;font-size:.8em}.nav a{margin:0 4px;color:#fff;font-weight:700;text-decoration:none}.nav .logout{margin-left:auto}.nav .version{color:hsla(0,0%,100%,.7);font-size:.9em;margin-left:8px;padding-top:1px}.language-selector{background-color:hsla(0,0%,100%,.2);color:#fff;border:1px solid hsla(0,0%,100%,.3);border-radius:4px;padding:4px 8px;margin-left:8px;font-size:.9em;cursor:pointer}.language-selector option{background-color:#006ebb;color:#fff}.dialog-header[data-v-4f7d9b7b]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-header h3[data-v-4f7d9b7b]{margin:0}.close-button[data-v-4f7d9b7b]{background:none;border:none;padding:4px;cursor:pointer;color:#666;border-radius:4px}.close-button[data-v-4f7d9b7b]:hover{background:#f0f0f0}.rule-dialog-overlay[data-v-4f7d9b7b]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.rule-dialog[data-v-4f7d9b7b]{background:#fff;padding:20px;border-radius:8px;width:90%;max-width:400px}.form-group[data-v-4f7d9b7b]{margin-bottom:15px}.form-group label[data-v-4f7d9b7b]{display:block;margin-bottom:5px;font-weight:500}.form-control[data-v-4f7d9b7b]{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:1rem}.dialog-buttons[data-v-4f7d9b7b]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.btn-primary[data-v-4f7d9b7b]{background-color:#4caf50}.btn-primary[data-v-4f7d9b7b],.btn-secondary[data-v-4f7d9b7b]{color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.btn-secondary[data-v-4f7d9b7b]{background-color:#6c757d}.inverted-note[data-v-4f7d9b7b]{font-size:.8em;color:#666;margin-top:4px;padding:4px 8px;background-color:#f8f9fa;border-radius:4px;border-left:3px solid #ffc107}@media (max-width:768px){.btn-primary[data-v-4f7d9b7b],.btn-secondary[data-v-4f7d9b7b],.form-control[data-v-4f7d9b7b]{min-height:44px}}.name[data-v-922fe7aa]{height:2em;line-height:2em}.client-header[data-v-922fe7aa]{display:flex;justify-content:space-between;align-items:center;width:100%;margin-bottom:10px}.client-info[data-v-922fe7aa]{display:flex;align-items:center;gap:8px}.config-button[data-v-922fe7aa]{background:none;border:1px solid #ccc;border-radius:4px;padding:4px;cursor:pointer;color:#666}.config-button[data-v-922fe7aa]:hover{background:#f0f0f0;color:#333}.config-panel[data-v-922fe7aa]{background:#f5f5f5;border-radius:8px;padding:16px;margin-bottom:16px}.config-item[data-v-922fe7aa]{display:flex;flex-direction:column;gap:4px}.config-label[data-v-922fe7aa]{display:flex;align-items:center;gap:8px;cursor:pointer}.config-text[data-v-922fe7aa]{font-weight:500}.config-description[data-v-922fe7aa]{font-size:.9em;color:#666;margin-left:24px}.relay-type[data-v-922fe7aa]{font-size:.8em;color:#666;margin-left:4px}.connection-status[data-v-922fe7aa]{color:red;height:2em;line-height:2em;font-size:.8em}.connection-status.connected[data-v-922fe7aa]{color:#006400}.status[data-v-922fe7aa]{width:100%;font-size:1rem;display:flex;align-items:center;gap:8px}.status .item[data-v-922fe7aa]{padding-right:8px;display:flex;align-items:center;gap:4px}.status .power-icon[data-v-922fe7aa]{font-size:1.4rem}.status .power-icon.on[data-v-922fe7aa]{color:#4caf50}.status .power-icon.off[data-v-922fe7aa]{color:#dc3545}.refresh-button[data-v-922fe7aa]{background:none;border:1px solid #ccc;border-radius:4px;padding:4px 8px;cursor:pointer;font-size:14px;position:relative;margin-left:auto}.refresh-button[data-v-922fe7aa]:hover{background:#f0f0f0}.refresh-button[data-v-922fe7aa]:disabled{opacity:.5;cursor:not-allowed}.controls[data-v-922fe7aa]{margin:10px 0;width:100%}.controls-disabled[data-v-922fe7aa]{opacity:.5;pointer-events:none;cursor:not-allowed}.timer-presets[data-v-922fe7aa]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%;max-width:400px}.preset-button[data-v-922fe7aa]{padding:12px;border-radius:8px;font-size:1rem;touch-action:manipulation;cursor:pointer;width:100%;position:relative}.preset-button.turn-on[data-v-922fe7aa]{background-color:#4caf50;color:#fff;border:none}.preset-button.turn-on[data-v-922fe7aa]:active{background-color:#3d8b40}.turn-off[data-v-922fe7aa]{background-color:#dc3545;color:#fff;border:none}.control-button[data-v-922fe7aa]{padding:12px 24px;border-radius:8px;font-size:1rem;touch-action:manipulation;cursor:pointer;width:100%;max-width:400px;position:relative}.control-button[data-v-922fe7aa]:disabled,.preset-button[data-v-922fe7aa]:disabled{opacity:.5;cursor:not-allowed}.loading-indicator[data-v-922fe7aa]{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px}.loading-indicator[data-v-922fe7aa]:after{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:hsla(0,0%,100%,.8);animation:pulse-922fe7aa 1s ease-in-out infinite}@keyframes pulse-922fe7aa{0%{transform:scale(.6);opacity:.4}50%{transform:scale(1);opacity:1}to{transform:scale(.6);opacity:.4}}@media (max-width:768px){.control-button[data-v-922fe7aa],.preset-button[data-v-922fe7aa]{min-height:48px}}.rules[data-v-922fe7aa]{margin-top:20px;width:100%}.rules-header[data-v-922fe7aa]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.rules-header h4[data-v-922fe7aa]{margin:0}.add-rule-button[data-v-922fe7aa]{display:flex;align-items:center;gap:4px;background:none;border:1px solid #4caf50;color:#4caf50;padding:4px 8px;border-radius:4px;cursor:pointer}.add-rule-button[data-v-922fe7aa]:hover{background:#4caf50;color:#fff}.rules-list[data-v-922fe7aa]{display:flex;flex-direction:column;gap:8px}.rule-item[data-v-922fe7aa]{display:flex;justify-content:space-between;align-items:center;padding:12px;background:#f5f5f5;border-radius:8px;gap:8px}.rule-content[data-v-922fe7aa]{display:flex;align-items:center;gap:12px;flex:1}.rule-icon[data-v-922fe7aa]{color:#666}.rule-details[data-v-922fe7aa]{flex:1}.rule-primary[data-v-922fe7aa]{font-weight:500}.rule-secondary[data-v-922fe7aa]{font-size:.9em;color:#666}.rule-actions[data-v-922fe7aa]{display:flex;gap:8px}.icon-button[data-v-922fe7aa]{background:none;border:none;padding:4px;cursor:pointer;color:#666;border-radius:4px}.icon-button[data-v-922fe7aa]:hover{background:#eee}.icon-button.delete[data-v-922fe7aa]:hover{color:#dc3545;background:#ffebee}.no-rules[data-v-922fe7aa]{color:#666;font-style:italic;padding:12px;text-align:center;background:#f5f5f5;border-radius:8px}@media (max-width:768px){.config-panel[data-v-922fe7aa]{padding:12px}.rule-item[data-v-922fe7aa]{padding:16px}.icon-button[data-v-922fe7aa]{padding:8px}}.header[data-v-c1a5c6b4]{background-color:#1e9bed;padding:16px;display:flex;justify-content:space-between;align-items:center}.add-device-btn[data-v-c1a5c6b4]{background-color:#fff;color:#1e9bed;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.add-device-btn[data-v-c1a5c6b4]:hover{background-color:#f0f0f0}.add-device-form[data-v-c1a5c6b4]{background-color:#f4f4f4;padding:16px;margin:16px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.form-group[data-v-c1a5c6b4]{margin-bottom:16px;position:relative}.form-group label[data-v-c1a5c6b4]{display:block;margin-bottom:8px;color:#333}.form-group input[data-v-c1a5c6b4]{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:16px}.char-count[data-v-c1a5c6b4]{position:absolute;right:10px;top:40px;font-size:.8em;color:#888}.form-actions[data-v-c1a5c6b4]{display:flex;gap:10px}.cancel-btn[data-v-c1a5c6b4],.save-btn[data-v-c1a5c6b4]{padding:10px 16px;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.save-btn[data-v-c1a5c6b4]{background-color:#4caf50;color:#fff}.save-btn[data-v-c1a5c6b4]:disabled{background-color:#ccc;cursor:not-allowed}.cancel-btn[data-v-c1a5c6b4]{background-color:#f44336;color:#fff}.client-list .clients[data-v-c1a5c6b4]{padding:0;margin:0}.client-list .client-header[data-v-c1a5c6b4]{background-color:#c8f2ff;font-weight:700}.client-list .clients li[data-v-c1a5c6b4]{list-style:none;font-size:.9em;margin:16px}.client-list .client[data-v-c1a5c6b4]{text-align:left;border:2px solid #e0e0e0;border-radius:12px;padding:20px;display:flex;flex-flow:wrap;justify-content:space-between;background-color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.08);transition:box-shadow .2s ease}.client-list .client[data-v-c1a5c6b4]:hover{box-shadow:0 4px 12px rgba(0,0,0,.12)}.documentation[data-v-138aed71]{text-align:left;margin:0;padding:16px}.login-form[data-v-4e311704]{padding:32px 0}.row[data-v-4e311704]{width:192px;margin:0 auto 16px;padding:0}.login-form label[data-v-4e311704]{display:inline-block;margin-bottom:8px;text-align:left;width:100%}.login-form input[data-v-4e311704]{display:block;width:100%;padding:8px 0 8px 4px;margin:0;border:8px;box-sizing:border-box;background-color:#ebf1f4}.login-error[data-v-4e311704]{color:red}.row.button[data-v-4e311704]{text-align:right}.row.button button[data-v-4e311704]{display:inline-block;padding:2px 8px}