// ──────────────────────────────────────────────────────────────── // Widget · Light-Controller (Geraet) · aus j3-landing // ──────────────────────────────────────────────────────────────── .light-controller { display: flex; flex-direction: column; gap: 12px; &__row { display: flex; align-items: center; gap: 10px; } &__dot { flex: 0 0 auto; width: 13px; height: 13px; border-radius: 50%; background: var(--faint); transition: background var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); } &.is-on &__dot { background: var(--ember); box-shadow: 0 0 10px var(--ember-soft); } &.is-off &__dot { background: var(--faint); } &.is-offline &__dot { background: var(--off); box-shadow: 0 0 10px color-mix(in srgb, var(--off) 50%, transparent); } &__name { flex: 1 1 auto; min-width: 0; overflow: hidden; font-size: var(--fs-sm); letter-spacing: .06em; color: var(--fg); text-overflow: ellipsis; white-space: nowrap; } &__toggle { position: relative; flex: 0 0 auto; width: 58px; height: 34px; padding: 0; background: color-mix(in srgb, var(--bg) 60%, transparent); border: 1px solid var(--line); border-radius: var(--r-pill); cursor: pointer; transition: background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease); &:focus-visible { outline: none; border-color: color-mix(in srgb, var(--accent) 50%, transparent); } } &__knob { position: absolute; top: 50%; left: 3px; width: 23px; height: 23px; border-radius: 50%; background: var(--dim); transform: translateY(-50%); transition: left var(--dur-base) var(--ease), background var(--dur-base) var(--ease); } &.is-on &__toggle { background: color-mix(in srgb, var(--ember) 22%, transparent); border-color: color-mix(in srgb, var(--ember) 55%, transparent); } &.is-on &__knob { left: 31px; background: var(--ember); box-shadow: 0 0 10px var(--ember-soft); } &.is-busy { opacity: .7; } &__slider { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; } &__slider-label { font-size: var(--fs-sm); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); } &__slider input[type="range"] { -webkit-appearance: none; appearance: none; width: 100%; height: 3px; background: color-mix(in srgb, var(--dim) 28%, transparent); border-radius: 3px; cursor: pointer; &::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 50%, transparent); } &::-moz-range-thumb { width: 16px; height: 16px; border: 0; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 50%, transparent); } } &__slider-val { min-width: 36px; font-size: var(--fs-md); color: var(--fg); text-align: right; } &__meta { font-size: .6563rem; letter-spacing: .06em; color: var(--muted); &.is-offline { color: var(--off); } } &__now { display: flex; align-items: center; gap: 8px; } &__swatch { flex: 0 0 auto; width: 20px; height: 20px; border: 1px solid var(--line); border-radius: var(--r-xs); background: var(--faint); transition: background var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); } &.is-on &__swatch { box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 28%, transparent); } &__now-text { flex: 0 0 auto; font-size: var(--fs-md); letter-spacing: .06em; color: var(--dim); white-space: nowrap; } &__now input[type="range"] { flex: 1 1 auto; min-width: 40px; -webkit-appearance: none; appearance: none; height: 3px; background: color-mix(in srgb, var(--dim) 28%, transparent); border-radius: 3px; cursor: pointer; &::-webkit-slider-thumb { -webkit-appearance: none; width: 15px; height: 15px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 50%, transparent); } &::-moz-range-thumb { width: 15px; height: 15px; border: 0; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 50%, transparent); } } } .light-controller__head { cursor: default; } .light-controller__open { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 0; font: inherit; color: var(--fg); text-align: left; background: transparent; border: 0; cursor: pointer; &:focus-visible { outline: none; } } .light-controller__status { font-size: var(--fs-md); letter-spacing: .06em; color: var(--muted); &.is-offline { color: var(--off); } } .light-controller .side-panel__body { display: flex; flex-direction: column; gap: 12px; }