:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#e8eaed;background:#0f1115;font-family:system-ui,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation}html,body{color:#e8eaed;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#0f1115;min-height:100vh;margin:0}input,textarea,select,[contenteditable=true]{-webkit-user-select:text;user-select:text;touch-action:manipulation}@media (pointer:coarse){input,textarea,select,.pin-settings-input,.filter-field select{font-size:16px}}#root{min-height:100vh}.app--error .error-box{color:#f28b82;background:#2a1515;border-radius:6px;padding:.75rem;font-size:.875rem;overflow-x:auto}.app{max-width:640px;margin:0 auto;padding:2rem 1rem}h1{margin:0 0 .5rem;font-size:1.5rem}.status{color:#9aa0a6;margin:0 0 1.5rem}.status--connected{color:#81c995}.status--error,.status--disconnected{color:#f28b82}.filter-bar{background:0 0;border:none;flex-wrap:wrap;gap:.75rem 1.25rem;margin-bottom:1rem;padding:0;display:flex}.filter-field{color:#9aa0a6;flex:12rem;align-items:center;gap:.5rem;min-width:10rem;margin:0;display:flex}.filter-field:focus-within{color:#e8eaed}.filter-icon{flex-shrink:0;display:block}.filter-field__select{min-width:0;color:inherit;font:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;flex:1;padding:.5rem .75rem}.filter-field__select:disabled{opacity:.45;cursor:not-allowed}.gpio-section{background:0 0;border:none;margin-bottom:1.5rem;padding:0}.gpio-section__header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.gpio-section__header h2{flex:1;min-width:0;margin:0;font-size:1.125rem;font-weight:600}.gpio-section__actions{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.gpio-info-btn{color:#9aa0a6;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:.35rem;display:inline-flex}.gpio-info-btn:hover:not(:disabled){color:#8ab4f8;background:#1a1d23}.gpio-info-btn:disabled{opacity:.35;cursor:not-allowed}.loader{color:#9aa0a6;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.loader--compact{gap:0}.loader__spinner{border:2px solid #3c4043;border-top-color:#8ab4f8;border-radius:50%;width:1.125rem;height:1.125rem;animation:.7s linear infinite spin}.loader__label:empty{display:none}@keyframes spin{to{transform:rotate(360deg)}}.modal{z-index:1000;background:#000000a6;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal:not(.modal--page){padding:max(1.5rem, env(safe-area-inset-top,0px)) max(1.5rem, env(safe-area-inset-right,0px)) max(1.5rem, env(safe-area-inset-bottom,0px)) max(1.5rem, env(safe-area-inset-left,0px))}.modal__dialog{background:#1a1d23;border:1px solid #3c4043;border-radius:10px;flex-direction:column;width:min(100%,520px);max-height:min(90vh,640px);display:flex;box-shadow:0 12px 40px #00000073}.modal:not(.modal--page) .modal__dialog{max-height:min(100dvh - 3rem,640px)}.modal__header{border-bottom:1px solid #2a2d33;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;display:flex}.modal:not(.modal--page) .modal__header{padding:1rem 1.25rem}.modal__header h2{flex:1;min-width:0;margin:0;font-size:1rem;font-weight:600}.modal__header-right{flex-shrink:0;align-items:center;gap:.35rem;display:flex}.modal__header-actions{align-items:center;gap:.5rem;display:flex}.modal__header-actions button{color:#e8eaed;filter:none;border:0;border-radius:6px;font-size:.8125rem;line-height:1.2}.modal__header-actions button:hover:not(:disabled){filter:none;background:#2f333d}.modal__header-actions button:disabled{opacity:.45;cursor:not-allowed}.modal__header-actions .modal__header-btn--primary{color:#0f1115;background:#8ab4f8;border-color:#8ab4f8;font-weight:600}.modal__header-actions .modal__header-btn--primary:hover:not(:disabled){background:#aecbfa;border-color:#aecbfa}.modal--page{background:#0f1115;justify-content:stretch;align-items:stretch;padding:0}.modal--top{z-index:1100}.modal--top:has(.board-picker) .modal__dialog{width:min(100%,420px);max-height:calc(100dvh - max(1rem, env(safe-area-inset-top,0px)) - max(1rem, env(safe-area-inset-bottom,0px)));overflow:hidden}.modal--top:has(.board-picker) .modal__header{padding:.65rem .75rem}.modal--top:has(.board-picker) .modal__frame{flex:auto;min-height:0;overflow:hidden}.modal--top:has(.board-picker) .modal__body{flex-direction:column;flex:auto;min-height:0;padding:.35rem .55rem .55rem;display:flex;overflow:hidden}.modal__dialog--page{width:100%;height:100%;max-height:none;box-shadow:none;background:#0f1115;border:none;border-radius:0;align-items:center}.template-picker-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.template-picker-item{color:#e8eaed;text-align:left;filter:none;background:#252830;border:1px solid #3c4043;border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;width:100%;padding:.65rem .75rem;display:flex}.template-picker-item:hover:not(:disabled){filter:none;background:#2a2d33;border-color:#8ab4f8}.template-picker-item:disabled{opacity:.45;cursor:not-allowed}.template-picker-item__name{font-size:.9375rem;font-weight:500}.template-picker-item__meta{color:#9aa0a6;flex-shrink:0;font-size:.8125rem}.modal__frame{flex-direction:column;width:100%;min-height:0;display:flex}.modal__frame--page{flex:1;width:100%;max-width:42rem;margin:0 auto;padding:0 1.25rem}.modal__dialog--page .modal__header{border-bottom:1px solid #2a2d33;flex-shrink:0;padding:.75rem 0}.modal__dialog--page .modal__header h2{font-size:1.0625rem}.modal__dialog--page .modal__body{flex:1;min-height:0;padding:1rem 0 1.5rem;overflow-y:auto}.modal__header-icon-btn{color:#9aa0a6;filter:none;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;display:inline-flex}.modal__header-icon-btn:hover:not(:disabled){color:#8ab4f8;filter:none;background:#2a2d33}.modal__header-icon-btn:disabled{opacity:.35;cursor:not-allowed}.modal__close{color:#9aa0a6;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;font-size:1.35rem;line-height:1;display:flex}.modal__close:hover{color:#e8eaed;background:#2a2d33}.modal__body{padding:1rem;overflow-y:auto}.modal:not(.modal--page) .modal__body{padding:1.25rem}.pin-settings-page{flex-direction:column;width:100%;min-height:100%;display:flex}.pin-settings__actions--footer{background:#0f1115;border-top:1px solid #2a2d33;margin-top:auto;padding:1rem 0 .25rem;position:sticky;bottom:0}.pin-settings__actions--footer .pin-settings__save{width:100%}.pin-settings__intro{margin-top:0;margin-bottom:1rem}.pin-settings-list{margin-bottom:1rem}.pin-settings-device__head{cursor:pointer;border-bottom:1px solid #2a2d33;align-items:center;gap:.5rem;padding:.5rem 0;display:flex}.pin-settings-device__head:hover{background:#1a1d23}.pin-settings-device__head.is-open{border-bottom-color:#3c4043}.pin-settings-device__head .pin-row__info{flex:1;min-width:0}.pin-settings-device__delete{color:#9aa0a6;cursor:pointer;background:0 0;border:1px solid #3c4043;border-radius:6px;flex-shrink:0;width:1.75rem;height:1.75rem;padding:0;font-size:1rem;line-height:1}.pin-settings-device__delete:hover:not(:disabled){color:#f28b82;filter:none;background:#2a1515}.pin-settings-device__form{border-bottom:1px solid #2a2d33;padding:.65rem 0 .85rem}.pin-slot-field{grid-template-columns:1fr minmax(5.5rem,1fr);align-items:center;gap:.4rem;display:grid}.pin-slot-field__pick{color:#e8eaed;width:100%;font:inherit;cursor:pointer;text-align:left;background:#1a1d24;border:1px solid #3c4043;border-radius:8px;justify-content:space-between;align-items:center;gap:.35rem;padding:.45rem .55rem;font-size:.8125rem;display:flex}.pin-slot-field__pick:hover{background:#22262e;border-color:#5f6368}.pin-slot-field__pick-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pin-slot-field__pick-icon{opacity:.65;flex-shrink:0;font-size:.9rem}.board-picker{flex-direction:column;flex:auto;gap:.35rem;min-height:0;display:flex;overflow:hidden}.board-picker__hint{color:#9aa0a6;text-align:center;flex-shrink:0;width:100%;margin:0;font-size:.75rem;line-height:1.3}.board-picker__rack{box-sizing:border-box;overscroll-behavior:contain;background:#12151a;border:1px solid #2a2d33;border-radius:8px;flex-direction:row;flex:auto;justify-content:space-evenly;align-items:stretch;gap:.25rem;width:100%;min-height:0;max-height:calc(100dvh - 10.5rem);padding:30px;display:flex;overflow-y:auto}.board-picker__col{flex-direction:column;flex:0 auto;gap:.38rem;min-width:0;display:flex}.board-picker__col--left{align-items:flex-end}.board-picker__col--right{align-items:flex-start}.board-picker__body{flex-direction:column;flex:0 0 7.5rem;align-self:stretch;min-height:100%;display:flex}.board-picker__board-inner{text-align:center;box-sizing:border-box;background:linear-gradient(#1c2129 0%,#141820 100%);border:2px solid #4a5058;border-radius:10px;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:.35rem;width:100%;min-height:100%;padding:.65rem .4rem;display:flex;box-shadow:inset 0 0 0 1px #ffffff0a}.board-picker__board-title{color:#e8eaed;word-break:break-word;font-size:.8125rem;font-weight:700;line-height:1.2}.board-picker__board-sub{color:#8a9199;word-break:break-word;font-size:.6875rem;line-height:1.2}.board-picker__pin-slot{flex-shrink:0;min-height:1.85rem;display:block}.board-picker__pin-btn{min-height:1.85rem;color:inherit;font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;margin:0;padding:.15rem .05rem;display:flex}.board-picker__pin-btn--left{text-align:right;flex-direction:row;justify-content:flex-end}.board-picker__pin-btn--right{text-align:left;flex-direction:row-reverse;justify-content:flex-end}.board-picker__pin-btn.is-busy{cursor:not-allowed;opacity:.38}.board-picker__pin-label{flex-flow:wrap;align-items:baseline;gap:.2rem;min-width:0;line-height:1.1;display:flex}.board-picker__pin-btn--left .board-picker__pin-label{justify-content:flex-end}.board-picker__pin-btn--right .board-picker__pin-label{justify-content:flex-start}.board-picker__pin-mark{color:#e8eaed;font-size:.6875rem;font-weight:700}.board-picker__pin-gpio{color:#9aa0a6;font-size:.625rem}.board-picker__pin-dot{box-sizing:border-box;background:#1e2229;border:2px solid #5f6368;border-radius:50%;flex-shrink:0;width:1rem;height:1rem}.board-picker__pin-btn.is-selected .board-picker__pin-dot{background:#252a35;border-color:#8ab4f8;box-shadow:inset 0 0 0 3px #8ab4f8}.board-picker__pin-btn.is-device .board-picker__pin-dot{border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b59}.board-picker__pin-btn.is-device.is-selected .board-picker__pin-dot{border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b59,inset 0 0 0 3px #8ab4f8}.board-picker__pin-btn.is-input-only .board-picker__pin-dot{border-style:dashed}.board-picker__pin-btn:not(.is-busy):hover .board-picker__pin-dot{border-color:#8ab4f8}.board-picker__footer{border-top:1px solid #2a2d33;flex-direction:column;flex-shrink:0;gap:.35rem;padding-top:.3rem;display:flex}.board-picker__legend{color:#9aa0a6;flex-wrap:wrap;justify-content:center;gap:.35rem .65rem;width:100%;font-size:.6875rem;display:flex}.board-picker__legend-item{align-items:center;gap:.35rem;display:inline-flex}.board-picker__swatch{background:#1e2229;border:2px solid #5f6368;border-radius:50%;width:.75rem;height:.75rem}.board-picker__swatch--selected{background:#252a35;border-color:#8ab4f8;box-shadow:inset 0 0 0 3px #8ab4f8}.board-picker__swatch--device{border-color:#f59e0b}.board-picker__swatch--busy{opacity:.35}.board-picker__clear{color:#9aa0a6;width:100%;font:inherit;cursor:pointer;background:0 0;border:1px solid #3c4043;border-radius:8px;padding:.42rem .65rem;font-size:.8125rem}.board-picker__clear:hover{color:#e8eaed;border-color:#5f6368}.pin-slot-field--disabled{opacity:.45}.pin-slot-field__role{color:#e8eaed;align-items:center;gap:.4rem;font-size:.8125rem;display:flex}.pin-slot-field__role input[type=checkbox]{margin:0}.pin-settings-device__form-type{color:#9aa0a6;margin:0 0 .5rem;font-size:.8125rem}.pin-settings-device__name{flex-direction:column;gap:.35rem;margin-bottom:.65rem;display:flex}.pin-settings-device__name-label{color:#e8eaed;font-size:.8125rem}.pin-settings-input--name{width:100%}.pin-slot-list{flex-direction:column;gap:.45rem;display:flex}.pin-settings-stepper{margin-top:.75rem;padding-top:.65rem}.pin-settings-stepper__title{color:#e8eaed;margin:0 0 .25rem;font-size:.8125rem;font-weight:600}.pin-settings-stepper__hint{margin:0 0 .45rem;font-size:.75rem}.pin-settings-stepper__input{color:#e8eaed;width:100%;font:inherit;text-align:right;box-sizing:border-box;appearance:textfield;background:#1a1d24;border:1px solid #3c4043;border-radius:8px;padding:.45rem .55rem;font-size:.8125rem}.pin-settings-stepper__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pin-settings-stepper__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pin-settings-stepper__input:disabled{opacity:.45;cursor:not-allowed}.pin-settings-stepper__check{color:#e8eaed;cursor:pointer;box-sizing:border-box;background:#1a1d24;border:1px solid #3c4043;border-radius:8px;justify-content:space-between;align-items:center;gap:.35rem;width:100%;min-height:2.125rem;padding:.45rem .55rem;font-size:.8125rem;display:flex}.pin-settings-stepper__check input[type=checkbox]{flex-shrink:0;margin:0}.pin-settings__add-btn{color:#9aa0a6;text-align:center;filter:none;background:0 0;border:1px dashed #5f6368;border-radius:8px;width:100%;margin-bottom:1rem;padding:.75rem 1rem;font-size:.9375rem;display:block}.pin-settings__add-btn:hover{color:#e8eaed;filter:none;background:#8ab4f80f;border-color:#8ab4f8}.add-device-modal{flex-direction:column;gap:.85rem;display:flex}.add-device-modal__name-label{color:#9aa0a6;margin-bottom:.35rem;font-size:.8125rem;display:block}.add-device-modal__hint{margin:0}.device-type-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.device-type-item{color:#e8eaed;text-align:left;filter:none;background:#252830;border:1px solid #3c4043;border-radius:8px;flex-direction:column;align-items:flex-start;gap:.25rem;width:100%;padding:.65rem .75rem;display:flex}.device-type-item:hover:not(:disabled){filter:none;background:#2a2d33;border-color:#8ab4f8}.device-type-item:disabled{opacity:.45;cursor:not-allowed}.device-type-item--selected{background:#8ab4f81a;border-color:#8ab4f8}.device-type-item__name{font-size:.9375rem;font-weight:500}.device-type-item__desc{color:#9aa0a6;font-size:.8125rem;line-height:1.35}.add-device-modal__actions{justify-content:flex-end;gap:.5rem;padding-top:.25rem;display:flex}.add-device-modal__submit{color:#8ab4f8;border-color:#8ab4f8}.pin-settings-row{border-bottom:1px solid #2a2d33;align-items:center;gap:.75rem;padding:.55rem 0;list-style:none;display:flex}.pin-settings-device__pins .pin-settings-row:last-child{border-bottom:none}.pin-settings-row__info{flex:1;min-width:0}.pin-settings-row__controls{flex-shrink:0;align-items:center;gap:.35rem;display:flex}.pin-settings-input{color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;min-width:0;padding:.35rem .4rem;font-size:.8125rem}.pin-settings-input--type{width:6.5rem}.pin-settings-input--ch,.pin-settings-input--mark{text-align:center;width:2.5rem}.pin-settings-input--gpio{width:3rem}.pin-settings .pin-settings-row__remove{color:#9aa0a6;cursor:pointer;background:0 0;border:1px solid #3c4043;border-radius:6px;flex-shrink:0;width:1.75rem;height:1.75rem;padding:0;font-size:1rem;line-height:1}.pin-settings .pin-settings-row__remove:hover:not(:disabled){color:#f28b82;filter:none;background:#2a1515}.pin-settings .pin-settings__actions button{color:#e8eaed;filter:none;background:#1a1d23;border:1px solid #3c4043;border-radius:6px;padding:.45rem .85rem}.pin-settings .pin-settings__actions button:hover:not(:disabled){filter:none;background:#252830}.pin-settings__actions{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.pin-settings__templates-title{color:#e8eaed;margin:0 0 .35rem;font-size:.9375rem;font-weight:600}.pin-settings__templates-hint{margin:0 0 .75rem}.pin-settings__template-save{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.85rem;display:flex}.pin-settings__template-save .pin-settings-input--name{flex:1;min-width:8rem}.pin-settings__template-deploy{flex-direction:column;gap:.5rem;display:flex}.pin-settings__deploy-targets{flex-direction:column;gap:.35rem;max-height:8rem;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.pin-settings__deploy-target{color:#e8eaed;cursor:pointer;align-items:center;gap:.45rem;font-size:.8125rem;display:flex}.pin-settings__deploy-target input{margin:0}.pin-settings__deploy-btn{align-self:flex-start}.pin-settings__save{color:#0f1115;background:#8ab4f8;border:none;font-weight:600}.pin-settings__save:disabled{display:none}.field--inline{flex-direction:row;align-items:center;gap:.75rem}.field--inline span{flex-shrink:0}.field--inline select{flex:1}.panel{background:#1a1d23;border:1px solid #3c4043;border-radius:8px;margin-bottom:1.5rem;padding:1rem}.panel h2{margin:0 0 .75rem;font-size:1rem}button,input{font:inherit}button{cursor:pointer;color:#0f1115;background:#8ab4f8;border:none;border-radius:6px;padding:.5rem 1rem}button:hover:not(:disabled){filter:brightness(1.05)}button:disabled{opacity:.45;cursor:not-allowed}.field{flex-direction:column;gap:.35rem;margin-bottom:.75rem;display:flex}.field span{color:#9aa0a6;font-size:.875rem}.field select{color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;padding:.5rem .75rem}.hint{color:#9aa0a6;margin:0 0 .75rem;font-size:.8125rem}.pin-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.pin-list__status{margin:0 0 .35rem;font-size:.8125rem}.pin-row{background:0 0;border:none;border-bottom:1px solid #2a2d33;border-radius:0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem 0;display:flex}.pin-row:has(.pin-row__divider){border-bottom:none}.pin-row__divider{border:0;border-bottom:1px solid #3c4043;flex:0 0 100%;height:0;margin:.15rem 0 0}.pin-row--unconfigured{opacity:.38;pointer-events:none;-webkit-user-select:none;user-select:none}.pin-row__na{color:#5f6368;text-align:right;flex-shrink:0;min-width:2.5rem;font-size:.8125rem}.pin-row__stepper{flex-flow:row;flex-shrink:0;align-items:center;gap:.35rem;display:flex}.pin-row__stepper-label{color:#9aa0a6;white-space:nowrap;flex-shrink:0;font-size:.8125rem;font-weight:600}.pin-row__stepper-sep,.pin-row__mark-sep{color:#5f6368;font-weight:400}.pin-row__stepper-input{width:4.25rem;color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;padding:.35rem .45rem;font-size:.8125rem}.pin-row__stepper-input:disabled,.pin-row__stepper-select:disabled{opacity:.45;cursor:not-allowed}.pin-row__stepper-select{color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;min-width:5.5rem;padding:.35rem .45rem;font-size:.8125rem}.pin-row__stepper-go{flex-shrink:0;padding:.35rem .55rem;font-size:.875rem;line-height:1}.pin-row__stepper-params{flex:0 0 100%;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));align-items:end;gap:.35rem .5rem;display:grid}.pin-row__stepper-param{color:#9aa0a6;flex-direction:column;gap:.2rem;font-size:.6875rem;display:flex}.pin-row__stepper-param--check{flex-direction:row;align-items:center;gap:.35rem;padding-top:1.1rem}.pin-row__stepper-param-input{width:100%;color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;padding:.3rem .4rem;font-size:.75rem}.pin-row__stepper-save{align-self:end;padding:.35rem .55rem;font-size:.75rem}.pin-row__servo{flex-flow:row;flex-shrink:0;align-items:center;gap:.35rem;display:flex}.pin-row__servo-range{accent-color:#8ab4f8;width:5.5rem}.pin-row__servo-angle{color:#9aa0a6;text-align:right;min-width:2.25rem;font-size:.8125rem}.pin-row__servo-go{flex-shrink:0;padding:.35rem .55rem;font-size:.875rem;line-height:1}.pin-row__servo-params{flex:0 0 100%;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));gap:.35rem .5rem;display:grid}.pin-row__servo-param{color:#9aa0a6;flex-direction:column;gap:.2rem;font-size:.6875rem;display:flex}.pin-row__servo-param-input{width:100%;color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;padding:.3rem .4rem;font-size:.75rem}.pin-list .pin-row:last-child{border-bottom:none}.pin-row__info{flex-direction:column;gap:.15rem;min-width:0;display:flex}.pin-row__mark{font-weight:600}.pin-row__meta{color:#9aa0a6;font-size:.8125rem}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:.5rem;display:inline-flex}.switch input{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.switch__track{background:#3c4043;border-radius:999px;width:2.75rem;height:1.5rem;transition:background .2s;position:relative}.switch__track:after{content:"";background:#e8eaed;border-radius:50%;width:1.25rem;height:1.25rem;transition:transform .2s;position:absolute;top:2px;left:2px}.switch--on .switch__track{background:#81c995}.switch--on .switch__track:after{transform:translate(1.25rem)}.switch__state{color:#9aa0a6;min-width:2rem;font-size:.8125rem}.switch--on .switch__state{color:#81c995}.switch:has(input:disabled){opacity:.45;cursor:not-allowed}.btn-on{background:#81c995}.btn-off{background:#f28b82}.broadcast-form{gap:.5rem;display:flex}.broadcast-form input{color:inherit;background:#0f1115;border:1px solid #3c4043;border-radius:6px;flex:1;padding:.5rem .75rem}.log{max-height:240px;margin:0;padding:0;font-size:.875rem;list-style:none;overflow-y:auto}.log li{word-break:break-word;border-bottom:1px solid #2a2d33;padding:.35rem 0}.log time{color:#9aa0a6;margin-right:.5rem}.telemetry-panel .telemetry-meta{color:#9aa0a6;margin:0 0 .75rem;font-size:.875rem}.telemetry-grid{gap:.75rem;display:grid}.telemetry-card{background:#1a1d23;border:1px solid #2a2d33;border-radius:8px;padding:.75rem}.telemetry-card h3{margin:0 0 .5rem;font-size:.9rem}.telemetry-card ul{margin:0;padding:0;font-size:.875rem;list-style:none}.telemetry-card li+li{margin-top:.25rem}.telemetry-card--wide{grid-column:1/-1}.telemetry-pin-row{border-bottom:1px solid #2a2d33;justify-content:space-between;align-items:center;gap:.75rem;padding:.35rem 0;display:flex}.telemetry-pins .telemetry-pin-row:last-child{border-bottom:none}.telemetry-pin-info{flex-wrap:wrap;align-items:baseline;gap:.35rem .75rem;min-width:0;display:flex}.telemetry-pin-mark{font-weight:600}.telemetry-pin-gpio,.telemetry-pin-type{color:#9aa0a6;font-size:.8125rem}.telemetry-pin-on{color:#81c995;flex-shrink:0;font-size:.8125rem;font-weight:600}.telemetry-pin-off{color:#9aa0a6;flex-shrink:0;font-size:.8125rem}.telemetry-pin-na{color:#5f6368;flex-shrink:0;font-size:.8125rem}.pin-device{margin:0 0 .75rem;padding:0;list-style:none}.pin-device__title{color:#9aa0a6;text-transform:uppercase;letter-spacing:.03em;margin-bottom:.35rem;font-size:.8rem;font-weight:600}.pin-device__pins{margin:0;padding:0;list-style:none}
