/*! 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;flex-wrap:wrap;align-items:center;row-gap:8px;padding:16px;font-size:.8em}.nav a{margin:0 4px;color:#fff;font-weight:700;text-decoration:none}.nav .logout,.nav .passkey{margin-left:auto}.nav .passkey+.logout{margin-left:4px}.nav .material-icons-outlined{display:block;font-size:20px}.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-15169c32]{margin:0;overflow-wrap:anywhere}.client-header[data-v-15169c32]{width:100%;margin-bottom:2px}.config-panel[data-v-15169c32]{background:#f5f5f5;border-radius:8px;padding:16px;margin-bottom:16px}.config-item[data-v-15169c32]{display:flex;flex-direction:column;gap:4px}.config-label[data-v-15169c32]{display:flex;align-items:center;gap:8px;cursor:pointer}.config-text[data-v-15169c32]{font-weight:500}.config-description[data-v-15169c32]{font-size:.9em;color:#666;margin-left:24px}.config-divider[data-v-15169c32]{height:1px;background:#ddd;margin:12px 0}.config-sub-item[data-v-15169c32]{margin-top:10px;margin-left:24px;display:flex;flex-direction:column;gap:4px}.config-label-select[data-v-15169c32]{gap:12px}.config-select[data-v-15169c32]{padding:4px 8px;border:1px solid #ccc;border-radius:4px;font-size:.95em;background:#fff;cursor:pointer}.relay-type[data-v-15169c32]{font-size:1.1rem;color:#666}.connection-status[data-v-15169c32]{color:red;font-size:.8em}.connection-status.connected[data-v-15169c32]{color:#006400}.status[data-v-15169c32]{width:100%;font-size:1rem;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:8px}.status .item[data-v-15169c32]{display:flex;align-items:center;gap:4px}.status-actions[data-v-15169c32]{display:flex;gap:8px;margin-left:auto}.status .icon-button[data-v-15169c32]{padding:4px}.status .icon-button .material-icons-outlined[data-v-15169c32]{display:block}.status .power-icon[data-v-15169c32]{font-size:1.4rem}.status .power-icon.on[data-v-15169c32]{color:#4caf50}.status .power-icon.off[data-v-15169c32]{color:#dc3545}.refresh-button[data-v-15169c32]:disabled{opacity:.5;cursor:not-allowed}.controls[data-v-15169c32]{margin:4px 0;width:100%}.controls-disabled[data-v-15169c32]{opacity:.5;pointer-events:none;cursor:not-allowed}.timer-label[data-v-15169c32]{font-size:.85em;color:#666;margin-bottom:4px}.timer-presets[data-v-15169c32]{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:100%;max-width:400px}.preset-button[data-v-15169c32]{padding:8px 4px;border-radius:8px;font-size:1rem;font-weight:500;touch-action:manipulation;cursor:pointer;width:100%;position:relative}.preset-button.turn-on[data-v-15169c32]{background-color:#4caf50;color:#fff;border:none}.preset-button.turn-on[data-v-15169c32]:active{background-color:#3d8b40}.turn-off[data-v-15169c32]{background-color:#dc3545;color:#fff;border:none}.control-button[data-v-15169c32]{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-15169c32]:disabled,.preset-button[data-v-15169c32]:disabled{opacity:.5;cursor:not-allowed}.loading-indicator[data-v-15169c32]{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px}.loading-indicator[data-v-15169c32]:after{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:hsla(0,0%,100%,.8);animation:pulse-15169c32 1s ease-in-out infinite}.preset-button .loading-indicator[data-v-15169c32]{right:4px;width:10px;height:10px}@keyframes pulse-15169c32{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-15169c32],.preset-button[data-v-15169c32]{min-height:48px}}.rules[data-v-15169c32]{margin-top:12px;width:100%}.rules-header[data-v-15169c32]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.rules-header h4[data-v-15169c32]{margin:0}.add-rule-button[data-v-15169c32]{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-15169c32]:hover{background:#4caf50;color:#fff}.rules-list[data-v-15169c32]{display:flex;flex-direction:column;gap:8px}.rule-item[data-v-15169c32]{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:#f5f5f5;border-radius:8px;gap:8px}.rule-time[data-v-15169c32]{font-size:1.15em;font-weight:600;font-variant-numeric:tabular-nums}.rule-icon[data-v-15169c32]{color:#666;font-size:1.1rem;vertical-align:-3px}.rule-details[data-v-15169c32]{flex:1;min-width:0}.rule-primary[data-v-15169c32]{font-weight:500}.rule-secondary[data-v-15169c32]{font-size:.9em;color:#666}.rule-actions[data-v-15169c32]{display:flex}.rule-actions .icon-button[data-v-15169c32]{padding:4px}.rule-actions .icon-button .material-icons-outlined[data-v-15169c32]{display:block;font-size:20px}.icon-button[data-v-15169c32]{background:none;border:none;padding:4px;cursor:pointer;color:#666;border-radius:4px}.icon-button[data-v-15169c32]:hover{background:#eee}.icon-button.delete[data-v-15169c32]:hover{color:#dc3545;background:#ffebee}.no-rules[data-v-15169c32]{color:#666;font-style:italic;padding:12px;text-align:center;background:#f5f5f5;border-radius:8px}.active-rule-banner[data-v-15169c32]{display:flex;align-items:center;gap:8px;background:#fff8e1;border:1px solid #f9a825;border-radius:8px;padding:10px 14px;margin:8px 0;font-size:.9em;color:#5d4037}.active-rule-icon[data-v-15169c32]{color:#f9a825;font-size:1.2rem;flex-shrink:0}.active-rule-text[data-v-15169c32]{flex:1}.active-rule-countdown[data-v-15169c32]{font-weight:500;color:#e65100}.discard-rule-button[data-v-15169c32]{background:none;border:1px solid #f9a825;color:#e65100;padding:4px 10px;border-radius:4px;cursor:pointer;font-size:.9em;white-space:nowrap}.discard-rule-button[data-v-15169c32]:hover{background:#f9a825;color:#fff}@media (max-width:768px){.config-panel[data-v-15169c32]{padding:12px}.icon-button[data-v-15169c32]{padding:8px}}.header[data-v-6f45928b]{background-color:#1e9bed;padding:8px 16px;display:flex;justify-content:space-between;align-items:center}.header h1[data-v-6f45928b]{color:#fff;font-size:1.4em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-right[data-v-6f45928b]{display:flex;align-items:center;gap:12px}.add-device-btn[data-v-6f45928b]{background-color:#fff;color:#1e9bed;border:none;width:40px;height:40px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .3s ease}.add-device-btn .material-icons-outlined[data-v-6f45928b]{font-size:28px}.add-device-btn[data-v-6f45928b]:hover{background-color:#f0f0f0}.add-device-form[data-v-6f45928b]{background-color:#f4f4f4;padding:16px;margin:16px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.form-group[data-v-6f45928b]{margin-bottom:16px;position:relative}.form-group label[data-v-6f45928b]{display:block;margin-bottom:8px;color:#333}.form-group input[data-v-6f45928b]{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:16px}.char-count[data-v-6f45928b]{position:absolute;right:10px;top:40px;font-size:.8em;color:#888}.form-actions[data-v-6f45928b]{display:flex;gap:10px}.cancel-btn[data-v-6f45928b],.save-btn[data-v-6f45928b]{padding:10px 16px;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.save-btn[data-v-6f45928b]{background-color:#4caf50;color:#fff}.save-btn[data-v-6f45928b]:disabled{background-color:#ccc;cursor:not-allowed}.cancel-btn[data-v-6f45928b]{background-color:#f44336;color:#fff}.client-list .clients[data-v-6f45928b]{padding:0;margin:0}.client-list .client-header[data-v-6f45928b]{background-color:#c8f2ff;font-weight:700}.client-list .clients li[data-v-6f45928b]{list-style:none;font-size:.9em;margin:16px;display:flex;align-items:flex-start;gap:8px}.drag-handle[data-v-6f45928b]{cursor:grab;color:#ccc;flex-shrink:0;margin-top:14px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.drag-handle[data-v-6f45928b]:active{cursor:grabbing}.client-list .clients li[data-v-6f45928b] .client{flex:1;min-width:0}.client-list .client[data-v-6f45928b]{text-align:left;border:2px solid #e0e0e0;border-radius:12px;padding:12px;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-6f45928b]: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-59bad6f2]{padding:32px 0}.row[data-v-59bad6f2]{width:192px;margin:0 auto 16px;padding:0}.login-form label[data-v-59bad6f2]{display:inline-block;margin-bottom:8px;text-align:left;width:100%}.login-form input[data-v-59bad6f2]{display:block;width:100%;padding:8px 0 8px 4px;margin:0;border:8px;box-sizing:border-box;background-color:#ebf1f4}.login-error[data-v-59bad6f2]{color:red}.row.button[data-v-59bad6f2]{text-align:right}.row.button button[data-v-59bad6f2]{display:inline-block;padding:2px 8px}